From e1284aa3b1b400ecebb59126d7110a3bb4a6b000 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 31 十月 2025 15:46:09 +0800
Subject: [PATCH] 原材料报检拆分功能V1
---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java |  177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 171 insertions(+), 6 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index 55d6e7f..d3f2274 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -43,6 +43,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletResponse;
@@ -547,12 +548,9 @@
      * @return
      */
     @Override
-    public void getIfsOrder() {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("LOCATION_NO","1302");
-        map.put("STATE_DB","To be Inspected");
+    public void getIfsOrder(Map<String, Object> map,Boolean isSplitOrder) {
         List<Map<String, Object>> inventory = ifsApiUtils.getInventory(JSONUtil.toJsonStr(map));
-        if(inventory.size() == 0) {
+        if(inventory.isEmpty()) {
             return;
         }
         // 杩涜淇濆瓨
@@ -637,6 +635,9 @@
             );
             if(count == 0) {
                 ifsInventoryQuantity.setIsFirst(0);
+                if(isSplitOrder){
+                    ifsInventoryQuantity.setIsSplitOrder(1);
+                }
                 // 鏌ヨ浜т笟閾炬娴嬫暟鎹�
                 String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
                         ifsInventoryQuantity.getLineNo(),
@@ -719,7 +720,7 @@
      * @param id
      */
     @Transactional
-    public void updateIfsInventoryQuantity(Integer id) {
+    public void updateIfsInventoryQuantity(Long id) {
         ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
                 .set(IfsInventoryQuantity::getIsRegister, 1)
                 .eq(IfsInventoryQuantity::getId, id));
@@ -1146,6 +1147,170 @@
 
     }
 
+    /**
+     * ifs绉诲簱鎿嶄綔
+     * @param inventoryQuantity
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+    public String moveRawMaterial(IfsInventoryQuantity inventoryQuantity) {
+        //鏌ヨifs璁㈠崟璇︽儏
+        IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectById(inventoryQuantity.getId());
+        String toLocation;
+        // 鐧昏閲囪喘妫�楠岀粨鏋淪TD
+        if (one.getIsRegister().equals(0)) {
+            Map<String, Object> resultMap = new HashMap<>();
+            List<Map<String, Object>> resultList = new ArrayList<>();
+            Map<String, Object> map = new HashMap<>();
+            map.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+            map.put("LINE_NO", one.getLineNo()); // 琛屽彿
+            map.put("RELEASE_NO", one.getReleaseNo()); // 涓嬭揪鍙�
+            map.put("RECEIPT_NO", one.getReceiptNo()); // 鎺ユ敹鍙�
+            map.put("PURCH_QTY", one.getQtyToInspect()); // 瑕佹楠岀殑閲囪喘鏁伴噺
+            resultList.add(map);
+            resultMap.put("RECORD_ID", UUID.randomUUID().toString());
+            resultMap.put("SYSCODE", "LIMS");
+            resultMap.put("SYSMODEL", "鐧昏閲囪喘妫�楠岀粨鏋�");
+            resultMap.put("BATCH_INFO", resultList);
+            Result result = ifsApiUtils.getProcurementResults(JSONUtil.toJsonStr(resultMap));
+            if (result.getCode() != 200) {
+                throw new ErrorException("IFS鐧昏閲囪喘妫�楠岀粨鏋滃け璐�: " + result.getMessage());
+            }
+            //濡傛灉鏄媶鍒嗚鍗曪紝鍒欏皢鍚屼竴鎺ユ敹鍙风殑璁㈠崟鏍囪宸茬櫥璁版牎楠�
+            if(one.getIsSplitOrder()==1){
+                //鏌ヨ鍏朵綑鎷嗗垎鐨勮鍗�
+                List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+                        .eq(IfsInventoryQuantity::getOrderNo, one.getOrderNo())
+                        .eq(IfsInventoryQuantity::getPartNo, one.getPartNo())
+                        .eq(IfsInventoryQuantity::getLineNo, one.getLineNo())
+                        .eq(IfsInventoryQuantity::getReleaseNo, one.getReleaseNo())
+                        .eq(IfsInventoryQuantity::getReceiptNo, one.getReceiptNo())
+                        .eq(IfsInventoryQuantity::getIsSplitOrder, 1)
+                );
+                if(Objects.nonNull(quantityList) && !quantityList.isEmpty()){
+                    //淇敼閲囪喘璁㈠崟鐧昏鐘舵��
+                    List<Long> ids = quantityList.stream().map(IfsInventoryQuantity::getId).collect(Collectors.toList());
+                    ifsInventoryQuantityMapper.update(null,Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+                            .set(IfsInventoryQuantity::getIsRegister,1)
+                            .in(IfsInventoryQuantity::getId, ids)
+                    );
+                }
+            }else{
+                this.updateIfsInventoryQuantity(one.getId());
+            }
+        }
+        /**
+         * TODO 鍚庣画闇�瑕佽皟鐢↖FS鐨勬帴鍙� 绉诲叆鐨勫簱浣嶅彿 toLocation
+         */
+        // 妫�楠屽悗绉诲簱
+        toLocation = "1301";
+        Map<String, Object> moveResultMap = new HashMap<>();
+        List<Map<String, Object>> moveResultList = new ArrayList<>();
+        Map<String, Object> moveMap = new HashMap<>();
+        moveMap.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+        moveMap.put("LINE_NO", one.getLineNo());
+        moveMap.put("RELEASE_NO", one.getReleaseNo());
+        moveMap.put("RECEIPT_NO", one.getReceiptNo());
+        moveMap.put("PART_NO", one.getPartNo());
+        moveMap.put("QTY", one.getPurQtyInStore());
+        moveMap.put("LOCATION_NO", one.getLocationNo());
+        moveMap.put("TO_LOCATION_NO", toLocation);
+        moveMap.put("LOT_BATCH_NO", one.getLotBatchNo());
+        moveMap.put("SERIAL_NO", one.getSerialNo());
+        moveMap.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo());
+        moveMap.put("ENG_CHG_LEVEL", one.getEngChgLevel());
+        moveMap.put("ACTIVITY_SEQ", one.getActivitySeq());
+        moveResultList.add(moveMap);
+        moveResultMap.put("RECORD_ID", UUID.randomUUID().toString());
+        moveResultMap.put("SYSCODE", "LIMS");
+        moveResultMap.put("SYSMODEL", "妫�楠屽悗绉诲簱");
+        moveResultMap.put("BATCH_INFO", moveResultList);
+
+        Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap));
+        // 濡傛灉鏈夊繀椤讳负闆朵欢鎸囧畾鎵瑰彿鎶ラ敊闇�瑕侀噸鏂版彁浜ょЩ搴撲俊鎭幓鎸囧畾鎵瑰彿
+        if (result1.getCode() != 200) {
+            String message = result1.getMessage();
+            if (message.contains("蹇呴』涓洪浂浠�") && message.contains("鎸囧畾鎵瑰彿")) {
+                updaeBatch(one, toLocation);
+            } else {
+                throw new ErrorException("IFS妫�楠屽悗绉诲簱澶辫触: " + result1.getMessage());
+            }
+        }
+        return toLocation;
+    }
+
+
+    /**
+     * 鍏堜慨鏀归噰璐鍗曟壒娆″彿, 鍚庤繘琛岀Щ搴撴搷浣�
+     * @param one
+     * @param toLocation
+     */
+    private void updaeBatch(IfsInventoryQuantity one, String toLocation) {
+        if (one.getIsUpdateBatch().equals(0)) {
+            // 鍏堜慨鏀规壒娆″彿鍚庤繘琛岀Щ搴�
+            Map<String, Object> resultMap = new HashMap<>();
+            List<Map<String, Object>> resultList = new ArrayList<>();
+            Map<String, Object> map = new HashMap<>();
+            map.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+            map.put("LINE_NO", one.getLineNo()); // 琛屽彿
+            map.put("RELEASE_NO", one.getReleaseNo()); // 涓嬭揪鍙�
+            map.put("RECEIPT_NO", one.getReceiptNo()); // 鎺ユ敹鍙�
+            map.put("PART_NO", one.getPartNo()); //闆朵欢鍙�
+            map.put("CONFIGURATION_ID", one.getConfigurationId()); // 閰嶇疆鏍囪瘑
+            map.put("LOCATION_NO", one.getLocationNo()); // 搴撲綅鍙�
+            map.put("LOT_BATCH_NO", one.getLotBatchNo());// 鎵规鍙�
+            map.put("NEW_LOT_BATCH_NO", one.getUpdateBatchNo()); // 鐩爣鎵规鍙�
+            map.put("SERIAL_NO", one.getSerialNo()); // 搴忓垪鍙�
+            map.put("ENG_CHG_LEVEL", one.getEngChgLevel()); // 鐗堟湰鍙�
+            map.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo()); // wdr鍙�
+            map.put("ACTIVITY_SEQ", one.getActivitySeq()); // 娲诲姩搴忓彿
+            map.put("QTY_TO_CHANGE", one.getQtyArrived()); // 鍙樻洿鏁伴噺
+            resultList.add(map);
+            resultMap.put("RECORD_ID", UUID.randomUUID().toString());
+            resultMap.put("SYSCODE", "LIMS");
+            resultMap.put("SYSMODEL", "淇敼閲囪喘璁㈠崟鎵规鍙�");
+            resultMap.put("BATCH_INFO", resultList);
+
+            Result result = ifsApiUtils.updateMoveReceiptLot(JSONUtil.toJsonStr(resultMap));
+
+            if (result.getCode() != 200) {
+                throw new ErrorException("IFS淇敼鎵规鍙峰け璐�: " + result.getMessage());
+            }
+            ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+                    .set(IfsInventoryQuantity::getIsUpdateBatch, 1)
+                    .eq(IfsInventoryQuantity::getId, one.getId()));
+        }
+
+        Map<String, Object> moveResultMap = new HashMap<>();
+        List<Map<String, Object>> moveResultList = new ArrayList<>();
+        Map<String, Object> moveMap = new HashMap<>();
+        moveMap.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+        moveMap.put("LINE_NO", one.getLineNo());
+        moveMap.put("RELEASE_NO", one.getReleaseNo());
+        moveMap.put("RECEIPT_NO", one.getReceiptNo());
+        moveMap.put("PART_NO", one.getPartNo());
+        moveMap.put("QTY", one.getQtyArrived());
+        moveMap.put("LOCATION_NO", one.getLocationNo());
+        moveMap.put("TO_LOCATION_NO", toLocation);
+        moveMap.put("LOT_BATCH_NO", one.getUpdateBatchNo());
+        moveMap.put("SERIAL_NO", one.getSerialNo());
+        moveMap.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo());
+        moveMap.put("ENG_CHG_LEVEL", one.getEngChgLevel());
+        moveMap.put("ACTIVITY_SEQ", one.getActivitySeq());
+        moveResultList.add(moveMap);
+        moveResultMap.put("RECORD_ID", UUID.randomUUID().toString());
+        moveResultMap.put("SYSCODE", "LIMS");
+        moveResultMap.put("SYSMODEL", "妫�楠屽悗绉诲簱");
+        moveResultMap.put("BATCH_INFO", moveResultList);
+
+        Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap));
+        if (result1.getCode() != 200) {
+            throw new ErrorException("IFS妫�楠屽悗绉诲簱澶辫触: " + result1.getMessage());
+        }
+
+    }
+
 }
 
 
--
Gitblit v1.9.3