From 6c8588d5f7f0de7e9489426c350472bf911a4933 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期五, 05 十二月 2025 15:47:07 +0800
Subject: [PATCH] towcs

---
 src/main/java/com/zy/common/web/WcsController.java |  158 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 146 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 703bad5..d209e64 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -9,10 +9,12 @@
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
 import com.zy.asrs.entity.result.StorageResult;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.CodeRes;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
+import com.zy.common.web.param.NotifyDto;
 import com.zy.common.web.param.SearchLocParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +53,8 @@
     private  LocDetlService locDetlService;
     @Autowired
     private  BasCrnpService basCrnpService;
+    @Autowired
+    private WorkService workService;
 
     @Value("${led.ip}")
     private String ledIp;
@@ -76,11 +80,21 @@
 
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
+    @Transactional
     public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) {
+        WaitPakin waitPakin = new WaitPakin();
         log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
-        if (Cools.isEmpty(param.getIoType())) {
-            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
-        }
+        //wcs璋冪敤姝ゆ帴鍙e悜缁勬墭琛ㄦ彃鍏ヤ竴鏉℃暟鎹ā鎷熺粍鎵�
+        waitPakin.setZpallet(param.getBarcode());
+        waitPakin.setAnfme(100.0D);
+        waitPakin.setMatnr("50001LR-71");
+        waitPakin.setMaktx("姘旀场琚�");
+        waitPakin.setSpecs("50001LR-71");
+        waitPakin.setModel("skv");
+        waitPakinService.insert(waitPakin);
+//        if (Cools.isEmpty(param.getIoType())) {
+//            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+//        }
         if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
         }
@@ -114,10 +128,11 @@
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakins != null;
-                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+//                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+                dto = startupFullPutStoreToWmsDev(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins,param.getRow());
                 break;
             case 10://绌烘墭鐩樺叆搴�
-                dto = emptyPlateIn(param.getSourceStaNo(), param.getBarcode());
+                dto = emptyPlateIn(param.getSourceStaNo(), param.getBarcode(),param.getRow());
                 break;
             default:
                 break;
@@ -136,16 +151,47 @@
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1(param.getLocType1());
 
-        StartupDto dto = startupPickIn(param.getSourceStaNo(), param.getBarcode(), locTypeDto);;
+        StartupDto dto = startupPickIn(param.getSourceStaNo(), param.getBarcode(), locTypeDto,param.getRow());;
         log.info("WCS鎷i�夌洏鐐瑰叆搴撴帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
         return R.ok().add(dto);
+    }
+
+    @PostMapping("/taskWrk/state")
+    @ResponseBody
+    public R taskWrkState(@RequestBody(required = false) NotifyDto notifyDto){
+        log.info("鏀跺埌WCS璇锋眰涓婃姤鎺ュ彛======>>宸ヤ綔鍙�:{},鍏ュ弬:{}",notifyDto.getSuperTaskNo(),notifyDto);
+        if (Cools.isEmpty(notifyDto.getNotifyType())){
+            return R.error("閫氱煡绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(notifyDto.getTaskNo())){
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+        WrkMast wrkMast = new WrkMast();
+        switch (notifyDto.getMsgType()){
+            case "task_complete":
+                wrkMast = wrkMastService.selectByTaskNo(notifyDto.getSuperTaskNo());
+                if (wrkMast != null && (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 11)){
+                    wrkMast.setWrkSts(4L);
+                    if (!wrkMastService.updateById(wrkMast)){
+                        return R.error("淇敼宸ヤ綔妗eけ璐�====>4");
+                    }
+                }else if (wrkMast != null && (wrkMast.getIoType() == 101)){
+                    wrkMast.setWrkSts(14L);
+                    if (!wrkMastService.updateById(wrkMast)){
+                        return R.error("淇敼宸ヤ綔妗eけ璐�====>14");
+                    }
+                }
+            case "task_cancel":
+                workService.cancelWrkMast(notifyDto.getSuperTaskNo(), 9527L);
+        }
+        return R.ok();
     }
 
     /**
      * 鍏ㄦ澘鍏ュ簱
      */
     @Transactional
-    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
+    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins,int[] row) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
@@ -159,7 +205,7 @@
         if (dto == null) {
             throw new CoolException("鎵句笉鍒扮┖搴撲綅");
         }
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -167,7 +213,7 @@
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setIoPri(30D); // 浼樺厛绾�
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
@@ -225,10 +271,98 @@
     }
 
     /**
+     * 鍏ㄦ澘鍏ュ簱-wms-dev
+     */
+    @Transactional
+    public StartupDto startupFullPutStoreToWmsDev(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins,int[] row) {
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+        // 妫�绱㈠簱浣�
+//        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+//        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
+        WaitPakin waitPakin1 = waitPakins.get(0);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+        findLocNoAttributeVo.setMatnr(waitPakin1.getMatnr());
+
+        StartupDto dto = commonService.getLocNoToWmsDev(1, devpNo, findLocNoAttributeVo, locTypeDto, barcode,row);
+        if (dto == null) {
+            throw new CoolException("鎵句笉鍒扮┖搴撲綅");
+        }
+        int workNo = dto.getTaskNo();
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+        wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setCrnNo(dto.getCrnNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setLocNo(loc(dto.getLocNo()));
+        wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        wrkMast.setModiUser(waitPakin1.getModiUser());
+        wrkMast.setAppeUser(waitPakin1.getAppeUser());
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        waitPakins.forEach(waitPakin -> {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(waitPakin);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        });
+        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+        if (!waitPakinService.updateIoStatus("Y", dto.getLocNo(), barcode)) {
+            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+        }
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiTime(now);
+        if (!basDevpService.updateById(sourceStaNo)) {
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+        // 鏇存柊鐩爣搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectById(loc(dto.getLocNo()));
+        if (locMast.getLocSts().equals("O")) {
+            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+            locMast.setModiTime(now);
+            if (!locMastService.updateById(locMast)) {
+                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+        }
+        return dto;
+    }
+
+    public String loc(String locNo){
+        String[] split = locNo.split("-");
+        return Utils.getLocNo(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));
+    }
+
+    /**
      * 鎷i�夊叆搴�
      */
     @Transactional
-    public StartupDto startupPickIn(Integer devpNo, String barcode, LocTypeDto locTypeDto) {
+    public StartupDto startupPickIn(Integer devpNo, String barcode, LocTypeDto locTypeDto,int[] row) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
 
@@ -258,7 +392,7 @@
 
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         wrkMast.setWrkNo(workNo);
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(wrkMastOut.getIoType() - 50); // 鍏ュ嚭搴撶姸鎬侊細53.鎷f枡鍐嶅叆搴�
@@ -310,7 +444,7 @@
     }
 
     @Transactional
-    public StartupDto emptyPlateIn(Integer devpNo, String barcode) {
+    public StartupDto emptyPlateIn(Integer devpNo, String barcode,int[] row) {
         // 妫�绱㈠簱浣�
         Integer[] arr=arr();
 

--
Gitblit v1.9.1