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 |  344 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 288 insertions(+), 56 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 52ba3e1..472cf6a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -10,10 +10,7 @@
 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;
@@ -24,14 +21,11 @@
 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 java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import javax.annotation.Resource;
+import java.util.*;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -85,7 +79,15 @@
     private DocTypeService docTypeService;
     @Autowired
     private LocDetlRullUpDetailService locDetlRullUpDetailService;
+    @Autowired
+    private TagService tagService;
+    @Autowired
+    private BasBoxTypeService basBoxTypeService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
 
+    @Resource
+    private OpenServiceImpl openServiceImpl;
 
     @Override
     @Transactional
@@ -221,7 +223,7 @@
             throw new CoolException("鍙傛暟锛氱爜鍨涗綅缂栧彿 palletizingNo涓虹┖");
         }else if (Cools.isEmpty(param.getOrderNo())){
             throw new CoolException("鍙傛暟锛氶��璐у崟鍗曞彿 orderNo涓虹┖");
-        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() != 1){
+        }else if (Cools.isEmpty(param.getMatList())){
             throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖");
         }
 
@@ -240,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());
             }
         }
@@ -252,45 +254,61 @@
             if (!orderBoxNoList.contains(matList.getBatch())){
                 throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+" 绠卞彿锛�"+matList.getBatch()+"涓嶅睘浜庢璁㈠崟鎴栬�呭凡缁忓叆搴�");
             }else {
-//                if (matList.getAnfme() > orderDetls.get(0).getAnfme()) {
-//                    throw new CoolException("绠卞彿锛�"+orderDetls.get(0).getBatch() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
-//                }
-                matListBoxNoList.add(matList.getBoxNo());
+                matListBoxNoList.add(matList.getBatch());
             }
         }
         List<OrderDetl> orderDetlList = new ArrayList<>();
         for (OrderDetl orderDetl: orderDetls){
             if (matListBoxNoList.contains(orderDetl.getBatch())){
-                orderDetl.setBrand("1");
                 orderDetlList.add(orderDetl);
             }
         }
-        String matnr = null;
         List<WaitPakin> waitPakins = new ArrayList<>();
 
+        String matnrSign = "";
+        String brandSign = "";
         for (OrderDetl orderDetl:orderDetlList){
-            Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
-            if (Cools.isEmpty(mat)) {
-                throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+            if (Cools.isEmpty(orderDetl.getMatnr()) || Cools.isEmpty(orderDetl.getBrand())){
+                throw new CoolException(orderDetl.getOrderNo() + "鎵�閫夋槑缁嗗瓨鍦ㄦ湭鐭ヨ鏍兼垨鑰呮湭鐭ョ鍨嬶紝璇风淮鎶ゆ暟鎹紒");
             }
-            matnr = mat.getMatnr();
+            if (matnrSign.equals("")){
+                matnrSign = orderDetl.getMatnr();
+                brandSign = orderDetl.getBrand();
+            }else {
+                if (!matnrSign.equals(orderDetl.getMatnr())){
+                    throw new CoolException(orderDetl.getMatnr() + "璇烽�夋嫨鍚屼竴涓鏍肩殑璐х墿锛侊紒锛�");
+                }
+                if (!brandSign.equals(orderDetl.getBrand())){
+                    throw new CoolException(orderDetl.getMatnr() + "璇烽�夋嫨鍚屼竴绉嶇鍨嬬殑璐х墿锛侊紒锛�");
+                }
+            }
+        }
+        Mat mat = matService.selectByMatnr(matnrSign);
+        if (Cools.isEmpty(mat)) {
+            throw new CoolException(matnrSign + "鍟嗗搧妗f涓嶅瓨鍦�");
+        }
+        for (OrderDetl orderDetl:orderDetlList){
             WaitPakin waitPakin = new WaitPakin();
             waitPakin.sync(mat);
             waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
             waitPakin.setModel(orderDetl.getModel());     //鎵规
             waitPakin.setSpecs(orderDetl.getSpecs());     //瑙勬牸
             waitPakin.setBatch(orderDetl.getBatch());       //鏈ㄧ缂栫爜
-            waitPakin.setBrand(param.getBoxType());     //鏈ㄧ绫诲瀷
+            waitPakin.setBrand(orderDetl.getBrand());     //鏈ㄧ绫诲瀷
             waitPakin.setZpallet(param.getBarcode());   //鎵樼洏鐮�
-            waitPakin.setOrigin(orderDetl.getOrigin()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
-            waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+            waitPakin.setWeight(orderDetl.getWeight());  //鍑�閲�
+            waitPakin.setVolume(orderDetl.getVolume());  //姣涢噸
+            waitPakin.setPrice(orderDetl.getPrice());   //闀垮害
+            waitPakin.setSpecs(String.valueOf(orderDetl.getSpecs()));   //鎺ュご
+            waitPakin.setOrigin("1"); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
+            waitPakin.setIoStatus("Y");     // 鍏ュ嚭鐘舵��
             waitPakin.setAnfme(orderDetl.getAnfme());  // 鏈ㄧ涓摐绠旀暟閲�
+            waitPakin.setWeight(orderDetl.getWeight());  // 鏈ㄧ涓摐绠斿噣閲�
             waitPakin.setStatus("Y");    // 鐘舵��
             waitPakin.setAppeUser(userId);
             waitPakin.setAppeTime(now);
             waitPakin.setModiUser(userId);
             waitPakin.setModiTime(now);
-            waitPakin.setRollUp(orderDetl.getRollUp());
             waitPakin.setZpallet(param.getBarcode());
             if (!waitPakinService.insert(waitPakin)) {
                 throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
@@ -301,7 +319,7 @@
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1((short)1);
 
-        StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto);
+        StartupDto dto = commonService.getLocNo(1, 1, 145, matnrSign,null,null, locTypeDto);
 
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
@@ -339,7 +357,6 @@
             wrkDetl.setIoTime(wrkMast.getIoTime());
             wrkDetl.setAppeTime(now);
             wrkDetl.setModiTime(now);
-            wrkDetl.setRollUp(waitPakin.getRollUp());
             wrkDetl.setZpallet(param.getBarcode());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
@@ -365,7 +382,58 @@
 
     @Override
     @Transactional
-    public void trussComb2(PalletizingCompleteParam param, Long userId) {
+    public void trussComb2Car(Integer staNo) {
+        if (staNo!=212){
+            throw new CoolException("鍙厑璁�212鍛煎彨鎵樼洏");
+        }
+        BasDevp basDevp = basDevpService.selectById(212);
+        if (!basDevp.getAutoing().equals("Y")){
+            throw new CoolException("212绔欑偣涓嶆槸鑷姩");
+        } else if (basDevp.getLoading().equals("Y")){
+            throw new CoolException("212绔欑偣鏈夌墿");
+        } else if (basDevp.getWrkNo()!=0){
+            throw new CoolException("212绔欑偣鏈夊伐浣滃彿");
+        }
+        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 212));
+        if (!Cools.isEmpty(wrkMast1)){
+            throw new CoolException("浠诲姟妗f宸插瓨鍦紒璇风瓑寰�...");
+        }
+        int workNo = commonService.getWorkNo(6);
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(61L); // 宸ヤ綔鐘舵�侊細61銆佺瓑寰呯┖鏉�
+        wrkMast.setIoType(212); // 鍏ュ嚭搴撶姸鎬侊細212.2妤�212鍛煎彨绌烘澘
+        wrkMast.setIoPri(10D); // 浼樺厛绾�
+        wrkMast.setStaNo(212);
+        wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("Y"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+    }
+    @Override
+    @Transactional
+    public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) {
+        Long userId = 7777L;//涓帶
+        param.setPalletizingNo(212);
+
+        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                .eq("io_type", 1).eq("wrk_sts", 1).eq("source_sta_no",212));
+        if (!Cools.isEmpty(wrkMast1)){
+            throw new CoolException("瀛樺湪涓�绗斿伐浣滄。妗堬紝璇峰厛鍏ュ簱锛�");
+        }
+
         //鍒ゆ柇param鍙傛暟
         if (Cools.isEmpty(param.getBarcode())){
             throw new CoolException("鍙傛暟锛氭墭鐩樼爜 barcode涓虹┖");
@@ -373,39 +441,65 @@
             throw new CoolException("鍙傛暟锛氱爜鍨涗綅缂栧彿 palletizingNo涓虹┖");
         }else if (Cools.isEmpty(param.getBoxType())){
             throw new CoolException("鍙傛暟锛氭湪绠辩被鍨� boxType涓虹┖");
-        }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0 || param.getMatLists().size()>2){
+        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){
             throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖");
         }
 
-        ArrayList<String> positions = new ArrayList<>();   //鏈ㄧ浣嶇疆鏌ラ噸      (orgin)
+        String matnrOne = "";//鏈ㄧ鐩稿悓浣嶇疆 瑙勬牸 matnr鏍¢獙  1銆佸乏
+        String matnrTwo = "";//鏈ㄧ鐩稿悓浣嶇疆 瑙勬牸 matnr鏍¢獙  2銆佸彸
         ArrayList<String> boxNos = new ArrayList<>();   //鏈ㄧ鍞竴缂栫爜鏌ラ噸  锛坆atch锛�
         //鍒ゆ柇matLists鍙傛暟
-        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
+        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
             if (Cools.isEmpty(matList.getMatnr())){
-                throw new CoolException("鍙傛暟锛氱墿鏂欑紪鐮� matnr涓虹┖");
+                throw new CoolException("鍙傛暟锛氳鏍� matnr涓虹┖");
             }else if (Cools.isEmpty(matList.getPosition())){
-                throw new CoolException("鐗╂枡缂栫爜锛�"+matList.getMatnr()+"銆佸弬鏁帮細鐮佸灈浣嶇疆 position涓虹┖");
-            }else if (Cools.isEmpty(matList.getBoxNo())){
-                throw new CoolException("鐗╂枡缂栫爜锛�"+matList.getMatnr()+"銆佸弬鏁帮細鏈ㄧ缂栧彿 boxNo涓虹┖");
-            }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){
-                throw new CoolException("鐗╂枡缂栫爜锛�"+matList.getMatnr()+"銆佸弬鏁帮細鏈ㄧ涓摐绠旀暟閲� anfme涓虹┖");
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鐮佸灈浣嶇疆 position涓虹┖");
+            }else if (Cools.isEmpty(matList.getBatch())){
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鏈ㄧ缂栧彿 batch涓虹┖");
+            }else if (Cools.isEmpty(matList.getModel())){
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍗峰彿 model涓虹┖");
+            }else if (Cools.isEmpty(matList.getBatch())){
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鏈ㄧ缂栧彿 boxNo涓虹┖");
             }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
-                throw new CoolException("鐗╂枡缂栫爜锛�"+matList.getMatnr()+"銆佸弬鏁帮細閲嶉噺 weight涓虹┖");
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍑�閲� weight涓虹┖");
+            }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細姣涢噸 roughWeight涓虹┖");
+            }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){
+                throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍗烽暱搴� rollExtent涓虹┖");
             }
 
-            if (!positions.contains(matList.getPosition())){
-                positions.add(matList.getPosition());
+            if (matList.getPosition().equals("1")){//1銆佸乏  2銆佸彸
+                if (!matnrOne.equals("")){
+                    if (!matnrOne.equals(matList.getMatnr())){
+                        throw new CoolException("鏈ㄧ浣嶇疆锛�"+matList.getPosition()+"瀛樺湪涓嶅悓瑙勬牸鍗蜂俊鎭�");
+                    }
+                }else {
+                    matnrOne=matList.getMatnr();
+                }
+            }else if (matList.getPosition().equals("2")){
+                if (!matnrTwo.equals("")){
+                    if (!matnrTwo.equals(matList.getMatnr())){
+                        throw new CoolException("鏈ㄧ浣嶇疆锛�"+matList.getPosition()+"瀛樺湪涓嶅悓瑙勬牸鍗蜂俊鎭�");
+                    }
+                }else {
+                    matnrTwo=matList.getMatnr();
+                }
             }else {
-                throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo:"+matList.getBoxNo()+",鏈ㄧ浣嶇疆瀛樺湪閲嶅锛�"+matList.getPosition());
+                throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo:"+matList.getBatch()+",鏈ㄧ浣嶇疆閿欒锛�"+matList.getPosition());
             }
 
-            if (!boxNos.contains(matList.getBoxNo())){
-                boxNos.add(matList.getBoxNo());
+            if (!boxNos.contains(matList.getBatch())){
+                boxNos.add(matList.getBatch());
             }else {
-                throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo:"+matList.getBoxNo()+",鏈ㄧ缂栫爜瀛樺湪閲嶅");
+                throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo:"+matList.getBatch()+",鏈ㄧ缂栫爜瀛樺湪閲嶅");
+            }
+
+            if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("batch", matList.getBatch()))!=0
+                    || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("batch", matList.getBatch()))!=0
+                    || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("batch", matList.getBatch()))!=0){
+                throw new CoolException("鏈ㄧ缂栧彿锛�"+matList.getBatch()+"宸插瓨鍦紝璇峰嬁閲嶅鍏ュ簱");
             }
         }
-
 
         if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0
                 || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0
@@ -416,40 +510,52 @@
         String matnr = null;
         List<WaitPakin> waitPakins = new ArrayList<>();
         Date now = new Date();
-        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
+        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
             Mat mat = matService.selectByMatnr(matList.getMatnr());
             if (Cools.isEmpty(mat)) {
-                throw new CoolException(matList.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+                mat = new Mat();
+                mat.setMatnr(matList.getMatnr());
+                mat.setMaktx(matList.getMatnr());
+                mat.setTagId(tagService.getTop().getId());
+                mat.setBrand(param.getBoxType());
+                mat.setCreateBy(userId);
+                mat.setCreateTime(now);
+                mat.setUpdateBy(userId);
+                mat.setUpdateTime(now);
+                mat.setStatus(1);
+                if (!matService.insert(mat)) {
+                    throw new CoolException("瑙勬牸娣诲姞澶辫触锛岃鑱旂郴绠$悊鍛�");
+                }
             }
             matnr = matList.getMatnr();
             WaitPakin waitPakin = new WaitPakin();
             waitPakin.sync(mat);
-            waitPakin.setModel(matList.getBatch());     //鎵规
-            waitPakin.setSpecs(matList.getSpecs());     //瑙勬牸
-            waitPakin.setBatch(matList.getBoxNo());       //鏈ㄧ缂栫爜
+            waitPakin.setBatch(matList.getBatch());       //鏈ㄧ缂栫爜  //鎵规  鍞竴鍊�  绠卞彿
+            waitPakin.setModel(matList.getModel());       //鍗峰彿  鍞竴鍊�
             waitPakin.setBrand(param.getBoxType());     //鏈ㄧ绫诲瀷
             waitPakin.setZpallet(param.getBarcode());   //鎵樼洏鐮�
             waitPakin.setOrigin(matList.getPosition()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
+            waitPakin.setWeight(matList.getWeight());  //鍑�閲�
+            waitPakin.setVolume(matList.getRoughWeight());  //姣涢噸
+            waitPakin.setPrice(matList.getRollExtent());   //闀垮害
+            waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //鎺ュご
             waitPakin.setIoStatus("Y");     // 鍏ュ嚭鐘舵��
-            waitPakin.setAnfme(matList.getAnfme().doubleValue());  // 鏈ㄧ涓摐绠旀暟閲�
+            waitPakin.setAnfme(matList.getAnfme());  // 鏁伴噺
             waitPakin.setStatus("Y");    // 鐘舵��
             waitPakin.setAppeUser(userId);
             waitPakin.setAppeTime(now);
             waitPakin.setModiUser(userId);
             waitPakin.setModiTime(now);
-            waitPakin.setZpallet(param.getBarcode());
             if (!waitPakinService.insert(waitPakin)) {
                 throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
             }
             waitPakins.add(waitPakin);
         }
 
-
-
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1((short)1);
 
-        StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto);
+        StartupDto dto = commonService.getLocNo(1, 1, 212, matnr,null,null, locTypeDto);
 
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
@@ -470,7 +576,6 @@
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
         wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷
-        wrkMast.setBarcode(param.getBarcode());
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
@@ -487,7 +592,6 @@
             wrkDetl.setAppeTime(now);
             wrkDetl.setModiTime(now);
             wrkDetl.setZpallet(param.getBarcode());
-            wrkDetl.setRollUp(waitPakin.getRollUp());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
             }
@@ -1059,4 +1163,132 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    @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<>();
+        List<BasBoxType> basBoxTypes = basBoxTypeService.selectList(wrapper.orderBy("id",true));
+        for (BasBoxType basBoxType : basBoxTypes){
+            Map<String, Object> map = new HashMap<>();
+            map.put("boxType", basBoxType.getBoxType());
+            map.put("boxSpecs", basBoxType.getBoxSpecs());
+            result.add(map);
+        }
+        return result;
+    }
 }

--
Gitblit v1.9.1