|
|
@@ -13,17 +13,22 @@ import cn.start.tz.module.pressure.enums.TaskOrderItemReportTypeEnum;
|
|
|
import cn.start.tz.module.pressure.enums.TaskOrderStatusEnum;
|
|
|
import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.InspectionOpinionApprovalVo;
|
|
|
import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.ReportUploadVO;
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOrderSyncReportVO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.equippipecheckhistory.EquipPipeCheckHistoryDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderinput.PipeTaskOrderInputDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportrecord.PipeTaskOrderItemReportRecordDO;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.equippipecheckhistory.EquipPipeCheckHistoryMapper;
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.equippipedetail.EquipPipeDetailMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderinput.PipeTaskOrderInputMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreportrecord.PipeTaskOrderItemReportRecordMapper;
|
|
|
import cn.start.tz.module.pressure2.framework.thread.CommonThread;
|
|
|
import cn.start.tz.module.pressure2.service.externalOA.ExternalOAService;
|
|
|
@@ -38,6 +43,7 @@ import cn.start.tz.module.pressure2.service.taskordernontaxapply.TaskOrderNonTax
|
|
|
import cn.start.tz.module.pressure2.service.taskordernontaxapply.vo.TaskOrderNonTaxApplyCreateVO;
|
|
|
import cn.start.tz.module.system.api.user.AdminUserApi;
|
|
|
import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
@@ -55,6 +61,7 @@ import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreport.vo.*;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
|
|
|
@@ -184,6 +191,12 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
|
|
|
@Resource
|
|
|
private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private EquipPipeDetailMapper equipPipeDetailMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private ExternalOAService externalOAService;
|
|
|
|
|
|
@@ -197,6 +210,7 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
|
|
|
private AdminUserApi adminUserApi;
|
|
|
|
|
|
@Resource
|
|
|
+ @Lazy
|
|
|
private PipeTaskOrderService pipeTaskOrderService;
|
|
|
|
|
|
@Override
|
|
|
@@ -632,106 +646,119 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
|
|
|
List<PipeTaskOrderItemDO> pipeTaskOrderItemDOList = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemDO>().
|
|
|
eq(PipeTaskOrderItemDO::getOrderId, taskOrderItemTmp.getOrderId()).
|
|
|
ne(PipeTaskOrderItemDO::getTaskStatus, TaskOrderStatusEnum.CANCEL.getStatus()));
|
|
|
+ List<String> pipeIds = pipeTaskOrderItemDOList.stream().map(PipeTaskOrderItemDO::getEquipId).toList();
|
|
|
+ List<EquipPipeDO> equipPipeDOList = equipPipeMapper.selectByIds(pipeIds);
|
|
|
+ List<PipeTaskOrderItemDetailDO> pipeTaskOrderItemDetailDOList = pipeTaskOrderItemDetailMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemDetailDO>().
|
|
|
+ eq(PipeTaskOrderItemDetailDO::getOrderId, taskOrderItemTmp.getOrderId()));
|
|
|
+ List<String> pipeDetailIds = pipeTaskOrderItemDetailDOList.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList();
|
|
|
+ List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectByIds(pipeDetailIds);
|
|
|
|
|
|
PipeTaskOrderDO pipeTaskOrderDO = pipeTaskOrderMapper.selectById(taskOrderItemTmp.getOrderId());
|
|
|
|
|
|
//任务单办结后重置容器设备排期状态
|
|
|
- EquipPipeDO equipPipeDO = new EquipPipeDO();
|
|
|
- equipPipeDO.setId(taskOrderItemTmp.getEquipId());
|
|
|
- if (EquipmentCheckTypeEnum.PERIODICAL_SURVEY.getType().equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
-// equipPipeDO.setIsScheduling(false);
|
|
|
-// equipPipeDO.setIsExpiredScheduling(false);
|
|
|
-
|
|
|
- // 获取主报告信息, taskOrderItemReportDO
|
|
|
- String prepareJson = taskOrderItemReportDO.getPrepareJson();
|
|
|
- try {
|
|
|
- Map<String, String> map = objectMapper.readValue(prepareJson, Map.class);
|
|
|
+ String prepareJson = taskOrderItemReportDO.getPrepareJson();
|
|
|
+ JSONObject map = JSONObject.parse(prepareJson);
|
|
|
|
|
|
+ if (EquipmentCheckTypeEnum.PERIODICAL_SURVEY.getType().equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
+ // 法定检验(全面检验)
|
|
|
+ for (EquipPipeDetailDO equipPipeDetailDO : equipPipeDetailDOList) {
|
|
|
String lastCheckReportNo = taskOrderItemReportDO.getReportNo();
|
|
|
- LocalDate nextCheckDate = DateUtils.parseDateWithMultipleFormats(map.get("nextCheckDate"));
|
|
|
- LocalDate nextCheckYearDate2 = DateUtils.parseDateWithMultipleFormats(map.get("nextCheckYearDate"));
|
|
|
-// equipPipeDO.setNextCheckDate(nextCheckDate);
|
|
|
-// equipPipeDO.setNextYearCheckDate(nextCheckYearDate2);
|
|
|
-//
|
|
|
-// equipPipeDO.setCavityStructure(map.get("cavityStructure"));
|
|
|
-// equipPipeDO.setLastCheckSafetyStatus(map.get("lastCheckSafetyStatus"));
|
|
|
-//
|
|
|
-// equipPipeDO.setLastCheckAllowWorkPressure(map.get("lastCheckAllowWorkPressure"));
|
|
|
-// equipPipeDO.setLastCheckAllowWorkMedium(map.get("lastCheckAllowWorkMedium"));
|
|
|
-// equipPipeDO.setLastCheckAllowWorkTemperature(map.get("lastCheckAllowWorkTemperature"));
|
|
|
-// equipPipeDO.setLastCheckConclusion(map.get("checkConclusion"));
|
|
|
-// equipPipeDO.setLastCheckProblem(map.get("checkProblem"));
|
|
|
-// equipPipeDO.setLastCheckReportNo(lastCheckReportNo);
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- throw exception0(1001, "获取主报告结论失败");
|
|
|
- }
|
|
|
-
|
|
|
- if (EquipmentCheckTypeEnum.OVERDUE_INSPECTION.getType().equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
-// equipPipeDO.setIsExceedTimeLimit(true);
|
|
|
+ if (map.getString("nextLegalCheckDate") != null) {
|
|
|
+ LocalDate nextLegalCheckDate = DateUtils.parseDateWithMultipleFormats(map.getString("nextLegalCheckDate"));
|
|
|
+ equipPipeDetailDO.setNextLegalCheckDate(nextLegalCheckDate.atStartOfDay());
|
|
|
+ }
|
|
|
+ if (map.getString("checkResult") != null) {
|
|
|
+ equipPipeDetailDO.setLegalInspectionConclusion(map.getString("checkResult"));
|
|
|
+ }
|
|
|
+ if (map.getString("suggestion") != null) {
|
|
|
+ equipPipeDetailDO.setLegalInspectionConclusion(map.getString("suggestion"));
|
|
|
+ }
|
|
|
+ equipPipeDetailDO.setLastInspectionReportNo(lastCheckReportNo);
|
|
|
+ equipPipeDetailDO.setLastalldate(taskOrderItemReportDO.getCheckDate().atStartOfDay());
|
|
|
+ equipPipeDetailDO.setHasLegalScheduling(false);
|
|
|
}
|
|
|
} else if (EquipmentCheckTypeEnum.ANNUAL_INSPECTION.getType().equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
-// equipPipeDO.setIsYearScheduling(false);
|
|
|
-
|
|
|
- // 获取主报告信息, taskOrderItemReportDO
|
|
|
- String prepareJson = taskOrderItemReportDO.getPrepareJson();
|
|
|
- try {
|
|
|
- Map<String, String> map = objectMapper.readValue(prepareJson, Map.class);
|
|
|
+ // 年度检验(在线检验)
|
|
|
+ for (EquipPipeDetailDO equipPipeDetailDO : equipPipeDetailDOList) {
|
|
|
String lastCheckReportNo = taskOrderItemReportDO.getReportNo();
|
|
|
-//
|
|
|
-// LocalDate nextCheckDate = DateUtils.parseDateWithMultipleFormats(map.get("nextCheckDate"));
|
|
|
-// LocalDate nextCheckYearDate2 = DateUtils.parseDateWithMultipleFormats(map.get("nextYearCheckDate2"));
|
|
|
-// equipPipeDO.setNextCheckDate(nextCheckDate);
|
|
|
-// equipPipeDO.setNextYearCheckDate(nextCheckYearDate2);
|
|
|
-//
|
|
|
-// equipPipeDO.setCavityStructure(map.get("cavityStructure"));
|
|
|
-//
|
|
|
-// equipPipeDO.setLastYearCheckConclusionPressure(map.get("lastYearCheckConclusionPressure"));
|
|
|
-// equipPipeDO.setLastYearCheckConclusionMedium(map.get("lastYearCheckConclusionMedium"));
|
|
|
-// equipPipeDO.setLastYearCheckConclusionTemperature(map.get("lastYearCheckConclusionTemperature"));
|
|
|
-// equipPipeDO.setLastYearCheckConclusion(map.get("checkConclusion"));
|
|
|
-// equipPipeDO.setLastYearCheckProblem(map.get("checkProblem"));
|
|
|
-//
|
|
|
-// equipPipeDO.setLastYearCheckReportNo(lastCheckReportNo);
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- // throw exception0(1001,"获取主报告结论失败");
|
|
|
- log.error("获取主报告结论失败", e);
|
|
|
- }
|
|
|
-
|
|
|
- if (Integer.valueOf(200).equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
- //当主报告完成审核后更新所有子报告的审核人(年检的审批后)
|
|
|
- LambdaUpdateWrapper<PipeTaskOrderItemReportDO> updateBySubReport = new LambdaUpdateWrapper<>();
|
|
|
- updateBySubReport.eq(PipeTaskOrderItemReportDO::getOrderItemId, taskOrderItemReportDO.getOrderItemId());
|
|
|
- updateBySubReport.eq(PipeTaskOrderItemReportDO::getReportType, TaskOrderItemReportTypeEnum.SUB_REPORT.getType());
|
|
|
- updateBySubReport.set(PipeTaskOrderItemReportDO::getApprovalId, taskOrderItemReportDO.getApprovalId());
|
|
|
- updateBySubReport.set(PipeTaskOrderItemReportDO::getApprovalName, taskOrderItemReportDO.getApprovalName());
|
|
|
- updateBySubReport.set(PipeTaskOrderItemReportDO::getApprovalTime, LocalDateTime.now());
|
|
|
- taskOrderItemReportMapper.update(updateBySubReport);
|
|
|
+ if (map.getString("nextYearCheckDate") != null) {
|
|
|
+ LocalDate nextYearCheckDate = DateUtils.parseDateWithMultipleFormats(map.getString("nextYearCheckDate"));
|
|
|
+ equipPipeDetailDO.setNextYearCheckDate(nextYearCheckDate.atStartOfDay());
|
|
|
+ }
|
|
|
+ if (map.getString("checkResult") != null) {
|
|
|
+ equipPipeDetailDO.setYearInspectionConclusion(map.getString("checkResult"));
|
|
|
+ }
|
|
|
+ if (map.getString("suggestion") != null) {
|
|
|
+ equipPipeDetailDO.setYearInspectionConclusion(map.getString("suggestion"));
|
|
|
+ }
|
|
|
+ equipPipeDetailDO.setLastYearReportNo(lastCheckReportNo);
|
|
|
+ equipPipeDetailDO.setLastonlinedate(taskOrderItemReportDO.getCheckDate().atStartOfDay());
|
|
|
+ equipPipeDetailDO.setHasYearScheduling(false);
|
|
|
}
|
|
|
}
|
|
|
+ equipPipeDetailMapper.updateBatch(equipPipeDetailDOList);
|
|
|
|
|
|
- equipPipeMapper.updateById(equipPipeDO);
|
|
|
//todo 推送公众号催费消息
|
|
|
|
|
|
- Long count = equipPipeCheckHistoryMapper.selectCount(new LambdaQueryWrapperX<EquipPipeCheckHistoryDO>().
|
|
|
- eq(EquipPipeCheckHistoryDO::getOrderId, pipeTaskOrderDO.getId()).
|
|
|
- eq(EquipPipeCheckHistoryDO::getEquipId, equipPipeDO.getId())
|
|
|
- );
|
|
|
- if (count == null || count == 0) {
|
|
|
- EquipPipeCheckHistoryDO historyDO = new EquipPipeCheckHistoryDO();
|
|
|
-
|
|
|
- historyDO.setCheckType(pipeTaskOrderDO.getCheckType());
|
|
|
- historyDO.setProgress(100);
|
|
|
- historyDO.setCheckDate(pipeTaskOrderDO.getCheckDate());
|
|
|
- historyDO.setOrderId(pipeTaskOrderDO.getId());
|
|
|
- historyDO.setEquipId(equipPipeDO.getId());
|
|
|
-
|
|
|
- historyDO.setDeptId(pipeTaskOrderDO.getDeptId());
|
|
|
- historyDO.setIsFirst(false);
|
|
|
- equipPipeCheckHistoryMapper.insert(historyDO);
|
|
|
+ for (EquipPipeDO equipPipeDO : equipPipeDOList) {
|
|
|
+ // 管道的信息为子表管线中检验时间为管道中最早且不为空的
|
|
|
+ List<EquipPipeDetailDO> equipPipeDetailDOS = equipPipeDetailMapper.selectList(new LambdaQueryWrapperX<EquipPipeDetailDO>()
|
|
|
+ .eq(EquipPipeDetailDO::getEquipPipeId, equipPipeDO.getId()));
|
|
|
+
|
|
|
+ if (EquipmentCheckTypeEnum.PERIODICAL_SURVEY.getType().equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
+ // 法定检验(全面检验) - 找出上次法定检验日期最早的管线,将其所有信息设置到主表
|
|
|
+ EquipPipeDetailDO earliestDetail = equipPipeDetailDOS.stream()
|
|
|
+ .filter(detail -> detail.getLastalldate() != null)
|
|
|
+ .min(Comparator.comparing(EquipPipeDetailDO::getLastalldate))
|
|
|
+ .orElse(null);
|
|
|
+
|
|
|
+ if (earliestDetail != null) {
|
|
|
+ equipPipeDO.setNextLegalCheckDate(earliestDetail.getNextLegalCheckDate());
|
|
|
+ equipPipeDO.setLastLegalPeriodicalInspectionReportNo(earliestDetail.getLastInspectionReportNo());
|
|
|
+ equipPipeDO.setLastLegalConclusion(earliestDetail.getLegalInspectionConclusion());
|
|
|
+ equipPipeDO.setLastLegalIssues(earliestDetail.getLegalInspectionIssues());
|
|
|
+ }
|
|
|
+ equipPipeDO.setHasLegalScheduling(false);
|
|
|
+ } else if (EquipmentCheckTypeEnum.ANNUAL_INSPECTION.getType().equals(pipeTaskOrderDO.getCheckType())) {
|
|
|
+ // 年度检验(在线检验) - 找出上年检日期最早的管线,将其所有信息设置到主表
|
|
|
+ EquipPipeDetailDO earliestDetail = equipPipeDetailDOS.stream()
|
|
|
+ .filter(detail -> detail.getLastonlinedate() != null)
|
|
|
+ .min(Comparator.comparing(EquipPipeDetailDO::getLastonlinedate))
|
|
|
+ .orElse(null);
|
|
|
+
|
|
|
+ if (earliestDetail != null) {
|
|
|
+ equipPipeDO.setNextYearCheckDate(earliestDetail.getNextYearCheckDate());
|
|
|
+ equipPipeDO.setLastYearReportNo(earliestDetail.getLastYearReportNo());
|
|
|
+ equipPipeDO.setLastYearConclusion(earliestDetail.getYearInspectionConclusion());
|
|
|
+ equipPipeDO.setLastYearIssues(earliestDetail.getYearInspectionIssues());
|
|
|
+ }
|
|
|
+ equipPipeDO.setHasYearScheduling(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ equipPipeMapper.updateById(equipPipeDO);
|
|
|
+ Long count = equipPipeCheckHistoryMapper.selectCount(new LambdaQueryWrapperX<EquipPipeCheckHistoryDO>().
|
|
|
+ eq(EquipPipeCheckHistoryDO::getOrderId, pipeTaskOrderDO.getId()).
|
|
|
+ eq(EquipPipeCheckHistoryDO::getEquipId, equipPipeDO.getId())
|
|
|
+ );
|
|
|
+ if (count == null || count == 0) {
|
|
|
+ EquipPipeCheckHistoryDO historyDO = new EquipPipeCheckHistoryDO();
|
|
|
+
|
|
|
+ historyDO.setCheckType(pipeTaskOrderDO.getCheckType());
|
|
|
+ historyDO.setProgress(100);
|
|
|
+ historyDO.setCheckDate(pipeTaskOrderDO.getCheckDate());
|
|
|
+ historyDO.setOrderId(pipeTaskOrderDO.getId());
|
|
|
+ historyDO.setEquipId(equipPipeDO.getId());
|
|
|
+
|
|
|
+ historyDO.setDeptId(pipeTaskOrderDO.getDeptId());
|
|
|
+ historyDO.setIsFirst(false);
|
|
|
+ equipPipeCheckHistoryMapper.insert(historyDO);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ PipeTaskOrderSyncReportVO reqVO = new PipeTaskOrderSyncReportVO();
|
|
|
+ reqVO.setOrderId(taskOrderItemReportDO.getOrderId());
|
|
|
+ pipeTaskOrderService.syncAllReportDataByOrderId(reqVO);
|
|
|
+
|
|
|
if (!pipeTaskOrderItemDOList.isEmpty()) {
|
|
|
PipeTaskOrderItemDO pipeTaskOrderItemDO = pipeTaskOrderItemDOList.get(0);
|
|
|
// 任务完成
|