|
|
@@ -33,6 +33,7 @@ import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.Bo
|
|
|
import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeRecheckUserPageReqVO;
|
|
|
import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOrderSyncReportVO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderuser.PipeTaskOrderUserDO;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.boilerconnectrecordreport.BoilerConnectRecordReportMapper;
|
|
|
@@ -144,6 +145,7 @@ import cn.start.tz.module.pressure2.util.*;
|
|
|
import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
|
|
|
import cn.start.tz.module.system.api.clientunit.dto.ClientUnitDTO;
|
|
|
import cn.start.tz.module.system.api.dept.DeptApi;
|
|
|
+import cn.start.tz.module.system.api.dept.dto.DeptRespDTO;
|
|
|
import cn.start.tz.module.system.api.dict.DictDataApi;
|
|
|
import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
|
|
|
import cn.start.tz.module.system.api.orgcontact.OrgContactApi;
|
|
|
@@ -184,6 +186,7 @@ import org.springframework.beans.BeanWrapperImpl;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
+import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -196,8 +199,10 @@ import java.io.ByteArrayOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
@@ -427,7 +432,6 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
@Resource
|
|
|
private DictDataApi dictDataApi;
|
|
|
|
|
|
-
|
|
|
@Resource
|
|
|
private TemplateSendLogApi templateSendLogApi;
|
|
|
|
|
|
@@ -473,7 +477,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
|
|
|
BoilerTaskOrderDO boilerTaskOrderDO = boilerTaskOrderMapper.selectById(id);
|
|
|
BoilerTaskOrderRespVO boilerTaskOrderRespVO = BeanUtils.toBean(boilerTaskOrderDO, BoilerTaskOrderRespVO.class);
|
|
|
-
|
|
|
+ boilerTaskOrderRespVO.setPayAmount(boilerTaskOrderDO.getActualAmount());
|
|
|
// 邮箱
|
|
|
boilerTaskOrderRespVO.setUnitEmail(boilerTaskOrderDO.getEmail());
|
|
|
|
|
|
@@ -711,17 +715,21 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
if (count != 0) {
|
|
|
return;
|
|
|
}
|
|
|
- boilerPartType.forEach(partType -> {
|
|
|
+ // 用于保存部件类型和创建后的部件ID映射
|
|
|
+ Map<String, String> partIdMap = new HashMap<>();
|
|
|
+ for (DictDataRespDTO partType : boilerPartType) {
|
|
|
BoilerTaskOrderItemPartSaveReqVO boilerTaskOrderItemPartSaveReqVO = new BoilerTaskOrderItemPartSaveReqVO();
|
|
|
boilerTaskOrderItemPartSaveReqVO.setOrderId(item.getOrderId());
|
|
|
boilerTaskOrderItemPartSaveReqVO.setOrderItemId(item.getId());
|
|
|
boilerTaskOrderItemPartSaveReqVO.setPartName(partType.getLabel());
|
|
|
boilerTaskOrderItemPartSaveReqVO.setPartType(partType.getValue());
|
|
|
- boilerTaskOrderItemPartService.createBoilerTaskOrderItemPart(boilerTaskOrderItemPartSaveReqVO);
|
|
|
- });
|
|
|
+ String partId = boilerTaskOrderItemPartService.createBoilerTaskOrderItemPart(boilerTaskOrderItemPartSaveReqVO);
|
|
|
+ // 保存部件类型和ID的映射关系
|
|
|
+ partIdMap.put(partType.getValue(), partId);
|
|
|
+ }
|
|
|
|
|
|
// 部件自动带出检验项目
|
|
|
- boilerTaskOrderItemPartService.addCheckReport(item);
|
|
|
+ boilerTaskOrderItemPartService.addCheckReport(item,partIdMap);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -735,109 +743,22 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- //log.info("确认任务单,新增报告");
|
|
|
- // 创建报告 默认年检
|
|
|
-// int inspectionNature = 200;
|
|
|
-// if (taskOrderDO.getCheckType() != null) {
|
|
|
-// if (taskOrderDO.getCheckType() == 100) {
|
|
|
-// inspectionNature = 100;
|
|
|
-// } else if (taskOrderDO.getCheckType() == 300) {
|
|
|
-// inspectionNature = 300;
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- String reportNo = generateOrderItemSubReportNo();
|
|
|
-
|
|
|
-// List<InspectionNatureTemplateDetailRespVO> templateDetailRespVOS = inspectionNatureTemplateService.selectTemplate(inspectionNature, 1,300);
|
|
|
-// List<BoilerOrderItemReportVO> orderItemReportVOS = new ArrayList<>();
|
|
|
-// if (templateDetailRespVOS == null) {
|
|
|
-// templateDetailRespVOS = new ArrayList<>();
|
|
|
-// }
|
|
|
-// String reportNo = generateOrderItemSubReportNo();
|
|
|
-// //按报告类型排序
|
|
|
-// templateDetailRespVOS.sort(Comparator.comparing(InspectionNatureTemplateDetailRespVO::getReportType));
|
|
|
-// for (int i = 0; i < templateDetailRespVOS.size(); i++) {
|
|
|
-// InspectionNatureTemplateDetailRespVO inspectionNatureTemplateDetailRespVO = templateDetailRespVOS.get(i);
|
|
|
-// if (!"1".equals(inspectionNatureTemplateDetailRespVO.getIsDefault())) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// // 检查模版上架状态
|
|
|
-// if(inspectionNatureTemplateDetailRespVO.getStatus() != null && inspectionNatureTemplateDetailRespVO.getStatus() != 200){
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-//
|
|
|
-// // 没有匹配模版
|
|
|
-// if (StringUtils.isBlank(inspectionNatureTemplateDetailRespVO.getTemplateName())) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-//
|
|
|
-// BoilerOrderItemReportVO orderItemReportVO = BeanUtils.toBean(templateDetailRespVOS.get(i), BoilerOrderItemReportVO.class);
|
|
|
-// orderItemReportVO.setReportName(inspectionNatureTemplateDetailRespVO.getTemplateName());
|
|
|
-// orderItemReportVO.setTemplateId(orderItemReportVO.getTemplateId());
|
|
|
-// orderItemReportVO.setTaskStatus(taskOrderDO.getTaskStatus());
|
|
|
-// orderItemReportVO.setReportNo(reportNo);
|
|
|
-//
|
|
|
-// orderItemReportVOS.add(orderItemReportVO);
|
|
|
-// }
|
|
|
-//
|
|
|
-// if (!orderItemReportVOS.isEmpty()) {
|
|
|
-// AtomicReference<Integer> index = new AtomicReference<>(1);
|
|
|
-// List<BoilerTaskOrderItemReportDO> list = orderItemReportVOS.stream().map(item -> {
|
|
|
-// BoilerTaskOrderItemReportDO taskOrderItemReportDO = new BoilerTaskOrderItemReportDO();
|
|
|
-//
|
|
|
-// taskOrderItemReportDO.setReportNo(item.getReportNo());
|
|
|
-// taskOrderItemReportDO.setOrderItemId(id);
|
|
|
-// taskOrderItemReportDO.setOrderId(taskOrderDO.getId());
|
|
|
-// taskOrderItemReportDO.setTemplateId(item.getTemplateId());
|
|
|
-// taskOrderItemReportDO.setReportName(item.getReportName());
|
|
|
-// taskOrderItemReportDO.setCheckDate(item.getCheckDate());
|
|
|
-// //taskOrderItemReportDO.setTaskStatus(taskOrderDO.getTaskStatus());
|
|
|
-// taskOrderItemReportDO.setTaskStatus(400); //400 待录入
|
|
|
-// taskOrderItemReportDO.setReportType(item.getReportType());
|
|
|
-// taskOrderItemReportDO.setIsApproval(item.getIsApproval());
|
|
|
-// taskOrderItemReportDO.setIsRecheck(item.getIsRecheck());
|
|
|
-// taskOrderItemReportDO.setIsRatify(item.getIsRatify());
|
|
|
-// taskOrderItemReportDO.setSort(index.getAndSet(index.get() + 1));
|
|
|
-// taskOrderItemReportDO.setPrepareJson(item.getPrepareJson());
|
|
|
-// taskOrderItemReportDO.setIsAutoAmount(item.getIsAutoAmount());
|
|
|
-// //taskOrderItemReportDO.setTaskStatus(TaskOrderStatusEnum.PRE_CONFIRM.getStatus());
|
|
|
-//
|
|
|
-// return taskOrderItemReportDO;
|
|
|
-// }).toList();
|
|
|
-// taskOrderItemReportMapper.insertBatch(list);
|
|
|
-//
|
|
|
-// list.forEach(item -> {
|
|
|
-//
|
|
|
-// //添加报告检验员
|
|
|
-// BoilerTaskOrderItemReportUserDO userDO = new BoilerTaskOrderItemReportUserDO();
|
|
|
-// userDO.setUserId(getLoginUserId());
|
|
|
-// userDO.setReportId(item.getId());
|
|
|
-// boilerTaskOrderItemReportUserMapper.insert(userDO);
|
|
|
-//
|
|
|
-// //生成 报表数据
|
|
|
-// BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
|
|
|
-// syncReportVO.setRefId(item.getId());
|
|
|
-// syncReportVO.setReportType("record");
|
|
|
-// com.alibaba.fastjson2.JSONObject params = new com.alibaba.fastjson2.JSONObject();
|
|
|
-// params.put("checkUserId",getLoginUserId());
|
|
|
-// syncReportVO.setParams(params);
|
|
|
-// syncReportData(syncReportVO);
|
|
|
-//
|
|
|
-// });
|
|
|
-// }
|
|
|
-
|
|
|
//根据前台约检勾选的检验项目生成数据
|
|
|
List<EquipBoilerSchedulingCheckDO> checkDOList = equipBoilerSchedulingCheckService.lambdaQuery().eq(EquipBoilerSchedulingCheckDO::getTaskOrderId, taskOrderDO.getId()).list();
|
|
|
AtomicReference<Integer> index = new AtomicReference<>(1);
|
|
|
List<BoilerTaskOrderItemReportDO> insertList = new ArrayList<>();
|
|
|
if (!checkDOList.isEmpty()){
|
|
|
|
|
|
+ String projectCode = getProjectCodeByTaskOrderId(taskOrderDO.getId());
|
|
|
+ String reportNo = generateOrderItemSubReportNo(taskOrderDO.getDeptId(),taskOrderDO.getCheckDate(),projectCode);
|
|
|
+
|
|
|
checkDOList.forEach(item -> {
|
|
|
//生成检验项目
|
|
|
if (item.getCheckId() != null){
|
|
|
|
|
|
//checkId是记录和报告关联的主键ID
|
|
|
BoilerConnectRecordReportDO recordReportDO = boilerConnectRecordReportMapper.selectById(item.getCheckId());
|
|
|
+
|
|
|
if (recordReportDO != null){
|
|
|
if (recordReportDO.getRecordTemplateId()!=null){
|
|
|
|
|
|
@@ -847,7 +768,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
addReport1.setOrderItemId(id);
|
|
|
addReport1.setTemplateId(dynamicTbDO.getId());
|
|
|
// 将 String 类型的 fee 转换为 BigDecimal
|
|
|
- addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
|
|
|
+// addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
|
|
|
+ addReport1.setFee(item.getFee());
|
|
|
+ addReport1.setFeeType(item.getType());
|
|
|
addReport1.setOrderId(taskOrderDO.getId());
|
|
|
addReport1.setTaskStatus(500);
|
|
|
addReport1.setReportNo(reportNo);
|
|
|
@@ -868,7 +791,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
// addReport1.setTemplateId(dynamicTbDO.getId());
|
|
|
addReport1.setReportTemplateId(dynamicTbDO.getId());
|
|
|
// 将 String 类型的 fee 转换为 BigDecimal
|
|
|
- addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
|
|
|
+// addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
|
|
|
+ addReport1.setFee(item.getFee());
|
|
|
+ addReport1.setFeeType(item.getType());
|
|
|
addReport1.setOrderId(taskOrderDO.getId());
|
|
|
addReport1.setTaskStatus(520);
|
|
|
addReport1.setReportNo(reportNo);
|
|
|
@@ -1136,6 +1061,14 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
.map(templateDO -> {
|
|
|
// 3. 使用构建器模式创建对象(避免重复set调用)
|
|
|
BoilerOrderItemCostInfoRepsVO repsVO = createBaseVO(reqVO, templateDO);
|
|
|
+ natureTemplateDOList.stream()
|
|
|
+ .filter(natureTemplateDO -> natureTemplateDO.getTemplateId().equals(templateDO.getId()))
|
|
|
+ .findFirst()
|
|
|
+ .ifPresent(natureTemplateDO -> {
|
|
|
+ // 找到匹配的检验性质模版
|
|
|
+ repsVO.setUse("1".equals(natureTemplateDO.getIsDefault()));
|
|
|
+ });
|
|
|
+ repsVO.setUse(repsVO.getUse() || "1".equals(templateDO.getIsMainProject()));
|
|
|
// 4. 从Map中直接查找匹配项
|
|
|
BoilerTaskOrderItemReportDO matchedReport = reportMap.get(templateDO.getId());
|
|
|
if (matchedReport != null) {
|
|
|
@@ -1152,7 +1085,17 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
List<BoilerOrderItemCostInfoRepsVO> resultList = templateDOList.stream()
|
|
|
.map(templateDO -> {
|
|
|
// 3. 使用构建器模式创建对象(避免重复set调用)
|
|
|
- return createBaseVO(reqVO, templateDO);
|
|
|
+ BoilerOrderItemCostInfoRepsVO baseVO = createBaseVO(reqVO, templateDO);
|
|
|
+ natureTemplateDOList.stream()
|
|
|
+ .filter(natureTemplateDO -> natureTemplateDO.getTemplateId().equals(templateDO.getId()))
|
|
|
+ .findFirst()
|
|
|
+ .ifPresent(natureTemplateDO -> {
|
|
|
+ // 找到匹配的检验性质模版
|
|
|
+ baseVO.setUse("1".equals(natureTemplateDO.getIsDefault()));
|
|
|
+ });
|
|
|
+ baseVO.setUse(baseVO.getUse() || "1".equals(templateDO.getIsMainProject()));
|
|
|
+
|
|
|
+ return baseVO;
|
|
|
})
|
|
|
.collect(Collectors.toCollection(ArrayList::new)); // 预分配空间
|
|
|
// 外部结果集引用
|
|
|
@@ -1259,7 +1202,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
Map<String, BoilerTaskOrderItemDO> itemDOMap = orderItemDOS.stream()
|
|
|
.collect(Collectors.toMap(BoilerTaskOrderItemDO::getId, Function.identity()));
|
|
|
|
|
|
- addReportVo(orderItemEnterVO,orderItemDOS,itemDOMap,orderItemEnterVO.getPartType());
|
|
|
+ addReportVo(orderItemEnterVO,orderItemDOS,itemDOMap,orderItemEnterVO.getItemPartId());
|
|
|
this.updateOrderFee(orderItemDOS.get(0).getOrderId());
|
|
|
|
|
|
}
|
|
|
@@ -1980,7 +1923,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
taskOrderItemDO.setBoilerType(equipContainerDO.getType());
|
|
|
}
|
|
|
|
|
|
- String reportNo = generateOrderItemReportNo();
|
|
|
+ String reportNo = generateOrderItemReportNo(taskOrderDO.getDeptId(),taskOrderDO.getCheckDate());
|
|
|
taskOrderItemDO.setReportNo(reportNo);
|
|
|
addOrderItems.add(taskOrderItemDO);
|
|
|
}
|
|
|
@@ -2105,24 +2048,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// if (CollUtil.isNotEmpty(reportDOList) && vo.getReportType() != null) {
|
|
|
-// List<BoilerTaskOrderItemReportDO> reportCheck = new ArrayList<>();
|
|
|
-// reportDOList.forEach(v -> {
|
|
|
-// if (v.getReportType().equals(vo.getReportType()) && !Integer.valueOf(900).equals(vo.getReportType())) {
|
|
|
-// //todo 后续需要更改为支持多份作业指导书
|
|
|
-//// if (v.getReportType().equals(vo.getReportType()) && !Arrays.asList(700, 900).contains(vo.getReportType())) {
|
|
|
-// reportCheck.add(v);
|
|
|
-// }
|
|
|
-// });
|
|
|
-// if (CollUtil.isNotEmpty(reportCheck)) {
|
|
|
-// throw new ServiceException(500, "该设备项已有该类型的报告");
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
BoilerTaskOrderItemReportDO addReport = new BoilerTaskOrderItemReportDO();
|
|
|
addReport.setOrderItemId(vo.getOrderItemId());
|
|
|
addReport.setTemplateId(vo.getTemplateId());
|
|
|
-// addReport.setFee(vo.getFee());
|
|
|
addReport.setOrderId(orderItemDOS.get(0).getOrderId());
|
|
|
addReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
|
|
|
addReport.setSort(count + 1);
|
|
|
@@ -2135,7 +2063,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
BoilerConnectRecordReportDO connectDO = boilerConnectRecordReportMapper.selectById(vo.getConnectId());
|
|
|
if (connectDO != null){
|
|
|
addReport.setReportName(connectDO.getProjectName());
|
|
|
- addReport.setFee(ConversionUtil.convert(connectDO.getFee()));
|
|
|
+ if (vo.getFee() == null || vo.getFee().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ addReport.setFee(ConversionUtil.convert(connectDO.getFee()));
|
|
|
+ } else {
|
|
|
+ addReport.setFee(vo.getFee());
|
|
|
+ }
|
|
|
}
|
|
|
addReport.setReportType(reportTemplateDO.getTbType());
|
|
|
// addReport.setIsApproval(reportTemplateDO.getIsApproval());
|
|
|
@@ -2477,16 +2409,22 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
boilerTaskOrderItemMapper.updateById(taskOrderItem);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ BoilerTaskOrderDO boilerTaskOrderDO = boilerTaskOrderMapper.selectById(id);
|
|
|
+ // 免征
|
|
|
+ boolean isExempt = 300 == boilerTaskOrderDO.getFeeNature();
|
|
|
BigDecimal orderFee = new BigDecimal(0);
|
|
|
for (BoilerTaskOrderItemReportDO reportDO : reportDOList) {
|
|
|
if (reportDO.getFee() != null) {
|
|
|
+ // 免征不收法定收费
|
|
|
+ if (isExempt && "1".equals(reportDO.getFeeType())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
orderFee = orderFee.add(reportDO.getFee());
|
|
|
}
|
|
|
}
|
|
|
BoilerTaskOrderDO taskOrderDO = new BoilerTaskOrderDO();
|
|
|
taskOrderDO.setId(id);
|
|
|
- taskOrderDO.setServiceAmount(orderFee);
|
|
|
+ taskOrderDO.setActualAmount(orderFee);
|
|
|
boilerTaskOrderMapper.updateById(taskOrderDO);
|
|
|
}
|
|
|
}
|
|
|
@@ -2754,7 +2692,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
updateObj.setTaskStatus(TaskOrderStatusEnum.CANCEL.getStatus());
|
|
|
updateObj.setStatus(400);
|
|
|
updateObj.setReturnReason(orderItemRatifyVO.getReason());
|
|
|
-
|
|
|
+ String boilerTaskOrderReportDOId = taskOrderItemReportMapper.selectById(orderItemRatifyVO.getId()).getOrderId();
|
|
|
if (orderItemRatifyVO.getReportType() != null && orderItemRatifyVO.getReportType() == TaskOrderItemReportTypeEnum.INSPECTION_PLAN.getType().intValue()) {
|
|
|
BoilerTaskOrderReportDO reportDO = taskOrderReportMapper.selectById(orderItemRatifyVO.getId());
|
|
|
BoilerTaskOrderReportDO bean = BeanUtils.toBean(updateObj, BoilerTaskOrderReportDO.class);
|
|
|
@@ -2798,6 +2736,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
taskOrderItemReportRecordDO.setResult(100);
|
|
|
taskOrderItemReportRecordDO.setRemark(orderItemRatifyVO.getReason());
|
|
|
taskOrderItemReportRecordMapper.insert(taskOrderItemReportRecordDO);
|
|
|
+ this.updateOrderFee(boilerTaskOrderReportDOId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -2805,10 +2744,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
|
|
|
BoilerTaskOrderDO taskOrderDO = BeanUtils.toBean(acceptOrderDO, BoilerTaskOrderDO.class);
|
|
|
taskOrderDO.setId(null);
|
|
|
- taskOrderDO.setOrderNo(generateOrderNo());
|
|
|
+ taskOrderDO.setOrderNo(generateOrderNo(taskOrderDO.getCheckDate()));
|
|
|
taskOrderDO.setCheckDate(acceptOrderDO.getAppointmentDate());
|
|
|
taskOrderDO.setAcceptOrderId(acceptOrderDO.getId());
|
|
|
taskOrderDO.setEquipMainType(200); //200锅炉
|
|
|
+ taskOrderDO.setActualAmount(acceptOrderDO.getShouldAmount().add(acceptOrderDO.getServiceAmount()));
|
|
|
//获取约检确认单计划id
|
|
|
AppointmentConfirmOrderDO appointmentConfirmOrderDO = appointmentConfirmOrderMapper.selectById(acceptOrderDO.getAppointmentId());
|
|
|
if (ObjectUtil.isNotEmpty(appointmentConfirmOrderDO)) {
|
|
|
@@ -2836,7 +2776,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
item.setBoilerType(equipBoilerDO.getType());
|
|
|
|
|
|
if (itemMap.get(item.getEquipCode()) == null) {
|
|
|
- String reportNo = generateOrderItemReportNo();
|
|
|
+ String reportNo = generateOrderItemReportNo(taskOrderDO.getDeptId(), taskOrderDO.getCheckDate());
|
|
|
item.setReportNo(reportNo);
|
|
|
taskOrderItemDOListV2.add(item);
|
|
|
}
|
|
|
@@ -2906,20 +2846,79 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public String generateOrderNo() {
|
|
|
- String acceptNo = "RW" + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER.getKey());
|
|
|
+ public String generateOrderNo(LocalDate checkDate) {
|
|
|
+
|
|
|
+ // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
|
|
|
+ Date dateToUse = (checkDate != null) ?
|
|
|
+ Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
|
|
|
+ new Date();
|
|
|
+ String dateStr = simpleDateFormat.format(dateToUse);
|
|
|
+
|
|
|
+ String acceptNo = "RW" + dateStr + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER.getKey());
|
|
|
return acceptNo;
|
|
|
}
|
|
|
|
|
|
- private String generateOrderItemReportNo() {
|
|
|
- String acceptNo = "0714-" + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER_ITEM.getKey());
|
|
|
+ private String generateOrderItemReportNo(String deptId, LocalDate checkDate) {
|
|
|
+
|
|
|
+ // 获取部门代码
|
|
|
+ CommonResult<DeptRespDTO> deptResult = deptApi.getDept(deptId);
|
|
|
+ String deptCode = deptResult.getCheckedData().getCode();
|
|
|
+ // 取前两位作为部门代码
|
|
|
+ deptCode = deptCode.substring(0, 2);
|
|
|
+
|
|
|
+ // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
|
|
|
+ Date dateToUse = (checkDate != null) ?
|
|
|
+ Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
|
|
|
+ new Date();
|
|
|
+ String dateStr = simpleDateFormat.format(dateToUse);
|
|
|
+
|
|
|
+ // 生成Redis键:TASK_ORDER + 部门代码 + 日期
|
|
|
+ String redisKey = RedisKeyEnums.TASK_ORDER_ITEM.getKey() + deptCode + dateStr;
|
|
|
+
|
|
|
+ String acceptNo = deptCode + "05-" + dateStr + redisService.generateAcceptanceNo(redisKey);
|
|
|
return acceptNo;
|
|
|
}
|
|
|
|
|
|
- private String generateOrderItemSubReportNo() {
|
|
|
- String acceptNo = "0714-" + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER_ITEM_SUB.getKey());
|
|
|
- return acceptNo;
|
|
|
+ private String generateOrderItemSubReportNo(String deptId, LocalDate checkDate,String projectCode) {
|
|
|
+
|
|
|
+ // 获取部门代码
|
|
|
+ CommonResult<DeptRespDTO> deptResult = deptApi.getDept(deptId);
|
|
|
+ String deptCode = deptResult.getCheckedData().getCode();
|
|
|
+ // 取前两位作为部门代码
|
|
|
+ deptCode = deptCode.substring(0, 2);
|
|
|
+
|
|
|
+ // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
|
|
|
+ Date dateToUse = (checkDate != null) ?
|
|
|
+ Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
|
|
|
+ new Date();
|
|
|
+ String dateStr = simpleDateFormat.format(dateToUse);
|
|
|
+
|
|
|
+ // 生成Redis键:TASK_ORDER + 部门代码 + 日期
|
|
|
+ String redisKey = RedisKeyEnums.TASK_ORDER_ITEM_SUB.getKey() + deptCode + dateStr;
|
|
|
+
|
|
|
+ int maxAttempts = 10; // 最大尝试次数,防止死循环
|
|
|
+ int attemptCount = 0;
|
|
|
+ while (attemptCount < maxAttempts) {
|
|
|
+ attemptCount++;
|
|
|
+
|
|
|
+ String reportNo = deptCode + projectCode + "-" + dateStr + redisService.generateAcceptanceNo(redisKey);
|
|
|
+ log.info("生成报告编号:" + reportNo);
|
|
|
+ Long count = taskOrderItemReportMapper.selectCount(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>().
|
|
|
+ eq(BoilerTaskOrderItemReportDO::getReportNo,reportNo)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (count == 0) {
|
|
|
+ // 生成报告编号不存在,可以使用
|
|
|
+ return reportNo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String reportNo = deptCode + projectCode + "-" + dateStr + redisService.generateAcceptanceNo(redisKey);
|
|
|
+ log.info("生成报告编号:" + reportNo);
|
|
|
+ return reportNo;
|
|
|
}
|
|
|
|
|
|
private BoilerOrderItemCostInfoRepsVO createBaseVO(BoilerOrderItemCostInfoReqVO reqVO, BoilerConnectRecordReportDO templateDO) {
|
|
|
@@ -2936,6 +2935,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
//vo.setFormulaTemplateUrl(templateDO.getFormulaTemplateUrl());
|
|
|
vo.setReportType(recordDO.getTbType());
|
|
|
vo.setUse(Boolean.FALSE); // 默认值
|
|
|
+ // 将 String 类型的 fee 转换为 BigDecimal
|
|
|
+ if (StringUtils.isNotBlank(templateDO.getFee())) {
|
|
|
+ vo.setFee(new BigDecimal(templateDO.getFee()));
|
|
|
+ } else {
|
|
|
+ vo.setFee(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
//vo.setRecordTemplateUrl(templateDO.getRecordTemplateUrl());
|
|
|
//vo.setReportTemplateUrl(templateDO.getReportTemplateUrl());
|
|
|
}else if (templateDO.getReportTemplateId() != null){
|
|
|
@@ -2947,6 +2952,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
vo.setIsAutoAmount("0");
|
|
|
vo.setReportType(recordDO.getTbType());
|
|
|
vo.setUse(Boolean.FALSE); // 默认值
|
|
|
+ // 将 String 类型的 fee 转换为 BigDecimal
|
|
|
+ if (StringUtils.isNotBlank(templateDO.getFee())) {
|
|
|
+ vo.setFee(new BigDecimal(templateDO.getFee()));
|
|
|
+ } else {
|
|
|
+ vo.setFee(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
}
|
|
|
return vo;
|
|
|
}
|
|
|
@@ -3153,75 +3164,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
}
|
|
|
|
|
|
if (itemReportDOS == null || itemReportDOS.isEmpty()) {
|
|
|
- // 创建报告 默认年检
|
|
|
- int inspectionNature = 200;
|
|
|
-
|
|
|
- if (taskOrderDO.getCheckType() != null) {
|
|
|
- if (taskOrderDO.getCheckType() == 100) {
|
|
|
- inspectionNature = 100;
|
|
|
- } else if (taskOrderDO.getCheckType() == 300) {
|
|
|
- inspectionNature = 300;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- List<InspectionNatureTemplateDetailRespVO> templateDetailRespVOS = inspectionNatureTemplateService.selectTemplate(inspectionNature, 1,300);
|
|
|
- List<BoilerOrderItemReportVO> orderItemReportVOS = new ArrayList<>();
|
|
|
- if (templateDetailRespVOS == null) {
|
|
|
- templateDetailRespVOS = new ArrayList<>();
|
|
|
- }
|
|
|
- String reportNo = generateOrderItemSubReportNo();
|
|
|
- for (int i = 0; i < templateDetailRespVOS.size(); i++) {
|
|
|
- InspectionNatureTemplateDetailRespVO inspectionNatureTemplateDetailRespVO = templateDetailRespVOS.get(i);
|
|
|
- if (!"1".equals(inspectionNatureTemplateDetailRespVO.getIsDefault())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 没有匹配模版
|
|
|
- if (StringUtils.isBlank(inspectionNatureTemplateDetailRespVO.getTemplateName())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- BoilerOrderItemReportVO orderItemReportVO = BeanUtils.toBean(templateDetailRespVOS.get(i), BoilerOrderItemReportVO.class);
|
|
|
- orderItemReportVO.setCheckUsers(checkUsers);
|
|
|
- orderItemReportVO.setReportName(inspectionNatureTemplateDetailRespVO.getTemplateName());
|
|
|
- orderItemReportVO.setTemplateId(orderItemReportVO.getTemplateId());
|
|
|
- orderItemReportVO.setTaskStatus(taskOrderDO.getTaskStatus());
|
|
|
- orderItemReportVO.setReportNo(reportNo);
|
|
|
-
|
|
|
- if (orderItemReportVO.getReportType() != null && orderItemReportVO.getReportType() == 100 && orderItemRespVO.getMainCheckerUser() != null) {
|
|
|
- ArrayList<AdminUserRespDTO> adminUserRespDTOS = new ArrayList<>();
|
|
|
- adminUserRespDTOS.add(orderItemRespVO.getMainCheckerUser());
|
|
|
- orderItemReportVO.setCheckUsers(adminUserRespDTOS);
|
|
|
- }
|
|
|
- orderItemReportVOS.add(orderItemReportVO);
|
|
|
- }
|
|
|
- orderItemDetailVO.setReportList(orderItemReportVOS);
|
|
|
|
|
|
- if (!orderItemReportVOS.isEmpty()) {
|
|
|
- AtomicReference<Integer> index = new AtomicReference<>(1);
|
|
|
- List<BoilerTaskOrderItemReportDO> list = orderItemReportVOS.stream().map(item -> {
|
|
|
- BoilerTaskOrderItemReportDO taskOrderItemReportDO = new BoilerTaskOrderItemReportDO();
|
|
|
-
|
|
|
- taskOrderItemReportDO.setReportNo(item.getReportNo());
|
|
|
- taskOrderItemReportDO.setOrderItemId(id);
|
|
|
- taskOrderItemReportDO.setOrderId(taskOrderDO.getId());
|
|
|
-
|
|
|
- taskOrderItemReportDO.setTemplateId(item.getTemplateId());
|
|
|
- taskOrderItemReportDO.setReportName(item.getReportName());
|
|
|
- taskOrderItemReportDO.setTaskStatus(taskOrderDO.getTaskStatus());
|
|
|
- taskOrderItemReportDO.setReportType(item.getReportType());
|
|
|
- taskOrderItemReportDO.setIsApproval(item.getIsApproval());
|
|
|
- taskOrderItemReportDO.setIsRecheck(item.getIsRecheck());
|
|
|
- taskOrderItemReportDO.setIsRatify(item.getIsRatify());
|
|
|
- taskOrderItemReportDO.setSort(index.getAndSet(index.get() + 1));
|
|
|
- taskOrderItemReportDO.setPrepareJson(item.getPrepareJson());
|
|
|
- taskOrderItemReportDO.setIsAutoAmount(item.getIsAutoAmount());
|
|
|
- taskOrderItemReportDO.setFee(item.getFee());
|
|
|
-
|
|
|
-
|
|
|
- return taskOrderItemReportDO;
|
|
|
- }).toList();
|
|
|
- taskOrderItemReportMapper.insertBatch(list);
|
|
|
- }
|
|
|
} else {
|
|
|
List<BoilerOrderItemReportVO> orderItemReportVOS = itemReportDOS.stream().map(itemReportDO -> {
|
|
|
BoilerOrderItemReportVO orderItemReportVO = BeanUtils.toBean(itemReportDO, BoilerOrderItemReportVO.class);
|
|
|
@@ -3697,6 +3640,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
addReport.setPrepareJson(taskOrderMajorIssuesVO.getPrepareJson());
|
|
|
addReport.setReportUrl(taskOrderMajorIssuesVO.getReportUrl());
|
|
|
|
|
|
+ String reportNo = "";
|
|
|
+ BoilerTaskOrderItemReportDO mainReport = taskOrderItemReportMapper.selectOne(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>().
|
|
|
+ eq(BoilerTaskOrderItemReportDO::getOrderId, taskOrderMajorIssuesVO.getOrderId()), false);
|
|
|
+ if (mainReport != null) {
|
|
|
+ reportNo = mainReport.getReportNo();
|
|
|
+ }
|
|
|
|
|
|
// 检验方案
|
|
|
if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.INSPECTION_PLAN.getType().intValue() == dynamicTbDO.getTbType()) {
|
|
|
@@ -3709,7 +3658,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
if (StringUtils.isNotEmpty(taskOrderMajorIssuesVO.getReportName())) {
|
|
|
taskOrderReportDO.setReportName(taskOrderMajorIssuesVO.getReportName());
|
|
|
}
|
|
|
-// taskOrderReportDO.setReportNo(generateOrderItemInspectionPlanReportNo(addReport.getOrderId()));
|
|
|
+ taskOrderReportDO.setReportNo(reportNo);
|
|
|
taskOrderReportMapper.insert(taskOrderReportDO);
|
|
|
|
|
|
//生成报表数据 -- 检验方案表不同暂不通用
|
|
|
@@ -3734,7 +3683,6 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
return taskOrderReportDO.getId();
|
|
|
}
|
|
|
|
|
|
- String reportNo = generateOrderItemSubReportNo();
|
|
|
addReport.setReportNo(reportNo);
|
|
|
taskOrderItemReportMapper.insert(addReport);
|
|
|
|
|
|
@@ -6132,4 +6080,38 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据任务单ID获取项目代码
|
|
|
+ * 查询满足checkid和BoilerConnectRecordReportDO的ID相同且isMainProject为1的记录,返回其projectCode
|
|
|
+ * 如果没有找到主项目,则返回默认值"05"
|
|
|
+ *
|
|
|
+ * @param taskOrderId 任务单ID
|
|
|
+ * @return 项目代码
|
|
|
+ */
|
|
|
+ private String getProjectCodeByTaskOrderId(String taskOrderId) {
|
|
|
+ List<EquipBoilerSchedulingCheckDO> checkDOList = equipBoilerSchedulingCheckService.lambdaQuery()
|
|
|
+ .eq(EquipBoilerSchedulingCheckDO::getTaskOrderId, taskOrderId)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ if (!checkDOList.isEmpty()) {
|
|
|
+ List<String> checkIds = checkDOList.stream()
|
|
|
+ .map(EquipBoilerSchedulingCheckDO::getCheckId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .toList();
|
|
|
+
|
|
|
+ if (!checkIds.isEmpty()) {
|
|
|
+ List<BoilerConnectRecordReportDO> mainProjectList = boilerConnectRecordReportService.lambdaQuery()
|
|
|
+ .in(BoilerConnectRecordReportDO::getId, checkIds)
|
|
|
+ .eq(BoilerConnectRecordReportDO::getIsMainProject, true)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ if (!mainProjectList.isEmpty()) {
|
|
|
+ return mainProjectList.get(0).getProjectCode();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return "05";
|
|
|
+ }
|
|
|
+
|
|
|
}
|