Commit 1beaf2dc authored by tianbo's avatar tianbo

feat(jg):优化设备数据处理与ES更新逻辑

- 调整公司代码查找逻辑,确保正确匹配;增加名称为空时的处理,避免空指针异常 - 为JgUseRegistrationService添加@Lazy注解,解决循环依赖 - 修改类型处理器中的公司编码转换逻辑 - 更新历史数据时保留并传递监管代码 - 引入旧注册信息以支持更准确的历史数据更新 - 在更新登记管理信息时使用正确的使用登记证号 - 新增other info ES数据更新策略实现;支持根据record更新ESEquipmentCategoryDto中的CODE9633字段 - 处理使用单位代码变更时的相关数据同步问题
parent c2e10f87
......@@ -8,6 +8,7 @@ import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
......@@ -78,7 +79,7 @@ public class CommonCustomConverter {
@SuppressWarnings("unchecked")
private static LinkedHashMap<String, Object> findCompanyByCode(List<LinkedHashMap<String, Object>> tree, String companyCode) {
for (LinkedHashMap<String, Object> node : tree) {
if (companyCode.equals(node.get("companyCode"))) {
if (node.get("companyCode").equals(companyCode)) {
return node;
}
if (node.containsKey("children") && node.get("children") instanceof List) {
......@@ -152,6 +153,9 @@ public class CommonCustomConverter {
}
public static String getCompanyCodeByName(String name) {
if (ValidationUtil.isEmpty(name)) {
return "";
}
LinkedHashMap<String, Object> company = findAllCompaniesByPartialPath(name);
if (company == null) {
return "";
......
package com.yeejoin.amos.boot.module.jg.biz.edit.esUpdate.service.impl;
import com.yeejoin.amos.boot.module.jg.biz.edit.esUpdate.strategy.EsUpdateStrategy;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.EquipChangeDataUpdateServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgOtherInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class OtherInfoEsUpdateStrategy implements EsUpdateStrategy<IdxBizJgOtherInfo> {
private final EquipChangeDataUpdateServiceImpl equipChangeDataUpdateServiceImpl;
@Override
public Class<IdxBizJgOtherInfo> getSupportType() {
return IdxBizJgOtherInfo.class;
}
@Override
public void updateEsData(String record, IdxBizJgOtherInfo data) {
equipChangeDataUpdateServiceImpl.updateOtherInfoEsData(record, data);
}
}
......@@ -123,6 +123,7 @@ public class CommonEquipDataProcessService {
private final RestHighLevelClient restHighLevelClient;
@Lazy
private final JgUseRegistrationServiceImpl jgUseRegistrationService;
private final CommonServiceImpl commonService;
......
......@@ -328,6 +328,16 @@ public class EquipChangeDataUpdateServiceImpl {
}
}
public void updateOtherInfoEsData(String record, IdxBizJgOtherInfo equipOtherInfoChangeDataDto) {
// es 数据更新
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(record);
if (optional.isPresent()) {
ESEquipmentCategoryDto esEquipmentCategoryDto = optional.get();
esEquipmentCategoryDto.setCODE96333(equipOtherInfoChangeDataDto.getCode96333());
esEquipmentCategory.save(esEquipmentCategoryDto);
}
}
private void updateUseInfoEsData(String record, EquipUseInfoChangeDataDto equipUseInfoChangeDataDto) {
// es 数据更新
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(record);
......
......@@ -11,6 +11,7 @@ import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.common.BizCommonConstant;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationManage;
import com.yeejoin.amos.boot.module.jg.biz.edit.esUpdate.service.EsUpdateService;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.DefaultBizDataChangeHandler;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy.IBizDataChangeHandleStrategy;
......@@ -73,6 +74,13 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
CommonEquipDataProcessService.castMap2Bean(changeJson, registerInfoNew);
registerInfoNew.setSequenceNbr(registerInfoOld.getSequenceNbr());
if (registerInfoOld.getUseOrgCode() != null) {
JgUseRegistrationManage jgUseRegistrationManage = commonEquipDataProcessService.getJgUseRegistrationManageService().lambdaQuery()
.eq(JgUseRegistrationManage::getUseRegistrationCode, registerInfoOld.getUseOrgCode())
.select(JgUseRegistrationManage::getSequenceNbr, JgUseRegistrationManage::getReceiveCompanyCode).one();
useInfoOld.setReceiveCompanyCode(jgUseRegistrationManage.getReceiveCompanyCode());
}
// 历史有证设备检验(台套类设备+气瓶)
beforeCheckForUseOrgCode(useInfoOld, registerInfoNew);
......
......@@ -11,6 +11,6 @@ import org.springframework.stereotype.Component;
public class CompanyCodeTypeHandler implements TypeHandler<String> {
@Override
public String handle(String value) {
return CommonCustomConverter.CompanyCodeConverter.getCompanyCodeByName(value);
return CommonCustomConverter.CompanyCodeConverter.getNameByCode(value);
}
}
......@@ -602,6 +602,7 @@ public class DataDockServiceImpl {
if (!ValidationUtil.isEmpty(otherInfo)) {
if (!ValidationUtil.isEmpty(oldOtherInfo)) {
otherInfo.setSequenceNbr(oldOtherInfo.getSequenceNbr());
otherInfo.setSupervisoryCode(oldOtherInfo.getSupervisoryCode());
}
otherInfo.setRecord(record);
otherInfo.setClaimStatus("已认领");
......@@ -2660,6 +2661,7 @@ public class DataDockServiceImpl {
return inUseError;
}
IdxBizJgUseInfo oldUseInfo = idxBizJgUseInfoService.getOne(new QueryWrapper<IdxBizJgUseInfo>().eq("record", record));
IdxBizJgRegisterInfo oldRegisterInfo = idxBizJgRegisterInfoService.getOne(new QueryWrapper<IdxBizJgRegisterInfo>().eq("record", record));
saveUseInfo(equ, record, dataSource, remark, null);
saveDesignInfo(equ, record);
saveFactoryInfo(equ, record);
......@@ -2679,7 +2681,7 @@ public class DataDockServiceImpl {
}
// oldUseInfo不为空表示是平台已有设备,已有历史设备则更新历史单据信息。
if (!ValidationUtil.isEmpty(oldUseInfo)) {
updateHistoryInfo(equ, registerInfo, otherInfo);
updateHistoryInfo(equ, registerInfo, otherInfo, oldRegisterInfo);
}
} else if (!businessId.isEmpty()) {
this.saveResumeInfo(equ);
......@@ -2705,14 +2707,16 @@ public class DataDockServiceImpl {
}
}
private void updateHistoryInfo(Map<String, Object> equ, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) {
private void updateHistoryInfo(Map<String, Object> equ, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo, IdxBizJgRegisterInfo oldRegisterInfo) {
String oldUseRegistrationCode = oldRegisterInfo.getUseOrgCode();
// 更新历史登记单数据、登记单对应历史表数据
// 安全管理员
if (equ.containsKey("safetyManager")) {
equ.put("safetyManagerName", equ.get("safetyManager"));
}
equ.put("equCode", registerInfo.getEquCode());
JgUseRegistration jgUseRegistration = jgUseRegistrationServiceImpl.lambdaQuery().eq(JgUseRegistration::getUseRegistrationCode, equ.get("useOrgCode")).eq(JgUseRegistration::getIsDelete, Boolean.FALSE).one();
// 使用旧使用登记证号查询
JgUseRegistration jgUseRegistration = jgUseRegistrationServiceImpl.lambdaQuery().eq(JgUseRegistration::getUseRegistrationCode, oldUseRegistrationCode).eq(JgUseRegistration::getIsDelete, Boolean.FALSE).one();
if (!ObjectUtils.isEmpty(equ.get("inspectOrgCode"))) {
jgUseRegistration.setInspectUnitCreditCode(equ.get("inspectOrgCode").toString());
}
......@@ -2724,6 +2728,7 @@ public class DataDockServiceImpl {
.map(key -> Objects.toString(equ.get(key), ""))
.collect(Collectors.joining())
);
jgUseRegistration.setUseRegistrationCode(equ.get("useOrgCode").toString());
jgUseRegistration.setRegDate(DateUtil.parse((String) equ.get("oRegDate"), DatePattern.NORM_DATE_PATTERN));
jgUseRegistration.setSupervisionOrgCode(equ.get("orgBranchCode").toString());
jgUseRegistration.setReceiveCompanyCode(equ.get("oRegUnit").toString());
......@@ -2732,13 +2737,13 @@ public class DataDockServiceImpl {
equ.put("receiveOrgName", receiveCompanyName);
jgUseRegistrationServiceImpl.saveOrUpdate(jgUseRegistration);
this.updateEsData2(equ, otherInfo);
this.updateRegistrationManagementInfo(equ, jgUseRegistration.getUseRegistrationCode());
this.updateRegistrationManagementInfo(equ, oldUseRegistrationCode);
this.updateHistory(equ, equ.get("record").toString(), String.valueOf(jgUseRegistration.getSequenceNbr()), jgUseRegistration.getSupervisoryCode());
}
private void updateRegistrationManagementInfo(Map<String, Object> equ, String supervisoryCode) {
private void updateRegistrationManagementInfo(Map<String, Object> equ, String useRegistrationCode) {
JgUseRegistrationManage jgUseRegistrationManagement = jgUseRegistrationManageService.lambdaQuery().
eq(JgUseRegistrationManage::getUseRegistrationCode, supervisoryCode).
eq(JgUseRegistrationManage::getUseRegistrationCode, useRegistrationCode).
eq(JgUseRegistrationManage::getIsDelete, Boolean.FALSE).one();
if (!ValidationUtil.isEmpty(jgUseRegistrationManagement)) {
// 更新证表使用信息
......@@ -2749,11 +2754,12 @@ public class DataDockServiceImpl {
jgUseRegistrationManagement.setSuperviseOrgCode(equ.get("orgBranchCode").toString());
jgUseRegistrationManagement.setSuperviseOrgName(equ.get("orgBranchCode").toString().split("_", 2)[1]);
jgUseRegistrationManagement.setIsDoBusiness("1");
jgUseRegistrationManagement.setUseRegistrationCode(equ.get("useOrgCode").toString());
jgUseRegistrationManageService.saveOrUpdate(jgUseRegistrationManagement);
// 更新证表记录信息
JgCertificateChangeRecord jgUseRegistrationRecord = certificateChangeRecordService.lambdaQuery().
eq(JgCertificateChangeRecord::getUseRegistrationCode, supervisoryCode).
eq(JgCertificateChangeRecord::getUseRegistrationCode, useRegistrationCode).
eq(JgCertificateChangeRecord::getRegType, "使用登记").
eq(JgCertificateChangeRecord::getIsDelete, Boolean.FALSE).one();
if (!ValidationUtil.isEmpty(jgUseRegistrationRecord)) {
......@@ -2761,6 +2767,7 @@ public class DataDockServiceImpl {
jgUseRegistrationRecord.setReceiveCompanyCode(equ.get("oRegUnit").toString());
jgUseRegistrationRecord.setUseUnitName(equ.get("useUnitName").toString());
jgUseRegistrationRecord.setUseUnitCreditCode(equ.get("useUnitCode").toString());
jgUseRegistrationRecord.setUseRegistrationCode(equ.get("useOrgCode").toString());
certificateChangeRecordService.saveOrUpdate(jgUseRegistrationRecord);
}
......@@ -3111,6 +3118,7 @@ public class DataDockServiceImpl {
param.put("EQU_STATE", 1);
param.put("IS_INTO_MANAGEMENT", true);
param.put("EQU_CODE", dataMap.get("equCode"));
param.put("USE_ORG_CODE", dataMap.get("useOrgCode"));
objMap.put((String) dataMap.get("record"), param);
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
}
......
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