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
1a2c9d92
Commit
1a2c9d92
authored
Jan 21, 2026
by
鲁鸿波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
危险作业抽查率,合规率修改
事故统计,导出修改
parent
94edb3f6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
278 additions
and
74 deletions
+278
-74
AccidentReportController.java
.../module/accident/controller/AccidentReportController.java
+1
-1
AccidentReportServiceImpl.java
...dule/accident/service/impl/AccidentReportServiceImpl.java
+157
-18
THazardWorkPlanCheck.xml
...src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
+120
-55
No files found.
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/accident/controller/AccidentReportController.java
View file @
1a2c9d92
...
...
@@ -324,7 +324,7 @@ public class AccidentReportController extends SuperController {
@GetMapping
(
value
=
"/accidentReportDetailExport"
)
public
BaseResponse
<
BizGeneralResponse
>
export
(
HttpServletResponse
response
,
ReportDetailParam
reportDetailParam
)
{
BaseResponse
<
BizGeneralResponse
>
baseResponse
=
new
BaseResponse
<>();
reportDetailParam
.
setUserId
(
getUserId
());
Page
<
AccidentReportDetail
>
accidentReportDetailPage
=
accidentReportService
.
selectAccidentReportDetail
(
reportDetailParam
);
if
(
CollectionUtils
.
isEmpty
(
accidentReportDetailPage
.
getRecords
()))
{
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/accident/service/impl/AccidentReportServiceImpl.java
View file @
1a2c9d92
...
...
@@ -301,7 +301,7 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
// accidentStatisticsReq.setThirdLevelUnitId(reportUnit.getThirdLevelUnitId());
// }
//数据
List
<
AccidentReport
>
accidentReportList
=
this
.
lambdaQuery
()
/*
List<AccidentReport> accidentReportList = this.lambdaQuery()
.eq(StringUtils.isNotBlank(accidentStatisticsReq.getBasicUnitId()), AccidentReport::getBasicUnitId, accidentStatisticsReq.getBasicUnitId())
.eq(StringUtils.isNotBlank(accidentStatisticsReq.getRegionalCompanyId()), AccidentReport::getRegionalCompanyId, accidentStatisticsReq.getRegionalCompanyId())
.ge(Objects.nonNull(accidentStatisticsReq.getStartDate()), AccidentReport::getAccidentTime, accidentStatisticsReq.getStartDate())
...
...
@@ -310,6 +310,51 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
// .eq(!(StringUtils.isBlank(reportUnit.getBasicUnitId()) && StringUtils.isBlank(reportUnit.getRegionalCompanyId())), AccidentReport::getProcessStatus, ProcessStatus.PASSED.getCode()).list();
// .eq(StringUtils.isBlank(reportUnit.getBasicUnitId()), AccidentReport::getProcessStatus, ProcessStatus.PASSED.getCode())
.eq(AccidentReport::getProcessStatus, ProcessStatus.PASSED.getCode())
.list();*/
Date
startDate
=
accidentStatisticsReq
.
getStartDate
();
Date
endDate
=
accidentStatisticsReq
.
getEndDate
();
// 统一处理时间边界(防止 DATE / DATETIME 问题)
Date
startTime
=
null
;
Date
endTime
=
null
;
if
(
startDate
!=
null
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
startDate
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
startTime
=
cal
.
getTime
();
}
if
(
endDate
!=
null
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
endDate
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
cal
.
add
(
Calendar
.
DAY_OF_MONTH
,
1
);
// 关键:+1 天
endTime
=
cal
.
getTime
();
}
List
<
AccidentReport
>
accidentReportList
=
this
.
lambdaQuery
()
.
eq
(
StringUtils
.
isNotBlank
(
accidentStatisticsReq
.
getBasicUnitId
()),
AccidentReport:
:
getBasicUnitId
,
accidentStatisticsReq
.
getBasicUnitId
())
.
eq
(
StringUtils
.
isNotBlank
(
accidentStatisticsReq
.
getRegionalCompanyId
()),
AccidentReport:
:
getRegionalCompanyId
,
accidentStatisticsReq
.
getRegionalCompanyId
())
.
ge
(
startTime
!=
null
,
AccidentReport:
:
getAccidentTime
,
startTime
)
.
lt
(
endTime
!=
null
,
AccidentReport:
:
getAccidentTime
,
endTime
)
.
eq
(
AccidentReport:
:
getProcessStatus
,
ProcessStatus
.
PASSED
.
getCode
())
.
list
();
AccidentStatisticsResp
accidentStatisticsResp
=
new
AccidentStatisticsResp
();
...
...
@@ -465,7 +510,21 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
pieByLevel
.
setName
(
item
.
getDictValue
());
//判断是否包含此类型id
long
count
=
accidentReportList
.
stream
().
filter
(
accidentReport
->
accidentReport
.
getAccidentType
().
contains
(
item
.
getDictKey
())).
count
();
//long count = accidentReportList.stream().filter(accidentReport -> accidentReport.getAccidentType().contains(item.getDictKey())).count();
long
count
=
accidentReportList
.
stream
()
.
filter
(
accidentReport
->
{
String
typeStr
=
accidentReport
.
getAccidentType
();
if
(
StringUtils
.
isBlank
(
typeStr
))
{
return
false
;
}
Set
<
String
>
typeSet
=
Arrays
.
stream
(
typeStr
.
split
(
","
))
.
map
(
String:
:
trim
)
.
collect
(
Collectors
.
toSet
());
return
typeSet
.
contains
(
item
.
getDictKey
());
})
.
count
();
//数量赋值
pieByLevel
.
setValue
((
int
)
count
);
...
...
@@ -819,7 +878,7 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
}
//todo 填充事故信息
accidentExports
=
Beans
.
listToBean
(
accidentReportList
,
AccidentExportVO
.
class
);
/*
accidentExports = Beans.listToBean(accidentReportList, AccidentExportVO.class);
List<AccidentPersonnelVO> finalAccidentPersonnelVOList = accidentPersonnelVOList;
...
...
@@ -867,9 +926,39 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
c.setFakeTypeName(EnumUtil.getByCode(a.getFakeType(), FakeType.class));
}
});
});
});*/
Map
<
String
,
List
<
AccidentPersonnelVO
>>
personnelMap
=
accidentPersonnelVOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
AccidentPersonnelVO:
:
getRefId
));
List
<
AccidentExportVO
>
result
=
new
ArrayList
<>();
for
(
AccidentReport
report
:
accidentReportList
)
{
List
<
AccidentPersonnelVO
>
persons
=
personnelMap
.
get
(
report
.
getId
());
// 没有人员,也要导出一行
if
(
CollectionUtils
.
isEmpty
(
persons
))
{
AccidentExportVO
vo
=
Beans
.
objectToBean
(
report
,
AccidentExportVO
.
class
);
fillBaseInfo
(
vo
,
report
);
result
.
add
(
vo
);
continue
;
}
// 有人员:一人一行
for
(
AccidentPersonnelVO
p
:
persons
)
{
AccidentExportVO
vo
=
Beans
.
objectToBean
(
report
,
AccidentExportVO
.
class
);
vo
.
setName
(
p
.
getUserName
());
vo
.
setAge
(
p
.
getAge
());
vo
.
setGender
(
p
.
getSexName
());
vo
.
setBelongTypeName
(
p
.
getBelongTypeName
());
fillBaseInfo
(
vo
,
report
);
result
.
add
(
vo
);
}
}
list
.
addAll
(
result
);
}
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
int
index
=
1
;
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
...
...
@@ -895,6 +984,41 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
}
private
void
fillBaseInfo
(
AccidentExportVO
c
,
AccidentReport
a
)
{
ReportUnitResp
reportUnitResp
=
JSONObject
.
parseObject
(
a
.
getReportUnit
(),
ReportUnitResp
.
class
);
c
.
setBasicUnitName
(
StringUtils
.
isNotBlank
(
a
.
getBasicUnitId
())
?
reportUnitResp
.
getBasicUnit
()
:
"/"
);
c
.
setRegionalCompanyName
(
StringUtils
.
isNotBlank
(
a
.
getRegionalCompanyId
())
?
reportUnitResp
.
getRegionalCompany
()
:
"/"
);
c
.
setDeptName
(
reportUnitResp
.
getPath
());
c
.
setAccidentTypeName
(
CacheDicUtils
.
getByKeys
(
DicTypeCode
.
ACCIDENT_TYPE
.
name
(),
a
.
getAccidentType
(),
","
));
c
.
setAccidentLevelName
(
CacheDicUtils
.
get
(
DicTypeCode
.
ACCIDENT_LEVEL
.
name
(),
a
.
getAccidentLevel
()));
c
.
setAccidentCause
(
CacheDicUtils
.
getByKeys
(
DicTypeCode
.
ACCIDENT_CAUSE
.
name
(),
a
.
getAccidentCause
(),
","
));
if
(
a
.
getAccidentTime
()
!=
null
)
{
Calendar
ca
=
Calendar
.
getInstance
();
ca
.
setTime
(
a
.
getAccidentTime
());
c
.
setReportTimeYear
(
ca
.
get
(
Calendar
.
YEAR
));
c
.
setReportTimeMonth
(
ca
.
get
(
Calendar
.
MONTH
)
+
1
);
c
.
setReportTimeDay
(
ca
.
get
(
Calendar
.
DAY_OF_MONTH
));
c
.
setReportTimeHour
(
ca
.
get
(
Calendar
.
HOUR_OF_DAY
));
}
c
.
setFakeTypeName
(
EnumUtil
.
getByCode
(
a
.
getFakeType
(),
FakeType
.
class
));
}
@Override
public
Page
<
AccidentReportDetail
>
selectAccidentReportDetail
(
ReportDetailParam
param
)
{
Long
page
=
...
...
@@ -926,39 +1050,52 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
private
QueryWrapper
<
AccidentReport
>
createQuery
(
AccidentReportQueryReq
queryParam
)
{
QueryWrapper
<
AccidentReport
>
queryWrapper
=
new
QueryWrapper
<>();
// Data Rule
// if (StringUtils.isNotEmpty(queryParam.getDataRuleCode())) {
// 数据权限
String
rule
=
sysRuleService
.
dataRuleScope
(
DefaultRule
.
DEPT_SUB
.
name
());
if
(
StringUtils
.
isNotEmpty
(
rule
))
{
queryWrapper
.
apply
(
rule
);
}
// }
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getDeptId
()))
{
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getDeptId
()))
{
queryWrapper
.
eq
(
AccidentReport
.
ORG_ID
,
queryParam
.
getDeptId
());
}
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
queryParam
.
getRegionalCompanyId
()))
{
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getRegionalCompanyId
()))
{
queryWrapper
.
eq
(
AccidentReport
.
REGIONAL_COMPANY_ID
,
queryParam
.
getRegionalCompanyId
());
}
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
queryParam
.
getBasicUnitId
())
||
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
queryParam
.
getOrgId
()))
{
queryWrapper
.
or
().
eq
(
AccidentReport
.
BASIC_UNIT_ID
,
queryParam
.
getBasicUnitId
()).
or
().
eq
(
AccidentReport
.
ORG_ID
,
queryParam
.
getOrgId
());
// ✅ 正确的 OR 分组
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getBasicUnitId
())
||
StringUtils
.
isNotBlank
(
queryParam
.
getOrgId
()))
{
queryWrapper
.
and
(
w
->
{
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getBasicUnitId
()))
{
w
.
eq
(
AccidentReport
.
BASIC_UNIT_ID
,
queryParam
.
getBasicUnitId
());
}
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getOrgId
()))
{
w
.
or
().
eq
(
AccidentReport
.
ORG_ID
,
queryParam
.
getOrgId
());
}
});
}
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
queryParam
.
getProcessStatus
()))
{
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getProcessStatus
()))
{
queryWrapper
.
eq
(
AccidentReport
.
PROCESS_STATUS
,
queryParam
.
getProcessStatus
());
}
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
queryParam
.
getAccidentLevel
()))
{
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getAccidentLevel
()))
{
queryWrapper
.
eq
(
AccidentReport
.
ACCIDENT_LEVEL
,
queryParam
.
getAccidentLevel
());
}
if
(
ObjectHelper
.
isNotEmpty
(
queryParam
.
getAccidentStartTime
()))
{
queryWrapper
.
ge
(
AccidentReport
.
ACCIDENT_TIME
,
queryParam
.
getAccidentStartTime
());
}
if
(
ObjectHelper
.
isNotEmpty
(
queryParam
.
getAccidentEndTime
()))
{
queryWrapper
.
le
(
AccidentReport
.
ACCIDENT_TIME
,
queryParam
.
getAccidentEndTime
());
}
/*if(ObjectHelper.isNotEmpty(queryParam.getThirdLevelUnitId())){
queryWrapper.eq(AccidentReport.THIRD_LEVEL_UNIT_ID, queryParam.getThirdLevelUnitId());
}*/
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
queryParam
.
getOrderBy
()))
{
if
(
StringHelper
.
isNotEmpty
(
queryParam
.
getOrderType
())
&&
BizConstants
.
ASC
.
equals
(
queryParam
.
getOrderType
()))
{
if
(
StringUtils
.
isNotBlank
(
queryParam
.
getOrderBy
()))
{
if
(
BizConstants
.
ASC
.
equals
(
queryParam
.
getOrderType
()))
{
queryWrapper
.
orderByAsc
(
queryParam
.
getOrderBy
());
}
else
{
queryWrapper
.
orderByDesc
(
queryParam
.
getOrderBy
());
...
...
@@ -966,9 +1103,11 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
}
else
{
queryWrapper
.
orderByDesc
(
AccidentReport
.
UPDATE_DATE
);
}
return
queryWrapper
;
}
}
zlmy-modules/zlmy-boot/src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
View file @
1a2c9d92
...
...
@@ -477,104 +477,169 @@
ORDER BY region.org_name, bd.org_name, so.org_name, problemCount DESC
</select>
<select
id=
"comprehensiveStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
<select
id=
"comprehensiveStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
SELECT
region.org_name AS regionName,
bd.org_name AS businessDeptName,
so.org_name AS currentOrgName,
so.is_rent AS isRent,
bd.org_name
AS businessDeptName,
so.org_name
AS currentOrgName,
so.is_rent
AS isRent,
-- 企业
/相关方
合规率
-- 企业合规率
ROUND(
(SUM(CASE WHEN so.is_rent
=
'0' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent
='0' AND hwpc.is_compliant='0'
THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent
='0' THEN 1 ELSE 0 END), 0), 2
) AS enterpriseComplianceRate,
(SUM(CASE WHEN so.is_rent
=
'0' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent
= '0' AND hwpc.has_uncompliant = 1
THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent
= '0' THEN 1 ELSE 0 END), 0),
2
) AS enterpriseComplianceRate,
-- 相关方合规率
ROUND(
(SUM(CASE WHEN so.is_rent
=
'1' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent
='1' AND hwpc.is_compliant='0'
THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent
='1' THEN 1 ELSE 0 END), 0), 2
) AS relatedPartyComplianceRate,
(SUM(CASE WHEN so.is_rent
=
'1' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent
= '1' AND hwpc.has_uncompliant = 1
THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent
= '1' THEN 1 ELSE 0 END), 0),
2
) AS relatedPartyComplianceRate,
--
等级合规率
--
高风险
ROUND(
(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END), 0), 2
) AS complianceRateHigh,
(SUM(CASE WHEN hwpl.work_level = '27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level = '27a3fcef809f4a5f9f138bd83b88eebc'
AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(
SUM(CASE WHEN hwpl.work_level = '27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END), 0),
2) AS complianceRateHigh,
-- 重大风险
ROUND(
(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END), 0), 2
) AS complianceRateMajor,
(SUM(CASE WHEN hwpl.work_level = 'bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level = 'bbc120baa7474f5182dcf65b427deaf8'
AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(
SUM(CASE WHEN hwpl.work_level = 'bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END), 0),
2) AS complianceRateMajor,
-- 一般风险
ROUND(
(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END), 0), 2
) AS complianceRateNormal
(SUM(CASE WHEN hwpl.work_level = '81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level = '81bbc09df7b941fd8851af1b4d25d309'
AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(
SUM(CASE WHEN hwpl.work_level = '81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END), 0),
2) AS complianceRateNormal
FROM t_hazard_work_plan hwpl
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id AND (hwpc.status='0' OR hwpc.status IS NULL)
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
-- ✅ 关键:检查表先按 plan_id 聚合
LEFT JOIN (
SELECT
plan_id,
MAX(CASE WHEN is_compliant = '0' THEN 1 ELSE 0 END) AS has_uncompliant
FROM t_hazard_work_plan_check
WHERE status = '0' OR status IS NULL
GROUP BY plan_id
) hwpc ON hwpc.plan_id = hwpl.id
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
WHERE hwpl.status='0'
WHERE hwpl.status = '0'
AND hwpl.org_id IN (
SELECT org_id FROM t_sys_org
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 != ''"
>
<if
test=
"param.startTime != null and param.startTime != ''
and param.endTime != null and param.endTime != ''"
>
AND hwpl.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
GROUP BY region.org_name, bd.org_name, so.org_name, so.is_rent
ORDER BY region.org_name, bd.org_name, so.org_name
GROUP BY
region.org_name,
bd.org_name,
so.org_name,
so.is_rent
ORDER BY
region.org_name,
bd.org_name,
so.org_name
</select>
<select
id=
"isRentSpotCheckStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
SELECT
region.org_name AS regionName,
bd.org_name AS businessDeptName,
so.org_name AS currentOrgName,
-- 企业/相关方抽查率
ROUND(SUM(CASE WHEN so.is_rent='0' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END),2), 2) AS enterpriseCheckRate,
-- 企业/相关方抽查率 = 已抽查次数 ÷ 作业总数
ROUND(
SUM(CASE WHEN so.is_rent='0' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END),0), 2
) AS enterpriseCheckRate,
ROUND(SUM(CASE WHEN so.is_rent='1' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END),2), 2) AS relatedPartySpotCheckRate,
ROUND(
SUM(CASE WHEN so.is_rent='1' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END),0), 2
) AS relatedPartySpotCheckRate,
-- 等级抽查率
ROUND(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END),0),2) AS spotCheckRateHigh,
ROUND(
SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END),0), 2
) AS spotCheckRateHigh,
ROUND(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END),0),2) AS spotCheckRateMajor,
ROUND(
SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END),0), 2
) AS spotCheckRateMajor,
ROUND(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END),0),2) AS spotCheckRateNormal
ROUND(
SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END),0), 2
) AS spotCheckRateNormal
FROM t_hazard_work_plan hwpl
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id AND hwpc.status='0'
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
-- 统计每条作业的抽查次数
LEFT JOIN (
SELECT plan_id, COUNT(*) AS checked_count
FROM t_hazard_work_plan_check
WHERE status = '0'
GROUP BY plan_id
) hwpc ON hwpc.plan_id = hwpl.id
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
WHERE hwpl.status='0'
WHERE hwpl.status = '0'
AND hwpl.org_id IN (
SELECT org_id FROM t_sys_org
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 != ''"
>
<if
test=
"param.startTime != null and param.startTime != ''
and param.endTime != null and param.endTime != ''"
>
AND hwpl.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
GROUP BY region.org_name, bd.org_name, so.org_name
ORDER BY region.org_name, bd.org_name, so.org_name
GROUP BY
region.org_name,
bd.org_name,
so.org_name
ORDER BY
region.org_name,
bd.org_name,
so.org_name
</select>
...
...
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