|
|
@@ -8,12 +8,14 @@ import cn.hutool.http.HttpUtil;
|
|
|
import cn.start.tz.framework.common.pojo.CommonResult;
|
|
|
import cn.start.tz.framework.ip.core.Area;
|
|
|
import cn.start.tz.framework.ip.core.utils.AreaUtils;
|
|
|
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.start.tz.module.pressure2.controller.admin.equippipe.vo.EquipPipeSaveReqVO;
|
|
|
import cn.start.tz.module.pressure2.controller.admin.equippipedetail.vo.EquipPipeDetailSaveReqVO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.boilerconnectrecordreport.BoilerConnectRecordReportDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.equipboiler.EquipBoilerDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.equipboilerpressurepart.EquipBoilerPressurePartDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
|
|
|
@@ -21,6 +23,7 @@ import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeT
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.equipboilerpressurepart.EquipBoilerPressurePartMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.equippipedetail.EquipPipeDetailMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
|
|
|
@@ -254,6 +257,119 @@ public class SynchronizationServiceImpl implements SynchronizationService {
|
|
|
return pipeDetailDtoS;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步锅炉受压元件数据
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void mainPressureList() {
|
|
|
+ log.info("同步锅炉受压元件定时任务执行中...");
|
|
|
+
|
|
|
+ // 1. 调用数据中台接口获取全部受压元件数据(不带查询参数)
|
|
|
+ Map<String, Object> form = new HashMap<>();
|
|
|
+ form.put("pageNum", 0);
|
|
|
+ form.put("pageSize", DEFAULT_PAGE_SIZE);
|
|
|
+ String result = getRequest("main_pressure_list", form);
|
|
|
+ ResponseDto responseDto = JSONObject.parseObject(result, ResponseDto.class);
|
|
|
+ log.info("同步数据中台返回受压元件数据:{}", responseDto);
|
|
|
+
|
|
|
+ if (responseDto.getTotal() <= 0 || responseDto.getData().isEmpty()) {
|
|
|
+ log.info("无受压元件数据需要同步");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<MainPressurePartDto> partList = responseDto.getData().stream()
|
|
|
+ .map(data -> ((JSONObject) data).toJavaObject(MainPressurePartDto.class))
|
|
|
+ .toList();
|
|
|
+
|
|
|
+ // 2. 按 REGISTERNO 分组,每组对应一个锅炉
|
|
|
+ Map<String, List<MainPressurePartDto>> groupByRegisterNo = partList.stream()
|
|
|
+ .collect(Collectors.groupingBy(MainPressurePartDto::getREGISTERNO));
|
|
|
+
|
|
|
+ log.info("受压元件涉及 {} 个注册号", groupByRegisterNo.size());
|
|
|
+
|
|
|
+ // 3. 遍历每个注册号,找到对应锅炉,保存受压元件
|
|
|
+ for (Map.Entry<String, List<MainPressurePartDto>> entry : groupByRegisterNo.entrySet()) {
|
|
|
+ String registerNo = entry.getKey();
|
|
|
+ List<MainPressurePartDto> parts = entry.getValue();
|
|
|
+
|
|
|
+ List<EquipBoilerDO> boilerList = equipBoilerMapper.selectList(
|
|
|
+ new LambdaQueryWrapperX<EquipBoilerDO>()
|
|
|
+ .eq(EquipBoilerDO::getEquipCode, registerNo));
|
|
|
+ if (boilerList.isEmpty()) {
|
|
|
+ log.warn("未找到注册号为 {} 的锅炉设备,跳过 {} 条受压元件", registerNo, parts.size());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String boilerId = boilerList.get(0).getId();
|
|
|
+
|
|
|
+ // 先删后增
|
|
|
+ equipBoilerPressurePartMapper.delete(
|
|
|
+ new LambdaQueryWrapperX<EquipBoilerPressurePartDO>()
|
|
|
+ .eq(EquipBoilerPressurePartDO::getBoilerId, boilerId));
|
|
|
+
|
|
|
+ List<EquipBoilerPressurePartDO> saveList = parts.stream().map(dto -> {
|
|
|
+ EquipBoilerPressurePartDO partDO = new EquipBoilerPressurePartDO();
|
|
|
+ partDO.setBoilerId(boilerId);
|
|
|
+ partDO.setPartName(dto.getPART_NAME());
|
|
|
+ partDO.setSpecification(dto.getSPECIFICATION());
|
|
|
+ partDO.setMaterial(dto.getMATERIAL());
|
|
|
+ partDO.setRemark(dto.getREMARK());
|
|
|
+ return partDO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ equipBoilerPressurePartMapper.insertBatch(saveList);
|
|
|
+ log.info("注册号 {} 同步受压元件完成,共 {} 条", registerNo, saveList.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 同步锅炉受压元件数据
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void mainPressureList(String REGISTERNO) {
|
|
|
+ log.info("同步锅炉受压元件定时任务执行中...");
|
|
|
+
|
|
|
+ // 1. 根据 REGISTERNO 找到 EquipBoilerDO,获取 id
|
|
|
+ List<EquipBoilerDO> boilerList = equipBoilerMapper.selectList(
|
|
|
+ new LambdaQueryWrapperX<EquipBoilerDO>()
|
|
|
+ .eq(EquipBoilerDO::getEquipCode, REGISTERNO));
|
|
|
+ if (boilerList.isEmpty()) {
|
|
|
+ log.warn("未找到注册号为 {} 的锅炉设备", REGISTERNO);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String boilerId = boilerList.get(0).getId();
|
|
|
+ log.info("找到锅炉设备,id={}", boilerId);
|
|
|
+
|
|
|
+ // 2. 调用数据中台接口获取受压元件数据
|
|
|
+ Map<String, Object> form = new HashMap<>();
|
|
|
+ form.put("REGISTERNO", REGISTERNO);
|
|
|
+ String result = getRequest("main_pressure_list", form);
|
|
|
+ ResponseDto responseDto = JSONObject.parseObject(result, ResponseDto.class);
|
|
|
+ log.info("同步数据中台返回受压元件数据:{}", responseDto);
|
|
|
+
|
|
|
+ if (responseDto.getTotal() > 0 && !responseDto.getData().isEmpty()) {
|
|
|
+ List<MainPressurePartDto> partList = responseDto.getData().stream()
|
|
|
+ .map(data -> ((JSONObject) data).toJavaObject(MainPressurePartDto.class))
|
|
|
+ .toList();
|
|
|
+
|
|
|
+ // 3. 删除旧的受压元件记录,再插入新的
|
|
|
+ equipBoilerPressurePartMapper.delete(
|
|
|
+ new LambdaQueryWrapperX<EquipBoilerPressurePartDO>()
|
|
|
+ .eq(EquipBoilerPressurePartDO::getBoilerId, boilerId));
|
|
|
+
|
|
|
+ List<EquipBoilerPressurePartDO> saveList = partList.stream().map(dto -> {
|
|
|
+ EquipBoilerPressurePartDO partDO = new EquipBoilerPressurePartDO();
|
|
|
+ partDO.setBoilerId(boilerId);
|
|
|
+ partDO.setPartName(dto.getPART_NAME());
|
|
|
+ partDO.setSpecification(dto.getSPECIFICATION());
|
|
|
+ partDO.setMaterial(dto.getMATERIAL());
|
|
|
+ partDO.setRemark(dto.getREMARK());
|
|
|
+ return partDO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ equipBoilerPressurePartMapper.insertBatch(saveList);
|
|
|
+ log.info("同步锅炉受压元件完成,共 {} 条", saveList.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean uploadCheckData(CheckDto checkDto) {
|
|
|
log.info("上传约检数据中...");
|
|
|
@@ -309,6 +425,8 @@ public class SynchronizationServiceImpl implements SynchronizationService {
|
|
|
private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
|
|
|
@Resource
|
|
|
private BoilerConnectRecordReportService boilerConnectRecordReportService;
|
|
|
+ @Resource
|
|
|
+ private EquipBoilerPressurePartMapper equipBoilerPressurePartMapper;
|
|
|
|
|
|
@Value("${external.oa.rest.enableProd}")
|
|
|
private boolean enablProd;
|