From a29aa2ea80eaaea6acff08068a04de47b69478a8 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 19 七月 2024 10:05:19 +0800
Subject: [PATCH] 盘点出入库接口开发

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  102 ++++++++++++++++++++++++++++++++-
 src/main/java/com/zy/asrs/controller/MobileController.java    |    9 +++
 src/main/java/com/zy/asrs/entity/param/PdckqrParam.java       |   31 ++++++++++
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java   |   24 +++++--
 src/main/java/com/zy/asrs/service/MobileService.java          |    8 ++
 5 files changed, 163 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 0ce894b..2077292 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -554,4 +554,13 @@
         return R.ok("澶嶆牳纭鎴愬姛");
     }
 
+    @PostMapping("/pdckqr/auth")
+    @ManagerAuth(memo = "鐩樼偣鍑哄簱纭")
+    public synchronized R pdckqr(@RequestBody PdckqrParam param) {
+        // 鏍规嵁宸ヤ綔鍙风‘璁ゅ鏍�
+        if(Cools.isEmpty(param) || Cools.isEmpty(param.getWorkNo()) ||  Cools.isEmpty(param.getMaterials())){
+            return R.parse(BaseRes.PARAM);
+        }
+        return mobileService.pdckqr(param);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/entity/param/PdckqrParam.java b/src/main/java/com/zy/asrs/entity/param/PdckqrParam.java
new file mode 100644
index 0000000..6e749b1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PdckqrParam.java
@@ -0,0 +1,31 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鐩樼偣鍑哄簱纭
+ * @createDate 2024/7/18 16:23
+ */
+@Data
+public class PdckqrParam {
+
+    private Integer workNo;
+
+    private List<Material> materials;
+
+    @Data
+    public static class Material {
+        /**
+         * 鍗峰彿
+         */
+        private String rollNo;
+
+        /**
+         * 绠卞彿
+         */
+        private String boxNo;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 6174796..b187f84 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.service;
 
 import com.alibaba.fastjson.JSONObject;
+import com.core.common.R;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.OrderDetl;
@@ -48,4 +49,11 @@
      * 鍑哄簱澶嶆牳纭
      */
     void pakoutFhqr(Integer workNo, Integer check);
+
+    /**
+     * 鐩樼偣鍑哄簱纭
+     * @param param 鎵弿淇℃伅
+     * @return 200鎴愬姛锛屽叾浠栧け璐�
+     */
+    R pdckqr(PdckqrParam param);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 5880371..472cf6a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,10 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
@@ -27,6 +24,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
@@ -85,7 +83,11 @@
     private TagService tagService;
     @Autowired
     private BasBoxTypeService basBoxTypeService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
 
+    @Resource
+    private OpenServiceImpl openServiceImpl;
 
     @Override
     @Transactional
@@ -1185,6 +1187,98 @@
 
     @Override
     @Transactional
+    public R pdckqr(PdckqrParam param) {
+        WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo());
+        if (wrkMast == null) {
+            throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getWorkNo());
+        }
+        if (wrkMast.getIoType() != 107 || wrkMast.getWrkSts() != 2) {
+            throw new CoolException(param.getWorkNo() + "宸ヤ綔妗g被鍨嬶細" + wrkMast.getIoType() + "宸ヤ綔鐘舵�侊細" + wrkMast.getWrkSts() + ",涓嶅尮閰�");
+        }
+
+        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(param.getWorkNo());
+        List<PdckqrParam.Material> materials = param.getMaterials();
+
+        boolean isFullyCancelled = compareAndCheckCancellation(wrkDetls, materials);
+        if (isFullyCancelled) { // 鐩樼偣鐗╂枡纭垚鍔燂紝宸ヤ綔妗h浆鎹� 鐩樼偣鍑哄簱->鐩樼偣鍐嶅叆搴擄紝涓嬪彂鍥炲簱鍛戒护
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+            }
+            // 鑾峰彇鐩爣绔�
+            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                    .eq("type_no", wrkMast.getIoType() - 50)
+                    .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                    .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+            StaDesc staDesc = staDescService.selectOne(wrapper);
+            if (Cools.isEmpty(staDesc)) {
+                throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+            }
+            Date now = new Date();
+            // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+            Integer staNo = staDesc.getCrnStn();
+            // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+            wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+            wrkMast.setWrkSts(14L); // 宸ヤ綔鐘舵��: 14.宸插嚭搴撴湭纭
+            wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+            wrkMast.setStaNo(staNo); // 鐩爣绔�
+            wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.updateById(wrkMast)) {
+                throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+            }
+            // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+            locMast.setLocSts("Q");
+            locMast.setModiTime(now);
+            if (!locMastService.updateById(locMast)) {
+                throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+            }
+
+            // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护
+            openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo());
+
+            return R.ok("鐩樼偣纭鎴愬姛");
+
+        } else { // 鐗╂枡涓嶄竴鑷�
+            // todo 涓嶄竴鑷寸殑澶勭悊澶勭悊鏂规硶寰呭畾
+
+        }
+
+        return R.error("鐩樼偣纭寮傚父");
+    }
+
+        /**
+         * 姣旇緝涓や釜闆嗗悎鐨勭被鐨勫睘鎬э紝鐩稿悓鍒欐姷娑堬紝鏈�鍚庡垽鏂袱涓泦鍚堟槸鍚﹀畬鍏ㄦ姷娑�
+         */
+        public  boolean compareAndCheckCancellation(List<WrkDetl> list1, List<PdckqrParam.Material> list2) {
+            if (list1.size() != list2.size()) {
+                return false; // If lists are not of the same size, cancellation is not possible
+            }
+
+            List<PdckqrParam.Material> remainingList2 = new ArrayList<>(list2);
+
+            // Compare and cancel out elements
+            for (WrkDetl p1 : list1) {
+                boolean cancelled = false;
+                for (PdckqrParam.Material p2 : remainingList2) {
+                    if (p1.getBatch().equals(p2.getBoxNo()) && p1.getModel().equals(p2.getRollNo())) { // 鍗峰彿鍜岀鍙风浉鍚�
+                        remainingList2.remove(p2);
+                        cancelled = true;
+                        break;
+                    }
+                }
+                if (!cancelled) {
+                    return false; // If any element in list1 cannot be cancelled, return false
+                }
+            }
+
+            return remainingList2.isEmpty(); // Return true if all elements in list1 were cancelled out
+        }
+
+    @Override
+    @Transactional
     public List<Map<String, Object>> boxTypeComb() {
         EntityWrapper<BasBoxType> wrapper = new EntityWrapper<>();
         List<Map<String, Object>> result = new ArrayList<>();
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 1762a66..869bbeb 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
@@ -1352,14 +1353,23 @@
         if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
             throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
         }
-
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", wrkMast.getIoType() - 50)
+                .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+        Integer staNo = staDesc.getCrnStn();
         // 鏇存柊宸ヤ綔绫诲瀷103->53
         wrkMast.setIoType(53);
         wrkMast.setWrkSts(52L); // 宸ヤ綔鐘舵��42->52.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
-        Integer staNo = wrkMast.getStaNo();
         // 鐩爣绔欑偣婧愮珯鐐硅浆鎹�
-        wrkMast.setStaNo(wrkMast.getSourceStaNo());
-        wrkMast.setSourceStaNo(staNo);
+        wrkMast.setSourceStaNo(wrkMast.getStaNo());
+        wrkMast.setStaNo(staNo);
         // 鐩爣搴撲綅=婧愬簱浣�
         wrkMast.setLocNo(wrkMast.getSourceLocNo());
         // 婧愬簱浣嶆竻闄�
@@ -1417,7 +1427,7 @@
         return wrkDetls.size() > 1 ? 0 : 1; // 涓�鏉¤褰曞氨鏄竴鍗�
     }
 
-    private void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
+    public void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
         boolean success = false;
         // 鑾峰彇璇锋眰澶�
         Map<String, Object> headers = getHeaders();
@@ -1456,10 +1466,10 @@
                 // 淇濆瓨鎺ュ彛鏃ュ織
                 apiLogService.save(
                         "鍏ュ簱",
-                        MesConstant.URL + MesConstant.PAKIN_URL,
+                        MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL,
                         null,
                         "127.0.0.1",
-                        jsonObject.toJSONString(),
+                        body,
                         response,
                         success
                 );

--
Gitblit v1.9.1