Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
Z
zlmy-cloud
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zlmy
zlmy-cloud
Commits
1a206627
Commit
1a206627
authored
Nov 07, 2025
by
鲁鸿波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
危险作业监督检查统计修改
选择人员承包商名称不显示修改
parent
d07ecb51
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
123 additions
and
31 deletions
+123
-31
TContractorPersonServiceImpl.java
...tor/ledger/service/impl/TContractorPersonServiceImpl.java
+9
-2
HazardWorkPlanCheckStatsDTO.java
.../module/hazard/model/dto/HazardWorkPlanCheckStatsDTO.java
+0
-3
THazardWorkPlanCheckServiceImpl.java
.../hazard/service/impl/THazardWorkPlanCheckServiceImpl.java
+4
-7
THazardWorkPlanCheck.xml
...src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
+110
-19
No files found.
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/contractor/ledger/service/impl/TContractorPersonServiceImpl.java
View file @
1a206627
...
...
@@ -223,8 +223,7 @@ public class TContractorPersonServiceImpl extends SuperServiceImpl<TContractorPe
public
List
<
TContractorPerson
>
ValidPeopleList
(
TContractorPersonParam
param
)
{
QueryWrapper
<
TContractorPerson
>
query
=
this
.
createQuery
(
param
);
query
.
eq
(
TContractorPerson
.
JOB_STATUS
,
1
);
return
this
.
list
(
query
).
stream
().
filter
(
tContractorPerson
->
{
List
<
TContractorPerson
>
filteredList
=
this
.
list
(
query
).
stream
().
filter
(
tContractorPerson
->
{
int
age
=
IdcardUtil
.
getAgeByIdCard
(
tContractorPerson
.
getIdCardNo
());
int
gender
=
IdcardUtil
.
getGenderByIdCard
(
tContractorPerson
.
getIdCardNo
());
if
(
gender
==
1
){
...
...
@@ -233,6 +232,14 @@ public class TContractorPersonServiceImpl extends SuperServiceImpl<TContractorPe
return
age
<=
55
;
}
}).
collect
(
Collectors
.
toList
());
// 在过滤后设置 infoDesignation 属性
filteredList
.
forEach
(
tContractorPerson
->
tContractorPerson
.
setInfoDesignation
(
tContractorInfoService
.
getName
(
tContractorPerson
.
getInfoId
()))
);
return
filteredList
;
}
@Override
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanCheckStatsDTO.java
View file @
1a206627
...
...
@@ -20,9 +20,6 @@ public class HazardWorkPlanCheckStatsDTO {
@ApiModelProperty
(
value
=
"问题数"
)
private
Integer
numberCount
;
@ApiModelProperty
(
value
=
"危险作业数量"
)
private
Integer
workCount
;
@ApiModelProperty
(
value
=
"合规比例"
)
private
double
complianceRatio
;
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/THazardWorkPlanCheckServiceImpl.java
View file @
1a206627
...
...
@@ -290,13 +290,10 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
//tHazardWorkPlanCheckParam.setOrgId("69223d5d1fa84ff29a0c11863d1b00b7");
HazardWorkPlanCheckStatsDTO
hazardWorkPlanCheckStatsDTO
=
baseMapper
.
selectHazardWorkPlanCheckStats
(
tHazardWorkPlanCheckParam
);
// 计算合规率(基于危险作业数量和问题数)
if
(
hazardWorkPlanCheckStatsDTO
.
getWorkCount
()
!=
null
&&
hazardWorkPlanCheckStatsDTO
.
getWorkCount
()
>
0
)
{
// 使用公式 C = (B - A) / B × 100
// B = workCount(危险作业数量)
// A = numberCount(问题数)
double
complianceRate
=
(
hazardWorkPlanCheckStatsDTO
.
getWorkCount
()
-
hazardWorkPlanCheckStatsDTO
.
getNumberCount
())
*
100.0
/
hazardWorkPlanCheckStatsDTO
.
getWorkCount
();
hazardWorkPlanCheckStatsDTO
.
setComplianceRatio
(
Math
.
round
(
complianceRate
*
100.0
)
/
100.0
);
// 四舍五入保留两位小数
// 计算合规比例(合规企业数/企业总数)
if
(
hazardWorkPlanCheckStatsDTO
.
getComplianceBasicUnitCount
()
!=
null
&&
hazardWorkPlanCheckStatsDTO
.
getComplianceBasicUnitCount
()
>
0
&&
hazardWorkPlanCheckStatsDTO
.
getBasicUnitCount
()
!=
null
&&
hazardWorkPlanCheckStatsDTO
.
getBasicUnitCount
()
>
0
)
{
hazardWorkPlanCheckStatsDTO
.
setComplianceRatio
(
Math
.
round
(
hazardWorkPlanCheckStatsDTO
.
getComplianceBasicUnitCount
()/
hazardWorkPlanCheckStatsDTO
.
getBasicUnitCount
()));
// 四舍五入保留两位小数
}
else
{
hazardWorkPlanCheckStatsDTO
.
setComplianceRatio
(
0.0
);
}
...
...
zlmy-modules/zlmy-boot/src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
View file @
1a206627
...
...
@@ -290,7 +290,7 @@
<sql
id=
"orgIdFilter"
>
AND basic_id IN (
AND basic_id I
S NOT NULL AND basic_unit IS NOT NULL AND basic_id I
N (
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId} OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
...
...
@@ -302,9 +302,9 @@
</if>
</sql>
<select
id=
"selectHazardWorkPlanCheckStats"
resultType=
"com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO"
>
<
!--<
select id="selectHazardWorkPlanCheckStats" resultType="com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO">
SELECT
<!-- 企业总数(有检查记录的企业)-->
<!– 企业总数(有检查记录的企业)–>
(SELECT COUNT(DISTINCT basic_unit)
FROM t_hazard_work_plan_check
WHERE status = '0'
...
...
@@ -313,7 +313,7 @@
<include refid="checkTimeFilter" />
) AS basicUnitCount,
<!-- 合规企业数(企业合规率 >= 95%)-->
<!– 合规企业数(企业合规率 >= 95%)–>
(SELECT COUNT(*)
FROM (
SELECT basic_unit
...
...
@@ -330,7 +330,7 @@
END <![CDATA[ >= ]]> 95
) AS compliant_enterprises) AS complianceBasicUnitCount,
<!-- 不合规企业数(企业合规率 < 95%)-->
<!– 不合规企业数(企业合规率 < 95%)–>
(SELECT COUNT(*)
FROM (
SELECT basic_unit
...
...
@@ -347,7 +347,7 @@
END <![CDATA[ < ]]> 95
) AS non_compliant_enterprises) AS noComplianceBasicUnitCount,
<!-- 问题数-->
<!– 问题数–>
(SELECT COUNT(*)
FROM t_hazard_work_plan_check
WHERE status = '0'
...
...
@@ -357,7 +357,7 @@
<include refid="checkTimeFilter" />
) AS numberCount,
<!--危险作业数量-->
<!–危险作业数量–>
(select count(1) from t_hazard_work_plan
where work_status!='0'
AND org_id IN (
...
...
@@ -369,8 +369,75 @@
</if>) As workCount
FROM DUAL
</select>-->
<select
id=
"selectHazardWorkPlanCheckStats"
resultType=
"com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO"
>
SELECT
<!-- 企业总数(有检查记录的企业)-->
(SELECT COUNT(DISTINCT basic_unit)
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
) AS basicUnitCount,
<!--- 合规企业数(C >= 95)-->
SUM(
CASE
WHEN work_count > 0
AND ((work_count - problem_count)/ work_count * 100.0 )
<![CDATA[ >= ]]>
95
THEN 1 ELSE 0
END
) AS complianceBasicUnitCount,
<!-- 不合规企业数(C < 95)-->
SUM(
CASE
WHEN work_count > 0
AND ((work_count - problem_count)/ work_count * 100.0 )
<![CDATA[ < ]]>
95
THEN 1 ELSE 0
END
) AS noComplianceBasicUnitCount,
<!-- 问题数(保留原逻辑)-->
(SELECT COUNT(*)
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
AND is_compliant = '0'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
) AS numberCount
FROM (
<!-- 🔹 这里只计算一次每个企业的危险作业与问题数量-->
SELECT
wc.basic_unit,
COUNT(DISTINCT wp.id) AS work_count,
<!-- 危险作业数量 (B)-->
COALESCE(SUM(CASE WHEN wc.is_compliant = '0' THEN 1 ELSE 0 END), 0) AS problem_count
<!-- 问题数量 (A)-->
FROM t_hazard_work_plan wp
JOIN t_hazard_work_plan_check wc
ON wp.id = wc.plan_id
AND wc.status = '0'
AND wc.check_status = '2'
<include
refid=
"checkTimeFilter"
/>
WHERE wp.work_status != '0'
AND wp.org_id IN (
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId}
OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
<if
test=
"param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''"
>
AND wp.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
GROUP BY wc.basic_unit
) AS t
</select>
<select
id=
"selectComplianceCount"
resultType=
"java.lang.Integer"
>
SELECT COUNT(*)
FROM (
...
...
@@ -406,27 +473,51 @@
SELECT
t.basic_id,
t.basic_unit,
<!-- 计算合规率(数值)-->
ROUND(
(SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*)),
CASE WHEN t.total_count = 0 THEN 0
ELSE ((t.total_count - t.compliant_count) / t.total_count * 100.0 )
END,
2
) AS complianceRate,
<!-- 判断是否合规(合规率 >= 95%)-->
CASE
WHEN
COUNT(*)
= 0 THEN '无数据'
WHEN (
SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*)
)
<![CDATA[ >= ]]>
95 THEN '合规'
WHEN
t.total_count
= 0 THEN '无数据'
WHEN (
(t.total_count - t.compliant_count) / t.total_count * 100.0
)
<![CDATA[ >= ]]>
95 THEN '合规'
ELSE '不合规'
END AS isCompliant
FROM t_hazard_work_plan_check t
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
FROM (
SELECT
wc.basic_id,
wc.basic_unit,
COUNT(DISTINCT wp.id) AS total_count, -- 检查记录总数
COALESCE(SUM(CASE WHEN wc.is_compliant = '1' THEN 1 ELSE 0 END), 0) AS compliant_count
FROM t_hazard_work_plan wp
LEFT JOIN t_hazard_work_plan_check wc
ON wp.id = wc.plan_id
AND wc.status = '0'
AND wc.check_status = '2'
<include
refid=
"checkTimeFilter"
/>
<include
refid=
"orgIdFilter"
/>
<if
test=
"param.basicId != null and param.basicId != ''"
>
AND
t
.basic_id = #{param.basicId}
AND
wc
.basic_id = #{param.basicId}
</if>
<include
refid=
"checkTimeFilter"
/>
GROUP BY t.basic_id, t.basic_unit
WHERE wp.work_status != '0'
AND wp.org_id IN (
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId}
OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
<if
test=
"param.basicId != null and param.basicId != ''"
>
AND wp.org_id = #{param.basicId}
</if>
<if
test=
"param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''"
>
AND wp.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
GROUP BY wc.basic_id, wc.basic_unit
) AS t
ORDER BY complianceRate DESC
</select>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment