From d24f9e89905e390faa8a16c6056d6be2ca068bdc Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Wed, 31 Jul 2024 17:36:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E8=AF=84=E5=88=86=E5=92=8C?= =?UTF-8?q?=E8=87=AA=E6=A3=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InspectTaskRecordController.java | 3 +- .../entity/vo/InspectTaskRecordVo.java | 19 +++++ .../mapper/InspectTaskRecordMapper.java | 3 +- .../mapper/xml/InspectTaskRecordMapper.xml | 2 +- .../service/IInspectTaskRecordService.java | 3 +- .../impl/InspectTaskRecordServiceImpl.java | 62 ++++++++++++-- ...InspectionStandardBigScreenController.java | 63 ++++++--------- ...XzSecurityInspectTaskRecordController.java | 3 +- .../vo/XzSecurityInspectTaskRecordVo.java | 18 +++++ .../XzSecurityInspectTaskRecordMapper.java | 3 +- .../xml/XzSecurityInspectTaskRecordMapper.xml | 2 +- ...zSecurityQualityInspectionRecordMapper.xml | 5 +- .../IXzSecurityInspectTaskRecordService.java | 3 +- ...zSecurityInspectTaskRecordServiceImpl.java | 80 +++++++++++++++---- ...ityQualityInspectionRecordServiceImpl.java | 28 ++++++- 15 files changed, 223 insertions(+), 74 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/modules/inspection/entity/vo/InspectTaskRecordVo.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/XzSecurityInspectTaskRecordVo.java diff --git a/src/main/java/com/zhgd/xmgl/modules/inspection/controller/InspectTaskRecordController.java b/src/main/java/com/zhgd/xmgl/modules/inspection/controller/InspectTaskRecordController.java index a0f6dcaa6..794deec89 100644 --- a/src/main/java/com/zhgd/xmgl/modules/inspection/controller/InspectTaskRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/inspection/controller/InspectTaskRecordController.java @@ -5,6 +5,7 @@ import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.inspection.entity.InspectTaskRecord; +import com.zhgd.xmgl.modules.inspection.entity.vo.InspectTaskRecordVo; import com.zhgd.xmgl.modules.inspection.service.IInspectTaskRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -48,7 +49,7 @@ public class InspectTaskRecordController { @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"), }) @PostMapping(value = "/list") - public Result> queryPageList(@RequestBody Map map) { + public Result> queryPageList(@RequestBody Map map) { return Result.success(inspectTaskRecordService.selectInspectTaskRecordPage(map)); } diff --git a/src/main/java/com/zhgd/xmgl/modules/inspection/entity/vo/InspectTaskRecordVo.java b/src/main/java/com/zhgd/xmgl/modules/inspection/entity/vo/InspectTaskRecordVo.java new file mode 100644 index 000000000..cd4738cb1 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/inspection/entity/vo/InspectTaskRecordVo.java @@ -0,0 +1,19 @@ +package com.zhgd.xmgl.modules.inspection.entity.vo; + +import com.zhgd.xmgl.modules.inspection.entity.InspectTaskRecord; +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +public class InspectTaskRecordVo extends InspectTaskRecord { + private String inspectTypeName; + private String createUserName; + private Integer taskCompleteNum; + private Integer taskNum; + @ApiModelProperty("任务状态:1未开始2进行中3已完成4已逾期") + private Integer taskStatus; + private Map count; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/InspectTaskRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/InspectTaskRecordMapper.java index ae1d212f9..35697d903 100644 --- a/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/InspectTaskRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/InspectTaskRecordMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.annotation.DataScope; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.inspection.entity.InspectTaskRecord; +import com.zhgd.xmgl.modules.inspection.entity.vo.InspectTaskRecordVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -27,7 +28,7 @@ public interface InspectTaskRecordMapper extends BaseMapper { * @param map * @return */ - List selectInspectTaskRecordPage(Page page, @Param("param") Map map); + List selectInspectTaskRecordPage(Page page, @Param("param") Map map); /** * 获取今日巡检信息 diff --git a/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/xml/InspectTaskRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/xml/InspectTaskRecordMapper.xml index 1075962a8..b9a2ccd9b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/xml/InspectTaskRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/inspection/mapper/xml/InspectTaskRecordMapper.xml @@ -2,7 +2,7 @@ - SELECT a.*,b.inspect_type_name,d.real_name create_user_name from inspect_task_record a LEFT JOIN inspect_type b ON a.inspect_type_id=b.id diff --git a/src/main/java/com/zhgd/xmgl/modules/inspection/service/IInspectTaskRecordService.java b/src/main/java/com/zhgd/xmgl/modules/inspection/service/IInspectTaskRecordService.java index dcf2e0ac6..d40dcd8d0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/inspection/service/IInspectTaskRecordService.java +++ b/src/main/java/com/zhgd/xmgl/modules/inspection/service/IInspectTaskRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.inspection.entity.InspectTaskRecord; +import com.zhgd.xmgl.modules.inspection.entity.vo.InspectTaskRecordVo; import java.util.Map; @@ -34,7 +35,7 @@ public interface IInspectTaskRecordService extends IService { * @param map * @return */ - IPage selectInspectTaskRecordPage(Map map); + IPage selectInspectTaskRecordPage(Map map); /** * 获取今日巡检信息 diff --git a/src/main/java/com/zhgd/xmgl/modules/inspection/service/impl/InspectTaskRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/inspection/service/impl/InspectTaskRecordServiceImpl.java index 57961e5e9..f7c7d1c0a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/inspection/service/impl/InspectTaskRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/inspection/service/impl/InspectTaskRecordServiceImpl.java @@ -1,7 +1,9 @@ package com.zhgd.xmgl.modules.inspection.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,12 +13,16 @@ import com.zhgd.xmgl.modules.dangerous.entity.HiddenDangerInspectRecord; import com.zhgd.xmgl.modules.dangerous.service.IHiddenDangerInspectRecordService; import com.zhgd.xmgl.modules.inspection.entity.InspectTaskItemRecord; import com.zhgd.xmgl.modules.inspection.entity.InspectTaskRecord; +import com.zhgd.xmgl.modules.inspection.entity.vo.InspectTaskRecordVo; import com.zhgd.xmgl.modules.inspection.enums.InspectTaskRecordFrequencyTypeEnum; import com.zhgd.xmgl.modules.inspection.mapper.InspectTaskItemRecordMapper; import com.zhgd.xmgl.modules.inspection.mapper.InspectTaskRecordMapper; import com.zhgd.xmgl.modules.inspection.service.IInspectTaskRecordService; import com.zhgd.xmgl.modules.quality.entity.QualityInspectionRecord; import com.zhgd.xmgl.modules.quality.service.IQualityInspectionRecordService; +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskItemRecord; +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; +import com.zhgd.xmgl.modules.xz.security.enums.XzSecurityInspectTaskRecordFrequencyTypeEnum; import com.zhgd.xmgl.util.DateUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -25,6 +31,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * @Description: 检查任务 @@ -144,20 +151,61 @@ public class InspectTaskRecordServiceImpl extends ServiceImpl selectInspectTaskRecordPage(Map map) { + public IPage selectInspectTaskRecordPage(Map map) { int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString()); - Page page = new Page<>(pageNo, pageSize); - List list = inspectTaskRecordMapper.selectInspectTaskRecordPage(page, map); + Page page = new Page<>(pageNo, pageSize); + List list = inspectTaskRecordMapper.selectInspectTaskRecordPage(page, map); if (list != null && list.size() > 0) { - for (EntityMap data : list) { + List taskIds = list.stream().map(entityMap -> entityMap.getId()).collect(Collectors.toList()); + List allItemRecords = inspectTaskItemRecordMapper.selectList(new LambdaQueryWrapper().in(InspectTaskItemRecord::getTaskId, taskIds)); + List allInspectionRecords = qualityInspectionRecordService.list(new QueryWrapper().lambda().in(QualityInspectionRecord::getTaskId, taskIds)); + for (InspectTaskRecordVo data : list) { Map count = new HashMap<>(16); + Long id = data.getId(); if (MapUtils.getInteger(map, "type") == 1) { - count = hiddenDangerInspectRecordService.selectDangerInspectCountByTask(MapUtils.getLong(data, "id")); + count = hiddenDangerInspectRecordService.selectDangerInspectCountByTask(data.getId()); } else { - count = qualityInspectionRecordService.selectDangerInspectCountByTask(MapUtils.getLong(data, "id")); + count = qualityInspectionRecordService.selectDangerInspectCountByTask(data.getId()); + } + data.setCount(count); + try { + List itemRecords = allItemRecords.stream().filter(x -> x.getTaskId().equals(id)).collect(Collectors.toList()); + Set itemIdSet = itemRecords.stream().map(InspectTaskItemRecord::getId).collect(Collectors.toSet()); + List inspectionRecords = allInspectionRecords.stream().filter(x -> itemIdSet.contains(x.getItemId())).collect(Collectors.toList()); + data.setTaskNum(itemRecords.size()); + data.setTaskCompleteNum(inspectionRecords.stream().map(QualityInspectionRecord::getItemId).collect(Collectors.toSet()).size()); + Integer taskStatus; + if (Objects.equals(data.getTaskNum(), data.getTaskCompleteNum())) { + taskStatus = 3; + } else { + if (Objects.equals(data.getFrequencyType(), InspectTaskRecordFrequencyTypeEnum.TIME.getValue())) { + if (DateUtil.compare(DateUtil.parse(data.getEndTime()), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) < 0) { + taskStatus = 4; + } else if (DateUtil.compare(DateUtil.parse(data.getStartTime()), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) > 0) { + taskStatus = 1; + } else { + taskStatus = 2; + } + } else { + Set overDueItemIdSet = itemRecords.stream().filter(x -> + //2024-08-05/2024-08-06/第1次 + DateUtil.compare(DateUtil.parse(x.getItemName().split("/")[1]), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) < 0 + ).map(InspectTaskItemRecord::getId).collect(Collectors.toSet()); + Set irSet = inspectionRecords.stream().filter(x -> overDueItemIdSet.contains(x.getItemId())).map(QualityInspectionRecord::getItemId).collect(Collectors.toSet()); + if (overDueItemIdSet.size() != irSet.size()) { + taskStatus = 4; + } else if (itemRecords.stream().allMatch(x -> DateUtil.compare(DateUtil.parse(x.getItemName().split("/")[0]), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) > 0)) { + taskStatus = 1; + } else { + taskStatus = 2; + } + } + } + data.setTaskStatus(taskStatus); + } catch (Exception e) { + log.error("", e); } - data.put("count", count); } } return page.setRecords(list); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java index 8a8ab6927..d12d9fe96 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java @@ -98,7 +98,10 @@ public class SafetyInspectionStandardBigScreenController { } for (Map.Entry> entry : fiveTypeScoreMap.entrySet()) { List list = entry.getValue(); - BigDecimal score = list.stream().map(SafetyTypeScore::getScore).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(list.size()),2,BigDecimal.ROUND_HALF_UP); + if (list.size() == 0) { + continue; + } + BigDecimal score = list.stream().map(SafetyTypeScore::getScore).reduce(BigDecimal.ZERO, BigDecimal::add); switch (entry.getKey()) { case 1: fiveScore.setAqgl(score); @@ -119,7 +122,7 @@ public class SafetyInspectionStandardBigScreenController { vo.setThisMonthScores(fiveScore); vo.setMonthScore(thisMonthScoreVo.getScore()); vo.setLastMonthScore(lastMonthScoreVo.getScore()); - vo.setDifferScoreRate(vo.getLastMonthScore().compareTo(BigDecimal.ZERO) == 0 ? new BigDecimal("0") : vo.getMonthScore().subtract(vo.getLastMonthScore()).divide(vo.getLastMonthScore(),4,BigDecimal.ROUND_HALF_UP).subtract(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP)); + vo.setDifferScoreRate(vo.getLastMonthScore().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : vo.getMonthScore().subtract(vo.getLastMonthScore()).divide(vo.getLastMonthScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP)); return Result.success(vo); } @@ -138,8 +141,7 @@ public class SafetyInspectionStandardBigScreenController { List allTopTypes = xzSecurityDangerTypeRecordService.getTopTypes(topCodes); List allTypeRecords = xzSecurityDangerTypeRecordService.list(); List allItemRecords = xzSecurityDangerItemRecordService.list(); - List inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder().put("startMonth", month).put("status", 60).put("projectSn", projectSn).build()).getPage().getRecords(); - List enterpriseInfoList = enterpriseInfoService.getEnterpriseInfoList(new MapBuilder().put("projectSn", projectSn).build()); + List inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder().put("month", month).put("status", 60).put("projectSn", projectSn).put("pageSize",-1).build()).getPage().getRecords(); Map> tenTopTypes = allTopTypes.stream().collect(Collectors.groupingBy(XzSecurityDangerTypeRecord::getTenType)); for (Map.Entry> tenEntry : tenTopTypes.entrySet()) { Integer tenType = tenEntry.getKey(); @@ -147,7 +149,6 @@ public class SafetyInspectionStandardBigScreenController { ArrayList oneOfTenScores = new ArrayList<>(); for (XzSecurityDangerTypeRecord topType : topTenTypes) { //分项计算 - SafetyDetailTotalScoreVo totalScore = new SafetyDetailTotalScoreVo(); List typeRecords = allTypeRecords.stream().filter(x -> Objects.equals(x.getParentId(), topType.getId())).collect(Collectors.toList()); List typeIds = typeRecords.stream().map(XzSecurityDangerTypeRecord::getId).collect(Collectors.toList()); List itemRecords = allItemRecords.stream().filter(x -> typeIds.contains(x.getDangerTypeId())).collect(Collectors.toList()); @@ -160,7 +161,7 @@ public class SafetyInspectionStandardBigScreenController { SafetyScoreDetail safetyScoreDetail = new SafetyScoreDetail(); safetyScoreDetail.setName(typeRecord.getDangerName()); safetyScoreDetail.setProjectType(typeRecord.getProjectType()); - safetyScoreDetail.setShouldScore(BigDecimal.valueOf(10)); + safetyScoreDetail.setShouldScore(getShouldScore(typeRecord.getCode())); BigDecimal reduceScore = records.stream().filter(v -> v.getDeductScore() != null).map(v -> v.getDeductScore()).reduce(BigDecimal.ZERO, BigDecimal::add); //扣减分值总和不得超过该检查项目的应得分值 reduceScore = reduceScore.compareTo(safetyScoreDetail.getShouldScore()) > 0 ? safetyScoreDetail.getShouldScore() : reduceScore; @@ -178,21 +179,25 @@ public class SafetyInspectionStandardBigScreenController { } else { tScore = safetyScoreDetails.stream().map(SafetyScoreDetail::getScore).reduce(BigDecimal.ZERO, BigDecimal::add); } - totalScore.setScore(tScore); - oneOfTenScores.add(tScore); + BigDecimal fullScore = safetyScoreDetails.stream().map(SafetyScoreDetail::getShouldScore).reduce(BigDecimal.ZERO, BigDecimal::add); + oneOfTenScores.add(fullScore.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : tScore.divide(fullScore, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP)); } - BigDecimal score = oneOfTenScores.stream().reduce(BigDecimal.ZERO, BigDecimal::add); - score = score.divide(new BigDecimal(oneOfTenScores.size()),4,BigDecimal.ROUND_HALF_UP); SafetyTypeScore safetyTypeScore = new SafetyTypeScore(); safetyTypeScore.setName(TenSafetyTypeEnum.getEnumByCode(tenType).getDesc()); safetyTypeScore.setWeight(TenSafetyTypeEnum.getEnumByCode(tenType).getWeight()); - safetyTypeScore.setScore(score.divide(new BigDecimal("100"),4,BigDecimal.ROUND_HALF_UP).multiply(safetyTypeScore.getWeight()).setScale(2, BigDecimal.ROUND_HALF_UP)); + BigDecimal score = oneOfTenScores.stream().reduce(BigDecimal.ZERO, BigDecimal::add); + score = oneOfTenScores.size() == 0 ? BigDecimal.ZERO : score.divide(new BigDecimal(oneOfTenScores.size()), 4, BigDecimal.ROUND_HALF_UP); + score = score.divide(new BigDecimal("100"), 4, BigDecimal.ROUND_HALF_UP).multiply(safetyTypeScore.getWeight()).setScale(2, BigDecimal.ROUND_HALF_UP); + score = score.compareTo(safetyTypeScore.getWeight()) > 0 ? safetyTypeScore.getWeight() : score; + score = score.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : score; + safetyTypeScore.setScore(score); safetyTypeScore.setDeductScore(safetyTypeScore.getWeight().subtract(safetyTypeScore.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP)); safetyTypeScore.setTenType(tenType); safetyTypeScores.add(safetyTypeScore); } BigDecimal score = safetyTypeScores.stream().map(SafetyTypeScore::getScore).reduce(BigDecimal.ZERO, BigDecimal::add); - vo.setScore(score); + BigDecimal totalScore = safetyTypeScores.stream().map(SafetyTypeScore::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setScore(totalScore.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : score.divide(totalScore, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP)); vo.setSafetyTypeScores(safetyTypeScores); return Result.success(vo); } @@ -223,44 +228,21 @@ public class SafetyInspectionStandardBigScreenController { List typeRecords = xzSecurityDangerTypeRecordService.list(new LambdaQueryWrapper().eq(XzSecurityDangerTypeRecord::getParentId, topType.getId())); List typeIds = typeRecords.stream().map(XzSecurityDangerTypeRecord::getId).collect(Collectors.toList()); List itemRecords = xzSecurityDangerItemRecordService.list(new LambdaQueryWrapper().in(XzSecurityDangerItemRecord::getDangerTypeId, typeIds)); - List inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder().put("startMonth", month).put("status", 60).put("projectSn", projectSn).build()).getPage().getRecords(); - List enterpriseInfoList = enterpriseInfoService.getEnterpriseInfoList(new MapBuilder().put("projectSn", projectSn).build()); + List inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder().put("month", month).put("status", 60).put("projectSn", projectSn).put("pageSize",-1).build()).getPage().getRecords(); List safetyScoreDetails = new ArrayList<>(); for (XzSecurityDangerTypeRecord typeRecord : typeRecords) { Long typeId = typeRecord.getId(); List items = itemRecords.stream().filter(r -> Objects.equals(r.getDangerTypeId(), typeId)).collect(Collectors.toList()); Set itemIdSet = items.stream().map(XzSecurityDangerItemRecord::getId).collect(Collectors.toSet()); List records = inspectionRecords.stream().filter(r -> itemIdSet.contains(r.getDangerItemId())).collect(Collectors.toList()); - //设置总公司 - for (XzSecurityQualityInspectionRecordVo record : records) { - String mainEnterpriseName; - Optional optional = enterpriseInfoList.stream().filter(e -> Objects.equals(MapUtils.getLong(e, "id"), record.getEnterpriseId())).findFirst(); - if (optional.isPresent()) { - EntityMap entityMap = optional.get(); - String projectEnterpriseId = MapUtils.getString(entityMap, "projectEnterpriseId"); - String ancestors = MapUtils.getString(entityMap, "ancestors"); - if (Objects.equals(projectEnterpriseId, "0")) { - mainEnterpriseName = record.getEnterpriseName(); - } else { - optional = enterpriseInfoList.stream().filter(e -> MapUtils.getString(e, "projectEnterpriseId").equals(ancestors.split(",")[1])).findFirst(); - if (optional.isPresent()) { - mainEnterpriseName = MapUtils.getString(optional.get(), "enterpriseName"); - } else { - mainEnterpriseName = record.getEnterpriseName(); - } - } - } else { - mainEnterpriseName = record.getEnterpriseName(); - } - record.setMainEnterpriseName(mainEnterpriseName); - } SafetyScoreDetail safetyScoreDetail = new SafetyScoreDetail(); safetyScoreDetail.setName(typeRecord.getDangerName()); safetyScoreDetail.setProjectType(typeRecord.getProjectType()); - safetyScoreDetail.setShouldScore(getShouldScore(code)); + safetyScoreDetail.setShouldScore(getShouldScore(typeRecord.getCode())); BigDecimal reduceScore = records.stream().filter(v -> v.getDeductScore() != null).map(v -> v.getDeductScore()).reduce(BigDecimal.ZERO, BigDecimal::add); //扣减分值总和不得超过该检查项目的应得分值 reduceScore = reduceScore.compareTo(safetyScoreDetail.getShouldScore()) > 0 ? safetyScoreDetail.getShouldScore() : reduceScore; + reduceScore = reduceScore.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : reduceScore; safetyScoreDetail.setDeductScore(reduceScore.setScale(2, BigDecimal.ROUND_HALF_UP)); safetyScoreDetail.setScore(safetyScoreDetail.getShouldScore().subtract(reduceScore).setScale(2, BigDecimal.ROUND_HALF_UP)); safetyScoreDetail.setDeductReasonList(records); @@ -271,11 +253,12 @@ public class SafetyInspectionStandardBigScreenController { if (safetyScoreDetails.stream().anyMatch(s -> s.getShouldScore().equals(new BigDecimal(0))) || mustReduce.compareTo(new BigDecimal(40)) < 0) { //保证项目中有一项未得分或保证项目小计得分不足40分,此分项检查评分表不应得分 - tScore = new BigDecimal(0); + tScore = BigDecimal.ZERO; } else { tScore = safetyScoreDetails.stream().map(SafetyScoreDetail::getScore).reduce(BigDecimal.ZERO, BigDecimal::add); } - totalScore.setScore(tScore); + BigDecimal fullScore = safetyScoreDetails.stream().map(SafetyScoreDetail::getShouldScore).reduce(BigDecimal.ZERO, BigDecimal::add); + totalScore.setScore(fullScore.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : tScore.divide(fullScore, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP)); totalScore.setSafetyScoreDetails(safetyScoreDetails); return Result.success(totalScore); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityInspectTaskRecordController.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityInspectTaskRecordController.java index d8142e7a6..4aca2b22a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityInspectTaskRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityInspectTaskRecordController.java @@ -5,6 +5,7 @@ import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; +import com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityInspectTaskRecordVo; import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityInspectTaskRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -49,7 +50,7 @@ public class XzSecurityInspectTaskRecordController { @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"), }) @PostMapping(value = "/list") - public Result> queryPageList(@RequestBody Map map) { + public Result> queryPageList(@RequestBody Map map) { return Result.success(inspectTaskRecordService.selectInspectTaskRecordPage(map)); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/XzSecurityInspectTaskRecordVo.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/XzSecurityInspectTaskRecordVo.java new file mode 100644 index 000000000..abff98a94 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/XzSecurityInspectTaskRecordVo.java @@ -0,0 +1,18 @@ +package com.zhgd.xmgl.modules.xz.security.entity.vo; + +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +public class XzSecurityInspectTaskRecordVo extends XzSecurityInspectTaskRecord { + private String inspectTypeName; + private String createUserName; + private Integer taskCompleteNum; + private Integer taskNum; + @ApiModelProperty("任务状态:1未开始2进行中3已完成4已逾期") + private Integer taskStatus; + private Map count; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/XzSecurityInspectTaskRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/XzSecurityInspectTaskRecordMapper.java index 79ab2436d..5c4780a9c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/XzSecurityInspectTaskRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/XzSecurityInspectTaskRecordMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.annotation.DataScope; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; +import com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityInspectTaskRecordVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -27,7 +28,7 @@ public interface XzSecurityInspectTaskRecordMapper extends BaseMapper selectInspectTaskRecordPage(Page page, @Param("param") Map map); + List selectInspectTaskRecordPage(Page page, @Param("param") Map map); /** * 获取今日巡检信息 diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityInspectTaskRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityInspectTaskRecordMapper.xml index e2d161cae..45f1433e4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityInspectTaskRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityInspectTaskRecordMapper.xml @@ -1,7 +1,7 @@ - SELECT a.*,b.inspect_type_name,d.real_name create_user_name from xz_security_inspect_task_record a LEFT JOIN inspect_type b ON a.inspect_type_id=b.id 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 08a565484..7bdc02819 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 @@ -273,8 +273,9 @@ LEFT JOIN (SELECT quality_id,MAX(rectify_time) as rectify_time FROM xz_security_quality_rectify_record GROUP BY quality_id) r ON r.quality_id = t.id WHERE t.project_sn = #{param.projectSn} - - and t.inspect_time >= #{param.startMonth} + + and t.inspect_time >= #{param.month} + and t.inspect_time <= concat(#{param.month},'-31 23:59:59') and t.status != 6 diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/IXzSecurityInspectTaskRecordService.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/IXzSecurityInspectTaskRecordService.java index 519408265..3d94f7e3b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/IXzSecurityInspectTaskRecordService.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/IXzSecurityInspectTaskRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; +import com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityInspectTaskRecordVo; import java.util.Map; @@ -34,7 +35,7 @@ public interface IXzSecurityInspectTaskRecordService extends IService selectInspectTaskRecordPage(Map map); + IPage selectInspectTaskRecordPage(Map map); /** * 获取今日巡检信息 diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityInspectTaskRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityInspectTaskRecordServiceImpl.java index d3c14b41c..baaeac3d1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityInspectTaskRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityInspectTaskRecordServiceImpl.java @@ -1,7 +1,9 @@ package com.zhgd.xmgl.modules.xz.security.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,6 +14,7 @@ import com.zhgd.xmgl.modules.dangerous.service.IHiddenDangerInspectRecordService import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskItemRecord; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityInspectTaskRecord; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; +import com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityInspectTaskRecordVo; import com.zhgd.xmgl.modules.xz.security.enums.XzSecurityInspectTaskRecordFrequencyTypeEnum; import com.zhgd.xmgl.modules.xz.security.mapper.XzSecurityInspectTaskItemRecordMapper; import com.zhgd.xmgl.modules.xz.security.mapper.XzSecurityInspectTaskRecordMapper; @@ -21,10 +24,12 @@ import com.zhgd.xmgl.util.DateUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * @Description: 检查任务 @@ -35,16 +40,25 @@ import java.util.*; @Service @Transactional(rollbackFor = Exception.class) public class XzSecurityInspectTaskRecordServiceImpl extends ServiceImpl implements IXzSecurityInspectTaskRecordService { + @Lazy + @Autowired + XzSecurityQualityInspectionRecordServiceImpl xzSecurityQualityInspectionRecordService; @Autowired private XzSecurityInspectTaskRecordMapper xzSecurityInspectTaskRecordMapper; @Autowired private XzSecurityInspectTaskItemRecordMapper xzSecurityInspectTaskItemRecordMapper; @Autowired private IHiddenDangerInspectRecordService hiddenDangerInspectRecordService; - @Autowired private IXzSecurityQualityInspectionRecordService qualityInspectionRecordService; + public static void main(String[] args) { + List diffTimeWeekList = DateUtils.getDiffTimeWeekList(cn.hutool.core.date.DateUtil.format( + cn.hutool.core.date.DateUtil.offsetDay(new Date(), -7), "yyyy-MM-dd"), + cn.hutool.core.date.DateUtil.format(new Date(), "yyyy-MM-dd")); + System.out.println(diffTimeWeekList); + } + @Override public void saveInspectTaskRecord(XzSecurityInspectTaskRecord xzSecurityInspectTaskRecord) { if (xzSecurityInspectTaskRecord.getFrequencyType() == null) { @@ -90,14 +104,6 @@ public class XzSecurityInspectTaskRecordServiceImpl extends ServiceImpl diffTimeWeekList = DateUtils.getDiffTimeWeekList(cn.hutool.core.date.DateUtil.format( - cn.hutool.core.date.DateUtil.offsetDay(new Date(), -7), "yyyy-MM-dd"), - cn.hutool.core.date.DateUtil.format(new Date(), "yyyy-MM-dd")); - System.out.println(diffTimeWeekList); - } - public void saveTaskItemRecord(XzSecurityInspectTaskRecord xzSecurityInspectTaskRecord, String title) { for (int i = 0; i < xzSecurityInspectTaskRecord.getFrequencyNum(); i++) { XzSecurityInspectTaskItemRecord itemRecord = new XzSecurityInspectTaskItemRecord(); @@ -144,20 +150,62 @@ public class XzSecurityInspectTaskRecordServiceImpl extends ServiceImpl selectInspectTaskRecordPage(Map map) { + public IPage selectInspectTaskRecordPage(Map map) { int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString()); - Page page = new Page<>(pageNo, pageSize); - List list = xzSecurityInspectTaskRecordMapper.selectInspectTaskRecordPage(page, map); + Page page = new Page<>(pageNo, pageSize); + List list = xzSecurityInspectTaskRecordMapper.selectInspectTaskRecordPage(page, map); if (list != null && list.size() > 0) { - for (EntityMap data : list) { + List taskIds = list.stream().map(entityMap -> entityMap.getId()).collect(Collectors.toList()); + List allItemRecords = xzSecurityInspectTaskItemRecordMapper.selectList(new LambdaQueryWrapper().in(XzSecurityInspectTaskItemRecord::getTaskId, taskIds)); + List allInspectionRecords = xzSecurityQualityInspectionRecordService.list(new QueryWrapper().lambda().in(XzSecurityQualityInspectionRecord::getTaskId, taskIds)); + for (XzSecurityInspectTaskRecordVo data : list) { Map count = new HashMap<>(16); + Long id = data.getId(); if (MapUtils.getInteger(map, "type") == 1) { - count = hiddenDangerInspectRecordService.selectDangerInspectCountByTask(MapUtils.getLong(data, "id")); + count = hiddenDangerInspectRecordService.selectDangerInspectCountByTask(id); } else { - count = qualityInspectionRecordService.selectDangerInspectCountByTask(MapUtils.getLong(data, "id")); + count = qualityInspectionRecordService.selectDangerInspectCountByTask(id); + } + data.setCount(count); + + try { + List itemRecords = allItemRecords.stream().filter(x -> x.getTaskId().equals(id)).collect(Collectors.toList()); + Set itemIdSet = itemRecords.stream().map(XzSecurityInspectTaskItemRecord::getId).collect(Collectors.toSet()); + List inspectionRecords = allInspectionRecords.stream().filter(x -> itemIdSet.contains(x.getItemId())).collect(Collectors.toList()); + data.setTaskNum(itemRecords.size()); + data.setTaskCompleteNum(inspectionRecords.stream().map(XzSecurityQualityInspectionRecord::getItemId).collect(Collectors.toSet()).size()); + Integer taskStatus; + if (Objects.equals(data.getTaskNum(), data.getTaskCompleteNum())) { + taskStatus = 3; + } else { + if (Objects.equals(data.getFrequencyType(), XzSecurityInspectTaskRecordFrequencyTypeEnum.TIME.getValue())) { + if (DateUtil.compare(DateUtil.parse(data.getEndTime()), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) < 0) { + taskStatus = 4; + } else if (DateUtil.compare(DateUtil.parse(data.getStartTime()), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) > 0) { + taskStatus = 1; + } else { + taskStatus = 2; + } + } else { + Set overDueItemIdSet = itemRecords.stream().filter(x -> + //2024-08-05/2024-08-06/第1次 + DateUtil.compare(DateUtil.parse(x.getItemName().split("/")[1]), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) < 0 + ).map(XzSecurityInspectTaskItemRecord::getId).collect(Collectors.toSet()); + Set irSet = inspectionRecords.stream().filter(x -> overDueItemIdSet.contains(x.getItemId())).map(XzSecurityQualityInspectionRecord::getItemId).collect(Collectors.toSet()); + if (overDueItemIdSet.size() != irSet.size()) { + taskStatus = 4; + } else if (itemRecords.stream().allMatch(x -> DateUtil.compare(DateUtil.parse(x.getItemName().split("/")[0]), DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd"))) > 0)) { + taskStatus = 1; + } else { + taskStatus = 2; + } + } + } + data.setTaskStatus(taskStatus); + } catch (Exception e) { + log.error("", e); } - data.put("count", count); } } return page.setRecords(list); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityInspectionRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityInspectionRecordServiceImpl.java index ca1a09c17..ab59ad00b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityInspectionRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityInspectionRecordServiceImpl.java @@ -43,6 +43,7 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerInfoAuditRecord; import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoAuditRecordMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; +import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService; import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; import com.zhgd.xmgl.modules.xz.entity.XzDeductScoreRecord; import com.zhgd.xmgl.modules.xz.entity.XzTaskProgressContent; @@ -124,6 +125,9 @@ public class XzSecurityQualityInspectionRecordServiceImpl extends ServiceImpl regionIds = JSON.parseObject(map.get(REGION_ID).toString(), new TypeReference>() { }); if (CollectionUtils.isNotEmpty(regionIds)) { Long topId = regionIds.get(regionIds.size() - 1); - List qualityRegionList = qualityRegionMapper.selectList(new LambdaQueryWrapper().eq(QualityRegion::getProjectSn, MapUtils.getString(map, "projectSn"))); + List qualityRegionList = qualityRegionMapper.selectList(new LambdaQueryWrapper().eq(QualityRegion::getProjectSn, projectSn)); List idList = getChildrenByQualityRegionId(topId, qualityRegionList); idList.add(topId); map.put(REGION_ID, idList); @@ -205,8 +210,29 @@ public class XzSecurityQualityInspectionRecordServiceImpl extends ServiceImpl page = new Page<>(pageNo, pageSize); List list = xzSecurityQualityInspectionRecordMapper.selectQualityInspectionRecordPage(page, map); + List enterpriseInfoList = enterpriseInfoService.getEnterpriseInfoList(new MapBuilder().put("projectSn", projectSn).build()); for (XzSecurityQualityInspectionRecordVo vo : list) { setProblemDescription(vo); + //设置总公司名称(总包单位) + String mainEnterpriseName; + Optional optional = enterpriseInfoList.stream().filter(e -> Objects.equals(MapUtils.getLong(e, "id"), vo.getEnterpriseId())).findFirst(); + if (optional.isPresent()) { + EntityMap entityMap = optional.get(); + String ancestors = MapUtils.getString(entityMap, "ancestors"); + if (ancestors == null || Objects.equals(ancestors, "0")) { + mainEnterpriseName = vo.getEnterpriseName(); + } else { + optional = enterpriseInfoList.stream().filter(e -> MapUtils.getString(e, "projectEnterpriseId").equals(ancestors.split(",")[1])).findFirst(); + if (optional.isPresent()) { + mainEnterpriseName = MapUtils.getString(optional.get(), "enterpriseName"); + } else { + mainEnterpriseName = vo.getEnterpriseName(); + } + } + } else { + mainEnterpriseName = vo.getEnterpriseName(); + } + vo.setMainEnterpriseName(mainEnterpriseName); } page.setRecords(list); XzSecurityQualityInspectionRecordTotalVo total = getXzSecurityQualityInspectionRecordTotalVo(map);