diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/EnterpriseInfoController.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/EnterpriseInfoController.java index 0c328b84e..a496d9482 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/EnterpriseInfoController.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/EnterpriseInfoController.java @@ -54,6 +54,7 @@ public class EnterpriseInfoController { @ApiImplicitParam(name = "enterpriseName", value = "劳务公司名称", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "enterpriseTypeId", value = "企业类型", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "projectSn", value = "项目sN", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "isCountMainEnterprise", value = "0默认1是总包", paramType = "query", required = false, dataType = "Integer"), }) @PostMapping(value = "/list") public Result> getEnterpriseInfoList(@RequestBody Map map) { @@ -229,7 +230,7 @@ public class EnterpriseInfoController { return Result.success(enterpriseInfoService.getXzSupplierInfo(param)); } - @ApiOperation(value = "企业本周数据统计", notes = "企业本周数据统计", httpMethod = "POST") + @ApiOperation(value = "总包企业本周数据统计", notes = "总包企业本周数据统计", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "enterpriseId", value = "企业id", paramType = "body", required = true, dataType = "String"), diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerAttendanceController.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerAttendanceController.java index 36eeebdf7..923500ab0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerAttendanceController.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerAttendanceController.java @@ -268,8 +268,7 @@ public class WorkerAttendanceController { return Result.success(workerAttendanceService.queryAttendanceOfEachCompany(map)); } - - @ApiOperation(value = "安全履职分析", notes = "安全履职分析", httpMethod = "POST") + @ApiOperation(value = "安全履职分析(列表包含所有企业,其中总包包含分包的数据)", notes = "安全履职分析(列表包含所有企业,其中总包包含分包的数据)", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), }) diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/SafetyPerformanceAnalysisVo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/SafetyPerformanceAnalysisVo.java index bf5bfe9e0..a2530010d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/SafetyPerformanceAnalysisVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/SafetyPerformanceAnalysisVo.java @@ -29,5 +29,8 @@ public class SafetyPerformanceAnalysisVo { private Integer jlInServiceNum; @ApiModelProperty(value = "企业名称") private java.lang.String enterpriseName; + private java.lang.Long projectEnterpriseId; + private java.lang.Long parentProjectEnterpriseId; + private String ancestors; private List list; } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/StatsEnterpriseWeekVo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/StatsEnterpriseWeekVo.java index 663bd4eb4..2b8dbc86e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/StatsEnterpriseWeekVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/StatsEnterpriseWeekVo.java @@ -5,20 +5,44 @@ import lombok.Data; @Data public class StatsEnterpriseWeekVo { + /** + * 事故报警总数 + */ @ApiModelProperty("事故报警总数") private Integer emergencyNum; - @ApiModelProperty("在场人员数量") + /** + * 在场人员数量(峰值) + */ + @ApiModelProperty("在场人员数量(峰值)") private Integer highWorkerNumThisWeek; + /** + * 在职人员数量 + */ @ApiModelProperty("在职人员数量") private Integer inServiceNum; + /** + * 企业安全分 + */ @ApiModelProperty("企业安全分") private Double safeScore; + /** + * 安全隐患总数 + */ @ApiModelProperty("安全隐患总数") private Integer securityNum; + /** + * 质量隐患总数 + */ @ApiModelProperty("质量隐患总数") private Integer qualityNum; + /** + * 特种作业数量 + */ @ApiModelProperty("特种作业数量") private Integer specialNum; + /** + * 培训未通过率 + */ @ApiModelProperty("培训未通过率") private Double trainNotPassRadio; diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/EnterpriseInfoMapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/EnterpriseInfoMapper.java index 291bcdf95..474cfc616 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/EnterpriseInfoMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/EnterpriseInfoMapper.java @@ -81,4 +81,12 @@ public interface EnterpriseInfoMapper extends BaseMapper { Integer countBySocialCodeAndNotId(@Param("socialCode") String socialCode, @Param("id") Long id); List getEnterpriseInfoByRegionId(Long id); + + /** + * 获取总包下面分包和总包自己的企业ids + * + * @param enterpriseId + * @return + */ + List getEnterpriseIdsByMainEnterpriseId(@Param("enterpriseId") String enterpriseId); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java index cfb359a46..77c6ad4b1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java @@ -255,5 +255,5 @@ public interface WorkerInfoMapper extends BaseMapper { List statsEnterpriseRisk(@Param("param") Map map); - double getAvgSafeScore(@Param("enterpriseId") String enterpriseId, @Param("projectSn") String projectSn); + double getAvgSafeScore(@Param("list") List enterpriseIds, @Param("projectSn") String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml index f53d1e308..bd4916b76 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml @@ -36,6 +36,9 @@ and b.enterprise_id = #{map.enterpriseId} + + and b.parent_project_enterprise_id = 0 + order by b.sort_num + + diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml index 632257ae9..33c7324e2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendanceMapper.xml @@ -73,6 +73,12 @@ and b.enterprise_id = #{param.enterpriseId} + + and b.enterprise_id in + + #{item} + + and FIND_IN_SET(b.enterprise_id, #{param.userEnterpriseId}) @@ -866,9 +872,13 @@ or wi.job_name=62 or wi.job_name=63 or wi.job_name=64 - or wi.job_name=65) and t1.person_sn is null,1,0)),0) as jlNotPerformNum + or wi.job_name=65) and t1.person_sn is null,1,0)),0) as jlNotPerformNum, + pe.parent_project_enterprise_id, + pe.id as project_enterprise_id, + pe.ancestors from enterprise_info t join worker_info wi on wi.enterprise_id=t.id + join project_enterprise pe on pe.enterprise_id=t.id and pe.project_sn=wi.project_sn left join (select person_sn from worker_attendance where project_sn=#{param.projectSn} and create_time >= CURRENT_DATE group by person_sn) t1 on t1.person_sn=wi.person_sn diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml index 85d2ace9e..f9a25d68b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml @@ -2556,6 +2556,10 @@ diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java index 4684eecbb..1855620f9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java @@ -8,7 +8,6 @@ import com.zhgd.xmgl.base.entity.vo.TrendOneVo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.dto.GetWorkerInfoByDevDto; import com.zhgd.xmgl.modules.worker.entity.vo.*; -import com.zhgd.xmgl.modules.xz.entity.vo.RiskTrendByMainEnterpriseVo; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -169,6 +168,6 @@ public interface IWorkerInfoService extends IService { void deleteBatch(String ids); - double getAvgSafeScore(String enterpriseId, String projectSn); + double getAvgSafeScore(List enterpriseIds, String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java index 009267232..45e70b40e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.worker.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; @@ -43,7 +44,6 @@ import com.zhgd.xmgl.modules.worker.mapper.WorkerAttendanceMapper; import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService; import com.zhgd.xmgl.modules.worker.service.IUserEnterpriseService; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; -import com.zhgd.xmgl.modules.xz.emergency.entity.XzEmergencyRecord; import com.zhgd.xmgl.modules.xz.emergency.service.IXzEmergencyRecordService; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityQualityInspectionRecordService; @@ -52,10 +52,7 @@ import com.zhgd.xmgl.modules.xz.special.entity.*; import com.zhgd.xmgl.modules.xz.special.service.*; import com.zhgd.xmgl.security.entity.UserInfo; import com.zhgd.xmgl.security.util.SecurityUtils; -import com.zhgd.xmgl.util.ListUtils; -import com.zhgd.xmgl.util.MapBuilder; -import com.zhgd.xmgl.util.MessageUtil; -import com.zhgd.xmgl.util.PageUtil; +import com.zhgd.xmgl.util.*; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -553,44 +550,62 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl enterpriseIds = this.getEnterpriseIdsByMainEnterpriseId(enterpriseId); + if (CollUtil.isEmpty(enterpriseIds)) { + throw new OpenAlertException("查询的企业为空"); + } String beginOfWeek = DateUtil.formatDateTime(DateUtil.beginOfWeek(new Date())); Integer inServiceNum = workerInfoService.count(new LambdaQueryWrapper() .eq(WorkerInfo::getProjectSn, projectSn) - .eq(WorkerInfo::getEnterpriseId, enterpriseId) + .in(WorkerInfo::getEnterpriseId, enterpriseIds) .eq(WorkerInfo::getInserviceType, 1)); vo.setInServiceNum(inServiceNum); int securityNum = xzSecurityQualityInspectionRecordService.count(new LambdaQueryWrapper() .eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn) - .eq(XzSecurityQualityInspectionRecord::getEnterpriseId, enterpriseId) + .in(XzSecurityQualityInspectionRecord::getEnterpriseId, enterpriseIds) + .ne(XzSecurityQualityInspectionRecord::getStatus, 6) + .eq(XzSecurityQualityInspectionRecord::getRecordType, 1) .ge(XzSecurityQualityInspectionRecord::getInspectTime, beginOfWeek) ); vo.setSecurityNum(securityNum); int qualityNum = qualityInspectionRecordService.count(new LambdaQueryWrapper() .eq(QualityInspectionRecord::getProjectSn, projectSn) - .eq(QualityInspectionRecord::getEnterpriseId, enterpriseId) + .in(QualityInspectionRecord::getEnterpriseId, enterpriseIds) + .ne(QualityInspectionRecord::getStatus, 6) + .eq(QualityInspectionRecord::getRecordType, 1) .ge(QualityInspectionRecord::getInspectTime, beginOfWeek) ); vo.setQualityNum(qualityNum); - int specialNum = countSpecialNumThisWeek(enterpriseId, projectSn, beginOfWeek); - double notPassRadio = getTrainNotPassRadio(enterpriseId, projectSn, beginOfWeek); + int specialNum = countSpecialNumThisWeek(enterpriseIds, projectSn, beginOfWeek); + double notPassRadio = getTrainNotPassRadio(enterpriseIds, projectSn, beginOfWeek); vo.setTrainNotPassRadio(notPassRadio); vo.setSpecialNum(specialNum); - double safeScore = workerInfoService.getAvgSafeScore(enterpriseId, projectSn); + double safeScore = workerInfoService.getAvgSafeScore(enterpriseIds, projectSn); vo.setSafeScore(safeScore); - int highWorkerNumThisWeek = getHighInDayThisWeek(enterpriseId, projectSn, beginOfWeek); + int highWorkerNumThisWeek = this.getHighInDayThisWeek(enterpriseIds, projectSn, beginOfWeek); vo.setHighWorkerNumThisWeek(highWorkerNumThisWeek); int emergencyNum = xzEmergencyRecordService.queryCount(new MapBuilder() .put("projectSn", projectSn) - .put("enterpriseId", enterpriseId) + .put("enterpriseIds", enterpriseIds) .put("beginOfWeek", beginOfWeek) .build()); vo.setEmergencyNum(emergencyNum); return vo; } - private int getHighInDayThisWeek(String enterpriseId, String projectSn, String beginOfWeek) { + /** + * 获取总包下面分包和总包自己的企业ids + * + * @param enterpriseId + * @return + */ + private List getEnterpriseIdsByMainEnterpriseId(String enterpriseId) { + return baseMapper.getEnterpriseIdsByMainEnterpriseId(enterpriseId); + } + + private int getHighInDayThisWeek(List enterpriseIds, String projectSn, String beginOfWeek) { HashMap map = new HashMap<>(); - map.put("enterpriseId", enterpriseId); + map.put("enterpriseIds", enterpriseIds); map.put("startTime", beginOfWeek); map.put("projectSn", projectSn); List workerAttendances = workerAttendanceService.selectWorkerAttendanceList(map); @@ -600,100 +615,102 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl oneDayWas = workerAttendances.stream().filter(workerAttendance -> DateUtil.parse(workerAttendance.getCreateTime()).compareTo(nextDate) < 0 && DateUtil.parse(beginOfWeek).compareTo(DateUtil.parse(workerAttendance.getCreateTime())) <= 0).collect(Collectors.toList()); Set inSet = new HashSet<>(); + int hn = 0; for (WorkerAttendance attendance : oneDayWas) { if (Objects.equals(attendance.getPassType(), 1)) { inSet.add(attendance.getPersonSn()); + hn = Math.max(hn, inSet.size()); } else if (Objects.equals(attendance.getPassType(), 2)) { inSet.remove(attendance.getPersonSn()); } } - highNum = Math.max(highNum, inSet.size()); + highNum = Math.max(highNum, hn); } return highNum; } - private double getTrainNotPassRadio(String enterpriseId, String projectSn, String beginOfWeek) { + private double getTrainNotPassRadio(List enterpriseIds, String projectSn, String beginOfWeek) { QueryWrapper wrapper = QueryGenerator.initPageQueryWrapper(ExamTrain.class, new HashMap<>()); - Set trainIds = examTrainRecordService.list().stream().map(e -> e.getTrainId()).collect(Collectors.toSet()); - if (trainIds.size() == 0) { + Set recordTrainIds = examTrainRecordService.list(new LambdaQueryWrapper().le(ExamTrainRecord::getStartExamTime, beginOfWeek)).stream().map(e -> e.getTrainId()).collect(Collectors.toSet()); + if (recordTrainIds.size() == 0) { return 0; } - wrapper.lambda().in(ExamTrain::getId, trainIds); - Page examTrainPage = examTrainMapper.pageList(new Page(1, -1), wrapper); - List ids = examTrainPage.getRecords().stream().map(e -> e.getId()).collect(Collectors.toList()); - BigDecimal sum = new BigDecimal(0); - BigDecimal count = new BigDecimal(0); - if (ids.size() > 0) { - List examTrainRecordList = examTrainRecordService.list(Wrappers.lambdaQuery().in(ExamTrainRecord::getTrainId, ids) + wrapper.lambda().in(ExamTrain::getId, recordTrainIds); + wrapper.lambda().le(ExamTrain::getTrainBeginTime, DateUtil.formatDate(DateUtil.parse(beginOfWeek))); + Page trainPage = examTrainMapper.pageList(new Page(1, -1), wrapper); + List trainIds = trainPage.getRecords().stream().map(e -> e.getId()).collect(Collectors.toList()); + int count = 0; + int passNum = 0; + if (trainIds.size() > 0) { + List recordList = examTrainRecordService.list(Wrappers.lambdaQuery().in(ExamTrainRecord::getTrainId, trainIds) .eq(ExamTrainRecord::getProjectSn, projectSn) - .eq(ExamTrainRecord::getEnterpriseId, enterpriseId) + .in(ExamTrainRecord::getEnterpriseId, enterpriseIds) .ge(ExamTrainRecord::getCreateTime, beginOfWeek) ); - for (ExamTrain record : examTrainPage.getRecords()) { + for (ExamTrain record : trainPage.getRecords()) { if (record.getExamPaperId() != null) { - List trainRecordList = examTrainRecordList.stream().filter(e -> e.getTrainId().toString().equals(record.getId().toString())).collect(Collectors.toList()); + List trainRecordList = recordList.stream().filter(e -> e.getTrainId().toString().equals(record.getId().toString())).collect(Collectors.toList()); if (trainRecordList.size() > 0) { int pass = trainRecordList.stream().filter(t -> t.getIsPass() == 1).collect(Collectors.toList()).size(); - record.setPassRadio(new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); - sum.add(BigDecimal.valueOf(100).subtract(record.getPassRadio())); - count.add(new BigDecimal(1)); + passNum += pass; + count += trainRecordList.size(); } } } } - if (count.equals(new BigDecimal(0))) { + if (count == 0) { return 0; } - return sum.divide(count, 2, BigDecimal.ROUND_HALF_UP).doubleValue(); + return NumberUtils.percent((count * 1.0 - passNum) / count, 2); } - private int countSpecialNumThisWeek(String enterpriseId, String projectSn, String beginOfWeek) { + private int countSpecialNumThisWeek(List enterpriseIds, String projectSn, String beginOfWeek) { String endOfWeek = DateUtil.formatDateTime(DateUtil.endOfWeek(new Date())); int n1 = xzBlindPlatePlugSafeService.count(new LambdaQueryWrapper() .eq(XzBlindPlatePlugSafe::getProjectSn, projectSn) - .eq(XzBlindPlatePlugSafe::getJobApplicationUnit, enterpriseId) + .in(XzBlindPlatePlugSafe::getJobApplicationUnit, enterpriseIds) .le(XzBlindPlatePlugSafe::getWorkExecutionBeginTime, endOfWeek) .ge(XzBlindPlatePlugSafe::getWorkExecutionEndTime, beginOfWeek) ); int n2 = iXzGroundSafetService.count(new LambdaQueryWrapper() .eq(XzGroundSafet::getProjectSn, projectSn) - .eq(XzGroundSafet::getJobApplicationUnit, enterpriseId) + .in(XzGroundSafet::getJobApplicationUnit, enterpriseIds) .le(XzGroundSafet::getWorkExecutionBeginTime, endOfWeek) .ge(XzGroundSafet::getWorkExecutionEndTime, beginOfWeek) ); int n3 = iXzHighJobSafeService.count(new LambdaQueryWrapper() .eq(XzHighJobSafe::getProjectSn, projectSn) - .eq(XzHighJobSafe::getJobApplicationUnit, enterpriseId) + .in(XzHighJobSafe::getJobApplicationUnit, enterpriseIds) .le(XzHighJobSafe::getWorkExecutionBeginTime, endOfWeek) .ge(XzHighJobSafe::getWorkExecutionEndTime, beginOfWeek) ); int n4 = iXzHoistSafetyWorkService.count(new LambdaQueryWrapper() .eq(XzHoistSafetyWork::getProjectSn, projectSn) - .eq(XzHoistSafetyWork::getJobApplicationUnit, enterpriseId) + .in(XzHoistSafetyWork::getJobApplicationUnit, enterpriseIds) .le(XzHoistSafetyWork::getWorkExecutionBeginTime, endOfWeek) .ge(XzHoistSafetyWork::getWorkExecutionEndTime, beginOfWeek) ); int n5 = iXzLimitSpaceSafeService.count(new LambdaQueryWrapper() .eq(XzLimitSpaceSafe::getProjectSn, projectSn) - .eq(XzLimitSpaceSafe::getJobApplicationUnit, enterpriseId) + .in(XzLimitSpaceSafe::getJobApplicationUnit, enterpriseIds) .le(XzLimitSpaceSafe::getWorkExecutionBeginTime, endOfWeek) .ge(XzLimitSpaceSafe::getWorkExecutionEndTime, beginOfWeek) ); int n6 = iXzOpenCircuitSafeService.count(new LambdaQueryWrapper() .eq(XzOpenCircuitSafe::getProjectSn, projectSn) - .eq(XzOpenCircuitSafe::getJobApplicationUnit, enterpriseId) + .in(XzOpenCircuitSafe::getJobApplicationUnit, enterpriseIds) .le(XzOpenCircuitSafe::getWorkExecutionBeginTime, endOfWeek) .ge(XzOpenCircuitSafe::getWorkExecutionEndTime, beginOfWeek) ); int n7 = iXzSpecialOperationFireSafetyService.count(new LambdaQueryWrapper() .eq(XzSpecialOperationFireSafety::getProjectSn, projectSn) - .eq(XzSpecialOperationFireSafety::getJobApplicationUnit, enterpriseId) + .in(XzSpecialOperationFireSafety::getJobApplicationUnit, enterpriseIds) .le(XzSpecialOperationFireSafety::getHotWorkExecutionBeginTime, endOfWeek) .ge(XzSpecialOperationFireSafety::getHotWorkExecutionEndTime, beginOfWeek) ); int n8 = xzTemporaryElectricitySafeService.count(new LambdaQueryWrapper() .eq(XzTemporaryElectricitySafe::getProjectSn, projectSn) - .eq(XzTemporaryElectricitySafe::getJobApplicationUnit, enterpriseId) + .in(XzTemporaryElectricitySafe::getJobApplicationUnit, enterpriseIds) .le(XzTemporaryElectricitySafe::getWorkExecutionBeginTime, endOfWeek) .ge(XzTemporaryElectricitySafe::getWorkExecutionEndTime, beginOfWeek) ); diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java index 5c79d3b87..fddd5887e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java @@ -1160,6 +1160,27 @@ status 状态码 String 1表示成功;其余表示失败 List vos = baseMapper.safetyPerformanceAnalysis(paramMap); SafetyPerformanceAnalysisVo vo = new SafetyPerformanceAnalysisVo(); vo.setList(vos); + setTotalCount(vos, vo); + List mains = vos.stream().filter(o -> o.getParentProjectEnterpriseId() == 0).collect(Collectors.toList()); + for (SafetyPerformanceAnalysisVo main : mains) { + List subs = vos.stream().filter(o -> o.getAncestors().contains(main.getProjectEnterpriseId() + "")).collect(Collectors.toList()); + for (SafetyPerformanceAnalysisVo sub : subs) { + main.setNotPerformNum(main.getNotPerformNum() + sub.getNotPerformNum()); + main.setInServiceNum(main.getInServiceNum() + sub.getInServiceNum()); + main.setXmjlNotPerformNum(main.getXmjlNotPerformNum() + sub.getXmjlNotPerformNum()); + main.setXmjlInServiceNum(main.getXmjlInServiceNum() + sub.getXmjlInServiceNum()); + main.setAqyNotPerformNum(main.getAqyNotPerformNum() + sub.getAqyNotPerformNum()); + main.setAqyInServiceNum(main.getAqyInServiceNum() + sub.getAqyInServiceNum()); + main.setZlyNotPerformNum(main.getZlyNotPerformNum() + sub.getZlyNotPerformNum()); + main.setZlyInServiceNum(main.getZlyInServiceNum() + sub.getZlyInServiceNum()); + main.setJlNotPerformNum(main.getJlNotPerformNum() + sub.getJlNotPerformNum()); + main.setJlInServiceNum(main.getJlInServiceNum() + sub.getJlInServiceNum()); + } + } + return vo; + } + + private void setTotalCount(List vos, SafetyPerformanceAnalysisVo vo) { Integer notPerformNum = 0; Integer inServiceNum = 0; Integer xmjlNotPerformNum = 0; @@ -1171,26 +1192,16 @@ status 状态码 String 1表示成功;其余表示失败 Integer jlNotPerformNum = 0; Integer jlInServiceNum = 0; for (SafetyPerformanceAnalysisVo one : vos) { - Integer notPerformNum1 = one.getNotPerformNum(); - Integer inServiceNum1 = one.getInServiceNum(); - Integer xmjlNotPerformNum1 = one.getXmjlNotPerformNum(); - Integer xmjlInServiceNum1 = one.getXmjlInServiceNum(); - Integer aqyNotPerformNum1 = one.getAqyNotPerformNum(); - Integer aqyInServiceNum1 = one.getAqyInServiceNum(); - Integer zlyNotPerformNum1 = one.getZlyNotPerformNum(); - Integer zlyInServiceNum1 = one.getZlyInServiceNum(); - Integer jlNotPerformNum1 = one.getJlNotPerformNum(); - Integer jlInServiceNum1 = one.getJlInServiceNum(); - notPerformNum += notPerformNum1; - inServiceNum += inServiceNum1; - xmjlNotPerformNum += xmjlNotPerformNum1; - xmjlInServiceNum += xmjlInServiceNum1; - aqyNotPerformNum += aqyNotPerformNum1; - aqyInServiceNum += aqyInServiceNum1; - zlyNotPerformNum += zlyNotPerformNum1; - zlyInServiceNum += zlyInServiceNum1; - jlNotPerformNum += jlNotPerformNum1; - jlInServiceNum += jlInServiceNum1; + notPerformNum += one.getNotPerformNum(); + inServiceNum += one.getInServiceNum(); + xmjlNotPerformNum += one.getXmjlNotPerformNum(); + xmjlInServiceNum += one.getXmjlInServiceNum(); + aqyNotPerformNum += one.getAqyNotPerformNum(); + aqyInServiceNum += one.getAqyInServiceNum(); + zlyNotPerformNum += one.getZlyNotPerformNum(); + zlyInServiceNum += one.getZlyInServiceNum(); + jlNotPerformNum += one.getJlNotPerformNum(); + jlInServiceNum += one.getJlInServiceNum(); } vo.setNotPerformNum(notPerformNum); vo.setInServiceNum(inServiceNum); @@ -1202,7 +1213,6 @@ status 状态码 String 1表示成功;其余表示失败 vo.setZlyInServiceNum(zlyInServiceNum); vo.setJlNotPerformNum(jlNotPerformNum); vo.setJlInServiceNum(jlInServiceNum); - return vo; } private Integer getCardType(String type) { diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 28f0e4645..1b7e46740 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -19,7 +19,6 @@ 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.gexin.fastjson.JSON; -import com.gexin.fastjson.JSONArray; import com.zhgd.exception.CustomException; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenAlertException; @@ -32,10 +31,8 @@ import com.zhgd.xmgl.base.entity.vo.TrendOneVo; import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.modules.basicdata.entity.Company; -import com.zhgd.xmgl.modules.basicdata.entity.SystemAreas; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper; -import com.zhgd.xmgl.modules.basicdata.mapper.SystemAreasMapper; import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper; import com.zhgd.xmgl.modules.basicdata.service.ICompanyService; import com.zhgd.xmgl.modules.basicdata.service.IDictionaryItemService; @@ -49,10 +46,8 @@ import com.zhgd.xmgl.modules.inspection.mapper.InspectTaskRecordMapper; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise; import com.zhgd.xmgl.modules.project.entity.bo.ProjectStatisticsCountBo; -import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo; import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; -import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper; import com.zhgd.xmgl.modules.worker.entity.*; @@ -62,12 +57,8 @@ import com.zhgd.xmgl.modules.worker.enums.EduTypeEnum; import com.zhgd.xmgl.modules.worker.mapper.*; import com.zhgd.xmgl.modules.worker.service.*; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync; -import com.zhgd.xmgl.modules.xz.entity.vo.RiskTrendByMainEnterpriseVo; import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper; -import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; -import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityQualityInspectionRecordService; import com.zhgd.xmgl.modules.xz.service.impl.XzSupplierQualificationApplyServiceImpl; -import com.zhgd.xmgl.modules.xz.special.service.IXzBlindPlatePlugSafeService; import com.zhgd.xmgl.security.entity.UserInfo; import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.util.*; @@ -85,7 +76,6 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; @@ -2566,7 +2556,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl enterpriseIds, String projectSn) { + return baseMapper.getAvgSafeScore(enterpriseIds, projectSn); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java index aa8332ac3..077f750dd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java @@ -1,9 +1,6 @@ package com.zhgd.xmgl.modules.xz.controller; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.wflow.bean.entity.WflowModelGroups; import com.wflow.bean.entity.WflowModelHistorys; @@ -11,26 +8,18 @@ import com.wflow.bean.entity.WflowModels; import com.wflow.mapper.WflowModelGroupsMapper; import com.wflow.mapper.WflowModelHistorysMapper; import com.wflow.mapper.WflowModelsMapper; -import com.wflow.workflow.bean.process.OrgUser; import com.wflow.workflow.bean.process.enums.ProcessResultEnum; -import com.wflow.workflow.bean.vo.FormAbstractsVo; import com.wflow.workflow.bean.vo.ProcessInstanceVo; import com.zhgd.jeecg.common.api.vo.Result; -import com.zhgd.xmgl.modules.xz.entity.XzHikvisionCompareData; -import com.zhgd.xmgl.tenant.TenantContextHolder; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.flowable.engine.HistoryService; -import org.flowable.engine.RuntimeService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; -import org.flowable.task.api.Task; -import org.flowable.task.api.TaskInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -117,7 +106,7 @@ public class XzFlowController { resultMap.put("ratio", new BigDecimal(number).divide(new BigDecimal(processInstanceVos.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); resultList.add(resultMap); } - resultList = resultList.stream().sorted((o1, o2) -> MapUtils.getInteger(o2, "num").compareTo( MapUtils.getInteger(o1, "num"))).collect(Collectors.toList()); + resultList = resultList.stream().sorted((o1, o2) -> MapUtils.getInteger(o2, "num").compareTo(MapUtils.getInteger(o1, "num"))).collect(Collectors.toList()); return Result.success(resultList); } @@ -157,7 +146,7 @@ public class XzFlowController { long count = processInstanceVos.stream().filter(p -> p.getFormId().equals(formId)).count(); int number = (int) count; map.put("num", number); - map.put("ratio", new BigDecimal(number).divide(new BigDecimal(processInstanceVos.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); + map.put("ratio", processInstanceVos.size() == 0 ? 0 : new BigDecimal(number).divide(new BigDecimal(processInstanceVos.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); map.put("running", typeList.stream().filter(l -> l.getFinishTime() == null).count()); map.put("complete", typeList.stream().filter(l -> l.getFinishTime() != null).count()); resultList.add(map); @@ -169,7 +158,7 @@ public class XzFlowController { /** * 构造流程实例列表 * - * @param Instances 流程实例 + * @param Instances 流程实例 * @return 流程实例列表 */ private List getInstances(List Instances) { diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/XzEmergencyRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/XzEmergencyRecordMapper.java index 18c041403..424514a63 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/XzEmergencyRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/XzEmergencyRecordMapper.java @@ -39,5 +39,5 @@ public interface XzEmergencyRecordMapper extends BaseMapper { List countAlarmNumByEnterprise(@Param("param") Map param); - Integer queryCount(HashMap param); + Integer queryCount(@Param("param") HashMap param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/xml/XzEmergencyRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/xml/XzEmergencyRecordMapper.xml index c76e32c3e..9c9433811 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/xml/XzEmergencyRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/xz/emergency/mapper/xml/XzEmergencyRecordMapper.xml @@ -101,6 +101,9 @@ left join worker_info wi on wi.id = t.alarm_person_id where t.project_sn=#{param.projectSn} and t.alarm_time >= #{param.beginOfWeek} - and wi.enterprise_id = #{param.enterpriseId} + and wi.enterprise_id in + + #{item} +