wangming před 9 měsíci
rodič
revize
a92540eb18

+ 32 - 2
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxProjectDeviceNumberServiceImpl.java

@@ -51,18 +51,48 @@ public class ZhcxProjectDeviceNumberServiceImpl extends ServiceImpl<ZhcxProjectD
             return Collections.emptyList();
         }
         list.sort((sort1, sort2) -> {
+            String projectCode1 = null;
+            String projectCode2 = null;
             String sort1Temp;
             String sort2Temp;
             if(sort1.getDeviceNumber().contains("-")) {
-                sort1Temp = sort1.getDeviceNumber().split("-")[1];
-                sort2Temp = sort2.getDeviceNumber().split("-")[1];
+                final String[] split = sort1.getDeviceNumber().split("-");
+                projectCode1 = split[0];
+                sort1Temp = split[1];
             } else {
                 sort1Temp = sort1.getDeviceNumber();
+            }
+
+            if(sort2.getDeviceNumber().contains("-")) {
+                final String[] split = sort2.getDeviceNumber().split("-");
+                projectCode2 = split[0];
+                sort2Temp = split[1];
+            } else {
                 sort2Temp =  sort2.getDeviceNumber();
             }
 
             int sort1Int = Integer.parseInt(sort1Temp.replace("#", ""));
             int sort2Int = Integer.parseInt(sort2Temp.replace("#", ""));
+
+            if(ObjectUtil.isEmpty(projectCode1) && ObjectUtil.isEmpty(projectCode2)) {
+                return sort1Int - sort2Int;
+            }
+
+            if(ObjectUtil.isEmpty(projectCode1) && ObjectUtil.isNotEmpty(projectCode2)) {
+                return -1;
+            }
+
+            if(ObjectUtil.isNotEmpty(projectCode1) && ObjectUtil.isEmpty(projectCode2)) {
+                return 1;
+            }
+
+            if(ObjectUtil.isNotEmpty(projectCode1) && ObjectUtil.isNotEmpty(projectCode2)) {
+                if(projectCode1.equals(projectCode2)) {
+                    return sort1Int - sort2Int;
+                } else {
+                    return projectCode1.compareTo(projectCode2);
+                }
+            }
             return sort1Int - sort2Int;
         });
         return list;

+ 100 - 11
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxProjectManageServiceImpl.java

@@ -237,11 +237,52 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
         }
 
         List<String> machineNoList = Arrays.asList(machineno.split(","));
-        Collections.sort(machineNoList, (s1, s2) -> {
+        Collections.sort(machineNoList, (sort1, sort2) -> {
+
+            String projectCode1 = null;
+            String projectCode2 = null;
+            String sort1Temp;
+            String sort2Temp;
+            if(sort1.contains("-")) {
+                final String[] split = sort1.split("-");
+                projectCode1 = split[0];
+                sort1Temp = split[1];
+            } else {
+                sort1Temp = sort1;
+            }
+
+            if(sort2.contains("-")) {
+                final String[] split = sort2.split("-");
+                projectCode2 = split[0];
+                sort2Temp = split[1];
+            } else {
+                sort2Temp =  sort2;
+            }
+
             // 提取数字部分并转换为整数进行比较
-            int num1 = Integer.parseInt(s1.replace("#", ""));
-            int num2 = Integer.parseInt(s2.replace("#", ""));
-            return Integer.compare(num1, num2);
+            int sort1Int = Integer.parseInt(sort1Temp.replace("#", ""));
+            int sort2Int = Integer.parseInt(sort2Temp.replace("#", ""));
+
+            if(ObjectUtil.isEmpty(projectCode1) && ObjectUtil.isEmpty(projectCode2)) {
+                return sort1Int - sort2Int;
+            }
+
+            if(ObjectUtil.isEmpty(projectCode1) && ObjectUtil.isNotEmpty(projectCode2)) {
+                return -1;
+            }
+
+            if(ObjectUtil.isNotEmpty(projectCode1) && ObjectUtil.isEmpty(projectCode2)) {
+                return 1;
+            }
+
+            if(ObjectUtil.isNotEmpty(projectCode1) && ObjectUtil.isNotEmpty(projectCode2)) {
+                if(projectCode1.equals(projectCode2)) {
+                    return sort1Int - sort2Int;
+                } else {
+                    return projectCode1.compareTo(projectCode2);
+                }
+            }
+            return sort1Int - sort2Int;
         });
         rectifyReportDto.setNoList(machineNoList);
         map.put("ifoutsidebase", true);
@@ -854,6 +895,8 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
 
         List<ZhcxProjectRectifyDo> mainList = new ArrayList<>();
         List<ZhcxProjectRectifyMachineDo> slaveList = new ArrayList<>();
+        Map<String, ZhcxProjectManageDo> pmMap = new HashMap<>();
+        Map<String, ZhcxProjectDeviceNumberDo> dnMap = new HashMap<>();
         String rowIdx = null;
         try {
             for (String rowIndex : rowMap.keySet()) {
@@ -904,16 +947,11 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
                     JSONObject machineObj = children.getJSONObject(machineNo);
 
                     ZhcxProjectRectifyMachineDo machine = new ZhcxProjectRectifyMachineDo();
-                    machine.setPrjid(main.getPrjid());
                     machine.setRectifyid(main.getId());
                     machine.setDeleted("0");
 
-                    machine.setMachineno(machineNo);
-                    ZhcxProjectDeviceNumberDo numberDo = summaryDataBo.getPrjDeviceNumMap().get(machineNo);
-
-                    if(ObjectUtil.isNotNull(numberDo)) {
-                        machine.setMachineid(numberDo.getId());
-                    }
+                    //组装项目和机号
+                    assembletProjectAndMachine(machineNo, summaryDataBo, machine, pmMap, dnMap);
 
                     machine.setFinishdate(LuckySheet4SummaryHelp.getDateDefaultNull(machineObj, "完成日期"));
                     String mochineStatus = machineObj.getString("状态");
@@ -1130,6 +1168,57 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
         }
     }
 
+    /**
+     * 组装机号和项目
+     *
+     * @param machineNo
+     * @param summaryDataBo
+     * @param machine
+     * @param pmMap
+     */
+    private void assembletProjectAndMachine(String machineNo, SaveSummaryDataBo summaryDataBo, ZhcxProjectRectifyMachineDo machine,
+                                            Map<String,ZhcxProjectManageDo> pmMap, Map<String, ZhcxProjectDeviceNumberDo> dnMap) {
+        machine.setMachineno(machineNo);
+
+        ZhcxProjectDeviceNumberDo numberDo = summaryDataBo.getPrjDeviceNumMap().get(machineNo);
+        if(ObjectUtil.isNotNull(numberDo)) {
+            machine.setMachineid(numberDo.getId());
+        }
+
+        ZhcxProjectManageDo project = summaryDataBo.getProject();
+        if(machineNo.contains("-")) {
+            final String[] machineNos = machineNo.split("-");
+            project = pmMap.get(machineNos[0]);
+            if(ObjectUtil.isNull(project)) {
+                final LambdaQueryWrapper<ZhcxProjectManageDo> queryWrapper = Wrappers.lambdaQuery();
+                queryWrapper.eq(ZhcxProjectManageDo::getProjectCode, machineNos[0])
+                        .eq(ZhcxProjectManageDo::getDeleted, "0");
+                project = getOne(queryWrapper);
+                pmMap.put(machineNos[0], project);
+            }
+
+            ZhcxProjectDeviceNumberDo deviceNumberDo = dnMap.get(machineNos[0].concat("-").concat(machineNos[1]));
+            if(ObjectUtil.isNull(deviceNumberDo)) {
+                final LambdaQueryWrapper<ZhcxProjectDeviceNumberDo> dnLambdaQuery = Wrappers.lambdaQuery();
+                dnLambdaQuery.eq(ZhcxProjectDeviceNumberDo::getPid, project.getId())
+                        .eq(ZhcxProjectDeviceNumberDo::getDeviceNumber, machineNos[1]);
+                deviceNumberDo = projectDeviceNumberService.getOne(dnLambdaQuery);
+
+                if(ObjectUtil.isNotNull(deviceNumberDo)) {
+                    machine.setRealmachineid(deviceNumberDo.getId());
+                    dnMap.put(machineNos[0].concat("-").concat(machineNos[1]), deviceNumberDo);
+                }
+            }
+            machine.setRealmachineno(machineNos[1]);
+        } else {
+            machine.setRealmachineno(machine.getMachineno());
+            machine.setRealmachineid(machine.getMachineid());
+        }
+        machine.setPrjcode(project.getProjectCode());
+        machine.setPrjname(project.getProjectEname());
+        machine.setPrjid(project.getId());
+    }
+
     /**
      * 获取真实部门
      *