dev
parent
6ecc871fd5
commit
4c159ba695
|
|
@ -32,6 +32,7 @@ import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -102,14 +103,37 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject
|
||||||
public PageResponse<RegulatorEvalProjectSurveyPageCO> surveyPage(RegulatorEvalProjectSurveyPageQuery query) {
|
public PageResponse<RegulatorEvalProjectSurveyPageCO> surveyPage(RegulatorEvalProjectSurveyPageQuery query) {
|
||||||
Page<RegulatorEvalProjectSurveyPageCO> page = new Page<>(query.getCurrent(), query.getSize());
|
Page<RegulatorEvalProjectSurveyPageCO> page = new Page<>(query.getCurrent(), query.getSize());
|
||||||
IPage<RegulatorEvalProjectSurveyPageCO> result = evalProjectMapper.selectRegulatorSurveyPage(page, query);
|
IPage<RegulatorEvalProjectSurveyPageCO> result = evalProjectMapper.selectRegulatorSurveyPage(page, query);
|
||||||
if (result.getRecords() != null) {
|
List<RegulatorEvalProjectSurveyPageCO> records = result.getRecords();
|
||||||
// 应到人数固定为2;人脸识别直接复用签退统计结果
|
if (records != null && !records.isEmpty()) {
|
||||||
result.getRecords().forEach(co -> {
|
List<Long> projectIds = records.stream()
|
||||||
|
.map(co -> Long.parseLong(co.getId()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 按项目ID批量查询人员打卡统计与附件统计,回填到分页结果
|
||||||
|
Map<String, RegulatorEvalProjectSurveyPageCO> personnelMap = evalProjectMapper
|
||||||
|
.selectSurveyPersonnelStatByProjectIds(projectIds).stream()
|
||||||
|
.collect(Collectors.toMap(RegulatorEvalProjectSurveyPageCO::getId, co -> co));
|
||||||
|
Map<String, RegulatorEvalProjectSurveyPageCO> attachMap = evalProjectMapper
|
||||||
|
.selectSurveyAttachStatByProjectIds(projectIds).stream()
|
||||||
|
.collect(Collectors.toMap(RegulatorEvalProjectSurveyPageCO::getId, co -> co));
|
||||||
|
records.forEach(co -> {
|
||||||
|
// 应到人数固定为2
|
||||||
co.setExpectedCount(SURVEY_EXPECTED_COUNT);
|
co.setExpectedCount(SURVEY_EXPECTED_COUNT);
|
||||||
|
RegulatorEvalProjectSurveyPageCO personnel = personnelMap.get(co.getId());
|
||||||
|
if (personnel != null) {
|
||||||
|
co.setActualCount(personnel.getActualCount());
|
||||||
|
co.setSignInCount(personnel.getSignInCount());
|
||||||
|
co.setSignOutCount(personnel.getSignOutCount());
|
||||||
|
}
|
||||||
|
RegulatorEvalProjectSurveyPageCO attach = attachMap.get(co.getId());
|
||||||
|
if (attach != null) {
|
||||||
|
co.setScenePhotoCount(attach.getScenePhotoCount());
|
||||||
|
co.setNotificationFileUrl(attach.getNotificationFileUrl());
|
||||||
|
}
|
||||||
|
// 人脸识别直接复用签退统计结果
|
||||||
co.setFaceCount(co.getSignOutCount());
|
co.setFaceCount(co.getSignOutCount());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return PageResponse.of(result.getRecords(), result.getTotal());
|
return PageResponse.of(records, result.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,16 @@ public interface EvalProjectMapper extends BaseMapper<EvalProjectDO> {
|
||||||
IPage<RegulatorEvalProjectSurveyPageCO> selectRegulatorSurveyPage(
|
IPage<RegulatorEvalProjectSurveyPageCO> selectRegulatorSurveyPage(
|
||||||
Page<RegulatorEvalProjectSurveyPageCO> page, @Param("query") RegulatorEvalProjectSurveyPageQuery query);
|
Page<RegulatorEvalProjectSurveyPageCO> page, @Param("query") RegulatorEvalProjectSurveyPageQuery query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按项目ID批量统计 eval_survey 人员打卡数据(实到/签到/签退,按 personnel_id 去重)
|
||||||
|
*/
|
||||||
|
List<RegulatorEvalProjectSurveyPageCO> selectSurveyPersonnelStatByProjectIds(@Param("projectIds") List<Long> projectIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按项目ID批量统计 eval_survey_attach 附件数据(现场照片数、告知书文件地址)
|
||||||
|
*/
|
||||||
|
List<RegulatorEvalProjectSurveyPageCO> selectSurveyAttachStatByProjectIds(@Param("projectIds") List<Long> projectIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监管端-项目踏勘人员打卡信息查询(关联 org_personnel 获取人员姓名,按项目ID查询 eval_survey)
|
* 监管端-项目踏勘人员打卡信息查询(关联 org_personnel 获取人员姓名,按项目ID查询 eval_survey)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -172,10 +172,7 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 监管端-项目踏勘监管分页:未删除且法定项目(is_statutory=1),关联 org_info 获取评价机构名称;
|
<!-- 监管端-项目踏勘监管分页:未删除且法定项目(is_statutory=1),关联 org_info 获取评价机构名称;
|
||||||
实到/签到/签退/人脸识别取自 eval_survey(按 personnel_id 去重);
|
实到/签到/签退/现场照片/告知书等统计数据由业务代码按项目ID批量查询后回填 -->
|
||||||
现场照片取自 eval_survey_attach(attach_type_code IN RECTIFICATION_REVIEW/SITE_INSPECTION_FORM 的 file_url 数量);
|
|
||||||
告知书取自 eval_survey_attach(attach_type_code = PRACTICE_NOTIFICATION 的 file_url);
|
|
||||||
应到人数固定为2,由业务代码设置 -->
|
|
||||||
<select id="selectRegulatorSurveyPage"
|
<select id="selectRegulatorSurveyPage"
|
||||||
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
|
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
|
||||||
SELECT
|
SELECT
|
||||||
|
|
@ -183,26 +180,7 @@
|
||||||
p.org_id,
|
p.org_id,
|
||||||
p.project_no,
|
p.project_no,
|
||||||
p.project_name,
|
p.project_name,
|
||||||
o.unit_name AS org_name,
|
o.unit_name AS org_name
|
||||||
(SELECT COUNT(DISTINCT s.personnel_id) FROM eval_survey s
|
|
||||||
WHERE s.project_id = p.id
|
|
||||||
AND s.delete_enum = 'false'
|
|
||||||
AND s.sing_in_time IS NOT NULL
|
|
||||||
AND s.sign_out_time IS NOT NULL) AS actual_count,
|
|
||||||
(SELECT COUNT(DISTINCT s.personnel_id) FROM eval_survey s
|
|
||||||
WHERE s.project_id = p.id
|
|
||||||
AND s.delete_enum = 'false'
|
|
||||||
AND s.sing_in_time IS NOT NULL) AS sign_in_count,
|
|
||||||
(SELECT COUNT(DISTINCT s.personnel_id) FROM eval_survey s
|
|
||||||
WHERE s.project_id = p.id
|
|
||||||
AND s.delete_enum = 'false'
|
|
||||||
AND s.sign_out_time IS NOT NULL) AS sign_out_count,
|
|
||||||
(SELECT COUNT(*) FROM eval_survey_attach sa
|
|
||||||
WHERE sa.project_id = p.id
|
|
||||||
AND sa.attach_type_code IN ('RECTIFICATION_REVIEW', 'SITE_INSPECTION_FORM')) AS scene_photo_count,
|
|
||||||
(SELECT sa.file_url FROM eval_survey_attach sa
|
|
||||||
WHERE sa.project_id = p.id
|
|
||||||
AND sa.attach_type_code = 'PRACTICE_NOTIFICATION' LIMIT 1) AS notification_file_url
|
|
||||||
FROM eval_project p
|
FROM eval_project p
|
||||||
LEFT JOIN org_info o
|
LEFT JOIN org_info o
|
||||||
ON o.id = p.org_id
|
ON o.id = p.org_id
|
||||||
|
|
@ -222,6 +200,38 @@
|
||||||
ORDER BY p.id DESC
|
ORDER BY p.id DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 按项目ID批量统计 eval_survey 人员打卡数据(实到/签到/签退,按 personnel_id 去重) -->
|
||||||
|
<select id="selectSurveyPersonnelStatByProjectIds"
|
||||||
|
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
|
||||||
|
SELECT
|
||||||
|
s.project_id AS id,
|
||||||
|
COUNT(DISTINCT CASE WHEN s.sing_in_time IS NOT NULL AND s.sign_out_time IS NOT NULL THEN s.personnel_id END) AS actual_count,
|
||||||
|
COUNT(DISTINCT CASE WHEN s.sing_in_time IS NOT NULL THEN s.personnel_id END) AS sign_in_count,
|
||||||
|
COUNT(DISTINCT CASE WHEN s.sign_out_time IS NOT NULL THEN s.personnel_id END) AS sign_out_count
|
||||||
|
FROM eval_survey s
|
||||||
|
WHERE s.delete_enum = 'false'
|
||||||
|
AND s.project_id IN
|
||||||
|
<foreach collection="projectIds" item="pid" open="(" separator="," close=")">
|
||||||
|
#{pid}
|
||||||
|
</foreach>
|
||||||
|
GROUP BY s.project_id
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 按项目ID批量统计 eval_survey_attach 附件数据(现场照片数、告知书文件地址) -->
|
||||||
|
<select id="selectSurveyAttachStatByProjectIds"
|
||||||
|
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
|
||||||
|
SELECT
|
||||||
|
sa.project_id AS id,
|
||||||
|
SUM(CASE WHEN sa.attach_type_code IN ('RECTIFICATION_REVIEW', 'SITE_INSPECTION_FORM') THEN 1 ELSE 0 END) AS scene_photo_count,
|
||||||
|
MAX(CASE WHEN sa.attach_type_code = 'PRACTICE_NOTIFICATION' THEN sa.file_url END) AS notification_file_url
|
||||||
|
FROM eval_survey_attach sa
|
||||||
|
WHERE sa.project_id IN
|
||||||
|
<foreach collection="projectIds" item="pid" open="(" separator="," close=")">
|
||||||
|
#{pid}
|
||||||
|
</foreach>
|
||||||
|
GROUP BY sa.project_id
|
||||||
|
</select>
|
||||||
|
|
||||||
<!-- 监管端-项目踏勘人员打卡信息查询:按项目ID查询 eval_survey,关联 org_personnel 获取人员姓名 -->
|
<!-- 监管端-项目踏勘人员打卡信息查询:按项目ID查询 eval_survey,关联 org_personnel 获取人员姓名 -->
|
||||||
<select id="selectRegulatorSurveyClockInList"
|
<select id="selectRegulatorSurveyClockInList"
|
||||||
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO">
|
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue