大屏评分和自检修改

This commit is contained in:
guoshengxiong 2024-07-31 17:36:35 +08:00
parent 46a8ec705e
commit d24f9e8990
15 changed files with 223 additions and 74 deletions

View File

@ -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<IPage<EntityMap>> queryPageList(@RequestBody Map<String,Object> map) {
public Result<IPage<InspectTaskRecordVo >> queryPageList(@RequestBody Map<String,Object> map) {
return Result.success(inspectTaskRecordService.selectInspectTaskRecordPage(map));
}

View File

@ -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<String, Object> count;
}

View File

@ -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<InspectTaskRecord> {
* @param map
* @return
*/
List<EntityMap> selectInspectTaskRecordPage(Page<EntityMap> page, @Param("param") Map<String, Object> map);
List<InspectTaskRecordVo> selectInspectTaskRecordPage(Page<InspectTaskRecordVo> page, @Param("param") Map<String, Object> map);
/**
* 获取今日巡检信息

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.inspection.mapper.InspectTaskRecordMapper">
<select id="selectInspectTaskRecordPage" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
<select id="selectInspectTaskRecordPage" resultType="com.zhgd.xmgl.modules.inspection.entity.vo.InspectTaskRecordVo">
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

View File

@ -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<InspectTaskRecord> {
* @param map
* @return
*/
IPage<EntityMap> selectInspectTaskRecordPage(Map<String, Object> map);
IPage<InspectTaskRecordVo > selectInspectTaskRecordPage(Map<String, Object> map);
/**
* 获取今日巡检信息

View File

@ -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<InspectTaskRecordM
}
@Override
public IPage<EntityMap> selectInspectTaskRecordPage(Map<String, Object> map) {
public IPage<InspectTaskRecordVo > selectInspectTaskRecordPage(Map<String, Object> map) {
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
Page<EntityMap> page = new Page<>(pageNo, pageSize);
List<EntityMap> list = inspectTaskRecordMapper.selectInspectTaskRecordPage(page, map);
Page<InspectTaskRecordVo > page = new Page<>(pageNo, pageSize);
List<InspectTaskRecordVo > list = inspectTaskRecordMapper.selectInspectTaskRecordPage(page, map);
if (list != null && list.size() > 0) {
for (EntityMap data : list) {
List<Long> taskIds = list.stream().map(entityMap -> entityMap.getId()).collect(Collectors.toList());
List<InspectTaskItemRecord> allItemRecords = inspectTaskItemRecordMapper.selectList(new LambdaQueryWrapper<InspectTaskItemRecord>().in(InspectTaskItemRecord::getTaskId, taskIds));
List<QualityInspectionRecord> allInspectionRecords = qualityInspectionRecordService.list(new QueryWrapper<QualityInspectionRecord>().lambda().in(QualityInspectionRecord::getTaskId, taskIds));
for (InspectTaskRecordVo data : list) {
Map<String, Object> 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<InspectTaskItemRecord> itemRecords = allItemRecords.stream().filter(x -> x.getTaskId().equals(id)).collect(Collectors.toList());
Set<Long> itemIdSet = itemRecords.stream().map(InspectTaskItemRecord::getId).collect(Collectors.toSet());
List<QualityInspectionRecord> 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<Long> 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<Long> 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);

View File

@ -98,7 +98,10 @@ public class SafetyInspectionStandardBigScreenController {
}
for (Map.Entry<Integer, List<SafetyTypeScore>> entry : fiveTypeScoreMap.entrySet()) {
List<SafetyTypeScore> 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<XzSecurityDangerTypeRecord> allTopTypes = xzSecurityDangerTypeRecordService.getTopTypes(topCodes);
List<XzSecurityDangerTypeRecord> allTypeRecords = xzSecurityDangerTypeRecordService.list();
List<XzSecurityDangerItemRecord> allItemRecords = xzSecurityDangerItemRecordService.list();
List<XzSecurityQualityInspectionRecordVo> inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder<String, Object>().put("startMonth", month).put("status", 60).put("projectSn", projectSn).build()).getPage().getRecords();
List<EntityMap> enterpriseInfoList = enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put("projectSn", projectSn).build());
List<XzSecurityQualityInspectionRecordVo> inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder<String, Object>().put("month", month).put("status", 60).put("projectSn", projectSn).put("pageSize",-1).build()).getPage().getRecords();
Map<Integer, List<XzSecurityDangerTypeRecord>> tenTopTypes = allTopTypes.stream().collect(Collectors.groupingBy(XzSecurityDangerTypeRecord::getTenType));
for (Map.Entry<Integer, List<XzSecurityDangerTypeRecord>> tenEntry : tenTopTypes.entrySet()) {
Integer tenType = tenEntry.getKey();
@ -147,7 +149,6 @@ public class SafetyInspectionStandardBigScreenController {
ArrayList<BigDecimal> oneOfTenScores = new ArrayList<>();
for (XzSecurityDangerTypeRecord topType : topTenTypes) {
//分项计算
SafetyDetailTotalScoreVo totalScore = new SafetyDetailTotalScoreVo();
List<XzSecurityDangerTypeRecord> typeRecords = allTypeRecords.stream().filter(x -> Objects.equals(x.getParentId(), topType.getId())).collect(Collectors.toList());
List<Long> typeIds = typeRecords.stream().map(XzSecurityDangerTypeRecord::getId).collect(Collectors.toList());
List<XzSecurityDangerItemRecord> 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<XzSecurityDangerTypeRecord> typeRecords = xzSecurityDangerTypeRecordService.list(new LambdaQueryWrapper<XzSecurityDangerTypeRecord>().eq(XzSecurityDangerTypeRecord::getParentId, topType.getId()));
List<Long> typeIds = typeRecords.stream().map(XzSecurityDangerTypeRecord::getId).collect(Collectors.toList());
List<XzSecurityDangerItemRecord> itemRecords = xzSecurityDangerItemRecordService.list(new LambdaQueryWrapper<XzSecurityDangerItemRecord>().in(XzSecurityDangerItemRecord::getDangerTypeId, typeIds));
List<XzSecurityQualityInspectionRecordVo> inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder<String, Object>().put("startMonth", month).put("status", 60).put("projectSn", projectSn).build()).getPage().getRecords();
List<EntityMap> enterpriseInfoList = enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put("projectSn", projectSn).build());
List<XzSecurityQualityInspectionRecordVo> inspectionRecords = xzSecurityQualityInspectionRecordService.selectQualityInspectionRecordPage(new MapBuilder<String, Object>().put("month", month).put("status", 60).put("projectSn", projectSn).put("pageSize",-1).build()).getPage().getRecords();
List<SafetyScoreDetail> safetyScoreDetails = new ArrayList<>();
for (XzSecurityDangerTypeRecord typeRecord : typeRecords) {
Long typeId = typeRecord.getId();
List<XzSecurityDangerItemRecord> items = itemRecords.stream().filter(r -> Objects.equals(r.getDangerTypeId(), typeId)).collect(Collectors.toList());
Set<Long> itemIdSet = items.stream().map(XzSecurityDangerItemRecord::getId).collect(Collectors.toSet());
List<XzSecurityQualityInspectionRecordVo> records = inspectionRecords.stream().filter(r -> itemIdSet.contains(r.getDangerItemId())).collect(Collectors.toList());
//设置总公司
for (XzSecurityQualityInspectionRecordVo record : records) {
String mainEnterpriseName;
Optional<EntityMap> 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);
}

View File

@ -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<IPage<EntityMap>> queryPageList(@RequestBody Map<String, Object> map) {
public Result<IPage<XzSecurityInspectTaskRecordVo >> queryPageList(@RequestBody Map<String, Object> map) {
return Result.success(inspectTaskRecordService.selectInspectTaskRecordPage(map));
}

View File

@ -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<String, Object> count;
}

View File

@ -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<XzSecurity
* @param map
* @return
*/
List<EntityMap> selectInspectTaskRecordPage(Page<EntityMap> page, @Param("param") Map<String, Object> map);
List<XzSecurityInspectTaskRecordVo > selectInspectTaskRecordPage(Page<XzSecurityInspectTaskRecordVo> page, @Param("param") Map<String, Object> map);
/**
* 获取今日巡检信息

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.xz.security.mapper.XzSecurityInspectTaskRecordMapper">
<select id="selectInspectTaskRecordPage" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
<select id="selectInspectTaskRecordPage" resultType="com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityInspectTaskRecordVo">
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

View File

@ -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}
<if test="param.startMonth != null and param.startMonth != '' ">
and t.inspect_time >= #{param.startMonth}
<if test="param.month != null and param.month != '' ">
and t.inspect_time >= #{param.month}
and t.inspect_time &lt;= concat(#{param.month},'-31 23:59:59')
</if>
<if test="param.recordStatus == '8'.toString() ">
and t.status != 6

View File

@ -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<XzSecurity
* @param map
* @return
*/
IPage<EntityMap> selectInspectTaskRecordPage(Map<String, Object> map);
IPage<XzSecurityInspectTaskRecordVo > selectInspectTaskRecordPage(Map<String, Object> map);
/**
* 获取今日巡检信息

View File

@ -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<XzSecurityInspectTaskRecordMapper, XzSecurityInspectTaskRecord> 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<String> 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<XzSecuri
}
public static void main(String[] args) {
List<String> 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<XzSecuri
}
@Override
public IPage<EntityMap> selectInspectTaskRecordPage(Map<String, Object> map) {
public IPage<XzSecurityInspectTaskRecordVo> selectInspectTaskRecordPage(Map<String, Object> map) {
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
Page<EntityMap> page = new Page<>(pageNo, pageSize);
List<EntityMap> list = xzSecurityInspectTaskRecordMapper.selectInspectTaskRecordPage(page, map);
Page<XzSecurityInspectTaskRecordVo> page = new Page<>(pageNo, pageSize);
List<XzSecurityInspectTaskRecordVo> list = xzSecurityInspectTaskRecordMapper.selectInspectTaskRecordPage(page, map);
if (list != null && list.size() > 0) {
for (EntityMap data : list) {
List<Long> taskIds = list.stream().map(entityMap -> entityMap.getId()).collect(Collectors.toList());
List<XzSecurityInspectTaskItemRecord> allItemRecords = xzSecurityInspectTaskItemRecordMapper.selectList(new LambdaQueryWrapper<XzSecurityInspectTaskItemRecord>().in(XzSecurityInspectTaskItemRecord::getTaskId, taskIds));
List<XzSecurityQualityInspectionRecord> allInspectionRecords = xzSecurityQualityInspectionRecordService.list(new QueryWrapper<XzSecurityQualityInspectionRecord>().lambda().in(XzSecurityQualityInspectionRecord::getTaskId, taskIds));
for (XzSecurityInspectTaskRecordVo data : list) {
Map<String, Object> 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<XzSecurityInspectTaskItemRecord> itemRecords = allItemRecords.stream().filter(x -> x.getTaskId().equals(id)).collect(Collectors.toList());
Set<Long> itemIdSet = itemRecords.stream().map(XzSecurityInspectTaskItemRecord::getId).collect(Collectors.toSet());
List<XzSecurityQualityInspectionRecord> 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<Long> 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<Long> 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);

View File

@ -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<Xz
@Lazy
@Autowired
IExamTrainService examTrainService;
@Lazy
@Autowired
IEnterpriseInfoService enterpriseInfoService;
@Autowired
private QualityRegionMapper qualityRegionMapper;
@Autowired
@ -192,12 +196,13 @@ public class XzSecurityQualityInspectionRecordServiceImpl extends ServiceImpl<Xz
XzSecurityRecordVo data = new XzSecurityRecordVo();
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
String projectSn = MapUtils.getString(map, "projectSn");
if (map.get(REGION_ID) != null && StringUtils.isNotBlank(map.get(REGION_ID).toString())) {
List<Long> regionIds = JSON.parseObject(map.get(REGION_ID).toString(), new TypeReference<List<Long>>() {
});
if (CollectionUtils.isNotEmpty(regionIds)) {
Long topId = regionIds.get(regionIds.size() - 1);
List<QualityRegion> qualityRegionList = qualityRegionMapper.selectList(new LambdaQueryWrapper<QualityRegion>().eq(QualityRegion::getProjectSn, MapUtils.getString(map, "projectSn")));
List<QualityRegion> qualityRegionList = qualityRegionMapper.selectList(new LambdaQueryWrapper<QualityRegion>().eq(QualityRegion::getProjectSn, projectSn));
List<Long> idList = getChildrenByQualityRegionId(topId, qualityRegionList);
idList.add(topId);
map.put(REGION_ID, idList);
@ -205,8 +210,29 @@ public class XzSecurityQualityInspectionRecordServiceImpl extends ServiceImpl<Xz
}
Page<XzSecurityQualityInspectionRecordVo> page = new Page<>(pageNo, pageSize);
List<XzSecurityQualityInspectionRecordVo> list = xzSecurityQualityInspectionRecordMapper.selectQualityInspectionRecordPage(page, map);
List<EntityMap> enterpriseInfoList = enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put("projectSn", projectSn).build());
for (XzSecurityQualityInspectionRecordVo vo : list) {
setProblemDescription(vo);
//设置总公司名称总包单位
String mainEnterpriseName;
Optional<EntityMap> 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);