From 6f507a2a6ff037346b052b2b7ce96ab2910c9735 Mon Sep 17 00:00:00 2001
From: deslrey <deslre0381@gmail.com>
Date: 星期一, 12 一月 2026 11:53:35 +0800
Subject: [PATCH] 外购订单的标签打印功能查询接口及查询

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java |  359 ++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 279 insertions(+), 80 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 ca9a5a9..4c474ec 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
@@ -16,6 +16,8 @@
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.basic.dto.InventoryDetailDTO;
 import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
 import com.ruoyi.basic.mapper.StandardProductListMapper;
 import com.ruoyi.basic.mapper.StructureItemParameterMapper;
@@ -26,6 +28,7 @@
 import com.ruoyi.common.constant.InsOrderTypeConstants;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.enums.OrderType;
 import com.ruoyi.common.numgen.NumberGenerator;
 import com.ruoyi.common.utils.*;
 import com.ruoyi.common.utils.api.IfsApiUtils;
@@ -37,12 +40,14 @@
 import com.ruoyi.inspect.service.InsOrderStateService;
 import com.ruoyi.inspect.service.InsProductService;
 import com.ruoyi.inspect.service.InsSampleService;
+import com.ruoyi.inspect.vo.IfsOrderVO;
 import com.ruoyi.inspect.vo.InsOrderPrintingVo;
 import com.ruoyi.system.mapper.UserMapper;
 import lombok.AllArgsConstructor;
 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;
@@ -84,7 +89,6 @@
     private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper;
     private StandardProductListMapper standardProductListMapper;
     private StructureItemParameterMapper structureItemParameterMapper;
-
 
 
     //鑾峰彇妫�楠屼笅鍗曟暟鎹�
@@ -147,7 +151,7 @@
         // 鍒ゆ柇璁㈠崟鏈夋病鏈夌粦瀹氭娊鏍疯鍒�
         InsOrder order = insOrderMapper.selectById(orderId);
         if (order.getQuarterItemId() != null) {
-           // 闇�瑕佹坊鍔犱笅鍙戞椂闂村埌鎶芥牱鏃堕棿, 鍙栨牱浜哄憳灏辨槸妫�娴嬩汉
+            // 闇�瑕佹坊鍔犱笅鍙戞椂闂村埌鎶芥牱鏃堕棿, 鍙栨牱浜哄憳灏辨槸妫�娴嬩汉
             SpotCheckQuarterItem spotCheckQuarterItem = spotCheckQuarterItemMapper.selectById(order.getQuarterItemId());
             spotCheckQuarterItem.setSpotCheckTime(order.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
             User user = userMapper.selectById(userId);
@@ -215,7 +219,7 @@
         if (insOrder.getQuarterItemId() != null) {
             Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
                     .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId())
-                    .notIn(InsOrder::getState, -1 ,2 ,3));
+                    .notIn(InsOrder::getState, -1, 2, 3));
             if (quarterItemCount > 0) {
                 throw new ErrorException("璇ユ娊鏍疯鍒掑凡琚粦瀹氳繃");
             }
@@ -309,14 +313,15 @@
                 }
             }
         });
-        //鏄惁涓哄師鏉愭枡涓嬪崟
-        if (insOrder.getTypeSource() != null && insOrder.getTypeSource().equals(1)) {
-            // 鍘熸潗鏂欎笅鍗�: 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
+
+        //鍘熸潗鏂欎笅鍗曟垨澶栬喘鎴愬搧涓嬪崟
+        if (Objects.nonNull(insOrder.getTypeSource()) && Objects.nonNull(insOrder.getIfsInventoryId())) {
+            // 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
             IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
             Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
             User user = userMapper.selectById(declareUserId);
             if (user == null) {
-               throw new ErrorException("缂哄皯鎶ユ浜轰俊鎭�");
+                throw new ErrorException("缂哄皯鎶ユ浜轰俊鎭�");
             }
             // 渚涘簲鍟嗗悕绉�
             insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
@@ -349,47 +354,51 @@
             upInsOrderOfState(insOrder);
 
             // 鍒嗛厤妫�楠屼汉
-            upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
+            String sonLaboratory = insOrder.getTypeSource().equals(1) ? "鍘熸潗鏂�" : "鎴愬搧瀹為獙瀹�";
+            upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), sonLaboratory);
 
-            // 鏍规嵁闆朵欢鍙峰垽鏂槸鍚︽槸杈呮潗
-            boolean isRaw = false;
-            StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo());
-            // 鏌ヨ浜у搧
-            if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) {
-                isRaw = true;
-            } else {
-            // 鏌ヨ瀵硅薄
-                StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo());
-                if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) {
+            //鏄惁涓哄師鏉愭枡涓嬪崟
+            if (insOrder.getTypeSource().equals(1)) {
+                // 鏍规嵁闆朵欢鍙峰垽鏂槸鍚︽槸杈呮潗
+                boolean isRaw = false;
+                StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo());
+                // 鏌ヨ浜у搧
+                if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) {
                     isRaw = true;
+                } else {
+                    // 鏌ヨ瀵硅薄
+                    StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo());
+                    if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) {
+                        isRaw = true;
+                    }
                 }
-            }
 
-            if (isRaw) {
-                // 鑾峰彇褰撳墠瀛e害鐨勫紑濮嬫椂闂村拰缁撴潫鏃堕棿
-                LocalDateTime now = LocalDateTime.now();
-                // 鑾峰彇褰撳墠鏈堜唤
-                int month = now.getMonthValue();
-                // 纭畾褰撳墠瀛e害鐨勫紑濮嬫湀浠�
-                int startMonth = (month - 1) / 3 * 3 + 1;
-                // 鏋勯�犲搴︾殑寮�濮嬫椂闂�
-                LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0);
-                // 璁$畻涓嬩竴涓搴︾殑寮�濮嬫椂闂�
-                LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3);
-                // 璁$畻褰撳墠瀛e害鐨勭粨鏉熸椂闂�
-                LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1);
+                if (isRaw) {
+                    // 鑾峰彇褰撳墠瀛e害鐨勫紑濮嬫椂闂村拰缁撴潫鏃堕棿
+                    LocalDateTime now = LocalDateTime.now();
+                    // 鑾峰彇褰撳墠鏈堜唤
+                    int month = now.getMonthValue();
+                    // 纭畾褰撳墠瀛e害鐨勫紑濮嬫湀浠�
+                    int startMonth = (month - 1) / 3 * 3 + 1;
+                    // 鏋勯�犲搴︾殑寮�濮嬫椂闂�
+                    LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0);
+                    // 璁$畻涓嬩竴涓搴︾殑寮�濮嬫椂闂�
+                    LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3);
+                    // 璁$畻褰撳墠瀛e害鐨勭粨鏉熸椂闂�
+                    LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1);
 
-                // 鏍规嵁涓嬪崟鐨勮鏍煎瀷鍙峰垽鏂槸鍚︿负瀛e害棣栨鍑虹幇
-                Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(),
-                        ifsInventoryQuantity.getSupplierName(),
-                        startOfNextQuarter,
-                        endOfQuarter);
+                    // 鏍规嵁涓嬪崟鐨勮鏍煎瀷鍙峰垽鏂槸鍚︿负瀛e害棣栨鍑虹幇
+                    Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(),
+                            ifsInventoryQuantity.getSupplierName(),
+                            startOfNextQuarter,
+                            endOfQuarter);
 
-                if(count == 0) {
-                    ifsInventoryQuantity.setIsFirst(1);
-                    ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
-                            .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())
-                            .set(IfsInventoryQuantity::getIsFirst, 1));
+                    if (count == 0) {
+                        ifsInventoryQuantity.setIsFirst(1);
+                        ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+                                .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())
+                                .set(IfsInventoryQuantity::getIsFirst, 1));
+                    }
                 }
             }
         }
@@ -398,6 +407,7 @@
 
     /**
      * 娣诲姞妫�楠岄」
+     *
      * @param sampleId
      * @param productList
      */
@@ -445,6 +455,7 @@
 
     /**
      * 瀹℃牳妫�楠屽崟
+     *
      * @param insOrder
      * @return
      */
@@ -474,7 +485,7 @@
                     InsOrder::getEntrustCode);
             // 鍒ゆ柇鏄惁鏄搴︽楠�, 鏄搴︽楠屽彇娑堝師鏉愭枡瀛e害妫�楠屼笅鍗�
             if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) {
-                ifsInventoryQuantityMapper.update(null,  Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+                ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
                         .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId())
                         .set(IfsInventoryQuantity::getIsQuarter, 0));
 
@@ -484,7 +495,7 @@
                         .ne(InsOrder::getState, -1)
                         .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY));
                 if (order1 != null) {
-                  no = order1.getEntrustCode();
+                    no = order1.getEntrustCode();
                 }
             }
 
@@ -513,9 +524,10 @@
     @Override
     public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
         Map<String, Object> map = new HashMap<>();
-        InsOrder insOrder = insOrderMapper.selectById(id);
+//        InsOrder insOrder = insOrderMapper.selectById(id);
+        IfsOrderVO ifsOrderVO = insOrderMapper.selectOrderInfoById(id);
         List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
-        map.put("insOrder", insOrder);
+        map.put("insOrder", ifsOrderVO);
         map.put("sampleProduct", list);
         //鏌ヨ鎵�鏈夎褰曟ā鐗堝幓閲�
         List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
@@ -543,16 +555,14 @@
 
     /**
      * 鑾峰彇ifs搴撳瓨淇℃伅
+     *
      * @param
      * @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;
         }
         // 杩涜淇濆瓨
@@ -560,7 +570,7 @@
             DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 鏃堕棿鏍煎紡鍖�
             IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
             ifsInventoryQuantity.setContract(map1.get("CONTRACT") == null ? "" : map1.get("CONTRACT").toString()); // 鍩�
-            ifsInventoryQuantity.setPartNo(map1.get("PART_NO") == null ? "" : map1.get("PART_NO").toString() ); // 闆朵欢鍙�
+            ifsInventoryQuantity.setPartNo(map1.get("PART_NO") == null ? "" : map1.get("PART_NO").toString()); // 闆朵欢鍙�
             ifsInventoryQuantity.setPartDesc(map1.get("PART_DESC") == null ? "" : map1.get("PART_DESC").toString()); // 闆朵欢鎻忚堪
             ifsInventoryQuantity.setOrderNo(map1.get("ORDER_NO") == null ? "" : map1.get("ORDER_NO").toString()); // 璁㈠崟鍙�
             ifsInventoryQuantity.setLineNo(map1.get("LINE_NO") == null ? "" : map1.get("LINE_NO").toString()); // 琛屽彿
@@ -568,20 +578,20 @@
             ifsInventoryQuantity.setReceiptNo(Integer.parseInt(map1.get("RECEIPT_NO") == null ? "" : map1.get("RECEIPT_NO").toString())); // 鎺ユ敹鍙�
             ifsInventoryQuantity.setStatus(map1.get("STATE") == null ? "" : map1.get("STATE").toString()); // 鐘舵�佹弿杩�
             ifsInventoryQuantity.setStatusDb(map1.get("STATE_DB") == null ? "" : map1.get("STATE_DB").toString()); // 鐘舵��
-            if(map1.get("QTY_ARRIVED") != null) {
+            if (map1.get("QTY_ARRIVED") != null) {
                 ifsInventoryQuantity.setQtyArrived(new BigDecimal(map1.get("QTY_ARRIVED").toString())); // 鎶佃揪鐨勯噰璐暟閲�
             }
-            if(map1.get("QTY_INSPECTED") != null) {
+            if (map1.get("QTY_INSPECTED") != null) {
                 ifsInventoryQuantity.setQtyInspected(new BigDecimal(map1.get("QTY_INSPECTED").toString())); // 宸叉楠岀殑璐拱鏁伴噺
             }
-            if(map1.get("QTY_TO_INSPECT") != null) {
+            if (map1.get("QTY_TO_INSPECT") != null) {
                 ifsInventoryQuantity.setQtyToInspect(new BigDecimal(map1.get("QTY_TO_INSPECT").toString())); // 瑕佹楠岀殑閲囪喘鏁伴噺
             }
-            if(map1.get("INV_QTY_IN_STORE") != null) {
+            if (map1.get("INV_QTY_IN_STORE") != null) {
                 ifsInventoryQuantity.setInvQtyInStore(new BigDecimal(map1.get("INV_QTY_IN_STORE").toString())); // 鎶佃揪鐨勫簱瀛樻暟閲�
             }
-            if(map1.get("PUR_QTY_IN_STORE") != null) {
-                ifsInventoryQuantity.setPurQtyInStore(new BigDecimal( map1.get("PUR_QTY_IN_STORE").toString())); // 鎶佃揪鐨勯噰璐暟閲�
+            if (map1.get("PUR_QTY_IN_STORE") != null) {
+                ifsInventoryQuantity.setPurQtyInStore(new BigDecimal(map1.get("PUR_QTY_IN_STORE").toString())); // 鎶佃揪鐨勯噰璐暟閲�
 
             }
             ifsInventoryQuantity.setSupplierId(map1.get("SUPPLIER_ID") == null ? "" : map1.get("SUPPLIER_ID").toString()); // 渚涘簲鍟咺D
@@ -599,21 +609,21 @@
             ifsInventoryQuantity.setBuyerCode(map1.get("BUYER_CODE") == null ? "" : map1.get("BUYER_CODE").toString()); // 閲囪喘鍛�
             ifsInventoryQuantity.setBuyerName(map1.get("BUYER_NAME") == null ? "" : map1.get("BUYER_NAME").toString()); // 閲囪喘鍛樺悕绉�
 
-            if(map1.get("ARRIVE_DATE") != null) {
-                ifsInventoryQuantity.setArriveDate(LocalDateTime.parse(map1.get("ARRIVE_DATE").toString(),dateTimeFormatter)); // 瀹為檯鍒拌揣鏃ユ湡
+            if (map1.get("ARRIVE_DATE") != null) {
+                ifsInventoryQuantity.setArriveDate(LocalDateTime.parse(map1.get("ARRIVE_DATE").toString(), dateTimeFormatter)); // 瀹為檯鍒拌揣鏃ユ湡
             }
-            if(map1.get("DELIVERY_DATE") != null) {
-                ifsInventoryQuantity.setDeliveryDate(LocalDateTime.parse(map1.get("DELIVERY_DATE").toString(),dateTimeFormatter)); // 瀹為檯浜よ揣鏃ユ湡
+            if (map1.get("DELIVERY_DATE") != null) {
+                ifsInventoryQuantity.setDeliveryDate(LocalDateTime.parse(map1.get("DELIVERY_DATE").toString(), dateTimeFormatter)); // 瀹為檯浜よ揣鏃ユ湡
             }
-            if(map1.get("PRODUCT_DATE") != null) {
-                ifsInventoryQuantity.setProductDate(LocalDateTime.parse(map1.get("PRODUCT_DATE").toString(),dateTimeFormatter)); // 鐢熶骇鏃ユ湡
+            if (map1.get("PRODUCT_DATE") != null) {
+                ifsInventoryQuantity.setProductDate(LocalDateTime.parse(map1.get("PRODUCT_DATE").toString(), dateTimeFormatter)); // 鐢熶骇鏃ユ湡
 
             }
-            if(map1.get("INVALID_DATE") != null) {
-                ifsInventoryQuantity.setInvalidDate(LocalDateTime.parse(map1.get("INVALID_DATE").toString(),dateTimeFormatter)); // 澶辨晥鏃ユ湡
+            if (map1.get("INVALID_DATE") != null) {
+                ifsInventoryQuantity.setInvalidDate(LocalDateTime.parse(map1.get("INVALID_DATE").toString(), dateTimeFormatter)); // 澶辨晥鏃ユ湡
             }
-            if(map1.get("APPROVED_DATE") != null) {
-                ifsInventoryQuantity.setApprovedDate(LocalDateTime.parse(map1.get("APPROVED_DATE").toString(),dateTimeFormatter)); // 瀹℃壒鏃ユ湡
+            if (map1.get("APPROVED_DATE") != null) {
+                ifsInventoryQuantity.setApprovedDate(LocalDateTime.parse(map1.get("APPROVED_DATE").toString(), dateTimeFormatter)); // 瀹℃壒鏃ユ湡
             }
             ifsInventoryQuantity.setReqCeater(map1.get("REQ_CEATER") == null ? "" : map1.get("REQ_CEATER").toString()); // 閲囪喘鐢宠鍒涘缓浜�
             ifsInventoryQuantity.setReqCeaterName(map1.get("REQ_CEATER_NAME") == null ? "" : map1.get("REQ_CEATER_NAME").toString()); // 閲囪喘鐢宠鍒涘缓浜哄悕绉�
@@ -635,13 +645,17 @@
                     .eq(IfsInventoryQuantity::getWaivDevRejNo, ifsInventoryQuantity.getWaivDevRejNo())
                     .eq(IfsInventoryQuantity::getActivitySeq, ifsInventoryQuantity.getActivitySeq())
             );
-            if(count == 0) {
+            if (count == 0) {
                 ifsInventoryQuantity.setIsFirst(0);
+                if (isSplitOrder) {
+                    ifsInventoryQuantity.setIsSplitOrder(1);
+                }
+                //todo:涓嶆竻妤氱敤閫旓紝鏆傛椂娉ㄩ噴鎺�
                 // 鏌ヨ浜т笟閾炬娴嬫暟鎹�
-                String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
-                        ifsInventoryQuantity.getLineNo(),
-                        ifsInventoryQuantity.getReleaseNo());
-                ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
+//                String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
+//                        ifsInventoryQuantity.getLineNo(),
+//                        ifsInventoryQuantity.getReleaseNo());
+//                ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
 
                 ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
             }
@@ -650,8 +664,9 @@
 
     /**
      * id鏄師鏉愭枡鐨刬d
-     *
+     * <p>
      * 淇敼璁㈠崟鍗曞彿
+     *
      * @param insOrder
      */
     @Override
@@ -664,7 +679,7 @@
         List<Integer> insOrderIds = insOrders.stream().map(InsOrder::getId).collect(Collectors.toList());
         Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
                 .in(InsReport::getInsOrderId, insOrderIds));
-        if (count > 0 ) {
+        if (count > 0) {
             throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
         }
 
@@ -716,10 +731,11 @@
 
     /**
      * 淇敼閲囪喘璁㈠崟鎺ユ敹鐘舵��, 閬垮厤鍥炴粴
+     *
      * @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));
@@ -727,6 +743,7 @@
 
     /**
      * 鏂板閾滃崟涓濅笅鍗�
+     *
      * @param list
      * @param insOrder
      * @return
@@ -812,6 +829,7 @@
 
     /**
      * 淇敼濮旀墭涓嬪崟缂栧彿
+     *
      * @param insOrder
      */
     @Override
@@ -819,7 +837,7 @@
         // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
         Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
                 .eq(InsReport::getInsOrderId, insOrder.getId()));
-        if (count > 0 ) {
+        if (count > 0) {
             throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
         }
 
@@ -862,6 +880,7 @@
 
     /**
      * 淇敼妫�楠屼笅鍗曞唴瀹�
+     *
      * @param insOrderUpdateDto
      * @return
      */
@@ -887,6 +906,7 @@
 
     /**
      * 鎴愬搧鏍囩鎵撳嵃
+     *
      * @param ids
      * @return
      */
@@ -895,8 +915,14 @@
         return insOrderMapper.labelOrderPrinting(ids);
     }
 
+    @Override
+    public List<InventoryDetailDTO> labelOutsideOrderPrinting(List<Integer> ids) {
+        return insOrderMapper.labelOutsideOrderPrinting(ids);
+    }
+
     /**
      * 鏍规嵁鏍峰搧id鏌ヨ妫�楠岄」鏍�
+     *
      * @param insSampleId
      * @return
      */
@@ -925,6 +951,7 @@
 
     /**
      * 娣诲姞閬楁紡鐨勬楠岄」
+     *
      * @param omitOrderProductDto
      * @return
      */
@@ -960,6 +987,7 @@
 
     /**
      * 鎴愬搧妫�楠屽崟瀵煎嚭
+     *
      * @param sampleOrderDto
      * @param response
      */
@@ -983,7 +1011,7 @@
 
         // 鍒ゆ柇鏄惁鏄笉鍚堟牸, 涓嶅悎鏍兼煡璇笉鍚堟牸椤�
         for (SampleOrderDto orderDto : sampleOrderDtoList) {
-            if (orderDto.getInsResult() != null && orderDto.getInsResult() == 0){
+            if (orderDto.getInsResult() != null && orderDto.getInsResult() == 0) {
                 // 鏌ヨ涓嶅悎鏍奸」
                 List<String> unqualifiedList = insProductMapper.selectUnqualifiedList(orderDto.getId());
                 orderDto.setUnqualifiedItem(CollUtil.join(unqualifiedList, ","));
@@ -1014,6 +1042,7 @@
 
     /**
      * 淇敼鏍峰搧鍨嬪彿
+     *
      * @param insSample
      */
     @Override
@@ -1021,7 +1050,7 @@
         // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
         Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
                 .eq(InsReport::getInsOrderId, insSample.getInsOrderId()));
-        if (count > 0 ) {
+        if (count > 0) {
             throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
         }
 
@@ -1032,6 +1061,7 @@
 
     /**
      * 鏌ヨ褰撳墠鏃堕棿鏄惁娌℃湁璇ユ娴嬮」鐨勬娊鏍疯鍒�
+     *
      * @param sampleList
      * @param insOrder
      * @return
@@ -1042,7 +1072,7 @@
         if (insOrder.getQuarterItemId() != null) {
             Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
                     .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId())
-                    .notIn(InsOrder::getState, -1 ,2 ,3));
+                    .notIn(InsOrder::getState, -1, 2, 3));
             if (quarterItemCount > 0) {
                 throw new ErrorException("璇ユ娊鏍疯鍒掑凡琚粦瀹氳繃");
             }
@@ -1146,6 +1176,175 @@
 
     }
 
+
+    /**
+     * 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
+         */
+        // 妫�楠屽悗绉诲簱
+        //1301:鍘熸潗鏂欏悎鏍煎簱锛孋P-02-001:鎴愬搧搴�
+        toLocation = StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue()) ? "1301" : "CP-02-001";
+        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