ezhizao_zx 10 月之前
父節點
當前提交
38d69ef548

+ 63 - 2
src/main/java/cn/ezhizao/project/business/controller/Inc10100Controller.java

@@ -275,6 +275,27 @@ public class Inc10100Controller extends BaseController {
         List<BizTechnologicalProcess> updateProcess = new ArrayList<>();
         List<BizTechnologicalProcessDetail> saveProcessDetail = new ArrayList<>();
         List<BizTechnologicalProcessDetail> updateProcessDetail = new ArrayList<>();
+        QueryWrapper<Sfc10401> changeWrapper = new QueryWrapper<>();
+        BizPullP2Time pullTech = new BizPullP2Time();
+        pullTech.setType("productTech");
+        List<BizPullP2Time> pullTeches = pullP2TimeService.getList(pullTech);
+        BizPullP2Time lastPullTech = null;
+        if (pullTeches.size() > 0) {
+            int lastIndex = pullTeches.size() - 1;
+            lastPullTech = pullTeches.get(lastIndex);
+        }
+        if (lastPullTech != null) {
+            Date newCondition = lastPullTech.getPullTime();
+            /*
+             * 这里应该根据新系统中记录的最大的拉取日期
+             * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
+             */
+            changeWrapper.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
+        }
+        List<Sfc10401> changeSfc10400 = sfc10401Service.getList(changeWrapper);
+        QueryWrapper<Sfc10401> changeAllQueryWrapper = new QueryWrapper<>();
+        changeAllQueryWrapper.in("(isnull(rtrim(cpart), '') + isnull(rtrim(prver), ''))", changeSfc10400.isEmpty() ? Collections.singletonList("0") : changeSfc10400.stream().map(v -> v.getCpart().trim() + v.getPrver().trim()).collect(Collectors.toList()));
+        List<Sfc10401> allChangeSfc10401 = sfc10401Service.getList(changeAllQueryWrapper);
         sfc10401List.forEach(l -> {
             // 判断是否有对应的technologicalProcessDetail
             // 判断是工序序号的变化还是新增还是其他。
@@ -342,7 +363,8 @@ public class Inc10100Controller extends BaseController {
                         if (bizProduct != null && newProcess.getProductId() == null) {
                             newProcess.setProductId(bizProduct.getId());
                             newTech.setProductId(bizProduct.getId());
-                        };
+                        }
+                        ;
                     }
                     if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
                         BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
@@ -369,7 +391,7 @@ public class Inc10100Controller extends BaseController {
                     updateProcess.add(oldTech);
                     BizTechnologicalProcess newTech;
                     // 判断是否已加过对应工艺
-                    if(!saveProcess.stream().anyMatch(v -> v.getProductCode().trim().equals(l.getCpart().trim()) && v.getTechnologyVersion().trim().equals(l.getPrver()))) {
+                    if (!saveProcess.stream().anyMatch(v -> v.getProductCode().trim().equals(l.getCpart().trim()) && v.getTechnologyVersion().trim().equals(l.getPrver()))) {
                         newTech = new BizTechnologicalProcess(oldTech);
                         newTech.setIsHistory(0);
                         newTech.setId(snowflakeIdWorker.nextId());
@@ -407,6 +429,44 @@ public class Inc10100Controller extends BaseController {
                 }
             }
         });
+        changeSfc10400.forEach(l -> {
+            BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getIsHistory().equals(0)).findFirst().orElse(null);
+            // 判断是否已有新版本 假设已有不更新 没有则更新
+            Long count = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim())).count();
+            Long newCount = allChangeSfc10401.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).count();
+            if (!saveProcess.stream().anyMatch(t -> t.getProductCode().trim().equals(l.getCpart().trim()) && t.getTechnologyVersion().trim().equals(l.getPrver().trim())) && !count.equals(newCount)) {
+                oldTech.setIsHistory(1);
+                updateProcess.add(oldTech);
+                BizTechnologicalProcess newTech;
+                // 判断是否已加过对应工艺
+                newTech = new BizTechnologicalProcess(oldTech);
+                newTech.setIsHistory(0);
+                newTech.setId(snowflakeIdWorker.nextId());
+                saveProcess.add(newTech);
+                // 添加所有工艺明细
+                List<Sfc10401> itemProcesses = all10401List.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).collect(Collectors.toList());
+                itemProcesses.forEach(e -> {
+                    BizTechnologicalProcessDetail newItem = new BizTechnologicalProcessDetail(e);
+                    newItem.setTechnologicalProcessId(newTech.getId());
+                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
+                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
+                        if (bizProduct != null) {
+                            newItem.setProductId(bizProduct.getId());
+                        }
+                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
+                        if (bizProduct != null && newItem.getProductId() == null) {
+                            newItem.setProductId(bizProduct.getId());
+                        }
+                    }
+                    if (newItem.getProcessCode() != null && !newItem.getProcessCode().isEmpty()) {
+                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(e.getPrcode().trim())).findFirst().orElse(null);
+                        newItem.setProcessId(bizProcess == null ? null : bizProcess.getId());
+                    }
+                    saveProcessDetail.add(newItem);
+                });
+
+            }
+        });
         if ((saveProcess.isEmpty() || technologicalProcessService.saveBatch(saveProcess)) && (updateProcess.isEmpty() || technologicalProcessService.updateBatchById(updateProcess)) && (saveProcessDetail.isEmpty() || technologicalProcessDetailService.saveBatch(saveProcessDetail)) && (updateProcessDetail.isEmpty() || technologicalProcessDetailService.updateBatchById(updateProcessDetail))) {
             BizPullP2Time bizPullP2Time = new BizPullP2Time();
             // 将当前时间赋值给 pullTime 属性
@@ -527,6 +587,7 @@ public class Inc10100Controller extends BaseController {
 
     /**
      * 根据轴类型编码,获取新系统中的轴类型id【需要进一步实现】
+     *
      * @param code 轴类型编码
      * @return 轴类型
      */

+ 3 - 0
src/main/java/cn/ezhizao/project/business/domain/Sfc10400.java

@@ -72,4 +72,7 @@ public class Sfc10400 {
     /** 更新日期 */
     @ApiModelProperty(value = "${comment}")
     private Date writedate;
+    /** 更新日期 */
+    @ApiModelProperty(value = "${comment}")
+    private Date modate;
 }