chore(build): 新增可视化大屏统计

dev_visual_page
zhaokai 2026-07-17 14:09:00 +08:00
parent 9ad010d166
commit 642d0ac164
10 changed files with 50 additions and 36 deletions

View File

@ -81,10 +81,10 @@ public class ProjectTaskController {
projectTaskService.edit(projectTaskUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("可视化大屏-课题评分企业统计")
@ApiOperation("可视化大屏-课题评分领域统计")
@GetMapping("/scoreCount")
public MultiResponse<ProjectTaskScoreCountCO> countScoreByCorp() {
return MultiResponse.of(projectTaskService.countScoreByCorp());
public MultiResponse<ProjectTaskScoreCountCO> countScoreByDomain() {
return MultiResponse.of(projectTaskService.countScoreByDomain());
}
}

View File

@ -17,11 +17,9 @@ import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
import com.zcloud.domain.persistence.repository.*;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -44,6 +42,13 @@ public class ProjectTaskQueryExe {
private final ProjectTaskGroupUserRepository projectTaskGroupUserRepository;
private final ProjectTaskGroupUserCoConvertor projectTaskGroupUserCoConvertor;
private final CorpInfoRepository corpInfoRepository;
private static final List<ProjectTaskScoreCountCO> SCORE_COUNT_DOMAIN_LIST = java.util.Arrays.asList(
buildScoreCount("equipment_safety", "设备、工具具安全专项领域"),
buildScoreCount("facility_safety", "设施安全专项领域"),
buildScoreCount("Labor_related_parties", "劳务相关方安全专项领域"),
buildScoreCount("traffic_safety", "交通、消防、口门安全专项领域"),
buildScoreCount("production_safety", "生产作业、船舶靠离泊安全专项领域")
);
/**
*
@ -134,19 +139,29 @@ public class ProjectTaskQueryExe {
return projectTaskDetailsCO;
}
public List<ProjectTaskScoreCountCO> countScoreByCorp() {
List<ProjectTaskScoreCountDO> countList = projectTaskRepository.countScoreByCorp();
if(CollUtil.isEmpty(countList)){
return null;
}
return countList.stream().map(item -> {
ProjectTaskScoreCountCO countCO = new ProjectTaskScoreCountCO();
countCO.setCorpinfoId(item.getCorpinfoId());
countCO.setCorpinfoName(item.getCorpinfoName());
countCO.setNoScoreCount(item.getNoScoreCount());
countCO.setScoredCount(item.getScoredCount());
public List<ProjectTaskScoreCountCO> countScoreByDomain() {
Map<String, ProjectTaskScoreCountDO> countMap = projectTaskRepository.countScoreByDomain()
.stream()
.collect(java.util.stream.Collectors.toMap(ProjectTaskScoreCountDO::getDomainType, item -> item, (first, second) -> first));
return SCORE_COUNT_DOMAIN_LIST.stream().map(item -> {
ProjectTaskScoreCountDO countDO = countMap.get(item.getDomainType());
ProjectTaskScoreCountCO countCO = buildScoreCount(item.getDomainType(), item.getDomainTypeName());
if (countDO != null) {
countCO.setNoScoreCount(countDO.getNoScoreCount());
countCO.setScoredCount(countDO.getScoredCount());
}
return countCO;
}).collect(java.util.stream.Collectors.toList());
}).sorted(java.util.Comparator.comparing(ProjectTaskScoreCountCO::getNoScoreCount).reversed())
.collect(java.util.stream.Collectors.toList());
}
private static ProjectTaskScoreCountCO buildScoreCount(String domainType, String domainTypeName) {
ProjectTaskScoreCountCO countCO = new ProjectTaskScoreCountCO();
countCO.setDomainType(domainType);
countCO.setDomainTypeName(domainTypeName);
countCO.setNoScoreCount(0L);
countCO.setScoredCount(0L);
return countCO;
}
private boolean checkScorePermission(ProjectTaskScoreInfoCO scoreInfo) {

View File

@ -66,8 +66,8 @@ public class ProjectTaskServiceImpl implements ProjectTaskServiceI {
}
@Override
public List<ProjectTaskScoreCountCO> countScoreByCorp() {
return projectTaskQueryExe.countScoreByCorp();
public List<ProjectTaskScoreCountCO> countScoreByDomain() {
return projectTaskQueryExe.countScoreByDomain();
}
@Override

View File

@ -30,7 +30,7 @@ public interface ProjectTaskServiceI {
ProjectTaskDetailsCO getInfoById(Long id);
List<ProjectTaskScoreCountCO> countScoreByCorp();
List<ProjectTaskScoreCountCO> countScoreByDomain();
void updatExecuteStatusJob();
}

View File

@ -13,11 +13,11 @@ import java.io.Serializable;
*/
@Data
public class ProjectTaskScoreCountCO implements Serializable {
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
@ApiModelProperty(value = "领域类型")
private String domainType;
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
@ApiModelProperty(value = "领域类型名称")
private String domainTypeName;
@ApiModelProperty(value = "未评分数")
private Long noScoreCount;

View File

@ -10,9 +10,9 @@ import lombok.Data;
*/
@Data
public class ProjectTaskScoreCountDO {
private Long corpinfoId;
private String domainType;
private String corpinfoName;
private String domainTypeName;
private Long noScoreCount;

View File

@ -32,6 +32,6 @@ public interface ProjectTaskMapper extends BaseMapper<ProjectTaskDO> {
void updateExecuteStatusBatchById(Integer code, List<Long> idList);
List<ProjectTaskScoreCountDO> countScoreByCorp();
List<ProjectTaskScoreCountDO> countScoreByDomain();
}

View File

@ -32,7 +32,7 @@ public interface ProjectTaskRepository extends BaseRepository<ProjectTaskDO> {
ProjectTaskDO getInfoByTaskId(@NotEmpty(message = "课题任务不能为空") String projectTaskId);
List<ProjectTaskScoreCountDO> countScoreByCorp();
List<ProjectTaskScoreCountDO> countScoreByDomain();
List<ProjectTaskDO> getNoFinishByDomainDepartmentId(List<String> domainDepartmentIds);

View File

@ -99,8 +99,8 @@ public class ProjectTaskRepositoryImpl extends BaseRepositoryImpl<ProjectTaskMap
}
@Override
public List<ProjectTaskScoreCountDO> countScoreByCorp() {
return projectTaskMapper.countScoreByCorp();
public List<ProjectTaskScoreCountDO> countScoreByDomain() {
return projectTaskMapper.countScoreByDomain();
}
@Override

View File

@ -54,17 +54,16 @@
left join department d on d.id = dd.master_department_id
where pt.delete_enum = 'false' and pt.id=#{id}
</select>
<select id="countScoreByCorp" resultType="com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO">
<select id="countScoreByDomain" resultType="com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO">
select
pt.execute_corpinfo_id as corpinfoId,
c.corp_name as corpinfoName,
pt.domain_type as domainType,
pt.domain_type_name as domainTypeName,
sum(case when pt.score_status in (0, 1) then 1 else 0 end) as noScoreCount,
sum(case when pt.score_status = 2 then 1 else 0 end) as scoredCount
from project_task pt
inner join corp_info c on c.id = pt.execute_corpinfo_id
where pt.delete_enum = 'false'
group by pt.execute_corpinfo_id, c.corp_name
order by c.corp_name
and pt.domain_type in ('equipment_safety', 'facility_safety', 'Labor_related_parties', 'traffic_safety', 'production_safety')
group by pt.domain_type, pt.domain_type_name
</select>
<update id="updateScoreStatus">
update project_task set score_status = #{code}