Commit b8c3737c authored by suhuiguang's avatar suhuiguang

1.编辑功能调整

parent d9d87814
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
@Data
public class BizRelationDataDto {
/**
* 业务唯一标识
*/
private String bizId;
/**
* 业务类型枚举
*/
private String bizType;
/**
* 业务表
*/
private String bizTable;
/**
* 说明
*/
private String changeReason;
/**
* 附件
*/
private String changeAttachment;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
*
*
* @author system_generator
* @date 2025-04-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="JgBizChangeLogDto", description="")
public class JgBizChangeLogDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "业务唯一标识")
private String bizId;
@ApiModelProperty(value = "业务类型")
private String bizType;
@ApiModelProperty(value = "业务表名")
private String bizTable;
@ApiModelProperty(value = "变更原因")
private String changeReason;
@ApiModelProperty(value = "变更附件")
private String changeAttachment;
}
package com.yeejoin.amos.boot.module.jg.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
*
*
* @author system_generator
* @date 2025-04-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tzs_jg_biz_change_log")
public class JgBizChangeLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 业务唯一标识
*/
@TableField("biz_id")
private String bizId;
/**
* 业务类型
*/
@TableField("biz_type")
private String bizType;
/**
* 业务表名
*/
@TableField("biz_table")
private String bizTable;
/**
* 变更原因
*/
@TableField("change_reason")
private String changeReason;
/**
* 变更附件
*/
@TableField("change_attachment")
private String changeAttachment;
}
package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* Mapper 接口
*
* @author system_generator
* @date 2025-04-14
*/
public interface JgBizChangeLogMapper extends BaseMapper<JgBizChangeLog> {
}
package com.yeejoin.amos.boot.module.jg.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2025-04-14
*/
public interface IJgBizChangeLogService {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jg.api.mapper.JgBizChangeLogMapper">
</mapper>
package com.yeejoin.amos.boot.module.jg.biz.event; package com.yeejoin.amos.boot.module.jg.biz.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.api.dto.ChangeDataDto;
import lombok.Getter; import lombok.Getter;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;
...@@ -17,15 +18,12 @@ public class ChangeDataEvent extends ApplicationEvent { ...@@ -17,15 +18,12 @@ public class ChangeDataEvent extends ApplicationEvent {
private final RequestContextModel requestContext; private final RequestContextModel requestContext;
/** private final BizRelationDataDto bizRelationData;
* Create a new {@code ApplicationEvent}.
* public ChangeDataEvent(Object source, BizRelationDataDto bizRelationData, List<ChangeDataDto> data, RequestContextModel requestContext) {
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public ChangeDataEvent(Object source, List<ChangeDataDto> data, RequestContextModel requestContext) {
super(source); super(source);
this.data = data; this.data = data;
this.bizRelationData = bizRelationData;
this.requestContext = requestContext; this.requestContext = requestContext;
} }
} }
package com.yeejoin.amos.boot.module.jg.biz.event.listener; package com.yeejoin.amos.boot.module.jg.biz.event.listener;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto; import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto; 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.biz.dao.ESDataChangeLogDao; import com.yeejoin.amos.boot.module.jg.biz.dao.ESDataChangeLogDao;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent; import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
...@@ -14,7 +18,9 @@ import org.typroject.tyboot.core.foundation.context.RequestContextModel; ...@@ -14,7 +18,9 @@ import org.typroject.tyboot.core.foundation.context.RequestContextModel;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
...@@ -26,19 +32,25 @@ import java.util.stream.Collectors; ...@@ -26,19 +32,25 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@Slf4j @Slf4j
@RequiredArgsConstructor
public class ChangeDataEventListener { public class ChangeDataEventListener {
private static final Map<String, String> bizTypeTableMap = new HashMap<>();
static {
bizTypeTableMap.put("useRegister", "tzs_jg_use_registration");
bizTypeTableMap.put("singleManageEquipEdit", "idx_biz_jg_use_info");
}
@Value("${changeData.deal.thread.number:1}") @Value("${changeData.deal.thread.number:1}")
private int threadNumber; private int threadNumber;
private final ESDataChangeLogDao esDataChangeLogDao; private final ESDataChangeLogDao esDataChangeLogDao;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>(); private final JgBizChangeLogServiceImpl bizChangeLogService;
public ChangeDataEventListener(ESDataChangeLogDao esDataChangeLogDao) { private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>();
this.esDataChangeLogDao = esDataChangeLogDao;
}
@EventListener(value = ChangeDataEvent.class) @EventListener(value = ChangeDataEvent.class)
public void handleTransactionalEvent(ChangeDataEvent event) { public void handleTransactionalEvent(ChangeDataEvent event) {
...@@ -68,6 +80,14 @@ public class ChangeDataEventListener { ...@@ -68,6 +80,14 @@ public class ChangeDataEventListener {
List<ChangeDataDto> changeDataDtos = event.getData(); List<ChangeDataDto> changeDataDtos = event.getData();
RequestContextModel requestContextModel = event.getRequestContext(); RequestContextModel requestContextModel = event.getRequestContext();
Date date = new Date(); Date date = new Date();
// 1.主表保存
JgBizChangeLog changeLog = saveLog(event);
// 2.子表字段保存
List<ESDataChangeLogDto> logs = saveColumnsChange2Es(changeDataDtos, requestContextModel, date, changeLog);
log.info("es 操作日志数据入库成功:{}条", logs.size());
}
private List<ESDataChangeLogDto> saveColumnsChange2Es(List<ChangeDataDto> changeDataDtos, RequestContextModel requestContextModel, Date date, JgBizChangeLog changeLog) {
List<ESDataChangeLogDto> logs = changeDataDtos.parallelStream().map(changeDataDto -> { List<ESDataChangeLogDto> logs = changeDataDtos.parallelStream().map(changeDataDto -> {
ESDataChangeLogDto changeLogDto = new ESDataChangeLogDto(); ESDataChangeLogDto changeLogDto = new ESDataChangeLogDto();
changeLogDto.setColumnKey(changeDataDto.getColumnKey()); changeLogDto.setColumnKey(changeDataDto.getColumnKey());
...@@ -80,10 +100,22 @@ public class ChangeDataEventListener { ...@@ -80,10 +100,22 @@ public class ChangeDataEventListener {
changeLogDto.setChangeId(changeDataDto.getChangeId()); changeLogDto.setChangeId(changeDataDto.getChangeId());
changeLogDto.setColumnFamily(changeDataDto.getColumnFamily()); changeLogDto.setColumnFamily(changeDataDto.getColumnFamily());
changeLogDto.setBizType(changeDataDto.getBizType()); changeLogDto.setBizType(changeDataDto.getBizType());
changeLogDto.setBatchId(requestContextModel.getTraceId()); changeLogDto.setBatchId(changeLog.getSequenceNbr() + "");
return changeLogDto; return changeLogDto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
esDataChangeLogDao.saveAll(logs); if(!logs.isEmpty()){
log.info("es 操作日志数据入库成功:{}条", logs.size()); esDataChangeLogDao.saveAll(logs);
}
return logs;
}
private JgBizChangeLog saveLog(ChangeDataEvent event) {
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable(bizTypeTableMap.get(changeLog.getBizType()));
changeLog.setRecDate(new Date());
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
bizChangeLogService.save(changeLog);
return changeLog;
} }
} }
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgBizChangeLogMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgBizChangeLogService;
import com.yeejoin.amos.boot.module.jg.api.dto.JgBizChangeLogDto;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 服务实现类
*
* @author system_generator
* @date 2025-04-14
*/
@Service
public class JgBizChangeLogServiceImpl extends BaseService<JgBizChangeLogDto,JgBizChangeLog,JgBizChangeLogMapper> implements IJgBizChangeLogService {
/**
* 分页查询
*/
public Page<JgBizChangeLogDto> queryForJgBizChangeLogPage(Page<JgBizChangeLogDto> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询 示例
*/
public List<JgBizChangeLogDto> queryForJgBizChangeLogList() {
return this.queryForList("" , false);
}
}
\ No newline at end of file
...@@ -2146,6 +2146,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2146,6 +2146,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
detail.put("equListName", projectContraption.getEquListName()); detail.put("equListName", projectContraption.getEquListName());
detail.put("equCategoryName", projectContraption.getEquCategoryName()); detail.put("equCategoryName", projectContraption.getEquCategoryName());
detail.put("equDefineName", projectContraption.getEquDefineName()); detail.put("equDefineName", projectContraption.getEquDefineName());
// 编辑功能会使用到
detail.putIfAbsent("EQU_LIST_CODE", projectContraption.getEquList()); detail.putIfAbsent("EQU_LIST_CODE", projectContraption.getEquList());
detail.putIfAbsent("EQU_CATEGORY_CODE", projectContraption.getEquCategory()); detail.putIfAbsent("EQU_CATEGORY_CODE", projectContraption.getEquCategory());
detail.putIfAbsent("EQU_DEFINE_CODE", projectContraption.getEquDefine()); detail.putIfAbsent("EQU_DEFINE_CODE", projectContraption.getEquDefine());
......
...@@ -58,11 +58,19 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra ...@@ -58,11 +58,19 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra
if (!allChangeColumns.isEmpty()) { if (!allChangeColumns.isEmpty()) {
// 更新历史的JSON的数据 // 更新历史的JSON的数据
this.buildLogData(allChangeColumns); this.buildLogData(allChangeColumns);
// 异步记录日志 // 异步记录变更流水
publisher.publish(new ChangeDataEvent(this, allChangeColumns, RequestContext.cloneRequestContext())); publishEvent2Logger(record, allChangeColumns);
} }
} }
private void publishEvent2Logger(String record, List<ChangeDataDto> allChangeColumns) {
BizRelationDataDto relationDataDto = new BizRelationDataDto();
relationDataDto.setBizId(record);
relationDataDto.setBizType(canHandleBizType());
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, relationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
private List<ChangeDataDto> update(String record, Map<String, Object> changeData) { private List<ChangeDataDto> update(String record, Map<String, Object> changeData) {
List<ChangeDataDto> allChangeColumns = new ArrayList<>(); List<ChangeDataDto> allChangeColumns = new ArrayList<>();
// 新数据解析 // 新数据解析
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl; 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.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; 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.context.DataProcessStrategyContext;
...@@ -51,11 +52,18 @@ public class UseRegisterDataChangeHandleImpl implements IBizDataChangeHandleStra ...@@ -51,11 +52,18 @@ public class UseRegisterDataChangeHandleImpl implements IBizDataChangeHandleStra
// 更新历史的JSON的数据 // 更新历史的JSON的数据
this.updateHistoryJson(applyNo); this.updateHistoryJson(applyNo);
this.buildLogData(allChangeColumns); this.buildLogData(allChangeColumns);
// 异步记录日志 publishEvent2Logger(applyNo, allChangeColumns);
publisher.publish(new ChangeDataEvent(this, allChangeColumns, RequestContext.cloneRequestContext()));
} }
} }
private void publishEvent2Logger(String applyNo, List<ChangeDataDto> allChangeColumns) {
BizRelationDataDto bizRelationDataDto = new BizRelationDataDto();
bizRelationDataDto.setBizId(applyNo);
bizRelationDataDto.setBizType(canHandleBizType());
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, bizRelationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
private void updateHistoryJson(String applyNo) { private void updateHistoryJson(String applyNo) {
useRegisterUpdateService.updateHisData(applyNo); useRegisterUpdateService.updateHisData(applyNo);
} }
......
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