Commit 244ea76a authored by tianbo's avatar tianbo

```

fix(jg): 解决装置单位变更时使用登记证状态处理问题 - 新增projectContraptionIdsInThisApply变量用于区分本次变更列表中的装置 - 修改过滤条件使用projectContraptionIdsInThisApply而非projectContraptionIds - 移除firstProjectContraptionId判断逻辑,直接处理当前变更装置 - 新增dealProjectsUnderSameUseOrgCodeNotInThisApply方法处理非本次变更装置 - 添加验证使用登记证存在性检查,不存在时抛出异常 - 修复使用登记证状态设置时机,确保变更后状态正确 - 为ES设备数据添加设备状态字段设置 ```
parent 63d24cc3
......@@ -2410,6 +2410,11 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
registration.setNextTaskId(nextTaskId);
TaskV2Model taskV2Model = updateTaskModel(registration, op);
List<String> projectContraptionIds = new ArrayList<>();
List<String> projectContraptionIdsInThisApply = new ArrayList<>();
for (Map<String, Object> map : projectContraptionList) {
String projectSequenceNbr = (String) map.get(SEQUENCE_NBR);
projectContraptionIdsInThisApply.add(projectSequenceNbr);
}
String firstProjectContraptionId = null; // 同一使用登记证下第一个装置id
for (Map<String, Object> map : projectContraptionList) {
String useRegistrationCode = (String) map.get("useRegistrationCode");
......@@ -2445,16 +2450,25 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
IdxBizJgProjectContraption targetProjectContraption = projectsUnderSameUseOrgCode.get(0);
this.processSingleProjectContraption(registration, useInfos, targetProjectContraption, projectContraptionIds, useRegistrationCode, false);
} else {
// 本次待处理装置
IdxBizJgProjectContraption projectContraption = projectContraptionService.getById(projectSequenceNbr);
// 找到同一使用登记证下所有装置中不在本次变更列表的装置
List<IdxBizJgProjectContraption> projectsUnderSameUseOrgCodeNotInThisApply = projectsUnderSameUseOrgCode.stream().filter(projectContraption -> !projectContraptionIds.contains(String.valueOf(projectContraption.getSequenceNbr()))).collect(Collectors.toList());
// 如果同一使用登记证下 有 装置不在本次变更列表中,则该装置和原使用登记证留给原单位;每一个变更给新单位的装置都重新生成使用登记证
if (!ValidationUtil.isEmpty(projectsUnderSameUseOrgCodeNotInThisApply) || !firstProjectContraptionId.equals(projectSequenceNbr)) {
List<IdxBizJgProjectContraption> projectsUnderSameUseOrgCodeNotInThisApply = projectsUnderSameUseOrgCode.stream().filter(pc -> !projectContraptionIdsInThisApply.contains(String.valueOf(pc.getSequenceNbr()))).collect(Collectors.toList());
// 如果同一使用登记证下【有】装置【不在】本次变更列表中,则该装置和原使用登记证留给原单位;每一个变更给新单位的装置都重新生成使用登记证
if (!ValidationUtil.isEmpty(projectsUnderSameUseOrgCodeNotInThisApply)) {
String newUseOrgCode = commonServiceImpl.generateRegistrationCode(useInfos.get(0).getRecord(), registration.getReceiveCompanyCode(), true);
this.processSingleProjectContraption(registration, useInfos, projectsUnderSameUseOrgCode.get(0), projectContraptionIds, newUseOrgCode, true);
this.processSingleProjectContraption(registration, useInfos, projectContraption, projectContraptionIds, newUseOrgCode, true);
// 如果projectsUnderSameUseOrgCodeNotInThisApply下的所有设备都是报废或者注销状态或均是报废注销的,则把对应证变更成已注销状态
this.dealProjectsUnderSameUseOrgCodeNotInThisApply(projectsUnderSameUseOrgCodeNotInThisApply, useRegistrationCode);
} else {
// 如果同一使用登记证下所有装置都在本次变更列表中,则将其中一个装置保留原使用登记证并变更给新单位,其他装置则重新生成使用登记证并变更给新单位
// 第一个装置保留原使用登记证
this.processSingleProjectContraption(registration, useInfos, projectsUnderSameUseOrgCode.get(0), projectContraptionIds, useRegistrationCode, false);
if (firstProjectContraptionId.equals(projectSequenceNbr)) {
this.processSingleProjectContraption(registration, useInfos, projectContraption, projectContraptionIds, useRegistrationCode, false);
} else {
String newUseOrgCode = commonServiceImpl.generateRegistrationCode(useInfos.get(0).getRecord(), registration.getReceiveCompanyCode(), true);
this.processSingleProjectContraption(registration, useInfos, projectContraption, projectContraptionIds, newUseOrgCode, true);
}
}
......@@ -2520,6 +2534,25 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
/**
* 处理不在一次单位变更单据下的工程装置
*/
private void dealProjectsUnderSameUseOrgCodeNotInThisApply(List<IdxBizJgProjectContraption> projectsUnderSameUseOrgCodeNotInThisApply, String useRegistrationCode) {
List<Long> projectSeqs = projectsUnderSameUseOrgCodeNotInThisApply.stream().map(IdxBizJgProjectContraption::getSequenceNbr).collect(Collectors.toList());
Integer usedEquipCount = idxBizJgUseInfoService.lambdaQuery()
.in(IdxBizJgUseInfo::getProjectContraptionId, projectSeqs)
.notIn(IdxBizJgUseInfo::getEquState, EquipmentEnum.BAOFEI.getCode().toString(), EquipmentEnum.BAOFEI.getCode().toString())
.select(IdxBizJgUseInfo::getRecord)
.count();
if (usedEquipCount == 0) {
// 所有装置下没有在用的管道,则更新原使用登记证状态为已注销
useRegistrationManageService.lambdaUpdate()
.eq(JgUseRegistrationManage::getUseRegistrationCode, useRegistrationCode)
.set(JgUseRegistrationManage::getCertificateStatus, CertificateStatusEnum.YIZHUXIAO.getCode())
.update();
}
}
/**
增加管道报废业务后需求调整:
如果装置下有报废的管道,则不变更报废的管道(留在原单位),只变更非报废的管道(给新单位);
原装置的登记证号给新单位,并重新生成工程装置,并把非报废的管道变更到新装置
......@@ -2606,6 +2639,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
batch.forEach(registerInfo -> registerInfo.setEquCode(equCode));
idxBizJgRegisterInfoService.updateBatchById(batch);
}
// 2.3 更新新装置下管道的监管码
List<List<IdxBizJgOtherInfo>> otherInfoBatches = new ArrayList<>();
for (int i = 0; i < otherInfos.size(); i += ONE_BATCH_SIZE) {
......@@ -2664,7 +2698,6 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
registrationManage.setCreateDate(new Date());
registrationManage.setRegistrationType("0");
registrationManage.setRegType(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
registrationManage.setCertificateStatus(CertificateStatusEnum.YIDENGJI.getName());
registrationManage.setApplyNo(registration.getApplyNo());
registrationManage.setManageType("unit");
registrationManage.setEquList(idxBizJgProjectContraption.getEquListName());
......@@ -2683,9 +2716,13 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
LambdaQueryWrapper<JgUseRegistrationManage> useRegistrationManageWrapper = new LambdaQueryWrapper<>();
useRegistrationManageWrapper.eq(JgUseRegistrationManage::getUseRegistrationCode, useRegistrationCode)
.isNotNull(JgUseRegistrationManage::getUseRegistrationCode)
.eq(JgUseRegistrationManage::getCertificateStatus, CertificateStatusEnum.YIDENGJI.getName())
.eq(BaseEntity::getIsDelete, false);
registrationManage = useRegistrationManageService.getBaseMapper().selectOne(useRegistrationManageWrapper);
if (ValidationUtil.isEmpty(registrationManage)) {
String errorMsg = "使用登记证【" + useRegistrationCode + "】不存在";
log.error(errorMsg);
throw new BadRequest(errorMsg);
}
registrationManage.setVersion(registrationManage.getVersion() + 1);
}
//修改使用登记证管理使用单位地址、使用单位代码、接收机构、接收机构公司代码、办理日期、使用单位地址
......@@ -2695,6 +2732,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
registrationManage.setReceiveCompanyCode(registration.getReceiveOrgCode());
registrationManage.setAuditPassDate(registration.getAuditPassDate());
registrationManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
registrationManage.setCertificateStatus(CertificateStatusEnum.YIDENGJI.getName());
if (!ObjectUtils.isEmpty(registration.getNewUseUnitCreditCode())) {//回填新单位地址
TzBaseEnterpriseInfo useCodeResult = tzBaseEnterpriseInfoMapper.selectOne(new QueryWrapper<TzBaseEnterpriseInfo>().eq("use_unit_code", registration.getNewUseUnitCreditCode()));
if (useCodeResult != null) {
......@@ -2749,6 +2787,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
if (Boolean.TRUE.equals(isNewUseOrgCode)) {
dto.setUSE_ORG_CODE(useOrgCode);
}
dto.setEQU_STATE(EquipmentEnum.ZAIYONG.getCode());
});
esEquipmentCategory.saveAll(jgAllEsDtos);
......@@ -2760,6 +2799,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
if (Boolean.TRUE.equals(isNewUseOrgCode)) {
dto.setUSE_ORG_CODE(useOrgCode);
}
dto.setEQU_STATE(EquipmentEnum.ZAIYONG.getCode());
});
esEquipmentDao.saveAll(newEsDtos);
}
......
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