Compare commits

...

4 Commits

14 changed files with 265 additions and 10 deletions

View File

@ -169,5 +169,17 @@ 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));
}
@ApiOperation("可视化大屏-重点作业信息列表")
@PostMapping("/largeScreenInfo")
public MultiResponse<KeyProjectLargeScreenInfoCO> largeScreenInfo(@RequestBody KeyProjectLargeScreenInfoQry qry) {
return MultiResponse.of(keyProjectService.largeScreenInfo(qry));
}
}

View File

@ -360,5 +360,35 @@ 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());
}
public List<KeyProjectLargeScreenInfoCO> largeScreenInfo(KeyProjectLargeScreenInfoQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
List<KeyProjectLargeScreenInfoDO> dataList = keyProjectRepository.largeScreenInfo(params);
if (CollUtil.isEmpty(dataList)) {
return java.util.Collections.emptyList();
}
return dataList.stream().map(data -> {
KeyProjectLargeScreenInfoCO result = new KeyProjectLargeScreenInfoCO();
org.springframework.beans.BeanUtils.copyProperties(data, result);
return result;
}).collect(Collectors.toList());
}
}

View File

@ -133,5 +133,15 @@ 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);
}
@Override
public List<KeyProjectLargeScreenInfoCO> largeScreenInfo(KeyProjectLargeScreenInfoQry qry) {
return keyProjectQueryExe.largeScreenInfo(qry);
}
}

View File

@ -55,5 +55,9 @@ public interface KeyProjectServiceI {
List<KeyProjectLargeScreenDepartmentStatisticsCO> largeScreenDepartmentStatistics(KeyProjectLargeScreenDepartmentStatisticsQry qry);
List<KeyProjectLargeScreenProjectProgressCO> largeScreenProjectProgress(KeyProjectLargeScreenProjectProgressQry qry);
List<KeyProjectLargeScreenXgfStatisticsCO> largeScreenXgfStatistics(KeyProjectLargeScreenXgfStatisticsQry qry);
List<KeyProjectLargeScreenInfoCO> largeScreenInfo(KeyProjectLargeScreenInfoQry qry);
}

View File

@ -0,0 +1,19 @@
package com.zcloud.key.project.dto.clientobject.project;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @Author zhaokai
* @Date 2026-07-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class KeyProjectLargeScreenInfoCO extends KeyProjectLargeScreenCO {
@ApiModelProperty(value = "辖区单位企业名称")
private String jurisdictionCorpinfoName;
}

View File

@ -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;
}

View File

@ -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-29
*/
@Data
public class KeyProjectLargeScreenInfoQry implements Serializable {
@ApiModelProperty(value = "企业id", name = "corpinfoId")
private Long corpinfoId;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -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;
}

View File

@ -0,0 +1,21 @@
package com.zcloud.key.project.persistence.dataobject.project;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @Author zhaokai
* @Date 2026-07-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class KeyProjectLargeScreenInfoDO extends KeyProjectDO {
@ApiModelProperty(value = "辖区单位企业名称")
@TableField(exist = false)
private String jurisdictionCorpinfoName;
}

View File

@ -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;
}

View File

@ -50,5 +50,9 @@ 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);
List<KeyProjectLargeScreenInfoDO> largeScreenInfo(Map<String, Object> params);
}

View File

@ -119,5 +119,15 @@ 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);
}
@Override
public List<KeyProjectLargeScreenInfoDO> largeScreenInfo(Map<String, Object> params) {
return keyProjectMapper.largeScreenInfo(params);
}
}

View File

@ -41,5 +41,9 @@ 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);
List<KeyProjectLargeScreenInfoDO> largeScreenInfo(Map<String, Object> params);
}

View File

@ -640,7 +640,7 @@
FROM key_project kp
WHERE kp.delete_enum = 'FALSE'
<if test="corpinfoId != null">
AND kp.corpinfo_id = #{corpinfoId}
AND kp.jurisdiction_corpinfo_id = #{corpinfoId}
</if>
</select>
@ -650,12 +650,12 @@
cp.port_area AS portArea
FROM key_project kp
LEFT JOIN corp_info cp ON kp.corpinfo_id = cp.id
LEFT JOIN corp_info cp ON kp.jurisdiction_corpinfo_id = cp.id
WHERE kp.delete_enum = 'FALSE'
AND kp.apply_status IN (2, 4, 5)
<if test="params.corpinfoId != null">
AND kp.corpinfo_id = #{params.corpinfoId}
AND kp.jurisdiction_corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.portArea != null">
AND cp.port_area = #{params.portArea}
@ -666,12 +666,12 @@
<select id="largeScreenProjectStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenProjectStatisticsDO">
SELECT
COUNT(DISTINCT CASE WHEN kp.apply_status IN (1, 2, 3, 4, 5, 6, 7) THEN kp.id END) AS totalProjectCount,
COUNT(DISTINCT CASE WHEN kp.apply_status IN (2, 4, 5, 6) THEN kp.id END) AS startCount
COUNT(DISTINCT CASE WHEN kp.apply_status IN (2, 4, 5) THEN kp.id END) AS startCount
FROM key_project kp
LEFT JOIN corp_info cp ON kp.corpinfo_id = cp.id
LEFT JOIN corp_info cp ON kp.jurisdiction_corpinfo_id = cp.id
WHERE kp.delete_enum = 'FALSE'
<if test="corpinfoId != null">
AND kp.corpinfo_id = #{corpinfoId}
AND kp.jurisdiction_corpinfo_id = #{corpinfoId}
</if>
<if test="portArea != null">
AND cp.port_area = #{portArea}
@ -685,13 +685,13 @@
COUNT(DISTINCT CASE WHEN kp.project_type = 'four_new_homework' THEN kp.id END) AS fourNewHomeworkCount,
COUNT(DISTINCT CASE WHEN kp.project_type = 'more_people' THEN kp.id END) AS morePeopleCount
FROM key_project kp
LEFT JOIN corp_info cp ON kp.corpinfo_id = cp.id
LEFT JOIN corp_info cp ON kp.jurisdiction_corpinfo_id = cp.id
LEFT JOIN department d ON kp.master_department_id = d.id
WHERE kp.delete_enum = 'FALSE'
AND kp.apply_status IN (2, 3, 4, 5, 6, 7)
AND kp.project_type IN ('four_new_homework', 'more_people')
<if test="corpinfoId != null">
AND kp.corpinfo_id = #{corpinfoId}
AND kp.jurisdiction_corpinfo_id = #{corpinfoId}
</if>
<if test="portArea != null">
AND cp.port_area = #{portArea}
@ -710,7 +710,7 @@
COALESCE(penalty_stat.penaltyAmount, 0) AS penaltyAmount
FROM project_approval_flow paf
LEFT JOIN project p ON paf.project_id = p.id
LEFT JOIN corp_info cp ON paf.corpinfo_id = cp.id
LEFT JOIN corp_info cp ON paf.jurisdiction_corpinfo_id = cp.id
LEFT JOIN (
SELECT
k.project_id,
@ -750,7 +750,7 @@
AND p.delete_enum = 'FALSE'
AND p.project_status = 4
<if test="corpinfoId != null">
AND paf.corpinfo_id = #{corpinfoId}
AND paf.jurisdiction_corpinfo_id = #{corpinfoId}
</if>
<if test="portArea != null">
AND cp.port_area = #{portArea}
@ -759,5 +759,46 @@
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.jurisdiction_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.jurisdiction_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>
<select id="largeScreenInfo" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenInfoDO">
SELECT
kp.*,
jurcorp.corp_name AS jurisdictionCorpinfoName
FROM key_project kp
LEFT JOIN corp_info cp ON kp.jurisdiction_corpinfo_id = cp.id
LEFT JOIN corp_info jurcorp ON kp.jurisdiction_corpinfo_id = jurcorp.id
WHERE kp.delete_enum = 'FALSE'
AND kp.apply_status IN (1, 2, 3, 4, 5, 6, 7)
<if test="corpinfoId != null">
AND kp.jurisdiction_corpinfo_id = #{corpinfoId}
</if>
<if test="portArea != null">
AND cp.port_area = #{portArea}
</if>
ORDER BY kp.apply_status ASC, kp.create_time DESC
</select>
</mapper>