Commit 0d10d721 authored by suhuiguang's avatar suhuiguang

refactor(大编辑):代码重构

1.公共编辑接口 2.公共详情接口
parent 41b6903e
...@@ -18,6 +18,8 @@ public @interface FieldDisplayDefine { ...@@ -18,6 +18,8 @@ public @interface FieldDisplayDefine {
Class<?> type() default String.class; Class<?> type() default String.class;
String format() default "yyyy-MM-dd";
boolean isExist() default true; boolean isExist() default true;
} }
...@@ -34,7 +34,12 @@ public class BizRelationDataDto { ...@@ -34,7 +34,12 @@ public class BizRelationDataDto {
private String changeAttachment; private String changeAttachment;
/** /**
* 变更的设备 * 变更的设备集合
*/ */
private Set<String> records; private Set<String> records;
/**
* 变更的装置集合
*/
private Set<String> projectContraptionIds;
} }
...@@ -6,6 +6,8 @@ import com.yeejoin.amos.boot.biz.common.annotation.Group; ...@@ -6,6 +6,8 @@ import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@Group(value = "equip_design_info") @Group(value = "equip_design_info")
...@@ -24,7 +26,7 @@ public class EquipDesignChangeDataDto extends BaseChangeDataDto { ...@@ -24,7 +26,7 @@ public class EquipDesignChangeDataDto extends BaseChangeDataDto {
private String designUseDate; private String designUseDate;
@FieldDisplayDefine(value = "设计日期") @FieldDisplayDefine(value = "设计日期")
private String designDate; private Date designDate;
@FieldDisplayDefine(value = "总图图号") @FieldDisplayDefine(value = "总图图号")
private String drawingDo; private String drawingDo;
......
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@Data
@Group(value = "jg_inspection_detection_info")
public class EquipInspectChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "设计单位统一社会信用代码")
private String designUnitCreditCode;
@FieldDisplayDefine(value ="检验类型")
private String inspectType;
@FieldDisplayDefine(value ="检验机构名称")
private String inspectOrgName;
@FieldDisplayDefine(value ="检验报告", type = JSON.class)
private String inspectReport;
@FieldDisplayDefine(value ="检验日期")
private Date inspectDate;
@FieldDisplayDefine(value ="检验结论")
private String inspectConclusion;
@FieldDisplayDefine(value ="下次检验日期")
private Date nextInspectDate;
@FieldDisplayDefine(value ="检验机构统一信用代码")
private String inspectOrgCode;
@FieldDisplayDefine(value ="检验报告编号")
private String inspectReportNo;
@FieldDisplayDefine(value ="检验流水唯一主键",isExist = false)
private String jySeq;
}
...@@ -42,4 +42,7 @@ public class EquipRegisterChangeDataDto extends BaseChangeDataDto { ...@@ -42,4 +42,7 @@ public class EquipRegisterChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "其他附件", type = JSON.class) @FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessoriesReg; private String otherAccessoriesReg;
@FieldDisplayDefine(value = "安装资料是否完整齐全")
private String installationIsComplete;
} }
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "变化的数据")
public class FieldChangeMeta implements Serializable {
/**
* 必须字段-字段key
*/
private String columnKey;
/**
* 必须字段-字段描述
*/
private String columnLabel;
/**
* 必须字段-字段原始值
*/
private String columnOldValue;
/**
* 必须字段-字段新值
*/
private String columnNewValue;
/**
* 非必须字段-变化的数据id(设备的record、或者业务的id),持使用登记的设备信息变更、不同业务流程的业务数据变更
*/
private String changeId;
/**
* 非必须字段-业务数据分类:如使用登记、安装告知等
*/
private String bizType;
/**
* 非必须字段-变更数据的分类:如使用信息、制造信息、设计信息、技术参数 - key
*/
private String columnFamily;
/**
* 非必须字段-字段类型-扩展使用
*/
private String columnType;
}
package com.yeejoin.amos.boot.module.jg.api.dto; package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.HashMap;
public class RequestChangeData extends JSONObject { public class RequestChangeData extends JSONObject {
/**
* 批量编辑时表格key-公共使用
*/
public static final String multiDataKey = "tableData"; public static final String multiDataKey = "tableData";
public IBizDataChangeHandleStrategy.ModelType getModelType() { /**
if (!this.containsKey(multiDataKey)) { * 删除的数据表格key-管道使用
return IBizDataChangeHandleStrategy.ModelType.single; */
public static final String deletedDataKey = "deleteData";
/**
* 变更说明
*/
public static final String changeReasonKey = "changeReason";
/**
* 变更说明附件
*/
public static final String changeReasonAttachmentKey = "changeAttachment";
public void validated() {
if (!this.containsKey(changeReasonKey) || !this.containsKey(changeReasonAttachmentKey)) {
throw new BadRequest("变更说明和变更说明附件不能为空!");
} }
return IBizDataChangeHandleStrategy.ModelType.batch;
} }
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.api.service;
import java.util.Map;
public interface IBizDataChangeHandleStrategy {
/**
* 可处理的业务类型(使用登记等)
*
* @return 业务类型
*/
String canHandleBizType();
/**
* 获取变更信息详情
*
* @param applyNo 单据编号
* @param model single, batch
* @param bizId 设备record
* @return 变更信息详情
*/
Map<String, ?> getDetail(String applyNo, ModelType model, String bizId);
/**
* 保存
*
* @param applyNo 单据编号
* @param model single, batch
* @param changeData 变更数据
*/
void doSave(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 单据方式:单个处理、批量处理
*/
enum ModelType {
single,
batch
}
String DEFAULT_VALUE = "default";
}
package com.yeejoin.amos.boot.module.jg.api.service; package com.yeejoin.amos.boot.module.jg.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.Set;
/** /**
* 接口类 * 接口类
* *
...@@ -9,4 +13,5 @@ package com.yeejoin.amos.boot.module.jg.api.service; ...@@ -9,4 +13,5 @@ package com.yeejoin.amos.boot.module.jg.api.service;
*/ */
public interface IJgBizChangeLogService { public interface IJgBizChangeLogService {
IPage<?> queryPageListByChangeIds(Set<String> changeIds);
} }
package com.yeejoin.amos.boot.module.jg.biz.context; package com.yeejoin.amos.boot.module.jg.biz.context;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy.IBizDataChangeHandleStrategy;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
......
package com.yeejoin.amos.boot.module.jg.biz.context; package com.yeejoin.amos.boot.module.jg.biz.context;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy; import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.DefaultBizDataChangeHandler;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
...@@ -15,22 +15,22 @@ import java.util.Optional; ...@@ -15,22 +15,22 @@ import java.util.Optional;
* @author Administrator * @author Administrator
*/ */
@Component @Component
public class DataProcessStrategyContext implements ApplicationContextAware { public class EquipDataProcessStrategyContext implements ApplicationContextAware {
private static final Map<IBizDataChangeHandleStrategy.ModelType, IChangeDataProcessStrategy> dataProcessStrategyHashMap = new HashMap<>(); private static final Map<DefaultBizDataChangeHandler.ModelType, IEquipChangeDataProcessStrategy> dataProcessStrategyHashMap = new HashMap<>();
public static IChangeDataProcessStrategy getStrategy(IBizDataChangeHandleStrategy.ModelType modelType) { public static IEquipChangeDataProcessStrategy getStrategy(DefaultBizDataChangeHandler.ModelType modelType) {
return Optional.ofNullable(dataProcessStrategyHashMap.get(modelType)).orElseThrow(() -> new RuntimeException(String.format("not found %s type strategy", modelType))); return Optional.ofNullable(dataProcessStrategyHashMap.get(modelType)).orElseThrow(() -> new RuntimeException(String.format("not found %s type strategy", modelType)));
} }
@Override @Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Map<String, IChangeDataProcessStrategy> strategyBeans = applicationContext.getBeansOfType(IChangeDataProcessStrategy.class); Map<String, IEquipChangeDataProcessStrategy> strategyBeans = applicationContext.getBeansOfType(IEquipChangeDataProcessStrategy.class);
if (strategyBeans.isEmpty()) { if (strategyBeans.isEmpty()) {
return; return;
} }
for (IChangeDataProcessStrategy strategy : strategyBeans.values()) { for (IEquipChangeDataProcessStrategy strategy : strategyBeans.values()) {
dataProcessStrategyHashMap.put(strategy.canHandleMode(), strategy); dataProcessStrategyHashMap.put(strategy.canHandleMode(), strategy);
} }
} }
......
package com.yeejoin.amos.boot.module.jg.biz.controller; package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData; import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import com.yeejoin.amos.boot.module.jg.biz.edit.BizDataChangeServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.BizDataChangeServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.SingleManageEquipEditHandleImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
...@@ -16,33 +21,76 @@ import java.util.Map; ...@@ -16,33 +21,76 @@ import java.util.Map;
@RestController @RestController
@RequestMapping(value = "/data-change") @RequestMapping(value = "/data-change")
@Api(tags = "业务数据变化处理控制器") @Api(tags = "业务数据变化处理控制器")
@RequiredArgsConstructor
public class BizDataChangeController { public class BizDataChangeController {
public enum DetailType {
equip,
project
}
private final BizDataChangeServiceImpl bizDataChangeService; private final BizDataChangeServiceImpl bizDataChangeService;
public BizDataChangeController(BizDataChangeServiceImpl bizDataChangeService) { private final SingleManageEquipEditHandleImpl singleManageEquipEditHandle;
this.bizDataChangeService = bizDataChangeService;
}
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/{bizType}/save") @PostMapping(value = "/v1/singleManageEquipEdit/save")
@ApiOperation(value = "业务数据变更保存", httpMethod = "POST") @ApiOperation(value = "业务数据变更保存--西安专用", httpMethod = "POST")
public ResponseModel<String> save(@RequestParam String applyNo, public ResponseModel<String> save(@RequestParam String applyNo,
@PathVariable String bizType,
@RequestBody RequestChangeData changeData) { @RequestBody RequestChangeData changeData) {
bizDataChangeService.save(applyNo, bizType, changeData); singleManageEquipEditHandle.doSave(applyNo, changeData);
return ResponseHelper.buildResponse("success"); return ResponseHelper.buildResponse("success");
} }
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{bizType}/detail") @GetMapping(value = "/v1/singleManageEquipEdit/detail")
@ApiOperation(value = "查询可业务变更的字段及默认值", httpMethod = "GET") @ApiOperation(value = "查询可业务变更的字段及默认值--西安专用", httpMethod = "GET")
public ResponseModel<Map<String, ?>> getDetail(@RequestParam(required = false) String applyNo, public ResponseModel<Map<String, ?>> getDetailV1(@RequestParam(required = false) String applyNo,
@PathVariable String bizType,
IBizDataChangeHandleStrategy.ModelType model,
@RequestParam(required = false) String bizId) { @RequestParam(required = false) String bizId) {
return ResponseHelper.buildResponse(bizDataChangeService.queryDetail(applyNo, bizType, model, bizId)); return ResponseHelper.buildResponse(singleManageEquipEditHandle.getDetail(applyNo, bizId));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/v2/{bizType}/detail")
@ApiOperation(value = "编辑一级页面详情查询--通用", httpMethod = "GET")
public ResponseModel<IPage<?>> getDetailV2(@RequestParam String applyNo,
@PathVariable String bizType,
@RequestParam DetailType type,
@RequestParam JSONObject searchParams) {
return ResponseHelper.buildResponse(bizDataChangeService.queryDetail(applyNo, bizType, type, searchParams));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/v2/{bizType}/sub-detail")
@ApiOperation(value = "编辑二级页面详情查询--通用", httpMethod = "GET")
public ResponseModel<Map<String, ?>> getSubDetailV2(@RequestParam String bizId,
@RequestParam(required = false) String applyNo,
@RequestParam DetailType type,
@PathVariable String bizType) {
return ResponseHelper.buildResponse(bizDataChangeService.querySubDetail(applyNo, bizId, bizType, type));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/v2/{bizType}/save")
@ApiOperation(value = "编辑保存--通用", httpMethod = "POST")
public ResponseModel<String> saveV2(@ApiParam(required = true, value = "单据编号或者record") @RequestParam String applyNo,
@ApiParam(required = true, value = "业务类型") @PathVariable String bizType,
@ApiParam(required = true, value = "设备处理器类型") @RequestParam IBizDataChangeHandleStrategy.ModelType modelType,
@RequestBody RequestChangeData changeData) {
// 基础数据校验
changeData.validated();
bizDataChangeService.save(applyNo, bizType, modelType, changeData);
return ResponseHelper.buildResponse("success");
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/v2/{bizType}/change-logs")
@ApiOperation(value = "编辑二级页面详情查询--通用", httpMethod = "GET")
public ResponseModel<IPage<?>> getChangeLogPage(@RequestParam String bizId,
@PathVariable String bizType) {
return ResponseHelper.buildResponse(bizDataChangeService.getChangeLogPage(bizId, bizType));
} }
} }
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.edit;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData; import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.context.BizDataHandleStrategyContext; import com.yeejoin.amos.boot.module.jg.biz.context.BizDataHandleStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.controller.BizDataChangeController;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy.IBizDataChangeHandleStrategy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -17,20 +21,29 @@ public class BizDataChangeServiceImpl { ...@@ -17,20 +21,29 @@ public class BizDataChangeServiceImpl {
* *
* @param applyNo 单据编号 * @param applyNo 单据编号
* @param bizType 业务类型 * @param bizType 业务类型
* @param modelType 处理器类型
* @param changeData 变化后的数据 * @param changeData 变化后的数据
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void save(String applyNo, public void save(String applyNo,
String bizType, String bizType,
RequestChangeData changeData) { IBizDataChangeHandleStrategy.ModelType modelType, RequestChangeData changeData) {
IBizDataChangeHandleStrategy.ModelType model = changeData.getModelType();
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType); IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
handleStrategy.doSave(applyNo, model, changeData); handleStrategy.doSave(applyNo, modelType, changeData);
} }
public Map<String, ?> queryDetail(String applyNo, String bizType, IBizDataChangeHandleStrategy.ModelType model, String bizId) { public IPage<?> queryDetail(String applyNo, String bizType, BizDataChangeController.DetailType type, JSONObject searchParams) {
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType); IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
return handleStrategy.getDetail(applyNo, model, bizId); return handleStrategy.getDetail(applyNo, type, searchParams);
} }
public Map<String, ?> querySubDetail(String applyNo, String bizId, String bizType, BizDataChangeController.DetailType type) {
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
return handleStrategy.getSubDetail(applyNo, bizId, type);
}
public IPage<?> getChangeLogPage(String bizId, String bizType) {
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
return handleStrategy.getChangeLogs(bizId);
}
} }
package com.yeejoin.amos.boot.module.jg.biz.edit.core;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import lombok.Getter;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.stereotype.Component;
@Getter
@Component("defaultEventPublisher")
public class DefaultEventPublisher implements IEventPublisher<BaseBizDataChangeEvent>, ApplicationEventPublisherAware {
private ApplicationEventPublisher publisher;
@Override
public void publish(BaseBizDataChangeEvent event) {
publisher.publishEvent(event);
}
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.publisher = applicationEventPublisher;
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.core;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface EventPublisherMapping {
String value() default "defaultEventPublisher";
}
package com.yeejoin.amos.boot.module.jg.biz.edit.core;
import org.springframework.context.ApplicationEvent;
public interface IEventPublisher<T extends ApplicationEvent> {
void publish(T event);
}
package com.yeejoin.amos.boot.module.jg.biz.edit.core;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
@Component
@RequiredArgsConstructor
public class RouterEventPublisher implements IEventPublisher<BaseBizDataChangeEvent> {
private final ApplicationContext applicationContext;
private final Map<Class<?>, String> publisherCache = new ConcurrentHashMap<>();
@Override
public void publish(BaseBizDataChangeEvent event) {
String publisherName = resolvePublisherName(event.getClass());
IEventPublisher<BaseBizDataChangeEvent> publisher = applicationContext.getBean(publisherName, IEventPublisher.class);
Optional.ofNullable(publisher).orElseGet(this::getDefaultPublisher).publish(event);
}
private String resolvePublisherName(Class<?> eventClass) {
return publisherCache.computeIfAbsent(eventClass, clz -> {
EventPublisherMapping annotation = clz.getAnnotation(EventPublisherMapping.class);
return (annotation != null) ? annotation.value() : "defaultEventPublisher";
});
}
private IEventPublisher<BaseBizDataChangeEvent> getDefaultPublisher() {
return applicationContext.getBean("defaultEventPublisher", IEventPublisher.class);
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.core;
import com.yeejoin.amos.boot.module.common.api.dto.IBaseChangeData;
import org.reflections.Reflections;
import java.util.HashSet;
import java.util.Set;
public class SubClassFinder {
private static final Set<Class<? extends IBaseChangeData>> subClasses;
static {
//▼ 指定扫描包路径(根据实际项目调整)
Reflections reflections = new Reflections("com.yeejoin.amos.boot.module.jg.api.dto", "com.yeejoin.amos.boot.module.ymt.api.entity");
//▼ 获取所有继承BaseChangeDataDto的类
subClasses = reflections.getSubTypesOf(IBaseChangeData.class);
}
public static Set<Class<? extends IBaseChangeData>> getAllSubClasses() {
return new HashSet<>(subClasses);
}
}
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.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto; import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.EventPublisherMapping;
import lombok.Getter; import lombok.Getter;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;
import org.typroject.tyboot.core.foundation.context.RequestContextModel; import org.typroject.tyboot.core.foundation.context.RequestContextModel;
...@@ -12,15 +13,20 @@ import java.util.List; ...@@ -12,15 +13,20 @@ import java.util.List;
* @author Administrator * @author Administrator
*/ */
@Getter @Getter
public class ChangeDataEvent extends ApplicationEvent { @EventPublisherMapping
public class BaseBizDataChangeEvent extends ApplicationEvent {
private final List<ChangeDataDto> data; private List<FieldChangeMeta> data;
private final RequestContextModel requestContext; private RequestContextModel requestContext;
private final BizRelationDataDto bizRelationData; public BaseBizDataChangeEvent(Object source) {
super(source);
}
private BizRelationDataDto bizRelationData;
public ChangeDataEvent(Object source, BizRelationDataDto bizRelationData, List<ChangeDataDto> data, RequestContextModel requestContext) { public BaseBizDataChangeEvent(Object source, BizRelationDataDto bizRelationData, List<FieldChangeMeta> data, RequestContextModel requestContext) {
super(source); super(source);
this.data = data; this.data = data;
this.bizRelationData = bizRelationData; this.bizRelationData = bizRelationData;
......
package com.yeejoin.amos.boot.module.jg.biz.event.listener; package com.yeejoin.amos.boot.module.jg.biz.edit.event.listener;
import cn.hutool.core.bean.BeanUtil; 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.ESDataChangeLogDto; import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog; 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.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -41,10 +41,11 @@ public class ChangeLogInsertListener { ...@@ -41,10 +41,11 @@ public class ChangeLogInsertListener {
static { static {
bizTypeTableMap.put("useRegister", "tzs_jg_use_registration"); bizTypeTableMap.put("useRegister", "tzs_jg_use_registration");
bizTypeTableMap.put("installationNotice", "tzs_jg_installation_notice");
bizTypeTableMap.put("singleManageEquipEdit", "idx_biz_jg_use_info"); bizTypeTableMap.put("singleManageEquipEdit", "idx_biz_jg_use_info");
} }
@Value("${change.data.deal.thread.number:1}") @Value("${change.log.deal.thread.number:1}")
private int threadNumber; private int threadNumber;
private final ESDataChangeLogDao esDataChangeLogDao; private final ESDataChangeLogDao esDataChangeLogDao;
...@@ -52,13 +53,13 @@ public class ChangeLogInsertListener { ...@@ -52,13 +53,13 @@ public class ChangeLogInsertListener {
private final JgBizChangeLogServiceImpl bizChangeLogService; private final JgBizChangeLogServiceImpl bizChangeLogService;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>(); private final BlockingQueue<BaseBizDataChangeEvent> queue = new LinkedBlockingQueue<>();
@TransactionalEventListener(value = ChangeDataEvent.class) @TransactionalEventListener(value = BaseBizDataChangeEvent.class)
@Async @Async
public void handleTransactionalEvent(ChangeDataEvent event) { public void handleTransactionalEvent(BaseBizDataChangeEvent event) {
log.info("收到用户变更业务数据消息:{}", JSONObject.toJSONString(event)); log.info("日志处理器,收到变更业务数据消息:{}", JSONObject.toJSONString(event));
queue.add(event); queue.add(event);
} }
...@@ -69,7 +70,7 @@ public class ChangeLogInsertListener { ...@@ -69,7 +70,7 @@ public class ChangeLogInsertListener {
executorService.execute(() -> { executorService.execute(() -> {
while (true) { while (true) {
try { try {
ChangeDataEvent event = queue.take(); BaseBizDataChangeEvent event = queue.take();
processEvent(event); processEvent(event);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
...@@ -79,19 +80,19 @@ public class ChangeLogInsertListener { ...@@ -79,19 +80,19 @@ public class ChangeLogInsertListener {
}); });
} }
private void processEvent(ChangeDataEvent event) { private void processEvent(BaseBizDataChangeEvent event) {
List<ChangeDataDto> changeDataDtos = event.getData(); List<FieldChangeMeta> fieldChangeMetas = event.getData();
RequestContextModel requestContextModel = event.getRequestContext(); RequestContextModel requestContextModel = event.getRequestContext();
Date date = new Date(); Date date = new Date();
// 1.主表保存 // 1.主表保存
JgBizChangeLog changeLog = saveLog(event); JgBizChangeLog changeLog = saveLog(event);
// 2.子表字段保存 // 2.子表字段保存
List<ESDataChangeLogDto> logs = saveColumnsChange2Es(changeDataDtos, requestContextModel, date, changeLog); List<ESDataChangeLogDto> logs = saveColumnsChange2Es(fieldChangeMetas, requestContextModel, date, changeLog);
log.info("es 操作日志数据入库成功:{}条", logs.size()); log.info("es 操作日志数据入库成功:{}条", logs.size());
} }
private List<ESDataChangeLogDto> saveColumnsChange2Es(List<ChangeDataDto> changeDataDtos, RequestContextModel requestContextModel, Date date, JgBizChangeLog changeLog) { private List<ESDataChangeLogDto> saveColumnsChange2Es(List<FieldChangeMeta> fieldChangeMetas, RequestContextModel requestContextModel, Date date, JgBizChangeLog changeLog) {
List<ESDataChangeLogDto> logs = changeDataDtos.parallelStream().map(changeDataDto -> { List<ESDataChangeLogDto> logs = fieldChangeMetas.parallelStream().map(changeDataDto -> {
ESDataChangeLogDto changeLogDto = new ESDataChangeLogDto(); ESDataChangeLogDto changeLogDto = new ESDataChangeLogDto();
changeLogDto.setColumnKey(changeDataDto.getColumnKey()); changeLogDto.setColumnKey(changeDataDto.getColumnKey());
changeLogDto.setColumnKeyLabel(changeDataDto.getColumnLabel()); changeLogDto.setColumnKeyLabel(changeDataDto.getColumnLabel());
...@@ -112,7 +113,7 @@ public class ChangeLogInsertListener { ...@@ -112,7 +113,7 @@ public class ChangeLogInsertListener {
return logs; return logs;
} }
private JgBizChangeLog saveLog(ChangeDataEvent event) { private JgBizChangeLog saveLog(BaseBizDataChangeEvent event) {
JgBizChangeLog changeLog = new JgBizChangeLog(); JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog); BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable(bizTypeTableMap.get(changeLog.getBizType())); changeLog.setBizTable(bizTypeTableMap.get(changeLog.getBizType()));
......
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.module.jg.api.dto.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.biz.context.EquipDataProcessStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.controller.BizDataChangeController;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.IEventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.CommonEquipDataProcessService;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import org.springframework.context.ApplicationContext;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public abstract class DefaultBizDataChangeHandler<U extends BaseBizDataChangeEvent> implements IBizDataChangeHandleStrategy {
private final IEventPublisher<BaseBizDataChangeEvent> eventPublisher;
private final ApplicationContext applicationContext;
protected DefaultBizDataChangeHandler(IEventPublisher<BaseBizDataChangeEvent> eventPublisher, ApplicationContext applicationContext) {
this.eventPublisher = eventPublisher;
this.applicationContext = applicationContext;
}
@Override
public final void doSave(String applyNo, ModelType model, Map<String, Object> changeData) {
if (beforeCheck(applyNo, model, changeData)) {
JSONObject oData = new JSONObject(changeData);
// 删除原始提交的变更说明及附件放置后续存放到json
changeData.remove("changeReason");
changeData.remove("changeAttachment");
IEquipChangeDataProcessStrategy dataProcessor = EquipDataProcessStrategyContext.getStrategy(model);
List<FieldChangeMeta> allChangeColumns = dataProcessor.handle(changeData, applyNo);
List<FieldChangeMeta> bizEditColumns = updBizData(applyNo, model, changeData);
allChangeColumns.addAll(bizEditColumns);
if (bizIsFinished(applyNo, model, changeData)) {
List<FieldChangeMeta> equipColumns = updCertDataIfBizFin(applyNo, model, changeData);
allChangeColumns.addAll(equipColumns);
}
// 发送数据变更消息
publish2OtherBiz(allChangeColumns, applyNo, oData);
}
}
private void publish2OtherBiz(List<FieldChangeMeta> allChangeColumns, String applyNo, JSONObject changeData) {
if (!allChangeColumns.isEmpty()) {
BizRelationDataDto bizRelationDataDto = new BizRelationDataDto();
bizRelationDataDto.setBizId(applyNo);
bizRelationDataDto.setBizType(canHandleBizType());
bizRelationDataDto.setRecords(getEqs(applyNo));
bizRelationDataDto.setChangeReason(changeData.getString("changeReason"));
bizRelationDataDto.setChangeAttachment(JSONObject.toJSONString(changeData.get("changeAttachment")));
bizRelationDataDto.setProjectContraptionIds(getProjectContraptionIds(applyNo));
eventPublisher.publish(new BaseBizDataChangeEvent(this, bizRelationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
}
@Override
public IPage<?> getDetail(String applyNo, BizDataChangeController.DetailType type, JSONObject searchParams) {
CommonEquipDataProcessService service = applicationContext.getBean(CommonEquipDataProcessService.class);
switch (type) {
case equip:
return service.getEquListByRecords(getEqs(applyNo), searchParams);
case project:
return service.getProjectContraptionsBySeqs(getProjectContraptionIds(applyNo), searchParams);
default:
throw new BadRequest("unknown type for getDetail");
}
}
@Override
public Map<String, ?> getSubDetail(String applyNo, String bizId, BizDataChangeController.DetailType type) {
CommonEquipDataProcessService service = applicationContext.getBean(CommonEquipDataProcessService.class);
switch (type) {
case equip:
return service.getEquipDetailByRecord(bizId);
case project:
return service.getProjectContraptionBySeq(bizId, getEqs(applyNo));
default:
throw new BadRequest("unknown type for getSubDetail");
}
}
@Override
public IPage<?> getChangeLogs(String bizId) {
Set<String> changeIds = new HashSet<>();
changeIds.addAll(getEqs(bizId));
changeIds.addAll(getProjectContraptionIds(bizId));
JgBizChangeLogServiceImpl service = applicationContext.getBean(JgBizChangeLogServiceImpl.class);
return service.queryPageListByChangeIds(changeIds);
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.installNotice;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
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.edit.process.biz.DefaultBizDataChangeHandler;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Component
public class InstallNoticeDataChangeHandler extends DefaultBizDataChangeHandler<BaseBizDataChangeEvent> {
protected InstallNoticeDataChangeHandler(RouterEventPublisher routerEventPublisher, ApplicationContext applicationContext) {
super(routerEventPublisher, applicationContext);
}
@Override
public String canHandleBizType() {
return "installationNotice";
}
@Override
public List<FieldChangeMeta> updBizData(String applyNo, ModelType model, Map<String, Object> changeData) {
return Collections.emptyList();
}
@Override
public Boolean beforeCheck(String applyNo, ModelType model, Map<String, Object> changeData) {
return null;
}
@Override
public Set<String> getEqs(String applyNo) {
return Collections.emptySet();
}
@Override
public List<FieldChangeMeta> updCertDataIfBizFin(String applyNo, ModelType model, Map<String, Object> changeData) {
return Collections.emptyList();
}
@Override
public Boolean bizIsFinished(String applyNo, ModelType model, Map<String, Object> changeData) {
return null;
}
@Override
public Set<String> getProjectContraptionIds(String applyNo) {
return Collections.emptySet();
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.biz.controller.BizDataChangeController;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface IBizDataChangeHandleStrategy {
/**
* 可处理的业务类型(使用登记等)
*
* @return 业务类型
*/
String canHandleBizType();
/**
* 获取变更信息详情-二级详情
* @param applyNo 单据或者设备唯一,单据编辑时用来查询eq表
* @param bizId 设备record
* @param type 编辑的资源的类型:设备、装置
* @return 变更信息详情
*/
Map<String, ?> getSubDetail(String applyNo, String bizId, BizDataChangeController.DetailType type);
/**
* 获取变更信息详情-一级详情
*
* @param applyNo 单据编号
* @param type 编辑的资源的类型:设备、装置
* @param searchParams 查询参数
* @return 变更信息详情
*/
IPage<?> getDetail(String applyNo, BizDataChangeController.DetailType type, JSONObject searchParams);
/**
* 保存
*
* @param applyNo 单据编号
* @param model @see ModelType
* @param changeData 变更数据
*/
List<FieldChangeMeta> updBizData(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 前置校验 如业务字段的重复性检验
*
* @param applyNo 单据编号
* @param model 类型
* @param changeData 数据
* @return 是否通过前置校验
*/
Boolean beforeCheck(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 单据方式:单个处理、批量处理
*/
enum ModelType {
singleProject,
singleEquip,
singleCylinder
}
void doSave(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 获取子表的设备或者使用登记证
*
* @param applyNo 单据编号
* @return 设备record或者证数组
*/
Set<String> getEqs(String applyNo);
/**
* 在业务单位状态为已完成时进行证表的更新
*
* @param applyNo 单据编号
* @param model 类型
* @param changeData 数据
* @return 更新的字段
*/
List<FieldChangeMeta> updCertDataIfBizFin(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 单据是否已经审核完成
*
* @param applyNo 单据编号
* @param model 类型
* @param changeData 数据
* @return true-完成;false-未完成
*/
Boolean bizIsFinished(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 获取变更的装置ids
*
* @param applyNo 单据编号
* @return 装置id集合
*/
Set<String> getProjectContraptionIds(String applyNo);
/**
* 查询变更日志
* @param bizId 业务id
* @return 分页数据
*/
IPage<?> getChangeLogs(String bizId);
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.useRegister;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
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.biz.controller.BizDataChangeController;
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.edit.process.biz.DefaultBizDataChangeHandler;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<BaseBizDataChangeEvent> {
private final UseRegisterUpdateService useRegisterUpdateService;
protected UseRegisterDataChangeHandler(RouterEventPublisher routerEventPublisher, UseRegisterUpdateService useRegisterUpdateService, ApplicationContext applicationContext) {
super(routerEventPublisher, applicationContext);
this.useRegisterUpdateService = useRegisterUpdateService;
}
@Override
public String canHandleBizType() {
return "useRegistration";
}
/**
* 保存
*
* @param applyNo 单据编号
* @param model single, batch
* @param changeData 前端不支持分组-目前为平铺数据结构
*/
@Override
public List<FieldChangeMeta> updBizData(String applyNo, ModelType model, Map<String, Object> changeData) {
List<FieldChangeMeta> bizEditColumns = new ArrayList<>();
// 1.流程中时-更新单据-业务冗余的字段
this.updateBizInfo(changeData);
return bizEditColumns;
}
private void updateBizInfo(Map<String, Object> changeData) {
useRegisterUpdateService.updateBizInfo(changeData);
}
@Override
public Boolean beforeCheck(String applyNo, ModelType model, Map<String, Object> changeData) {
return true;
}
@Override
public Set<String> getEqs(String applyNo) {
JgUseRegistration useRegistration = useRegisterUpdateService.getJgUseRegistrationService().getOne(new LambdaQueryWrapper<JgUseRegistration>().select(BaseEntity::getSequenceNbr).eq(JgUseRegistration::getApplyNo, applyNo));
List<JgUseRegistrationEq> eqs = useRegisterUpdateService.getUseRegistrationEqService().list(new LambdaQueryWrapper<JgUseRegistrationEq>().select(JgUseRegistrationEq::getEquId).eq(JgUseRegistrationEq::getEquipTransferId, useRegistration.getSequenceNbr()));
return eqs.stream().map(JgUseRegistrationEq::getEquId).collect(Collectors.toSet());
}
@Override
public List<FieldChangeMeta> updCertDataIfBizFin(String applyNo, ModelType model, Map<String, Object> changeData) {
// 更新设备/装置的使用信息
return useRegisterUpdateService.updCertDataIfBizFin(applyNo, new JSONObject(changeData));
}
@Override
public Boolean bizIsFinished(String applyNo, ModelType model, Map<String, Object> changeData) {
JgUseRegistration useRegistration = useRegisterUpdateService.getJgUseRegistrationService().getOne(new LambdaQueryWrapper<JgUseRegistration>().eq(JgUseRegistration::getApplyNo, applyNo));
return useRegistration.getStatus().equals(FlowStatusEnum.TO_BE_FINISHED.getName());
}
@Override
public Set<String> getProjectContraptionIds(String applyNo) {
JgUseRegistration useRegistration = useRegisterUpdateService.getJgUseRegistrationService().getOne(new LambdaQueryWrapper<JgUseRegistration>().select(BaseEntity::getSequenceNbr, JgUseRegistration::getApplyNo, JgUseRegistration::getProjectContraptionId).eq(JgUseRegistration::getApplyNo, applyNo));
Set<String> projectContraptionIds = new HashSet<>();
projectContraptionIds.add(useRegistration.getProjectContraptionId());
projectContraptionIds.remove(null);
projectContraptionIds.remove("");
return projectContraptionIds;
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.useRegister;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.CommonEquipDataProcessService;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgProjectContraptionServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationEqServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
@Service
@RequiredArgsConstructor
@Getter
@Slf4j
public class UseRegisterUpdateService {
private final IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper;
private final IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionService;
private final RedisUtils redisUtils;
private final JgUseRegistrationServiceImpl jgUseRegistrationService;
private final Map<String, Function<JSONObject, Boolean>> bizHandlers = new ConcurrentHashMap<>();
private final CommonEquipDataProcessService commonEquipDataProcessService;
private final CommonMapper commonMapper;
private final JgUseRegistrationEqServiceImpl useRegistrationEqService;
public void convertStringToJsonObject(Object obj, String[] jsonFields) {
if (obj instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) obj;
for (String field : jsonFields) {
if (jsonObject.get(field) != null && jsonObject.get(field) instanceof String) {
jsonObject.put(field, JSON.parse(JSONObject.toJSONString(jsonObject.get(field))));
}
}
} else if (obj instanceof Map) {
Map<String, Object> map = (Map<String, Object>) obj;
for (String field : jsonFields) {
if (map.containsKey(field) && map.get(field) instanceof String) {
map.put(field, JSON.parse((String) map.get(field)));
}
}
} else {
// 处理其他类型
System.out.println("Unsupported Object Type");
}
}
public void updateBizInfo(Map<String, Object> changeData) {
}
public List<FieldChangeMeta> updCertDataIfBizFin(String applyNo, JSONObject data) {
// 更新证信息
return new ArrayList<>();
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.dto.PieLineDesignChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ProjectContraptionChangeDataDto;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgProjectContraptionServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class PieLineDataChangeServiceImpl {
private final CommonEquipDataProcessService commonEquipDataProcessService;
private final IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionServiceImpl;
private final EquipChangeDataUpdateServiceImpl equipChangeDataUpdateServiceImpl;
public PieLineDataChangeServiceImpl(CommonEquipDataProcessService commonEquipDataProcessService, IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionServiceImpl, EquipChangeDataUpdateServiceImpl equipChangeDataUpdateServiceImpl) {
this.commonEquipDataProcessService = commonEquipDataProcessService;
this.idxBizJgProjectContraptionServiceImpl = idxBizJgProjectContraptionServiceImpl;
this.equipChangeDataUpdateServiceImpl = equipChangeDataUpdateServiceImpl;
}
public void update(ProjectContraptionChangeDataDto projectContraptionChangeDataDtoNew, List<FieldChangeMeta> allChangeColumns) {
// 原有对象行转列
ProjectContraptionChangeDataDto projectContraptionChangeDataDtoOld = getOldProjectContraptionData(projectContraptionChangeDataDtoNew);
List<FieldChangeMeta> newProjectContraptionChangeData = commonEquipDataProcessService.convertBeanField2Column2(projectContraptionChangeDataDtoNew, projectContraptionChangeDataDtoNew.getProjectContraptionId());
// 新对象构造行转列
List<FieldChangeMeta> oldProjectContraptionChangeData = commonEquipDataProcessService.convertBeanField2Column2(projectContraptionChangeDataDtoOld, projectContraptionChangeDataDtoNew.getProjectContraptionId());
// 数据比对记录变化字段列表
allChangeColumns.addAll(commonEquipDataProcessService.mergeChangeFields(newProjectContraptionChangeData, oldProjectContraptionChangeData));
// 数据入库
LambdaUpdateWrapper<IdxBizJgProjectContraption> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BaseEntity::getSequenceNbr, projectContraptionChangeDataDtoNew.getProjectContraptionId());
updateWrapper.set(IdxBizJgProjectContraption::getProjectContraption, projectContraptionChangeDataDtoNew.getProjectContraption());
updateWrapper.set(IdxBizJgProjectContraption::getProjectContraptionNo, projectContraptionChangeDataDtoNew.getProjectContraptionNo());
updateWrapper.set(IdxBizJgProjectContraption::getPipelineLength, projectContraptionChangeDataDtoNew.getPipelineLength());
updateWrapper.set(IdxBizJgProjectContraption::getProductPhoto, projectContraptionChangeDataDtoNew.getProductPhoto());
updateWrapper.set(IdxBizJgProjectContraption::getOtherAccessories, projectContraptionChangeDataDtoNew.getOtherAccessories());
updateWrapper.set(IdxBizJgProjectContraption::getProductQualificationCertificate, projectContraptionChangeDataDtoNew.getProductQualificationCertificate());
idxBizJgProjectContraptionServiceImpl.update(null, updateWrapper);
}
private ProjectContraptionChangeDataDto getOldProjectContraptionData(ProjectContraptionChangeDataDto projectContraptionChangeDataDtoNew) {
IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionServiceImpl.getById(projectContraptionChangeDataDtoNew.getProjectContraptionId());
return BeanUtil.copyProperties(projectContraption, ProjectContraptionChangeDataDto.class);
}
public void saveDesignForPieLine(String record, List<FieldChangeMeta> allChangeColumns, PipelineChangeItemDto pipelineChangeItemDto) {
// 1.记录变化的数据对象
PieLineDesignChangeDataDto pieLineDesignChangeDataDto = BeanUtil.copyProperties(pipelineChangeItemDto, PieLineDesignChangeDataDto.class);
// 构造新对象行转列
List<FieldChangeMeta> designInfoNew = commonEquipDataProcessService.convertBeanField2Column2(pieLineDesignChangeDataDto, record);
// 老数据查询行转列
List<FieldChangeMeta> designInfoOld = commonEquipDataProcessService.buildDesignInfoOld(record);
allChangeColumns.addAll(commonEquipDataProcessService.mergeChangeFields(designInfoNew, designInfoOld));
// 2.更新管道的设计单位名称
equipChangeDataUpdateServiceImpl.updatePieLineDesignData(record, pieLineDesignChangeDataDto);
}
public void updateEs(ProjectContraptionChangeDataDto projectContraptionChangeDataDto) {
equipChangeDataUpdateServiceImpl.updateRegisterEsDataPieLine(projectContraptionChangeDataDto);
}
public void deletePieLineBatch(List<PipelineChangeItemDto> deletedPieLines, List<FieldChangeMeta> allChangeColumns, String applyNo) {
// todo 构建日志 allChangeColumns afterData = null
// todo 数据库管道删除
// todo es管道删除
}
void newPieLine(String projectContraptionId, PipelineChangeItemDto it, List<FieldChangeMeta> allChangeColumns, String applyNo) {
// todo 创建管道的设备几张表
// todo 创建道的es
// todo 构建变更流水 beforeData = null
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
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;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 批量维护气瓶-策略实现类
*/
@Component
@RequiredArgsConstructor
public class SingleCylinderChangeProcess implements IEquipChangeDataProcessStrategy {
private final CommonEquipDataProcessService commonEquipDataProcessService;
@Override
public List<FieldChangeMeta> handle(Map<String, Object> changeData, String record) {
List<FieldChangeMeta> allChangeColumns = new ArrayList<>();
// 新数据解析
EquipRegisterChangeDataDto registerChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipRegisterChangeDataDto.class);
EquipFactoryChangeDataDto factoryChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipFactoryChangeDataDto.class);
EquipDesignChangeDataDto designChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipDesignChangeDataDto.class);
EquipUseInfoChangeDataDto useInfoChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipUseInfoChangeDataDto.class);
commonEquipDataProcessService.buildChangeFields(record, designChangeDataDto, factoryChangeDataDto, registerChangeDataDto, useInfoChangeDataDto, allChangeColumns);
// 前置校验
commonEquipDataProcessService.checkValidField(record, registerChangeDataDto, null, null, null);
commonEquipDataProcessService.checkValidField(record, factoryChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
commonEquipDataProcessService.checkValidField(record, designChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
// 设备制造、设计、注册信息业务处理落库
commonEquipDataProcessService.dealBizDataForEquip(record, registerChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, factoryChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, designChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, useInfoChangeDataDto);
// 设备技术参数入库处理
commonEquipDataProcessService.updateTechParamInfo(registerChangeDataDto, record, changeData, allChangeColumns);
return allChangeColumns;
}
@Override
public IBizDataChangeHandleStrategy.ModelType canHandleMode() {
return DefaultBizDataChangeHandler.ModelType.singleCylinder;
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
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;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 单个维护设备-策略实现类
*/
@Component
@RequiredArgsConstructor
public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy {
private final CommonEquipDataProcessService commonEquipDataProcessService;
@Override
public List<FieldChangeMeta> handle(Map<String, Object> changeData, String record) {
List<FieldChangeMeta> allChangeColumns = new ArrayList<>();
// 新数据解析
EquipRegisterChangeDataDto registerChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipRegisterChangeDataDto.class);
EquipFactoryChangeDataDto factoryChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipFactoryChangeDataDto.class);
EquipDesignChangeDataDto designChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipDesignChangeDataDto.class);
EquipUseInfoChangeDataDto useInfoChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, EquipUseInfoChangeDataDto.class);
commonEquipDataProcessService.buildChangeFields(record, designChangeDataDto, factoryChangeDataDto, registerChangeDataDto, useInfoChangeDataDto, allChangeColumns);
// 前置校验
commonEquipDataProcessService.checkValidField(record, registerChangeDataDto, null, null, null);
commonEquipDataProcessService.checkValidField(record, factoryChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
commonEquipDataProcessService.checkValidField(record, designChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
// 设备制造、设计、注册信息业务处理落库
commonEquipDataProcessService.dealBizDataForEquip(record, registerChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, factoryChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, designChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, useInfoChangeDataDto);
// 设备技术参数入库处理
commonEquipDataProcessService.updateTechParamInfo(registerChangeDataDto, record, changeData, allChangeColumns);
return allChangeColumns;
}
@Override
public IBizDataChangeHandleStrategy.ModelType canHandleMode() {
return DefaultBizDataChangeHandler.ModelType.singleEquip;
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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.ProjectContraptionChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.TechParamsPipelineChangeFieldDto;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
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;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 单个装置维护-策略实现类
*/
@Component
@RequiredArgsConstructor
public class SingleProjectEquipChangeProcess implements IEquipChangeDataProcessStrategy {
private final CommonEquipDataProcessService commonEquipDataProcessService;
private final PieLineDataChangeServiceImpl pieLineDataChangeService;
@Override
public List<FieldChangeMeta> handle(Map<String, Object> changeData, String defaultChangeId) {
JSONObject data = (JSONObject) changeData;
// 新增编辑的管道------------------tableData
JSONArray insertOrEditPieLines = data.getJSONArray(RequestChangeData.multiDataKey);
// 删除的管道---------------------deleteData
JSONArray deletedPieLines = data.getJSONArray(RequestChangeData.deletedDataKey);
List<FieldChangeMeta> allChangeColumns = new ArrayList<>();
List<PipelineChangeItemDto> items = insertOrEditPieLines.toJavaList(PipelineChangeItemDto.class);
// 1.设备技术参数入库前校验,约束:同一个装置下的管道编号不能重复
if (items.size() != items.stream().map(TechParamsPipelineChangeFieldDto::getPipelineNumber).distinct().count()) {
throw new BadRequest("同一工程装置下管道编号不能重复!");
}
if (deletedPieLines != null && !deletedPieLines.isEmpty()) {
List<PipelineChangeItemDto> deletedPieLinesJavaList = deletedPieLines.toJavaList(PipelineChangeItemDto.class);
pieLineDataChangeService.deletePieLineBatch(deletedPieLinesJavaList, allChangeColumns, defaultChangeId);
}
// 2.装置基本信息校验、保存(前端返回的装置信息为大写 需注意)
ProjectContraptionChangeDataDto projectContraptionChangeDataDto = CommonEquipDataProcessService.castMap2Bean(changeData, ProjectContraptionChangeDataDto.class);
this.calTotalPieLineLength(projectContraptionChangeDataDto, items);
pieLineDataChangeService.update(projectContraptionChangeDataDto, allChangeColumns);
// 3.管道信息入库保存
items.forEach(item -> {
String record = item.getRecord();
if (record == null) { // 新增的管道逻辑
pieLineDataChangeService.newPieLine(projectContraptionChangeDataDto.getProjectContraptionId(), item, allChangeColumns, defaultChangeId);
} else { // 更新逻辑
// 设计信息更新
pieLineDataChangeService.saveDesignForPieLine(record, allChangeColumns, item);
// 技术参数入库保存
TechParamsPipelineChangeFieldDto paramsPipelineChangeFieldDto = new TechParamsPipelineChangeFieldDto();
BeanUtil.copyProperties(item, paramsPipelineChangeFieldDto, false);
commonEquipDataProcessService.savePieLineTechParam(record, allChangeColumns, paramsPipelineChangeFieldDto);
}
});
// 4.更新所有管道的的冗余的管道名称字段(重点注意包括本次没做使用登记的管道也要更新)
pieLineDataChangeService.updateEs(projectContraptionChangeDataDto);
return allChangeColumns;
}
private void calTotalPieLineLength(ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<PipelineChangeItemDto> items) {
projectContraptionChangeDataDto.setPipelineLength(items.stream().filter(i -> i.getPipeLength() != null).mapToDouble(TechParamsPipelineChangeFieldDto::getPipeLength).sum());
}
private Map<String, Object> cast2UnderCase(Map<String, Object> re) {
// 由于历史遗留问题,和前端保存统一,要转成大写下滑线驼峰
Map<String, Object> result = new HashMap<>();
re.forEach((k, v) -> {
result.put(CharSequenceUtil.toUnderlineCase(k).toUpperCase(), v);
});
return result;
}
@Override
public IBizDataChangeHandleStrategy.ModelType canHandleMode() {
return DefaultBizDataChangeHandler.ModelType.singleProject;
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.strategy.IBizDataChangeHandleStrategy;
import java.util.List;
import java.util.Map;
/**
* 处理监策略类
*/
public interface IEquipChangeDataProcessStrategy {
/**
* 处理
*/
List<FieldChangeMeta> handle(Map<String, Object> changeData, String defaultChangeId);
/**
* 可处理类型
*
* @return 可处理的类型
*/
IBizDataChangeHandleStrategy.ModelType canHandleMode();
}
package com.yeejoin.amos.boot.module.jg.biz.edit.utils;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class ReflectiveFieldAccessor {
private static final Map<Class<?>, List<Field>> fieldCache = new ConcurrentHashMap<>();
public static List<Field> getAllFields(Class<?> clazz) {
return fieldCache.computeIfAbsent(clazz, k -> {
Class<?> clazz1 = clazz;
List<Field> fields = new ArrayList<>();
while (clazz1 != null && clazz1 != Object.class) {
fields.addAll(Arrays.asList(clazz1.getDeclaredFields()));
clazz1 = clazz1.getSuperclass(); // 递归向上获取父类
}
return Collections.unmodifiableList(fields);
});
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import org.springframework.context.ApplicationEvent;
public interface IChangeEventBizHandler<T extends ApplicationEvent> {
void handle(T event);
Boolean supports(T event);
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
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.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;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
private final JgInstallationNoticeServiceImpl jgInstallationNoticeService;
private final JgBizChangeLogServiceImpl jgBizChangeLogService;
@Override
@Async
public void handle(ChangeDataEvent event) {
log.info("开始更新安装告知json数据:{}", event);
// 查询关联的单据-未删除且已完成状态
Set<Long> installationNoticeIds = this.getRelationInstallNoticeList(event);
// 更新历史json
installationNoticeIds.forEach(seq -> {
// 更新json
JgInstallationNotice installationNotice = jgInstallationNoticeService.getById(seq);
// 查询之前数据json
JSONObject beforeData = jgInstallationNoticeService.getHisData(installationNotice);
jgInstallationNoticeService.saveHisDataBeforeUpdate(installationNotice);
// 查询之后数据json
JSONObject afterData = jgInstallationNoticeService.getHisData(installationNotice);
// es记录日志
this.log2es(beforeData, afterData, installationNotice, event);
});
log.info("更新安装告知的单据数量:{}", installationNoticeIds.size());
}
private void log2es(JSONObject beforeData, JSONObject afterData, JgInstallationNotice installationNotice, ChangeDataEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable("tzs_jg_installation_notice");
changeLog.setRecDate(date);
changeLog.setBizId(installationNotice.getApplyNo());
// todo 与原始编辑进行关联
changeLog.setOId(event.getRequestContext().getTraceId());
changeLog.setBizType("installationNotice");
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
ESDataChangeLogDto esDataChangeLogDto = new ESDataChangeLogDto();
esDataChangeLogDto.setColumnKey("changeData");
esDataChangeLogDto.setColumnKeyLabel("历史json数据");
esDataChangeLogDto.setBeforeData(beforeData.toJSONString());
esDataChangeLogDto.setAfterData(afterData.toJSONString());
esDataChangeLogDto.setUserId(event.getRequestContext().getExcutedUserId());
esDataChangeLogDto.setCreateDate(date.getTime());
esDataChangeLogDto.setRequestDate(DateUtil.formatDateTime(date));
esDataChangeLogDto.setChangeId(installationNotice.getApplyNo());
esDataChangeLogDto.setColumnFamily("tzs_jg_installation_notice");
esDataChangeLogDto.setBizType(changeLog.getBizType());
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
private Set<Long> getRelationInstallNoticeList(ChangeDataEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
// 查询关联的单据-已完成时更新其json
return jgInstallationNoticeService.getBaseMapper().queryListByEqsAndStatus(records, FlowStatusEnum.TO_BE_FINISHED.getCode() + "");
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
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.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;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class MaintenanceContractChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
private final JgMaintenanceContractServiceImpl jgMaintenanceContractService;
private final JgBizChangeLogServiceImpl jgBizChangeLogService;
@Override
@Async
public void handle(ChangeDataEvent event) {
log.info("开始更新维保备案json数据:{}", event);
// 查询关联的单据-未删除且已完成状态
Set<Long> maintenanceContractList = this.getRelationMaintenanceContractList(event);
// 更新历史json
maintenanceContractList.forEach(seq -> {
// 更新json
JgMaintenanceContract maintenanceContract = jgMaintenanceContractService.getById(seq);
// 查询之前数据json
JSONArray beforeData = jgMaintenanceContractService.getHisData(maintenanceContract);
jgMaintenanceContractService.updateHisDataAfterEquipEdit(maintenanceContract);
// 查询之后数据json
JSONArray afterData = jgMaintenanceContractService.getHisData(maintenanceContract);
// es记录日志
this.log2es(beforeData, afterData, maintenanceContract, event);
});
log.info("更新维保备案的单据数量:{}", maintenanceContractList.size());
}
private Set<Long> getRelationMaintenanceContractList(ChangeDataEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
// 查询关联的单据-已完成时更新其json
return jgMaintenanceContractService.getBaseMapper().queryListByEqsAndStatus(records, FlowStatusEnum.TO_BE_FINISHED.getName());
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
}
private void log2es(JSON beforeData, JSON afterData, JgMaintenanceContract maintenanceContract, ChangeDataEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable("tzs_jg_maintenance_contract");
changeLog.setRecDate(date);
changeLog.setBizId(maintenanceContract.getApplyNo());
// todo 与原始编辑进行关联
changeLog.setOId(event.getRequestContext().getTraceId());
changeLog.setBizType("maintenanceContract");
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
ESDataChangeLogDto esDataChangeLogDto = new ESDataChangeLogDto();
esDataChangeLogDto.setColumnKey("changeData");
esDataChangeLogDto.setColumnKeyLabel("历史json数据");
esDataChangeLogDto.setBeforeData(beforeData.toJSONString());
esDataChangeLogDto.setAfterData(afterData.toJSONString());
esDataChangeLogDto.setUserId(event.getRequestContext().getExcutedUserId());
esDataChangeLogDto.setCreateDate(date.getTime());
esDataChangeLogDto.setRequestDate(DateUtil.formatDateTime(date));
esDataChangeLogDto.setChangeId(maintenanceContract.getApplyNo());
esDataChangeLogDto.setColumnFamily("tzs_jg_maintenance_contract");
esDataChangeLogDto.setBizType(changeLog.getBizType());
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
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.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;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
private final JgUseRegistrationServiceImpl jgUseRegistrationService;
private final JgBizChangeLogServiceImpl jgBizChangeLogService;
private final UseRegisterUpdateService registerUpdateService;
@Override
@Async
public void handle(ChangeDataEvent event) {
log.info("开始更新使用登记json数据:{}", event);
// 查询关联的单据-未删除且已完成状态-不包括原始使用登记的修改
Set<Long> useRegistrationIds = this.getRelationUseRegisterList(event);
// 更新历史json
useRegistrationIds.forEach(seq -> {
// 更新json
JgUseRegistration useRegistration = jgUseRegistrationService.getById(seq);
// 查询之前数据json
JSONObject beforeData = jgUseRegistrationService.getHisData(useRegistration);
registerUpdateService.updateHisData(useRegistration.getApplyNo());
// 查询之后数据json
JSONObject afterData = jgUseRegistrationService.getHisData(useRegistration);
// es记录日志
this.log2es(beforeData, afterData, useRegistration, event);
});
log.info("更新使用登记的单据数量:{}", useRegistrationIds.size());
}
private void log2es(JSONObject beforeData, JSONObject afterData, JgUseRegistration jgUseRegistration, ChangeDataEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setRecDate(date);
changeLog.setBizId(jgUseRegistration.getApplyNo());
// todo 与原始编辑进行关联
changeLog.setOId(event.getRequestContext().getTraceId());
changeLog.setBizType(changeLog.getBizType());
changeLog.setBizTable("tzs_jg_use_registration");
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
ESDataChangeLogDto esDataChangeLogDto = new ESDataChangeLogDto();
esDataChangeLogDto.setColumnKey("changeData");
esDataChangeLogDto.setColumnKeyLabel("历史json数据");
esDataChangeLogDto.setBeforeData(beforeData.toJSONString());
esDataChangeLogDto.setAfterData(afterData.toJSONString());
esDataChangeLogDto.setUserId(event.getRequestContext().getExcutedUserId());
esDataChangeLogDto.setCreateDate(date.getTime());
esDataChangeLogDto.setRequestDate(DateUtil.formatDateTime(date));
esDataChangeLogDto.setChangeId(jgUseRegistration.getApplyNo());
esDataChangeLogDto.setColumnFamily(changeLog.getBizTable());
esDataChangeLogDto.setBizType(changeLog.getBizType());
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
private Set<Long> getRelationUseRegisterList(ChangeDataEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
String applyNo = event.getBizRelationData().getBizId();
// 查询设备关联的已完成状态的单据-来更新其json
return jgUseRegistrationService.getBaseMapper().queryListByEqsAndStatus(records, FlowStatusEnum.TO_BE_FINISHED.getName(), applyNo);
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEvent;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionalEventListener;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.stream.IntStream;
/**
* @author Administrator
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class RelationBizApplyUpdateListener {
@Value("${relation.data.deal.thread.number:1}")
private int threadNumber;
private final List<IChangeEventBizHandler<ApplicationEvent>> changeUpdateHandlers;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>();
@TransactionalEventListener(value = ChangeDataEvent.class)
@Async
public void handleTransactionalEvent(ChangeDataEvent event) {
log.info("收到用户变更业务数据消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
@PostConstruct
public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
IntStream.range(0, threadNumber).forEach(i -> {
executorService.execute(() -> {
while (true) {
try {
ChangeDataEvent event = queue.take();
processEvent(event);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
});
}
private void processEvent(ChangeDataEvent event) {
changeUpdateHandlers.stream().filter(h -> h.supports(event)).forEach(h -> {
log.info("处理器:{}", JSONObject.toJSONString(h));
h.handle(event);
});
}
}
...@@ -157,7 +157,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -157,7 +157,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
private static final String EQUIP_MAINPARTS_FORM_ID = "mainParts"; private static final String EQUIP_MAINPARTS_FORM_ID = "mainParts";
// 安全附件 // 安全附件
private static final String EQUIP_PROTECTIONDEVICES_FORM_ID = "protectionDevices"; private static final String EQUIP_PROTECTIONDEVICES_FORM_ID = "protectionDevices";
private static final String EQUSTATE = "EQU_STATE"; public static final String EQUSTATE = "EQU_STATE";
private static final String CONSTRUCTIONTYPE = "CONSTRUCTION_TYPE"; private static final String CONSTRUCTIONTYPE = "CONSTRUCTION_TYPE";
// 新增修改标识 // 新增修改标识
private static final String OPERATESAVE = "save"; private static final String OPERATESAVE = "save";
...@@ -172,12 +172,12 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -172,12 +172,12 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
private static final String RECORD = "RECORD"; private static final String RECORD = "RECORD";
private static final String MANAGE_TYPE = "manageType"; private static final String MANAGE_TYPE = "manageType";
// 设备代码 // 设备代码
private static final String EQU_CODE = "EQU_CODE"; public static final String EQU_CODE = "EQU_CODE";
// 96333识别码 // 96333识别码
private static final String CODE96333 = "CODE96333"; private static final String CODE96333 = "CODE96333";
private static final String SEQUENCE_NBR = "SEQUENCE_NBR"; private static final String SEQUENCE_NBR = "SEQUENCE_NBR";
private static final String OTHERINFO_SEQ = "OTHERINFO_SEQ"; private static final String OTHERINFO_SEQ = "OTHERINFO_SEQ";
private static final String FACTORY_NUM = "FACTORY_NUM"; public static final String FACTORY_NUM = "FACTORY_NUM";
// 新增设备是否复制而来 // 新增设备是否复制而来
private static final String IS_COPY = "isCopy"; private static final String IS_COPY = "isCopy";
private static final String ATTACHMENT_UPLOAD = "attachmentUpload"; private static final String ATTACHMENT_UPLOAD = "attachmentUpload";
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.dto.JgBizChangeLogDto; import com.yeejoin.amos.boot.module.jg.api.dto.JgBizChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog; import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
...@@ -11,6 +12,7 @@ import org.springframework.stereotype.Service; ...@@ -11,6 +12,7 @@ import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* 服务实现类 * 服务实现类
...@@ -34,4 +36,9 @@ public class JgBizChangeLogServiceImpl extends BaseService<JgBizChangeLogDto, Jg ...@@ -34,4 +36,9 @@ public class JgBizChangeLogServiceImpl extends BaseService<JgBizChangeLogDto, Jg
esDataChangeLogDao.saveAll(esDataChangeLogDtos); esDataChangeLogDao.saveAll(esDataChangeLogDtos);
} }
} }
@Override
public IPage<?> queryPageListByChangeIds(Set<String> changeIds) {
return null;
}
} }
\ No newline at end of file
...@@ -63,6 +63,7 @@ import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO; ...@@ -63,6 +63,7 @@ import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO; import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO; import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import io.seata.spring.annotation.GlobalTransactional; import io.seata.spring.annotation.GlobalTransactional;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.compress.utils.Lists; import org.apache.commons.compress.utils.Lists;
...@@ -121,6 +122,7 @@ import static java.util.stream.Collectors.toSet; ...@@ -121,6 +122,7 @@ import static java.util.stream.Collectors.toSet;
*/ */
@Service @Service
@Slf4j @Slf4j
@Getter
public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationDto, JgUseRegistration, JgUseRegistrationMapper> implements IJgUseRegistrationService, ICompensateFlowDataOfRedis<JgUseRegistration>, ApplicationContextAware { public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationDto, JgUseRegistration, JgUseRegistrationMapper> implements IJgUseRegistrationService, ICompensateFlowDataOfRedis<JgUseRegistration>, ApplicationContextAware {
private static final String DEFINITION_KEY = "useRegistration"; private static final String DEFINITION_KEY = "useRegistration";
...@@ -242,6 +244,9 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -242,6 +244,9 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
@Autowired @Autowired
private CommonMapper commonMapper; private CommonMapper commonMapper;
@Autowired
private IdxBizJgInspectionDetectionInfoServiceImpl inspectionDetectionInfoService;
/** /**
* @param auditPassDate 通过时间 * @param auditPassDate 通过时间
...@@ -2383,7 +2388,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2383,7 +2388,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
return record; return record;
} }
private Map<String, Object> getInspectDetail(String record) { public Map<String, Object> getInspectDetail(String record) {
// 去掉约束 // 去掉约束
return this.baseMapper.getInspectDetail(record, null); return this.baseMapper.getInspectDetail(record, null);
} }
......
...@@ -2,8 +2,8 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl; ...@@ -2,8 +2,8 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.*; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent; import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.CommonEquipDataProcessService;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher; import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -17,18 +17,14 @@ import java.util.Map; ...@@ -17,18 +17,14 @@ import java.util.Map;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStrategy { public class SingleManageEquipEditHandleImpl {
private final CommonEquipDataProcessService commonEquipDataProcessService; private final CommonEquipDataProcessService commonEquipDataProcessService;
private final EventPublisher publisher; private final EventPublisher publisher;
@Override public static final String BIZ_TYPE = "singleManageEquipEdit";
public String canHandleBizType() {
return "singleManageEquipEdit";
}
@Override public Map<String, ?> getDetail(String applyNo, String bizId) {
public Map<String, ?> getDetail(String applyNo, ModelType model, String bizId) {
return this.getDetailByBizId(bizId); return this.getDetailByBizId(bizId);
} }
...@@ -50,10 +46,10 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra ...@@ -50,10 +46,10 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra
return commonEquipDataProcessService.cast2UnderCase(re); return commonEquipDataProcessService.cast2UnderCase(re);
} }
@Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void doSave(String record, ModelType model, Map<String, Object> changeData) { public void doSave(String record, Map<String, Object> changeData) {
List<ChangeDataDto> allChangeColumns = this.update(record, changeData); List<FieldChangeMeta> allChangeColumns = this.update(record, changeData);
// 记录流水 // 记录流水
if (!allChangeColumns.isEmpty()) { if (!allChangeColumns.isEmpty()) {
// 更新历史的JSON的数据 // 更新历史的JSON的数据
...@@ -63,16 +59,17 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra ...@@ -63,16 +59,17 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra
} }
} }
private void publishEvent2Logger(String record, List<ChangeDataDto> allChangeColumns) { private void publishEvent2Logger(String record, List<FieldChangeMeta> allChangeColumns) {
BizRelationDataDto relationDataDto = new BizRelationDataDto(); BizRelationDataDto relationDataDto = new BizRelationDataDto();
relationDataDto.setBizId(record); 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()));
} }
private List<ChangeDataDto> update(String record, Map<String, Object> changeData) {
List<ChangeDataDto> allChangeColumns = new ArrayList<>(); private List<FieldChangeMeta> update(String record, Map<String, Object> changeData) {
List<FieldChangeMeta> allChangeColumns = new ArrayList<>();
// 新数据解析 // 新数据解析
EquipRegisterChangeDataDto registerChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipRegisterChangeDataDto.class); EquipRegisterChangeDataDto registerChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipRegisterChangeDataDto.class);
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipFactoryChangeDataDto.class); EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipFactoryChangeDataDto.class);
...@@ -92,7 +89,7 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra ...@@ -92,7 +89,7 @@ public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStra
} }
private void buildLogData(List<ChangeDataDto> allChangeColumns) { private void buildLogData(List<FieldChangeMeta> allChangeColumns) {
allChangeColumns.forEach(column -> { allChangeColumns.forEach(column -> {
column.setBizType("监管端编辑设备信息"); column.setBizType("监管端编辑设备信息");
}); });
......
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 final static String BIZ_TYPE = "useRegister";
public UseRegisterDataChangeHandleImpl(EventPublisher publisher, UseRegisterUpdateService useRegisterUpdateService) {
this.publisher = publisher;
this.useRegisterUpdateService = useRegisterUpdateService;
}
@Override
public String canHandleBizType() {
return BIZ_TYPE;
}
/**
* 保存
*
* @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 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()));
}
private void updateHistoryJson(String applyNo) {
useRegisterUpdateService.updateHisData(applyNo);
}
private void buildLogData(List<ChangeDataDto> allChangeColumns) {
allChangeColumns.forEach(column -> {
column.setBizType("使用登记");
});
}
@Override
public Map<String, ?> getDetail(String applyNo, ModelType model, String bizId) {
IChangeDataProcessStrategy dataProcessor = DataProcessStrategyContext.getStrategy(model);
// 兼容:台套类打开变更详情(使用applyNo) 和 单位办理批量时选择单个设备打开详情(使用record)
return dataProcessor.getDetail(applyNo, bizId);
}
}
package com.yeejoin.amos.boot.module.ymt.api.entity; package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.common.api.dto.IBaseChangeData;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.Date; import java.util.Date;
/** /**
...@@ -19,8 +23,8 @@ import java.util.Date; ...@@ -19,8 +23,8 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_construction_info") @TableName("idx_biz_jg_construction_info")
public class IdxBizJgConstructionInfo extends TzsBaseEntity { @Group("idx_biz_jg_construction_info")
public class IdxBizJgConstructionInfo extends TzsBaseEntity implements IBaseChangeData {
/** /**
...@@ -57,12 +61,14 @@ public class IdxBizJgConstructionInfo extends TzsBaseEntity { ...@@ -57,12 +61,14 @@ public class IdxBizJgConstructionInfo extends TzsBaseEntity {
* 施工单位名称 * 施工单位名称
*/ */
@TableField("\"USC_UNIT_NAME\"") @TableField("\"USC_UNIT_NAME\"")
@FieldDisplayDefine(value = "施工单位名称")
private String uscUnitName; private String uscUnitName;
/** /**
* 施工时间 * 施工日期
*/ */
@TableField("\"USC_DATE\"") @TableField("\"USC_DATE\"")
@FieldDisplayDefine(value = "施工日期")
private Date uscDate; private Date uscDate;
/** /**
...@@ -98,31 +104,35 @@ public class IdxBizJgConstructionInfo extends TzsBaseEntity { ...@@ -98,31 +104,35 @@ public class IdxBizJgConstructionInfo extends TzsBaseEntity {
* 施工负责人 * 施工负责人
*/ */
@TableField(value = "\"CONSTRUCTION_LEADER_NAME\"") @TableField(value = "\"CONSTRUCTION_LEADER_NAME\"")
@FieldDisplayDefine(value = "施工负责人")
private String constructionLeaderName; private String constructionLeaderName;
/** /**
* 施工负责人手机 * 施工负责人手机
*/ */
@TableField(value = "\"CONSTRUCTION_LEADER_PHONE\"") @TableField(value = "\"CONSTRUCTION_LEADER_PHONE\"")
@FieldDisplayDefine(value = "施工负责人手机")
private String constructionLeaderPhone; private String constructionLeaderPhone;
/** /**
* 施工委托书图片 * 施工委托书附件
*/ */
@TableField(value = "\"PROXY_STATEMENT_ATTACHMENT\"") @TableField(value = "\"PROXY_STATEMENT_ATTACHMENT\"")
@FieldDisplayDefine(value = "施工委托书附件", type = JSON.class)
private String proxyStatementAttachment; private String proxyStatementAttachment;
/** /**
* 施工合同照片 * 施工合同照片
*/ */
@TableField(value = "\"CONSTRUCTION_CONTRACT_ATTACHMENT\"") @TableField(value = "\"CONSTRUCTION_CONTRACT_ATTACHMENT\"")
@FieldDisplayDefine(value = "施工合同附件", type = JSON.class)
private String constructionContractAttachment; private String constructionContractAttachment;
/** /**
* 其他附件 * 其他附件
*/ */
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
@TableField(value = "\"CONSTRUCTION_OTHER_ACCESSORIES\"") @TableField(value = "\"CONSTRUCTION_OTHER_ACCESSORIES\"")
private String constructionOtherAccessories; private String constructionOtherAccessories;
} }
package com.yeejoin.amos.boot.module.ymt.api.entity; package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
...@@ -7,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -7,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -25,6 +28,7 @@ import java.util.Date; ...@@ -25,6 +28,7 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_factory_info") @TableName("idx_biz_jg_factory_info")
@Group(value = "idx_biz_jg_factory_info")
public class IdxBizJgFactoryInfo extends TzsBaseEntity { public class IdxBizJgFactoryInfo extends TzsBaseEntity {
...@@ -51,60 +55,70 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity { ...@@ -51,60 +55,70 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"PRODUCE_UNIT_CREDIT_CODE\"") @TableField("\"PRODUCE_UNIT_CREDIT_CODE\"")
@FieldDisplayDefine(value = "制造单位统一社会信用代码")
private String produceUnitCreditCode; private String produceUnitCreditCode;
/** /**
* *
*/ */
@TableField("\"PRODUCE_UNIT_NAME\"") @TableField("\"PRODUCE_UNIT_NAME\"")
@FieldDisplayDefine(value = "制造单位名称")
private String produceUnitName; private String produceUnitName;
/** /**
* *
*/ */
@TableField("\"PRODUCE_LICENSE_NUM\"") @TableField("\"PRODUCE_LICENSE_NUM\"")
@FieldDisplayDefine(value = "制造许可编号")
private String produceLicenseNum; private String produceLicenseNum;
/** /**
* *
*/ */
@TableField("\"FACTORY_NUM\"") @TableField("\"FACTORY_NUM\"")
@FieldDisplayDefine(value = "出厂编号/产品编号")
private String factoryNum; private String factoryNum;
/** /**
* *
*/ */
@TableField("\"PRODUCE_DATE\"") @TableField("\"PRODUCE_DATE\"")
@FieldDisplayDefine(value = "制造日期")
private Date produceDate; private Date produceDate;
/** /**
* *
*/ */
@TableField("\"IMPORTED\"") @TableField("\"IMPORTED\"")
@FieldDisplayDefine(value = "是否进口")
private String imported; private String imported;
/** /**
* *
*/ */
@TableField("\"PRODUCE_COUNTRY\"") @TableField("\"PRODUCE_COUNTRY\"")
@FieldDisplayDefine(value = "制造国")
private String produceCountry; private String produceCountry;
/** /**
* *
*/ */
@TableField("\"FACTORY_STANDARD\"") @TableField("\"FACTORY_STANDARD\"")
@FieldDisplayDefine(value = "制造标准", type = JSON.class)
private String factoryStandard; private String factoryStandard;
/** /**
* *
*/ */
@TableField("\"PRODUCT_QUALITY_YIELD_PROVE\"") @TableField("\"PRODUCT_QUALITY_YIELD_PROVE\"")
@FieldDisplayDefine(value = "产品质量合格证", type = JSON.class)
private String productQualityYieldProve; private String productQualityYieldProve;
/** /**
* *
*/ */
@TableField("\"INS_USE_MAINTAIN_EXPLAIN\"") @TableField("\"INS_USE_MAINTAIN_EXPLAIN\"")
@FieldDisplayDefine(value = "安装及使用维护保养说明", type = JSON.class)
private String insUseMaintainExplain; private String insUseMaintainExplain;
/** /**
...@@ -132,6 +146,7 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity { ...@@ -132,6 +146,7 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity {
* */ * */
@TableField(value = "\"FACT_SUPERVISION_INSPECTION_REPORT\"") @TableField(value = "\"FACT_SUPERVISION_INSPECTION_REPORT\"")
@FieldDisplayDefine(value = "制造监督检验报告", type = JSON.class)
private String factSupervisionInspectionReport; private String factSupervisionInspectionReport;
...@@ -140,6 +155,7 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity { ...@@ -140,6 +155,7 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity {
*/ */
@TableField(value = "\"BOILER_ENERGY_EFFICIENCY_CERTIFICATE\"") @TableField(value = "\"BOILER_ENERGY_EFFICIENCY_CERTIFICATE\"")
@FieldDisplayDefine(value = "锅炉能效证明文件", type = JSON.class)
private String boilerEnergyEfficiencyCertificate; private String boilerEnergyEfficiencyCertificate;
...@@ -147,6 +163,7 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity { ...@@ -147,6 +163,7 @@ public class IdxBizJgFactoryInfo extends TzsBaseEntity {
* 资料是否完整齐全:1-齐全;2-不齐全【历史无证设备需要】 * 资料是否完整齐全:1-齐全;2-不齐全【历史无证设备需要】
*/ */
@TableField("\"FACTORY_IS_COMPLETE\"") @TableField("\"FACTORY_IS_COMPLETE\"")
@FieldDisplayDefine(value = "制造资料是否完整齐全")
private String factoryIsComplete; private String factoryIsComplete;
} }
package com.yeejoin.amos.boot.module.ymt.api.entity; package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.common.api.dto.IBaseChangeData;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -19,7 +23,8 @@ import java.util.Date; ...@@ -19,7 +23,8 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_inspection_detection_info") @TableName("idx_biz_jg_inspection_detection_info")
public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity { @Group("idx_biz_jg_inspection_detection_info")
public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity implements IBaseChangeData {
...@@ -45,24 +50,28 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity { ...@@ -45,24 +50,28 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"INSPECT_TYPE\"") @TableField("\"INSPECT_TYPE\"")
@FieldDisplayDefine(value ="检验类型")
private String inspectType; private String inspectType;
/** /**
* *
*/ */
@TableField("\"INSPECT_ORG_CODE\"") @TableField("\"INSPECT_ORG_CODE\"")
@FieldDisplayDefine(value ="检验机构统一信用代码")
private String inspectOrgCode; private String inspectOrgCode;
/** /**
* *
*/ */
@TableField("\"INSPECT_ORG_NAME\"") @TableField("\"INSPECT_ORG_NAME\"")
@FieldDisplayDefine(value ="检验机构名称")
private String inspectOrgName; private String inspectOrgName;
/** /**
* *
*/ */
@TableField("\"INSPECT_REPORT\"") @TableField("\"INSPECT_REPORT\"")
@FieldDisplayDefine(value ="检验报告", type = JSON.class)
private String inspectReport; private String inspectReport;
/** /**
...@@ -75,12 +84,14 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity { ...@@ -75,12 +84,14 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"INSPECT_DATE\"") @TableField("\"INSPECT_DATE\"")
@FieldDisplayDefine(value ="检验日期")
private Date inspectDate; private Date inspectDate;
/** /**
* *
*/ */
@TableField("\"INSPECT_CONCLUSION\"") @TableField("\"INSPECT_CONCLUSION\"")
@FieldDisplayDefine(value ="检验结论")
private String inspectConclusion; private String inspectConclusion;
/** /**
...@@ -99,6 +110,7 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity { ...@@ -99,6 +110,7 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"NEXT_INSPECT_DATE\"") @TableField("\"NEXT_INSPECT_DATE\"")
@FieldDisplayDefine(value = "下次检验日期")
private Date nextInspectDate; private Date nextInspectDate;
/** /**
...@@ -111,6 +123,7 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity { ...@@ -111,6 +123,7 @@ public class IdxBizJgInspectionDetectionInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"INSPECT_REPORT_NO\"") @TableField("\"INSPECT_REPORT_NO\"")
@FieldDisplayDefine(value ="检验报告编号")
private String inspectReportNo; private String inspectReportNo;
@TableField(exist = false) @TableField(exist = false)
......
package com.yeejoin.amos.boot.module.ymt.api.entity; package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.common.api.dto.IBaseChangeData;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -19,7 +23,8 @@ import java.util.Date; ...@@ -19,7 +23,8 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_maintenance_record_info") @TableName("idx_biz_jg_maintenance_record_info")
public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity { @Group("idx_biz_jg_maintenance_record_info")
public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity implements IBaseChangeData {
...@@ -47,36 +52,42 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity { ...@@ -47,36 +52,42 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"ME_UNIT_CREDIT_CODE\"") @TableField("\"ME_UNIT_CREDIT_CODE\"")
@FieldDisplayDefine(value = "维保单位统一信用代码")
private String meUnitCreditCode; private String meUnitCreditCode;
/** /**
* *
*/ */
@TableField("\"ME_UNIT_NAME\"") @TableField("\"ME_UNIT_NAME\"")
@FieldDisplayDefine(value = "维保单位名称")
private String meUnitName; private String meUnitName;
/** /**
* 维保备案合同 * 维保备案合同
*/ */
@TableField("\"REPAIR_INFORM\"") @TableField("\"REPAIR_INFORM\"")
@FieldDisplayDefine(value = "维保备案合同附件", type = JSON.class)
private String repairInform; private String repairInform;
/** /**
* 维保合同开始日期 * 维保合同开始日期
*/ */
@TableField("\"INFORM_START\"") @TableField("\"INFORM_START\"")
@FieldDisplayDefine(value = "维保合同开始日期")
private Date informStart; private Date informStart;
/** /**
* 维保合同结束日期 * 维保合同结束日期
*/ */
@TableField("\"INFORM_END\"") @TableField("\"INFORM_END\"")
@FieldDisplayDefine(value = "维保合同结束日期")
private Date informEnd; private Date informEnd;
/** /**
*维保负责人1姓名 *维保负责人1姓名
*/ */
@TableField("\"ME_MASTER\"") @TableField("\"ME_MASTER\"")
@FieldDisplayDefine(value = "维保负责人1姓名")
private String meMaster; private String meMaster;
...@@ -84,6 +95,7 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity { ...@@ -84,6 +95,7 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity {
*维保负责人1身份证 *维保负责人1身份证
*/ */
@TableField("\"ME_MASTER_ID\"") @TableField("\"ME_MASTER_ID\"")
@FieldDisplayDefine(value = "维保负责人1身份证")
private String meMasterId; private String meMasterId;
...@@ -91,6 +103,7 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity { ...@@ -91,6 +103,7 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity {
*维保负责人1电话 *维保负责人1电话
*/ */
@TableField("\"ME_MASTER_PHONE\"") @TableField("\"ME_MASTER_PHONE\"")
@FieldDisplayDefine(value = "维保负责人1电话")
private String meMasterPhone; private String meMasterPhone;
...@@ -98,6 +111,7 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity { ...@@ -98,6 +111,7 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity {
*维保负责人2姓名 *维保负责人2姓名
*/ */
@TableField("\"ME_MASTER1\"") @TableField("\"ME_MASTER1\"")
@FieldDisplayDefine(value = "维保负责人2姓名")
private String meMaster1; private String meMaster1;
...@@ -105,12 +119,14 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity { ...@@ -105,12 +119,14 @@ public class IdxBizJgMaintenanceRecordInfo extends TzsBaseEntity {
*维保负责人2身份证 *维保负责人2身份证
*/ */
@TableField("\"ME_MASTER1_ID\"") @TableField("\"ME_MASTER1_ID\"")
@FieldDisplayDefine(value = "维保负责人2身份证")
private String meMaster1Id; private String meMaster1Id;
/** /**
*维保负责人2电话 *维保负责人2电话
*/ */
@FieldDisplayDefine(value = "维保负责人2电话")
@TableField("\"ME_MASTER1_PHONE\"") @TableField("\"ME_MASTER1_PHONE\"")
private String meMaster1Phone; private String meMaster1Phone;
......
package com.yeejoin.amos.boot.module.ymt.api.entity; package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -17,6 +20,7 @@ import lombok.experimental.Accessors; ...@@ -17,6 +20,7 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_register_info") @TableName("idx_biz_jg_register_info")
@Group(value = "idx_biz_jg_register_info")
public class IdxBizJgRegisterInfo extends TzsBaseEntity { public class IdxBizJgRegisterInfo extends TzsBaseEntity {
...@@ -57,6 +61,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -57,6 +61,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"USE_ORG_CODE\"") @TableField("\"USE_ORG_CODE\"")
@FieldDisplayDefine(value = "使用登记证编号")
private String useOrgCode; private String useOrgCode;
/** /**
...@@ -70,6 +75,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -70,6 +75,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* 设备代码类型手工输入(1)、系统自动生成(2) * 设备代码类型手工输入(1)、系统自动生成(2)
*/ */
@TableField("\"EQU_CODE_TYPE\"") @TableField("\"EQU_CODE_TYPE\"")
@FieldDisplayDefine(value = "设备代码类型")
private String equCodeType; private String equCodeType;
...@@ -77,6 +83,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -77,6 +83,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* 设备代码 * 设备代码
*/ */
@TableField("\"EQU_CODE\"") @TableField("\"EQU_CODE\"")
@FieldDisplayDefine(value = "设备代码")
private String equCode; private String equCode;
/** /**
...@@ -95,12 +102,14 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -95,12 +102,14 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"EQU_DEFINE\"") @TableField("\"EQU_DEFINE\"")
@FieldDisplayDefine(value = "设备品种")
private String equDefine; private String equDefine;
/** /**
* *
*/ */
@TableField("\"PRODUCT_NAME\"") @TableField("\"PRODUCT_NAME\"")
@FieldDisplayDefine(value = "产品名称")
private String productName; private String productName;
/** /**
...@@ -113,12 +122,14 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -113,12 +122,14 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"EQU_TYPE\"") @TableField("\"EQU_TYPE\"")
@FieldDisplayDefine(value = "设备型号")
private String equType; private String equType;
/** /**
* *
*/ */
@TableField("\"EQU_PRICE\"") @TableField("\"EQU_PRICE\"")
@FieldDisplayDefine(value = "设备总价值(万元)")
private String equPrice; private String equPrice;
/** /**
...@@ -137,6 +148,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -137,6 +148,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"PRODUCT_PHOTO\"") @TableField("\"PRODUCT_PHOTO\"")
@FieldDisplayDefine(value = "产品照片(可上传产品铭牌)", type = JSON.class)
private String productPhoto; private String productPhoto;
/** /**
...@@ -167,6 +179,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -167,6 +179,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"OTHER_ACCESSORIES_REG\"") @TableField("\"OTHER_ACCESSORIES_REG\"")
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessoriesReg; private String otherAccessoriesReg;
/** /**
...@@ -207,6 +220,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -207,6 +220,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* 2:其他 * 2:其他
*/ */
@TableField("\"CYLINDER_CATEGORY\"") @TableField("\"CYLINDER_CATEGORY\"")
@FieldDisplayDefine(value = "气瓶类别")
private String cylinderCategory; private String cylinderCategory;
...@@ -220,6 +234,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity { ...@@ -220,6 +234,7 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
* 安装资料是否完整齐全:1-齐全;2-不齐全【历史无证设备需要】 * 安装资料是否完整齐全:1-齐全;2-不齐全【历史无证设备需要】
*/ */
@TableField("\"INSTALLATION_IS_COMPLETE\"") @TableField("\"INSTALLATION_IS_COMPLETE\"")
@FieldDisplayDefine(value = "安装资料是否完整齐全")
private String installationIsComplete; private String installationIsComplete;
/** /**
......
...@@ -2,7 +2,10 @@ package com.yeejoin.amos.boot.module.ymt.api.entity; ...@@ -2,7 +2,10 @@ package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.common.api.dto.IBaseChangeData;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -17,7 +20,8 @@ import lombok.experimental.Accessors; ...@@ -17,7 +20,8 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_supervision_info") @TableName("idx_biz_jg_supervision_info")
public class IdxBizJgSupervisionInfo extends TzsBaseEntity { @Group("idx_biz_jg_supervision_info")
public class IdxBizJgSupervisionInfo extends TzsBaseEntity implements IBaseChangeData {
...@@ -44,6 +48,7 @@ public class IdxBizJgSupervisionInfo extends TzsBaseEntity { ...@@ -44,6 +48,7 @@ public class IdxBizJgSupervisionInfo extends TzsBaseEntity {
/** /**
* *
*/ */
@FieldDisplayDefine(value = "管辖分局组织机构代码")
@TableField("\"ORG_BRANCH_CODE\"") @TableField("\"ORG_BRANCH_CODE\"")
private String orgBranchCode; private String orgBranchCode;
/** /**
...@@ -51,12 +56,14 @@ public class IdxBizJgSupervisionInfo extends TzsBaseEntity { ...@@ -51,12 +56,14 @@ public class IdxBizJgSupervisionInfo extends TzsBaseEntity {
* */ * */
@TableField(value ="\"COMPANY_ORG_BRANCH_CODE\"") @TableField(value ="\"COMPANY_ORG_BRANCH_CODE\"")
@FieldDisplayDefine(value = "公司/组织机构代码")
private String companyOrgBranchCode; private String companyOrgBranchCode;
/** /**
* *
*/ */
@TableField("\"ORG_BRANCH_NAME\"") @TableField("\"ORG_BRANCH_NAME\"")
@FieldDisplayDefine(value = "管辖分局名称")
private String orgBranchName; private String orgBranchName;
/** /**
......
package com.yeejoin.amos.boot.module.ymt.api.entity; package com.yeejoin.amos.boot.module.ymt.api.entity;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.common.api.dto.IBaseChangeData;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -19,7 +23,8 @@ import java.util.Date; ...@@ -19,7 +23,8 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("idx_biz_jg_use_info") @TableName("idx_biz_jg_use_info")
public class IdxBizJgUseInfo extends TzsBaseEntity { @Group(value = "idx_biz_jg_use_info")
public class IdxBizJgUseInfo extends TzsBaseEntity implements IBaseChangeData {
/** /**
...@@ -44,24 +49,28 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -44,24 +49,28 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"USE_UNIT_CREDIT_CODE\"") @TableField("\"USE_UNIT_CREDIT_CODE\"")
@FieldDisplayDefine(value = "使用单位统一信用代码")
private String useUnitCreditCode; private String useUnitCreditCode;
/** /**
* *
*/ */
@TableField("\"USE_UNIT_NAME\"") @TableField("\"USE_UNIT_NAME\"")
@FieldDisplayDefine(value = "使用单位名称")
private String useUnitName; private String useUnitName;
/** /**
* *
*/ */
@TableField("\"ESTATE_UNIT_CREDIT_CODE\"") @TableField("\"ESTATE_UNIT_CREDIT_CODE\"")
@FieldDisplayDefine(value = "产权单位统一信用代码")
private String estateUnitCreditCode; private String estateUnitCreditCode;
/** /**
* *
*/ */
@TableField("\"ESTATE_UNIT_NAME\"") @TableField("\"ESTATE_UNIT_NAME\"")
@FieldDisplayDefine(value = "产权单位名称")
private String estateUnitName; private String estateUnitName;
/** /**
...@@ -80,12 +89,14 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -80,12 +89,14 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"USE_INNER_CODE\"") @TableField("\"USE_INNER_CODE\"")
@FieldDisplayDefine(value = "使用内部编号")
private String useInnerCode; private String useInnerCode;
/** /**
* *
*/ */
@TableField("\"USE_DATE\"") @TableField("\"USE_DATE\"")
@FieldDisplayDefine(value = "投用日期")
private String useDate; private String useDate;
/** /**
...@@ -98,42 +109,49 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -98,42 +109,49 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"PROVINCE\"") @TableField("\"PROVINCE\"")
@FieldDisplayDefine(value = "省份行政区划")
private String province; private String province;
/** /**
* *
*/ */
@TableField("\"CITY\"") @TableField("\"CITY\"")
@FieldDisplayDefine(value = "地市行政区划")
private String city; private String city;
/** /**
* *
*/ */
@TableField("\"COUNTY\"") @TableField("\"COUNTY\"")
@FieldDisplayDefine(value = "区县行政区划")
private String county; private String county;
/** /**
* *
*/ */
@TableField("\"FACTORY_USE_SITE_STREET\"") @TableField("\"FACTORY_USE_SITE_STREET\"")
@FieldDisplayDefine(value = "街道行政区划")
private String factoryUseSiteStreet; private String factoryUseSiteStreet;
/** /**
* *
*/ */
@TableField("\"ADDRESS\"") @TableField("\"ADDRESS\"")
@FieldDisplayDefine(value = "详细地址")
private String address; private String address;
/** /**
* *
*/ */
@TableField("\"LONGITUDE_LATITUDE\"") @TableField("\"LONGITUDE_LATITUDE\"")
@FieldDisplayDefine(value = "经纬度", type = JSON.class)
private String longitudeLatitude; private String longitudeLatitude;
/** /**
* *
*/ */
@TableField("\"USE_PLACE\"") @TableField("\"USE_PLACE\"")
@FieldDisplayDefine(value = "使用场所")
private String usePlace; private String usePlace;
/** /**
...@@ -151,12 +169,14 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -151,12 +169,14 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
/** /**
* *
*/ */
@FieldDisplayDefine(value = "安管理员名称")
@TableField("\"SAFETY_MANAGER\"") @TableField("\"SAFETY_MANAGER\"")
private String safetyManager; private String safetyManager;
/** /**
* *
*/ */
@FieldDisplayDefine(value = "安管理员电话")
@TableField("\"PHONE\"") @TableField("\"PHONE\"")
private String phone; private String phone;
...@@ -220,6 +240,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -220,6 +240,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 是否西咸 * 是否西咸
*/ */
@TableField("\"IS_NOT_XIXIAN\"") @TableField("\"IS_NOT_XIXIAN\"")
@FieldDisplayDefine(value = "是否西咸")
private String isNotXiXian; private String isNotXiXian;
...@@ -230,6 +251,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -230,6 +251,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* *
*/ */
@TableField("\"SAFETY_MANAGER_ID\"") @TableField("\"SAFETY_MANAGER_ID\"")
@FieldDisplayDefine(value = "安全管理员id")
private String safetyManagerId; private String safetyManagerId;
...@@ -237,6 +259,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -237,6 +259,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 是否是否纳管:true - 已纳管 false-未纳管 * 是否是否纳管:true - 已纳管 false-未纳管
*/ */
@TableField("\"IS_INTO_MANAGEMENT\"") @TableField("\"IS_INTO_MANAGEMENT\"")
@FieldDisplayDefine(value = "是否已纳管")
private Boolean isIntoManagement; private Boolean isIntoManagement;
...@@ -244,6 +267,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -244,6 +267,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 工程装置名称(工业管道使用) * 工程装置名称(工业管道使用)
*/ */
@TableField("\"PROJECT_CONTRAPTION\"") @TableField("\"PROJECT_CONTRAPTION\"")
@FieldDisplayDefine(value = "工程装置名称(工业管道使用)")
private String projectContraption; private String projectContraption;
...@@ -251,6 +275,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -251,6 +275,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 历史设备-原使用登记证附件 * 历史设备-原使用登记证附件
*/ */
@TableField("\"OLD_USE_REGISTRATION_CERTIFICATE\"") @TableField("\"OLD_USE_REGISTRATION_CERTIFICATE\"")
@FieldDisplayDefine(value = "原使用登记证附件")
private String oldUseRegistrationCertificate; private String oldUseRegistrationCertificate;
...@@ -258,6 +283,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -258,6 +283,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 历史设备-原使用登记表附件 * 历史设备-原使用登记表附件
*/ */
@TableField("\"OLD_USE_REGISTRATION_TABLE\"") @TableField("\"OLD_USE_REGISTRATION_TABLE\"")
@FieldDisplayDefine(value = "原使用登记表附件")
private String oldUseRegistrationTable; private String oldUseRegistrationTable;
...@@ -265,6 +291,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -265,6 +291,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 历史设备-原登记机关 * 历史设备-原登记机关
*/ */
@TableField("\"O_REG_UNIT\"") @TableField("\"O_REG_UNIT\"")
@FieldDisplayDefine(value = "原登记机关")
private String oRegUnit; private String oRegUnit;
...@@ -272,6 +299,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -272,6 +299,7 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 历史设备-原登记日期 * 历史设备-原登记日期
*/ */
@TableField("\"O_REG_DATE\"") @TableField("\"O_REG_DATE\"")
@FieldDisplayDefine(value = "原登记日期")
private String oRegDate; private String oRegDate;
...@@ -279,11 +307,13 @@ public class IdxBizJgUseInfo extends TzsBaseEntity { ...@@ -279,11 +307,13 @@ public class IdxBizJgUseInfo extends TzsBaseEntity {
* 工程装置ID * 工程装置ID
*/ */
@TableField("\"PROJECT_CONTRAPTION_ID\"") @TableField("\"PROJECT_CONTRAPTION_ID\"")
@FieldDisplayDefine(value = "工程装置ID")
private String projectContraptionId; private String projectContraptionId;
/** /**
* 备注 * 备注
*/ */
@TableField("\"REMARK\"") @TableField("\"REMARK\"")
@FieldDisplayDefine(value = "备注")
private String remark; private String remark;
} }
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