feat(project): 添加可视化大屏相关方作业情况统计功能
parent
f5586a966f
commit
e44a28ad5c
|
|
@ -162,5 +162,11 @@ public class KeyProjectController {
|
|||
return MultiResponse.of(keyProjectService.largeScreenProjectProgress(qry));
|
||||
}
|
||||
|
||||
@ApiOperation("可视化大屏-相关方作业情况统计")
|
||||
@PostMapping("/largeScreenXgfStatistics")
|
||||
public MultiResponse<KeyProjectLargeScreenXgfStatisticsCO> largeScreenXgfStatistics(@RequestBody KeyProjectLargeScreenXgfStatisticsQry qry) {
|
||||
return MultiResponse.of(keyProjectService.largeScreenXgfStatistics(qry));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -336,5 +336,22 @@ public class KeyProjectQueryExe {
|
|||
return result;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<KeyProjectLargeScreenXgfStatisticsCO> largeScreenXgfStatistics(KeyProjectLargeScreenXgfStatisticsQry qry) {
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||
List<KeyProjectLargeScreenXgfStatisticsDO> dataList = keyProjectRepository.largeScreenXgfStatistics(params);
|
||||
if (CollUtil.isEmpty(dataList)) {
|
||||
return java.util.Collections.emptyList();
|
||||
}
|
||||
return dataList.stream().map(data -> {
|
||||
KeyProjectLargeScreenXgfStatisticsCO result = new KeyProjectLargeScreenXgfStatisticsCO();
|
||||
result.setXgfCorpinfoId(data.getXgfCorpinfoId());
|
||||
result.setXgfCorpinfoName(data.getXgfCorpinfoName());
|
||||
result.setMorePeopleCount(data.getMorePeopleCount());
|
||||
result.setFourNewHomeworkCount(data.getFourNewHomeworkCount());
|
||||
result.setNightWorkCount(data.getNightWorkCount());
|
||||
return result;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -133,5 +133,10 @@ public class KeyProjectServiceImpl implements KeyProjectServiceI {
|
|||
public List<KeyProjectLargeScreenProjectProgressCO> largeScreenProjectProgress(KeyProjectLargeScreenProjectProgressQry qry) {
|
||||
return keyProjectQueryExe.largeScreenProjectProgress(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KeyProjectLargeScreenXgfStatisticsCO> largeScreenXgfStatistics(KeyProjectLargeScreenXgfStatisticsQry qry) {
|
||||
return keyProjectQueryExe.largeScreenXgfStatistics(qry);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,5 +55,7 @@ public interface KeyProjectServiceI {
|
|||
List<KeyProjectLargeScreenDepartmentStatisticsCO> largeScreenDepartmentStatistics(KeyProjectLargeScreenDepartmentStatisticsQry qry);
|
||||
|
||||
List<KeyProjectLargeScreenProjectProgressCO> largeScreenProjectProgress(KeyProjectLargeScreenProjectProgressQry qry);
|
||||
|
||||
List<KeyProjectLargeScreenXgfStatisticsCO> largeScreenXgfStatistics(KeyProjectLargeScreenXgfStatisticsQry qry);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
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-28
|
||||
*/
|
||||
@Data
|
||||
public class KeyProjectLargeScreenXgfStatisticsCO implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "相关方企业id")
|
||||
private Long xgfCorpinfoId;
|
||||
|
||||
@ApiModelProperty(value = "相关方名称")
|
||||
private String xgfCorpinfoName;
|
||||
|
||||
@ApiModelProperty(value = "三人及以上作业数")
|
||||
private Integer morePeopleCount;
|
||||
|
||||
@ApiModelProperty(value = "四新作业数")
|
||||
private Integer fourNewHomeworkCount;
|
||||
|
||||
@ApiModelProperty(value = "夜间作业数")
|
||||
private Integer nightWorkCount;
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package com.zcloud.key.project.dto.project;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 可视化大屏相关方作业情况统计请求
|
||||
*
|
||||
* @Author zhaokai
|
||||
* @Date 2026-07-28
|
||||
*/
|
||||
@Data
|
||||
public class KeyProjectLargeScreenXgfStatisticsQry implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "企业id", name = "corpinfoId")
|
||||
private Long corpinfoId;
|
||||
|
||||
@ApiModelProperty(value = "港区,1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
|
||||
private Integer portArea;
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.zcloud.key.project.persistence.dataobject.project;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 可视化大屏相关方作业情况统计数据
|
||||
*
|
||||
* @Author zhaokai
|
||||
* @Date 2026-07-28
|
||||
*/
|
||||
@Data
|
||||
public class KeyProjectLargeScreenXgfStatisticsDO implements Serializable {
|
||||
|
||||
private Long xgfCorpinfoId;
|
||||
|
||||
private String xgfCorpinfoName;
|
||||
|
||||
private Integer morePeopleCount;
|
||||
|
||||
private Integer fourNewHomeworkCount;
|
||||
|
||||
private Integer nightWorkCount;
|
||||
}
|
||||
|
|
@ -50,5 +50,7 @@ public interface KeyProjectMapper extends BaseMapper<KeyProjectDO> {
|
|||
List<KeyProjectLargeScreenDepartmentStatisticsDO> largeScreenDepartmentStatistics(Map<String, Object> params);
|
||||
|
||||
List<KeyProjectLargeScreenProjectProgressDO> largeScreenProjectProgress(Map<String, Object> params);
|
||||
|
||||
List<KeyProjectLargeScreenXgfStatisticsDO> largeScreenXgfStatistics(Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -119,5 +119,10 @@ public class KeyProjectRepositoryImpl extends BaseRepositoryImpl<KeyProjectMappe
|
|||
public List<KeyProjectLargeScreenProjectProgressDO> largeScreenProjectProgress(Map<String, Object> params) {
|
||||
return keyProjectMapper.largeScreenProjectProgress(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KeyProjectLargeScreenXgfStatisticsDO> largeScreenXgfStatistics(Map<String, Object> params) {
|
||||
return keyProjectMapper.largeScreenXgfStatistics(params);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,5 +41,7 @@ public interface KeyProjectRepository extends BaseRepository<KeyProjectDO> {
|
|||
List<KeyProjectLargeScreenDepartmentStatisticsDO> largeScreenDepartmentStatistics(Map<String, Object> params);
|
||||
|
||||
List<KeyProjectLargeScreenProjectProgressDO> largeScreenProjectProgress(Map<String, Object> params);
|
||||
|
||||
List<KeyProjectLargeScreenXgfStatisticsDO> largeScreenXgfStatistics(Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -684,5 +684,28 @@
|
|||
|
||||
ORDER BY p.initiation_time DESC
|
||||
</select>
|
||||
|
||||
<select id="largeScreenXgfStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenXgfStatisticsDO">
|
||||
SELECT
|
||||
kp.xgf_corpinfo_id AS xgfCorpinfoId,
|
||||
xgfci.corp_name AS xgfCorpinfoName,
|
||||
COUNT(DISTINCT CASE WHEN kp.project_type = 'more_people' THEN kp.id END) AS morePeopleCount,
|
||||
COUNT(DISTINCT CASE WHEN kp.project_type = 'four_new_homework' THEN kp.id END) AS fourNewHomeworkCount,
|
||||
COUNT(DISTINCT CASE WHEN kp.project_type = 'night_work' THEN kp.id END) AS nightWorkCount
|
||||
FROM key_project kp
|
||||
LEFT JOIN corp_info cp ON kp.corpinfo_id = cp.id
|
||||
LEFT JOIN corp_info xgfci ON kp.xgf_corpinfo_id = xgfci.id
|
||||
WHERE kp.delete_enum = 'FALSE'
|
||||
AND kp.xgf_corpinfo_id IS NOT NULL
|
||||
AND kp.project_type IN ('more_people', 'four_new_homework', 'night_work')
|
||||
<if test="corpinfoId != null">
|
||||
AND kp.corpinfo_id = #{corpinfoId}
|
||||
</if>
|
||||
<if test="portArea != null">
|
||||
AND cp.port_area = #{portArea}
|
||||
</if>
|
||||
GROUP BY kp.xgf_corpinfo_id, xgfci.corp_name
|
||||
ORDER BY xgfci.corp_order ASC, xgfci.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue