Jelajahi Sumber

管道长度

xy 1 bulan lalu
induk
melakukan
d2bb214609

+ 44 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12184_202401JRecordOFData.java

@@ -2,10 +2,14 @@ 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.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.service.dynamicOFData.IDynamicOFData;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
@@ -17,8 +21,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 压动管道定期检验项目表报告 - 记录
@@ -38,6 +45,12 @@ public class QC12184_202401JRecordOFData implements IDynamicOFData {
     @Resource
     private AutoDataPipeService autoDataPipeService;
 
+    @Resource
+    private EquipPipeDetailMapper equipPipeDetailMapper;
+
+    @Resource
+    private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
+
     @Resource
     private DynamicTbValService dynamicTbValService;
 
@@ -74,14 +87,43 @@ public class QC12184_202401JRecordOFData implements IDynamicOFData {
                     result.put("projectNo","见一览表");
                     result.put("projectName","见一览表");
                     result.put("pipeClass","见一览表");
-                    result.put("pipeLengthTotal","见一览表");
+//                    result.put("pipeLengthTotal","见一览表");
+
+                    // 找出全部管道
+                    List<PipeTaskOrderItemDetailDO> pipeTaskOrderItemDetailDOS = pipeTaskOrderItemDetailMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDetailDO>()
+                            .eq(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId()));
+                    Map<String, List<EquipPipeDetailDO>> pipeDetailMap = equipPipeDetailMapper.selectList(
+                                    new LambdaQueryWrapper<EquipPipeDetailDO>().in(EquipPipeDetailDO::getId,
+                                            pipeTaskOrderItemDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).collect(Collectors.toList())))
+                            .stream().collect(Collectors.groupingBy(EquipPipeDetailDO::getEquipPipeId));
+                    // 管道总长度相加
+                    double pipeLengthTotal = pipeDetailMap.values().stream()
+                            .flatMap(List::stream)
+                            .map(EquipPipeDetailDO::getPipeLength)
+                            .filter(java.util.Objects::nonNull)
+                            .mapToDouble(BigDecimal::doubleValue)
+                            .sum();
+                    result.put("pipeLengthTotal", String.valueOf(pipeLengthTotal));
+
                 }else {
                     EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
                     if (equipPipeDO != null){
                         result.put("projectNo",equipPipeDO.getProjectNo());
                         result.put("projectName",equipPipeDO.getProjectName());
                         result.put("pipeClass",equipPipeDO.getPipeClass());
-                        result.put("pipeLengthTotal",equipPipeDO.getPipeLengthTotal().toString());
+
+                        List<PipeTaskOrderItemDetailDO> pipeTaskOrderItemDetailDOS = pipeTaskOrderItemDetailMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDetailDO>()
+                                .eq(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId()));
+
+                        List<EquipPipeDetailDO> equipPipeDetailDOS = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>().in(EquipPipeDetailDO::getId, pipeTaskOrderItemDetailDOS.stream()
+                                .map(PipeTaskOrderItemDetailDO::getEquipDetailId).collect(Collectors.toList())));
+                        double pipeLengthTotal = equipPipeDetailDOS.stream()
+                                .map(EquipPipeDetailDO::getPipeLength)
+                                .filter(java.util.Objects::nonNull)
+                                .mapToDouble(BigDecimal::doubleValue)
+                                .sum();
+                        result.put("pipeLengthTotal", String.valueOf(pipeLengthTotal));
+                        //result.put("pipeLengthTotal",equipPipeDO.getPipeLengthTotal().toString());
                     }
                 }
             }