Commit 721e7a64 authored by suhuiguang's avatar suhuiguang

refactor(大编辑):代码合并错误处理

parent dffd0d19
......@@ -70,6 +70,7 @@
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.10.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
......
package com.yeejoin.amos.boot.module.jg.biz.event;
package com.yeejoin.amos.boot.module.jg.biz.edit.event;
import com.yeejoin.amos.boot.module.jg.api.dto.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.EventPublisherMapping;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
import org.typroject.tyboot.core.foundation.context.RequestContextModel;
......@@ -12,6 +13,7 @@ import java.util.List;
* @author Administrator
*/
@Getter
@EventPublisherMapping
public class BaseBizDataChangeEvent extends ApplicationEvent {
private List<ChangeDataDto> data;
......
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
package com.yeejoin.amos.boot.module.jg.biz.edit.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
......@@ -6,10 +6,9 @@ import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterDataChangeHandleImpl;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -23,7 +22,7 @@ import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<BaseBizDataChangeEvent> {
private final JgInstallationNoticeServiceImpl jgInstallationNoticeService;
......@@ -31,7 +30,7 @@ public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<C
@Override
@Async
public void handle(ChangeDataEvent event) {
public void handle(BaseBizDataChangeEvent event) {
log.info("开始更新安装告知json数据:{}", event);
// 查询关联的单据-未删除且已完成状态
Set<Long> installationNoticeIds = this.getRelationInstallNoticeList(event);
......@@ -50,7 +49,7 @@ public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<C
log.info("更新安装告知的单据数量:{}", installationNoticeIds.size());
}
private void log2es(JSONObject beforeData, JSONObject afterData, JgInstallationNotice installationNotice, ChangeDataEvent event) {
private void log2es(JSONObject beforeData, JSONObject afterData, JgInstallationNotice installationNotice, BaseBizDataChangeEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
......@@ -75,7 +74,7 @@ public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<C
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
private Set<Long> getRelationInstallNoticeList(ChangeDataEvent event) {
private Set<Long> getRelationInstallNoticeList(BaseBizDataChangeEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
// 查询关联的单据-已完成时更新其json
......@@ -83,8 +82,9 @@ public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<C
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
public Boolean supports(BaseBizDataChangeEvent event) {
// event.getBizRelationData().getBizType()
return true;
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
package com.yeejoin.amos.boot.module.jg.biz.edit.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
......@@ -7,10 +7,9 @@ import com.alibaba.fastjson.JSONArray;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintenanceContract;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgMaintenanceContractServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterDataChangeHandleImpl;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -24,7 +23,7 @@ import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class MaintenanceContractChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
public class MaintenanceContractChangeEventHandler implements IChangeEventBizHandler<BaseBizDataChangeEvent> {
private final JgMaintenanceContractServiceImpl jgMaintenanceContractService;
......@@ -33,7 +32,7 @@ public class MaintenanceContractChangeEventHandler implements IChangeEventBizHan
@Override
@Async
public void handle(ChangeDataEvent event) {
public void handle(BaseBizDataChangeEvent event) {
log.info("开始更新维保备案json数据:{}", event);
// 查询关联的单据-未删除且已完成状态
Set<Long> maintenanceContractList = this.getRelationMaintenanceContractList(event);
......@@ -52,7 +51,7 @@ public class MaintenanceContractChangeEventHandler implements IChangeEventBizHan
log.info("更新维保备案的单据数量:{}", maintenanceContractList.size());
}
private Set<Long> getRelationMaintenanceContractList(ChangeDataEvent event) {
private Set<Long> getRelationMaintenanceContractList(BaseBizDataChangeEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
// 查询关联的单据-已完成时更新其json
......@@ -60,11 +59,12 @@ public class MaintenanceContractChangeEventHandler implements IChangeEventBizHan
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
public Boolean supports(BaseBizDataChangeEvent event) {
// event.getBizRelationData().getBizType()
return true;
}
private void log2es(JSON beforeData, JSON afterData, JgMaintenanceContract maintenanceContract, ChangeDataEvent event) {
private void log2es(JSON beforeData, JSON afterData, JgMaintenanceContract maintenanceContract, BaseBizDataChangeEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
......
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
package com.yeejoin.amos.boot.module.jg.biz.edit.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
......@@ -6,10 +6,9 @@ import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterDataChangeHandleImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterUpdateService;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.RequiredArgsConstructor;
......@@ -24,7 +23,7 @@ import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<BaseBizDataChangeEvent> {
private final JgUseRegistrationServiceImpl jgUseRegistrationService;
......@@ -34,7 +33,7 @@ public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<Cha
@Override
@Async
public void handle(ChangeDataEvent event) {
public void handle(BaseBizDataChangeEvent event) {
log.info("开始更新使用登记json数据:{}", event);
// 查询关联的单据-未删除且已完成状态-不包括原始使用登记的修改
Set<Long> useRegistrationIds = this.getRelationUseRegisterList(event);
......@@ -53,7 +52,7 @@ public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<Cha
log.info("更新使用登记的单据数量:{}", useRegistrationIds.size());
}
private void log2es(JSONObject beforeData, JSONObject afterData, JgUseRegistration jgUseRegistration, ChangeDataEvent event) {
private void log2es(JSONObject beforeData, JSONObject afterData, JgUseRegistration jgUseRegistration, BaseBizDataChangeEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
......@@ -78,7 +77,7 @@ public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<Cha
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
private Set<Long> getRelationUseRegisterList(ChangeDataEvent event) {
private Set<Long> getRelationUseRegisterList(BaseBizDataChangeEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
String applyNo = event.getBizRelationData().getBizId();
......@@ -87,7 +86,8 @@ public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<Cha
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
public Boolean supports(BaseBizDataChangeEvent event) {
// event.getBizRelationData().getBizType()
return true;
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.listener;
package com.yeejoin.amos.boot.module.jg.biz.edit.listener;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.handler.IChangeEventBizHandler;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.handler.IChangeEventBizHandler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
......@@ -32,12 +32,12 @@ public class RelationBizApplyUpdateListener {
private final List<IChangeEventBizHandler<ApplicationEvent>> changeUpdateHandlers;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>();
private final BlockingQueue<BaseBizDataChangeEvent> queue = new LinkedBlockingQueue<>();
@TransactionalEventListener(value = ChangeDataEvent.class)
@TransactionalEventListener(value = BaseBizDataChangeEvent.class)
@Async
public void handleTransactionalEvent(ChangeDataEvent event) {
public void handleTransactionalEvent(BaseBizDataChangeEvent event) {
log.info("收到用户变更业务数据消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
......@@ -49,7 +49,7 @@ public class RelationBizApplyUpdateListener {
executorService.execute(() -> {
while (true) {
try {
ChangeDataEvent event = queue.take();
BaseBizDataChangeEvent event = queue.take();
processEvent(event);
} catch (Exception e) {
log.error(e.getMessage(), e);
......@@ -59,7 +59,7 @@ public class RelationBizApplyUpdateListener {
});
}
private void processEvent(ChangeDataEvent event) {
private void processEvent(BaseBizDataChangeEvent event) {
changeUpdateHandlers.stream().filter(h -> h.supports(event)).forEach(h -> {
log.info("处理器:{}", JSONObject.toJSONString(h));
h.handle(event);
......
......@@ -3,12 +3,15 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.jg.api.dto.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationEqDto;
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.biz.edit.core.RouterEventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterUpdateService;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
......@@ -16,6 +19,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<BaseBizDataChangeEvent> {
......@@ -89,4 +93,14 @@ public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<Ba
return new BaseBizDataChangeEvent(this, applyNo, RequestContext.cloneRequestContext());
}
private void publishEvent2Logger(String applyNo, List<ChangeDataDto> allChangeColumns) {
List<JgUseRegistrationEqDto> eqDtos = useRegisterUpdateService.useRegistrationEqService.getBaseMapper().queryEqListByApplyNo(applyNo);
BizRelationDataDto bizRelationDataDto = new BizRelationDataDto();
bizRelationDataDto.setBizId(applyNo);
bizRelationDataDto.setBizType(canHandleBizType());
bizRelationDataDto.setRecords(eqDtos.stream().map(JgUseRegistrationEqDto::getEquId).collect(Collectors.toSet()));
// 异步记录日志
publisher.publish(new BaseBizDataChangeEvent(this, bizRelationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
}
......@@ -8,13 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgProjectContraptionServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgRegistrationHistoryServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.InformationManageTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import com.yeejoin.amos.feign.systemctl.Systemctl;
......@@ -52,6 +47,10 @@ public class UseRegisterUpdateService {
// 更新数据
useRegistrationService.updateHistory(hisData, null, jgUseRegistration.getSequenceNbr().toString(), jgUseRegistration.getSupervisoryCode());
}
public CommonServiceImpl getCommonService() {
return commonService;
}
public JSONObject buildLastDetailData(JgUseRegistration jgUseRegistration) {
JgRegistrationHistory jgRegistrationHistory = getJgRegistrationHistory(jgUseRegistration);
......
......@@ -109,7 +109,7 @@ public class CommonEquipDataProcessService {
}
void buildChangeFields(String record, EquipDesignChangeDataDto equipDesignChangeDataDto, EquipFactoryChangeDataDto equipFactoryChangeDataDto, EquipRegisterChangeDataDto registerChangeDataDto,EquipOtherInfoChangeDataDto otherInfoChangeDataDto, EquipUseInfoChangeDataDto useInfoChangeDataDto, List<ChangeDataDto> allChangeColumns) {
public void buildChangeFields(String record, EquipDesignChangeDataDto equipDesignChangeDataDto, EquipFactoryChangeDataDto equipFactoryChangeDataDto, EquipRegisterChangeDataDto registerChangeDataDto, EquipOtherInfoChangeDataDto otherInfoChangeDataDto, EquipUseInfoChangeDataDto useInfoChangeDataDto, List<ChangeDataDto> allChangeColumns) {
// 构造新对象行转列
List<ChangeDataDto> designInfoNew = this.buildDesignInfoNew(equipDesignChangeDataDto, record);
List<ChangeDataDto> factoryInfoNew = this.buildFactoryInfoNew(equipFactoryChangeDataDto, record);
......@@ -495,7 +495,7 @@ public class CommonEquipDataProcessService {
}
Map<String, Object> cast2UnderCase(Map<String, Object> re) {
public Map<String, Object> cast2UnderCase(Map<String, Object> re) {
// 由于历史遗留问题,和前端保存统一,要转成大写下滑线驼峰
Map<String, Object> result = new HashMap<>();
re.forEach((k, v) -> {
......@@ -504,7 +504,7 @@ public class CommonEquipDataProcessService {
return result;
}
void castJsonFields(Map<String, Object> re) {
public void castJsonFields(Map<String, Object> re) {
jsonFields.forEach(field -> {
if (re.containsKey(field) && re.get(field) instanceof String) {
re.put(field, JSON.parse((String) re.get(field)));
......@@ -512,7 +512,7 @@ public class CommonEquipDataProcessService {
});
}
EquipDesignChangeDataDto buildDesignInfo(String record) {
public EquipDesignChangeDataDto buildDesignInfo(String record) {
EquipDesignChangeDataDto changeDataDto = new EquipDesignChangeDataDto();
IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record));
BeanUtil.copyProperties(designInfo, changeDataDto);
......@@ -520,7 +520,7 @@ public class CommonEquipDataProcessService {
return changeDataDto;
}
EquipFactoryChangeDataDto buildFactoryInfo(String record) {
public EquipFactoryChangeDataDto buildFactoryInfo(String record) {
EquipFactoryChangeDataDto changeDataDto = new EquipFactoryChangeDataDto();
IdxBizJgFactoryInfo factoryInfo = jgFactoryInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>().eq(IdxBizJgFactoryInfo::getRecord, record));
BeanUtil.copyProperties(factoryInfo, changeDataDto);
......@@ -528,14 +528,14 @@ public class CommonEquipDataProcessService {
return changeDataDto;
}
EquipRegisterChangeDataDto buildRegisterInfo(String record) {
public EquipRegisterChangeDataDto buildRegisterInfo(String record) {
EquipRegisterChangeDataDto changeDataDto = new EquipRegisterChangeDataDto();
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().eq(IdxBizJgRegisterInfo::getRecord, record));
BeanUtil.copyProperties(registerInfo, changeDataDto);
return changeDataDto;
}
EquipUseInfoChangeDataDto buildUseInfo(String record) {
public EquipUseInfoChangeDataDto buildUseInfo(String record) {
EquipUseInfoChangeDataDto changeDataDto = new EquipUseInfoChangeDataDto();
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(record);
BeanUtil.copyProperties(useInfo, changeDataDto);
......
......@@ -3,7 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.CommonEquipDataProcessService;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
......@@ -22,6 +22,8 @@ public class SingleManageEquipEditHandleImpl {
private final EventPublisher publisher;
public static final String BIZ_TYPE = "singleManageEquipEdit";
public Map<String, ?> getDetail(String applyNo, String bizId) {
return this.getDetailByBizId(bizId);
}
......@@ -60,9 +62,9 @@ public class SingleManageEquipEditHandleImpl {
private void publishEvent2Logger(String record, List<ChangeDataDto> allChangeColumns) {
BizRelationDataDto relationDataDto = new BizRelationDataDto();
relationDataDto.setBizId(record);
relationDataDto.setBizType(canHandleBizType());
relationDataDto.setBizType(BIZ_TYPE);
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, relationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
publisher.publish(new BaseBizDataChangeEvent(this, relationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationEqDto;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.context.DataProcessStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class UseRegisterDataChangeHandleImpl implements IBizDataChangeHandleStrategy {
private final EventPublisher publisher;
private final UseRegisterUpdateService useRegisterUpdateService;
public UseRegisterDataChangeHandleImpl(EventPublisher publisher, UseRegisterUpdateService useRegisterUpdateService) {
this.publisher = publisher;
this.useRegisterUpdateService = useRegisterUpdateService;
}
@Override
public String canHandleBizType() {
return "useRegister";
}
/**
* 保存
*
* @param applyNo 单据编号
* @param model single, batch
* @param changeData 前端不支持分组-目前为平铺数据结构
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void doSave(String applyNo, ModelType model, Map<String, Object> changeData) {
// 选择是台套、还是单位办理的方式,进行分类数据的解析
IChangeDataProcessStrategy dataProcessor = DataProcessStrategyContext.getStrategy(model);
List<ChangeDataDto> allChangeColumns = dataProcessor.handle(changeData, applyNo);
if (!allChangeColumns.isEmpty()) {
// 更新历史的JSON的数据
this.updateHistoryJson(applyNo);
this.buildLogData(allChangeColumns);
// 异步记录日志
publishEvent2Logger(applyNo, allChangeColumns); }
}
private void updateHistoryJson(String applyNo) {
useRegisterUpdateService.updateHisData(applyNo);
}
private void buildLogData(List<ChangeDataDto> allChangeColumns) {
allChangeColumns.forEach(column -> {
column.setBizType("使用登记");
});
}
private void publishEvent2Logger(String applyNo, List<ChangeDataDto> allChangeColumns) {
List<JgUseRegistrationEqDto> eqDtos = useRegisterUpdateService.useRegistrationEqService.getBaseMapper().queryEqListByApplyNo(applyNo);
BizRelationDataDto bizRelationDataDto = new BizRelationDataDto();
bizRelationDataDto.setBizId(applyNo);
bizRelationDataDto.setBizType(canHandleBizType());
bizRelationDataDto.setRecords(eqDtos.stream().map(JgUseRegistrationEqDto::getEquId).collect(Collectors.toSet()));
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, bizRelationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
@Override
public Map<String, ?> getDetail(String applyNo, ModelType model, String bizId) {
IChangeDataProcessStrategy dataProcessor = DataProcessStrategyContext.getStrategy(model);
// 兼容:台套类打开变更详情(使用applyNo) 和 单位办理批量时选择单个设备打开详情(使用record)
return dataProcessor.getDetail(applyNo, bizId);
}
}
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