dev
luotaiqian 2026-07-29 16:57:41 +08:00
parent 5b926d6554
commit d7651344a4
1 changed files with 100 additions and 102 deletions

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper"> <mapper namespace="org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper">
<!-- 项目进度管理分页查询(关联 eval_customer 获取客户名称;进度状态/剩余天数由业务代码计算) --> <!-- 项目进度管理分页查询(关联 eval_customer 获取客户名称;进度状态/剩余天数由业务代码计算) -->
<resultMap id="EvalProjectProgressCOMap" <resultMap id="EvalProjectProgressCOMap"
type="org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO" type="org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO"
@ -13,22 +12,20 @@
<select id="selectProgressPage" <select id="selectProgressPage"
resultMap="EvalProjectProgressCOMap"> resultMap="EvalProjectProgressCOMap">
SELECT SELECT
p.id, p.id,
p.project_no, p.project_no,
p.project_name, p.project_name,
c.customer_name, c.customer_name,
p.customer_contact_name, p.customer_contact_name,
p.project_leader_name, p.project_leader_name,
p.plan_end_date, p.plan_end_date,
p.project_node p.project_node
FROM eval_project p FROM eval_project p
LEFT JOIN eval_customer c LEFT JOIN eval_customer c
ON c.id = p.customer_id ON c.id = p.customer_id
AND c.delete_enum = 'false' AND c.delete_enum = 'false'
WHERE p.delete_enum = 'false' WHERE p.delete_enum = 'false'
<if test="query.orgId != null"> AND p.org_id = #{query.orgId}
AND p.org_id = #{query.orgId}
</if>
<if test="query.projectName != null and query.projectName != ''"> <if test="query.projectName != null and query.projectName != ''">
AND p.project_name LIKE CONCAT('%', #{query.projectName}, '%') AND p.project_name LIKE CONCAT('%', #{query.projectName}, '%')
</if> </if>
@ -52,15 +49,15 @@
<select id="selectRiskWarningPage" <select id="selectRiskWarningPage"
resultType="org.qinan.safetyeval.client.co.institution.RiskWarningCO"> resultType="org.qinan.safetyeval.client.co.institution.RiskWarningCO">
SELECT SELECT
p.id, p.id,
p.project_no, p.project_no,
p.project_name, p.project_name,
c.customer_name, c.customer_name,
p.project_leader_name AS responsible_person p.project_leader_name AS responsible_person
FROM eval_project p FROM eval_project p
LEFT JOIN eval_customer c LEFT JOIN eval_customer c
ON c.id = p.customer_id ON c.id = p.customer_id
AND c.delete_enum = 'false' AND c.delete_enum = 'false'
WHERE p.delete_enum = 'false' WHERE p.delete_enum = 'false'
<if test="query.orgId != null"> <if test="query.orgId != null">
AND p.org_id = #{query.orgId} AND p.org_id = #{query.orgId}
@ -70,79 +67,79 @@
<select id="onSiteTaskSum" resultType="java.lang.Long"> <select id="onSiteTaskSum" resultType="java.lang.Long">
select count(id) from eval_project select count(id) from eval_project
where where
id in id in
<foreach collection="pIds" item="id" open="(" separator="," close=")"> <foreach collection="pIds" item="id" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
and and
JSON_CONTAINS(project_node, JSON_OBJECT('type', #{val},'state', 0)) JSON_CONTAINS(project_node, JSON_OBJECT('type', #{val},'state', 0))
</select> </select>
<!-- 监管端-安评项目实时监控统计:未删除且法定项目(is_statutory=1) --> <!-- 监管端-安评项目实时监控统计:未删除且法定项目(is_statutory=1) -->
<select id="selectRegulatorMonitorStat" <select id="selectRegulatorMonitorStat"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO">
SELECT SELECT
COUNT(*) AS monitoringCount, COUNT(*) AS monitoringCount,
IFNULL(SUM(CASE WHEN archive_flag =0 THEN 1 ELSE 0 END), 0) AS normalCount, IFNULL(SUM(CASE WHEN archive_flag =0 THEN 1 ELSE 0 END), 0) AS normalCount,
0 AS warningCount, 0 AS warningCount,
IFNULL(SUM(CASE WHEN plan_end_date BETWEEN DATE_FORMAT(NOW(), '%Y-%m-01') IFNULL(SUM(CASE WHEN plan_end_date BETWEEN DATE_FORMAT(NOW(), '%Y-%m-01')
AND DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH) AND DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH)
THEN 1 ELSE 0 END), 0) AS monthPlanCompleteCount THEN 1 ELSE 0 END), 0) AS monthPlanCompleteCount
FROM eval_project FROM eval_project
WHERE delete_enum = 'false' WHERE delete_enum = 'false'
AND is_statutory = 1 AND is_statutory = 1
</select> </select>
<!-- 监管端-项目踏勘监管统计:未删除且法定项目(is_statutory=1)告知书归档关联eval_survey_attach人员打卡状态取clock_in_status --> <!-- 监管端-项目踏勘监管统计:未删除且法定项目(is_statutory=1)告知书归档关联eval_survey_attach人员打卡状态取clock_in_status -->
<select id="selectRegulatorSurveyStat" <select id="selectRegulatorSurveyStat"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO">
SELECT SELECT
IFNULL(SUM(CASE WHEN EXISTS ( IFNULL(SUM(CASE WHEN EXISTS (
SELECT 1 FROM eval_survey_attach sa SELECT 1 FROM eval_survey_attach sa
WHERE sa.project_id = p.id WHERE sa.project_id = p.id
AND sa.attach_type_code = 'PRACTICE_NOTIFICATION' AND sa.attach_type_code = 'PRACTICE_NOTIFICATION'
) THEN 1 ELSE 0 END), 0) AS notificationArchivedCount, ) THEN 1 ELSE 0 END), 0) AS notificationArchivedCount,
IFNULL(SUM(CASE WHEN EXISTS ( IFNULL(SUM(CASE WHEN EXISTS (
SELECT 1 FROM eval_survey_attach sa SELECT 1 FROM eval_survey_attach sa
WHERE sa.project_id = p.id WHERE sa.project_id = p.id
AND sa.attach_type_code = 'PRACTICE_NOTIFICATION' AND sa.attach_type_code = 'PRACTICE_NOTIFICATION'
) THEN 0 ELSE 1 END), 0) AS notificationAbnormalCount, ) THEN 0 ELSE 1 END), 0) AS notificationAbnormalCount,
IFNULL(SUM(CASE WHEN p.clock_in_status = 'NORMAL' THEN 1 ELSE 0 END), 0) AS clockInNormalCount, IFNULL(SUM(CASE WHEN p.clock_in_status = 'NORMAL' THEN 1 ELSE 0 END), 0) AS clockInNormalCount,
IFNULL(SUM(CASE WHEN p.clock_in_status = 'NORMAL' THEN 0 ELSE 1 END), 0) AS clockInAbnormalCount IFNULL(SUM(CASE WHEN p.clock_in_status = 'NORMAL' THEN 0 ELSE 1 END), 0) AS clockInAbnormalCount
FROM eval_project p FROM eval_project p
WHERE p.delete_enum = 'false' WHERE p.delete_enum = 'false'
AND p.is_statutory = 1 AND p.is_statutory = 1
</select> </select>
<!-- 监管端-安评项目实时监控分页:未删除且法定项目(is_statutory=1),关联 org_info 获取评价机构名称,关联 eval_project_process_waring 获取预警信息 --> <!-- 监管端-安评项目实时监控分页:未删除且法定项目(is_statutory=1),关联 org_info 获取评价机构名称,关联 eval_project_process_waring 获取预警信息 -->
<select id="selectRegulatorMonitorPage" <select id="selectRegulatorMonitorPage"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO">
SELECT SELECT
p.id, p.id,
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,
p.eval_type_code, p.eval_type_code,
p.industry_code, p.industry_code,
p.customer_contact_name AS leader_name, p.customer_contact_name AS leader_name,
p.plan_end_date, p.plan_end_date,
w.waring_status, w.waring_status,
w.process_waring_status, w.process_waring_status,
w.process_waring_msg, w.process_waring_msg,
w.personnel_waring_status, w.personnel_waring_status,
w.personnel_waring_msg w.personnel_waring_msg
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
AND o.delete_enum = 'false' AND o.delete_enum = 'false'
LEFT JOIN eval_project_process_waring w LEFT JOIN eval_project_process_waring w
ON w.project_id = p.id ON w.project_id = p.id
WHERE p.delete_enum = 'false' WHERE p.delete_enum = 'false'
AND p.is_statutory = 1 AND p.is_statutory = 1
<if test="query.projectNameOrNo != null and query.projectNameOrNo != ''"> <if test="query.projectNameOrNo != null and query.projectNameOrNo != ''">
AND (p.project_name LIKE CONCAT('%', #{query.projectNameOrNo}, '%') AND (p.project_name LIKE CONCAT('%', #{query.projectNameOrNo}, '%')
OR p.project_no LIKE CONCAT('%', #{query.projectNameOrNo}, '%')) OR p.project_no LIKE CONCAT('%', #{query.projectNameOrNo}, '%'))
</if> </if>
<if test="query.orgId != null"> <if test="query.orgId != null">
AND p.org_id = #{query.orgId} AND p.org_id = #{query.orgId}
@ -176,20 +173,20 @@
<select id="selectRegulatorSurveyPage" <select id="selectRegulatorSurveyPage"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
SELECT SELECT
p.id, p.id,
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
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
AND o.delete_enum = 'false' AND o.delete_enum = 'false'
WHERE p.delete_enum = 'false' WHERE p.delete_enum = 'false'
AND p.is_statutory = 1 AND p.is_statutory = 1
<if test="query.projectNameOrNo != null and query.projectNameOrNo != ''"> <if test="query.projectNameOrNo != null and query.projectNameOrNo != ''">
AND (p.project_name LIKE CONCAT('%', #{query.projectNameOrNo}, '%') AND (p.project_name LIKE CONCAT('%', #{query.projectNameOrNo}, '%')
OR p.project_no LIKE CONCAT('%', #{query.projectNameOrNo}, '%')) OR p.project_no LIKE CONCAT('%', #{query.projectNameOrNo}, '%'))
</if> </if>
<if test="query.orgId != null"> <if test="query.orgId != null">
AND p.org_id = #{query.orgId} AND p.org_id = #{query.orgId}
@ -204,16 +201,17 @@
<select id="selectSurveyPersonnelStatByProjectIds" <select id="selectSurveyPersonnelStatByProjectIds"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
SELECT SELECT
s.project_id AS id, 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 AND s.sign_out_time IS NOT NULL THEN s.personnel_id END) AS
COUNT(DISTINCT CASE WHEN s.sing_in_time IS NOT NULL THEN s.personnel_id END) AS sign_in_count, actual_count,
COUNT(DISTINCT CASE WHEN s.sign_out_time IS NOT NULL THEN s.personnel_id END) AS sign_out_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 FROM eval_survey s
WHERE s.delete_enum = 'false' WHERE s.delete_enum = 'false'
AND s.project_id IN AND s.project_id IN
<foreach collection="projectIds" item="pid" open="(" separator="," close=")"> <foreach collection="projectIds" item="pid" open="(" separator="," close=")">
#{pid} #{pid}
</foreach> </foreach>
GROUP BY s.project_id GROUP BY s.project_id
</select> </select>
@ -221,14 +219,15 @@
<select id="selectSurveyAttachStatByProjectIds" <select id="selectSurveyAttachStatByProjectIds"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO">
SELECT SELECT
sa.project_id AS id, 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, SUM(CASE WHEN sa.attach_type_code IN ('RECTIFICATION_REVIEW', 'SITE_INSPECTION_FORM') THEN 1 ELSE 0 END) AS
MAX(CASE WHEN sa.attach_type_code = 'PRACTICE_NOTIFICATION' THEN sa.file_url END) AS notification_file_url 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 FROM eval_survey_attach sa
WHERE sa.project_id IN WHERE sa.project_id IN
<foreach collection="projectIds" item="pid" open="(" separator="," close=")"> <foreach collection="projectIds" item="pid" open="(" separator="," close=")">
#{pid} #{pid}
</foreach> </foreach>
GROUP BY sa.project_id GROUP BY sa.project_id
</select> </select>
@ -236,21 +235,21 @@
<select id="selectRegulatorSurveyClockInList" <select id="selectRegulatorSurveyClockInList"
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO"> resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO">
SELECT SELECT
s.id, s.id,
op.user_name AS user_name, op.user_name AS user_name,
s.role, s.role,
s.face_state, s.face_state,
s.gps_state, s.gps_state,
s.sing_in_time, s.sing_in_time,
s.sign_out_time, s.sign_out_time,
s.scene_url, s.scene_url,
s.signature_url s.signature_url
FROM eval_survey s FROM eval_survey s
LEFT JOIN org_personnel op LEFT JOIN org_personnel op
ON op.id = s.personnel_id ON op.id = s.personnel_id
AND op.delete_enum = 'false' AND op.delete_enum = 'false'
WHERE s.delete_enum = 'false' WHERE s.delete_enum = 'false'
AND s.project_id = #{projectId} AND s.project_id = #{projectId}
ORDER BY s.id ASC ORDER BY s.id ASC
</select> </select>
<select id="getByPersonnelId" resultType="java.lang.Long"> <select id="getByPersonnelId" resultType="java.lang.Long">
@ -258,5 +257,4 @@
from eval_project from eval_project
where JSON_CONTAINS(participants_json, JSON_OBJECT('id', #{currentUserId})); where JSON_CONTAINS(participants_json, JSON_OBJECT('id', #{currentUserId}));
</select> </select>
</mapper> </mapper>