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
856f0a73
Commit
856f0a73
authored
Jan 13, 2026
by
鲁鸿波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
危险作业统计开发
parent
f2b6120b
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
1160 additions
and
8 deletions
+1160
-8
上线说明.md
zlmy-modules/zlmy-boot/doc/国产化/上线说明.md
+1
-1
AccidentReportController.java
.../module/accident/controller/AccidentReportController.java
+27
-0
AccidentReportDetailTemplate.java
...odule/accident/template/AccidentReportDetailTemplate.java
+126
-0
HazardWorkPlanStatisticsController.java
...hazard/controller/HazardWorkPlanStatisticsController.java
+55
-3
HazardWorkPlanStatisticsDao.java
...testor/module/hazard/dao/HazardWorkPlanStatisticsDao.java
+41
-0
THazardWorkPlanDao.java
...java/com/testor/module/hazard/dao/THazardWorkPlanDao.java
+4
-0
HazardWorkPlanStatisticsDto.java
.../module/hazard/model/dto/HazardWorkPlanStatisticsDto.java
+6
-0
HazardWorkPlanStatisticsResult.java
...dule/hazard/model/dto/HazardWorkPlanStatisticsResult.java
+24
-0
HazardWorkPlanStatisticsResultVO.java
...le/hazard/model/dto/HazardWorkPlanStatisticsResultVO.java
+20
-0
THazardWorkPlanDetailStatistics.java
...ule/hazard/model/dto/THazardWorkPlanDetailStatistics.java
+45
-0
THazardWorkPlanStatistics.java
...or/module/hazard/model/dto/THazardWorkPlanStatistics.java
+27
-0
WorkStatItem.java
...java/com/testor/module/hazard/model/dto/WorkStatItem.java
+11
-0
HazardWorkPlanStatisticsTemplate.java
...zard/model/template/HazardWorkPlanStatisticsTemplate.java
+119
-0
HazardWorkPlanStatisticsService.java
...odule/hazard/service/HazardWorkPlanStatisticsService.java
+29
-0
THazardWorkPlanService.java
.../testor/module/hazard/service/THazardWorkPlanService.java
+3
-0
HazardWorkPlanStatisticsServiceImpl.java
...ard/service/impl/HazardWorkPlanStatisticsServiceImpl.java
+396
-1
THazardWorkPlanServiceImpl.java
...odule/hazard/service/impl/THazardWorkPlanServiceImpl.java
+2
-0
PortController.java
...a/com/testor/module/report/controller/PortController.java
+1
-0
NewSysDictDataService.java
.../com/testor/module/sys/service/NewSysDictDataService.java
+7
-0
NewSysDictDataServiceImpl.java
...or/module/sys/service/impl/NewSysDictDataServiceImpl.java
+24
-0
AccidentReport.xml
...oot/src/main/resources/mapper/accident/AccidentReport.xml
+3
-3
HazardWorkPlanStatistics.xml
...main/resources/mapper/hazard/HazardWorkPlanStatistics.xml
+187
-0
THazardWorkPlan.xml
...boot/src/main/resources/mapper/hazard/THazardWorkPlan.xml
+2
-0
No files found.
zlmy-modules/zlmy-boot/doc/国产化/上线说明.md
View file @
856f0a73
...
...
@@ -551,5 +551,5 @@ INSERT INTO "t_sys_dict_data" ("dict_data_id", "dict_id", "dict_key", "dict_valu
INSERT INTO "t_sys_dict_data" ("dict_data_id", "dict_id", "dict_key", "dict_value", "tree_sort", "status", "create_by", "create_date", "update_by", "update_date", "remarks", "parent_id", "parent_ids") VALUES ('27', '4', '11', '不涉及', '11', '0', NULL, '2026-01-09 15:07:41', NULL, '2026-01-09 15:07:41', NULL, NULL, NULL);
INSERT INTO "t_sys_dict_type" ("dict_id", "dict_name", "dict_type", "is_sys", "status", "create_by", "create_date", "update_by", "update_date", "remarks", "parent_id", "parent_ids", "tree_sort", "cascaded") VALUES ('5', '事故受伤部位', 'injured_area',
NULL, NULL
, NULL, '2026-01-09 15:10:48', NULL, '2026-01-09 15:10:48', NULL, NULL, NULL, NULL, NULL);
INSERT INTO "t_sys_dict_type" ("dict_id", "dict_name", "dict_type", "is_sys", "status", "create_by", "create_date", "update_by", "update_date", "remarks", "parent_id", "parent_ids", "tree_sort", "cascaded") VALUES ('5', '事故受伤部位', 'injured_area',
'1', '0'
, NULL, '2026-01-09 15:10:48', NULL, '2026-01-09 15:10:48', NULL, NULL, NULL, NULL, NULL);
INSERT INTO "t_sys_dict_data" ("dict_data_id", "dict_id", "dict_key", "dict_value", "tree_sort", "status", "create_by", "create_date", "update_by", "update_date", "remarks", "parent_id", "parent_ids") VALUES ('28', '5', '1', '手臂', '1', '0', NULL, '2026-01-09 15:11:09', NULL, '2026-01-09 15:11:09', NULL, NULL, NULL);
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/accident/controller/AccidentReportController.java
View file @
856f0a73
...
...
@@ -11,7 +11,9 @@ import com.testor.biz.util.CacheDicUtils;
import
com.testor.common.constant.DicTypeCode
;
import
com.testor.common.constant.ProcessStatus
;
import
com.testor.common.model.UpdateProcessStatusReq
;
import
com.testor.common.util.BeanConverUtil
;
import
com.testor.common.util.EnumUtil
;
import
com.testor.common.util.excel.EasyExcelUtil
;
import
com.testor.module.accident.model.domain.AccidentReport
;
import
com.testor.module.accident.model.dto.AccidentReportDelParam
;
import
com.testor.module.accident.model.dto.AccidentReportDetail
;
...
...
@@ -19,16 +21,20 @@ import com.testor.module.accident.model.req.*;
import
com.testor.module.accident.model.resp.*
;
import
com.testor.module.accident.model.vo.AccidentReportVO
;
import
com.testor.module.accident.service.AccidentReportService
;
import
com.testor.module.accident.template.AccidentReportDetailTemplate
;
import
com.testor.module.hazard.model.dto.ReportDetailParam
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanCheckParam
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanDTO
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanParam
;
import
com.testor.module.hazard.model.template.THazardWorkPlanTemplate
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
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.BaseResponseList
;
import
com.tongtech.tfw.backend.common.biz.models.BizGeneralResponse
;
import
com.tongtech.tfw.backend.common.models.supers.SuperController
;
import
com.tongtech.tfw.backend.core.helper.StringHelper
;
import
com.tongtech.tfw.backend.core.helper.TypeHelper
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.SneakyThrows
;
...
...
@@ -40,6 +46,7 @@ import org.springframework.http.ResponseEntity;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.client.RestTemplate
;
import
javax.servlet.http.HttpServletResponse
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.text.SimpleDateFormat
;
...
...
@@ -312,4 +319,24 @@ public class AccidentReportController extends SuperController {
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
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/accident/template/AccidentReportDetailTemplate.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
accident
.
template
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.testor.module.accident.model.domain.AccidentPersonnel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 事故统计详情表
*/
@Data
public
class
AccidentReportDetailTemplate
{
@ExcelProperty
(
"序号"
)
private
String
number
;
@ExcelProperty
(
"序号"
)
private
String
id
;
@ExcelProperty
(
"序号"
)
private
String
currentOrgName
;
@ExcelProperty
(
"序号"
)
private
String
businessDeptName
;
@ExcelProperty
(
"序号"
)
private
String
regionName
;
/**
* 事故发生时间
*/
@ExcelProperty
(
"事故发生时间"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
accidentTime
;
/**
* 事故等级(国家)(字典:accident_level_country)
*/
@ExcelProperty
(
"事故等级(国家)(字典:accident_level_country)"
)
private
String
accidentLevelCountry
;
@ExcelProperty
(
"事故等级(集团)"
)
private
String
accidentLevel
;
@ExcelProperty
(
"受伤人数"
)
private
Integer
reportCount
;
/**
* 直接经济损失
*/
@ExcelProperty
(
"直接经济损失"
)
private
BigDecimal
directEconomicLoss
;
/**
* 损失工作日
*/
@ExcelProperty
(
"损失工作日"
)
@TableField
(
"lost_working_days"
)
private
String
lostWorkingDays
;
/**
* 人员信息
*/
@ExcelProperty
(
"人员信息"
)
private
List
<
AccidentPersonnel
>
accidentPersonnelList
;
@ExcelProperty
(
"事故类型"
)
private
String
accidentType
;
/**
* 涉及集团八大类风险(多选 字典:group_risk)
*/
@ExcelProperty
(
"多选 涉及集团八大类风险(字典:group_risk)"
)
private
String
groupRiskDetail
;
/**
* 涉及危险作业类型(多选 字典:dangerous_homework_category)
*/
@ExcelProperty
(
"多选 涉及危险作业类型(字典:dangerous_homework_category)"
)
private
String
dangerousHomeworkCategoryDetail
;
/**
* 受伤部位(多选 字典:injured_area)
*/
@ExcelProperty
(
"多选 受伤部位(字典:injured_area)"
)
private
String
injuredAreaDetail
;
/**
* 事故详细经过
*/
@ExcelProperty
(
"事故详细经过"
)
private
String
accidentPassed
;
/**
* 事故直接原因和间接原因
*/
@ExcelProperty
(
"事故直接原因和间接原因"
)
private
String
accidentCause
;
/**
* 改善措施
*/
@ExcelProperty
(
"改善措施"
)
private
String
improvements
;
/**
* 事故人员追责问责情况
*/
@ExcelProperty
(
"事故人员追责问责情况"
)
private
String
personnelAccountabilityStatus
;
/**
* 备注
*/
@ExcelProperty
(
"备注"
)
private
String
remarks
;
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/controller/HazardWorkPlanStatisticsController.java
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.module.accident.model.dto.AccidentReportDetail
;
import
com.testor.module.accident.template.AccidentReportDetailTemplate
;
import
com.testor.module.hazard.model.dto.*
;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsTemplate
;
import
com.tongtech.tfw.backend.common.biz.models.BaseResponse
;
import
com.testor.common.core.enums.BaseStatusEnum
;
import
com.testor.common.util.BeanConverUtil
;
import
com.testor.common.util.excel.EasyExcelUtil
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsDto
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanDTO
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanParam
;
import
com.testor.module.hazard.model.template.THazardWorkPlanTemplate
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanStatisticsVO
;
import
com.testor.module.hazard.service.HazardWorkPlanStatisticsService
;
import
com.testor.module.hazard.service.THazardWorkPlanService
;
import
com.tongtech.tfw.backend.common.biz.models.BaseResponseList
;
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
;
...
...
@@ -152,4 +155,53 @@ public class HazardWorkPlanStatisticsController extends SuperController {
BizGeneralResponse
.
builder
().
result
(
TypeHelper
.
castToString
(
true
)).
build
());
return
baseResponse
;
}
@GetMapping
(
"/selectHazardWorkPlanStatistics"
)
@ApiOperation
(
value
=
"危险作业类型统计分布"
)
public
BaseResponse
<
List
<
THazardWorkPlanStatistics
>>
selectHazardWorkPlanStatistics
(
HazardWorkPlanStatisticsDto
param
)
{
BaseResponse
<
List
<
THazardWorkPlanStatistics
>>
response
=
new
BaseResponse
<>();
if
(
StringHelper
.
isEmpty
(
param
.
getOrgId
())){
param
.
setOrgId
(
ContextUtils
.
getLoginUser
().
getOrgId
());
}
List
<
THazardWorkPlanStatistics
>
dataList
=
hazardWorkPlanStatisticsService
.
selectHazardWorkPlanStatistics
(
param
);
response
.
setData
(
dataList
);
return
response
;
}
@GetMapping
(
"/selectWorkStatusDetailStatistics"
)
@ApiOperation
(
value
=
"危险作业详情统计"
)
public
BaseResponse
<
BaseResponseList
<
HazardWorkPlanStatisticsResult
>>
selectWorkStatusDetailStatistics
(
HazardWorkPlanStatisticsDto
param
)
{
BaseResponse
<
BaseResponseList
<
HazardWorkPlanStatisticsResult
>>
response
=
new
BaseResponse
<>();
if
(
StringHelper
.
isEmpty
(
param
.
getOrgId
())){
param
.
setOrgId
(
ContextUtils
.
getLoginUser
().
getOrgId
());
}
BaseResponse
<
BaseResponseList
<
HazardWorkPlanStatisticsResult
>>
baseResponse
=
new
BaseResponse
<>();
Page
<
HazardWorkPlanStatisticsResult
>
resultList
=
hazardWorkPlanStatisticsService
.
selectWorkStatusDetailStatistics
(
param
);
BaseResponseList
<
HazardWorkPlanStatisticsResult
>
baseResponseList
=
new
BaseResponseList
<>();
baseResponseList
.
setData
(
resultList
.
getRecords
());
baseResponseList
.
setTotal
(
resultList
.
getTotal
());
baseResponse
.
setData
(
baseResponseList
);
return
baseResponse
;
}
@ApiOperation
(
value
=
"导出危险作业详情统计"
,
notes
=
"导出危险作业详情统计"
)
@GetMapping
(
value
=
"/selectWorkStatusDetailStatisticsExport"
)
public
BaseResponse
<
BizGeneralResponse
>
selectWorkStatusDetailStatisticsExport
(
HttpServletResponse
response
,
HazardWorkPlanStatisticsDto
param
){
BaseResponse
<
BizGeneralResponse
>
baseResponse
=
new
BaseResponse
<>();
List
<
HazardWorkPlanStatisticsTemplate
>
hazardWorkPlanStatisticsTemplatePage
=
hazardWorkPlanStatisticsService
.
exportCompleteStatistics
(
param
);
if
(
org
.
apache
.
commons
.
collections4
.
CollectionUtils
.
isEmpty
(
hazardWorkPlanStatisticsTemplatePage
))
{
baseResponse
.
setData
(
BizGeneralResponse
.
builder
().
result
(
"无危险作业详情数据"
).
build
());
return
baseResponse
;
}
List
<
HazardWorkPlanStatisticsTemplate
>
accidentReportDetailTemplate
=
BeanConverUtil
.
converList
(
hazardWorkPlanStatisticsTemplatePage
,
HazardWorkPlanStatisticsTemplate
.
class
);
int
index
=
1
;
for
(
HazardWorkPlanStatisticsTemplate
template
:
hazardWorkPlanStatisticsTemplatePage
){
template
.
setNumber
(
String
.
valueOf
(
index
++));
}
EasyExcelUtil
.
writeExcel
(
response
,
"危险作业详情明细"
,
"危险作业详情明细"
,
accidentReportDetailTemplate
);
baseResponse
.
setData
(
BizGeneralResponse
.
builder
().
result
(
TypeHelper
.
castToString
(
true
)).
build
());
return
baseResponse
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/dao/HazardWorkPlanStatisticsDao.java
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanDetailStatistics
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanStatistics
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanStatisticsVO
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsDto
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -43,4 +47,41 @@ public interface HazardWorkPlanStatisticsDao {
* @return
*/
public
List
<
HazardWorkPlanStatisticsVO
>
statOperatorNum
(
@Param
(
"query"
)
HazardWorkPlanStatisticsDto
param
);
/**
* 危险作业类型统计图表
* @param hazardWorkPlanStatisticsDto
* @return
*/
List
<
THazardWorkPlanStatistics
>
selectHazardWorkPlanStatistics
(
@Param
(
"query"
)
HazardWorkPlanStatisticsDto
hazardWorkPlanStatisticsDto
);
/**
* 危险作业详情基础统计
* @param query
* @return
*/
List
<
THazardWorkPlanDetailStatistics
>
workBasicDetailStatistics
(
@Param
(
"query"
)
HazardWorkPlanStatisticsDto
query
);
/**
* 危险作业详情类别统计
* @param query
* @return
*/
List
<
THazardWorkPlanDetailStatistics
>
workTypeDetailStatistics
(
@Param
(
"query"
)
HazardWorkPlanStatisticsDto
query
);
/**
* 危险作业详情级别统计
* @param query
* @return
*/
List
<
THazardWorkPlanDetailStatistics
>
workLevelDetailStatistics
(
@Param
(
"query"
)
HazardWorkPlanStatisticsDto
query
);
/**
* 危险作业详情状态统计
* @param query
* @return
*/
List
<
THazardWorkPlanDetailStatistics
>
workStatusDetailStatistics
(
@Param
(
"query"
)
HazardWorkPlanStatisticsDto
query
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/dao/THazardWorkPlanDao.java
View file @
856f0a73
...
...
@@ -3,8 +3,10 @@ package com.testor.module.hazard.dao;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.module.hazard.model.domain.THazardWorkPlan
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsDto
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanParam
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanRiverside
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanStatistics
;
import
com.testor.module.partner.model.dto.TJobStatisticsParam
;
import
com.testor.module.partner.model.vo.RegionalStatisticsVO
;
import
com.tongtech.tfw.backend.common.models.supers.SuperDao
;
...
...
@@ -73,4 +75,6 @@ public interface THazardWorkPlanDao extends SuperDao<THazardWorkPlan>
*/
List
<
RegionalStatisticsVO
>
selectWorkTypeCount
(
@Param
(
"tJobStatisticsParam"
)
TJobStatisticsParam
tJobStatisticsParam
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanStatisticsDto.java
View file @
856f0a73
...
...
@@ -47,4 +47,10 @@ public class HazardWorkPlanStatisticsDto {
*/
@ApiModelProperty
(
value
=
"单位id"
)
private
String
orgId
;
@ApiModelProperty
(
value
=
"每页数量"
)
private
Integer
size
;
@ApiModelProperty
(
value
=
"当前页数"
)
private
Integer
current
;
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanStatisticsResult.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
lombok.Data
;
import
java.util.Map
;
@Data
public
class
HazardWorkPlanStatisticsResult
{
private
String
regionName
;
// 大区
private
String
businessDeptName
;
// 经营部
private
String
currentOrgName
;
// 企业名称
// 基础数量统计
private
Integer
workCount
;
// 危险作业总量
private
Integer
ownCount
;
// 自有员工作业数量
private
Integer
stakeholderCount
;
// 相关方作业数量
// 分类统计
private
Map
<
String
,
Integer
>
workTypeStats
;
// 作业类别统计 <类别名称, 数量>
private
Map
<
String
,
Integer
>
workLevelStats
;
// 作业级别统计 <级别名称, 数量>
private
Map
<
String
,
Integer
>
workStatusStats
;
// 作业状态统计 <状态名称, 数量>
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanStatisticsResultVO.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
HazardWorkPlanStatisticsResultVO
{
private
String
regionName
;
private
String
businessDeptName
;
private
String
currentOrgName
;
private
Integer
workCount
;
private
Integer
ownCount
;
private
Integer
stakeholderCount
;
private
List
<
WorkStatItem
>
workTypeStats
;
// 作业类别统计列表
private
List
<
WorkStatItem
>
workLevelStats
;
// 作业级别统计列表
private
List
<
WorkStatItem
>
workStatusStats
;
// 作业状态统计列表
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/THazardWorkPlanDetailStatistics.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
THazardWorkPlanDetailStatistics
{
@ApiModelProperty
(
value
=
"当前机构名称"
)
private
String
currentOrgName
;
@ApiModelProperty
(
value
=
"经营部名称"
)
private
String
businessDeptName
;
@ApiModelProperty
(
value
=
"大区名称"
)
private
String
regionName
;
@ApiModelProperty
(
value
=
"危险作业总量"
)
private
Integer
workCount
;
@ApiModelProperty
(
value
=
"自有员工作业数量"
)
private
Integer
ownCount
;
@ApiModelProperty
(
value
=
"相关方作业数量"
)
private
Integer
stakeholderCount
;
@ApiModelProperty
(
value
=
"作业类型"
)
private
String
workType
;
@ApiModelProperty
(
value
=
"作业类型数量"
)
private
Integer
workTypeCount
;
@ApiModelProperty
(
value
=
"作业级别"
)
private
String
workLevel
;
@ApiModelProperty
(
value
=
"作业级别数量"
)
private
Integer
workLevelCount
;
@ApiModelProperty
(
value
=
"作业状态"
)
private
String
workStatus
;
@ApiModelProperty
(
value
=
"作业状态数量"
)
private
Integer
workStatusCount
;
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/THazardWorkPlanStatistics.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
THazardWorkPlanStatistics
{
/**
* 作业类型
*/
@ApiModelProperty
(
value
=
"作业类型"
)
private
String
workType
;
/**
* 作业级别
*/
@ApiModelProperty
(
value
=
"作业级别"
)
private
String
workLevel
;
/**
* 作业数量
*/
@ApiModelProperty
(
value
=
"作业数量"
)
private
Integer
count
;
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/WorkStatItem.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
lombok.Data
;
@Data
public
class
WorkStatItem
{
private
String
name
;
// 类别/级别/状态名称
private
Integer
count
;
// 数量
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/template/HazardWorkPlanStatisticsTemplate.java
0 → 100644
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
model
.
template
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
@Data
public
class
HazardWorkPlanStatisticsTemplate
{
@ExcelProperty
(
"序号"
)
private
String
number
;
@ExcelProperty
(
"大区"
)
private
String
regionName
;
@ExcelProperty
(
"经营部"
)
private
String
businessDeptName
;
@ExcelProperty
(
"企业名称"
)
private
String
currentOrgName
;
@ExcelProperty
(
"危险作业总量"
)
private
Integer
workCount
;
@ExcelProperty
(
"自有员工作业数量"
)
private
Integer
ownCount
;
@ExcelProperty
(
"相关方作业数量"
)
private
Integer
stakeholderCount
;
// ============== 作业类别统计 ==============
@ExcelProperty
(
"进仓作业"
)
private
Integer
workTypeIn
;
@ExcelProperty
(
"出仓作业"
)
private
Integer
workTypeOut
;
@ExcelProperty
(
"动火作业"
)
private
Integer
workTypeFire
;
@ExcelProperty
(
"有限空间作业"
)
private
Integer
workTypeLimitedSpace
;
@ExcelProperty
(
"吊装作业"
)
private
Integer
workTypeHoisting
;
@ExcelProperty
(
"高处作业"
)
private
Integer
workTypeHigh
;
@ExcelProperty
(
"临时用电作业"
)
private
Integer
workTypeTempElectricity
;
@ExcelProperty
(
"动土作业"
)
private
Integer
workTypeExcavation
;
@ExcelProperty
(
"断路作业"
)
private
Integer
workTypeRoadClosure
;
@ExcelProperty
(
"环流熏蒸作业"
)
private
Integer
workTypeCirculationFumigation
;
@ExcelProperty
(
"熏蒸作业"
)
private
Integer
workTypeFumigation
;
@ExcelProperty
(
"平仓作业"
)
private
Integer
workTypeClosing
;
@ExcelProperty
(
"筒仓清仓作业"
)
private
Integer
workTypeSiloCleaning
;
@ExcelProperty
(
"液氨接卸作业"
)
private
Integer
workTypeLiquidAmmonia
;
@ExcelProperty
(
"未知类别"
)
private
Integer
workTypeUnknown
;
// ============== 作业级别统计 ==============
@ExcelProperty
(
"高度危险"
)
private
Integer
workLevelHigh
;
@ExcelProperty
(
"较大危险"
)
private
Integer
workLevelMedium
;
@ExcelProperty
(
"一般危险"
)
private
Integer
workLevelLow
;
@ExcelProperty
(
"未知级别"
)
private
Integer
workLevelUnknown
;
// ============== 作业状态统计 ==============
@ExcelProperty
(
"技术交底"
)
private
Integer
workStatusTechBriefing
;
@ExcelProperty
(
"草稿"
)
private
Integer
workStatusDraft
;
@ExcelProperty
(
"已关闭"
)
private
Integer
workStatusClosed
;
@ExcelProperty
(
"作业前(条件确认)"
)
private
Integer
workStatusPreCondition
;
@ExcelProperty
(
"作业前(风险分析)"
)
private
Integer
workStatusPreRiskAnalysis
;
@ExcelProperty
(
"已超时自动取消"
)
private
Integer
workStatusTimeoutCancel
;
@ExcelProperty
(
"已取消"
)
private
Integer
workStatusCancelled
;
@ExcelProperty
(
"作业前(许可证)"
)
private
Integer
workStatusPreLicense
;
@ExcelProperty
(
"未知状态"
)
private
Integer
workStatusUnknown
;
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/HazardWorkPlanStatisticsService.java
View file @
856f0a73
package
com
.
testor
.
module
.
hazard
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsDto
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanStatisticsResult
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanDetailStatistics
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanStatistics
;
import
com.testor.module.hazard.model.template.HazardWorkPlanStatisticsTemplate
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanStatisticsVO
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
...
...
@@ -40,4 +47,26 @@ public interface HazardWorkPlanStatisticsService {
* @return
*/
public
List
<
HazardWorkPlanStatisticsVO
>
statOperatorNum
(
HazardWorkPlanStatisticsDto
param
);
/**
* 危险作业类型统计图表
* @param hazardWorkPlanStatisticsDto
* @return
*/
List
<
THazardWorkPlanStatistics
>
selectHazardWorkPlanStatistics
(
HazardWorkPlanStatisticsDto
hazardWorkPlanStatisticsDto
);
/**
* 危险作业详情统计
* @param query
* @return
*/
Page
<
HazardWorkPlanStatisticsResult
>
selectWorkStatusDetailStatistics
(
HazardWorkPlanStatisticsDto
query
);
// Changed from List to Page
/**
* 危险作业详情统计导出
* @param query
* @return
*/
List
<
HazardWorkPlanStatisticsTemplate
>
exportCompleteStatistics
(
HazardWorkPlanStatisticsDto
query
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/THazardWorkPlanService.java
View file @
856f0a73
...
...
@@ -135,4 +135,7 @@ public interface THazardWorkPlanService extends SuperService<THazardWorkPlan> {
*/
Integer
unfinishedCount
(
List
<
String
>
orgIds
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/HazardWorkPlanStatisticsServiceImpl.java
View file @
856f0a73
This diff is collapsed.
Click to expand it.
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/THazardWorkPlanServiceImpl.java
View file @
856f0a73
...
...
@@ -2443,6 +2443,8 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
return
baseMapper
.
unfinishedCount
(
orgIds
);
}
private
void
deleteDoneRecords
(
String
bizId
)
{
try
{
// 获取流程实例ID
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/report/controller/PortController.java
View file @
856f0a73
...
...
@@ -350,6 +350,7 @@ public class PortController {
accidentReportService
.
exports
(
response
,
request
,
accidentReportExportReq
);
}
@ApiOperation
(
value
=
"本单位值班记录下载"
,
notes
=
""
)
@PostMapping
(
"/getDutyRecord"
)
public
void
getDutyRecord
(
@RequestBody
DutyDownload
dutyDownload
)
{
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/sys/service/NewSysDictDataService.java
View file @
856f0a73
...
...
@@ -100,4 +100,11 @@ public interface NewSysDictDataService {
*/
List
<
SysDictData
>
getDictId
(
String
dictId
);
/**
* 根据字典id获取字典数据
* @param dictId 字典id
* @return
*/
List
<
String
>
getDictValuesByDictId
(
String
dictId
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/sys/service/impl/NewSysDictDataServiceImpl.java
View file @
856f0a73
...
...
@@ -170,4 +170,28 @@ public class NewSysDictDataServiceImpl implements NewSysDictDataService {
}
return
Collections
.
emptyList
();
}
/**
* 根据字典ID获取所有字典值(优化版)
* @param dictId 字典ID
* @return 字典值列表
*/
public
List
<
String
>
getDictValuesByDictId
(
String
dictId
)
{
// 直接查询字典数据表,不需要先检查字典类型表
List
<
SysDictData
>
dictDataList
=
sysDictDataService
.
list
(
new
QueryWrapper
<
SysDictData
>()
.
eq
(
"dict_id"
,
dictId
)
.
orderByAsc
(
"tree_sort"
)
// 按排序字段排序
);
if
(
ObjectHelper
.
isNotEmpty
(
dictDataList
))
{
return
dictDataList
.
stream
()
.
map
(
SysDictData:
:
getDictValue
)
.
filter
(
value
->
value
!=
null
&&
!
value
.
trim
().
isEmpty
())
.
collect
(
Collectors
.
toList
());
}
return
Collections
.
emptyList
();
}
}
zlmy-modules/zlmy-boot/src/main/resources/mapper/accident/AccidentReport.xml
View file @
856f0a73
...
...
@@ -233,9 +233,9 @@
COALESCE(
(SELECT COUNT(1) FROM t_accident_personnel WHERE ref_id = tar.id AND status = '0'),
0
) as reportCount
,
tar.
*
) as reportCount
,
tar.
id
FROM t_accident_report tar
LEFT JOIN t_sys_dict_data sdd2 ON tar.accident_level = sdd2.dict_key
...
...
zlmy-modules/zlmy-boot/src/main/resources/mapper/hazard/HazardWorkPlanStatistics.xml
View file @
856f0a73
...
...
@@ -404,4 +404,191 @@
GROUP BY t.operator;
</select>
<select
id=
"selectHazardWorkPlanStatistics"
resultType=
"com.testor.module.hazard.model.dto.THazardWorkPlanStatistics"
>
SELECT
sdd.dict_value as workType,
sdd2.dict_value as workLevel,
COUNT(*) as count
FROM t_hazard_work_plan hwp
inner join t_sys_dict_data sdd on sdd.dict_data_id = hwp.work_type and sdd.dict_id = '42a87414a06a4f57b9d3ffb1907284b4'
inner join t_sys_dict_data sdd2 on sdd2.dict_data_id = hwp.work_level and sdd2.dict_id = '222842ea3bb4468bbbeaa3856a4f2731'
left join t_sys_org so on hwp.org_id = so.org_id
where hwp.status = '0' and hwp.work_type!='' and hwp.work_level !=''
<if
test=
"query.workType!=null and query.workType != ''"
>
and hwp.work_type = #{query.workType}
</if>
<if
test=
"query.workLevel!=null and query.workLevel != ''"
>
and hwp.work_level = #{query.workLevel}
</if>
<if
test=
"query.isEscalated!=null and query.isEscalated != ''"
>
and hwp.is_escalated = #{query.isEscalated}
</if>
<if
test=
"query.workStatus!=null and query.workStatus != ''"
>
and find_in_set(hwp.work_status, #{query.workStatus})
</if>
<if
test=
"query.reportStartDate!=null and query.reportStartDate != '' and query.reportEndDate!=null and query.reportEndDate != ''"
>
and hwp.create_date
<![CDATA[ >= ]]>
#{query.reportStartDate} and hwp.create_date
<![CDATA[ <= ]]>
#{query.reportEndDate}
</if>
<if
test=
"query.orgId != null and query.orgId != ''"
>
AND (
hwp.org_id = #{query.orgId}
OR so.parent_ids LIKE concat('%', #{query.orgId}, '%')
)
</if>
GROUP BY sdd.dict_value, sdd2.dict_value
order by sdd.dict_value, sdd2.dict_value
</select>
<select
id=
"workBasicDetailStatistics"
resultType=
"com.testor.module.hazard.model.dto.THazardWorkPlanDetailStatistics"
>
SELECT
region.org_name as regionName,
bd.org_name as businessDeptName,
so.org_name as currentOrgName,
COUNT(*) as workCount,
SUM(CASE WHEN so.is_rent = '0' THEN 1 ELSE 0 END) as ownCount,
SUM(CASE WHEN so.is_rent = '1' THEN 1 ELSE 0 END) as stakeholderCount
FROM t_hazard_work_plan hwp
LEFT JOIN t_sys_org so ON so.org_id = hwp.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
LEFT JOIN t_sys_org hq ON hq.org_id = region.parent_id
WHERE hwp.status = '0'
<if
test=
"query.workType!=null and query.workType != ''"
>
and hwp.work_type = #{query.workType}
</if>
<if
test=
"query.workLevel!=null and query.workLevel != ''"
>
and hwp.work_level = #{query.workLevel}
</if>
<if
test=
"query.isEscalated!=null and query.isEscalated != ''"
>
and hwp.is_escalated = #{query.isEscalated}
</if>
<if
test=
"query.workStatus!=null and query.workStatus != ''"
>
and find_in_set(hwp.work_status, #{query.workStatus})
</if>
<if
test=
"query.reportStartDate!=null and query.reportStartDate != '' and query.reportEndDate!=null and query.reportEndDate != ''"
>
and hwp.create_date
<![CDATA[ >= ]]>
#{query.reportStartDate} and hwp.create_date
<![CDATA[ <= ]]>
#{query.reportEndDate}
</if>
<if
test=
"query.orgId != null and query.orgId != ''"
>
AND (
hwp.org_id = #{query.orgId}
OR so.parent_ids LIKE concat('%', #{query.orgId}, '%')
)
</if>
GROUP BY hq.org_name, region.org_name, bd.org_name, so.org_name
ORDER BY hq.org_name, region.org_name, bd.org_name, so.org_name, workCount DESC
</select>
<select
id=
"workTypeDetailStatistics"
resultType=
"com.testor.module.hazard.model.dto.THazardWorkPlanDetailStatistics"
>
SELECT
region.org_name as regionName,
bd.org_name as businessDeptName,
so.org_name as currentOrgName,
sdd_type.dict_value as workType,
COUNT(*) as workTypeCount
FROM t_hazard_work_plan hwp
LEFT JOIN t_sys_org so ON so.org_id = hwp.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
LEFT JOIN t_sys_org hq ON hq.org_id = region.parent_id
LEFT JOIN t_sys_dict_data sdd_type ON sdd_type.dict_data_id = hwp.work_type
AND sdd_type.dict_id = '42a87414a06a4f57b9d3ffb1907284b4'
WHERE hwp.status = '0'
<if
test=
"query.workLevel!=null and query.workLevel != ''"
>
and hwp.work_level = #{query.workLevel}
</if>
<if
test=
"query.isEscalated!=null and query.isEscalated != ''"
>
and hwp.is_escalated = #{query.isEscalated}
</if>
<if
test=
"query.workStatus!=null and query.workStatus != ''"
>
and find_in_set(hwp.work_status, #{query.workStatus})
</if>
<if
test=
"query.reportStartDate!=null and query.reportStartDate != '' and query.reportEndDate!=null and query.reportEndDate != ''"
>
and hwp.create_date
<![CDATA[ >= ]]>
#{query.reportStartDate} and hwp.create_date
<![CDATA[ <= ]]>
#{query.reportEndDate}
</if>
<if
test=
"query.orgId != null and query.orgId != ''"
>
AND (
hwp.org_id = #{query.orgId}
OR so.parent_ids LIKE concat('%', #{query.orgId}, '%')
)
</if>
GROUP BY hq.org_name, region.org_name, bd.org_name, so.org_name, sdd_type.dict_value
ORDER BY hq.org_name, region.org_name, bd.org_name, so.org_name
</select>
<select
id=
"workLevelDetailStatistics"
resultType=
"com.testor.module.hazard.model.dto.THazardWorkPlanDetailStatistics"
>
SELECT
region.org_name as regionName,
bd.org_name as businessDeptName,
so.org_name as currentOrgName,
sdd_level.dict_value as workLevel,
COUNT(*) as workLevelCount
FROM t_hazard_work_plan hwp
LEFT JOIN t_sys_org so ON so.org_id = hwp.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
LEFT JOIN t_sys_org hq ON hq.org_id = region.parent_id
LEFT JOIN t_sys_dict_data sdd_level ON sdd_level.dict_data_id = hwp.work_level
AND sdd_level.dict_id = '222842ea3bb4468bbbeaa3856a4f2731'
WHERE hwp.status = '0'
<if
test=
"query.workType!=null and query.workType != ''"
>
and hwp.work_type = #{query.workType}
</if>
<if
test=
"query.isEscalated!=null and query.isEscalated != ''"
>
and hwp.is_escalated = #{query.isEscalated}
</if>
<if
test=
"query.workStatus!=null and query.workStatus != ''"
>
and find_in_set(hwp.work_status, #{query.workStatus})
</if>
<if
test=
"query.reportStartDate!=null and query.reportStartDate != '' and query.reportEndDate!=null and query.reportEndDate != ''"
>
and hwp.create_date
<![CDATA[ >= ]]>
#{query.reportStartDate} and hwp.create_date
<![CDATA[ <= ]]>
#{query.reportEndDate}
</if>
<if
test=
"query.orgId != null and query.orgId != ''"
>
AND (
hwp.org_id = #{query.orgId}
OR so.parent_ids LIKE concat('%', #{query.orgId}, '%')
)
</if>
GROUP BY hq.org_name, region.org_name, bd.org_name, so.org_name, sdd_level.dict_value
ORDER BY hq.org_name, region.org_name, bd.org_name, so.org_name
</select>
<select
id=
"workStatusDetailStatistics"
resultType=
"com.testor.module.hazard.model.dto.THazardWorkPlanDetailStatistics"
>
-- 按危险作业状态统计
SELECT
region.org_name as regionName,
bd.org_name as businessDeptName,
so.org_name as currentOrgName,
sdd_status.dict_value as workStatus,
COUNT(*) as workStatusCount
FROM t_hazard_work_plan hwp
LEFT JOIN t_sys_org so ON so.org_id = hwp.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
LEFT JOIN t_sys_org hq ON hq.org_id = region.parent_id
LEFT JOIN t_sys_dict_data sdd_status ON sdd_status.dict_key = hwp.work_status
AND sdd_status.dict_id = '60c11c98359b4cd09b7220202abf9e0b'
WHERE hwp.status = '0'
<if
test=
"query.workType!=null and query.workType != ''"
>
and hwp.work_type = #{query.workType}
</if>
<if
test=
"query.workLevel!=null and query.workLevel != ''"
>
and hwp.work_level = #{query.workLevel}
</if>
<if
test=
"query.isEscalated!=null and query.isEscalated != ''"
>
and hwp.is_escalated = #{query.isEscalated}
</if>
<if
test=
"query.reportStartDate!=null and query.reportStartDate != '' and query.reportEndDate!=null and query.reportEndDate != ''"
>
and hwp.create_date
<![CDATA[ >= ]]>
#{query.reportStartDate} and hwp.create_date
<![CDATA[ <= ]]>
#{query.reportEndDate}
</if>
<if
test=
"query.orgId != null and query.orgId != ''"
>
AND (
hwp.org_id = #{query.orgId}
OR so.parent_ids LIKE concat('%', #{query.orgId}, '%')
)
</if>
GROUP BY hq.org_name, region.org_name, bd.org_name, so.org_name, sdd_status.dict_value
ORDER BY hq.org_name, region.org_name, bd.org_name, so.org_name, workStatusCount DESC
</select>
</mapper>
\ No newline at end of file
zlmy-modules/zlmy-boot/src/main/resources/mapper/hazard/THazardWorkPlan.xml
View file @
856f0a73
...
...
@@ -181,4 +181,6 @@
</if>
</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