From 680b4178ff298795abfda5146b5bbf3431f24ca3 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期六, 14 六月 2025 13:55:30 +0800
Subject: [PATCH] DNC对接刀具系统

---
 lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml             |    4 +
 lxzn-module-dnc/pom.xml                                                                 |    6 +++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java    |   13 ++++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java |   53 +++++++++++++++++++++++++-
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java         |    6 ++
 5 files changed, 77 insertions(+), 5 deletions(-)

diff --git a/lxzn-module-dnc/pom.xml b/lxzn-module-dnc/pom.xml
index 2c815f4..47f1a8f 100644
--- a/lxzn-module-dnc/pom.xml
+++ b/lxzn-module-dnc/pom.xml
@@ -58,6 +58,12 @@
             <artifactId>fastutil</artifactId>
             <version>8.5.6</version>
         </dependency>
+        <dependency>
+            <groupId>org.jeecgframework.boot</groupId>
+            <artifactId>lxzn-module-tms</artifactId>
+            <version>3.4.3</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java
index 3d85d1a..0c59cb5 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java
@@ -110,4 +110,17 @@
         return service.extractAndSaveFromContent(docId,attributionId,attributionType);
     }
 
+    /**
+     * 鍙戦�佸垁鍏风郴缁�
+     * @param docId 鏂囨。Id
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-鍙戦�佸垁鍏风郴缁�")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-鍙戦�佸垁鍏风郴缁�", notes = "鍒�鍏蜂俊鎭�-鍙戦�佸垁鍏风郴缁�")
+    @GetMapping("/sendCutterInfo/{docId}/{attributionType}/{attributionId}")
+    public Result<?> sendCutterInfo(@PathVariable("docId") String docId
+            ,@PathVariable("attributionType") Integer attributionType
+            ,@PathVariable("attributionId") String attributionId) {
+        return service.sendToCutterSystem(docId,attributionId,attributionType);
+    }
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java
index ad99cbf..45cb630 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java
@@ -40,5 +40,9 @@
      */
     Result<?> extractAndSaveFromContent(String docId,String attributionId,Integer attributionType);
 
-
+    /**
+     * 鍙戦�佸垁鍏峰垪琛ㄥ埌鍒�鍏风郴缁�
+     * @param docId
+     */
+    Result<?> sendToCutterSystem(String docId,String attributionId,Integer attributionType);
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java
index 2d1c271..9dbdaec 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java
@@ -10,15 +10,19 @@
 import org.jeecg.modules.dnc.entity.Cutter;
 import org.jeecg.modules.dnc.entity.DocFile;
 import org.jeecg.modules.dnc.entity.DocInfo;
+import org.jeecg.modules.dnc.entity.GuideCardBatch;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
 import org.jeecg.modules.dnc.mapper.CutterMapper;
 import org.jeecg.modules.dnc.response.CommonCode;
 import org.jeecg.modules.dnc.service.ICutterService;
 import org.jeecg.modules.dnc.service.IDocFileService;
 import org.jeecg.modules.dnc.service.IDocInfoService;
+import org.jeecg.modules.dnc.service.IGuideCardBatchService;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
 import org.jeecg.modules.dnc.utils.file.FileUtilS;
-import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecg.modules.tms.entity.PreparationOrderDetail;
+import org.jeecg.modules.tms.entity.dto.PreparationOrderAndDetailDto;
+import org.jeecg.modules.tms.service.IPreparationOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -40,8 +44,10 @@
     private IDocFileService docFileService;
 
     @Autowired
-    private ISysDictService sysDictService;
+    private IGuideCardBatchService guideCardBatchService;
 
+    @Autowired
+    private IPreparationOrderService preparationOrderService;
     /**
      * 鏂板鍒�鍏蜂俊鎭�
      * @param cutter
@@ -194,13 +200,54 @@
                 return Result.error("鏈彂鐜板垁鍏风殑鍙傛暟淇℃伅娉ㄩ噴锛屾棤娉曟彁鍙栧垁鍏蜂俊鎭�");
             }
             this.saveBatch(newCutterList);
-            //TODO鍙戦�佸垁鍏风鐞嗘暟鎹�
             return Result.OK("鎻愬彇鍒�鍏蜂俊鎭垚鍔�");
         }else {
             return Result.error("鏈彂鐜板垁鍏风殑鍙傛暟淇℃伅娉ㄩ噴锛屾棤娉曟彁鍙栧垁鍏蜂俊鎭�");
         }
     }
 
+    @Override
+    public Result<?> sendToCutterSystem(String docId,String attributionId,Integer attributionType){
+        List<Cutter> cutterList = this.list(new QueryWrapper<Cutter>()
+                .eq("doc_id", docId)
+                .eq(StrUtil.isNotEmpty(attributionId),"attribution_id",attributionId)
+                .eq("attribution_type",attributionType));
+        if (cutterList == null || cutterList.isEmpty()) {
+            return Result.error("鏈彂鐜板垁鍏蜂俊鎭紝鏃犳硶鍙戦�佸埌鍒�鍏风郴缁�");
+        }
+        if (cutterList.stream().anyMatch(item -> item.getCutterCode() == null)) {
+            return Result.error("鏈彂鐜板垁鍏风紪鍙蜂俊鎭紝鏃犳硶鍙戦�佸埌鍒�鍏风郴缁�");
+        }
+        //鑾峰彇鏈�鏂版暟鎺х▼搴忓姞宸ョ‘璁よ〃
+        List<GuideCardBatch> guideCardBatchList = guideCardBatchService.list(new QueryWrapper<GuideCardBatch>()
+                .eq("doc_id", docId)
+                .isNotNull("serial_number")
+                .orderByDesc("SUBSTRING(serial_number, LEN(serial_number)-3, 4)"));
+        if (guideCardBatchList == null || guideCardBatchList.isEmpty()) {
+            return Result.error("鏈彂鐜扮▼搴忓姞宸ョ‘璁よ〃淇℃伅锛屾棤娉曞彂閫佸埌鍒�鍏风郴缁�");
+        }
+        GuideCardBatch guideCardBatch = guideCardBatchList.get(0);
+        PreparationOrderAndDetailDto dto = new PreparationOrderAndDetailDto();
+        dto.setPartDrawingNo(guideCardBatch.getPartsCode());
+        dto.setPartName(guideCardBatch.getPartsName());
+        dto.setPartMaterial(guideCardBatch.getMaterielDesp());
+        dto.setProductionProcessesNo(guideCardBatch.getProcessWorkCode());
+        dto.setBatchCode(guideCardBatch.getProcessingBatch());
+        dto.setMachiningCount(guideCardBatch.getProcessingQuantity());
+        dto.setEquipmentCode(guideCardBatch.getProcessingEquipment());
+        dto.setNcName(guideCardBatch.getDocName());
+        List<PreparationOrderDetail> detailList = new ArrayList<>();
+        cutterList.forEach(item -> {
+            PreparationOrderDetail detail = new PreparationOrderDetail();
+            detail.setToolCode(item.getCutterCode());
+            detail.setToolId(item.getToolsId());
+            detailList.add(detail);
+        });
+        dto.setPreparationOrderDetailList(detailList);
+        preparationOrderService.addPreparationOrderFromDnc(dto);
+        return Result.OK("鍙戦�佸埌鍒�鍏风郴缁熸垚鍔�");
+    }
+
     public List<Cutter> extractToolAfterM6(DocInfo docInfo, List<String> ncLines) {
         List<Cutter> cutterList = new ArrayList<>();
         String currentToolCode = null; // 鐢ㄤ簬杩借釜褰撳墠鎹㈠垁鎸囦护鐨勫垁鍏峰彿
diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
index 5b27cd5..f87eaa8 100644
--- a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
+++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
@@ -128,7 +128,7 @@
         master:
           url: jdbc:sqlserver://192.168.1.118:1433;databasename=LXZN_TEST_HANGYU;nullCatalogMeansCurrent=true
           username: sa
-          password: 123
+          password:
           driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
   #redis 閰嶇疆
   redis:
@@ -321,3 +321,5 @@
       - D:\\hy_test\\b
       - D:\\hy_test\\c
     interval: 10000  # 鐩戞帶闂撮殧(ms)
+security:
+  encryption-key: 1234567890abcdef # 鍔犺В瀵嗙閽�

--
Gitblit v1.9.3