feat(project): 添加可视化大屏重点作业统计功能

dev
zhaokai 2026-07-17 17:31:12 +08:00
parent d1945601d7
commit 650c67e97b
18 changed files with 138 additions and 13 deletions

View File

@ -139,5 +139,11 @@ public class KeyProjectController {
return MultiResponse.of( keyProjectService.getXgfCorp(qry)); return MultiResponse.of( keyProjectService.getXgfCorp(qry));
} }
@ApiOperation("可视化大屏-重点作业统计数量")
@PostMapping("/largeScreenStatistics")
public SingleResponse<KeyProjectLargeScreenStatisticsCO> largeScreenStatistics(@RequestBody KeyProjectLargeScreenStatisticsQry qry) {
return keyProjectService.largeScreenStatistics(qry);
}
} }

View File

@ -59,9 +59,6 @@ public class KeyProjectCameraQueryExe {
if(KeyProjectCameraTypeEnum.MOBILE_CAMERA.getCode().equals(cameraListCmd.getCameraType())){ if(KeyProjectCameraTypeEnum.MOBILE_CAMERA.getCode().equals(cameraListCmd.getCameraType())){
pageResponse = keyProjectCameraRepository.listMobileCameraAll(params); pageResponse = keyProjectCameraRepository.listMobileCameraAll(params);
} }
if(KeyProjectCameraTypeEnum.ALL_CAMERA.getCode().equals(cameraListCmd.getCameraType())){
pageResponse = keyProjectCameraRepository.listAllCamera(params);
}
List<CameraInfoCO> examCenterCOS = keyProjectCameraCoConvertor.converCameraDOsToCOs(pageResponse.getData()); List<CameraInfoCO> examCenterCOS = keyProjectCameraCoConvertor.converCameraDOsToCOs(pageResponse.getData());
pageResponse.setPageSize(examCenterCOS.size()); pageResponse.setPageSize(examCenterCOS.size());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());

View File

@ -279,5 +279,21 @@ public class KeyProjectQueryExe {
keyProjectCountCO.setFeedbackCount(feedbackCount); keyProjectCountCO.setFeedbackCount(feedbackCount);
return keyProjectCountCO; return keyProjectCountCO;
} }
public KeyProjectLargeScreenStatisticsCO largeScreenStatistics(KeyProjectLargeScreenStatisticsQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
KeyProjectLargeScreenStatisticsDO data = keyProjectRepository.largeScreenStatistics(params);
KeyProjectLargeScreenStatisticsCO result = new KeyProjectLargeScreenStatisticsCO();
if (data == null) {
return result;
}
result.setMorePeopleStartCount(data.getMorePeopleStartCount());
result.setMorePeopleApplyCount(data.getMorePeopleApplyCount());
result.setNightWorkStartCount(data.getNightWorkStartCount());
result.setNightWorkApplyCount(data.getNightWorkApplyCount());
result.setFourNewHomeworkStartCount(data.getFourNewHomeworkStartCount());
result.setFourNewHomeworkApplyCount(data.getFourNewHomeworkApplyCount());
return result;
}
} }

View File

@ -108,5 +108,10 @@ public class KeyProjectServiceImpl implements KeyProjectServiceI {
public SingleResponse<KeyProjectCountCO> count(Long id) { public SingleResponse<KeyProjectCountCO> count(Long id) {
return SingleResponse.of(keyProjectQueryExe.count(id)); return SingleResponse.of(keyProjectQueryExe.count(id));
} }
@Override
public SingleResponse<KeyProjectLargeScreenStatisticsCO> largeScreenStatistics(KeyProjectLargeScreenStatisticsQry qry) {
return SingleResponse.of(keyProjectQueryExe.largeScreenStatistics(qry));
}
} }

View File

@ -45,5 +45,7 @@ public interface KeyProjectServiceI {
void updatExecuteStatusJob(); void updatExecuteStatusJob();
SingleResponse<KeyProjectCountCO> count(Long id); SingleResponse<KeyProjectCountCO> count(Long id);
SingleResponse<KeyProjectLargeScreenStatisticsCO> largeScreenStatistics(KeyProjectLargeScreenStatisticsQry qry);
} }

View File

@ -19,8 +19,8 @@ public class CameraInfoCO implements Serializable {
//摄像头id //摄像头id
@ApiModelProperty(value = "摄像头id") @ApiModelProperty(value = "摄像头id")
private String cameraId; private String cameraId;
//摄像头类型,0查全部,1:固定摄像头,2:移动摄像头 //摄像头类型,1:固定摄像头,2:移动摄像头
@ApiModelProperty(value = "摄像头类型,0查全部,1:固定摄像头,2:移动摄像头") @ApiModelProperty(value = "摄像头类型,1:固定摄像头,2:移动摄像头")
private Integer cameraType; private Integer cameraType;
@ApiModelProperty(value = "摄像头名称") @ApiModelProperty(value = "摄像头名称")

View File

@ -0,0 +1,34 @@
package com.zcloud.key.project.dto.clientobject.project;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @Author zhaokai
* @Date 2026-07-16
*/
@Data
public class KeyProjectLargeScreenStatisticsCO implements Serializable {
@ApiModelProperty(value = "三人及以上作业当前作业数")
private Integer morePeopleStartCount;
@ApiModelProperty(value = "三人及以上作业申请数")
private Integer morePeopleApplyCount;
@ApiModelProperty(value = "夜间作业当前作业数")
private Integer nightWorkStartCount;
@ApiModelProperty(value = "夜间作业申请数")
private Integer nightWorkApplyCount;
@ApiModelProperty(value = "四新作业当前作业数")
private Integer fourNewHomeworkStartCount;
@ApiModelProperty(value = "四新作业申请数")
private Integer fourNewHomeworkApplyCount;
}

View File

@ -26,7 +26,7 @@ public class CameraListCmd extends PageQuery {
* - `le`: * - `le`:
* - `ne`: SQL!= * - `ne`: SQL!=
*/ */
@ApiModelProperty(value = "摄像头类型,0:查全部,1:固定摄像头,2:移动摄像头") @ApiModelProperty(value = "摄像头类型,1:固定摄像头,2:移动摄像头")
@NotNull(message = "摄像头类型不能为空") @NotNull(message = "摄像头类型不能为空")
private Integer cameraType; private Integer cameraType;

View File

@ -0,0 +1,19 @@
package com.zcloud.key.project.dto.project;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @Author zhaokai
* @Date 2026-07-16
*/
@Data
public class KeyProjectLargeScreenStatisticsQry implements Serializable {
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
}

View File

@ -7,7 +7,6 @@ import lombok.Getter;
*/ */
@Getter @Getter
public enum KeyProjectCameraTypeEnum { public enum KeyProjectCameraTypeEnum {
ALL_CAMERA(0, "全部摄像头"),
FIXED_CAMERA(1, "固定摄像头"), FIXED_CAMERA(1, "固定摄像头"),
MOBILE_CAMERA(2, "移动摄像头"); MOBILE_CAMERA(2, "移动摄像头");

View File

@ -19,8 +19,8 @@ public class CameraInfoDO implements Serializable {
//摄像头id //摄像头id
@ApiModelProperty(value = "摄像头id") @ApiModelProperty(value = "摄像头id")
private String cameraId; private String cameraId;
//摄像头类型,0:查全部,1:固定摄像头,2:移动摄像头 //摄像头类型,1:固定摄像头,2:移动摄像头
@ApiModelProperty(value = "摄像头类型,0:查全部,1:固定摄像头,2:移动摄像头") @ApiModelProperty(value = "摄像头类型,1:固定摄像头,2:移动摄像头")
private Integer cameraType; private Integer cameraType;
@ApiModelProperty(value = "摄像头名称") @ApiModelProperty(value = "摄像头名称")

View File

@ -0,0 +1,27 @@
package com.zcloud.key.project.persistence.dataobject.project;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @Author zhaokai
* @Date 2026-07-16
*/
@Data
public class KeyProjectLargeScreenStatisticsDO implements Serializable {
private Integer morePeopleStartCount;
private Integer morePeopleApplyCount;
private Integer nightWorkStartCount;
private Integer nightWorkApplyCount;
private Integer fourNewHomeworkStartCount;
private Integer fourNewHomeworkApplyCount;
}

View File

@ -30,8 +30,6 @@ public interface KeyProjectCameraMapper extends BaseMapper<KeyProjectCameraDO> {
IPage<CameraInfoDO> listMobileCameraAll(IPage<CameraInfoDO> iPage, Map<String, Object> params); IPage<CameraInfoDO> listMobileCameraAll(IPage<CameraInfoDO> iPage, Map<String, Object> params);
IPage<CameraInfoDO> listAllCamera(IPage<CameraInfoDO> iPage, Map<String, Object> params);
List<KeyProjectCameraAiDO> listCameraByProjectId(@Param("params") Map<String, Object> params); List<KeyProjectCameraAiDO> listCameraByProjectId(@Param("params") Map<String, Object> params);
} }

View File

@ -40,5 +40,7 @@ public interface KeyProjectMapper extends BaseMapper<KeyProjectDO> {
List<XgfCorpDO> getXgfCorp(Map<String, Object> params); List<XgfCorpDO> getXgfCorp(Map<String, Object> params);
List<KeyProjectDO> getLastStatus(); List<KeyProjectDO> getLastStatus();
KeyProjectLargeScreenStatisticsDO largeScreenStatistics(Map<String, Object> params);
} }

View File

@ -92,5 +92,10 @@ public class KeyProjectRepositoryImpl extends BaseRepositoryImpl<KeyProjectMappe
//查找日期plan_work_end_date 是昨日的数据,并且 apply_status = 4 //查找日期plan_work_end_date 是昨日的数据,并且 apply_status = 4
return keyProjectMapper.getLastStatus(); return keyProjectMapper.getLastStatus();
} }
@Override
public KeyProjectLargeScreenStatisticsDO largeScreenStatistics(Map<String, Object> params) {
return keyProjectMapper.largeScreenStatistics(params);
}
} }

View File

@ -26,7 +26,5 @@ public interface KeyProjectCameraRepository extends BaseRepository<KeyProjectCam
PageResponse<CameraInfoDO> listFixedCameraAll(Map<String, Object> params); PageResponse<CameraInfoDO> listFixedCameraAll(Map<String, Object> params);
PageResponse<CameraInfoDO> listMobileCameraAll(Map<String, Object> params); PageResponse<CameraInfoDO> listMobileCameraAll(Map<String, Object> params);
PageResponse<CameraInfoDO> listAllCamera(Map<String, Object> params);
} }

View File

@ -31,5 +31,7 @@ public interface KeyProjectRepository extends BaseRepository<KeyProjectDO> {
List<XgfCorpDO> getXgfCorp(Map<String, Object> params); List<XgfCorpDO> getXgfCorp(Map<String, Object> params);
List<KeyProjectDO> getLastStatus(); List<KeyProjectDO> getLastStatus();
KeyProjectLargeScreenStatisticsDO largeScreenStatistics(Map<String, Object> params);
} }

View File

@ -622,5 +622,20 @@
AND kp.plan_work_end_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND kp.plan_work_end_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
ORDER BY kp.create_time DESC ORDER BY kp.create_time DESC
</select> </select>
<select id="largeScreenStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenStatisticsDO">
SELECT
COUNT(DISTINCT CASE WHEN kp.project_type = 'more_people' AND kp.apply_status = 4 THEN kp.id END) AS morePeopleStartCount,
COUNT(DISTINCT CASE WHEN kp.project_type = 'more_people' AND kp.apply_status != 0 THEN kp.id END) AS morePeopleApplyCount,
COUNT(DISTINCT CASE WHEN kp.project_type = 'night_work' AND kp.apply_status = 4 THEN kp.id END) AS nightWorkStartCount,
COUNT(DISTINCT CASE WHEN kp.project_type = 'night_work' AND kp.apply_status != 0 THEN kp.id END) AS nightWorkApplyCount,
COUNT(DISTINCT CASE WHEN kp.project_type = 'four_new_homework' AND kp.apply_status = 4 THEN kp.id END) AS fourNewHomeworkStartCount,
COUNT(DISTINCT CASE WHEN kp.project_type = 'four_new_homework' AND kp.apply_status != 0 THEN kp.id END) AS fourNewHomeworkApplyCount
FROM key_project kp
WHERE kp.delete_enum = 'FALSE'
<if test="corpinfoId != null">
AND kp.corpinfo_id = #{corpinfoId}
</if>
</select>
</mapper> </mapper>