From c156b3a9fd93b6fcc912442bf5c7220d9c3d03ef Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Sun, 12 May 2024 23:13:58 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/call/HikvisionCall.java | 2 + .../xmgl/modules/basicdata/entity/Notice.java | 2 +- .../IDangerousEngineeringRecordService.java | 3 + ...DangerousEngineeringRecordServiceImpl.java | 34 +- ...rityQualityInspectionRecordController.java | 11 + ...ecurityQualityInspectionRecordTotalVo.java | 9 +- ...SecurityQualityInspectionRecordMapper.java | 3 + ...zSecurityQualityInspectionRecordMapper.xml | 476 ++++++++---------- ...ecurityQualityInspectionRecordService.java | 2 + ...ityQualityInspectionRecordServiceImpl.java | 93 +++- .../task/DangerousEngineeringRecordTask.java | 46 ++ 11 files changed, 403 insertions(+), 278 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/task/DangerousEngineeringRecordTask.java diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 778e4301d..54dfea388 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1286,6 +1286,7 @@ public class HikvisionCall { * @param carInfo */ public void addCarInfoFromHikvision(CarInfo carInfo) throws Exception { + deleteCarInfoForHikvision(carInfo); Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; @@ -1442,6 +1443,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + deleteCarInfoForHikvision(carInfo); //先删除再新增 deleteCarInfoForHikvision(old); addCarInfoFromHikvision(carInfo); diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java index 2730c91e1..250614294 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java @@ -30,7 +30,7 @@ public class Notice implements Serializable { private java.lang.Long id; @ApiModelProperty(value = "类型,1考勤提醒,2人员报警,3车辆,4混凝土监测,5卸料平台,6配电箱,7扬尘,8视频,9标养室,10安全检查,11质量检查,12塔吊,13升降机," + "14电表,15水表,16访客,17,防疫人员通知,18访客通知,19巡检点,20人员的资质证书即将到期,21人员的合同信息即将到期,22人员的保险信息即将到期," + - "23同步人员到海康isc,24同步车辆到海康isc,25同步组织到海康isc 30工作流审批通知,31大屏的安全和质量") + "23同步人员到海康isc,24同步车辆到海康isc,25同步组织到海康isc 30工作流审批通知,31大屏的安全和质量,32大屏的危大") private java.lang.String type; /** * 消息内容 diff --git a/src/main/java/com/zhgd/xmgl/modules/dangerous/service/IDangerousEngineeringRecordService.java b/src/main/java/com/zhgd/xmgl/modules/dangerous/service/IDangerousEngineeringRecordService.java index cd2869d1e..55172451d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/dangerous/service/IDangerousEngineeringRecordService.java +++ b/src/main/java/com/zhgd/xmgl/modules/dangerous/service/IDangerousEngineeringRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.dangerous.entity.DangerousEngineeringRecord; import com.baomidou.mybatisplus.extension.service.IService; +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; import java.math.BigDecimal; import java.util.Date; @@ -23,6 +24,8 @@ public interface IDangerousEngineeringRecordService extends IService paramMap); diff --git a/src/main/java/com/zhgd/xmgl/modules/dangerous/service/impl/DangerousEngineeringRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/dangerous/service/impl/DangerousEngineeringRecordServiceImpl.java index ef34aaed8..d52252406 100644 --- a/src/main/java/com/zhgd/xmgl/modules/dangerous/service/impl/DangerousEngineeringRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/dangerous/service/impl/DangerousEngineeringRecordServiceImpl.java @@ -2,14 +2,19 @@ package com.zhgd.xmgl.modules.dangerous.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zhgd.jeecg.common.api.vo.Result; +import com.gexin.fastjson.JSON; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.mybatis.EntityMap; +import com.zhgd.xmgl.modules.basicdata.entity.Notice; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper; +import com.zhgd.xmgl.modules.basicdata.service.INoticeService; import com.zhgd.xmgl.modules.basicdata.service.impl.SystemUserServiceImpl; import com.zhgd.xmgl.modules.dangerous.entity.*; import com.zhgd.xmgl.modules.dangerous.mapper.*; @@ -19,6 +24,7 @@ import com.zhgd.xmgl.modules.dangerous.service.IDangerousEngineeringSideStationS import com.zhgd.xmgl.modules.dangerous.service.IHiddenDangerInspectRecordService; import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper; import com.zhgd.xmgl.security.util.SecurityUtils; +import com.zhgd.xmgl.util.MapBuilder; import com.zhgd.xmgl.util.MessageUtil; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +45,10 @@ import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) public class DangerousEngineeringRecordServiceImpl extends ServiceImpl implements IDangerousEngineeringRecordService { + @Autowired + SystemUserMapper systemUserMapper; + @Autowired + INoticeService noticeService; @Autowired private DangerousEngineeringAcceptanceCheckMapper dangerousEngineeringAcceptanceCheckMapper; @Autowired @@ -61,11 +71,9 @@ public class DangerousEngineeringRecordServiceImpl extends ServiceImpl queryDangerousEngineeringPageList(Map map) { int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); @@ -106,10 +114,27 @@ public class DangerousEngineeringRecordServiceImpl extends ServiceImpl systemUsers = systemUserMapper.getSystemUsers(new MapBuilder().put("sn", projectSn).put("type", 3).build()); + for (SystemUser systemUser : systemUsers) { + Notice notice = new Notice(); + notice.setType("32"); + notice.setMsg(format); + notice.setAccountId(systemUser.getUserId()); + notice.setTitle("大屏通知"); + notice.setSendTime(DateUtil.now()); + notice.setPayload(JSON.toJSONString(new MapBuilder().put("isSuperDanger", isSuperDanger).put("time", time).build())); + noticeService.addNotice(notice, false); + } + } + private void replaceTypeDescribeAndControllerContent(DangerousEngineeringRecord dangerousEngineeringRecord) { Long id = dangerousEngineeringRecord.getId(); dangerousEngineeringChooseTypeDescribeMapper.delete(new LambdaQueryWrapper() @@ -141,6 +166,9 @@ public class DangerousEngineeringRecordServiceImpl extends ServiceImpl> countQualityInspectionRecordRegion(@ApiIgnore @RequestBody HashMap paramMap) { @@ -477,4 +478,14 @@ public class XzSecurityQualityInspectionRecordController { resultMap.put("radio", subtract); return Result.success(resultMap); } + + + @ApiOperation(value = "风险走势图", notes = "风险走势图", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"), + }) + @PostMapping(value = "/riskChart") + public Result> riskChart(@RequestBody Map map) { + return Result.success(qualityInspectionRecordService.riskChart(map)); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/vo/XzSecurityQualityInspectionRecordTotalVo.java b/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/vo/XzSecurityQualityInspectionRecordTotalVo.java index 6b6482ccd..16d4cb8ff 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/vo/XzSecurityQualityInspectionRecordTotalVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/vo/XzSecurityQualityInspectionRecordTotalVo.java @@ -12,7 +12,9 @@ public class XzSecurityQualityInspectionRecordTotalVo { private Double rectificationRatio; @ApiModelProperty("合格(已闭合)") private Integer closeNum; + @ApiModelProperty("待复查") private Integer reviewNum; + @ApiModelProperty("排查记录") private Integer investigateNum; @ApiModelProperty("超期未关闭") private Integer overdueNotCloseNum; @@ -54,6 +56,11 @@ public class XzSecurityQualityInspectionRecordTotalVo { private Integer whichWeekOfMonth; @ApiModelProperty(value = "周日期区间") private String weekBetweenStr; - + @ApiModelProperty(value = "年月") + private String yearMonth; + @ApiModelProperty(value = "上个月名称") + private String lastMonth; + @ApiModelProperty(value = "月环比") + private Double monthlyBasis; } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/XzSecurityQualityInspectionRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/XzSecurityQualityInspectionRecordMapper.java index 685c91b6b..4a3407c74 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/XzSecurityQualityInspectionRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/XzSecurityQualityInspectionRecordMapper.java @@ -35,6 +35,8 @@ public interface XzSecurityQualityInspectionRecordMapper extends BaseMapper selectQualityInspectionRecordPageTotal(@Param("param") Map map, @Param("o") Object o); + List riskChart(@Param("param") Map map); + List> selectQualityInspectionRecordCountByDay(Map map); List> selectDangerTypeQualityCount(Map map); @@ -74,4 +76,5 @@ public interface XzSecurityQualityInspectionRecordMapper extends BaseMapper statsByEnterprise(@Param("param") Map paramMap, Page page); List statsDangerType(@Param("param") Map paramMap); + } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/xml/XzSecurityQualityInspectionRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/xml/XzSecurityQualityInspectionRecordMapper.xml index 8c43686c0..f1bfb5bcc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/xml/XzSecurityQualityInspectionRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/xz.security/mapper/xml/XzSecurityQualityInspectionRecordMapper.xml @@ -2,6 +2,18 @@ + + and t.inspect_time =]]> #{param.inspectTime_begin} + + + and t.inspect_time if(LENGTH(#{param.inspectTime_end}) = 10, + CONCAT(DATE_FORMAT( + #{param.inspectTime_end}, '%Y-%m-%d'), ' 23:59:59'), + #{param.inspectTime_end}) + + + and t.level = #{param.enumType} + and (t.status = 2 AND now() > t.change_limit_time) @@ -13,8 +25,161 @@ and t.inspect_time <= if(LENGTH(#{param.inspectEndTime}) = 10, - CONCAT(DATE_FORMAT(#{param.inspectEndTime},'%Y-%m-%d'),' 23:59:59'), #{param.inspectEndTime}) + CONCAT(DATE_FORMAT( + #{param.inspectEndTime}, '%Y-%m-%d'), ' 23:59:59'), + #{param.inspectEndTime}) + + and t.region_id = #{param.regionId} + + + and t.change_id = #{param.changeId} + + + and t.review_id = #{param.reviewId} + + + and t.verify_man_id = #{param.verifyManId} + + + and t.creator_id = #{param.creatorId} + + + and t.inspect_man_id = #{param.inspectManId} + + + and t.level = #{param.level} + + + and t.status = #{param.status} + + + and t.urgent_level = #{param.urgentLevel} + + + and t.record_type = 2 + + + and t.status = 5 + + + and t.status in (1, 2, 3, 4, 6) + + + and t.status in (1, 2, 3, 4, 6) + and t.change_limit_time > DATE_FORMAT(now(), "%Y-%m-%d") + + + and t.status = 2 + + + and t.status = 3 + + + and t.status = 4 + + + and t.engineering_id is not null + + + and t.record_type = + #{param.recordType} + + + and t.change_id = #{param.changeId} + + + and t.review_id = #{param.reviewId} + + + and t.verify_man_id = #{param.verifyManId} + + + and t.creator_id = #{param.creatorId} + + + and t.inspect_man_id = #{param.inspectManId} + + + and ((t.change_id = #{param.operatorId} and t.status = 2) or (t.review_id = #{param.operatorId} and t.status + = 3) or (t.verify_man_id = #{param.operatorId} and t.status = 4)) + + + and t.status = #{param.status} + + + and t.change_limit_time current_date and t.status != 5 + + + and ( t.region_name like concat('%', + #{param.search}, '%') + or t.danger_item_content like concat('%', + #{param.search}, '%') + or t.danger_desc like concat('%', + #{param.search}, '%') + or t.remark like concat('%', + #{param.search}, '%') + ) + + + and t.item_id = + #{param.itemId} + + + and t.engineering_id = #{param.engineeringId} + + + + + select tp.*, + round(IFNULL(TRUNCATE(IFNULL(closeNum, 0) / IFNULL(totalNum, 0), 4), 0) * 100, + 2) completeRatio, + round(IFNULL(TRUNCATE(IFNULL(totalNum - rectificationNum, 0) / IFNULL(totalNum, 0), 4), 0) * 100, 2) + rectificationRatio, + round(IFNULL(TRUNCATE(IFNULL(overdueRectificationNum, 0) / IFNULL(totalNum, 0), 4), 0) * 100, 2) + overdueRectificationNumRatio + from ( + SELECT count(1) totalNum, + IFNULL(SUM((CASE WHEN t.record_type = 2 THEN 1 ELSE 0 END)), 0) investigateNum, + IFNULL(SUM((CASE WHEN t.status = 5 THEN 1 ELSE 0 END)), 0) closeNum, + IFNULL(SUM((CASE + WHEN t.status = 1 OR t.status = 2 OR t.status = 3 OR t.status = 4 THEN 1 + ELSE 0 END)), 0) notCloseNum, + IFNULL(SUM((CASE + WHEN t.status != 5 AND now() > t.change_limit_time THEN 1 + ELSE 0 END)), 0) overdueNotCloseNum, + IFNULL(SUM((CASE + WHEN t.status = 2 AND now() > t.change_limit_time THEN 1 + ELSE 0 END)), 0) overdueRectificationNum, + IFNULL(SUM((CASE WHEN t.status = 2 THEN 1 ELSE 0 END)), 0) rectificationNum, + IFNULL(SUM((CASE WHEN t.status != 2 THEN 1 ELSE 0 END)), 0) alreadyRectificationNum, + IFNULL(SUM((CASE WHEN t.status = 3 THEN 1 ELSE 0 END)), 0) reviewNum, + IFNULL(SUM((CASE WHEN t.status = 4 THEN 1 ELSE 0 END)), 0) verificationNum, + IFNULL(SUM((CASE WHEN t.urgent_level = 1 THEN 1 ELSE 0 END)), 0) ybUrgentLevelNum, + IFNULL(SUM((CASE WHEN t.urgent_level = 2 THEN 1 ELSE 0 END)), 0) yzUrgentLevelNum, + IFNULL(SUM((CASE WHEN t.urgent_level = 3 THEN 1 ELSE 0 END)), 0) jyUrgentLevelNum, + IFNULL(SUM((CASE WHEN t.record_type = 1 THEN 1 ELSE 0 END)), 0) dangerNum, + IFNULL(SUM((CASE WHEN t.level = 1 THEN 1 ELSE 0 END)), 0) greatFaultLevelNum, + IFNULL(SUM((CASE WHEN t.level = 2 THEN 1 ELSE 0 END)), 0) largerRiskNum, + IFNULL(SUM((CASE WHEN t.level = 3 THEN 1 ELSE 0 END)), 0) generalRiskNum, + IFNULL(SUM((CASE WHEN t.level = 4 THEN 1 ELSE 0 END)), 0) lowRiskNum, + if(FLOOR((DAYOFMONTH(t.create_time) - 1) / 7) > 3, 3, + FLOOR((DAYOFMONTH(t.create_time) - 1) / 7)) as whichWeekOfMonth, + date_format(t.create_time, '%Y-%m') as yearMonth, + year(t.create_time) as year, + month(t.create_time) as month + from xz_security_quality_inspection_record t + WHERE t.project_sn = #{param.projectSn} + and t.status != 6 + + + + group by whichWeekOfMonth + + + group by yearMonth + + ) tp select qr.region_name x, ifnull(sum(if(t.id is not null, 1, 0)), 0) y from quality_region qr - left join xz_security_quality_inspection_record t on qr.id = t.region_id + join xz_security_quality_inspection_record t on qr.id = t.region_id where 1 = 1 and qr.project_sn = #{param.projectSn} and t.status != 6 and t.record_type = 1 - - and t.status != 5 - - - and (t.status = 2 AND now() > t.change_limit_time) - - - and t.inspect_time >= #{param.inspectStartTime} - - - and t.inspect_time <= if(LENGTH(#{param.inspectEndTime}) = 10, - CONCAT(DATE_FORMAT(#{param.inspectEndTime}, - '%Y-%m-%d'), - ' 23:59:59'), #{param.inspectEndTime}) - - - and t.level = #{param.enumType} - - group by qr.id + + + group by t.region_id order by y desc @@ -595,28 +581,22 @@ round(IFNULL(TRUNCATE(IFNULL(t.rectifiedNumTimely, 0) / IFNULL(totalNum, 0), 4), 0) * 100, 2) rectifiedNumRatioTimely from (SELECT count(*) totalNum, - IFNULL(SUM((CASE WHEN hdir.status != 2 THEN 1 ELSE 0 END)), 0) rectifiedNum, - IFNULL(SUM((CASE WHEN hdir.status != 2 and change_limit_time > now() THEN 1 ELSE 0 END)), 0) + IFNULL(SUM((CASE WHEN t.status != 2 THEN 1 ELSE 0 END)), 0) rectifiedNum, + IFNULL(SUM((CASE WHEN t.status != 2 and change_limit_time > now() THEN 1 ELSE 0 END)), 0) rectifiedNumTimely, - IFNULL(SUM((CASE WHEN hdir.status != 2 and change_limit_time < now() THEN 1 ELSE 0 END)), 0) + IFNULL(SUM((CASE WHEN t.status != 2 and change_limit_time < now() THEN 1 ELSE 0 END)), 0) overTimeRectifiedNum, - IFNULL(SUM((CASE WHEN hdir.status = 2 and change_limit_time < now() THEN 1 ELSE 0 END)), 0) + IFNULL(SUM((CASE WHEN t.status = 2 and change_limit_time < now() THEN 1 ELSE 0 END)), 0) overTimeNotRectifiedNum, su.real_name as workerName - from xz_security_quality_inspection_record hdir - left join system_user su on su.user_id = hdir.change_id + from xz_security_quality_inspection_record t + left join system_user su on su.user_id = t.change_id WHERE record_type = 1 - and hdir.status != 6 + and t.status != 6 and project_sn = #{param.projectSn} - - and hdir.inspect_time =]]> #{param.inspectTime_begin} - - - and hdir.inspect_time if(LENGTH(#{param.inspectTime_end}) = 10, - CONCAT(DATE_FORMAT(#{param.inspectTime_end}, '%Y-%m-%d'), ' 23:59:59'), - #{param.inspectTime_end}) - - group by hdir.change_id + + + group by t.change_id order by rectifiedNum desc) t @@ -666,9 +646,9 @@ 2) rectifiedNumRatio, round(IFNULL(TRUNCATE(IFNULL(t.rectifiedNumTimely, 0) / IFNULL(totalNum, 0), 4), 0) * 100, 2) rectifiedNumRatioTimely - from (SELECT count(*) totalNum, - IFNULL(SUM((CASE WHEN t.status != 2 THEN 1 ELSE 0 END)), 0) rectifiedNum, - IFNULL(SUM((CASE WHEN t.status != 2 and change_limit_time > now() THEN 1 ELSE 0 END)), 0) + from (SELECT count(*) as totalNum, + IFNULL(SUM((CASE WHEN t.status != 2 THEN 1 ELSE 0 END)), 0) as rectifiedNum, + IFNULL(SUM((CASE WHEN t.status != 2 and change_limit_time > now() THEN 1 ELSE 0 END)), 0) as rectifiedNumTimely, ei.enterprise_name from xz_security_quality_inspection_record t @@ -676,23 +656,8 @@ WHERE record_type = 1 and t.status != 6 and project_sn = #{param.projectSn} - - and t.inspect_time =]]> #{param.inspectTime_begin} - - - and t.inspect_time if(LENGTH(#{param.inspectTime_end}) = 10, - CONCAT(DATE_FORMAT(#{param.inspectTime_end}, '%Y-%m-%d'), ' 23:59:59'), - #{param.inspectTime_end}) - - - and t.status != 5 - - - and t.level = #{param.enumType} - - - and (t.status = 2 AND now() > t.change_limit_time) - + + group by t.enterprise_id order by rectifiedNum desc) t @@ -703,24 +668,23 @@ where project_sn = #{param.projectSn} and t.record_type = 1 and t.status != 6 - - and (t.status = 2 AND now() > t.change_limit_time) - - - and t.status != 5 - - - and t.inspect_time >= #{param.inspectStartTime} - - - and t.inspect_time <= if(LENGTH(#{param.inspectEndTime}) = 10, - CONCAT(DATE_FORMAT(#{param.inspectEndTime}, - '%Y-%m-%d'), - ' 23:59:59'), #{param.inspectEndTime}) - - - and t.level = #{param.enumType} - + + group by name + + diff --git a/src/main/java/com/zhgd/xmgl/modules/xz.security/service/IXzSecurityQualityInspectionRecordService.java b/src/main/java/com/zhgd/xmgl/modules/xz.security/service/IXzSecurityQualityInspectionRecordService.java index f418a0415..cb891b228 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz.security/service/IXzSecurityQualityInspectionRecordService.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz.security/service/IXzSecurityQualityInspectionRecordService.java @@ -93,4 +93,6 @@ public interface IXzSecurityQualityInspectionRecordService extends IService riskChart(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz.security/service/impl/XzSecurityXzSecurityQualityInspectionRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz.security/service/impl/XzSecurityXzSecurityQualityInspectionRecordServiceImpl.java index b59127dd3..af6297314 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz.security/service/impl/XzSecurityXzSecurityQualityInspectionRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz.security/service/impl/XzSecurityXzSecurityQualityInspectionRecordServiceImpl.java @@ -66,6 +66,7 @@ import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -280,31 +281,43 @@ public class XzSecurityXzSecurityQualityInspectionRecordServiceImpl extends Serv } @Override - public void saveQualityInspectionRecord(XzSecurityQualityInspectionRecord qualityInspectionRecord) { + public void saveQualityInspectionRecord(XzSecurityQualityInspectionRecord record) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - qualityInspectionRecord.setCreateTime(df.format(new Date())); - if (Objects.equals(qualityInspectionRecord.getRecordType(), 2)) { - qualityInspectionRecord.setStatus(5); + record.setCreateTime(df.format(new Date())); + if (Objects.equals(record.getRecordType(), 2)) { + record.setStatus(5); } - String enterpriseSn = qualityInspectionRecord.getEnterpriseSn(); + String enterpriseSn = record.getEnterpriseSn(); if (StrUtil.isNotBlank(enterpriseSn)) { EnterpriseInfo enterpriseInfo = enterpriseInfoMapper.selectOne(new LambdaQueryWrapper() .eq(EnterpriseInfo::getEnterpriseSn, enterpriseSn)); - qualityInspectionRecord.setEnterpriseId(enterpriseInfo.getId()); + record.setEnterpriseId(enterpriseInfo.getId()); } - EnterpriseInfo enterpriseInfo = enterpriseInfoMapper.selectById(qualityInspectionRecord.getEnterpriseId()); - xzSecurityQualityInspectionRecordMapper.insert(qualityInspectionRecord); - if (qualityInspectionRecord.getRecordType() == 1 && qualityInspectionRecord.getStatus() == 2) { - noticeService.addUserNoticeAndApp(qualityInspectionRecord.getChangeId(), "您有一条安全检查待整改,问题:" + qualityInspectionRecord.getDangerItemContent(), "安全管理待整改", "10", - PushPayloads.buildPushPayload(10, qualityInspectionRecord)); - noticeBigScreen(qualityInspectionRecord, qualityInspectionRecord.getInspectTime(), StrUtil.format("{}检查到一条{}的{}安全隐患问题,请注意监督整改!", - qualityInspectionRecord.getRegionName(), enterpriseInfo.getEnterpriseName(), StrUtil.subAfter(qualityInspectionRecord.getDangerItemContent(), "/", true))); - } else if (qualityInspectionRecord.getRecordType() == 2) { - noticeBigScreen(qualityInspectionRecord, qualityInspectionRecord.getInspectTime(), StrUtil.format("{}已排查了{}的安全隐患问题,今日排查暂无次安全隐患!", - qualityInspectionRecord.getRegionName(), StrUtil.subAfter(qualityInspectionRecord.getDangerItemContent(), "/", true))); + EnterpriseInfo enterpriseInfo = enterpriseInfoMapper.selectById(record.getEnterpriseId()); + xzSecurityQualityInspectionRecordMapper.insert(record); + if (record.getRecordType() == 1 && record.getStatus() == 2) { + noticeService.addUserNoticeAndApp(record.getChangeId(), "您有一条安全检查待整改,问题:" + record.getDangerItemContent(), "安全管理待整改", "10", + PushPayloads.buildPushPayload(10, record)); + if (record.getEngineeringId() == null) { + noticeBigScreen(record, record.getInspectTime(), StrUtil.format("{}检查到一条{}的{}安全隐患问题,请注意监督整改!", + record.getRegionName(), enterpriseInfo.getEnterpriseName(), StrUtil.subAfter(record.getDangerItemContent(), "/", true))); + } else { + DangerousEngineeringRecord d = dangerousEngineeringRecordMapper.selectById(record.getEngineeringId()); + noticeBigScreen(record, record.getInspectTime(), StrUtil.format("{}的{}的{}发现一条{},请注意监督整改!", + enterpriseInfo.getEnterpriseName(), d.getEngineeringName(), record.getRegionName(), record.getDangerItemContent())); + } + } else if (record.getRecordType() == 2) { + if (record.getEngineeringId() == null) { + noticeBigScreen(record, record.getInspectTime(), StrUtil.format("{}已排查了{}的安全隐患问题,今日排查暂无次安全隐患!", + record.getRegionName(), StrUtil.subAfter(record.getDangerItemContent(), "/", true))); + } else { + DangerousEngineeringRecord d = dangerousEngineeringRecordMapper.selectById(record.getEngineeringId()); + noticeBigScreen(record, record.getInspectTime(), StrUtil.format("{}的{}的{}今日排查暂无隐患", + enterpriseInfo.getEnterpriseName(), d.getEngineeringName(), record.getRegionName())); + } } - deductScoreIf(qualityInspectionRecord); + deductScoreIf(record); } private void deductScoreIf(XzSecurityQualityInspectionRecord hiddenDangerInspectRecord) { @@ -731,6 +744,52 @@ public class XzSecurityXzSecurityQualityInspectionRecordServiceImpl extends Serv } } + @Override + public List riskChart(Map map) { + map.put("groupby", "yearmonth"); + List datas = baseMapper.riskChart(map); + List rsList = new ArrayList<>(); + Map ymMap = datas.stream().collect(Collectors.toMap(XzSecurityQualityInspectionRecordTotalVo::getYearMonth, Function.identity(), (k1, k2) -> k1)); + List dateTimeStrList = DateUtils.getDateTimeStrList(93, "yyyy-MM"); + for (String month : dateTimeStrList) { + XzSecurityQualityInspectionRecordTotalVo vo = ymMap.get(month); + if (vo == null) { + vo = new XzSecurityQualityInspectionRecordTotalVo(); + vo.setYearMonth(month); + vo.setVerificationNum(0); + vo.setRectificationRatio(0.0D); + vo.setCloseNum(0); + vo.setReviewNum(0); + vo.setInvestigateNum(0); + vo.setOverdueNotCloseNum(0); + vo.setRectificationNum(0); + vo.setYbUrgentLevelNum(0); + vo.setYzUrgentLevelNum(0); + vo.setTotalNum("0"); + vo.setCompleteRatio(0.0D); + vo.setAlreadyRectificationNum(0); + vo.setJyUrgentLevelNum(0); + vo.setOverdueRectificationNum(0); + vo.setOverdueRectificationNumRatio(0.0D); + vo.setNotCloseNum(0); + vo.setTotalNumDifferYesterday(0); + vo.setOverdueNotCloseNumDifferYesterday(0); + vo.setCloseNumDifferYesterday(0); + vo.setNotCloseNumDifferYesterday(0); + vo.setGreatFaultLevelNum(0); + vo.setDangerNum(0); + vo.setLowRiskNum(0); + vo.setGeneralRiskNum(0); + vo.setLargerRiskNum(0); + vo.setWhichWeekOfMonth(0); + vo.setMonthlyBasis(0.0D); + } + vo.setLastMonth(DateUtil.month(DateUtil.parse(month, "yyyy-MM")) + "月"); + rsList.add(vo); + } + return rsList; + } + private void recoverScore(XzSecurityQualityInspectionRecord hiddenDangerInspectRecord) { if (hiddenDangerInspectRecord.getRecordType() == null || hiddenDangerInspectRecord.getRecordType() == 2) { return; diff --git a/src/main/java/com/zhgd/xmgl/task/DangerousEngineeringRecordTask.java b/src/main/java/com/zhgd/xmgl/task/DangerousEngineeringRecordTask.java new file mode 100644 index 000000000..66a2cec36 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/task/DangerousEngineeringRecordTask.java @@ -0,0 +1,46 @@ +package com.zhgd.xmgl.task; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zhgd.xmgl.modules.dangerous.entity.DangerousEngineeringRecord; +import com.zhgd.xmgl.modules.dangerous.service.impl.DangerousEngineeringRecordServiceImpl; +import lombok.extern.slf4j.Slf4j; +import net.javacrumbs.shedlock.core.SchedulerLock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Slf4j +@RestController +@RequestMapping("/xmgl/task") +public class DangerousEngineeringRecordTask { + + @Lazy + @Autowired + DangerousEngineeringRecordServiceImpl dangerousEngineeringRecordService; + + /** + * 计划开始时间和结束时间内,定时每天早上6点时,发送一条通知 + */ + @Scheduled(cron = "0 0 6 * * ?") + @SchedulerLock(name = "sendDangerousEngineeringRecordBigScreen", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 60 * 1) + @RequestMapping("sendDangerousEngineeringRecordBigScreen") + public void sendDangerousEngineeringRecordBigScreen() { + List list = dangerousEngineeringRecordService.list(new LambdaQueryWrapper() + .ge(DangerousEngineeringRecord::getPlanEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) + .le(DangerousEngineeringRecord::getPlanStartTime, DateUtil.format(new Date(), "yyyy-MM-dd")) + ); + for (DangerousEngineeringRecord dangerousEngineeringRecord : list) { + dangerousEngineeringRecordService.noticeBigScreen(dangerousEngineeringRecord.getProjectSn(), dangerousEngineeringRecord.getPlanStartTime() + " - " + dangerousEngineeringRecord.getPlanEndTime(), Objects.equals(dangerousEngineeringRecord.getDangerType(), 2), + StrUtil.format("{}的{}正处于重大风险施工作业阶段,请注意进行相关风险类型安全管控! ", dangerousEngineeringRecord.getResponsibilityCompany(), dangerousEngineeringRecord.getEngineeringName())); + + } + } +}