Commit 8c174122 authored by tianbo's avatar tianbo

refactor(jg):重构设备登记信息更新逻辑

- 提取公共方法 updateUseRegistrationInfo 统一处理使用登记信息更新 - 在设备安全问题刷新处理器中添加设备不存在日志记录 - 完善安全问题追踪服务中的 Other 表和 ES 状态更新逻辑
parent 140d8e91
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.newEquip; package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.newEquip;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.common.api.converter.CommonCustomConverter;
import com.yeejoin.amos.boot.module.common.biz.event.CommonPublisher; import com.yeejoin.amos.boot.module.common.biz.event.CommonPublisher;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta; import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.dto.PipelineChangeItemDto; import com.yeejoin.amos.boot.module.jg.api.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent; import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.DefaultBizDataChangeHandler; import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.DefaultBizDataChangeHandler;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.useRegister.UseRegisterUpdateService; import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.useRegister.UseRegisterUpdateService;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.text.SimpleDateFormat; import java.util.Collections;
import java.util.*; import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* 新增设备编辑处理器 * 新增设备编辑处理器
...@@ -38,42 +35,7 @@ public class NewEquipDataChangeHandler extends DefaultBizDataChangeHandler<BaseB ...@@ -38,42 +35,7 @@ public class NewEquipDataChangeHandler extends DefaultBizDataChangeHandler<BaseB
@Override @Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) { public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
Map<String, Object> useRegistrationMap = useRegisterUpdateService.getJgUseRegistrationService().getJgUseRegistrationMapper().getUseRegistrationDetail(bizId); useRegisterUpdateService.updateUseRegistrationInfo(bizId, allChangeColumns);
JgUseRegistration jgUseRegistration = useRegisterUpdateService.getJgUseRegistrationService().getById(useRegistrationMap.get("UseRegistratSequenceNbr").toString());
JgRegistrationHistory jgRegistrationHistory = useRegisterUpdateService.getJgRegistrationHistoryService().getDteailByRecord(bizId, useRegistrationMap.get("UseRegistratSequenceNbr").toString());
allChangeColumns.forEach(meta -> {
if (!ValidationUtil.isEmpty(jgUseRegistration)) {
if ("receiveCompanyCode".equals(meta.getColumnKey())) {
String receiveCompanyCode = meta.getColumnNewValue();
if (receiveCompanyCode != null) {
jgUseRegistration.setReceiveCompanyCode(receiveCompanyCode);
jgUseRegistration.setReceiveOrgName(CommonCustomConverter.ReceiveCompanyCodeConverter.getNameByCode(receiveCompanyCode));
}
}
if ("oRegDate".equals(meta.getColumnKey())) {
String regDateStr = meta.getColumnNewValue();
if (regDateStr != null) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date regDate = sdf.parse(regDateStr);
jgUseRegistration.setRegDate(regDate);
} catch (Exception e) {
// 如果日期格式不正确,则设置为null
jgUseRegistration.setRegDate(null);
}
}
}
useRegisterUpdateService.getJgUseRegistrationService().updateById(jgUseRegistration);
}
if (!ValidationUtil.isEmpty(jgRegistrationHistory)) {
if ("oRegDate".equals(meta.getColumnKey())) {
JSONObject parsedChangeData = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
parsedChangeData.put("oRegDate", meta.getColumnNewValue());
jgRegistrationHistory.setChangeData(parsedChangeData.toJSONString());
}
useRegisterUpdateService.getJgRegistrationHistoryService().updateById(jgRegistrationHistory);
}
});
return Collections.emptyList(); return Collections.emptyList();
} }
......
...@@ -103,6 +103,7 @@ public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<Ba ...@@ -103,6 +103,7 @@ public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<Ba
List<FieldChangeMeta> bizEditColumns = new ArrayList<>(); List<FieldChangeMeta> bizEditColumns = new ArrayList<>();
// 流程中时-更新单据-业务冗余的字段、eq表、管道状态,记录本次新增、编辑的管道record集合 // 流程中时-更新单据-业务冗余的字段、eq表、管道状态,记录本次新增、编辑的管道record集合
useRegisterUpdateService.updateBizInfo(allChangeColumns, bizId, applyNo, model, pipelineChangeItemMap); useRegisterUpdateService.updateBizInfo(allChangeColumns, bizId, applyNo, model, pipelineChangeItemMap);
useRegisterUpdateService.updateUseRegistrationInfo(bizId, allChangeColumns);
return bizEditColumns; return bizEditColumns;
} }
......
...@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.converter.CommonCustomConverter;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta; import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.dto.PipelineChangeItemDto; import com.yeejoin.amos.boot.module.jg.api.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration; import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq; import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.biz.edit.constant.EditConstant; import com.yeejoin.amos.boot.module.jg.biz.edit.constant.EditConstant;
...@@ -25,7 +27,9 @@ import lombok.extern.slf4j.Slf4j; ...@@ -25,7 +27,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.text.SimpleDateFormat;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -95,6 +99,51 @@ public class UseRegisterUpdateService { ...@@ -95,6 +99,51 @@ public class UseRegisterUpdateService {
} }
} }
/**
* 更新使用登记单据中的登记机关及对应单据his表信息
*
*/
public void updateUseRegistrationInfo(String bizId, List<FieldChangeMeta> allChangeColumns) {
Map<String, Object> useRegistrationMap = jgUseRegistrationService.getJgUseRegistrationMapper().getUseRegistrationDetail(bizId);
JgUseRegistration jgUseRegistration = jgUseRegistrationService.getById(useRegistrationMap.get("UseRegistratSequenceNbr").toString());
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getDteailByRecord(bizId, useRegistrationMap.get("UseRegistratSequenceNbr").toString());
allChangeColumns.forEach(meta -> {
if (!ValidationUtil.isEmpty(jgUseRegistration)) {
// 更新接收机构
if ("receiveCompanyCode".equals(meta.getColumnKey())) {
String receiveCompanyCode = meta.getColumnNewValue();
if (receiveCompanyCode != null) {
jgUseRegistration.setReceiveCompanyCode(receiveCompanyCode);
jgUseRegistration.setReceiveOrgName(CommonCustomConverter.ReceiveCompanyCodeConverter.getNameByCode(receiveCompanyCode));
}
}
// 更新首次登记日期
if ("oRegDate".equals(meta.getColumnKey())) {
String regDateStr = meta.getColumnNewValue();
if (regDateStr != null) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date regDate = sdf.parse(regDateStr);
jgUseRegistration.setRegDate(regDate);
} catch (Exception e) {
// 如果日期格式不正确,则设置为null
jgUseRegistration.setRegDate(null);
}
}
}
jgUseRegistrationService.updateById(jgUseRegistration);
}
// 更新历史表json数据
if (!ValidationUtil.isEmpty(jgRegistrationHistory)) {
if ("oRegDate".equals(meta.getColumnKey())) {
JSONObject parsedChangeData = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
parsedChangeData.put("oRegDate", meta.getColumnNewValue());
jgRegistrationHistory.setChangeData(parsedChangeData.toJSONString());
}
jgRegistrationHistoryService.updateById(jgRegistrationHistory);
}
});
}
private List<JgUseRegistrationEq> buildPipelineEqs(Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) { private List<JgUseRegistrationEq> buildPipelineEqs(Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
List<PipelineChangeItemDto> newPipelines = pipelineChangeItemMap.get(EditConstant.NEW_PIPELINES); List<PipelineChangeItemDto> newPipelines = pipelineChangeItemMap.get(EditConstant.NEW_PIPELINES);
......
...@@ -814,11 +814,12 @@ public class CommonEquipDataProcessService { ...@@ -814,11 +814,12 @@ public class CommonEquipDataProcessService {
result.put("record", useInfo.getRecord()); result.put("record", useInfo.getRecord());
// 设备来源,前端无法判断,故后端进行判断,分为新设备(new)、历史有证设备(his)、历史无证设备(black) // 设备来源,前端无法判断,故后端进行判断,分为新设备(new)、历史有证设备(his)、历史无证设备(black)
result.put("dataSourceClassify", this.genDataSource(useInfo.getDataSource())); result.put("dataSourceClassify", this.genDataSource(useInfo.getDataSource()));
// 获取已登记设备的等级证对应接收机构 // 获取已登记设备的登记证对应接收机构
if (registerInfo.getUseOrgCode() != null) { if (registerInfo.getUseOrgCode() != null) {
result.put("receiveCompanyCode", jgUseRegistrationManageService.lambdaQuery() JgUseRegistrationManage jgUseRegistrationManage = jgUseRegistrationManageService.lambdaQuery()
.eq(JgUseRegistrationManage::getUseRegistrationCode, registerInfo.getUseOrgCode()) .eq(JgUseRegistrationManage::getUseRegistrationCode, registerInfo.getUseOrgCode())
.select(JgUseRegistrationManage::getReceiveCompanyCode).one().getReceiveCompanyCode()); .select(JgUseRegistrationManage::getSequenceNbr, JgUseRegistrationManage::getReceiveCompanyCode).one();
result.put("receiveCompanyCode", jgUseRegistrationManage.getReceiveCompanyCode());
} }
// 返回是否做过除历史登记外的其他业务 // 返回是否做过除历史登记外的其他业务
result.put("inOtherBusiness", !jgUseRegistrationService.getJgUseRegistrationMapper().selectListForSelfDiscard(Lists.newArrayList(record)).isEmpty()); result.put("inOtherBusiness", !jgUseRegistrationService.getJgUseRegistrationMapper().selectListForSelfDiscard(Lists.newArrayList(record)).isEmpty());
......
...@@ -44,6 +44,7 @@ public class EquipmentSafetyProblemRefreshHandler implements IDataRefreshHandler ...@@ -44,6 +44,7 @@ public class EquipmentSafetyProblemRefreshHandler implements IDataRefreshHandler
case UPDATE: case UPDATE:
Map<String, Object> detail = useInfoService.getBaseMapper().queryDetail(record); Map<String, Object> detail = useInfoService.getBaseMapper().queryDetail(record);
if(detail == null) { if(detail == null) {
log.error("设备不存在,设备id:{}", record);
return; return;
} }
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.queryNewestDetailByRecord(record); IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.queryNewestDetailByRecord(record);
......
...@@ -282,10 +282,11 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr ...@@ -282,10 +282,11 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
public void updateBySourceId(String record, Map<String, Object> detail, public void updateBySourceId(String record, Map<String, Object> detail,
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo, IdxBizJgInspectionDetectionInfo inspectionDetectionInfo,
IdxBizJgMaintenanceRecordInfo lastMaintenanceRecordInfo) { IdxBizJgMaintenanceRecordInfo lastMaintenanceRecordInfo) {
List<SafetyProblemTracing> safetyProblemTracings = this.baseMapper.selectList(new LambdaQueryWrapper<SafetyProblemTracing>() LambdaQueryWrapper<SafetyProblemTracing> queryWrapper = new LambdaQueryWrapper<SafetyProblemTracing>()
.eq(SafetyProblemTracing::getSourceId, record) .eq(SafetyProblemTracing::getSourceId, record)
.eq(SafetyProblemTracing::getIsDelete, false) .eq(SafetyProblemTracing::getIsDelete, false)
.eq(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.UNHANDLED.getCode())); .eq(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.UNHANDLED.getCode());
List<SafetyProblemTracing> safetyProblemTracings = this.baseMapper.selectList(queryWrapper);
if (!ValidationUtil.isEmpty(safetyProblemTracings)) { if (!ValidationUtil.isEmpty(safetyProblemTracings)) {
safetyProblemTracings.forEach(item -> { safetyProblemTracings.forEach(item -> {
// 一个设备某类未处理的问题只有一个,所以直接更新某个类型问题 // 一个设备某类未处理的问题只有一个,所以直接更新某个类型问题
...@@ -304,6 +305,14 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr ...@@ -304,6 +305,14 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
}); });
this.saveOrUpdateBatch(safetyProblemTracings); this.saveOrUpdateBatch(safetyProblemTracings);
} }
List<SafetyProblemTracing> newSafetyProblemTracings = this.baseMapper.selectList(queryWrapper);
// 如果设备存在并且没有新的问题,则更新Other表和ES状态
if (!ValidationUtil.isEmpty(detail) && ValidationUtil.isEmpty(newSafetyProblemTracings)) {
// 获取设备问题源记录
Set<String> records = newSafetyProblemTracings.stream().map(SafetyProblemTracing::getSourceId).collect(Collectors.toSet());
// 更新Other表和ES状态
updateOtherTableAndES(records);
}
} }
/** /**
...@@ -311,12 +320,16 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr ...@@ -311,12 +320,16 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
*/ */
public void updateOtherTableAndES(Set<String> records) { public void updateOtherTableAndES(Set<String> records) {
// 更新Other表 // 更新Other表
idxBizJgOtherInfoService.lambdaUpdate() try {
.set(IdxBizJgOtherInfo::getStatus, SafetyProblemStatusEnum.HANDLED.getCode()) idxBizJgOtherInfoService.lambdaUpdate()
.in(IdxBizJgOtherInfo::getRecord, records) .set(IdxBizJgOtherInfo::getStatus, SafetyProblemStatusEnum.HANDLED.getCode())
.update(); .in(IdxBizJgOtherInfo::getRecord, records)
.update();
} catch (Exception e) {
log.error("Other表更新失败,设备record:{},错误原因:{}", records, e.getMessage(), e);
}
// 更新ES状态(添加异常处理) // 更新ES状态
try { try {
Iterable<ESEquipmentCategoryDto> esEquipmentIter = esEquipmentCategory.findAllById(records); Iterable<ESEquipmentCategoryDto> esEquipmentIter = esEquipmentCategory.findAllById(records);
esEquipmentIter.forEach(dto -> esEquipmentIter.forEach(dto ->
......
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