From 21d0e7ab9d5c7316225a3e9eecf465cd37c9bd85 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 05 六月 2025 14:15:07 +0800
Subject: [PATCH] 123

---
 src/main/java/com/zy/asrs/controller/WrkMastController.java |  273 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 267 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/WrkMastController.java b/src/main/java/com/zy/asrs/controller/WrkMastController.java
index 3a6a9c5..70f6812 100644
--- a/src/main/java/com/zy/asrs/controller/WrkMastController.java
+++ b/src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -10,10 +10,13 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.WrkMastService;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.dto.WrkDetlWithCheck;
+import com.zy.asrs.service.*;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
@@ -23,6 +26,16 @@
 
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private MatService matService;
+    @Autowired
+    private CheckRecordService checkRecordService;
 
     @RequestMapping(value = "/wrkMast/{id}/auth")
     @ManagerAuth
@@ -81,12 +94,111 @@
 	@ManagerAuth(memo = "宸ヤ綔妗d慨鏀�")
     public R update(WrkMast wrkMast){
         if (Cools.isEmpty(wrkMast) || null==wrkMast.getWrkNo()){
-            return R.error();
+            return R.error("宸ヤ綔鍙峰紓甯�");
+        }else if (wrkMast.getWrkSts()==null){
+            return R.error("淇敼鐘舵�佸紓甯�");
         }
-        wrkMast.setModiUser(getUserId());
-        wrkMast.setModiTime(new Date());
-        wrkMastService.updateById(wrkMast);
+        WrkMast wrkMast1=null;
+        try{
+            wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkMast.getWrkNo()));
+            if (Cools.isEmpty(wrkMast1) || null==wrkMast1.getWrkNo()){
+                throw new CoolException("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"鎵�灞炲伐浣滄。鏌ヨ澶辫触");
+            }else if (wrkMast1.getWrkSts()==null){
+                throw new CoolException("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"鎵�灞炲伐浣滄。鐘舵�佸紓甯�");
+            }
+        }catch (Exception e){
+            return R.error("澶辫触!!!璇峰皾璇曞埛鏂伴〉闈€��"+"寮傚父鍘熷洜锛�"+e);
+        }
+        if (wrkMast1.getWrkSts()-wrkMast.getWrkSts()==0){
+            return R.error("鎵�閫夌姸鎬佷笌姝ゅ伐浣滄。鐘舵�佷竴鑷达紝鏃犻渶淇敼");
+        }
+        if (juBge(wrkMast.getWrkSts(), wrkMast1)){
+            return R.error("淇敼鐘舵�佸け璐ワ紝璇疯鑼冩搷浣�");
+        }
+        wrkMast1.setModiUser(getUserId());
+        wrkMast1.setModiTime(new Date());
+        wrkMast1.setWrkSts(wrkMast.getWrkSts());
+        wrkMastService.updateById(wrkMast1);
         return R.ok();
+    }
+
+    public Boolean juBge(Long wrkSts1,WrkMast wrkMast1){
+        if (wrkSts1>20){
+            throw new CoolException("澶т簬20鐨勭姸鎬佷笉鑳借繘琛屼慨鏀癸紒锛侊紒");
+        }
+        switch (wrkMast1.getIoType()){
+            case 1:
+            case 10:
+            case 53:
+            case 54:
+            case 57:
+                if (wrkSts1>=1 && wrkSts1<=10){
+                    if (wrkSts1==10){
+                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast1.getLocNo()));
+                        if (Cools.isEmpty(locMast) || locMast.getLocSts()==null){
+                            throw new CoolException("宸ヤ綔鍙�"+wrkMast1.getWrkNo()+"宸ヤ綔妗f墍瀵瑰簲鐨勫簱浣嶅紓甯歌缁存姢搴撲綅鏁版嵁");
+                        }
+                        if (locMast.getLocSts().equals("S")||locMast.getLocSts().equals("Q")){
+                            throw new CoolException("宸ヤ綔鍙�"+wrkMast1.getWrkNo()+"宸ヤ綔妗f墍瀵瑰簲鐨勫簱浣嶅彿鐘舵�佷负"+locMast.getLocSts$()+"锛岃缁存姢搴撲綅鏁版嵁");
+                        }else if (locMast.getLocSts().equals("F")){
+                        }else {
+                            throw new CoolException("宸ヤ綔鍙�"+wrkMast1.getWrkNo()+"宸ヤ綔妗f墍瀵瑰簲鐨勫簱浣嶅彿鐘舵�佸紓甯革紝璇风淮鎶ゅ簱浣嶆暟鎹�");
+                        }
+                    }
+                    return false;
+                }
+                return true;
+            case 101:
+            case 103:
+            case 104:
+            case 107:
+            case 110:
+                if (wrkSts1>=11 && wrkSts1<=18){
+                    if (wrkSts1==18){
+                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast1.getSourceLocNo()));
+                        if (Cools.isEmpty(locMast) || locMast.getLocSts()==null){
+                            throw new CoolException("宸ヤ綔鍙�"+wrkMast1.getWrkNo()+"宸ヤ綔妗f墍瀵瑰簲鐨勫簱浣嶅紓甯歌缁存姢搴撲綅鏁版嵁");
+                        }
+                        if (locMast.getLocSts().equals("R")||locMast.getLocSts().equals("P")){
+                            throw new CoolException("宸ヤ綔鍙�"+wrkMast1.getWrkNo()+"宸ヤ綔妗f墍瀵瑰簲鐨勫簱浣嶅彿鐘舵�佷负"+locMast.getLocSts$()+"锛岃缁存姢搴撲綅鏁版嵁");
+                        }else if (locMast.getLocSts().equals("O")){
+                        }else {
+                            throw new CoolException("宸ヤ綔鍙�"+wrkMast1.getWrkNo()+"宸ヤ綔妗f墍瀵瑰簲鐨勫簱浣嶅彿鐘舵�佸紓甯革紝璇风淮鎶ゅ簱浣嶆暟鎹�");
+                        }
+                    }
+                    return false;
+                }
+                return true;
+            case 11:
+                return false;
+            case 3:
+            case 6:
+            default:
+                return true;
+        }
+    }
+    private void doOut(WrkMast wrkMast,LocMast locMast){
+        try{
+            Date now = new Date();
+            // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
+            if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
+                throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触:workNo="+wrkMast.getWrkNo()+"sourceLocNo="+wrkMast.getSourceLocNo());
+            }
+            // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+            if (locMast.getLocSts().equals("R")) {
+                locMast.setLocSts("O");
+                locMast.setBarcode("");
+                locMast.setFrozen(0);
+                locMast.setModiTime(now);
+                locMast.setIoTime(now);
+                locMast.setFrozenMemo("");
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("淇敼婧愬簱浣嶇姸鎬佸け璐�:workNo="+wrkMast.getWrkNo()+"sourceLocNo="+wrkMast.getSourceLocNo());
+                }
+            }
+        }catch (Exception e){
+            throw new CoolException(e+"鎿嶄綔澶辫触");
+        }
     }
 
     @RequestMapping(value = "/wrkMast/delete/auth")
@@ -166,4 +278,153 @@
     }
 
 
+    /********************************杈归攱鏂板**************************/
+
+    @GetMapping(value = "/wrkMast/checkDetl")
+    public R pickDetl(String barcode) {
+        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
+        if (Cools.isEmpty(wrkMast)) {
+            return R.error("鏃犳硶閫氳繃鎵樼洏鐮佹壘鍒板搴斿伐浣滄。");
+        }
+        if (wrkMast.getIoType() != 107) {
+            return R.error("宸ヤ綔妗i潪鎹℃枡浠诲姟");
+        }
+        if (wrkMast.getWrkSts() != 17){
+            return R.error("鐩樼偣浠诲姟姝e湪鎵ц涓�,璇风瓑寰呰澶囪繍琛岀粨鏉熷悗杩涜鎿嶄綔");
+        }
+        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+
+        return R.ok(wrkDetls);
+    }
+
+    /**
+     * 鏍规嵁鐩樼偣淇敼搴撳瓨
+     * @return
+     */
+    @Transactional
+    @PostMapping("/wrkMast/storeCheck")
+    @ManagerAuth(memo = "鏍规嵁鐩樼偣淇敼搴撳瓨")
+    public R storeCheck(@RequestBody List<WrkDetlWithCheck> wrkDetls){
+        Date now = new Date();
+        Integer confirmIsZero = 0;
+        if (wrkDetls == null || wrkDetls.size() <= 0){
+            return R.error("璇蜂紶鍏ユ暟鎹�");
+        }
+        if (Cools.isEmpty(wrkDetls.get(0).getBarcode())) {
+
+            return R.error("鎵樼洏鐮乕barcode]涓虹┖");
+        }
+        WrkMast wrkMast = wrkMastService.selectByBarcode(wrkDetls.get(0).getBarcode());
+
+        for (WrkDetlWithCheck wrkDetl : wrkDetls) {
+            if (Cools.isEmpty(wrkDetl.getBarcode())) {
+                return R.error("鎵樼洏鐮乕barcode]涓虹┖");
+            }
+            if (Cools.isEmpty(wrkDetl.getMatnr())) {
+                return R.error("鐗╂枡缂栫爜[matnr]涓虹┖");
+            }
+            Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                return R.error("鐗╂枡缂栫爜[matnr]鍦ㄧ墿鏂欐。妗堟壘涓嶅埌");
+
+            }
+            if (Cools.isEmpty(wrkDetl.getAnfme())) {
+                return R.error("鐩樼偣鍓嶆暟閲廩anfme]涓虹┖");
+            }
+            if (wrkDetl.getConfirmQty() == null) {
+                return R.error("鐩樼偣纭閲廩confirm]涓虹┖");
+            }
+            if (wrkDetl.getConfirmQty() == 0){
+                confirmIsZero++;
+            }
+
+        }
+        /**
+         * 濡傛灉鏁翠釜list閲岀殑confirmQty鏁伴噺鍏ㄦ槸0, 琛ㄧず鏁翠釜搴撲綅鏃犱换浣曞簱瀛�,鍒犲伐浣滄。, 搴撲綅鏀逛负O
+         */
+        if (confirmIsZero == wrkDetls.size()){
+            locDetlService.delete(new EntityWrapper<LocDetl>()
+                    .eq("loc_no",wrkMast.getSourceLocNo()));
+            locMastService.updateLocSts(wrkMast.getSourceLocNo(),"O");
+            wrkMastService.delete(new EntityWrapper<WrkMast>()
+                    .eq("wrk_no",wrkMast.getWrkNo()));
+            wrkDetlService.delete(new EntityWrapper<WrkDetl>()
+                    .eq("wrk_no",wrkMast.getWrkNo()));
+            return R.ok("搴撳瓨娓呯悊鎴愬姛");
+        }else {
+            locMastService.updateLocSts(wrkMast.getSourceLocNo(),"F");
+            locDetlService.delete(new EntityWrapper<LocDetl>()
+                    .eq("loc_no",wrkMast.getSourceLocNo()));
+            for (WrkDetlWithCheck wrkDetl : wrkDetls) {
+                LocDetl locDetl = new LocDetl();
+                Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
+                locDetl.sync(mat);
+                locDetl.setZpallet(wrkMast.getBarcode());
+                locDetl.setAnfme(wrkDetl.getConfirmQty());
+                locDetl.setBatch(wrkDetl.getBatch());
+                locDetl.setAppeTime(now);
+                locDetl.setModiTime(now);
+                locDetl.setAppeUser(getUserId());
+                locDetl.setModiUser(getUserId());
+                locDetl.setLocNo(wrkMast.getSourceLocNo());
+                locDetlService.insert(locDetl);
+
+                CheckRecord checkRecord = new CheckRecord();
+                checkRecord.sync(mat);
+                checkRecord.setAnfme(wrkDetl.getAnfme());
+                checkRecord.setBarcode(wrkMast.getBarcode());
+                checkRecord.setLocNo(wrkMast.getSourceLocNo());
+                checkRecord.setCreateTime(now);
+                checkRecord.setBatch(wrkDetl.getBatch());
+                checkRecord.setConfirmQty(locDetl.getAnfme());
+                checkRecordService.insert(checkRecord);
+
+            }
+        }
+
+        return R.ok("搴撳瓨鏇存柊宸叉垚鍔�");
+    }
+
+    @GetMapping("/wrkMast/pickToFill")
+    public R pickToFill(String barcode){
+        Date now = new Date();
+        if (Cools.isEmpty(barcode)) {
+            return R.error("鎵樼洏鐮佷负绌�,璇锋鏌�");
+        }
+        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
+        if (Cools.isEmpty(wrkMast)) {
+            return R.error("鏃犳硶閫氳繃鎵樼洏鐮佹壘鍒拌宸ヤ綔妗�,璇锋鏌ユ墭鐩樼爜鏄惁姝g‘");
+        }
+        if (wrkMast.getIoType() != 103) {
+            return R.error("浠呮湁鎹℃枡鍑哄簱鍙互浣跨敤璇ュ姛鑳�");
+        }
+        if (wrkMast.getWrkSts() != 17) {
+            return R.error("鎹℃枡鍑哄簱鏈畬鎴�,璇风瓑寰呰澶囪繍琛屽畬鎴�");
+        }
+        wrkMast.setIoType(101);
+        wrkMast.setMemo("鎹℃枡杞叏鏉垮伐浣滄。");
+        wrkMastService.update(wrkMast,new EntityWrapper<WrkMast>()
+                .eq("wrk_no",wrkMast.getWrkNo()));
+        wrkDetlService.deleteByWrkNo(wrkMast.getWrkNo());
+        List<LocDetl> locDetls = locDetlService.selectByLocNo(wrkMast.getSourceLocNo());
+        for (LocDetl locDetl : locDetls) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(locDetl);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setZpallet(wrkDetl.getBarcode());
+            wrkDetl.setBarcode(wrkMast.getBarcode());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setAppeUser(1L);
+            wrkDetl.setModiUser(1L);
+            wrkDetl.setMatType(locDetl.getMatType());
+            wrkDetlService.insert(wrkDetl);
+
+        }
+        locMastService.updateLocSts(wrkMast.getSourceLocNo(),"R");
+        return R.ok();
+    }
+
+
 }

--
Gitblit v1.9.1