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

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

parent 5ce52eef
......@@ -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.vo.SortVo;
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.FlowingEquipRedisContext;
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.service.ICompensateFlowDataOfRedis;
......@@ -116,140 +118,156 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
@GlobalTransactional(rollbackFor = Exception.class)
public List<JgEquipTransfer> saveTransfer(String submitType, JSONObject jsonObjectMap, ReginParams reginParams) {
JgEquipTransferDto model = JSON.parseObject(JSONObject.toJSONString(jsonObjectMap), JgEquipTransferDto.class);
convertField(model);
String equListCode = model.getEquList();
List<Map<String, Object>> deviceList = model.getDeviceList();
if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("请选择设备!");
}
if (SUBMIT_TYPE_FLOW.equals(submitType)) {// 放在最后面防止前面有异常
// 如果是提交,用于校验设备是否已经在流程中,如果不在标记设备已经在流程中
CompanyBo company = reginParams.getCompany();
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
deviceList.forEach(proCon -> {
String proConSeq = String.valueOf(proCon.get(sequenceNbr));
List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq);
equipList.forEach(equip -> EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
.equipRepeatUsedCheck(String.valueOf(equip.get(record)), CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
try{
if (SUBMIT_TYPE_FLOW.equals(submitType)) {// 放在最后面防止前面有异常
// 如果是提交,用于校验设备是否已经在流程中,如果不在标记设备已经在流程中
CompanyBo company = reginParams.getCompany();
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
deviceList.forEach(proCon -> {
String proConSeq = String.valueOf(proCon.get(sequenceNbr));
List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq);
equipList.forEach(equip -> EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
.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()));
});
} 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());
this.handleResponseModel(listResponseModel, "告知单获取失败: ");
List<String> applyNoList = listResponseModel.getResult();
this.handleApplyNoList(applyNoList);
//启动工作流
List<WorkflowResultDto> workflowResultList = this.startWorkFlow(model.getInstallUnitCreditCode(), submitType, deviceList);
List<JgEquipTransfer> transferList = new ArrayList<>();
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>();
IntStream.range(0, deviceList.size()).forEach(i -> {
Map<String, Object> obj = deviceList.get(i);
String applyNo = applyNoList.get(i);
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
String proConSeq = String.valueOf(obj.get(sequenceNbr));
IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.lambdaQuery().eq(IdxBizJgProjectContraption::getSequenceNbr, proConSeq).one();
List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq);
equipList.forEach(equip -> {
JgEquipTransferEq jgEquipTransferEq = new JgEquipTransferEq()
.setEquId(String.valueOf(equip.get(record)))
.setEquipTransferId(applyNo);
//获取申请单编号
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(jsonObjectMap.get("businessCode"))), deviceList.size());
this.handleResponseModel(listResponseModel, "告知单获取失败: ");
List<String> applyNoList = listResponseModel.getResult();
this.handleApplyNoList(applyNoList);
//启动工作流
List<WorkflowResultDto> workflowResultList = this.startWorkFlow(model.getInstallUnitCreditCode(), submitType, deviceList);
List<JgEquipTransfer> transferList = new ArrayList<>();
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>();
IntStream.range(0, deviceList.size()).forEach(i -> {
Map<String, Object> obj = deviceList.get(i);
String applyNo = applyNoList.get(i);
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
String proConSeq = String.valueOf(obj.get(sequenceNbr));
IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.lambdaQuery().eq(IdxBizJgProjectContraption::getSequenceNbr, proConSeq).one();
List<Map<String, Object>> equipList = jgProjectContraptionService.getBaseMapper().selectEquipList(proConSeq);
equipList.forEach(equip -> {
JgEquipTransferEq jgEquipTransferEq = new JgEquipTransferEq()
.setEquId(String.valueOf(equip.get(record)))
.setEquipTransferId(applyNo);
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);
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);
});
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);
}
});
baseMapper.insertBatchSomeColumn(transferList);
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
this.buildTask(transferList, workflowResultList);
} 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);
//批量暂存
this.saveTempTransfer(transferList);
}
});
baseMapper.insertBatchSomeColumn(transferList);
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
this.buildTask(transferList, workflowResultList);
} else {
//批量暂存
this.saveTempTransfer(transferList);
List<JgEquipTransferEq> jgEquipTransferEqList = this.buildJgEquipTransferEqList(equipTransferEqList, transferList);
jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList);
this.updateRedisBatch(transferList);
// 创建历史数据
this.saveOrUpdateHisDataBatch(equListCode, transferList, jgEquipTransferEqList);
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);
jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList);
this.updateRedisBatch(transferList);
// 创建历史数据
this.saveOrUpdateHisDataBatch(equListCode, transferList, jgEquipTransferEqList);
return transferList;
private void rollBackForDelRedisData() {
FlowingEquipRedisContext.getContext().forEach(e -> {
EquipUsedCheckStrategyContext.getUsedStrategy(EQUIP_TRANSFER_PROCESS_KEY)
.delDataForCheckWithKey(e.getData(), e.getRedisKey());
});
}
/**
......
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