Commit a8e181b3 authored by suhuiguang's avatar suhuiguang

1.压力管道编辑功能接口开发

parent 9b2737d9
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Group(value = "equip_design_info")
public class PieLineDesignChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "设计单位名称")
private String designUnitName;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-压力管道
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
public class PipelineChangeItemDto extends TechParamsPipelineChangeFieldDto {
@FieldDisplayDefine(value = "设计单位名称")
private String designUnitName;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 管道工程装置表
*
* @author system_generator
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ProjectContraptionChangeFieldDto", description = "管道工程装置表")
public class ProjectContraptionChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "主键", isExist = false)
private Long sequenceNbr;
private static final long serialVersionUID = 1L;
@FieldDisplayDefine(value = "工程装置名称")
private String projectContraption;
@FieldDisplayDefine(value = "工程装置编号")
private String projectContraptionNo;
@FieldDisplayDefine(value = "设备品种代码")
private String equDefineCode;
@FieldDisplayDefine(value = "设备品种名称")
private String equDefine;
@FieldDisplayDefine(value = "装置管道总长度(m)", isExist = false)
private Double pipelineLength;
@FieldDisplayDefine(value = "产品照片附件", type = JSON.class)
private String productPhoto;
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessories;
@FieldDisplayDefine(value = "产品质量合格证明", type = JSON.class)
private String productQualificationCertificate;
}
package com.yeejoin.amos.boot.module.jg.api.dto; 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.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group; import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
...@@ -12,14 +12,19 @@ import lombok.experimental.Accessors; ...@@ -12,14 +12,19 @@ import lombok.experimental.Accessors;
* @author system_generator * @author system_generator
* @date 2023-08-17 * @date 2023-08-17
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Group(value = "tech_params_pipeline") @Group(value = "tech_params_pipeline")
public class TechParamsPipelineChangeFieldDto extends BaseTechParamsFieldDto { public class TechParamsPipelineChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "管道类别") @FieldDisplayDefine(value = "w唯一标识", isExist = false)
private String pipelineClass; private String record;
@FieldDisplayDefine(value = "管道名称(登记单元)")
private String pipeName;
@FieldDisplayDefine(value = "管道编号") @FieldDisplayDefine(value = "管道编号")
...@@ -39,27 +44,31 @@ public class TechParamsPipelineChangeFieldDto extends BaseTechParamsFieldDto { ...@@ -39,27 +44,31 @@ public class TechParamsPipelineChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "管道长度") @FieldDisplayDefine(value = "管道长度")
private String pipeLength; private Double pipeLength;
@FieldDisplayDefine(value = "起/始位置", type = JSON.class)
private String startePosition;
@FieldDisplayDefine(value = "压力") @FieldDisplayDefine(value = "设计压力")
private String pressure; private String pressure;
@FieldDisplayDefine(value = "温度") @FieldDisplayDefine(value = "设计温度")
private String temperature; private String temperature;
@FieldDisplayDefine(value = "介质") @FieldDisplayDefine(value = "设计介质")
private String medium; private String medium;
@FieldDisplayDefine(value = "工作压力")
private String workPressure;
@FieldDisplayDefine(value = "工作温度")
private String workTemperature;
@FieldDisplayDefine(value = "工作介质")
private String workMedium;
@FieldDisplayDefine(value = "备注") @FieldDisplayDefine(value = "备注")
private String remarks; private String remarks;
} }
...@@ -77,6 +77,8 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> { ...@@ -77,6 +77,8 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> {
@MapKey("records") @MapKey("records")
List<Map<String, Object>> queryForUnitPipelineEquipment(@Param("records") List<String> records); List<Map<String, Object>> queryForUnitPipelineEquipment(@Param("records") List<String> records);
List<Map<String, Object>> queryForUnitPipelineEquipmentForEdit(@Param("records") List<String> records);
@MapKey("id") @MapKey("id")
List<Map<String, Object>> selectEquipList(@Param("id") Long id); List<Map<String, Object>> selectEquipList(@Param("id") Long id);
......
...@@ -675,6 +675,34 @@ ...@@ -675,6 +675,34 @@
</foreach> </foreach>
ORDER BY ui.REC_DATE DESC ORDER BY ui.REC_DATE DESC
</select> </select>
<select id="queryForUnitPipelineEquipmentForEdit" resultType="java.util.Map">
SELECT
ibjtpp."PIPE_NAME" AS pipeName,
ibjtpp."PIPELINE_NUMBER" AS pipelineNumber,
ibjtpp."DEVICE_LEVEL" AS deviceLevel,
ibjtpp."NOMINAL_DIAMETER" AS nominalDiameter,
ibjtpp."WALL_THICKNESS" AS wallThickness,
ibjtpp."PIPE_LENGTH" AS pipeLength,
ibjtpp."PRESSURE" AS pressure,
ibjtpp."TEMPERATURE" AS temperature,
ibjtpp."MEDIUM" AS medium,
ibjtpp."WORK_PRESSURE" AS workPressure,
ibjtpp."WORK_TEMPERATURE" AS workTemperature,
ibjtpp."WORK_MEDIUM" AS workMedium,
ibjtpp."REMARKS" AS remarks,
ibjdi."DESIGN_UNIT_NAME" AS designUnitName,
ibjui."USE_DATE" AS useDate,
ibjui."RECORD" AS record
FROM idx_biz_jg_use_info ibjui
LEFT JOIN idx_biz_jg_tech_params_pipeline ibjtpp ON ibjui.RECORD = ibjtpp.RECORD
LEFT JOIN idx_biz_jg_design_info ibjdi ON ibjui.RECORD = ibjdi.RECORD
WHERE
ibjui.record in
<foreach collection="records" item="record" open="(" close=")" separator=",">
#{record}
</foreach>
ORDER BY ui.REC_DATE DESC
</select>
<sql id="page-list-vessel"> <sql id="page-list-vessel">
SELECT SELECT
ui."USE_UNIT_NAME" useUnitName, ui."USE_UNIT_NAME" useUnitName,
......
...@@ -45,6 +45,4 @@ public class BizDataChangeController { ...@@ -45,6 +45,4 @@ public class BizDataChangeController {
@RequestParam(required = false) String bizId) { @RequestParam(required = false) String bizId) {
return ResponseHelper.buildResponse(bizDataChangeService.queryDetail(applyNo, bizType, model, bizId)); return ResponseHelper.buildResponse(bizDataChangeService.queryDetail(applyNo, bizType, model, bizId));
} }
} }
...@@ -17,7 +17,7 @@ public interface IChangeDataProcessStrategy { ...@@ -17,7 +17,7 @@ public interface IChangeDataProcessStrategy {
List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId); List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId);
Map<String, ?> getDetail(String applyNo, String bizId); Map<String, Object> getDetail(String applyNo, String bizId);
/** /**
* 可处理类型 * 可处理类型
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.utils.NameUtils;
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.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration; import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy; import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel; import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -32,25 +38,58 @@ public class BatchDataChangeProcessStrategy implements IChangeDataProcessStrateg ...@@ -32,25 +38,58 @@ public class BatchDataChangeProcessStrategy implements IChangeDataProcessStrateg
private final JgUseRegistrationServiceImpl useRegistrationService; private final JgUseRegistrationServiceImpl useRegistrationService;
private final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService; private final JgUseRegistrationEqServiceImpl useRegistrationEqService;
private final JgUseRegistrationMapper jgUseRegistrationMapper; private final JgUseRegistrationMapper jgUseRegistrationMapper;
private final CommonEquipDataProcessService commonEquipDataProcessService; private final CommonEquipDataProcessService commonEquipDataProcessService;
public BatchDataChangeProcessStrategy(JgUseRegistrationServiceImpl useRegistrationService, JgRegistrationHistoryServiceImpl jgRegistrationHistoryService, JgUseRegistrationMapper jgUseRegistrationMapper, CommonEquipDataProcessService commonEquipDataProcessService) { private final PieLineDataChangeServiceImpl pieLineDataChangeService;
private final IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionService;
public BatchDataChangeProcessStrategy(JgUseRegistrationServiceImpl useRegistrationService, JgUseRegistrationEqServiceImpl useRegistrationEqService, JgUseRegistrationMapper jgUseRegistrationMapper, CommonEquipDataProcessService commonEquipDataProcessService, PieLineDataChangeServiceImpl pieLineDataChangeService, IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionService) {
this.useRegistrationService = useRegistrationService; this.useRegistrationService = useRegistrationService;
this.jgRegistrationHistoryService = jgRegistrationHistoryService; this.useRegistrationEqService = useRegistrationEqService;
this.jgUseRegistrationMapper = jgUseRegistrationMapper; this.jgUseRegistrationMapper = jgUseRegistrationMapper;
this.commonEquipDataProcessService = commonEquipDataProcessService; this.commonEquipDataProcessService = commonEquipDataProcessService;
this.pieLineDataChangeService = pieLineDataChangeService;
this.idxBizJgProjectContraptionService = idxBizJgProjectContraptionService;
} }
@Override @Override
public List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId) { public List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId) {
JSONObject data = (JSONObject) changeData; JSONObject data = (JSONObject) changeData;
JSONArray equips = data.getJSONArray(RequestChangeData.multiDataKey); JSONArray equips = data.getJSONArray(RequestChangeData.multiDataKey);
List<MultiChangeItemData> items = equips.toJavaList(MultiChangeItemData.class);
List<ChangeDataDto> allChangeColumns = new ArrayList<>(); List<ChangeDataDto> allChangeColumns = new ArrayList<>();
JgUseRegistration jgUseRegistration = useRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>().eq(JgUseRegistration::getApplyNo, defaultChangeId));
// 判断是压力管道还是气瓶
IdxBizJgRegisterInfo jgRegisterInfo = useRegistrationService.getRegisterInfo(jgUseRegistration);
if (EquipmentClassifityEnum.YLGD.getCode().equals(jgRegisterInfo.getEquList())) { // 管道逻辑
List<PipelineChangeItemDto> items = equips.toJavaList(PipelineChangeItemDto.class);
// 1.装置基本信息校验、保存(前端返回的装置信息为大写 需注意)
ProjectContraptionChangeDataDto projectContraptionChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, ProjectContraptionChangeDataDto.class);
this.calTotalPieLineLength(projectContraptionChangeDataDto, items);
pieLineDataChangeService.update(projectContraptionChangeDataDto, allChangeColumns);
// 2.使用登记表的装置名称更新
jgUseRegistration.setProjectContraption(projectContraptionChangeDataDto.getProjectContraption());
useRegistrationService.updateById(jgUseRegistration);
// 设备技术参数入库前校验,约束:同一个装置下的管道编号不能重复
if (items.size() != items.stream().map(TechParamsPipelineChangeFieldDto::getPipelineNumber).distinct().count()) {
throw new BadRequest("同一工程装置下管道编号不能重复!");
}
// 3.管道信息入库保存
items.forEach(item -> {
String record = item.getRecord();
// 设计信息更新
pieLineDataChangeService.saveDesignForPieLine(record, allChangeColumns, item);
// 技术参数入库保存
commonEquipDataProcessService.savePieLineTechParam(record, allChangeColumns, item);
});
} else { // 气瓶逻辑
List<MultiChangeItemData> items = equips.toJavaList(MultiChangeItemData.class);
// 校验 // 校验
items.forEach(item -> { items.forEach(item -> {
String record = item.getRecord(); String record = item.getRecord();
...@@ -82,36 +121,52 @@ public class BatchDataChangeProcessStrategy implements IChangeDataProcessStrateg ...@@ -82,36 +121,52 @@ public class BatchDataChangeProcessStrategy implements IChangeDataProcessStrateg
commonEquipDataProcessService.updateTechParamInfo(registerChangeDataDto, record, itemData, allChangeColumns); commonEquipDataProcessService.updateTechParamInfo(registerChangeDataDto, record, itemData, allChangeColumns);
} }
}); });
}
// 单位办理不能修改设备品种,如果修改无法保证单据下的所有设备都一致 // 单位办理不能修改设备品种,如果修改无法保证单据下的所有设备都一致
return allChangeColumns; return allChangeColumns;
} }
private void calTotalPieLineLength(ProjectContraptionChangeDataDto projectContraptionChangeDataDto, List<PipelineChangeItemDto> items) {
projectContraptionChangeDataDto.setPipelineLength(items.stream().filter(i -> i.getPipeLength() != null).mapToDouble(TechParamsPipelineChangeFieldDto::getPipeLength).sum());
}
@Override @Override
public Map<String, List<Map<String, Object>>> getDetail(String applyNo, String bizId) { public Map<String, Object> getDetail(String applyNo, String bizId) {
Map<String, List<Map<String, Object>>> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
JgUseRegistration jgUseRegistration = useRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>() JgUseRegistration jgUseRegistration = useRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>()
.eq(JgUseRegistration::getApplyNo, applyNo).select(BaseEntity::getSequenceNbr)); .eq(JgUseRegistration::getApplyNo, applyNo).select(BaseEntity::getSequenceNbr));
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda(); LambdaQueryWrapper<JgUseRegistrationEq> lambda = new QueryWrapper<JgUseRegistrationEq>().lambda();
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, jgUseRegistration.getSequenceNbr()); lambda.eq(JgUseRegistrationEq::getEquipTransferId, jgUseRegistration.getSequenceNbr());
lambda.eq(JgRegistrationHistory::getIsDelete, false); lambda.select(JgUseRegistrationEq::getEquId);
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambda); List<JgUseRegistrationEq> eqs = useRegistrationEqService.getBaseMapper().selectList(lambda);
JSONObject jsonObject = JSONObject.parseObject(jgRegistrationHistory.getChangeData()); List<String> records = eqs.stream().map(JgUseRegistrationEq::getEquId).collect(toList());
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) jsonObject.get("equipmentLists"); IdxBizJgRegisterInfo registerInfo = useRegistrationService.getRegisterInfo(jgUseRegistration);
List<String> records = equipmentLists.stream().map(v -> (String) v.get("record")).collect(toList());
List<Map<String, Object>> tableData; List<Map<String, Object>> tableData;
if (CylinderTypeEnum.CYLINDER.getCode().equals(jsonObject.get("EQU_CATEGORY_CODE"))) { if (CylinderTypeEnum.CYLINDER.getCode().equals(registerInfo.getEquCategory())) {
List<DictionarieValueModel> fillingMedium = Systemctl.dictionarieClient.dictValues("FILLING_MEDIUM").getResult(); List<DictionarieValueModel> fillingMedium = Systemctl.dictionarieClient.dictValues("FILLING_MEDIUM").getResult();
Map<String, Object> fillingMediumMap = fillingMedium.stream().collect(Collectors.toMap(DictionarieValueModel::getDictDataKey, DictionarieValueModel::getDictDataValue)); Map<String, Object> fillingMediumMap = fillingMedium.stream().collect(Collectors.toMap(DictionarieValueModel::getDictDataKey, DictionarieValueModel::getDictDataValue));
tableData = jgUseRegistrationMapper.queryForUnitVesselEquipment(records); tableData = jgUseRegistrationMapper.queryForUnitVesselEquipment(records);
tableData.forEach(i -> i.put("chargingMedium", fillingMediumMap.get(i.get("chargingMedium")))); tableData.forEach(i -> i.put("chargingMedium", fillingMediumMap.get(i.get("chargingMedium"))));
} else { } else {
tableData = jgUseRegistrationMapper.queryForUnitPipelineEquipment(records); IdxBizJgProjectContraption idxBizJgProjectContraption = idxBizJgProjectContraptionService.getById(jgUseRegistration.getProjectContraptionId());
Map<String, Object> map = IdxBizJgRegisterInfoServiceImpl.convertCamelToUnderscore(idxBizJgProjectContraption, IdxBizJgProjectContraptionServiceImpl.jsonFields);
result.putAll(map);
tableData = jgUseRegistrationMapper.queryForUnitPipelineEquipmentForEdit(records);
} }
result.put("tableData", tableData); result.put("tableData", tableData);
return result; return result;
} }
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 @Override
public IBizDataChangeHandleStrategy.ModelType canHandleMode() { public IBizDataChangeHandleStrategy.ModelType canHandleMode() {
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData; import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
import com.yeejoin.amos.boot.module.jg.biz.context.BizDataHandleStrategyContext;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy; import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.context.BizDataHandleStrategyContext;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -11,6 +11,7 @@ import java.util.Map; ...@@ -11,6 +11,7 @@ import java.util.Map;
@Service @Service
public class BizDataChangeServiceImpl { public class BizDataChangeServiceImpl {
/** /**
* 变更保存 * 变更保存
* *
...@@ -31,4 +32,5 @@ public class BizDataChangeServiceImpl { ...@@ -31,4 +32,5 @@ public class BizDataChangeServiceImpl {
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType); IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
return handleStrategy.getDetail(applyNo, model, bizId); return handleStrategy.getDetail(applyNo, model, bizId);
} }
} }
...@@ -142,7 +142,7 @@ public class CommonEquipDataProcessService { ...@@ -142,7 +142,7 @@ public class CommonEquipDataProcessService {
} }
private List<ChangeDataDto> mergeChangeFields(List<ChangeDataDto> changeDataNew, List<ChangeDataDto> changeDataOld) { public List<ChangeDataDto> mergeChangeFields(List<ChangeDataDto> changeDataNew, List<ChangeDataDto> changeDataOld) {
Map<String, ChangeDataDto> oldKv = changeDataOld.stream().collect(Collectors.toMap(ChangeDataDto::getColumnKey, Function.identity())); Map<String, ChangeDataDto> oldKv = changeDataOld.stream().collect(Collectors.toMap(ChangeDataDto::getColumnKey, Function.identity()));
changeDataNew.forEach(o -> { changeDataNew.forEach(o -> {
// 正常不会出现此情况,old数据 大于等于 new 数据的key // 正常不会出现此情况,old数据 大于等于 new 数据的key
...@@ -323,19 +323,7 @@ public class CommonEquipDataProcessService { ...@@ -323,19 +323,7 @@ public class CommonEquipDataProcessService {
// 压力管道 // 压力管道
TechParamsPipelineChangeFieldDto newPipeline = new TechParamsPipelineChangeFieldDto(); TechParamsPipelineChangeFieldDto newPipeline = new TechParamsPipelineChangeFieldDto();
BeanUtil.copyProperties(JSON.parse(JSONObject.toJSONString(changeData)), newPipeline, true); BeanUtil.copyProperties(JSON.parse(JSONObject.toJSONString(changeData)), newPipeline, true);
savePieLineTechParam(record, allChange, newPipeline);
IdxBizJgTechParamsPipeline techParamsPipeline = iIdxBizJgTechParamsPipelineService.getOneData(record);
// 技术参数对象转换为全部技术参数 ,其他无用字段去掉
TechParamsPipelineChangeFieldDto oldPipeline = BeanUtil.copyProperties(techParamsPipeline, TechParamsPipelineChangeFieldDto.class);
// 字段行转列
List<ChangeDataDto> newPipelineChangeData = this.convertBeanField2Column2(newPipeline, record);
List<ChangeDataDto> oldPipelineChangeData = this.convertBeanField2Column2(oldPipeline, record);
// 比对
List<ChangeDataDto> pipelineChangeFields = this.mergeChangeFields(newPipelineChangeData, oldPipelineChangeData);
// 业务处理
equipChangeDataUpdateService.updateTechParamByRecord(this.buildTableName(TechParamsPipelineChangeFieldDto.class), record, pipelineChangeFields);
// 日志数据记录
allChange.addAll(pipelineChangeFields);
break; break;
case KYSD: case KYSD:
// 客运索道 // 客运索道
...@@ -360,7 +348,22 @@ public class CommonEquipDataProcessService { ...@@ -360,7 +348,22 @@ public class CommonEquipDataProcessService {
} }
} }
private List<ChangeDataDto> convertBeanField2Column2(Object beanData, String record) { public void savePieLineTechParam(String record, List<ChangeDataDto> allChange, TechParamsPipelineChangeFieldDto newPipeline) {
IdxBizJgTechParamsPipeline techParamsPipeline = iIdxBizJgTechParamsPipelineService.getOneData(record);
// 技术参数对象转换为全部技术参数 ,其他无用字段去掉
TechParamsPipelineChangeFieldDto oldPipeline = BeanUtil.copyProperties(techParamsPipeline, TechParamsPipelineChangeFieldDto.class);
// 字段行转列
List<ChangeDataDto> newPipelineChangeData = this.convertBeanField2Column2(newPipeline, record);
List<ChangeDataDto> oldPipelineChangeData = this.convertBeanField2Column2(oldPipeline, record);
// 比对
List<ChangeDataDto> pipelineChangeFields = this.mergeChangeFields(newPipelineChangeData, oldPipelineChangeData);
// 业务处理
equipChangeDataUpdateService.updateTechParamByRecord(this.buildTableName(TechParamsPipelineChangeFieldDto.class), record, pipelineChangeFields);
// 日志数据记录
allChange.addAll(pipelineChangeFields);
}
public List<ChangeDataDto> convertBeanField2Column2(Object beanData, String changeId) {
List<ChangeDataDto> changeData = new ArrayList<>(); List<ChangeDataDto> changeData = new ArrayList<>();
Group group = beanData.getClass().getAnnotation(Group.class); Group group = beanData.getClass().getAnnotation(Group.class);
Field[] fields = beanData.getClass().getDeclaredFields(); Field[] fields = beanData.getClass().getDeclaredFields();
...@@ -374,7 +377,7 @@ public class CommonEquipDataProcessService { ...@@ -374,7 +377,7 @@ public class CommonEquipDataProcessService {
changeDataDto.setColumnKey(field.getName()); changeDataDto.setColumnKey(field.getName());
changeDataDto.setColumnFamily(group.value()); changeDataDto.setColumnFamily(group.value());
changeDataDto.setColumnLabel(fieldName); changeDataDto.setColumnLabel(fieldName);
changeDataDto.setChangeId(record); changeDataDto.setChangeId(changeId);
Object oV = field.get(beanData); Object oV = field.get(beanData);
if (oV instanceof String) { if (oV instanceof String) {
String value = (String) field.get(beanData); String value = (String) field.get(beanData);
...@@ -395,7 +398,7 @@ public class CommonEquipDataProcessService { ...@@ -395,7 +398,7 @@ public class CommonEquipDataProcessService {
} }
private List<ChangeDataDto> buildDesignInfoNew(EquipDesignChangeDataDto changeDataDto, String record) { public List<ChangeDataDto> buildDesignInfoNew(Object changeDataDto, String record) {
return this.convertBeanField2Column2(changeDataDto, record); return this.convertBeanField2Column2(changeDataDto, record);
} }
...@@ -407,7 +410,7 @@ public class CommonEquipDataProcessService { ...@@ -407,7 +410,7 @@ public class CommonEquipDataProcessService {
return this.convertBeanField2Column2(changeDataDto, record); return this.convertBeanField2Column2(changeDataDto, record);
} }
private List<ChangeDataDto> buildDesignInfoOld(String record) { public List<ChangeDataDto> buildDesignInfoOld(String record) {
EquipDesignChangeDataDto changeDataDto = new EquipDesignChangeDataDto(); EquipDesignChangeDataDto changeDataDto = new EquipDesignChangeDataDto();
IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record)); IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record));
BeanUtil.copyProperties(designInfo, changeDataDto); BeanUtil.copyProperties(designInfo, changeDataDto);
......
...@@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -191,4 +192,12 @@ public class EquipChangeDataUpdateService { ...@@ -191,4 +192,12 @@ public class EquipChangeDataUpdateService {
public void checkDesignChangeData(String record, EquipDesignChangeDataDto equipDesignChangeDataDto) { public void checkDesignChangeData(String record, EquipDesignChangeDataDto equipDesignChangeDataDto) {
} }
public void updatePieLineDesignData(String record, PieLineDesignChangeDataDto equipDesignChangeDataDto) {
LambdaUpdateWrapper<IdxBizJgDesignInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(IdxBizJgDesignInfo::getRecord, record);
updateWrapper.set(IdxBizJgDesignInfo::getDesignUnitName, equipDesignChangeDataDto.getDesignUnitName());
updateWrapper.set(IdxBizJgDesignInfo::getRecDate, new Date());
idxBizJgDesignInfoMapper.update(null, updateWrapper);
}
} }
...@@ -311,8 +311,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -311,8 +311,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
try { try {
value = field.get(object); value = field.get(object);
// 需要转为jsonArray的字段 // 需要转为jsonArray的字段
if (!ValidationUtil.isEmpty(strToJsonArrayFields) && Arrays.asList(strToJsonArrayFields).contains(underscoreFieldName)) { if (!ValidationUtil.isEmpty(strToJsonArrayFields) && Arrays.asList(strToJsonArrayFields).contains(underscoreFieldName) && value instanceof String) {
value = JSON.parseArray((String) field.get(object)); value = JSON.parse((String) field.get(object));
} }
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
......
...@@ -1642,7 +1642,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -1642,7 +1642,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
commonServiceImpl.buildTaskModel(list); commonServiceImpl.buildTaskModel(list);
} }
private String getEquipListCode(String record) { public String getEquipListCode(String record) {
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoService.getOne(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().eq(IdxBizJgRegisterInfo::getRecord, record).select(TzsBaseEntity::getSequenceNbr,IdxBizJgRegisterInfo::getEquList)); IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoService.getOne(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().eq(IdxBizJgRegisterInfo::getRecord, record).select(TzsBaseEntity::getSequenceNbr,IdxBizJgRegisterInfo::getEquList));
if(registerInfo != null){ if(registerInfo != null){
return registerInfo.getEquList(); return registerInfo.getEquList();
...@@ -3007,6 +3007,18 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -3007,6 +3007,18 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
} }
} }
public IdxBizJgRegisterInfo getRegisterInfo(JgUseRegistration jgUseRegistration) {
LambdaQueryWrapper<JgUseRegistrationEq> jgUseRegEqWrapper = new QueryWrapper<JgUseRegistrationEq>().lambda();
jgUseRegEqWrapper.eq(JgUseRegistrationEq::getEquipTransferId, String.valueOf(jgUseRegistration.getSequenceNbr()));
List<JgUseRegistrationEq> jgUseRegistrationEqList = jgRelationEquipMapper.selectList(jgUseRegEqWrapper);
if (!jgUseRegistrationEqList.isEmpty()) {
String record = jgUseRegistrationEqList.get(0).getEquId();
return idxBizJgRegisterInfoService.getOne(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().eq(IdxBizJgRegisterInfo::getRecord, record).select(TzsBaseEntity::getSequenceNbr,IdxBizJgRegisterInfo::getEquList));
}
return null;
}
/** /**
* 处理历史错误单子 * 处理历史错误单子
* *
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
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.ChangeDataDto;
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.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 EquipChangeDataUpdateService equipChangeDataUpdateService;
public PieLineDataChangeServiceImpl(CommonEquipDataProcessService commonEquipDataProcessService, IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionServiceImpl, EquipChangeDataUpdateService equipChangeDataUpdateService) {
this.commonEquipDataProcessService = commonEquipDataProcessService;
this.idxBizJgProjectContraptionServiceImpl = idxBizJgProjectContraptionServiceImpl;
this.equipChangeDataUpdateService = equipChangeDataUpdateService;
}
public void update(ProjectContraptionChangeDataDto projectContraptionChangeDataDtoNew, List<ChangeDataDto> allChangeColumns) {
// 原有对象行转列
ProjectContraptionChangeDataDto projectContraptionChangeDataDtoOld = getOldProjectContratData(projectContraptionChangeDataDtoNew);
List<ChangeDataDto> newProjectContraptionChangeData = commonEquipDataProcessService.convertBeanField2Column2(projectContraptionChangeDataDtoNew, projectContraptionChangeDataDtoNew.getSequenceNbr() + "");
// 新对象构造行转列
List<ChangeDataDto> oldProjectContraptionChangeData = commonEquipDataProcessService.convertBeanField2Column2(projectContraptionChangeDataDtoOld, projectContraptionChangeDataDtoNew.getSequenceNbr() + "");
// 数据比对记录变化字段列表
allChangeColumns.addAll(commonEquipDataProcessService.mergeChangeFields(newProjectContraptionChangeData, oldProjectContraptionChangeData));
// 数据入库
LambdaUpdateWrapper<IdxBizJgProjectContraption> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BaseEntity::getSequenceNbr, projectContraptionChangeDataDtoNew.getSequenceNbr());
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());
updateWrapper.set(IdxBizJgProjectContraption::getProductPhoto, projectContraptionChangeDataDtoNew.getProductPhoto());
idxBizJgProjectContraptionServiceImpl.update(null, updateWrapper);
}
private ProjectContraptionChangeDataDto getOldProjectContratData(ProjectContraptionChangeDataDto projectContraptionChangeDataDtoNew) {
IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionServiceImpl.getById(projectContraptionChangeDataDtoNew.getSequenceNbr());
return BeanUtil.copyProperties(projectContraption, ProjectContraptionChangeDataDto.class);
}
public void saveDesignForPieLine(String record, List<ChangeDataDto> allChangeColumns, PipelineChangeItemDto pipelineChangeItemDto) {
// 1.记录变化的数据对象
PieLineDesignChangeDataDto pieLineDesignChangeDataDto = BeanUtil.copyProperties(pipelineChangeItemDto, PieLineDesignChangeDataDto.class);
// 构造新对象行转列
List<ChangeDataDto> designInfoNew = commonEquipDataProcessService.buildDesignInfoNew(pieLineDesignChangeDataDto, record);
// 老数据查询行转列
List<ChangeDataDto> designInfoOld = commonEquipDataProcessService.buildDesignInfoOld(record);
allChangeColumns.addAll(commonEquipDataProcessService.mergeChangeFields(designInfoNew, designInfoOld));
// 2.更新管道的设计单位名称
equipChangeDataUpdateService.updatePieLineDesignData(record, pieLineDesignChangeDataDto);
}
}
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