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
fa871ca2
Commit
fa871ca2
authored
Jan 15, 2026
by
鲁鸿波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
监督检查企业合规率详表开发
parent
e082728b
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
434 additions
and
201 deletions
+434
-201
AccidentReportController.java
.../module/accident/controller/AccidentReportController.java
+1
-21
THazardWorkPlanCheckStatisticsController.java
.../controller/THazardWorkPlanCheckStatisticsController.java
+39
-0
THazardWorkPlanCheckDao.java
...com/testor/module/hazard/dao/THazardWorkPlanCheckDao.java
+4
-16
HazardWorkPlanCheckDetailResult.java
...ule/hazard/model/dto/HazardWorkPlanCheckDetailResult.java
+1
-1
HazardWorkPlanStatisticsExportTemplate.java
...odel/template/HazardWorkPlanStatisticsExportTemplate.java
+122
-0
HazardWorkPlanCheckDetail.java
...tor/module/hazard/model/vo/HazardWorkPlanCheckDetail.java
+32
-27
THazardWorkPlanCheckService.java
...or/module/hazard/service/THazardWorkPlanCheckService.java
+3
-10
HazardWorkPlanStatisticsServiceImpl.java
...ard/service/impl/HazardWorkPlanStatisticsServiceImpl.java
+7
-0
THazardWorkPlanCheckServiceImpl.java
.../hazard/service/impl/THazardWorkPlanCheckServiceImpl.java
+153
-17
THazardWorkPlanCheck.xml
...src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
+72
-109
No files found.
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/accident/controller/AccidentReportController.java
View file @
fa871ca2
...
@@ -320,26 +320,6 @@ public class AccidentReportController extends SuperController {
...
@@ -320,26 +320,6 @@ public class AccidentReportController extends SuperController {
return
baseResponse
;
return
baseResponse
;
}
}
/*@ApiOperation(value = "导出事故信息详情明细", notes = "导出事故信息详情明细")
@GetMapping(value = "/accidentReportDetailExport")
public BaseResponse<BizGeneralResponse> export(HttpServletResponse response, ReportDetailParam reportDetailParam){
BaseResponse<BizGeneralResponse> baseResponse=new BaseResponse<>();
Page<AccidentReportDetail> accidentReportDetailPage = accidentReportService.selectAccidentReportDetail(reportDetailParam);
if (org.apache.commons.collections4.CollectionUtils.isEmpty(accidentReportDetailPage.getRecords())) {
baseResponse.setData(BizGeneralResponse.builder().result("无事故信息详情明细数据").build());
return baseResponse;
}
List<AccidentReportDetailTemplate> accidentReportDetailTemplate = BeanConverUtil.converList(accidentReportDetailPage.getRecords(), AccidentReportDetailTemplate.class);
int index = 1;
for(AccidentReportDetailTemplate template : accidentReportDetailTemplate){
template.setNumber(String.valueOf(index++));
}
EasyExcelUtil.writeExcel(response, "事故信息详情明细", "事故信息详情明细", accidentReportDetailTemplate);
baseResponse.setData(
BizGeneralResponse.builder().result(TypeHelper.castToString(true)).build());
return baseResponse;
}*/
@ApiOperation
(
value
=
"导出事故信息详情明细"
,
notes
=
"导出事故信息详情明细"
)
@ApiOperation
(
value
=
"导出事故信息详情明细"
,
notes
=
"导出事故信息详情明细"
)
@GetMapping
(
value
=
"/accidentReportDetailExport"
)
@GetMapping
(
value
=
"/accidentReportDetailExport"
)
public
BaseResponse
<
BizGeneralResponse
>
export
(
HttpServletResponse
response
,
ReportDetailParam
reportDetailParam
)
{
public
BaseResponse
<
BizGeneralResponse
>
export
(
HttpServletResponse
response
,
ReportDetailParam
reportDetailParam
)
{
...
@@ -353,7 +333,7 @@ public class AccidentReportController extends SuperController {
...
@@ -353,7 +333,7 @@ public class AccidentReportController extends SuperController {
}
}
// 使用扩展的转换工具
// 使用扩展的转换工具
BeanConverExtensionUtil
.
converAccidentReportDetailList
(
accidentReportDetailPage
.
getRecords
())
List
<
AccidentReportDetailTemplate
>
accidentReportDetailTemplate
=
BeanConverExtensionUtil
.
converAccidentReportDetailList
(
accidentReportDetailPage
.
getRecords
());
// 设置序号
// 设置序号
for
(
int
i
=
0
;
i
<
accidentReportDetailTemplate
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
accidentReportDetailTemplate
.
size
();
i
++)
{
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/controller/THazardWorkPlanCheckStatisticsController.java
View file @
fa871ca2
...
@@ -2,8 +2,10 @@ package com.testor.module.hazard.controller;
...
@@ -2,8 +2,10 @@ package com.testor.module.hazard.controller;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.common.util.excel.EasyExcelUtil
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.*
;
import
com.testor.module.hazard.model.dto.*
;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsExportTemplate
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemTypeStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemTypeStatisticsVO
;
...
@@ -12,6 +14,7 @@ import com.tongtech.tfw.backend.common.biz.constants.BizConstants;
...
@@ -12,6 +14,7 @@ import com.tongtech.tfw.backend.common.biz.constants.BizConstants;
import
com.tongtech.tfw.backend.common.biz.models.BaseResponse
;
import
com.tongtech.tfw.backend.common.biz.models.BaseResponse
;
import
com.tongtech.tfw.backend.common.biz.models.BaseResponseList
;
import
com.tongtech.tfw.backend.common.biz.models.BaseResponseList
;
import
com.tongtech.tfw.backend.common.biz.models.BizGeneralResponse
;
import
com.tongtech.tfw.backend.common.biz.models.BizGeneralResponse
;
import
com.tongtech.tfw.backend.common.context.ContextUtils
;
import
com.tongtech.tfw.backend.common.models.supers.SuperController
;
import
com.tongtech.tfw.backend.common.models.supers.SuperController
;
import
com.tongtech.tfw.backend.core.helper.ObjectHelper
;
import
com.tongtech.tfw.backend.core.helper.ObjectHelper
;
import
com.tongtech.tfw.backend.core.helper.StringHelper
;
import
com.tongtech.tfw.backend.core.helper.StringHelper
;
...
@@ -87,7 +90,43 @@ public class THazardWorkPlanCheckStatisticsController extends SuperController
...
@@ -87,7 +90,43 @@ public class THazardWorkPlanCheckStatisticsController extends SuperController
return
baseResponse
;
return
baseResponse
;
}
}
@ApiOperation
(
value
=
"企业合规率详表"
)
@GetMapping
(
value
=
"/detailsOfHazardousOperations"
)
public
BaseResponse
<
BaseResponseList
<
HazardWorkPlanCheckDetailResult
>>
detailsOfHazardousOperations
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
){
BaseResponse
<
BaseResponseList
<
HazardWorkPlanCheckDetailResult
>>
baseResponse
=
new
BaseResponse
<>();
if
(
StringHelper
.
isEmpty
(
tHazardWorkPlanCheckParam
.
getOrgId
())){
tHazardWorkPlanCheckParam
.
setOrgId
(
ContextUtils
.
getLoginUser
().
getOrgId
());
}
Page
<
HazardWorkPlanCheckDetailResult
>
resultList
=
tHazardWorkPlanCheckService
.
detailsOfHazardousOperations
(
tHazardWorkPlanCheckParam
);
BaseResponseList
<
HazardWorkPlanCheckDetailResult
>
baseResponseList
=
new
BaseResponseList
<>();
baseResponseList
.
setData
(
resultList
.
getRecords
());
baseResponseList
.
setTotal
(
resultList
.
getTotal
());
baseResponse
.
setData
(
baseResponseList
);
return
baseResponse
;
}
@GetMapping
(
"/exportHazardStatistics"
)
@ApiOperation
(
value
=
"导出企业合规率详表"
)
public
void
exportHazardStatistics
(
HttpServletResponse
response
,
THazardWorkPlanCheckParam
param
)
{
// 设置不分页(获取所有数据)
param
.
setPage
(
String
.
valueOf
(
1
));
param
.
setLimit
(
String
.
valueOf
(
Integer
.
MAX_VALUE
));
if
(
StringHelper
.
isEmpty
(
param
.
getOrgId
())){
param
.
setOrgId
(
ContextUtils
.
getLoginUser
().
getOrgId
());
}
List
<
HazardWorkPlanCheckDetailResult
>
results
=
tHazardWorkPlanCheckService
.
detailsOfHazardousOperations
(
param
).
getRecords
();
List
<
HazardWorkPlanStatisticsExportTemplate
>
templates
=
new
ArrayList
<>();
int
index
=
1
;
for
(
HazardWorkPlanCheckDetailResult
r
:
results
)
{
templates
.
add
(
HazardWorkPlanStatisticsExportTemplate
.
fromResult
(
r
,
index
++));
}
EasyExcelUtil
.
writeExcel
(
response
,
"企业合规率详表明细"
,
"企业合规率详表明细"
,
templates
);
}
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/dao/THazardWorkPlanCheckDao.java
View file @
fa871ca2
...
@@ -137,32 +137,20 @@ public interface THazardWorkPlanCheckDao extends SuperDao<THazardWorkPlanCheck>
...
@@ -137,32 +137,20 @@ public interface THazardWorkPlanCheckDao extends SuperDao<THazardWorkPlanCheck>
List
<
HazardWorkPlanCheckDetail
>
workStatusStatistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
List
<
HazardWorkPlanCheckDetail
>
workStatusStatistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
/**
* 企业合规率详情之
组织机构类型抽查率/合规率 统计
* 企业合规率详情之
统计合规率
* @param tHazardWorkPlanCheckParam
* @param tHazardWorkPlanCheckParam
* @return
* @return
*/
*/
List
<
HazardWorkPlanCheckDetail
>
isRentSpotCheck
Statistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
List
<
HazardWorkPlanCheckDetail
>
comprehensive
Statistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
/**
* 企业合规率详情之
组织机构类型抽查率/合规率 统计
* 企业合规率详情之
统计抽查率
* @param tHazardWorkPlanCheckParam
* @param tHazardWorkPlanCheckParam
* @return
* @return
*/
*/
List
<
HazardWorkPlanCheckDetail
>
comprehensive
Statistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
List
<
HazardWorkPlanCheckDetail
>
isRentSpotCheck
Statistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 企业合规率详情之作业级别合规率统计
* @param tHazardWorkPlanCheckParam
* @return
*//*
List<HazardWorkPlanCheckDetail> complianceRateStatistics(@Param("param") THazardWorkPlanCheckParam tHazardWorkPlanCheckParam);
*//**
* 企业合规率详情之组织机构类型合规率统计
* @param tHazardWorkPlanCheckParam
* @return
*//*
List<HazardWorkPlanCheckDetail> isRentComplianceRateStatistics(@Param("param") THazardWorkPlanCheckParam tHazardWorkPlanCheckParam);*/
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanCheckDetailResult.java
View file @
fa871ca2
...
@@ -24,6 +24,6 @@ public class HazardWorkPlanCheckDetailResult {
...
@@ -24,6 +24,6 @@ public class HazardWorkPlanCheckDetailResult {
private
Map
<
String
,
Double
>
spotCheckRateStats
;
private
Map
<
String
,
Double
>
spotCheckRateStats
;
@ApiModelProperty
(
"危险作业状态"
)
@ApiModelProperty
(
"危险作业状态"
)
private
Map
<
String
,
Integer
>
workStatusStats
;
// 作业状态统计
private
Map
<
String
,
Integer
>
workStatusStats
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/template/HazardWorkPlanStatisticsExportTemplate.java
0 → 100644
View file @
fa871ca2
package
com
.
testor
.
module
.
hazard
.
model
.
template
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckDetailResult
;
import
lombok.Data
;
import
java.util.Map
;
@Data
public
class
HazardWorkPlanStatisticsExportTemplate
{
@ExcelProperty
(
"序号"
)
private
String
number
;
@ExcelProperty
(
"大区"
)
private
String
regionName
;
@ExcelProperty
(
"经营部"
)
private
String
businessDeptName
;
@ExcelProperty
(
"企业名称"
)
private
String
currentOrgName
;
// ========== 合规率 ==========
@ExcelProperty
(
"全部作业合规率(%)"
)
private
Double
allComplianceRate
;
@ExcelProperty
(
"企业作业合规率(%)"
)
private
Double
enterpriseComplianceRate
;
@ExcelProperty
(
"相关方作业合规率(%)"
)
private
Double
relatedPartyComplianceRate
;
@ExcelProperty
(
"高度作业合规率(%)"
)
private
Double
highComplianceRate
;
@ExcelProperty
(
"较大作业合规率(%)"
)
private
Double
majorComplianceRate
;
@ExcelProperty
(
"一般作业合规率(%)"
)
private
Double
normalComplianceRate
;
// ========== 抽查率 ==========
@ExcelProperty
(
"企业作业抽查率(%)"
)
private
Double
enterpriseCheckRate
;
@ExcelProperty
(
"相关方作业抽查率(%)"
)
private
Double
relatedPartyCheckRate
;
@ExcelProperty
(
"高度作业抽查率(%)"
)
private
Double
highSpotCheckRate
;
@ExcelProperty
(
"较大作业抽查率(%)"
)
private
Double
majorSpotCheckRate
;
@ExcelProperty
(
"一般作业抽查率(%)"
)
private
Double
normalSpotCheckRate
;
// ========== 危险作业状态 ==========
@ExcelProperty
(
"五必须"
)
private
Integer
fiveMust
;
@ExcelProperty
(
"信息真实性"
)
private
Integer
informationTruth
;
@ExcelProperty
(
"违章作业"
)
private
Integer
illegalOperation
;
@ExcelProperty
(
"劳动组织"
)
private
Integer
laborOrganization
;
@ExcelProperty
(
"风险管理"
)
private
Integer
riskManagement
;
@ExcelProperty
(
"提级管理"
)
private
Integer
escalationManagement
;
@ExcelProperty
(
"变更管理"
)
private
Integer
changeManagement
;
@ExcelProperty
(
"其他"
)
private
Integer
otherStatus
;
/**
* 从 HazardWorkPlanCheckDetailResult 填充模板
*/
public
static
HazardWorkPlanStatisticsExportTemplate
fromResult
(
HazardWorkPlanCheckDetailResult
result
,
int
index
)
{
HazardWorkPlanStatisticsExportTemplate
template
=
new
HazardWorkPlanStatisticsExportTemplate
();
template
.
setNumber
(
String
.
valueOf
(
index
));
template
.
setRegionName
(
result
.
getRegionName
());
template
.
setBusinessDeptName
(
result
.
getBusinessDeptName
());
template
.
setCurrentOrgName
(
result
.
getCurrentOrgName
());
Map
<
String
,
Double
>
compliance
=
result
.
getComplianceRateStats
();
template
.
setAllComplianceRate
(
compliance
.
getOrDefault
(
"全部作业"
,
0
D
));
template
.
setEnterpriseComplianceRate
(
compliance
.
getOrDefault
(
"企业作业"
,
0
D
));
template
.
setRelatedPartyComplianceRate
(
compliance
.
getOrDefault
(
"相关方作业"
,
0
D
));
template
.
setHighComplianceRate
(
compliance
.
getOrDefault
(
"高度作业"
,
0
D
));
template
.
setMajorComplianceRate
(
compliance
.
getOrDefault
(
"较大作业"
,
0
D
));
template
.
setNormalComplianceRate
(
compliance
.
getOrDefault
(
"一般作业"
,
0
D
));
Map
<
String
,
Double
>
spotCheck
=
result
.
getSpotCheckRateStats
();
template
.
setEnterpriseCheckRate
(
spotCheck
.
getOrDefault
(
"企业作业"
,
0
D
));
template
.
setRelatedPartyCheckRate
(
spotCheck
.
getOrDefault
(
"相关方作业"
,
0
D
));
template
.
setHighSpotCheckRate
(
spotCheck
.
getOrDefault
(
"高度作业"
,
0
D
));
template
.
setMajorSpotCheckRate
(
spotCheck
.
getOrDefault
(
"较大作业"
,
0
D
));
template
.
setNormalSpotCheckRate
(
spotCheck
.
getOrDefault
(
"一般作业"
,
0
D
));
Map
<
String
,
Integer
>
status
=
result
.
getWorkStatusStats
();
template
.
setFiveMust
(
status
.
getOrDefault
(
"五必须"
,
0
));
template
.
setInformationTruth
(
status
.
getOrDefault
(
"信息真实性"
,
0
));
template
.
setIllegalOperation
(
status
.
getOrDefault
(
"违章作业"
,
0
));
template
.
setLaborOrganization
(
status
.
getOrDefault
(
"劳动组织"
,
0
));
template
.
setRiskManagement
(
status
.
getOrDefault
(
"风险管理"
,
0
));
template
.
setEscalationManagement
(
status
.
getOrDefault
(
"提级管理"
,
0
));
template
.
setChangeManagement
(
status
.
getOrDefault
(
"变更管理"
,
0
));
template
.
setOtherStatus
(
status
.
getOrDefault
(
"其他"
,
0
));
return
template
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/vo/HazardWorkPlanCheckDetail.java
View file @
fa871ca2
...
@@ -6,50 +6,55 @@ import lombok.Data;
...
@@ -6,50 +6,55 @@ import lombok.Data;
@Data
@Data
public
class
HazardWorkPlanCheckDetail
{
public
class
HazardWorkPlanCheckDetail
{
@ApiModelProperty
(
value
=
"大区名称"
)
@ApiModelProperty
(
"大区名称"
)
private
String
regionName
;
private
String
regionName
;
@ApiModelProperty
(
value
=
"经营部
"
)
@ApiModelProperty
(
"经营部名称
"
)
private
String
businessDeptName
;
private
String
businessDeptName
;
@ApiModelProperty
(
value
=
"企业名称"
)
@ApiModelProperty
(
"企业名称"
)
private
String
currentOrgName
;
private
String
currentOrgName
;
@ApiModelProperty
(
value
=
"合规率之全部作业比例"
)
// ---------------- 合规率 ----------------
private
String
totalProblemCount
;
@ApiModelProperty
(
"企业作业合规率"
)
private
Double
enterpriseComplianceRate
;
@ApiModelProperty
(
value
=
"企业性质(企业/相关方)
"
)
@ApiModelProperty
(
"相关方作业合规率
"
)
private
String
orgTypeNam
e
;
private
Double
relatedPartyComplianceRat
e
;
@ApiModelProperty
(
value
=
"合规率之企业作业比例
"
)
@ApiModelProperty
(
"高度危险作业合规率
"
)
private
String
enterpriseComplianceRate
;
private
Double
complianceRateHigh
;
@ApiModelProperty
(
value
=
"合规率之相关方作业比例
"
)
@ApiModelProperty
(
"较大危险作业合规率
"
)
private
String
relatedPartyComplianceRate
;
private
Double
complianceRateMajor
;
@ApiModelProperty
(
value
=
"作业级别名称
"
)
@ApiModelProperty
(
"一般危险作业合规率
"
)
private
String
workLevelNameComplianceRate
;
private
Double
complianceRateNormal
;
@ApiModelProperty
(
value
=
"合规率作业级别比例"
)
// ---------------- 抽查率 ----------------
private
String
workLevelComplianceRate
;
@ApiModelProperty
(
"企业作业抽查率"
)
private
Double
enterpriseCheckRate
;
@ApiModelProperty
(
value
=
"抽查率作业级别比例
"
)
@ApiModelProperty
(
"相关方作业抽查率
"
)
private
String
workLevel
CheckRate
;
private
Double
relatedPartySpot
CheckRate
;
@ApiModelProperty
(
value
=
"危险作业状态之问题名称"
)
@ApiModelProperty
(
"高度危险作业抽查率"
)
private
String
problemName
;
private
Double
spotCheckRateHigh
;
@ApiModelProperty
(
value
=
"危险作业状态之问题数量"
)
private
Integer
problemCount
;
@ApiModelProperty
(
value
=
"抽查率之企业作业比例"
)
@ApiModelProperty
(
"较大危险作业抽查率"
)
private
String
enterpriseCheckRate
;
private
Double
spotCheckRateMajor
;
@ApiModelProperty
(
value
=
"抽查率之相关方作业比例"
)
private
String
relatedPartySpotCheckRate
;
@ApiModelProperty
(
"一般危险作业抽查率"
)
private
Double
spotCheckRateNormal
;
// ---------------- 危险作业状态 ----------------
@ApiModelProperty
(
"问题名称"
)
private
String
problemName
;
@ApiModelProperty
(
"问题数量"
)
private
Integer
problemCount
;
@ApiModelProperty
(
"是否租户(0:否,1:是)"
)
private
String
isRent
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/THazardWorkPlanCheckService.java
View file @
fa871ca2
package
com
.
testor
.
module
.
hazard
.
service
;
package
com
.
testor
.
module
.
hazard
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.module.hazard.model.domain.THazardWorkPlan
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckEnterpriseComplianceDto
;
import
com.testor.module.hazard.model.dto.*
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO
;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsTemplate
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanCheckParam
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemTypeStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemTypeStatisticsVO
;
import
com.testor.module.safe.model.dto.TSafeHazardOrgParam
;
import
com.tongtech.tfw.backend.common.models.supers.SuperService
;
import
com.tongtech.tfw.backend.common.models.supers.SuperService
;
import
org.apache.ibatis.annotations.Param
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
import
java.util.List
;
...
@@ -139,7 +133,6 @@ public interface THazardWorkPlanCheckService extends SuperService<THazardWorkPla
...
@@ -139,7 +133,6 @@ public interface THazardWorkPlanCheckService extends SuperService<THazardWorkPla
* @param tHazardWorkPlanCheckParam
* @param tHazardWorkPlanCheckParam
* @return
* @return
*/
*/
Page
<
HazardWorkPlanCheckDetail
>
detailsOfHazardousOperations
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
Page
<
HazardWorkPlanCheckDetailResult
>
detailsOfHazardousOperations
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/HazardWorkPlanStatisticsServiceImpl.java
View file @
fa871ca2
...
@@ -3,6 +3,7 @@ package com.testor.module.hazard.service.impl;
...
@@ -3,6 +3,7 @@ package com.testor.module.hazard.service.impl;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.biz.sys.dict.data.dao.SysDictDataDao
;
import
com.testor.biz.sys.dict.data.dao.SysDictDataDao
;
import
com.testor.biz.sys.dict.data.service.SysDictDataService
;
import
com.testor.biz.sys.dict.data.service.SysDictDataService
;
import
com.testor.biz.sys.user.model.domain.SysUser
;
import
com.testor.common.core.utils.StringUtils
;
import
com.testor.common.core.utils.StringUtils
;
import
com.testor.module.hazard.dao.HazardWorkPlanStatisticsDao
;
import
com.testor.module.hazard.dao.HazardWorkPlanStatisticsDao
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsDto
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsDto
;
...
@@ -12,7 +13,9 @@ import com.testor.module.hazard.model.dto.THazardWorkPlanStatistics;
...
@@ -12,7 +13,9 @@ import com.testor.module.hazard.model.dto.THazardWorkPlanStatistics;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsTemplate
;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsTemplate
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanStatisticsVO
;
import
com.testor.module.hazard.service.HazardWorkPlanStatisticsService
;
import
com.testor.module.hazard.service.HazardWorkPlanStatisticsService
;
import
com.testor.module.iam.service.SysUserService
;
import
com.testor.module.sys.service.NewSysDictDataService
;
import
com.testor.module.sys.service.NewSysDictDataService
;
import
com.testor.module.sys.service.TSysUserService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -27,6 +30,9 @@ public class HazardWorkPlanStatisticsServiceImpl implements HazardWorkPlanStatis
...
@@ -27,6 +30,9 @@ public class HazardWorkPlanStatisticsServiceImpl implements HazardWorkPlanStatis
@Autowired
@Autowired
private
NewSysDictDataService
dictDataService
;
private
NewSysDictDataService
dictDataService
;
@Autowired
private
SysUserService
userService
;
/**
/**
* 危险作业分布统计,根据单位
* 危险作业分布统计,根据单位
*
*
...
@@ -89,6 +95,7 @@ public class HazardWorkPlanStatisticsServiceImpl implements HazardWorkPlanStatis
...
@@ -89,6 +95,7 @@ public class HazardWorkPlanStatisticsServiceImpl implements HazardWorkPlanStatis
@Override
@Override
public
Page
<
HazardWorkPlanStatisticsResult
>
selectWorkStatusDetailStatistics
(
HazardWorkPlanStatisticsDto
query
)
{
public
Page
<
HazardWorkPlanStatisticsResult
>
selectWorkStatusDetailStatistics
(
HazardWorkPlanStatisticsDto
query
)
{
// 0. 获取所有字典值
// 0. 获取所有字典值
Map
<
String
,
List
<
String
>>
allDictValues
=
getAllDictValues
();
Map
<
String
,
List
<
String
>>
allDictValues
=
getAllDictValues
();
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/THazardWorkPlanCheckServiceImpl.java
View file @
fa871ca2
package
com
.
testor
.
module
.
hazard
.
service
.
impl
;
package
com
.
testor
.
module
.
hazard
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.EasyExcelFactory
;
import
com.alibaba.excel.EasyExcelFactory
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.ExcelWriter
;
...
@@ -11,30 +10,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...
@@ -11,30 +10,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.biz.sys.dict.data.model.domain.SysDictData
;
import
com.testor.biz.sys.dict.data.model.domain.SysDictData
;
import
com.testor.biz.sys.dict.data.service.SysDictDataService
;
import
com.testor.biz.sys.org.model.domain.SysOrg
;
import
com.testor.biz.sys.org.model.domain.SysOrg
;
import
com.testor.biz.sys.org.service.SysOrgService
;
import
com.testor.biz.sys.org.service.SysOrgService
;
import
com.testor.biz.sys.user.model.domain.SysUser
;
import
com.testor.biz.sys.user.model.domain.SysUser
;
import
com.testor.module.emergency.model.vo.TContingencyPlanVO
;
import
com.testor.module.hazard.dao.THazardWorkPlanCheckDao
;
import
com.testor.module.hazard.dao.THazardWorkPlanCheckDao
;
import
com.testor.module.hazard.model.domain.THazardWorkPlan
;
import
com.testor.module.hazard.model.domain.THazardWorkPlan
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckEnterpriseComplianceDto
;
import
com.testor.module.hazard.model.dto.*
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO
;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsTemplate
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanCheckParam
;
import
com.testor.module.hazard.model.vo.*
;
import
com.testor.module.hazard.model.vo.*
;
import
com.testor.module.hazard.service.THazardWorkPlanCheckService
;
import
com.testor.module.hazard.service.THazardWorkPlanCheckService
;
import
com.testor.module.iam.service.SysUserService
;
import
com.testor.module.iam.service.SysUserService
;
import
com.testor.module.notice.dao.TSysOrgDao
;
import
com.testor.module.notice.dao.TSysOrgDao
;
import
com.testor.module.notice.model.domain.TSysOrg
;
import
com.testor.module.notice.model.domain.TSysOrg
;
import
com.testor.module.safe.model.domain.TSafeHazardOrg
;
import
com.testor.module.safe.model.vo.TSafeHazardExportVO
;
import
com.testor.module.safe.model.vo.TSafeHazardOrgStatisticsVO
;
import
com.testor.module.safe.service.impl.TSafeHazardOrgServiceImpl
;
import
com.testor.module.safe.service.impl.TSafeHazardOrgServiceImpl
;
import
com.testor.module.sys.dao.NewSysOrgDao
;
import
com.testor.module.sys.dao.NewSysOrgDao
;
import
com.testor.module.sys.model.domian.NewSysOrg
;
import
com.testor.module.sys.service.NewSysDictDataService
;
import
com.testor.module.sys.service.NewSysDictDataService
;
import
com.testor.module.sys.service.NewSysOrgService
;
import
com.tongtech.tfw.backend.common.biz.constants.BizConstants
;
import
com.tongtech.tfw.backend.common.biz.constants.BizConstants
;
import
com.tongtech.tfw.backend.common.context.ContextUtils
;
import
com.tongtech.tfw.backend.common.context.ContextUtils
;
import
com.tongtech.tfw.backend.core.helper.IdHelper
;
import
com.tongtech.tfw.backend.core.helper.IdHelper
;
...
@@ -53,10 +44,7 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -53,10 +44,7 @@ import javax.servlet.http.HttpServletResponse;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -89,6 +77,19 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
...
@@ -89,6 +77,19 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
@Autowired
@Autowired
private
NewSysOrgDao
newSysOrgDao
;
private
NewSysOrgDao
newSysOrgDao
;
// 业务字典
private
static
final
List
<
String
>
COMPLIANCE_KEYS
=
Arrays
.
asList
(
"全部作业"
,
"企业作业"
,
"相关方作业"
,
"高度作业"
,
"较大作业"
,
"一般作业"
);
private
static
final
List
<
String
>
SPOTCHECK_KEYS
=
Arrays
.
asList
(
"企业作业"
,
"相关方作业"
,
"高度作业"
,
"较大作业"
,
"一般作业"
);
private
static
final
List
<
String
>
WORKSTATUS_KEYS
=
Arrays
.
asList
(
"五必须"
,
"信息真实性"
,
"违章作业"
,
"劳动组织"
,
"风险管理"
,
"提级管理"
,
"变更管理"
,
"其他"
);
@Override
@Override
public
Page
<
THazardWorkPlanCheck
>
selectTHazardWorkPlanCheckList
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
public
Page
<
THazardWorkPlanCheck
>
selectTHazardWorkPlanCheckList
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
...
@@ -404,10 +405,145 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
...
@@ -404,10 +405,145 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
}
}
@Override
@Override
public
Page
<
HazardWorkPlanCheckDetail
>
detailsOfHazardousOperations
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
public
Page
<
HazardWorkPlanCheckDetailResult
>
detailsOfHazardousOperations
(
THazardWorkPlanCheckParam
param
)
{
return
null
;
// 1️⃣ 查询三类统计数据(不分页)
List
<
HazardWorkPlanCheckDetail
>
complianceList
=
baseMapper
.
comprehensiveStatistics
(
param
);
List
<
HazardWorkPlanCheckDetail
>
spotCheckList
=
baseMapper
.
isRentSpotCheckStatistics
(
param
);
List
<
HazardWorkPlanCheckDetail
>
workStatusList
=
baseMapper
.
workStatusStatistics
(
param
);
// 2️⃣ 聚合为 Map(唯一 Key:大区|经营部|企业)
Map
<
String
,
HazardWorkPlanCheckDetailResult
>
resultMap
=
new
LinkedHashMap
<>();
buildComplianceStats
(
complianceList
,
resultMap
);
buildSpotCheckStats
(
spotCheckList
,
resultMap
);
buildWorkStatusStats
(
workStatusList
,
resultMap
,
WORKSTATUS_KEYS
);
// 3️⃣ Map → List
List
<
HazardWorkPlanCheckDetailResult
>
allRecords
=
new
ArrayList
<>(
resultMap
.
values
());
// 4️⃣ 手动分页
return
manualPage
(
allRecords
,
param
);
}
// 手动分页
private
Page
<
HazardWorkPlanCheckDetailResult
>
manualPage
(
List
<
HazardWorkPlanCheckDetailResult
>
allRecords
,
THazardWorkPlanCheckParam
param
)
{
int
pageNum
=
param
.
getPage
()
==
null
?
1
:
Integer
.
valueOf
(
param
.
getPage
());
int
pageSize
=
param
.
getLimit
()
==
null
?
10
:
Integer
.
valueOf
(
param
.
getLimit
());
int
total
=
allRecords
.
size
();
int
fromIndex
=
(
pageNum
-
1
)
*
pageSize
;
int
toIndex
=
Math
.
min
(
fromIndex
+
pageSize
,
total
);
List
<
HazardWorkPlanCheckDetailResult
>
pageRecords
=
fromIndex
>=
total
?
Collections
.
emptyList
()
:
allRecords
.
subList
(
fromIndex
,
toIndex
);
Page
<
HazardWorkPlanCheckDetailResult
>
page
=
new
Page
<>();
page
.
setCurrent
(
pageNum
);
page
.
setSize
(
pageSize
);
page
.
setTotal
(
total
);
page
.
setRecords
(
pageRecords
);
return
page
;
}
// 获取或创建结果对象(初始化所有指标为0)
private
HazardWorkPlanCheckDetailResult
getOrCreate
(
HazardWorkPlanCheckDetail
vo
,
Map
<
String
,
HazardWorkPlanCheckDetailResult
>
map
)
{
String
key
=
(
vo
.
getRegionName
()
!=
null
?
vo
.
getRegionName
()
:
""
)
+
"|"
+
(
vo
.
getBusinessDeptName
()
!=
null
?
vo
.
getBusinessDeptName
()
:
""
)
+
"|"
+
(
vo
.
getCurrentOrgName
()
!=
null
?
vo
.
getCurrentOrgName
()
:
""
);
return
map
.
computeIfAbsent
(
key
,
k
->
{
HazardWorkPlanCheckDetailResult
r
=
new
HazardWorkPlanCheckDetailResult
();
r
.
setRegionName
(
vo
.
getRegionName
());
r
.
setBusinessDeptName
(
vo
.
getBusinessDeptName
());
r
.
setCurrentOrgName
(
vo
.
getCurrentOrgName
());
// 初始化合规率
Map
<
String
,
Double
>
complianceMap
=
new
LinkedHashMap
<>();
COMPLIANCE_KEYS
.
forEach
(
k2
->
complianceMap
.
put
(
k2
,
0
D
));
r
.
setComplianceRateStats
(
complianceMap
);
// 初始化抽查率
Map
<
String
,
Double
>
spotCheckMap
=
new
LinkedHashMap
<>();
SPOTCHECK_KEYS
.
forEach
(
k2
->
spotCheckMap
.
put
(
k2
,
0
D
));
r
.
setSpotCheckRateStats
(
spotCheckMap
);
// 初始化危险作业状态
Map
<
String
,
Integer
>
statusMap
=
new
LinkedHashMap
<>();
WORKSTATUS_KEYS
.
forEach
(
k2
->
statusMap
.
put
(
k2
,
0
));
r
.
setWorkStatusStats
(
statusMap
);
return
r
;
});
}
// 构建合规率
private
void
buildComplianceStats
(
List
<
HazardWorkPlanCheckDetail
>
list
,
Map
<
String
,
HazardWorkPlanCheckDetailResult
>
resultMap
){
for
(
HazardWorkPlanCheckDetail
vo
:
list
){
HazardWorkPlanCheckDetailResult
r
=
getOrCreate
(
vo
,
resultMap
);
r
.
getComplianceRateStats
().
put
(
"全部作业"
,
vo
.
getEnterpriseComplianceRate
()
!=
null
?
vo
.
getEnterpriseComplianceRate
()
:
0
D
);
r
.
getComplianceRateStats
().
put
(
"企业作业"
,
vo
.
getEnterpriseComplianceRate
()
!=
null
?
vo
.
getEnterpriseComplianceRate
()
:
0
D
);
r
.
getComplianceRateStats
().
put
(
"相关方作业"
,
vo
.
getRelatedPartyComplianceRate
()
!=
null
?
vo
.
getRelatedPartyComplianceRate
()
:
0
D
);
r
.
getComplianceRateStats
().
put
(
"高度作业"
,
vo
.
getComplianceRateHigh
()
!=
null
?
vo
.
getComplianceRateHigh
()
:
0
D
);
r
.
getComplianceRateStats
().
put
(
"较大作业"
,
vo
.
getComplianceRateMajor
()
!=
null
?
vo
.
getComplianceRateMajor
()
:
0
D
);
r
.
getComplianceRateStats
().
put
(
"一般作业"
,
vo
.
getComplianceRateNormal
()
!=
null
?
vo
.
getComplianceRateNormal
()
:
0
D
);
}
}
}
// 构建抽查率
private
void
buildSpotCheckStats
(
List
<
HazardWorkPlanCheckDetail
>
list
,
Map
<
String
,
HazardWorkPlanCheckDetailResult
>
resultMap
){
for
(
HazardWorkPlanCheckDetail
vo
:
list
){
HazardWorkPlanCheckDetailResult
r
=
getOrCreate
(
vo
,
resultMap
);
r
.
getSpotCheckRateStats
().
put
(
"企业作业"
,
vo
.
getEnterpriseCheckRate
()
!=
null
?
vo
.
getEnterpriseCheckRate
()
:
0
D
);
r
.
getSpotCheckRateStats
().
put
(
"相关方作业"
,
vo
.
getRelatedPartySpotCheckRate
()
!=
null
?
vo
.
getRelatedPartySpotCheckRate
()
:
0
D
);
r
.
getSpotCheckRateStats
().
put
(
"高度作业"
,
vo
.
getSpotCheckRateHigh
()
!=
null
?
vo
.
getSpotCheckRateHigh
()
:
0
D
);
r
.
getSpotCheckRateStats
().
put
(
"较大作业"
,
vo
.
getSpotCheckRateMajor
()
!=
null
?
vo
.
getSpotCheckRateMajor
()
:
0
D
);
r
.
getSpotCheckRateStats
().
put
(
"一般作业"
,
vo
.
getSpotCheckRateNormal
()
!=
null
?
vo
.
getSpotCheckRateNormal
()
:
0
D
);
}
}
// 构建作业状态统计
private
void
buildWorkStatusStats
(
List
<
HazardWorkPlanCheckDetail
>
list
,
Map
<
String
,
HazardWorkPlanCheckDetailResult
>
resultMap
,
List
<
String
>
allStatuses
){
for
(
HazardWorkPlanCheckDetail
vo
:
list
){
HazardWorkPlanCheckDetailResult
r
=
getOrCreate
(
vo
,
resultMap
);
Map
<
String
,
Integer
>
map
=
r
.
getWorkStatusStats
();
String
status
=
vo
.
getProblemName
()
!=
null
&&
!
vo
.
getProblemName
().
trim
().
isEmpty
()
?
vo
.
getProblemName
()
:
"未知状态"
;
// 初始化字典
if
(
allStatuses
!=
null
){
for
(
String
s
:
allStatuses
){
map
.
putIfAbsent
(
s
,
0
);
}
}
map
.
put
(
status
,
vo
.
getProblemCount
()
!=
null
?
vo
.
getProblemCount
()
:
0
);
}
}
// 获取所有字典值
private
Map
<
String
,
List
<
String
>>
getAllDictValues
()
{
Map
<
String
,
List
<
String
>>
dictValues
=
new
HashMap
<>();
// 作业级别字典
List
<
String
>
workLevelDicts
=
dictDataService
.
getDictValuesByDictId
(
"222842ea3bb4468bbbeaa3856a4f2731"
);
dictValues
.
put
(
"workLevel"
,
workLevelDicts
!=
null
?
workLevelDicts
:
new
ArrayList
<>());
// 作业状态字典
List
<
String
>
workStatusDicts
=
dictDataService
.
getDictValuesByDictId
(
"60c11c98359b4cd09b7220202abf9e0b"
);
dictValues
.
put
(
"workStatus"
,
workStatusDicts
!=
null
?
workStatusDicts
:
new
ArrayList
<>());
return
dictValues
;
}
public
String
montageStartTime
(
String
startTime
){
public
String
montageStartTime
(
String
startTime
){
if
(
startTime
!=
null
&&
!
""
.
equals
(
startTime
)
){
if
(
startTime
!=
null
&&
!
""
.
equals
(
startTime
)
){
startTime
=
startTime
+
" 00:00:00"
;
startTime
=
startTime
+
" 00:00:00"
;
...
...
zlmy-modules/zlmy-boot/src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
View file @
fa871ca2
...
@@ -456,15 +456,15 @@
...
@@ -456,15 +456,15 @@
region.org_name as regionName,
region.org_name as regionName,
bd.org_name as businessDeptName,
bd.org_name as businessDeptName,
so.org_name as currentOrgName,
so.org_name as currentOrgName,
sdd.dict_value
problemTyp
e,
sdd.dict_value
as problemNam
e,
count(1)
problemCount
COUNT(1) as
problemCount
FROM t_hazard_work_plan_check hwpc
FROM t_hazard_work_plan_check hwpc
LEFT JOIN t_sys_org so ON so.org_id = hwpc.basic_id
LEFT JOIN t_sys_org so ON so.org_id = hwpc.basic_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_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
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
LEFT JOIN t_sys_org hq ON hq.org_id = region.parent_id
LEFT JOIN t_sys_dict_data sdd ON sdd.dict_data_id = hwpc.problem_type
LEFT JOIN t_sys_dict_data sdd ON sdd.dict_data_id = hwpc.problem_type
WHERE hwpc.status = '0' and hwpc.is_compliant='0'
WHERE hwpc.status = '0'
AND hwpc.is_compliant='0'
AND hwpc.basic_id IN (
AND hwpc.basic_id IN (
SELECT org_id FROM t_sys_org
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId}
WHERE org_id = #{param.orgId}
...
@@ -473,148 +473,111 @@
...
@@ -473,148 +473,111 @@
<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 hwpc.create_date BETWEEN #{param.startTime} AND #{param.endTime}
AND hwpc.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
</if>
GROUP BY
hq.org_name, region.org_name, bd.org_name, so.org_name,
sdd.dict_value
GROUP BY
region.org_name, bd.org_name, so.org_name,
sdd.dict_value
ORDER BY
hq.org_name, region.org_name, bd.org_name, so.org_name,sdd.dict_value,problemCount desc
ORDER BY
region.org_name, bd.org_name, so.org_name, problemCount DESC
</select>
</select>
<select
id=
"comprehensiveStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
<select
id=
"comprehensiveStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
SELECT
SELECT
region.org_name as regionName,
region.org_name AS regionName,
bd.org_name as businessDeptName,
bd.org_name AS businessDeptName,
so.org_name as currentOrgName,
so.org_name AS currentOrgName,
sdd.dict_value as workLevelNameComplianceRate,
so.is_rent AS isRent,
so.is_rent as isRent,
CASE
WHEN so.is_rent = '0' THEN '企业作业'
WHEN so.is_rent = '1' THEN '相关方作业'
ELSE '未知'
END as orgTypeName,
COUNT(DISTINCT hwpl.id) as totalWorkCount,
-- 企业/相关方合规率
ROUND(
COUNT(DISTINCT CASE WHEN hwpc.is_compliant = '0' THEN hwpl.id END) as totalProblemCount,
(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END)
CASE
- SUM(CASE WHEN so.is_rent='0' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
WHEN COUNT(DISTINCT hwpl.id) = 0 THEN 100.00
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END), 0), 2
ELSE ROUND(
) AS enterpriseComplianceRate,
(COUNT(DISTINCT hwpl.id) - COUNT(DISTINCT CASE WHEN hwpc.is_compliant = '0' THEN hwpl.id END))
* 100.0 / COUNT(DISTINCT hwpl.id),
2
)
END as CONCAT(totalComplianceRate,'%'),
COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END) as enterpriseWorkCount,
ROUND(
COUNT(DISTINCT CASE WHEN so.is_rent = '0' AND hwpc.is_compliant = '0' THEN hwpl.id END) as enterpriseProblemCount,
(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END)
CASE
- SUM(CASE WHEN so.is_rent='1' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
WHEN COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END) = 0 THEN 100.00
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END), 0), 2
ELSE ROUND(
) AS relatedPartyComplianceRate,
(COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END) -
COUNT(DISTINCT CASE WHEN so.is_rent = '0' AND hwpc.is_compliant = '0' THEN hwpl.id END))
* 100.0 / COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END),
2
)
END as CONCAT(enterpriseComplianceRate,'%'),
COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END) as relatedPartyWorkCount,
-- 等级合规率
COUNT(DISTINCT CASE WHEN so.is_rent = '1' AND hwpc.is_compliant = '0' THEN hwpl.id END) as relatedPartyProblemCount,
ROUND(
CASE
(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END)
WHEN COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END) = 0 THEN 100.00
- SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
ELSE ROUND(
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END), 0), 2
(COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END) -
) AS complianceRateHigh,
COUNT(DISTINCT CASE WHEN so.is_rent = '1' AND hwpc.is_compliant = '0' THEN hwpl.id END))
* 100.0 / COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END),
2
)
END as CONCAT(relatedPartyComplianceRate,'%'),
COUNT(DISTINCT hwpl.id) as workLevelTotalWorkCount,
ROUND(
COUNT(DISTINCT CASE WHEN hwpc.is_compliant = '0' THEN hwpl.id END) as workLevelProblemWorkCount,
(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END)
CASE
- SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
WHEN COUNT(DISTINCT hwpl.id) = 0 THEN 100.00
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END), 0), 2
ELSE ROUND(
) AS complianceRateMajor,
(COUNT(DISTINCT hwpl.id) - COUNT(DISTINCT CASE WHEN hwpc.is_compliant = '0' THEN hwpl.id END))
* 100.0 / COUNT(DISTINCT hwpl.id),
2
)
END as CONCAT(workLevelComplianceRate,'%'),
COUNT(DISTINCT CASE WHEN hwpc.id IS NOT NULL THEN hwpl.id END) as workLevelCheckedCount,
ROUND(
CASE
(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END)
WHEN COUNT(DISTINCT hwpl.id) = 0 THEN 0.00
- SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
ELSE ROUND(
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END), 0), 2
COUNT(DISTINCT CASE WHEN hwpc.id IS NOT NULL THEN hwpl.id END) * 100.0 / COUNT(DISTINCT hwpl.id),
) AS complianceRateNormal
2
)
END as CONCAT(workLevelCheckRate,'%')
FROM t_hazard_work_plan hwpl
FROM t_hazard_work_plan hwpl
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id
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 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 bd ON bd.org_id = so.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
LEFT JOIN t_sys_org hq ON hq.org_id = region.parent_id
WHERE hwpl.status='0'
LEFT JOIN t_sys_dict_data sdd ON sdd.dict_data_id = hwpl.work_level
AND hwpl.org_id IN (
AND sdd.dict_id = '222842ea3bb4468bbbeaa3856a4f2731'
WHERE hwpl.status = '0'
AND (hwpc.status = '0' OR hwpc.status IS NULL)
AND hwpc.basic_id IN (
SELECT org_id FROM t_sys_org
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId}
WHERE org_id = #{param.orgId}
OR parent_ids LIKE CONCAT('%', #{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 hwp
c
.create_date BETWEEN #{param.startTime} AND #{param.endTime}
AND hwp
l
.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
</if>
GROUP BY region.org_name, bd.org_name, so.org_name, sdd.dict_value, so.is_rent
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, sdd.dict_value, so.is_rent,
ORDER BY region.org_name, bd.org_name, so.org_name
workLevelComplianceRate DESC, workLevelCheckRate DESC
</select>
</select>
<select
id=
"isRentSpotCheckStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
<select
id=
"isRentSpotCheckStatistics"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail"
>
SELECT
SELECT
region.org_name
as
regionName,
region.org_name
AS
regionName,
bd.org_name
as
businessDeptName,
bd.org_name
AS
businessDeptName,
so.org_name
as
currentOrgName,
so.org_name
AS
currentOrgName,
COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END) as enterpriseTotalWork,
-- 企业/相关方抽查率
COUNT(DISTINCT CASE WHEN so.is_rent = '0' AND hwpc.id IS NOT NULL THEN hwpl.id END) as enterpriseCheckedWork,
ROUND(SUM(CASE WHEN so.is_rent='0' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
CASE
NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END),2), 2) AS enterpriseCheckRate,
WHEN COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END) = 0 THEN 0.00
ELSE ROUND(
ROUND(SUM(CASE WHEN so.is_rent='1' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
COUNT(DISTINCT CASE WHEN so.is_rent = '0' AND hwpc.id IS NOT NULL THEN hwpl.id END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END),2), 2) AS relatedPartySpotCheckRate,
COUNT(DISTINCT CASE WHEN so.is_rent = '0' THEN hwpl.id END),
2
-- 等级抽查率
)
ROUND(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
END as CONCAT(enterpriseCheckRate,'%'),
NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END),0),2) AS spotCheckRateHigh,
COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END) as relatedPartyTotalWork,
COUNT(DISTINCT CASE WHEN so.is_rent = '1' AND hwpc.id IS NOT NULL THEN hwpl.id END) as relatedPartyCheckedWork,
ROUND(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
CASE
NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END),0),2) AS spotCheckRateMajor,
WHEN COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END) = 0 THEN 0.00
ELSE ROUND(
ROUND(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
COUNT(DISTINCT CASE WHEN so.is_rent = '1' AND hwpc.id IS NOT NULL THEN hwpl.id END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END),0),2) AS spotCheckRateNormal
COUNT(DISTINCT CASE WHEN so.is_rent = '1' THEN hwpl.id END),
2
)
END as CONCAT(relatedPartyCheckRate,'%')
FROM t_hazard_work_plan hwpl
FROM t_hazard_work_plan hwpl
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id AND hwpc.status='0'
AND hwpc.status = '0'
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_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 bd ON bd.org_id = so.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
WHERE hwpl.status
=
'0'
WHERE hwpl.status
=
'0'
AND hwp
c.basic
_id IN (
AND hwp
l.org
_id IN (
SELECT org_id FROM t_sys_org
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId}
WHERE org_id = #{param.orgId}
OR parent_ids LIKE CONCAT('%', #{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 hwp
c
.create_date BETWEEN #{param.startTime} AND #{param.endTime}
AND hwp
l
.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
</if>
GROUP 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,enterpriseCheckRate desc,relatedPartyCheckRate desc;
ORDER BY region.org_name, bd.org_name, so.org_name
</select>
</select>
</mapper>
</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