Kaynağa Gözat

报表调整

xy 2 gün önce
ebeveyn
işleme
ec44f4212d

+ 14 - 4
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12016_202401JRecordOFData.java

@@ -8,15 +8,18 @@ import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderinput.PipeTaskOr
 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.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
 import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
@@ -62,6 +65,9 @@ public class QC12016_202401JRecordOFData implements IDynamicOFData {
     @Resource
     private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
 
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
     @Resource
     private PipeTaskOrderInputService pipeTaskOrderInputService;
 
@@ -167,10 +173,14 @@ public class QC12016_202401JRecordOFData implements IDynamicOFData {
                 result.put("checkDateEnd",checkDateStr);
 
                 if (taskOrderDO.getManagerId() != null){
-                    AdminUserRespDTO userInfo = adminUserApi.getUser(taskOrderDO.getManagerId()).getData();
-                    if (userInfo != null) {
-                        result.put("checkName", userInfo.getSignUrl());
-                    }
+                    //检验员信息
+                    List<PipeTaskOrderUserDO> checkUserList = pipeTaskOrderUserMapper.selectList(PipeTaskOrderUserDO::getOrderId,itemReportDO.getOrderId());
+                    InspectorInfoPipeUtil.fillInspectorSignatures(result, checkUserList, taskOrderDO.getManagerId(), adminUserApi);
+
+//                    AdminUserRespDTO userInfo = adminUserApi.getUser(taskOrderDO.getManagerId()).getData();
+//                    if (userInfo != null) {
+//                        result.put("checkName", userInfo.getSignUrl());
+//                    }
                 }
 
             }

+ 17 - 4
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12024_202403JRecordOFData.java

@@ -1,6 +1,7 @@
 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.boilertaskorderuser.BoilerTaskOrderUserDO;
 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;
@@ -8,15 +9,19 @@ import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderinput.PipeTaskOr
 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.InspectorInfoUtil;
 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;
@@ -65,6 +70,9 @@ public class QC12024_202403JRecordOFData implements IDynamicOFData {
     @Resource
     private PipeTaskOrderItemDetailMapper pipeTaskOrderItemDetailMapper;
 
+    @Resource
+    private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
+
     @Resource
     private DynamicTbValService dynamicTbValService;
 
@@ -179,10 +187,15 @@ public class QC12024_202403JRecordOFData implements IDynamicOFData {
             //检验员
             PipeTaskOrderDO taskOrderDO = pipeTaskOrderMapper.selectById(itemReportDO.getOrderId());
             if (taskOrderDO!= null && taskOrderDO.getManagerId() != null){
-                AdminUserRespDTO userInfo = adminUserApi.getUser(taskOrderDO.getManagerId()).getData();
-                if (userInfo != null) {
-                    result.put("checkName", userInfo.getSignUrl());
-                }
+
+                //检验员信息
+                List<PipeTaskOrderUserDO> checkUserList = pipeTaskOrderUserMapper.selectList(PipeTaskOrderUserDO::getOrderId,itemReportDO.getOrderId());
+                InspectorInfoPipeUtil.fillInspectorSignatures(result, checkUserList, taskOrderDO.getManagerId(), adminUserApi);
+
+//                AdminUserRespDTO userInfo = adminUserApi.getUser(taskOrderDO.getManagerId()).getData();
+//                if (userInfo != null) {
+//                    result.put("checkName", userInfo.getSignUrl());
+//                }
             }
 
             //审核人员信息

+ 100 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/InspectorInfoPipeUtil.java

@@ -0,0 +1,100 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.util;
+
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderuser.BoilerTaskOrderUserDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderuser.PipeTaskOrderUserDO;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
+import com.alibaba.fastjson2.JSONObject;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * 检验员信息处理工具类 -- 管道
+ */
+public class InspectorInfoPipeUtil {
+
+    /**
+     * 填充检验员签名信息到结果对象中
+     * 
+     * @param result 结果JSONObject
+     * @param checkUserList 检验员用户列表
+     * @param mainCheckerId 主检验员ID
+     * @param adminUserApi 用户API
+     * @param maxCount 最大检验员数量(默认7)
+     */
+    public static void fillInspectorSignatures(JSONObject result, 
+                                               List<PipeTaskOrderUserDO> checkUserList,
+                                               String mainCheckerId,
+                                               AdminUserApi adminUserApi,
+                                               int maxCount) {
+        if (checkUserList == null || checkUserList.isEmpty() || adminUserApi == null) {
+            return;
+        }
+
+        // 如果mainChecker不为空且不在checkUserList中,则添加
+        if (mainCheckerId != null) {
+            boolean hasMainChecker = checkUserList.stream()
+                    .anyMatch(user -> mainCheckerId.equals(user.getUserId()));
+            if (!hasMainChecker) {
+                PipeTaskOrderUserDO mainCheckerUser = new PipeTaskOrderUserDO();
+                mainCheckerUser.setUserId(mainCheckerId);
+                checkUserList.add(mainCheckerUser);
+            }
+        }
+
+        // 获取用户信息
+        List<String> userIds = checkUserList.stream()
+                .map(PipeTaskOrderUserDO::getUserId)
+                .toList();
+        
+        List<AdminUserRespDTO> userList = adminUserApi.getUserList(userIds).getData();
+        
+        if (userList == null || userList.isEmpty()) {
+            return;
+        }
+
+        // 将mainChecker对应的用户排在第一个
+        if (mainCheckerId != null) {
+            userList.sort((u1, u2) -> {
+                if (mainCheckerId.equals(u1.getId())) {
+                    return -1;
+                } else if (mainCheckerId.equals(u2.getId())) {
+                    return 1;
+                }
+                return 0;
+            });
+        }
+
+        // 填充签名信息
+        AtomicInteger number = new AtomicInteger(1);
+        for (AdminUserRespDTO adminUserRespDTO : userList) {
+            if (adminUserRespDTO.getSignUrl() != null && !adminUserRespDTO.getSignUrl().isEmpty()) {
+                result.put("checkName_" + number.get(), adminUserRespDTO.getSignUrl());
+                number.getAndIncrement();
+            }
+        }
+
+        // 如果个数小于maxCount,将后面的checkName都改成空白
+        if (number.get() < maxCount) {
+            for (int i = number.get(); i <= maxCount; i++) {
+                result.put("checkName_" + i, " ");
+            }
+        }
+    }
+
+    /**
+     * 填充检验员签名信息到结果对象中(默认最大数量为7)
+     * 
+     * @param result 结果JSONObject
+     * @param checkUserList 检验员用户列表
+     * @param mainCheckerId 主检验员ID
+     * @param adminUserApi 用户API
+     */
+    public static void fillInspectorSignatures(JSONObject result, 
+                                               List<PipeTaskOrderUserDO> checkUserList,
+                                               String mainCheckerId,
+                                               AdminUserApi adminUserApi) {
+        fillInspectorSignatures(result, checkUserList, mainCheckerId, adminUserApi, 7);
+    }
+}