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
085c9877
Commit
085c9877
authored
Nov 04, 2025
by
鲁鸿波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
危险作业检查统计开发
parent
73f926a0
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
650 additions
and
24 deletions
+650
-24
上线说明.md
zlmy-modules/zlmy-boot/doc/国产化/上线说明.md
+47
-15
THazardWorkPlanCheckStatisticsController.java
.../controller/THazardWorkPlanCheckStatisticsController.java
+93
-0
THazardWorkPlanCheckDao.java
...com/testor/module/hazard/dao/THazardWorkPlanCheckDao.java
+34
-0
THazardWorkPlanDao.java
...java/com/testor/module/hazard/dao/THazardWorkPlanDao.java
+4
-0
HazardWorkPlanCheckEnterpriseComplianceDto.java
...model/dto/HazardWorkPlanCheckEnterpriseComplianceDto.java
+25
-0
HazardWorkPlanCheckStatsDTO.java
.../module/hazard/model/dto/HazardWorkPlanCheckStatsDTO.java
+29
-0
THazardWorkPlanCheckParam.java
...or/module/hazard/model/dto/THazardWorkPlanCheckParam.java
+3
-0
HazardWorkPlanCheckProblemCountStatisticsVO.java
...model/vo/HazardWorkPlanCheckProblemCountStatisticsVO.java
+25
-2
THazardWorkPlanCheckService.java
...or/module/hazard/service/THazardWorkPlanCheckService.java
+38
-0
THazardConditionConfirmationServiceImpl.java
...service/impl/THazardConditionConfirmationServiceImpl.java
+2
-2
THazardWorkPlanCheckServiceImpl.java
.../hazard/service/impl/THazardWorkPlanCheckServiceImpl.java
+103
-0
THazardWorkPlanServiceImpl.java
...odule/hazard/service/impl/THazardWorkPlanServiceImpl.java
+70
-4
TSysOrgDao.java
...rc/main/java/com/testor/module/notice/dao/TSysOrgDao.java
+11
-0
NewSysDictDataService.java
.../com/testor/module/sys/service/NewSysDictDataService.java
+9
-0
NewSysDictDataServiceImpl.java
...or/module/sys/service/impl/NewSysDictDataServiceImpl.java
+9
-0
application.yml
zlmy-modules/zlmy-boot/src/main/resources/application.yml
+1
-1
TSysOrgDao.xml
.../src/main/resources/mapper/demo/notice/dao/TSysOrgDao.xml
+5
-0
THazardWorkPlanCheck.xml
...src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
+142
-0
No files found.
zlmy-modules/zlmy-boot/doc/国产化/上线说明.md
View file @
085c9877
...
...
@@ -142,6 +142,11 @@ t_hazard_work_plan_monitoring_record_project
ALTER TABLE t_contractor_person ADD COLUMN contract_period varchar(200) NULL; -- 合同期限
COMMENT ON COLUMN public.t_contractor_person.contract_period IS '合同期限';
INSERT INTO "public"."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 ('72610276671d42089eb558880528269f', '42a87414a06a4f57b9d3ffb1907284b4', '20', '筒仓清仓', '7', '0', '1510a285c7134b39a3d7615835301f21', '2025-11-03 09:25:11', '1510a285c7134b39a3d7615835301f21', '2025-11-03 09:25:58', '', 'b5309e01475d4e93bb0ffb6ec7060265', '0,1a78e1f109904448bda810f2b66a653a,b5309e01475d4e93bb0ffb6ec7060265,');
INSERT INTO "public"."t_sys_resource" ("resource_id", "parent_id", "parent_ids", "resource_name", "resource_sort", "resource_level", "resource_type", "is_show", "resource_url", "photo_url", "permission", "status", "create_by", "create_date", "update_by", "update_date", "remarks", "router_mapping", "resource_auth_type") VALUES ('b7637e7a899e436e8aad2bfaa47d94f1', '98dda60d04bb453192d908afcb07ba61', '0,98dda60d04bb453192d908afcb07ba61,', '危险作业合规率', '5', '2', '2', '0', '/dangerous-work/statistics/complianceRate', 'el-icon-finished', NULL, '0', '1242684364872761344', '2025-11-04 10:39:33', '1242684364872761344', '2025-11-04 10:41:52', NULL, NULL, '2');
...
...
@@ -193,7 +198,8 @@ create_by varchar(64) NULL, -- 创建者
create_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by varchar(64) NULL, -- 更新者
update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
"type" varchar(50) NULL -- 修改项(1:人员 2:工器具 3:防护用品数量 4:防护用品数量)
"type" varchar(50) NULL, -- 修改项(1:人员 2:工器具 3:防护用品数量 4:防护用品数量)
historical_content text NULL -- 历史内容
);
COMMENT ON TABLE public.t_contractor_access_log IS '承包商准入管理访问日志';
...
...
@@ -241,12 +247,14 @@ COMMENT ON COLUMN public.t_contractor_access_log.create_date IS '创建时间';
COMMENT ON COLUMN public.t_contractor_access_log.update_by IS '更新者';
COMMENT ON COLUMN public.t_contractor_access_log.update_date IS '更新时间';
COMMENT ON COLUMN public.t_contractor_access_log."type" IS '修改项(1:人员 2:工器具 3:防护用品数量 4:防护用品数量)';
COMMENT ON COLUMN public.t_contractor_access_log.historical_content IS '历史内容';
-- public.t_contractor_access_log foreign keys
-- public.t_contractor_access_log_approval definition
-- Drop table
...
...
@@ -267,9 +275,10 @@ update_by varchar(64) NULL, -- 更新者
update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
"type" varchar(50) NULL, -- 修改项(1:人员 2:工器具 3:防护用品数量 4:防护用品数量)
contractor_allow_id varchar(64) NULL, -- 准入管理对象ID
name_by varchar(500) NULL
name_by varchar(500) NULL,
approval_time varchar(200) NULL -- 审批时间
);
COMMENT ON TABLE public.t_contractor_access_log_approval IS '
承包商准入管理访问日志审批
表';
COMMENT ON TABLE public.t_contractor_access_log_approval IS '
危险作业监测记录
表';
-- Column comments
...
...
@@ -285,26 +294,35 @@ COMMENT ON COLUMN public.t_contractor_access_log_approval.update_by IS '更新
COMMENT ON COLUMN public.t_contractor_access_log_approval.update_date IS '更新时间';
COMMENT ON COLUMN public.t_contractor_access_log_approval."type" IS '修改项(1:人员 2:工器具 3:防护用品数量 4:防护用品数量)';
COMMENT ON COLUMN public.t_contractor_access_log_approval.contractor_allow_id IS '准入管理对象ID';
COMMENT ON COLUMN public.t_contractor_access_log_approval.approval_time IS '审批时间';
-- public.t_contractor_access_log_approval foreign keys
-- public.t_hazard_work_plan_monitoring_record definition
-- Drop table
-- DROP TABLE public.t_hazard_work_plan_monitoring_record;
CREATE TABLE public.t_hazard_work_plan_monitoring_record (
id varchar(64) NOT NULL,
plan_id varchar(64) NULL,
detection_position varchar(500) NULL,
conclusion varchar(500) NULL,
scene_photo varchar(500) NULL,
id varchar(64) NOT NULL,
-- 主键ID
plan_id varchar(64) NULL,
-- 危险作业id
detection_position varchar(500) NULL,
-- 检测位置
conclusion varchar(500) NULL,
-- 结论
scene_photo varchar(500) NULL,
-- 现场照片
status varchar(1) NULL DEFAULT '0'::varchar,
inspector_signature varchar(500) NULL,
inspector_time
timestamp,
inspector_signature varchar(500) NULL,
-- 检测人签字
inspector_time
sys."timestamp" NULL, -- 检测时间
create_by varchar(64) NULL,
create_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_by varchar(64) NULL,
update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP
update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP,
remarks varchar(255) NULL -- 备注
);
COMMENT ON TABLE public.t_contractor_access_log_approval IS '危险作业监测记录表';
-- Column comments
...
...
@@ -315,13 +333,24 @@ COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.conclusion IS '结
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.scene_photo IS '现场照片';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.inspector_signature IS '检测人签字';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.inspector_time IS '检测时间';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.remarks IS '备注';
-- public.t_hazard_work_plan_monitoring_record foreign keys
-- public.t_hazard_work_plan_monitoring_record_project definition
-- Drop table
-- DROP TABLE public.t_hazard_work_plan_monitoring_record_project;
CREATE TABLE public.t_hazard_work_plan_monitoring_record_project (
id varchar(64) NOT NULL,
project_name varchar(200) NULL,
project_value varchar(500) NULL,
hazard_work_plan_monitoring_record_id varchar(64) NULL,
project_name varchar(200) NULL,
-- 项目名称
project_value varchar(500) NULL,
-- 项目值
hazard_work_plan_monitoring_record_id varchar(64) NULL,
-- 危险作业监测记录表id
status varchar(1) NULL DEFAULT '0'::varchar,
create_by varchar(64) NULL,
create_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP,
...
...
@@ -330,6 +359,8 @@ update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE public.t_hazard_work_plan_monitoring_record_project IS '危险作业监测记录项目表';
-- Column comments
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.project_name IS '项目名称';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.project_value IS '项目值';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.hazard_work_plan_monitoring_record_id IS '危险作业监测记录表id';
\ No newline at end of file
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/controller/THazardWorkPlanCheckStatisticsController.java
0 → 100644
View file @
085c9877
package
com
.
testor
.
module
.
hazard
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.*
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemTypeStatisticsVO
;
import
com.testor.module.hazard.service.THazardWorkPlanCheckService
;
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.ObjectHelper
;
import
com.tongtech.tfw.backend.core.helper.StringHelper
;
import
com.tongtech.tfw.backend.core.helper.TypeHelper
;
import
com.tongtech.tfw.backend.core.helper.bean.BeanHelper
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 危险作业计划监督检查统计Controller
*
* @author testor-framework
* @date 2025-04-16 10:09:22
*/
@RestController
@RequestMapping
(
"/hazard/checkStatistics"
)
@Api
(
value
=
"THazardWorkPlanCheckStatistics"
,
tags
=
"危险作业计划监督检查统计"
)
@Slf4j
public
class
THazardWorkPlanCheckStatisticsController
extends
SuperController
{
@Autowired
private
THazardWorkPlanCheckService
tHazardWorkPlanCheckService
;
@ApiOperation
(
value
=
"企业总数,合规数,不合规数,问题数,合规企业数,合规比例 "
)
@GetMapping
(
value
=
"/selectHazardWorkPlanCheckStats"
)
public
BaseResponse
<
HazardWorkPlanCheckStatsDTO
>
selectHazardWorkPlanCheckStats
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
){
BaseResponse
<
HazardWorkPlanCheckStatsDTO
>
baseResponse
=
new
BaseResponse
<>();
tHazardWorkPlanCheckParam
.
setUserId
(
getUserId
());
HazardWorkPlanCheckStatsDTO
data
=
tHazardWorkPlanCheckService
.
selectHazardWorkPlanCheckStats
(
tHazardWorkPlanCheckParam
);
baseResponse
.
setData
(
data
);
return
baseResponse
;
}
@ApiOperation
(
value
=
"企业合规数"
)
@GetMapping
(
value
=
"/enterpriseComplianceNumber"
)
public
BaseResponse
<
List
<
HazardWorkPlanCheckEnterpriseComplianceDto
>>
enterpriseComplianceNumber
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
){
BaseResponse
<
List
<
HazardWorkPlanCheckEnterpriseComplianceDto
>>
baseResponse
=
new
BaseResponse
<>();
tHazardWorkPlanCheckParam
.
setUserId
(
getUserId
());
List
<
HazardWorkPlanCheckEnterpriseComplianceDto
>
data
=
tHazardWorkPlanCheckService
.
enterpriseComplianceNumber
(
tHazardWorkPlanCheckParam
);
baseResponse
.
setData
(
data
);
return
baseResponse
;
}
@ApiOperation
(
value
=
"问题数量统计"
)
@GetMapping
(
value
=
"/selectProblemCountStatistics"
)
public
BaseResponse
<
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>>
selectProblemCountStatistics
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
){
BaseResponse
<
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>>
baseResponse
=
new
BaseResponse
<>();
tHazardWorkPlanCheckParam
.
setUserId
(
getUserId
());
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
data
=
tHazardWorkPlanCheckService
.
selectProblemCountStatistics
(
tHazardWorkPlanCheckParam
);
baseResponse
.
setData
(
data
);
return
baseResponse
;
}
@ApiOperation
(
value
=
"企业合规率"
)
@GetMapping
(
value
=
"/corporateComplianceRate"
)
public
BaseResponse
<
BaseResponseList
<
HazardWorkPlanCheckProblemCountStatisticsVO
>>
corporateComplianceRate
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
){
BaseResponse
<
BaseResponseList
<
HazardWorkPlanCheckProblemCountStatisticsVO
>>
baseResponse
=
new
BaseResponse
<>();
tHazardWorkPlanCheckParam
.
setUserId
(
getUserId
());
Page
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
resultList
=
tHazardWorkPlanCheckService
.
corporateComplianceRate
(
tHazardWorkPlanCheckParam
);
BaseResponseList
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
baseResponseList
=
new
BaseResponseList
<>();
baseResponseList
.
setData
(
resultList
.
getRecords
());
baseResponseList
.
setTotal
(
resultList
.
getTotal
());
baseResponse
.
setData
(
baseResponseList
);
return
baseResponse
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/dao/THazardWorkPlanCheckDao.java
View file @
085c9877
...
...
@@ -3,6 +3,7 @@ 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.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanCheckParam
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
...
...
@@ -93,5 +94,38 @@ public interface THazardWorkPlanCheckDao extends SuperDao<THazardWorkPlanCheck>
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
selectCheckProblemCountStatistics
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 获取危险作业计划检查统计
*/
HazardWorkPlanCheckStatsDTO
selectHazardWorkPlanCheckStats
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 查询符合条件的危险作业计划检查数量
* @param orgId
* @param startTime
* @param endTime
* @return
*/
Integer
selectComplianceCount
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 查询不符合条件的危险作业计划检查数量
* @param orgId
* @param startTime
* @param endTime
* @return
*/
Double
selectNoComplianceCount
(
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
,
@Param
(
"problemType"
)
String
problemType
);
/**
* 企业合规率
* @param orgId
* @param startTime
* @param endTime
* @param basicId
* @return
*/
Page
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
corporateComplianceRate
(
@Param
(
"page"
)
IPage
page
,
@Param
(
"param"
)
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/dao/THazardWorkPlanDao.java
View file @
085c9877
...
...
@@ -7,6 +7,7 @@ import com.tongtech.tfw.backend.common.models.supers.SuperDao;
import
com.tongtech.tfw.workflow.apis.task.model.dto.TodoTask
;
import
com.tongtech.tfw.workflow.apis.task.model.dto.TodoTaskSqlParam
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Update
;
/**
* 危险作业计划Mapper接口
...
...
@@ -17,4 +18,7 @@ import org.apache.ibatis.annotations.Param;
public
interface
THazardWorkPlanDao
extends
SuperDao
<
THazardWorkPlan
>
{
IPage
<
TodoTask
>
selectToDoList
(
Page
<
TodoTask
>
resultPage
,
@Param
(
"todo"
)
TodoTaskSqlParam
todoTaskSqlParam
);
@Update
(
"UPDATE t_hazard_work_plan SET actual_start_time = NOW() WHERE id = #{id}"
)
void
updateActualStartTime
(
@Param
(
"id"
)
Long
id
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanCheckEnterpriseComplianceDto.java
0 → 100644
View file @
085c9877
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
value
=
"HazardWorkPlanCheckStatsDTO"
,
description
=
"危险作业计划检查企业合规数"
)
public
class
HazardWorkPlanCheckEnterpriseComplianceDto
{
@ApiModelProperty
(
"企业名称"
)
private
String
name
;
@ApiModelProperty
(
"合规数量"
)
private
Integer
count
;
public
HazardWorkPlanCheckEnterpriseComplianceDto
(
String
name
,
Integer
count
)
{
this
.
name
=
name
;
this
.
count
=
count
;
}
public
HazardWorkPlanCheckEnterpriseComplianceDto
()
{
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/HazardWorkPlanCheckStatsDTO.java
0 → 100644
View file @
085c9877
package
com
.
testor
.
module
.
hazard
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
value
=
"HazardWorkPlanCheckStatsDTO"
,
description
=
"危险作业计划检查统计结果"
)
public
class
HazardWorkPlanCheckStatsDTO
{
@ApiModelProperty
(
value
=
"企业总数"
)
private
Integer
basicUnitCount
;
@ApiModelProperty
(
value
=
"合规企业数"
)
private
Integer
complianceBasicUnitCount
;
@ApiModelProperty
(
value
=
"不合规企业数"
)
private
Integer
noComplianceBasicUnitCount
;
@ApiModelProperty
(
value
=
"问题数"
)
private
Integer
numberCount
;
@ApiModelProperty
(
value
=
"危险作业数量"
)
private
Integer
workCount
;
@ApiModelProperty
(
value
=
"合规比例"
)
private
double
complianceRatio
;
}
\ No newline at end of file
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/dto/THazardWorkPlanCheckParam.java
View file @
085c9877
...
...
@@ -54,4 +54,7 @@ public class THazardWorkPlanCheckParam extends THazardWorkPlanCheck {
@ApiModelProperty
(
value
=
"orgId(下钻条件传)"
)
private
String
orgId
;
@ApiModelProperty
(
value
=
"用户id"
)
private
String
userId
;
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/model/vo/HazardWorkPlanCheckProblemCountStatisticsVO.java
View file @
085c9877
...
...
@@ -11,8 +11,6 @@ import lombok.NoArgsConstructor;
* @return
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
HazardWorkPlanCheckProblemCountStatisticsVO
{
@ApiModelProperty
(
value
=
"问题日期"
)
...
...
@@ -21,7 +19,32 @@ public class HazardWorkPlanCheckProblemCountStatisticsVO {
@ApiModelProperty
(
value
=
"问题数量"
)
private
Double
problemCount
;
@ApiModelProperty
(
value
=
"问题名称"
)
private
String
problemName
;
@ApiModelProperty
(
value
=
"合规率"
)
private
Double
complianceRate
;
@ApiModelProperty
(
value
=
"是否合规"
)
private
String
isCompliant
;
@ApiModelProperty
(
value
=
"问题单位id"
)
private
String
basicId
;
@ApiModelProperty
(
value
=
"问题单位"
)
private
String
basicUnit
;
public
HazardWorkPlanCheckProblemCountStatisticsVO
()
{
}
public
HazardWorkPlanCheckProblemCountStatisticsVO
(
String
problemDate
,
Double
problemCount
,
String
problemName
)
{
this
.
problemDate
=
problemDate
;
this
.
problemCount
=
problemCount
;
this
.
problemName
=
problemName
;
}
public
HazardWorkPlanCheckProblemCountStatisticsVO
(
String
problemName
,
Double
problemCount
)
{
this
.
problemCount
=
problemCount
;
this
.
problemName
=
problemName
;
}
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/THazardWorkPlanCheckService.java
View file @
085c9877
...
...
@@ -5,6 +5,8 @@ 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.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckEnterpriseComplianceDto
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanCheckParam
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
...
...
@@ -94,4 +96,40 @@ public interface THazardWorkPlanCheckService extends SuperService<THazardWorkPla
*/
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
selectCheckProblemCountStatistics
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 获取危险作业计划检查统计
*/
HazardWorkPlanCheckStatsDTO
selectHazardWorkPlanCheckStats
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 企业合规数
* @param userId
* @param startTime
* @param endTime
* @return
*/
List
<
HazardWorkPlanCheckEnterpriseComplianceDto
>
enterpriseComplianceNumber
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 问题数量统计
* @param userId
* @param startTime
* @param endTime
* @return
*/
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
selectProblemCountStatistics
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
/**
* 企业合规率
* @param userId
* @param startTime
* @param endTime
* @param basicId
* @return
*/
Page
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
corporateComplianceRate
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/THazardConditionConfirmationServiceImpl.java
View file @
085c9877
...
...
@@ -141,8 +141,8 @@ public class THazardConditionConfirmationServiceImpl extends SuperServiceImpl<TH
todayStr
=
today
.
format
(
DateTimeFormatter
.
ISO_DATE
);
}
//查询所有未完成的工作计划,且状态不为关闭或取消或已超时(关闭时判断结束时间在当前时间之前设置的状态)
THazardWorkPlanParam
tHazardWorkPlanParam
=
new
THazardWorkPlanParam
();
tHazardWorkPlanParam
.
setActualStartTime
(
new
Date
());
/*
THazardWorkPlanParam tHazardWorkPlanParam = new THazardWorkPlanParam();
tHazardWorkPlanParam.setActualStartTime(new Date());
*/
QueryWrapper
<
THazardWorkPlan
>
query
=
new
QueryWrapper
<>();
query
.
le
(
THazardWorkPlan
.
ACTUAL_START_TIME
,
new
Date
());
query
.
isNotNull
(
THazardWorkPlan
.
ACTUAL_START_TIME
);
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/THazardWorkPlanCheckServiceImpl.java
View file @
085c9877
...
...
@@ -10,23 +10,33 @@ import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
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.service.SysDictDataService
;
import
com.testor.biz.sys.org.model.domain.SysOrg
;
import
com.testor.biz.sys.org.service.SysOrgService
;
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.model.domain.THazardWorkPlan
;
import
com.testor.module.hazard.model.domain.THazardWorkPlanCheck
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckEnterpriseComplianceDto
;
import
com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO
;
import
com.testor.module.hazard.model.dto.THazardWorkPlanCheckParam
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckComplianceStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemTypeStatisticsVO
;
import
com.testor.module.hazard.model.vo.HazardWorkPlanCheckVO
;
import
com.testor.module.hazard.service.THazardWorkPlanCheckService
;
import
com.testor.module.iam.service.SysUserService
;
import
com.testor.module.notice.dao.TSysOrgDao
;
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.sys.dao.NewSysOrgDao
;
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.context.ContextUtils
;
import
com.tongtech.tfw.backend.core.helper.IdHelper
;
...
...
@@ -71,6 +81,13 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
@Autowired
private
SysOrgService
sysOrgService
;
@Autowired
private
SysUserService
userService
;
@Autowired
private
NewSysDictDataService
dictDataService
;
@Override
public
Page
<
THazardWorkPlanCheck
>
selectTHazardWorkPlanCheckList
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
IPage
<
THazardWorkPlanCheck
>
page
=
new
Page
<>(
Long
.
valueOf
(
tHazardWorkPlanCheckParam
.
getPage
()),
Long
.
valueOf
(
tHazardWorkPlanCheckParam
.
getLimit
()));
...
...
@@ -258,6 +275,92 @@ public class THazardWorkPlanCheckServiceImpl extends SuperServiceImpl<THazardWor
return
this
.
baseMapper
.
selectCheckProblemCountStatistics
(
tHazardWorkPlanCheckParam
);
}
@Override
public
HazardWorkPlanCheckStatsDTO
selectHazardWorkPlanCheckStats
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
// 参数验证
if
(
StringUtils
.
isBlank
(
tHazardWorkPlanCheckParam
.
getUserId
()))
{
throw
new
IllegalArgumentException
(
"用户ID不能为空"
);
}
SysUser
user
=
userService
.
getById
(
tHazardWorkPlanCheckParam
.
getUserId
());
if
(
user
==
null
)
{
throw
new
RuntimeException
(
"用户不存在"
);
}
tHazardWorkPlanCheckParam
.
setOrgId
(
user
.
getOrgId
());
//tHazardWorkPlanCheckParam.setOrgId("69223d5d1fa84ff29a0c11863d1b00b7");
HazardWorkPlanCheckStatsDTO
hazardWorkPlanCheckStatsDTO
=
baseMapper
.
selectHazardWorkPlanCheckStats
(
tHazardWorkPlanCheckParam
);
// 计算合规率(基于危险作业数量和问题数)
if
(
hazardWorkPlanCheckStatsDTO
.
getWorkCount
()
!=
null
&&
hazardWorkPlanCheckStatsDTO
.
getWorkCount
()
>
0
)
{
// 使用公式 C = (B - A) / B × 100
// B = workCount(危险作业数量)
// A = numberCount(问题数)
double
complianceRate
=
(
hazardWorkPlanCheckStatsDTO
.
getWorkCount
()
-
hazardWorkPlanCheckStatsDTO
.
getNumberCount
())
*
100.0
/
hazardWorkPlanCheckStatsDTO
.
getWorkCount
();
hazardWorkPlanCheckStatsDTO
.
setComplianceRatio
(
Math
.
round
(
complianceRate
*
100.0
)
/
100.0
);
// 四舍五入保留两位小数
}
else
{
hazardWorkPlanCheckStatsDTO
.
setComplianceRatio
(
0.0
);
}
return
hazardWorkPlanCheckStatsDTO
;
}
@Override
public
List
<
HazardWorkPlanCheckEnterpriseComplianceDto
>
enterpriseComplianceNumber
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
if
(
StringUtils
.
isBlank
(
tHazardWorkPlanCheckParam
.
getUserId
()))
{
throw
new
IllegalArgumentException
(
"用户ID不能为空"
);
}
SysUser
user
=
userService
.
getById
(
tHazardWorkPlanCheckParam
.
getUserId
());
if
(
user
==
null
)
{
throw
new
RuntimeException
(
"用户不存在"
);
}
tHazardWorkPlanCheckParam
.
setOrgId
(
user
.
getOrgId
());
List
<
HazardWorkPlanCheckEnterpriseComplianceDto
>
hazardWorkPlanCheckEnterpriseComplianceDtos
=
new
ArrayList
<>();
List
<
TSysOrg
>
tSysOrgs
=
orgDao
.
selectOrgNameByParentId
(
user
.
getOrgId
());
for
(
TSysOrg
sysOrg:
tSysOrgs
){
hazardWorkPlanCheckEnterpriseComplianceDtos
.
add
(
new
HazardWorkPlanCheckEnterpriseComplianceDto
(
sysOrg
.
getOrgName
(),
baseMapper
.
selectComplianceCount
(
tHazardWorkPlanCheckParam
)));
}
return
hazardWorkPlanCheckEnterpriseComplianceDtos
;
}
@Override
public
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
selectProblemCountStatistics
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
if
(
StringUtils
.
isBlank
(
tHazardWorkPlanCheckParam
.
getUserId
()))
{
throw
new
IllegalArgumentException
(
"用户ID不能为空"
);
}
SysUser
user
=
userService
.
getById
(
tHazardWorkPlanCheckParam
.
getUserId
());
if
(
user
==
null
)
{
throw
new
RuntimeException
(
"用户不存在"
);
}
tHazardWorkPlanCheckParam
.
setOrgId
(
user
.
getOrgId
());
List
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
problemCountStatistics
=
new
ArrayList
<>();
for
(
SysDictData
sysDictData
:
dictDataService
.
getDictId
(
"736049b40cb04b1fb5c2ef5385655ee3"
))
{
problemCountStatistics
.
add
(
new
HazardWorkPlanCheckProblemCountStatisticsVO
(
sysDictData
.
getDictValue
(),
baseMapper
.
selectNoComplianceCount
(
tHazardWorkPlanCheckParam
,
sysDictData
.
getDictDataId
())));
}
return
problemCountStatistics
;
}
@Override
public
Page
<
HazardWorkPlanCheckProblemCountStatisticsVO
>
corporateComplianceRate
(
THazardWorkPlanCheckParam
tHazardWorkPlanCheckParam
)
{
if
(
StringUtils
.
isBlank
(
tHazardWorkPlanCheckParam
.
getUserId
()))
{
throw
new
IllegalArgumentException
(
"用户ID不能为空"
);
}
SysUser
user
=
userService
.
getById
(
tHazardWorkPlanCheckParam
.
getUserId
());
if
(
user
==
null
)
{
throw
new
RuntimeException
(
"用户不存在"
);
}
Long
page
=
StringHelper
.
isEmpty
(
tHazardWorkPlanCheckParam
.
getPage
())
?
BizConstants
.
PAGE
:
Long
.
valueOf
(
tHazardWorkPlanCheckParam
.
getPage
());
Long
limit
=
StringHelper
.
isEmpty
(
tHazardWorkPlanCheckParam
.
getLimit
())
?
BizConstants
.
LIMIT
:
Long
.
valueOf
(
tHazardWorkPlanCheckParam
.
getLimit
());
Page
<
THazardWorkPlan
>
resultPage
=
new
Page
<>(
page
,
limit
);
tHazardWorkPlanCheckParam
.
setOrgId
(
user
.
getOrgId
());
return
baseMapper
.
corporateComplianceRate
(
resultPage
,
tHazardWorkPlanCheckParam
);
}
public
String
montageStartTime
(
String
startTime
){
if
(
startTime
!=
null
&&
!
""
.
equals
(
startTime
)
){
startTime
=
startTime
+
" 00:00:00"
;
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/hazard/service/impl/THazardWorkPlanServiceImpl.java
View file @
085c9877
...
...
@@ -5,6 +5,7 @@ import cn.afterturn.easypoi.word.WordExportUtil;
import
cn.afterturn.easypoi.word.entity.MyXWPFDocument
;
import
cn.hutool.core.convert.Convert
;
import
com.alibaba.fastjson.JSON
;
import
com.aliyun.core.utils.IOUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -89,6 +90,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
...
...
@@ -548,6 +550,10 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
//如果为安全许可证申请
if
(
WorkPlanStatusEnum
.
PERMIT
.
getValue
().
equals
(
workStatus
)
||
"99"
.
equals
(
workStatus
))
{
//更新实际开始时间
if
(
null
!=
id
)
{
tHazardWorkPlanDao
.
updateActualStartTime
(
Long
.
parseLong
(
id
));
}
SysDictData
escalatedLevel
=
sysDictDataService
.
getDictTypeDetail
(
tHazardWorkPlan
.
getEscalatedLevel
(),
null
,
null
);
String
escalatedLevelValue
=
escalatedLevel
.
getDictKey
();
map
.
put
(
"level"
,
escalatedLevelValue
);
...
...
@@ -567,8 +573,6 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
THazardWorkPlan
updWorkPlan
=
new
THazardWorkPlan
();
updWorkPlan
.
setId
(
id
);
//更新实际开始时间
updWorkPlan
.
setActualStartTime
(
new
Date
());
this
.
updateById
(
updWorkPlan
);
}
...
...
@@ -1394,7 +1398,9 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
// 加载模板(可优化到循环外)
Resource
resource
=
resourceLoader
.
getResource
(
"classpath:word/hazardousWorkPermit/disclosure.docx"
);
InputStream
inputStream
=
resource
.
getInputStream
();
if
(
inputStream
==
null
)
return
;
if
(
inputStream
==
null
)
{
return
;
}
XWPFDocument
document
=
new
MyXWPFDocument
(
inputStream
);
WordExportUtil
.
exportWord07
(
document
,
datas
);
...
...
@@ -1554,7 +1560,7 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
// 填充风险分析的模板
@SneakyThrows
private
Integer
buildConditionConfirmation
(
List
<
XWPFDocument
>
wordList
,
THazardWorkPlanDTO
planDTO
,
SimpleDateFormat
sdf
,
Integer
index
)
{
/*
private Integer buildConditionConfirmation(List<XWPFDocument> wordList, THazardWorkPlanDTO planDTO, SimpleDateFormat sdf, Integer index) {
Map<String, Object> datas = new HashMap<>();
populatePlanDetails(planDTO, sdf, datas);
...
...
@@ -1584,6 +1590,66 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
}
}
return index;
}*/
private
Integer
buildConditionConfirmation
(
List
<
XWPFDocument
>
wordList
,
THazardWorkPlanDTO
planDTO
,
SimpleDateFormat
sdf
,
Integer
index
)
{
// 获取基础数据(不变的部分)
Map
<
String
,
Object
>
baseDatas
=
new
HashMap
<>();
populatePlanDetails
(
planDTO
,
sdf
,
baseDatas
);
// 获取条件确认
List
<
THazardConditionConfirmation
>
tHazardConditionConfirmations
=
tHazardConditionConfirmationService
.
list
(
new
QueryWrapper
<
THazardConditionConfirmation
>()
.
eq
(
THazardConditionConfirmation
.
PLAN_ID
,
planDTO
.
getId
()));
if
(
tHazardConditionConfirmations
==
null
||
tHazardConditionConfirmations
.
isEmpty
())
{
return
index
;
}
// 按批次分组
Map
<
Integer
,
List
<
THazardConditionConfirmation
>>
listMap
=
tHazardConditionConfirmations
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
THazardConditionConfirmation:
:
getBatch
));
// 预加载模板到字节数组,避免多次IO
byte
[]
templateBytes
;
try
(
InputStream
templateStream
=
resourceLoader
.
getResource
(
"classpath:word/hazardousWorkPermit/conditionConfirmation.docx"
).
getInputStream
())
{
templateBytes
=
IOUtils
.
toByteArray
(
templateStream
);
}
catch
(
IOException
e
)
{
log
.
error
(
"加载Word模板失败"
,
e
);
return
index
;
}
for
(
Map
.
Entry
<
Integer
,
List
<
THazardConditionConfirmation
>>
entry
:
listMap
.
entrySet
())
{
Integer
batch
=
entry
.
getKey
();
String
format
=
String
.
format
(
"第%s次"
,
Convert
.
numberToChinese
(
batch
,
false
));
// 循环当前批次的数据
for
(
THazardConditionConfirmation
tHazardConditionConfirmation
:
entry
.
getValue
())
{
if
(
tHazardConditionConfirmation
==
null
)
{
continue
;
}
try
{
// 为每个文档创建独立的数据Map
Map
<
String
,
Object
>
datas
=
new
HashMap
<>(
baseDatas
);
// 填充当前记录的特有数据
populateHazardConditionConfirmationDetails
(
tHazardConditionConfirmation
,
sdf
,
datas
,
format
);
datas
.
put
(
"index"
,
index
);
index
++;
// 从字节数组创建文档,避免文件IO
try
(
ByteArrayInputStream
inputStream
=
new
ByteArrayInputStream
(
templateBytes
))
{
XWPFDocument
document
=
new
MyXWPFDocument
(
inputStream
);
WordExportUtil
.
exportWord07
(
document
,
datas
);
wordList
.
add
(
document
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"生成Word文档失败,记录ID: {}"
,
tHazardConditionConfirmation
.
getId
(),
e
);
// 继续处理下一条记录,不中断整个流程
}
}
}
return
index
;
}
private
void
populateHazardConditionConfirmationDetails
(
THazardConditionConfirmation
tHazardConditionConfirmation
,
SimpleDateFormat
sdf
,
Map
<
String
,
Object
>
datas
,
String
batch
)
{
...
...
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/notice/dao/TSysOrgDao.java
View file @
085c9877
...
...
@@ -38,6 +38,17 @@ public interface TSysOrgDao extends SuperDao<TSysOrg> {
*/
List
<
TSysOrg
>
selectIsRentDept
();
@Select
(
"select * from t_sys_org\n"
+
"where parent_id = #{orgId} and status = '0'"
)
List
<
TSysOrg
>
selectOrgNameByParentId
(
@Param
(
"orgId"
)
String
orgId
);
/**
* 查询父级下所有子级组织id
* @param orgId
* @return
*/
List
<
String
>
selectOrgIdByParentId
(
@Param
(
"orgId"
)
String
orgId
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/sys/service/NewSysDictDataService.java
View file @
085c9877
...
...
@@ -91,4 +91,13 @@ public interface NewSysDictDataService {
* @return
*/
SysDictData
getDictDataById
(
String
dictDataId
);
/**
* 根据字典id获取字典数据
* @param dictId 字典id
* @return
*/
List
<
SysDictData
>
getDictId
(
String
dictId
);
}
zlmy-modules/zlmy-boot/src/main/java/com/testor/module/sys/service/impl/NewSysDictDataServiceImpl.java
View file @
085c9877
...
...
@@ -161,4 +161,13 @@ public class NewSysDictDataServiceImpl implements NewSysDictDataService {
public
SysDictData
getDictDataById
(
String
dictDataId
)
{
return
sysDictDataService
.
getById
(
dictDataId
);
}
@Override
public
List
<
SysDictData
>
getDictId
(
String
dictId
)
{
List
<
SysDictType
>
list
=
this
.
sysDictTypeService
.
list
(
new
QueryWrapper
<
SysDictType
>().
eq
(
"dict_id"
,
dictId
));
if
(
ObjectHelper
.
isNotEmpty
(
list
))
{
return
sysDictDataService
.
list
(
new
QueryWrapper
<
SysDictData
>().
eq
(
"dict_id"
,
dictId
));
}
return
Collections
.
emptyList
();
}
}
zlmy-modules/zlmy-boot/src/main/resources/application.yml
View file @
085c9877
...
...
@@ -99,6 +99,6 @@ tiny:
# 人员资质定时任务,打166包时设为false
service
:
taskEnabled
:
tru
e
taskEnabled
:
fals
e
zlmy-modules/zlmy-boot/src/main/resources/mapper/demo/notice/dao/TSysOrgDao.xml
View file @
085c9877
...
...
@@ -61,4 +61,9 @@
)
</select>
<select
id=
"selectOrgIdByParentId"
resultType=
"string"
>
select org_id from t_sys_org
where status = '0' and parent_ids like concat('%',#{orgId},'%') or org_id =#{orgId}
</select>
</mapper>
\ No newline at end of file
zlmy-modules/zlmy-boot/src/main/resources/mapper/hazard/THazardWorkPlanCheck.xml
View file @
085c9877
...
...
@@ -288,4 +288,146 @@
dates.timeStr
</select>
<sql
id=
"orgIdFilter"
>
AND basic_id IN (
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId} OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
</sql>
<sql
id=
"checkTimeFilter"
>
<if
test=
"param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''"
>
AND check_time BETWEEN #{param.startTime} AND #{param.endTime}
</if>
</sql>
<select
id=
"selectHazardWorkPlanCheckStats"
resultType=
"com.testor.module.hazard.model.dto.HazardWorkPlanCheckStatsDTO"
>
SELECT
<!-- 企业总数(有检查记录的企业)-->
(SELECT COUNT(DISTINCT basic_unit)
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
) AS basicUnitCount,
<!-- 合规企业数(企业合规率 >= 95%)-->
(SELECT COUNT(*)
FROM (
SELECT basic_unit
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
GROUP BY basic_unit
HAVING
CASE
WHEN COUNT(*) = 0 THEN 0
ELSE (SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*))
END
<![CDATA[ >= ]]>
95
) AS compliant_enterprises) AS complianceBasicUnitCount,
<!-- 不合规企业数(企业合规率 < 95%)-->
(SELECT COUNT(*)
FROM (
SELECT basic_unit
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
GROUP BY basic_unit
HAVING
CASE
WHEN COUNT(*) = 0 THEN 0
ELSE (SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*))
END
<![CDATA[ < ]]>
95
) AS non_compliant_enterprises) AS noComplianceBasicUnitCount,
<!-- 问题数-->
(SELECT COUNT(*)
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
AND is_compliant = '0'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
) AS numberCount,
<!--危险作业数量-->
(select count(1) from t_hazard_work_plan
where work_status!='0'
AND org_id IN (
SELECT org_id FROM t_sys_org
WHERE org_id = #{param.orgId} OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
<if
test=
"param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''"
>
AND create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
) As workCount
FROM DUAL
</select>
<select
id=
"selectComplianceCount"
resultType=
"java.lang.Integer"
>
SELECT COUNT(*)
FROM (
SELECT basic_unit
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
GROUP BY basic_unit
HAVING
CASE
WHEN COUNT(*) = 0 THEN 0
ELSE (SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*))
END
<![CDATA[ >= ]]>
95
order by complianceRate desc
) AS compliant_enterprises
</select>
<select
id=
"selectNoComplianceCount"
resultType=
"java.lang.Double"
>
SELECT COUNT(1)
FROM t_hazard_work_plan_check
WHERE status = '0'
AND check_status = '2'
AND is_compliant = '0'
<include
refid=
"orgIdFilter"
/>
<include
refid=
"checkTimeFilter"
/>
<if
test=
"problemType!=null and problemType!=''"
>
AND problem_type = #{problemType}
</if>
</select>
<select
id=
"corporateComplianceRate"
resultType=
"com.testor.module.hazard.model.vo.HazardWorkPlanCheckProblemCountStatisticsVO"
>
SELECT
t.basic_id,
t.basic_unit,
<!-- 计算合规率(数值)-->
ROUND(
(SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*)),
2
) AS complianceRate,
<!-- 判断是否合规(合规率 >= 95%)-->
CASE
WHEN COUNT(*) = 0 THEN '无数据'
WHEN (SUM(CASE WHEN is_compliant = '1' THEN 1 ELSE 0 END) * 100.0 / COUNT(*))
<![CDATA[ >= ]]>
95 THEN '合规'
ELSE '不合规'
END AS isCompliant
FROM t_hazard_work_plan_check t
WHERE status = '0'
AND check_status = '2'
<include
refid=
"orgIdFilter"
/>
<if
test=
"param.basicId != null and param.basicId != ''"
>
AND t.basic_id = #{param.basicId}
</if>
<include
refid=
"checkTimeFilter"
/>
GROUP BY t.basic_id, t.basic_unit
ORDER BY complianceRate DESC
</select>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment