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 |  128 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 120 insertions(+), 8 deletions(-)

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 3df51be..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,32 +4,27 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
-import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.MatUtils;
-import com.zy.asrs.utils.PostMesDataUtils;
-import com.zy.common.CodeRes;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MesCombParam;
 import com.zy.common.model.StartupDto;
-import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
@@ -88,7 +83,11 @@
     private TagService tagService;
     @Autowired
     private BasBoxTypeService basBoxTypeService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
 
+    @Resource
+    private OpenServiceImpl openServiceImpl;
 
     @Override
     @Transactional
@@ -243,7 +242,7 @@
         }
         List<String> orderBoxNoList = new ArrayList<>();
         for (OrderDetl orderDetl: orderDetls){
-            if (orderDetl.getWorkQty()==0){
+            if (orderDetl.getWorkQty().equals(0.0)){
                 orderBoxNoList.add(orderDetl.getBatch());
             }
         }
@@ -255,7 +254,7 @@
             if (!orderBoxNoList.contains(matList.getBatch())){
                 throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+" 绠卞彿锛�"+matList.getBatch()+"涓嶅睘浜庢璁㈠崟鎴栬�呭凡缁忓叆搴�");
             }else {
-                matListBoxNoList.add(matList.getBoxNo());
+                matListBoxNoList.add(matList.getBatch());
             }
         }
         List<OrderDetl> orderDetlList = new ArrayList<>();
@@ -1167,6 +1166,119 @@
 
     @Override
     @Transactional
+    public void pakoutFhqr(Integer workNo, Integer check) {
+         // 鑾峰彇宸ヤ綔妗�
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
+        if (wrkMast == null) {
+            throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + workNo);
+        }
+
+        if (wrkMast.getWrkSts() != 20) {
+            throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佸紓甯革細" + workNo + ",鐘舵�侊細" + wrkMast.getWrkSts());
+        }
+
+        if (check == 1) {
+            // 澶嶆牳纭锛屾洿鏂扮姸鎬佷负15鍑哄簱瀹屾垚鏇存柊
+            wrkMast.setWrkSts(14L);
+            wrkMastService.updateById(wrkMast);
+        }
+
+    }
+
+    @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<>();

--
Gitblit v1.9.1