Commit 00ee2949 authored by suhuiguang's avatar suhuiguang

feat(大编辑):管道增减功能开发

1.使用登记管道编辑时在流程中时 使用json数据 监管和使用单位可以编辑一份数据
parent b4eb682d
......@@ -35,7 +35,7 @@ public class PipelineChangeItemDto extends TechParamsPipelineChangeFieldDto {
private String uscUnitName;
@FieldDisplayDefine(value = "安装日期")
private Date uscDate;
private String uscDate;
@FieldDisplayDefine(value ="检验类型", dictCode = "JYJC")
private String inspectType;
......@@ -64,4 +64,7 @@ public class PipelineChangeItemDto extends TechParamsPipelineChangeFieldDto {
@FieldDisplayDefine(value ="检验报告编号")
private String inspectReportNo;
@FieldDisplayDefine(value = "主键", isExist = false)
private String projectContraptionId;
}
......@@ -10,6 +10,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.impl.*;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.mapper.SuperviseInfoMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
......@@ -18,6 +19,7 @@ import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
@Slf4j
public class EquipBackupHandler {
private final IdxBizJgPipelineOperationHistServiceImpl pipelineDeleteHistoryService;
......@@ -155,6 +157,8 @@ public class EquipBackupHandler {
if (!insertIds.isEmpty()) {
superviseInfoMapper.deleteDataAll(insertIds);
}
} else {
log.warn("暂无编辑历史无法恢复数据:{},{}", bizType, bizId);
}
return !opHisList.isEmpty();
}
......
package com.yeejoin.amos.boot.module.jg.biz.edit.constant;
public class EditConstant {
/**
* 管道的编辑维护key
*/
public static final String NEW_PIPELINES = "newPipelines";
public static final String UPDATE_PIPELINES = "updatePipelines";
public static final String DELETE_PIPELINES = "deletePipelines";
}
......@@ -13,20 +13,24 @@ 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.HandleResult;
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 lombok.extern.slf4j.Slf4j;
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;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
public abstract class DefaultBizDataChangeHandler<U extends BaseBizDataChangeEvent> implements IBizDataChangeHandleStrategy {
public static String IS_REQUIRES_TEMPORARY_SAVE = "isRequiresTemporarySave";
public static String TEMPORARY_PIPELINES_DATA = "temporaryPipelinesData";
private final IEventPublisher<BaseBizDataChangeEvent> eventPublisher;
private final ApplicationContext applicationContext;
......@@ -45,16 +49,36 @@ public abstract class DefaultBizDataChangeHandler<U extends BaseBizDataChangeEve
// 删除原始提交的变更说明及附件放置后续存放到json
changeData.remove("changeReason");
changeData.remove("changeAttachment");
changeData.put(IS_REQUIRES_TEMPORARY_SAVE, requiresTemporarySave(applyNo));
changeData.put(TEMPORARY_PIPELINES_DATA, getsTemporaryData(applyNo));
IEquipChangeDataProcessStrategy dataProcessor = EquipDataProcessStrategyContext.getStrategy(model);
List<FieldChangeMeta> allChangeColumns = dataProcessor.handle(changeData, bizId, this::callBack);
List<FieldChangeMeta> bizEditColumns = postSave(bizId, applyNo, model, changeData, allChangeColumns);
HandleResult handleResult = dataProcessor.handle(changeData, bizId);
List<FieldChangeMeta> allChangeColumns = handleResult.getFieldChangeMetas() == null ? new ArrayList<>() : handleResult.getFieldChangeMetas();
List<FieldChangeMeta> bizEditColumns = postSave(bizId, applyNo, model, changeData, allChangeColumns, handleResult.getPipelineChangeItemMap());
allChangeColumns.addAll(bizEditColumns);
// 发送数据变更消息
publish2OtherBiz(allChangeColumns, applyNo, oData, selectedOrgInfo);
}
}
private void callBack(Map<String, List<PipelineChangeItemDto>> stringListMap) {
/**
* 是否需要暂存数据-暂存保存数据到json--管道专用
*
* @param applyNo 单据号
* @return yes-存json;no-实时存库
*/
protected Boolean requiresTemporarySave(String applyNo) {
return !bizIsFinished(applyNo);
}
/**
* 各业务暂存的管道数据--管道专用
*
* @param applyNo 申请单号
* @return 管道信息
*/
protected List<PipelineChangeItemDto> getsTemporaryData(String applyNo) {
return new ArrayList<>();
}
public abstract void preSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData);
......@@ -98,7 +122,7 @@ public abstract class DefaultBizDataChangeHandler<U extends BaseBizDataChangeEve
case equip:
return service.getEquipDetailByRecord(bizId);
case project:
return service.getProjectContraptionBySeq(bizId, getEqs(applyNo));
return service.getProjectDetailBySeq(bizId, getEqs(applyNo), requiresTemporarySave(applyNo), getsTemporaryData(applyNo));
default:
throw new BadRequest("unknown type for getSubDetail");
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.changeRegistrationR
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgChangeRegistrationReform;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -61,7 +62,7 @@ public class ChangeRegistrationReformDataChangeHandler extends DefaultBizDataCha
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
List<FieldChangeMeta> bizEditColumns = new ArrayList<>();
// 更新eq表、管道纳管状态、使用登记证;改更新本次新增、编辑的管道record集合到流水表
changeRegistrationReformEditUpdateService.updateBizInfo(allChangeColumns, applyNo, model);
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.changeRegistrationT
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgChangeRegistrationTransfer;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class ChangeRegistrationTransferDataChangeHandler extends DefaultBizDataC
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.changeRegistrationU
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgChangeRegistrationUnit;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class ChangeRegistrationUnitDataChangeHandler extends DefaultBizDataChang
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.changeVehicleRegist
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.entity.JgChangeVehicleRegistrationUnit;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class ChangeVehicleRegistrationUnitDataChangeHandler extends DefaultBizDa
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.enableDisable;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgEnableDisable;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class EnableDisableDataChangeHandler extends DefaultBizDataChangeHandler<
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.equipTransfer;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgEquipTransfer;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class EquipTransferDataChangeHandler extends DefaultBizDataChangeHandler<
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.installNotice;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -33,7 +34,7 @@ public class InstallNoticeDataChangeHandler extends DefaultBizDataChangeHandler<
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.maintainNotice;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNotice;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class MaintainNoticeDataChangeHandler extends DefaultBizDataChangeHandler
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.maintenanceContract
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintenanceContract;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class MaintenanceContractDataChangeHandler extends DefaultBizDataChangeHa
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.newEquip;
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.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
......@@ -29,7 +30,7 @@ public class NewEquipDataChangeHandler extends DefaultBizDataChangeHandler<BaseB
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.newProject;
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.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
......@@ -29,7 +30,7 @@ public class NewProjectDataChangeHandler extends DefaultBizDataChangeHandler<Bas
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
List<FieldChangeMeta> bizEditColumns = new ArrayList<>();
// 更新管道纳管状态、使用登记证编号业务信息
newProjectEditUpdateService.updateBizInfo(bizId);
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.reformNotice;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgReformNotice;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -33,7 +34,7 @@ public class ReformNoticeDataChangeHandler extends DefaultBizDataChangeHandler<B
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.scrapCancel;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgScrapCancel;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class ScrapCancelDataChangeHandler extends DefaultBizDataChangeHandler<Ba
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
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.biz.controller.BizDataChangeController;
import java.util.List;
......@@ -47,8 +48,9 @@ public interface IBizDataChangeHandleStrategy {
* @param model @see ModelType
* @param changeData 变更数据
* @param allChangeColumns 变化的字段
* @param pipelineChangeItemMap 变化的管道信息汇总
*/
List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns);
List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap);
/**
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.transferNotice;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgTransferNotice;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class TransferNoticeDataChangeHandler extends DefaultBizDataChangeHandler
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.useRegister;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
......@@ -64,6 +65,29 @@ public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<Ba
useRegisterUpdateService.backupOPipelineData(applyNo, model);
}
/**
* 管道专用
* @param applyNo 单据号
* 判断数据是实时落库,还是先存到json
* @return 是否需要临时存储
*/
@Override
public Boolean requiresTemporarySave(String applyNo) {
return !bizIsFinished(applyNo);
}
/**
* 管道专用
* 临时存储的json 管道
*
* @param applyNo 申请单号
* @return 暂存的管道列表
*/
@Override
public List<PipelineChangeItemDto> getsTemporaryData(String applyNo) {
return useRegisterUpdateService.getsTemporaryData(applyNo);
}
/**
* 保存
......@@ -72,12 +96,13 @@ public class UseRegisterDataChangeHandler extends DefaultBizDataChangeHandler<Ba
* @param model @see IBizDataChangeHandleStrategy.ModelType
* @param changeData 前端不支持分组-目前为平铺数据结构
* @param allChangeColumns 变化的字段集合
* @param pipelineChangeItemMap 变化的管道
*/
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
List<FieldChangeMeta> bizEditColumns = new ArrayList<>();
// 流程中时-更新单据-业务冗余的字段、eq表、管道状态,记录本次新增、编辑的管道record集合
useRegisterUpdateService.updateBizInfo(allChangeColumns, bizId, applyNo, model);
useRegisterUpdateService.updateBizInfo(allChangeColumns, bizId, applyNo, model, pipelineChangeItemMap);
return bizEditColumns;
}
......
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.useRegister;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
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.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.biz.edit.constant.EditConstant;
import com.yeejoin.amos.boot.module.jg.biz.edit.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.typeHandler.PieLineLevelTypeHandler;
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.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@RequiredArgsConstructor
......@@ -43,7 +47,9 @@ public class UseRegisterUpdateService {
private final UseRegisterBackupManager useRegisterBackupManager;
public void updateBizInfo(List<FieldChangeMeta> allChangeColumns, String bizId, String applyNo, IBizDataChangeHandleStrategy.ModelType model) {
private final PieLineLevelTypeHandler pieLineLevelTypeHandler;
public void updateBizInfo(List<FieldChangeMeta> allChangeColumns, String bizId, String applyNo, IBizDataChangeHandleStrategy.ModelType model, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
if (model.equals(IBizDataChangeHandleStrategy.ModelType.singleEquip)) {
JgUseRegistration useRegistration = jgUseRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>().select(BaseEntity::getSequenceNbr, JgUseRegistration::getStatus).eq(JgUseRegistration::getApplyNo, applyNo));
// 非管道类设备且非已完成状态时,在编辑后进行内部设备代码的更新
......@@ -59,15 +65,16 @@ public class UseRegisterUpdateService {
if (model.equals(IBizDataChangeHandleStrategy.ModelType.singleProject)) {
JgUseRegistration useRegistration = jgUseRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>().select(BaseEntity::getSequenceNbr, JgUseRegistration::getStatus, JgUseRegistration::getProjectContraptionId, JgUseRegistration::getOriginProjectContraptionIds, JgUseRegistration::getUseRegistrationCode).eq(JgUseRegistration::getApplyNo, applyNo));
if (!useRegistration.getStatus().equals(FlowStatusEnum.TO_BE_FINISHED.getName())) { // 非完成状态更新eq表
// 1.按照装置id+非纳管状态,查询新增的管道
List<JgUseRegistrationEq> eqsNew = this.getNewPieLines(useRegistration);
// 2.按照原装置id,查询剩余的管道
List<JgUseRegistrationEq> eqsRemained = this.getRemainedPieLines(useRegistration);
// 3.eq表删除
// 1.eq表删除
this.deleteRelationEq(useRegistration.getSequenceNbr());
// 4.插入eq表
List<JgUseRegistrationEq> registrationEqs = ListUtils.union(eqsNew, eqsRemained);
// 2.插入eq表
List<JgUseRegistrationEq> registrationEqs = this.buildPipelineEqs(pipelineChangeItemMap);
this.insertRelationEq(useRegistration.getSequenceNbr(), registrationEqs);
// 3.json history插入
JSONObject jsonObject = jgUseRegistrationService.getHisData(useRegistration);
jsonObject.remove("equipmentLists");
jsonObject.put("equipmentLists", this.buildEquipmentLists(pipelineChangeItemMap));
jgUseRegistrationService.updateHistory(jsonObject, bizId, useRegistration.getSequenceNbr() + "", null);
} else { // 完成时,把管道更新为已纳管状态
// 按照装置id查询装置下管道,更新为已纳管状态
List<IdxBizJgUseInfo> useInfos = jgUseRegistrationService.getIdxBizJgUseInfoService().list(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getProjectContraptionId, useRegistration.getProjectContraptionId()).eq(IdxBizJgUseInfo::getIsIntoManagement, false).select(TzsBaseEntity::getSequenceNbr, IdxBizJgUseInfo::getRecord));
......@@ -81,9 +88,41 @@ public class UseRegisterUpdateService {
}
}
private List<Map<String, Object>> buildEquipmentLists(Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
List<PipelineChangeItemDto> newPipelines = pipelineChangeItemMap.get(EditConstant.NEW_PIPELINES);
List<PipelineChangeItemDto> updPipelines = pipelineChangeItemMap.get(EditConstant.UPDATE_PIPELINES);
// 兼容处理使用登记,管道级别存的为name,标准编辑为code,管道名称(登记单元)key为productName,而非为标准的pipeName
return Stream.concat(newPipelines.stream(), updPipelines.stream()).map(item -> {
Map<String, Object> one = BeanUtil.beanToMap(item);
// 管道级别存的为name,标准编辑为code,进行转换,code时返回name, name时返回还是name
one.put("deviceLevel", pieLineLevelTypeHandler.handle(item.getDeviceLevel()));
one.put("productName", item.getPipeName());
// 日期字段处理
one.put("inspectDate", DateUtil.formatDate(item.getInspectDate()));
one.put("nextInspectDate", DateUtil.formatDate(item.getNextInspectDate()));
// 检验结论
one.put("inspectC", DateUtil.formatDate(item.getNextInspectDate()));
// json需要处理 否则JSON.toJSONString 回转义
one.put("inspectReport", JSON.parse(item.getInspectReport()));
return one;
}).collect(Collectors.toList());
}
private List<JgUseRegistrationEq> buildPipelineEqs(Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
List<PipelineChangeItemDto> newPipelines = pipelineChangeItemMap.get(EditConstant.NEW_PIPELINES);
List<PipelineChangeItemDto> updPipelines = pipelineChangeItemMap.get(EditConstant.UPDATE_PIPELINES);
return Stream.concat(newPipelines.stream(), updPipelines.stream()).map(item -> {
JgUseRegistrationEq useRegistrationEq = new JgUseRegistrationEq();
useRegistrationEq.setEquId(item.getRecord());
useRegistrationEq.setOriginProjectContraptionId(item.getProjectContraptionId());
return useRegistrationEq;
}).collect(Collectors.toList());
}
/**
* 备份原始数据
*
* @param applyNo 单据号
* @param model 类型
*/
......@@ -124,21 +163,6 @@ public class UseRegisterUpdateService {
jgUseRegistrationService.getJgUseRegistrationEqService().remove(new LambdaQueryWrapper<JgUseRegistrationEq>().eq(JgUseRegistrationEq::getEquipTransferId, sequenceNbr));
}
private List<JgUseRegistrationEq> getRemainedPieLines(JgUseRegistration useRegistration) {
String pIds = useRegistration.getOriginProjectContraptionIds();
// 合并的装置逻辑,按照原始装置查询其下的管道
if (StringUtils.isNotEmpty(pIds) && !pIds.equals(useRegistration.getProjectContraptionId())) {
List<IdxBizJgUseInfo> useInfos = jgUseRegistrationService.getIdxBizJgUseInfoService().list(new LambdaQueryWrapper<IdxBizJgUseInfo>().in(IdxBizJgUseInfo::getProjectContraptionId, Arrays.asList(pIds.split(","))).select(TzsBaseEntity::getSequenceNbr, IdxBizJgUseInfo::getRecord));
return buildEqs(useRegistration, useInfos);
}
// 非装置合并逻辑,按照新装置查询其下的管道
if ((StringUtils.isNotEmpty(pIds) && pIds.equals(useRegistration.getProjectContraptionId())) || (StringUtils.isEmpty(useRegistration.getOriginProjectContraptionIds()))) {
List<IdxBizJgUseInfo> useInfos = jgUseRegistrationService.getIdxBizJgUseInfoService().list(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getProjectContraptionId, useRegistration.getProjectContraptionId()).select(TzsBaseEntity::getSequenceNbr, IdxBizJgUseInfo::getRecord));
return buildEqs(useRegistration, useInfos);
}
return new ArrayList<>();
}
private List<JgUseRegistrationEq> buildEqs(JgUseRegistration useRegistration, List<IdxBizJgUseInfo> useInfos) {
return useInfos.stream().map(u -> {
......@@ -150,8 +174,15 @@ public class UseRegisterUpdateService {
}).collect(Collectors.toList());
}
private List<JgUseRegistrationEq> getNewPieLines(JgUseRegistration useRegistration) {
List<IdxBizJgUseInfo> useInfos = jgUseRegistrationService.getIdxBizJgUseInfoService().list(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getProjectContraptionId, useRegistration.getProjectContraptionId()).eq(IdxBizJgUseInfo::getIsIntoManagement, false).select(IdxBizJgUseInfo::getRecord, TzsBaseEntity::getSequenceNbr));
return buildEqs(useRegistration, useInfos);
public List<PipelineChangeItemDto> getsTemporaryData(String applyNo) {
JgUseRegistration useRegistration = jgUseRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>().select(BaseEntity::getSequenceNbr, JgUseRegistration::getStatus, JgUseRegistration::getProjectContraptionId, JgUseRegistration::getOriginProjectContraptionIds).eq(JgUseRegistration::getApplyNo, applyNo));
JSONObject jsonObject = jgUseRegistrationService.getHisData(useRegistration);
if (StringUtils.isNotEmpty(useRegistration.getProjectContraptionId())) {
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) jsonObject.get("equipmentLists");
return BeanUtil.copyToList(equipmentLists, PipelineChangeItemDto.class);
} else {
return Collections.emptyList();
}
}
}
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.vehicleInformation;
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.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgVehicleInformation;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
......@@ -36,7 +37,7 @@ public class VehicleInformationDataChangeHandler extends DefaultBizDataChangeHan
}
@Override
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns) {
public List<FieldChangeMeta> postSave(String bizId, String applyNo, ModelType model, Map<String, Object> changeData, List<FieldChangeMeta> allChangeColumns, Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap) {
return Collections.emptyList();
}
......
......@@ -26,6 +26,7 @@ import com.yeejoin.amos.boot.module.jg.api.enums.EquipSourceEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.biz.edit.backup.DefaultEquipBackupManager;
import com.yeejoin.amos.boot.module.jg.biz.edit.typeHandler.FormatService;
import com.yeejoin.amos.boot.module.jg.biz.edit.typeHandler.PieLineLevelTypeHandler;
import com.yeejoin.amos.boot.module.jg.biz.edit.typeHandler.RegionCodeTypeHandler;
import com.yeejoin.amos.boot.module.jg.biz.edit.utils.JsonDiffUtil;
import com.yeejoin.amos.boot.module.jg.biz.service.*;
......@@ -127,6 +128,8 @@ public class CommonEquipDataProcessService {
private final RegionCodeTypeHandler regionCodeTypeHandler;
private final PieLineLevelTypeHandler pieLineLevelTypeHandler;
private final IdxBizJgRegisterInfoServiceImpl jgRegisterInfoService;
public static final String BASE_COLUMN_REC_DATE = "\"REC_DATE\"";
......@@ -767,6 +770,93 @@ public class CommonEquipDataProcessService {
return changeData;
}
/**
* 简化版字段对比更新工具
* 要求:对象字段名与数据库列名一致(驼峰转下划线自动处理)
* @param oldObj 旧对象(必须有id字段)
* @param newObj 新对象(必须与旧对象同一类型)
*/
public <T> List<FieldChangeMeta> simpleTrackDiff(T oldObj, T newObj, String changeId) {
List<FieldChangeMeta> changeData = new ArrayList<>();
// 基础校验
if (oldObj == null || newObj == null) {
throw new IllegalArgumentException("新旧对象不能为空");
}
if (!oldObj.getClass().equals(newObj.getClass())) {
throw new IllegalArgumentException("对象类型不一致");
}
Group group = newObj.getClass().getAnnotation(Group.class);
Class<?> clazz = oldObj.getClass();
// 遍历所有字段(包含父类)
for (Field field : getAllFields(clazz)) {
try {
field.setAccessible(true);
Object oldVal = field.get(oldObj);
Object newVal = field.get(newObj);
FieldDisplayDefine displayDefine = field.getAnnotation(FieldDisplayDefine.class);
// 业务字段对比处理逻辑
if (displayDefine != null && displayDefine.isExist()) {
// json 比较逻辑
if (displayDefine.type().equals(JSON.class)) {
if (!JsonDiffUtil.jsonEqualsIgnoreType((String) oldVal, (String) newVal)) {
String fieldName = displayDefine.value();
FieldChangeMeta fieldChangeMeta = new FieldChangeMeta();
fieldChangeMeta.setColumnKey(field.getName());
fieldChangeMeta.setColumnFamily(group.value());
fieldChangeMeta.setColumnLabel(fieldName);
fieldChangeMeta.setChangeId(changeId);
fieldChangeMeta.setIsRepeatColumn(displayDefine.isRepeatColumn());
// 字段类型前端渲染时使用
fieldChangeMeta.setColumnType(displayDefine.type().getSimpleName());
fieldChangeMeta.setColumnOldValue(Objects.toString(oldVal, null));
fieldChangeMeta.setColumnNewValue(Objects.toString(newVal, null));
fieldChangeMeta.setDisplayOldValue(formatService.format(displayDefine, fieldChangeMeta.getColumnOldValue()));
fieldChangeMeta.setDisplayNewValue(formatService.format(displayDefine, fieldChangeMeta.getColumnNewValue()));
changeData.add(fieldChangeMeta);
}
continue;
}
// 其他比较逻辑
if (!Objects.equals(oldVal, newVal)) {
String fieldName = displayDefine.value();
FieldChangeMeta fieldChangeMeta = new FieldChangeMeta();
fieldChangeMeta.setColumnKey(field.getName());
fieldChangeMeta.setColumnFamily(group.value());
fieldChangeMeta.setColumnLabel(fieldName);
fieldChangeMeta.setChangeId(changeId);
fieldChangeMeta.setIsRepeatColumn(displayDefine.isRepeatColumn());
// 字段类型前端渲染时使用
fieldChangeMeta.setColumnType(displayDefine.type().getSimpleName());
if (newVal instanceof String) {
fieldChangeMeta.setColumnOldValue((String) oldVal);
fieldChangeMeta.setColumnNewValue((String) newVal);
} else if (newVal instanceof Number) {
fieldChangeMeta.setColumnOldValue(String.valueOf(oldVal));
fieldChangeMeta.setColumnNewValue(String.valueOf(newVal));
} else if (newVal instanceof Date) {
fieldChangeMeta.setColumnOldValue(DateUtil.formatDate((Date) oldVal));
fieldChangeMeta.setColumnNewValue(DateUtil.formatDate((Date) newVal));
} else if (newVal instanceof Boolean) {
fieldChangeMeta.setColumnOldValue(Boolean.toString((Boolean) oldVal));
fieldChangeMeta.setColumnNewValue(Boolean.toString((Boolean) newVal));
} else {
fieldChangeMeta.setColumnOldValue(Objects.toString(oldVal, null));
fieldChangeMeta.setColumnNewValue(Objects.toString(newVal, null));
}
fieldChangeMeta.setDisplayOldValue(formatService.format(displayDefine, fieldChangeMeta.getColumnOldValue()));
fieldChangeMeta.setDisplayNewValue(formatService.format(displayDefine, fieldChangeMeta.getColumnNewValue()));
changeData.add(fieldChangeMeta);
}
}
} catch (IllegalAccessException e) {
System.err.println("字段访问失败: " + field.getName());
}
}
return changeData;
}
public Map<String, Object> getEquipDetailByRecord(String record) {
Map<String, Object> re = new HashMap<>();
......@@ -927,15 +1017,37 @@ public class CommonEquipDataProcessService {
return result;
}
public Map<String, Object> getProjectContraptionBySeq(String projectContraptionId, Set<String> records) {
/**
* 重新装置详情
* @param projectContraptionId 装置id
* @param records 装置下的管道
* @param aBoolean 是否需要json数据
* @param oldJsonData json数据
* @return 装置详情
*/
public Map<String, Object> getProjectDetailBySeq(String projectContraptionId, Set<String> records, Boolean aBoolean, List<PipelineChangeItemDto> oldJsonData) {
IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionServiceImpl.getById(projectContraptionId);
Map<String, Object> re = BeanUtil.beanToMap(projectContraption);
this.convertStringToJsonObject(re, IdxBizJgProjectContraptionServiceImpl.getJsonFieldsCamel());
if(!aBoolean){ // 实时查询逻辑
List<Map<String, Object>> equList = jgUseRegistrationService.getBaseMapper().queryForUnitPipelineEquipmentForEdit(new ArrayList<>(records));
// 检验报告数据格式化 转json
equList.stream().filter(e -> e.get("inspectReport") != null).forEach(item -> item.put("inspectReport", JSON.parse(item.get("inspectReport").toString())));
re.put("projectContraptionId", projectContraption.getSequenceNbr());
re.put("tableData", equList);
} else { // 使用json的暂存数据逻辑
// 直接使用json暂存的管道数据 + todo isEdit调整
re.put("tableData", oldJsonData.stream().map(r->{
Map<String, Object> item = BeanUtil.beanToMap(r);
// 检验报告数据格式化 转json
item.put("inspectReport", JSON.parse(r.getInspectReport()));
// 兼容存量数据
// 1.管道级别 原业务存的name,编辑存的code,进行转换
item.put("deviceLevel", pieLineLevelTypeHandler.getCodeByName(r.getDeviceLevel()));
item.put("isEdit", true);
return item;
}).collect(Collectors.toList()));
}
re.put("projectContraptionId", projectContraption.getSequenceNbr());
re.put("dataSourceClassify", this.genDataSource(projectContraption.getDataSource()));
return re;
}
......
......@@ -136,6 +136,8 @@ public class PieLineDataChangeServiceImpl {
void newPieLine(ProjectContraptionChangeDataDto projectContraptionChangeDataDto, PipelineChangeItemDto newPieLine, List<FieldChangeMeta> allChangeColumns) {
String record = idUtil.nextId().toString();
newPieLine.setRecord(record);
newPieLine.setProjectContraptionId(projectContraptionChangeDataDto.getProjectContraptionId());
this.buildNewPieLineLog(projectContraptionChangeDataDto, record, allChangeColumns);
// 检验信息
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = BeanUtil.copyProperties(newPieLine, IdxBizJgInspectionDetectionInfo.class);
......@@ -178,6 +180,7 @@ public class PieLineDataChangeServiceImpl {
commonEquipDataProcessService.getJgFactoryInfoMapper().insert(factoryInfo);
// 施工信息
newPieLine.setUscDate(newPieLine.getUscDate() != null ? DateUtil.parse(newPieLine.getUscDate(), DatePattern.NORM_MONTH_FORMAT).toDateStr() : null);
IdxBizJgConstructionInfo constructionInfo = BeanUtil.copyProperties(newPieLine, IdxBizJgConstructionInfo.class);
constructionInfo.setRecord(record);
constructionInfo.setRecDate(new Date());
......
......@@ -7,11 +7,10 @@ import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.jg.api.common.BizCommonConstant;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.dto.PieLineDesignChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.PipelineChangeItemDto;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
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.HandleResult;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import lombok.RequiredArgsConstructor;
......@@ -22,7 +21,6 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
/**
* 单个维护设备-策略实现类
......@@ -35,7 +33,7 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
private final CommonEquipDataProcessService commonEquipDataProcessService;
@Override
public List<FieldChangeMeta> handle(Map<String, Object> changeData, String record, Consumer<Map<String, List<PipelineChangeItemDto>>> callBack) {
public HandleResult handle(Map<String, Object> changeData, String record) {
JSONObject changeJson = new JSONObject(changeData);
List<FieldChangeMeta> allChangeColumns = new ArrayList<>();
......@@ -137,7 +135,7 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
this.updateOtherEquipInSameCert(useInfoNew, registerInfoNew, registerInfoOld, allChangeColumns);
// 设备技术参数入库处理
commonEquipDataProcessService.updateTechParamInfo(registerInfoOld.getEquList(), record, changeData, allChangeColumns);
return allChangeColumns;
return HandleResult.builder().fieldChangeMetas(allChangeColumns).build();
}
private void updateOtherEquipInSameCert(IdxBizJgUseInfo useInfoNew, IdxBizJgRegisterInfo registerInfoNew, IdxBizJgRegisterInfo registerInfoOld, List<FieldChangeMeta> allChangeColumns) {
......
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.biz.edit.constant.EditConstant;
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.HandleResult;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import com.yeejoin.amos.boot.module.jg.biz.edit.typeHandler.PieLineLevelTypeHandler;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgConstructionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
......@@ -18,8 +24,10 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.text.DateFormat;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 单个装置维护-策略实现类
......@@ -32,9 +40,11 @@ public class SingleProjectEquipChangeProcess implements IEquipChangeDataProcessS
private final PieLineDataChangeServiceImpl pieLineDataChangeService;
private final PieLineLevelTypeHandler pieLineLevelTypeHandler;
@Override
public List<FieldChangeMeta> handle(Map<String, Object> changeData, String projectContraptionId, Consumer<Map<String, List<PipelineChangeItemDto>>> callBack) {
public HandleResult handle(Map<String, Object> changeData, String projectContraptionId) {
JSONObject data = (JSONObject) changeData;
// 新增编辑的管道------------------tableData
JSONArray insertOrEditPieLines = data.getJSONArray(RequestChangeData.multiDataKey);
......@@ -46,8 +56,13 @@ public class SingleProjectEquipChangeProcess implements IEquipChangeDataProcessS
if (items.size() != items.stream().map(TechParamsPipelineChangeFieldDto::getPipelineNumber).distinct().count()) {
throw new BadRequest("同一工程装置下管道编号不能重复!");
}
List<PipelineChangeItemDto> newPipelines = new ArrayList<>();
List<PipelineChangeItemDto> updatePipelines = new ArrayList<>();
List<PipelineChangeItemDto> deletePipelines = new ArrayList<>();
if (deletedPieLines != null && !deletedPieLines.isEmpty()) {
List<PipelineChangeItemDto> deletedPieLinesJavaList = deletedPieLines.toJavaList(PipelineChangeItemDto.class);
deletePipelines = new ArrayList<>(deletedPieLinesJavaList);
pieLineDataChangeService.deletePieLineBatch(deletedPieLinesJavaList, allChangeColumns, projectContraptionId);
}
// 2.装置基本信息校验、保存(前端返回的装置信息为大写 需注意)
......@@ -55,29 +70,107 @@ public class SingleProjectEquipChangeProcess implements IEquipChangeDataProcessS
this.setNameForDictKey(projectContraptionChangeDataDto);
this.calTotalPieLineLength(projectContraptionChangeDataDto, items);
pieLineDataChangeService.update(projectContraptionChangeDataDto, allChangeColumns);
Boolean isRequireTemporarySave = data.getBoolean(DefaultBizDataChangeHandler.IS_REQUIRES_TEMPORARY_SAVE);
JSONArray oldPieLineJSONArray = data.getJSONArray(DefaultBizDataChangeHandler.TEMPORARY_PIPELINES_DATA);
List<PipelineChangeItemDto> oriPipelineList = oldPieLineJSONArray.toJavaList(PipelineChangeItemDto.class);
Map<String, PipelineChangeItemDto> oldRecordPipelineMap = oriPipelineList.stream().collect(Collectors.toMap(TechParamsPipelineChangeFieldDto::getRecord, Function.identity()));
// 3.管道信息入库保存
items.forEach(item -> {
String record = item.getRecord();
items.forEach(pipelineNew -> {
String record = pipelineNew.getRecord();
if (record == null) { // 新增的管道逻辑
pieLineDataChangeService.newPieLine(projectContraptionChangeDataDto, item, allChangeColumns);
pieLineDataChangeService.newPieLine(projectContraptionChangeDataDto, pipelineNew, allChangeColumns);
newPipelines.add(pipelineNew);
} else { // 更新管道逻辑
if (isRequireTemporarySave) {// 记录变化流水
PipelineChangeItemDto pipelineOld = oldRecordPipelineMap.get(record);
// 安装信息变更日志
this.buildConstructionInfoChangeLog(record, pipelineNew, pipelineOld, projectContraptionChangeDataDto, allChangeColumns);
// 检验信息变更日志
this.buildInspectInfoChangeLog(record, pipelineNew, pipelineOld, projectContraptionChangeDataDto, allChangeColumns);
// 设计信息变更日志
this.buildDesignForPieLineChangeLog(record, pipelineNew, pipelineOld, projectContraptionChangeDataDto, allChangeColumns);
// 技术参数变更日志
this.buildTechParamChangeLog(record, pipelineNew, pipelineOld, projectContraptionChangeDataDto, allChangeColumns);
} else {// 实时更新
// 基本信息
this.updateUseInfo(item, projectContraptionChangeDataDto, allChangeColumns);
this.updateUseInfo(pipelineNew, projectContraptionChangeDataDto, allChangeColumns);
// 安装信息
this.updateConstructionInfo(item, projectContraptionChangeDataDto, allChangeColumns);
this.updateConstructionInfo(pipelineNew, projectContraptionChangeDataDto, allChangeColumns);
// 检验信息
this.updateInspectInfo(item, projectContraptionChangeDataDto, allChangeColumns);
this.updateInspectInfo(pipelineNew, projectContraptionChangeDataDto, allChangeColumns);
// 设计信息更新
pieLineDataChangeService.saveDesignForPieLine(record, allChangeColumns, item);
pieLineDataChangeService.saveDesignForPieLine(record, allChangeColumns, pipelineNew);
// 技术参数入库保存
TechParamsPipelineChangeFieldDto paramsPipelineChangeFieldDto = new TechParamsPipelineChangeFieldDto();
BeanUtil.copyProperties(item, paramsPipelineChangeFieldDto, true);
BeanUtil.copyProperties(pipelineNew, paramsPipelineChangeFieldDto, true);
commonEquipDataProcessService.savePieLineTechParam(record, allChangeColumns, paramsPipelineChangeFieldDto);
}
updatePipelines.add(pipelineNew);
}
});
Map<String, List<PipelineChangeItemDto>> pmap = MapUtil.<String, List<PipelineChangeItemDto>>builder().put(EditConstant.NEW_PIPELINES, newPipelines).put(EditConstant.UPDATE_PIPELINES, updatePipelines).put(EditConstant.DELETE_PIPELINES, deletePipelines).build();
// 4.更新所有管道的的冗余的管道名称字段(重点注意包括本次没做使用登记的管道也要更新)
pieLineDataChangeService.updateEs(projectContraptionChangeDataDto);
return allChangeColumns;
return HandleResult.builder().fieldChangeMetas(allChangeColumns).pipelineChangeItemMap(pmap).build();
}
private void buildTechParamChangeLog(String record, PipelineChangeItemDto pipelineNew, PipelineChangeItemDto pipelineOld, ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<FieldChangeMeta> allChangeColumns) {
TechParamsPipelineChangeFieldDto paramsPipelineChangeFieldNew = new TechParamsPipelineChangeFieldDto();
BeanUtil.copyProperties(pipelineNew, paramsPipelineChangeFieldNew, true);
TechParamsPipelineChangeFieldDto paramsPipelineChangeFieldOld = new TechParamsPipelineChangeFieldDto();
BeanUtil.copyProperties(pipelineOld, paramsPipelineChangeFieldOld, true);
// 使用登记兼容处理,使用登记老数据存的name,这里统一转换为code进行比较
paramsPipelineChangeFieldOld.setDeviceLevel(pieLineLevelTypeHandler.getCodeByName(pipelineOld.getDeviceLevel()));
// 字段行转列
List<FieldChangeMeta> newPipelineChangeData = commonEquipDataProcessService.convertBeanField2Column2(paramsPipelineChangeFieldNew, projectContraptionChangeDataDto.getProjectContraptionId() + "/" + record);
List<FieldChangeMeta> oldPipelineChangeData = commonEquipDataProcessService.convertBeanField2Column2(paramsPipelineChangeFieldOld, projectContraptionChangeDataDto.getProjectContraptionId() + "/" + record);
// 比对
List<FieldChangeMeta> pipelineChangeFields = commonEquipDataProcessService.mergeChangeFields(newPipelineChangeData, oldPipelineChangeData);
allChangeColumns.addAll(pipelineChangeFields);
}
private void buildDesignForPieLineChangeLog(String record, PipelineChangeItemDto pipelineNew, PipelineChangeItemDto pipelineOld, ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<FieldChangeMeta> allChangeColumns) {
// 1.记录变化的数据对象
PieLineDesignChangeDataDto pieLineDesignChangeDataNew = BeanUtil.copyProperties(pipelineNew, PieLineDesignChangeDataDto.class);
PieLineDesignChangeDataDto pieLineDesignChangeDataOld = BeanUtil.copyProperties(pipelineOld, PieLineDesignChangeDataDto.class);
// 构造新对象行转列
List<FieldChangeMeta> designInfoNew = commonEquipDataProcessService.convertBeanField2Column2(pieLineDesignChangeDataNew, projectContraptionChangeDataDto.getProjectContraptionId() + "/" + record);
List<FieldChangeMeta> designInfoOld = commonEquipDataProcessService.convertBeanField2Column2(pieLineDesignChangeDataOld, projectContraptionChangeDataDto.getProjectContraptionId() + "/" + record);
// 老数据查询行转列
allChangeColumns.addAll(commonEquipDataProcessService.mergeChangeFields(designInfoNew, designInfoOld));
}
private void buildInspectInfoChangeLog(String record, PipelineChangeItemDto pipelineNew, PipelineChangeItemDto pipelineOld, ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<FieldChangeMeta> allChangeColumns) {
IdxBizJgInspectionDetectionInfo inspectionDetectionInfoNew = castPipelineItem2Inspection(pipelineNew);
IdxBizJgInspectionDetectionInfo inspectionDetectionInfoOld = castPipelineItem2Inspection(pipelineOld);
List<FieldChangeMeta> inspectionFieldChangeMetas = commonEquipDataProcessService.simpleTrackDiff(inspectionDetectionInfoOld, inspectionDetectionInfoNew, projectContraptionChangeDataDto.getProjectContraptionId() + "/" + record);
allChangeColumns.addAll(inspectionFieldChangeMetas);
}
private IdxBizJgInspectionDetectionInfo castPipelineItem2Inspection(PipelineChangeItemDto pipelineChangeItemDto) {
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = new IdxBizJgInspectionDetectionInfo();
inspectionDetectionInfo.setInspectConclusion(pipelineChangeItemDto.getInspectConclusionCode());
inspectionDetectionInfo.setInspectDate(pipelineChangeItemDto.getInspectDate());
inspectionDetectionInfo.setInspectReport(pipelineChangeItemDto.getInspectReport());
inspectionDetectionInfo.setInspectOrgCode(pipelineChangeItemDto.getInspectOrgCode());
inspectionDetectionInfo.setInspectOrgName(pipelineChangeItemDto.getInspectOrgName());
inspectionDetectionInfo.setInspectStaff(pipelineChangeItemDto.getInspectStaff());
inspectionDetectionInfo.setInspectType(pipelineChangeItemDto.getInspectType());
inspectionDetectionInfo.setNextInspectDate(pipelineChangeItemDto.getNextInspectDate());
return inspectionDetectionInfo;
}
private void buildConstructionInfoChangeLog(String record, PipelineChangeItemDto pipelineNew, PipelineChangeItemDto pipelineOld, ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<FieldChangeMeta> allChangeColumns) {
IdxBizJgConstructionInfo constructionInfoOld = new IdxBizJgConstructionInfo();
constructionInfoOld.setUscUnitName(pipelineOld.getUscUnitName());
constructionInfoOld.setUscDate(pipelineOld.getUscDate() != null ? DateUtil.parse(pipelineOld.getUscDate(), DatePattern.NORM_MONTH_FORMAT) : null);
IdxBizJgConstructionInfo constructionInfoNew = new IdxBizJgConstructionInfo();
constructionInfoNew.setUscUnitName(pipelineNew.getUscUnitName());
constructionInfoNew.setUscDate(pipelineNew.getUscDate() != null ? DateUtil.parse(pipelineNew.getUscDate(), DatePattern.NORM_MONTH_FORMAT) : null);
List<FieldChangeMeta> constructionInfoFieldChangeMetas = commonEquipDataProcessService.simpleTrackDiff(constructionInfoOld, constructionInfoNew, projectContraptionChangeDataDto.getProjectContraptionId() + "/" + record);
allChangeColumns.addAll(constructionInfoFieldChangeMetas);
}
private void updateInspectInfo(PipelineChangeItemDto item, ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<FieldChangeMeta> allChangeColumns) {
......@@ -99,6 +192,7 @@ public class SingleProjectEquipChangeProcess implements IEquipChangeDataProcessS
String constructionInfoSeq = item.getConstructionInfoSeq();
if (constructionInfoSeq != null) {
IdxBizJgConstructionInfo constructionInfoOld = commonEquipDataProcessService.getJgUseRegistrationService().getIdxBizJgConstructionInfoService().getById(constructionInfoSeq);
// todo 安装年月特殊处理 格式刷yyyy-MM
IdxBizJgConstructionInfo constructionInfoNew = new IdxBizJgConstructionInfo();
BeanUtil.copyProperties(constructionInfoOld, constructionInfoNew, true);
BeanUtil.copyProperties(item, constructionInfoNew, true);
......
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.api.dto.PipelineChangeItemDto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
@Builder
public class HandleResult {
private List<FieldChangeMeta> fieldChangeMetas;
private Map<String, List<PipelineChangeItemDto>> pipelineChangeItemMap;
}
......@@ -23,6 +23,6 @@ public interface IEquipChangeDataProcessStrategy {
/**
* 处理
*/
List<FieldChangeMeta> handle(Map<String, Object> changeData, String defaultChangeId, Consumer<Map<String, List<PipelineChangeItemDto>>> callBack);
HandleResult handle(Map<String, Object> changeData, String defaultChangeId);
}
......@@ -22,6 +22,8 @@ public class PieLineLevelTypeHandler implements TypeHandler<String> {
private Map<String, String> cache;
private Map<String, String> nameCodeMapCache;
protected PieLineLevelTypeHandler(DataDictionaryServiceImpl dataDictionaryService) {
this.dataDictionaryService = dataDictionaryService;
}
......@@ -30,11 +32,16 @@ public class PieLineLevelTypeHandler implements TypeHandler<String> {
private void init() {
List<DataDictionary> dataDictionary = dataDictionaryService.getDataDictionaryMapper().selectList(new LambdaQueryWrapper<DataDictionary>().in(DataDictionary::getType, Arrays.asList("8200", "8100", "8300")));
cache = dataDictionary.stream().collect(Collectors.toMap(DataDictionary::getCode, DataDictionary::getName));
nameCodeMapCache = dataDictionary.stream().collect(Collectors.toMap(DataDictionary::getName, DataDictionary::getCode));
}
@Override
public String handle(String value) {
return cache.get(value);
return cache.getOrDefault(value, value);
}
public String getCodeByName(String name) {
return nameCodeMapCache.getOrDefault(name, name);
}
}
......@@ -2228,13 +2228,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
});
jsonObject.put("equipmentLists", result);
}
// else {
// 查询管道设备详情
// jsonObject.put("equipmentLists", jgUseRegistrationMapper.queryForUnitPipelineEquipment(records));
//}
} else {
this.setPieLineInspectInfo(jgUseRegistration.getProjectContraptionId(), jsonObject);
this.setConstructionInfo(jgUseRegistration.getProjectContraptionId(), jsonObject);
}
}
jsonObject.put("useRegistrationCode", jgUseRegistration.getUseRegistrationCode());
......
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