|
|
@@ -141,6 +141,8 @@ import cn.start.tz.module.pressure2.service.common.RedisService;
|
|
|
import cn.start.tz.module.pressure2.service.costfield.CostFieldService;
|
|
|
import cn.start.tz.module.pressure2.service.dynamictb.DynamicTbService;
|
|
|
import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.dynamictbins.DynamicTbInsMapper;
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.dynamictbval.DynamicTbValMapper;
|
|
|
import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
|
|
|
import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
|
|
|
import cn.start.tz.module.pressure2.service.equipboiler.EquipBoilerService;
|
|
|
@@ -277,6 +279,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
@Resource
|
|
|
private BoilerTaskOrderItemReportUserMapper taskOrderItemReportUserMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private DynamicTbInsMapper dynamicTbInsMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DynamicTbValMapper dynamicTbValMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private BoilerTaskOrderItemReportEquipMapper taskOrderItemReportEquipMapper;
|
|
|
|
|
|
@@ -1398,7 +1406,8 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
//repsVO.setName(dynamicTbDO.getTbName());
|
|
|
repsVO.setConnectId(connectRecordReportDO.getId());
|
|
|
repsVO.setName(connectRecordReportDO.getProjectName());
|
|
|
- repsVO.setFee(ConversionUtil.convert(connectRecordReportDO.getFee()));
|
|
|
+ repsVO.setIsFee(connectRecordReportDO.getIsFee());
|
|
|
+ repsVO.setFee("1".equals(connectRecordReportDO.getIsFee()) ? ConversionUtil.convert(connectRecordReportDO.getFee()) : BigDecimal.ZERO);
|
|
|
repsVO.setTemplateId(dynamicTbDO.getId());
|
|
|
repsVO.setIsAutoAmount("0");
|
|
|
repsVO.setReportType(dynamicTbDO.getTbType());
|
|
|
@@ -1417,7 +1426,8 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
//repsVO.setName(dynamicTbDO.getTbName());
|
|
|
repsVO.setConnectId(connectRecordReportDO.getId());
|
|
|
repsVO.setName(connectRecordReportDO.getProjectName());
|
|
|
- repsVO.setFee(ConversionUtil.convert(connectRecordReportDO.getFee()));
|
|
|
+ repsVO.setIsFee(connectRecordReportDO.getIsFee());
|
|
|
+ repsVO.setFee("1".equals(connectRecordReportDO.getIsFee()) ? ConversionUtil.convert(connectRecordReportDO.getFee()) : BigDecimal.ZERO);
|
|
|
repsVO.setTemplateId(dynamicTbDO.getId());
|
|
|
repsVO.setIsAutoAmount("0");
|
|
|
repsVO.setReportType(dynamicTbDO.getTbType());
|
|
|
@@ -2565,7 +2575,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
addInstructionReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
|
|
|
addInstructionReport.setSort(count + 1);
|
|
|
addInstructionReport.setFeeType(vo.getType());
|
|
|
-
|
|
|
+ addInstructionReport.setItemPartId(itemPartId);
|
|
|
addInstructionReport.setProjectId(connectDO.getId());
|
|
|
if (vo.getFee() == null || vo.getFee().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
addInstructionReport.setFee(ConversionUtil.convert(connectDO.getFee()));
|
|
|
@@ -4599,6 +4609,154 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public String addReportFromExisting(BoilerOrderItemAddFromExistingVO addFromExistingVO) {
|
|
|
+ // 获取序号
|
|
|
+ Long count = taskOrderItemReportMapper.selectCount(
|
|
|
+ BoilerTaskOrderItemReportDO::getOrderId, addFromExistingVO.getOrderId());
|
|
|
+ if (count == null) {
|
|
|
+ count = 0L;
|
|
|
+ }
|
|
|
+
|
|
|
+ BoilerTaskOrderItemReportDO addReport = new BoilerTaskOrderItemReportDO();
|
|
|
+ addReport.setOrderId(addFromExistingVO.getOrderId());
|
|
|
+ addReport.setOrderItemId(addFromExistingVO.getOrderItemId());
|
|
|
+ addReport.setReportType(TaskOrderItemReportTypeEnum.WORK_INSTRUCTION.getType());
|
|
|
+ addReport.setTaskStatus(TaskOrderStatusEnum.CONFIRM.getStatus());
|
|
|
+ addReport.setStatus(0);
|
|
|
+ addReport.setSort(count.intValue() + 1);
|
|
|
+ addReport.setItemPartId(addFromExistingVO.getItemPartId());
|
|
|
+ addReport.setRemark(addFromExistingVO.getRemark());
|
|
|
+ addReport.setSubmitTime(LocalDateTime.now());
|
|
|
+ addReport.setPrepareTime(LocalDateTime.now());
|
|
|
+ addReport.setCreateTime(LocalDateTime.now());
|
|
|
+
|
|
|
+ BoilerTaskOrderItemReportDO sourceReport = null;
|
|
|
+ if ("1".equals(addFromExistingVO.getAddType())) {
|
|
|
+ // 引用上次模板:从源指导书复制
|
|
|
+ sourceReport = taskOrderItemReportMapper.selectById(addFromExistingVO.getInstructionId());
|
|
|
+ if (sourceReport == null) {
|
|
|
+ throw new ServiceException(GlobalErrorCodeConstants.FIND_NOT_DATA.getCode(), "源指导书不存在");
|
|
|
+ }
|
|
|
+ addReport.setTemplateId(sourceReport.getTemplateId());
|
|
|
+ addReport.setReportName(sourceReport.getReportName());
|
|
|
+ addReport.setPrepareJson(sourceReport.getPrepareJson());
|
|
|
+ addReport.setInstructionId(sourceReport.getId());
|
|
|
+ addReport.setPrepareId(sourceReport.getPrepareId());
|
|
|
+ addReport.setPrepareName(sourceReport.getPrepareName());
|
|
|
+ addReport.setReportUrl(sourceReport.getReportUrl());
|
|
|
+ } else {
|
|
|
+ // 模板生成:从模板创建
|
|
|
+ DynamicTbDO dynamicTbDO = dynamicTbMapper.selectById(addFromExistingVO.getTemplateId());
|
|
|
+ if (dynamicTbDO == null) {
|
|
|
+ throw new ServiceException(GlobalErrorCodeConstants.FIND_NOT_DATA.getCode(), "模板不存在");
|
|
|
+ }
|
|
|
+ addReport.setTemplateId(dynamicTbDO.getId());
|
|
|
+ addReport.setReportName(dynamicTbDO.getTbName());
|
|
|
+ }
|
|
|
+
|
|
|
+ taskOrderItemReportMapper.insert(addReport);
|
|
|
+
|
|
|
+ // 添加提交人
|
|
|
+ BoilerTaskOrderItemReportUserDO userDO = new BoilerTaskOrderItemReportUserDO();
|
|
|
+ userDO.setUserId(getLoginUserId());
|
|
|
+ userDO.setReportId(addReport.getId());
|
|
|
+ taskOrderItemReportUserMapper.insert(userDO);
|
|
|
+
|
|
|
+ if ("1".equals(addFromExistingVO.getAddType())) {
|
|
|
+ // 引用上次模板:复制源报告的 DynamicTbInsDO + DynamicTbValDO
|
|
|
+ copyReportInstance(sourceReport.getId(), addReport.getId(), sourceReport.getTemplateId());
|
|
|
+ } else {
|
|
|
+ // 模板生成:创建空模板实例
|
|
|
+ BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
|
|
|
+ syncReportVO.setRefId(addReport.getId());
|
|
|
+ syncReportVO.setReportType("record");
|
|
|
+ syncReportData(syncReportVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ return addReport.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 复制报告的模板实例数据(DynamicTbInsDO + DynamicTbValDO)
|
|
|
+ */
|
|
|
+ private void copyReportInstance(String sourceReportId, String targetReportId, String templateId) {
|
|
|
+ // 查询源报告的模板实例
|
|
|
+ DynamicTbInsDO sourceIns = dynamicTbInsMapper.selectOne(
|
|
|
+ new LambdaQueryWrapper<DynamicTbInsDO>()
|
|
|
+ .eq(DynamicTbInsDO::getRefId, sourceReportId)
|
|
|
+ .eq(DynamicTbInsDO::getTbId, templateId)
|
|
|
+ );
|
|
|
+ if (sourceIns == null) {
|
|
|
+ // 源报告没有模板实例,走创建空实例
|
|
|
+ BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
|
|
|
+ syncReportVO.setRefId(targetReportId);
|
|
|
+ syncReportVO.setReportType("record");
|
|
|
+ syncReportData(syncReportVO);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建新实例
|
|
|
+ DynamicTbInsDO newIns = new DynamicTbInsDO();
|
|
|
+ newIns.setTbId(sourceIns.getTbId());
|
|
|
+ newIns.setRefId(targetReportId);
|
|
|
+ newIns.setRefName(sourceIns.getRefName());
|
|
|
+ newIns.setNote(sourceIns.getNote());
|
|
|
+ newIns.setCreateorName(sourceIns.getCreateorName());
|
|
|
+ dynamicTbInsMapper.insert(newIns);
|
|
|
+
|
|
|
+ // 复制实例值
|
|
|
+ List<DynamicTbValDO> sourceVals = dynamicTbValMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<DynamicTbValDO>()
|
|
|
+ .eq(DynamicTbValDO::getInsId, sourceIns.getId())
|
|
|
+ );
|
|
|
+ if (CollUtil.isNotEmpty(sourceVals)) {
|
|
|
+ for (DynamicTbValDO val : sourceVals) {
|
|
|
+ DynamicTbValDO newVal = new DynamicTbValDO();
|
|
|
+ newVal.setInsId(newIns.getId());
|
|
|
+ newVal.setColCode(val.getColCode());
|
|
|
+ newVal.setValValue(val.getValValue());
|
|
|
+ newVal.setNote(val.getNote());
|
|
|
+ newVal.setCreateorName(val.getCreateorName());
|
|
|
+ dynamicTbValMapper.insert(newVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<BoilerTaskOrderItemReportRespVO> getHistoryInstructionsByEquipId(String equipId, String currentOrderItemId) {
|
|
|
+ // 查该设备的所有任务单项,按创建时间倒序(最近的在前面)
|
|
|
+ List<BoilerTaskOrderItemDO> orderItems = boilerTaskOrderItemMapper.selectList(
|
|
|
+ new LambdaQueryWrapperX<BoilerTaskOrderItemDO>()
|
|
|
+ .eq(BoilerTaskOrderItemDO::getEquipId, equipId)
|
|
|
+ .orderByDesc(BoilerTaskOrderItemDO::getCreateTime)
|
|
|
+ );
|
|
|
+ if (CollUtil.isEmpty(orderItems)) {
|
|
|
+ return List.of();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 跳过当前任务单项,取上一次的任务单
|
|
|
+ BoilerTaskOrderItemDO previousItem = null;
|
|
|
+ for (BoilerTaskOrderItemDO item : orderItems) {
|
|
|
+ if (!item.getId().equals(currentOrderItemId)) {
|
|
|
+ previousItem = item;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (previousItem == null) {
|
|
|
+ return List.of();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询上次任务单下的作业指导书(reportType=700)
|
|
|
+ List<BoilerTaskOrderItemReportDO> reports = taskOrderItemReportMapper.selectList(
|
|
|
+ new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
|
|
|
+ .eq(BoilerTaskOrderItemReportDO::getOrderItemId, previousItem.getId())
|
|
|
+ .eq(BoilerTaskOrderItemReportDO::getReportType, TaskOrderItemReportTypeEnum.WORK_INSTRUCTION.getType())
|
|
|
+ );
|
|
|
+
|
|
|
+ return BeanUtils.toBean(reports, BoilerTaskOrderItemReportRespVO.class);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Boolean opinionNotice(MajorIssuesSubmitVO majorIssuesSubmitVO) {
|
|
|
|