Ver código fonte

新增报表服务

xy 1 dia atrás
pai
commit
c2f5840327
12 arquivos alterados com 1199 adições e 0 exclusões
  1. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12042_202400ReportOFData.java
  2. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12053_202401ReportOFData.java
  3. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12062_202400ReportOFData.java
  4. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12104_202400ReportOFData.java
  5. 160 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12143_202400RecordOFData.java
  6. 168 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12146_202401RecordOFData.java
  7. 160 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12155_202400RecordOFData.java
  8. 160 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12174_202400RecordOFData.java
  9. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12194_202600ReportOFData.java
  10. 169 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12195_202600RecordOFData.java
  11. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12196_202600ReportOFData.java
  12. 70 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12197_202600RecordOFData.java

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12042_202400ReportOFData.java

@@ -0,0 +1,52 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 埋地钢质管道防腐层整体状况评价报告
+ * */
+@Service("QC12042_202400ReportOFData")
+public class QC12042_202400ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null){
+
+            //根据记录字段动态生成报告字段
+            result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
+            result = autoDataPipeService.autoGeneratePipeReportData(result, refId);
+
+        }
+
+        return result;
+    }
+}

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12053_202401ReportOFData.java

@@ -0,0 +1,52 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 埋地管道风险评估报告
+ * */
+@Service("QC12053_202401ReportOFData")
+public class QC12053_202401ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null){
+
+            //根据记录字段动态生成报告字段
+            result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
+            result = autoDataPipeService.autoGeneratePipeReportData(result, refId);
+
+        }
+
+        return result;
+    }
+}

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12062_202400ReportOFData.java

@@ -0,0 +1,52 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 埋地钢质管道阴极保护系统测试报告(1)
+ * */
+@Service("QC12062_202400ReportOFData")
+public class QC12062_202400ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null){
+
+            //根据记录字段动态生成报告字段
+            result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
+            result = autoDataPipeService.autoGeneratePipeReportData(result, refId);
+
+        }
+
+        return result;
+    }
+}

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12104_202400ReportOFData.java

@@ -0,0 +1,52 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 埋地钢质管道防腐层破损点定位检测报告
+ * */
+@Service("QC12104_202400ReportOFData")
+public class QC12104_202400ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null){
+
+            //根据记录字段动态生成报告字段
+            result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
+            result = autoDataPipeService.autoGeneratePipeReportData(result, refId);
+
+        }
+
+        return result;
+    }
+}

+ 160 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12143_202400RecordOFData.java

@@ -0,0 +1,160 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+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;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 埋地钢质管道防腐层整体状况评价记录
+ */
+@Service("QC12143_202400RecordOFData")
+public class QC12143_202400RecordOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private EquipPipeDetailMapper equipPipeDetailMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
+    @Resource
+    private PipeTaskOrderInputService pipeTaskOrderInputService;
+
+    @Resource
+    private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
+
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbColService dynamicTbColService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null) {
+
+            result = autoDataPipeService.autoGeneratePipeRecordData(result, refId);
+
+            List<PipeTaskOrderItemDO> itemDOList = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDO>()
+                    .eq(PipeTaskOrderItemDO::getOrderId, itemReportDO.getOrderId()));
+            if (!itemDOList.isEmpty()) {
+
+                EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
+
+                List<PipeTaskOrderItemDetailDO> allDetailDOS = pipeTaskOrderItemDetailMapper.selectList(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId());
+                //获取约检管线
+                if (!allDetailDOS.isEmpty()){
+
+                    List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>()
+                            .in(EquipPipeDetailDO::getId, allDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                    if (!equipPipeDetailDOList.isEmpty()) {
+
+                        // 判断pipeName是否相同
+                        String pipeNameValue;
+                        Set<String> pipeNames = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeName)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNameValue = pipeNames.size() == 1 ? pipeNames.iterator().next() : "见一览表";
+                        result.put("pipeName", pipeNameValue);
+
+                        // 判断pipeNo是否相同
+                        String pipeNoValue;
+                        Set<String> pipeNos = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeNo)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNoValue = pipeNos.size() == 1 ? pipeNos.iterator().next() : "见一览表";
+                        result.put("pipeNo", pipeNoValue);
+
+                    }
+
+                }
+
+                //设备信息
+                if (itemDOList.size() > 1) {
+                    result.put("projectNo", "见一览表");
+                    result.put("projectName", "见一览表");
+                } else {
+                    if (equipPipeDO != null) {
+                        result.put("projectNo", equipPipeDO.getProjectNo());
+                        result.put("projectName", equipPipeDO.getProjectName());
+                    }
+                }
+
+            }
+
+        }
+
+        return result;
+    }
+
+}

+ 168 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12146_202401RecordOFData.java

@@ -0,0 +1,168 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+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;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 埋地管道风险评估记录
+ */
+@Service("QC12146_202401RecordOFData")
+public class QC12146_202401RecordOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private EquipPipeDetailMapper equipPipeDetailMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
+    @Resource
+    private PipeTaskOrderInputService pipeTaskOrderInputService;
+
+    @Resource
+    private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
+
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbColService dynamicTbColService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null) {
+
+            result = autoDataPipeService.autoGeneratePipeRecordData(result, refId);
+
+            List<PipeTaskOrderItemDO> itemDOList = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDO>()
+                    .eq(PipeTaskOrderItemDO::getOrderId, itemReportDO.getOrderId()));
+            if (!itemDOList.isEmpty()) {
+
+                EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
+
+                List<PipeTaskOrderItemDetailDO> allDetailDOS = pipeTaskOrderItemDetailMapper.selectList(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId());
+                //获取约检管线
+                if (!allDetailDOS.isEmpty()){
+
+                    List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>()
+                            .in(EquipPipeDetailDO::getId, allDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                    if (!equipPipeDetailDOList.isEmpty()) {
+
+                        // 判断pipeName是否相同
+                        String pipeNameValue;
+                        Set<String> pipeNames = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeName)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNameValue = pipeNames.size() == 1 ? pipeNames.iterator().next() : "见一览表";
+                        result.put("pipeName", pipeNameValue);
+
+                        // 判断pipeNo是否相同
+                        String pipeNoValue;
+                        Set<String> pipeNos = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeNo)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNoValue = pipeNos.size() == 1 ? pipeNos.iterator().next() : "见一览表";
+                        result.put("pipeNo", pipeNoValue);
+
+                        // 判断pipeMaterial是否相同
+                        String pipeMaterialValue;
+                        Set<String> pipeMaterials = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeMaterial)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeMaterialValue = pipeMaterials.size() == 1 ? pipeMaterials.iterator().next() : "见一览表";
+                        result.put("pipeMaterial", pipeMaterialValue);
+
+                    }
+
+                }
+
+                //设备信息
+                if (itemDOList.size() > 1) {
+                    result.put("pipeStandard", "见一览表");
+                } else {
+                    if (equipPipeDO != null) {
+                        result.put("pipeStandard", equipPipeDO.getStandard());
+                    }
+                }
+
+            }
+
+        }
+
+        return result;
+    }
+
+}

+ 160 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12155_202400RecordOFData.java

@@ -0,0 +1,160 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+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;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 埋地钢质管道阴极保护系统测试记录(1)
+ */
+@Service("QC12155_202400RecordOFData")
+public class QC12155_202400RecordOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private EquipPipeDetailMapper equipPipeDetailMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
+    @Resource
+    private PipeTaskOrderInputService pipeTaskOrderInputService;
+
+    @Resource
+    private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
+
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbColService dynamicTbColService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null) {
+
+            result = autoDataPipeService.autoGeneratePipeRecordData(result, refId);
+
+            List<PipeTaskOrderItemDO> itemDOList = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDO>()
+                    .eq(PipeTaskOrderItemDO::getOrderId, itemReportDO.getOrderId()));
+            if (!itemDOList.isEmpty()) {
+
+                EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
+
+                List<PipeTaskOrderItemDetailDO> allDetailDOS = pipeTaskOrderItemDetailMapper.selectList(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId());
+                //获取约检管线
+                if (!allDetailDOS.isEmpty()){
+
+                    List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>()
+                            .in(EquipPipeDetailDO::getId, allDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                    if (!equipPipeDetailDOList.isEmpty()) {
+
+                        // 判断pipeName是否相同
+                        String pipeNameValue;
+                        Set<String> pipeNames = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeName)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNameValue = pipeNames.size() == 1 ? pipeNames.iterator().next() : "见一览表";
+                        result.put("pipeName", pipeNameValue);
+
+                        // 判断pipeNo是否相同
+                        String pipeNoValue;
+                        Set<String> pipeNos = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeNo)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNoValue = pipeNos.size() == 1 ? pipeNos.iterator().next() : "见一览表";
+                        result.put("pipeNo", pipeNoValue);
+
+                    }
+
+                }
+
+                //设备信息
+                if (itemDOList.size() > 1) {
+                    result.put("projectNo", "见一览表");
+                    result.put("projectName", "见一览表");
+                } else {
+                    if (equipPipeDO != null) {
+                        result.put("projectNo", equipPipeDO.getProjectNo());
+                        result.put("projectName", equipPipeDO.getProjectName());
+                    }
+                }
+
+            }
+
+        }
+
+        return result;
+    }
+
+}

+ 160 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12174_202400RecordOFData.java

@@ -0,0 +1,160 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+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;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 埋地钢质管道防腐层破损点定位检测记录
+ */
+@Service("QC12174_202400RecordOFData")
+public class QC12174_202400RecordOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private EquipPipeDetailMapper equipPipeDetailMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
+    @Resource
+    private PipeTaskOrderInputService pipeTaskOrderInputService;
+
+    @Resource
+    private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
+
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbColService dynamicTbColService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null) {
+
+            result = autoDataPipeService.autoGeneratePipeRecordData(result, refId);
+
+            List<PipeTaskOrderItemDO> itemDOList = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDO>()
+                    .eq(PipeTaskOrderItemDO::getOrderId, itemReportDO.getOrderId()));
+            if (!itemDOList.isEmpty()) {
+
+                EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
+
+                List<PipeTaskOrderItemDetailDO> allDetailDOS = pipeTaskOrderItemDetailMapper.selectList(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId());
+                //获取约检管线
+                if (!allDetailDOS.isEmpty()){
+
+                    List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>()
+                            .in(EquipPipeDetailDO::getId, allDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                    if (!equipPipeDetailDOList.isEmpty()) {
+
+                        // 判断pipeName是否相同
+                        String pipeNameValue;
+                        Set<String> pipeNames = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeName)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNameValue = pipeNames.size() == 1 ? pipeNames.iterator().next() : "见一览表";
+                        result.put("pipeName", pipeNameValue);
+
+                        // 判断pipeNo是否相同
+                        String pipeNoValue;
+                        Set<String> pipeNos = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeNo)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNoValue = pipeNos.size() == 1 ? pipeNos.iterator().next() : "见一览表";
+                        result.put("pipeNo", pipeNoValue);
+
+                    }
+
+                }
+
+                //设备信息
+                if (itemDOList.size() > 1) {
+                    result.put("projectNo", "见一览表");
+                    result.put("projectName", "见一览表");
+                } else {
+                    if (equipPipeDO != null) {
+                        result.put("projectNo", equipPipeDO.getProjectNo());
+                        result.put("projectName", equipPipeDO.getProjectName());
+                    }
+                }
+
+            }
+
+        }
+
+        return result;
+    }
+
+}

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12194_202600ReportOFData.java

@@ -0,0 +1,52 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 埋地钢质管道外防腐层交流电流衰减法检测报告
+ * */
+@Service("QC12194_202600ReportOFData")
+public class QC12194_202600ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null){
+
+            //根据记录字段动态生成报告字段
+            result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
+            result = autoDataPipeService.autoGeneratePipeReportData(result, refId);
+
+        }
+
+        return result;
+    }
+}

+ 169 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12195_202600RecordOFData.java

@@ -0,0 +1,169 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+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.pipetaskorderinput.PipeTaskOrderInputDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderuser.PipeTaskOrderUserDO;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+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;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.InspectorInfoPipeUtil;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.JsonConvertUtil;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 埋地钢质管道外防腐层交流电流衰减法检测记录
+ */
+@Service("QC12195_202600RecordOFData")
+public class QC12195_202600RecordOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private EquipPipeDetailMapper equipPipeDetailMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
+    @Resource
+    private PipeTaskOrderInputService pipeTaskOrderInputService;
+
+    @Resource
+    private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
+
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbColService dynamicTbColService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null) {
+
+            result = autoDataPipeService.autoGeneratePipeRecordData(result, refId);
+
+            List<PipeTaskOrderItemDO> itemDOList = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDO>()
+                    .eq(PipeTaskOrderItemDO::getOrderId, itemReportDO.getOrderId()));
+            if (!itemDOList.isEmpty()) {
+
+                EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
+                if (equipPipeDO != null) {
+                    result.put("unitCode", equipPipeDO.getUnitCode());
+                    result.put("unitName", equipPipeDO.getUnitName());
+                    result.put("unitAddress", equipPipeDO.getUnitAddress());
+                    result.put("postalCode", equipPipeDO.getPostalCode());
+                    result.put("certificateNo", equipPipeDO.getCertificateNo());
+                    result.put("pipeUsePlace", equipPipeDO.getPipeAddress());
+                }
+
+                List<PipeTaskOrderItemDetailDO> allDetailDOS = pipeTaskOrderItemDetailMapper.selectList(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId());
+                //获取约检管线
+                if (!allDetailDOS.isEmpty()){
+
+                    List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>()
+                            .in(EquipPipeDetailDO::getId, allDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                    if (!equipPipeDetailDOList.isEmpty()) {
+                        // 判断pipeName是否相同
+                        String pipeNameValue;
+                        Set<String> pipeNames = equipPipeDetailDOList.stream()
+                                .map(EquipPipeDetailDO::getPipeName)
+                                .filter(Objects::nonNull)
+                                .collect(Collectors.toSet());
+                        // 如果只有一个唯一的pipeName值,则使用该值;否则设置为"见一览表"
+                        pipeNameValue = pipeNames.size() == 1 ? pipeNames.iterator().next() : "见一览表";
+                        result.put("pipeName", pipeNameValue);
+
+                        if (equipPipeDetailDOList.size() > 1){
+                            result.put("startEndPoint", "见一览表");
+                        }else{
+                            EquipPipeDetailDO equipPipeDetailDO = equipPipeDetailDOList.get(0);
+                            result.put("startEndPoint", equipPipeDetailDO.getStartPoint() + "-" + equipPipeDetailDO.getEndPoint());
+                        }
+
+                    }
+
+                }
+
+                //设备信息
+                if (itemDOList.size() > 1) {
+                    result.put("projectNo", "见一览表");
+                    result.put("projectName", "见一览表");
+                } else {
+                    if (equipPipeDO != null) {
+                        result.put("projectNo", equipPipeDO.getProjectNo());
+                        result.put("projectName", equipPipeDO.getProjectName());
+                    }
+                }
+
+            }
+
+        }
+
+        return result;
+    }
+
+}

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12196_202600ReportOFData.java

@@ -0,0 +1,52 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 埋地钢质管道外防腐层整体状况评价汇总报告
+ * */
+@Service("QC12196_202600ReportOFData")
+public class QC12196_202600ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private GenerateReportJsonService generateReportJsonService;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null){
+
+            //根据记录字段动态生成报告字段
+            result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
+            result = autoDataPipeService.autoGeneratePipeReportData(result, refId);
+
+        }
+
+        return result;
+    }
+}

+ 70 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12197_202600RecordOFData.java

@@ -0,0 +1,70 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipedetail.EquipPipeDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemdetail.PipeTaskOrderItemDetailDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+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;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemdetail.PipeTaskOrderItemDetailMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 埋地钢质管道外防腐层整体状况评价汇总记录
+ */
+@Service("QC12197_202600RecordOFData")
+public class QC12197_202600RecordOFData implements IDynamicOFData {
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+
+        if (itemReportDO != null) {
+
+            result = autoDataPipeService.autoGeneratePipeRecordData(result, refId);
+
+        }
+
+        return result;
+    }
+
+}