Commit c3ad2420 authored by 韩桐桐's avatar 韩桐桐

Bug-28712:设备移交,使用单位多次移交给安装单位显示设备已被其他流程使用,不允许重复提交

parent 5ce52eef
...@@ -26,7 +26,9 @@ import com.yeejoin.amos.boot.module.jg.api.service.IJgEquipTransferService; ...@@ -26,7 +26,9 @@ import com.yeejoin.amos.boot.module.jg.api.service.IJgEquipTransferService;
import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService; import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.api.vo.tableDataExportVo.EquipTransferVo; import com.yeejoin.amos.boot.module.jg.api.vo.tableDataExportVo.EquipTransferVo;
import com.yeejoin.amos.boot.module.jg.biz.config.LocalBadRequest;
import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext; import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.context.FlowingEquipRedisContext;
import com.yeejoin.amos.boot.module.jg.biz.edit.permission.FillingEditPermForCurrentUser; import com.yeejoin.amos.boot.module.jg.biz.edit.permission.FillingEditPermForCurrentUser;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICompensateFlowDataOfRedis; import com.yeejoin.amos.boot.module.jg.biz.service.ICompensateFlowDataOfRedis;
...@@ -116,140 +118,156 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto, ...@@ -116,140 +118,156 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public List<JgEquipTransfer> saveTransfer(String submitType, JSONObject jsonObjectMap, ReginParams reginParams) { public List<JgEquipTransfer> saveTransfer(String submitType, JSONObject jsonObjectMap, ReginParams reginParams) {
JgEquipTransferDto model = JSON.parseObject(JSONObject.toJSONString(jsonObjectMap), JgEquipTransferDto.class); JgEquipTransferDto model = JSON.parseObject(JSONObject.toJSONString(jsonObjectMap), JgEquipTransferDto.class);
convertField(model); convertField(model);
String equListCode = model.getEquList(); String equListCode = model.getEquList();
List<Map<String, Object>> deviceList = model.getDeviceList(); List<Map<String, Object>> deviceList = model.getDeviceList();
if (CollectionUtils.isEmpty(deviceList)) { if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("请选择设备!"); throw new BadRequest("请选择设备!");
} }
try{
if (SUBMIT_TYPE_FLOW.equals(submitType)) {// 放在最后面防止前面有异常 if (SUBMIT_TYPE_FLOW.equals(submitType)) {// 放在最后面防止前面有异常
// 如果是提交,用于校验设备是否已经在流程中,如果不在标记设备已经在流程中 // 如果是提交,用于校验设备是否已经在流程中,如果不在标记设备已经在流程中
CompanyBo company = reginParams.getCompany(); CompanyBo company = reginParams.getCompany();
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) { if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
deviceList.forEach(proCon -> { deviceList.forEach(proCon -> {
String proConSeq = String.valueOf(proCon.get(sequenceNbr)); String proConSeq = String.valueOf(proCon.get(sequenceNbr));
List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq); List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq);
equipList.forEach(equip -> EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY) equipList.forEach(equip -> EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
.equipRepeatUsedCheck(String.valueOf(equip.get(record)), CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? .equipRepeatUsedCheck(String.valueOf(equip.get(record)), CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyCode().split("_")[1] :
company.getCompanyCode()));
});
} else {
deviceList.forEach(device -> EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
.equipRepeatUsedCheck(String.valueOf(device.get("SEQUENCE_NBR")), CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyCode().split("_")[1] : company.getCompanyCode().split("_")[1] :
company.getCompanyCode())); company.getCompanyCode()));
}); }
} else {
deviceList.forEach(device -> EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
.equipRepeatUsedCheck(String.valueOf(device.get("SEQUENCE_NBR")), CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyCode().split("_")[1] :
company.getCompanyCode()));
} }
} //获取申请单编号
//获取申请单编号 ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(jsonObjectMap.get("businessCode"))), deviceList.size());
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(jsonObjectMap.get("businessCode"))), deviceList.size()); this.handleResponseModel(listResponseModel, "告知单获取失败: ");
this.handleResponseModel(listResponseModel, "告知单获取失败: "); List<String> applyNoList = listResponseModel.getResult();
List<String> applyNoList = listResponseModel.getResult(); this.handleApplyNoList(applyNoList);
this.handleApplyNoList(applyNoList); //启动工作流
List<WorkflowResultDto> workflowResultList = this.startWorkFlow(model.getInstallUnitCreditCode(), submitType, deviceList);
//启动工作流
List<WorkflowResultDto> workflowResultList = this.startWorkFlow(model.getInstallUnitCreditCode(), submitType, deviceList); List<JgEquipTransfer> transferList = new ArrayList<>();
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>();
List<JgEquipTransfer> transferList = new ArrayList<>(); IntStream.range(0, deviceList.size()).forEach(i -> {
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>(); Map<String, Object> obj = deviceList.get(i);
IntStream.range(0, deviceList.size()).forEach(i -> { String applyNo = applyNoList.get(i);
Map<String, Object> obj = deviceList.get(i); if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
String applyNo = applyNoList.get(i); String proConSeq = String.valueOf(obj.get(sequenceNbr));
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) { IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.lambdaQuery().eq(IdxBizJgProjectContraption::getSequenceNbr, proConSeq).one();
String proConSeq = String.valueOf(obj.get(sequenceNbr)); List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq);
IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.lambdaQuery().eq(IdxBizJgProjectContraption::getSequenceNbr, proConSeq).one(); equipList.forEach(equip -> {
List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq); JgEquipTransferEq jgEquipTransferEq = new JgEquipTransferEq()
equipList.forEach(equip -> { .setEquId(String.valueOf(equip.get(record)))
JgEquipTransferEq jgEquipTransferEq = new JgEquipTransferEq() .setEquipTransferId(applyNo);
.setEquId(String.valueOf(equip.get(record))) equipTransferEqList.add(jgEquipTransferEq);
.setEquipTransferId(applyNo); });
List<String> records = equipList.stream().map(equ -> String.valueOf(equ.get(record))).collect(Collectors.toList());
JgEquipTransfer transfer = buildJgEquipTransfer(model, applyNo, reginParams, submitType, workflowResultList, i);
transfer.setProjectContraptionSeq(proConSeq);
transfer.setEquList(EquipmentClassifityEnum.YLGD.getName());
transfer.setEquListCode(equListCode);
transfer.setEquCategory(equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, idxBizJgRegisterInfoServiceImpl.lambdaQuery().eq(IdxBizJgRegisterInfo::getRecord, equipList.get(0).get(record)).one().getEquCategory())).getName());
transfer.setEquDefine(equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, idxBizJgRegisterInfoServiceImpl.lambdaQuery().eq(IdxBizJgRegisterInfo::getRecord, equipList.get(0).get(record)).one().getEquDefine())).getName());
transfer.setSupervisoryCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgOtherInfoServiceImpl.lambdaQuery()
.in(IdxBizJgOtherInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgOtherInfo::getSupervisoryCode)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList()), ","
));
transfer.setProductName(org.apache.commons.lang3.StringUtils.join(
idxBizJgRegisterInfoServiceImpl.lambdaQuery()
.in(IdxBizJgRegisterInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgRegisterInfo::getProductName)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList()), ","
));
transfer.setUseRegistCode(projectContraption.getUseRegistrationCode());
transfer.setUseInnerCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgUseInfoServiceImpl.lambdaQuery()
.in(IdxBizJgUseInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgUseInfo::getUseInnerCode)
.distinct()
.collect(Collectors.toList()), ","));
transfer.setEquAddress(projectContraption.getAddress());
transfer.setEquCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgRegisterInfoServiceImpl.lambdaQuery()
.in(IdxBizJgRegisterInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgRegisterInfo::getEquCode)
.distinct()
.collect(Collectors.toList()), ","));
transferList.add(transfer);
} else {
JgEquipTransferEq jgEquipTransferEq = buildJgEquipTransferEq(obj, applyNo);
JgEquipTransfer transfer = buildJgEquipTransfer(model, applyNo, reginParams, submitType, workflowResultList, i);
transfer.setSupervisoryCode(String.valueOf(obj.get("SUPERVISORY_CODE")));
transfer.setEquList(Objects.toString(obj.get("EQU_LIST"), ""));
transfer.setEquListCode(Objects.toString(obj.get("EQU_LIST_CODE"), ""));
transfer.setEquDefine(Objects.toString(obj.get("EQU_DEFINE"), ""));
transfer.setEquCategory(Objects.toString(obj.get("EQU_CATEGORY"), ""));
transfer.setProductName(Objects.toString(obj.get("PRODUCT_NAME"), ""));
transfer.setUseRegistCode(Objects.toString(obj.get("USE_ORG_CODE"), ""));
transfer.setUseRegistCode(Objects.toString(obj.get("USE_ORG_CODE"), ""));
transfer.setUseInnerCode(Objects.toString(obj.get("USE_INNER_CODE"), ""));
transfer.setEquAddress(Objects.toString(obj.get("ADDRESS"), ""));
transfer.setEquCode(Objects.toString(obj.get("EQU_CODE"), ""));
transferList.add(transfer);
equipTransferEqList.add(jgEquipTransferEq); equipTransferEqList.add(jgEquipTransferEq);
}); }
List<String> records = equipList.stream().map(equ -> String.valueOf(equ.get(record))).collect(Collectors.toList()); });
JgEquipTransfer transfer = buildJgEquipTransfer(model, applyNo, reginParams, submitType, workflowResultList, i);
transfer.setProjectContraptionSeq(proConSeq); baseMapper.insertBatchSomeColumn(transferList);
transfer.setEquList(EquipmentClassifityEnum.YLGD.getName()); if (SUBMIT_TYPE_FLOW.equals(submitType)) {
transfer.setEquListCode(equListCode); this.buildTask(transferList, workflowResultList);
transfer.setEquCategory(equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, idxBizJgRegisterInfoServiceImpl.lambdaQuery().eq(IdxBizJgRegisterInfo::getRecord, equipList.get(0).get(record)).one().getEquCategory())).getName());
transfer.setEquDefine(equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, idxBizJgRegisterInfoServiceImpl.lambdaQuery().eq(IdxBizJgRegisterInfo::getRecord, equipList.get(0).get(record)).one().getEquDefine())).getName());
transfer.setSupervisoryCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgOtherInfoServiceImpl.lambdaQuery()
.in(IdxBizJgOtherInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgOtherInfo::getSupervisoryCode)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList()), ","
));
transfer.setProductName(org.apache.commons.lang3.StringUtils.join(
idxBizJgRegisterInfoServiceImpl.lambdaQuery()
.in(IdxBizJgRegisterInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgRegisterInfo::getProductName)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList()), ","
));
transfer.setUseRegistCode(projectContraption.getUseRegistrationCode());
transfer.setUseInnerCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgUseInfoServiceImpl.lambdaQuery()
.in(IdxBizJgUseInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgUseInfo::getUseInnerCode)
.distinct()
.collect(Collectors.toList()), ","));
transfer.setEquAddress(projectContraption.getAddress());
transfer.setEquCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgRegisterInfoServiceImpl.lambdaQuery()
.in(IdxBizJgRegisterInfo::getRecord, records)
.list()
.stream()
.filter(Objects::nonNull)
.map(IdxBizJgRegisterInfo::getEquCode)
.distinct()
.collect(Collectors.toList()), ","));
transferList.add(transfer);
} else { } else {
JgEquipTransferEq jgEquipTransferEq = buildJgEquipTransferEq(obj, applyNo); //批量暂存
JgEquipTransfer transfer = buildJgEquipTransfer(model, applyNo, reginParams, submitType, workflowResultList, i); this.saveTempTransfer(transferList);
transfer.setSupervisoryCode(String.valueOf(obj.get("SUPERVISORY_CODE")));
transfer.setEquList(Objects.toString(obj.get("EQU_LIST"), ""));
transfer.setEquListCode(Objects.toString(obj.get("EQU_LIST_CODE"), ""));
transfer.setEquDefine(Objects.toString(obj.get("EQU_DEFINE"), ""));
transfer.setEquCategory(Objects.toString(obj.get("EQU_CATEGORY"), ""));
transfer.setProductName(Objects.toString(obj.get("PRODUCT_NAME"), ""));
transfer.setUseRegistCode(Objects.toString(obj.get("USE_ORG_CODE"), ""));
transfer.setUseRegistCode(Objects.toString(obj.get("USE_ORG_CODE"), ""));
transfer.setUseInnerCode(Objects.toString(obj.get("USE_INNER_CODE"), ""));
transfer.setEquAddress(Objects.toString(obj.get("ADDRESS"), ""));
transfer.setEquCode(Objects.toString(obj.get("EQU_CODE"), ""));
transferList.add(transfer);
equipTransferEqList.add(jgEquipTransferEq);
} }
});
baseMapper.insertBatchSomeColumn(transferList); List<JgEquipTransferEq> jgEquipTransferEqList = this.buildJgEquipTransferEqList(equipTransferEqList, transferList);
if (SUBMIT_TYPE_FLOW.equals(submitType)) { jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList);
this.buildTask(transferList, workflowResultList); this.updateRedisBatch(transferList);
} else { // 创建历史数据
//批量暂存 this.saveOrUpdateHisDataBatch(equListCode, transferList, jgEquipTransferEqList);
this.saveTempTransfer(transferList); return transferList;
} catch (BadRequest | LocalBadRequest e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw new BadRequest("保存失败!");
} finally {
FlowingEquipRedisContext.clean();
} }
}
List<JgEquipTransferEq> jgEquipTransferEqList = this.buildJgEquipTransferEqList(equipTransferEqList, transferList); private void rollBackForDelRedisData() {
jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList); FlowingEquipRedisContext.getContext().forEach(e -> {
this.updateRedisBatch(transferList); EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
// 创建历史数据 .delDataForCheckWithKey(e.getData(), e.getRedisKey());
this.saveOrUpdateHisDataBatch(equListCode, transferList, jgEquipTransferEqList); });
return transferList;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment