From 7a6aee85e03339b2651e762a5c258a688894de09 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 20 五月 2023 16:42:50 +0800
Subject: [PATCH] WMS任务(11.库位移转)

---
 src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 106 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java
index 22917e7..420cd4d 100644
--- a/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java
@@ -1,7 +1,10 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.enums.WmsWrkStatusType;
+import com.zy.asrs.domain.enums.WorkNoType;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.WmsWrkMapper;
 import com.zy.asrs.service.*;
@@ -12,6 +15,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.List;
 
 @Service("wmsWrkService")
 public class WmsWrkServiceImpl extends ServiceImpl<WmsWrkMapper, WmsWrk> implements WmsWrkService {
@@ -26,6 +30,10 @@
     private WrkMastService wrkMastService;
     @Autowired
     private StaDescService staDescService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
 
     @Override
     public WmsWrk selectByWmsWrkNo(Integer wmsWrkNo) {
@@ -47,10 +55,13 @@
 
         //鍒涘缓浠诲姟
         if (wmsWrk.getIoType() == 1) {
-            //鍏ュ簱
+            //1.鍏ュ簱
             startup(wmsWrk, userId);
-        }else if(wmsWrk.getIoType() == 101){
-            //鍑哄簱
+        }else if(wmsWrk.getIoType() == 11){
+            //11.搴撴牸绉昏浇
+            locMove(wmsWrk, userId);
+        } else if (wmsWrk.getIoType() == 101) {
+            //101.鍑哄簱
             stockOut(wmsWrk, userId);
         }
 
@@ -66,7 +77,7 @@
         }
 
         // 鐢熸垚浠诲姟鍙�
-        int workNo = commonService.getWorkNo(0);
+        int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);
         wmsWrk.setWrkNo(workNo);
         this.baseMapper.updateById(wmsWrk);
 
@@ -76,6 +87,7 @@
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
+        wrkMast.setWmsWrkNo(wmsWrk.getWmsWrkNo());//WMS浠诲姟鍙�
         wrkMast.setWmsWrkNo(wmsWrk.getWmsWrkNo());
         wrkMast.setIoTime(now);
         wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
@@ -122,6 +134,7 @@
     }
 
     @Override
+    @Transactional
     public void stockOut(WmsWrk wmsWrk, Long userId) {
         Date now = new Date();
         LocMast locMast = locMastService.selectByLocNo(wmsWrk.getSourceLocNo());
@@ -130,7 +143,7 @@
         }
 
         // 鐢熸垚浠诲姟鍙�
-        int workNo = commonService.getWorkNo(2);
+        int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
         wmsWrk.setWrkNo(workNo);
         this.baseMapper.updateById(wmsWrk);
 
@@ -139,6 +152,7 @@
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
+        wrkMast.setWmsWrkNo(wmsWrk.getWmsWrkNo());//WMS浠诲姟鍙�
         wrkMast.setIoTime(now);
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
         wrkMast.setIoType(101); // 101.鍑哄簱
@@ -174,4 +188,91 @@
             throw new CoolException(wmsWrk.getSourceLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    //搴撲綅绉昏浆
+    @Override
+    @Transactional
+    public void locMove(WmsWrk wmsWrk, Long userId) {
+        String sourceLocNo = wmsWrk.getSourceLocNo();
+        String locNo = wmsWrk.getLocNo();
+        LocMast sourceLoc = locMastService.selectById(sourceLocNo);
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+        if (Cools.isEmpty(sourceLoc)){
+            throw new CoolException("鏈壘鍒板簱浣�");
+        }
+        LocMast loc = locMastService.selectById(locNo);
+        if (Cools.isEmpty(loc)){
+            throw new CoolException("鏈壘鍒板簱浣�");
+        }
+        if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
+        }
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        wmsWrk.setWrkNo(workNo);
+        this.baseMapper.updateById(wmsWrk);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setWmsWrkNo(wmsWrk.getWmsWrkNo());//WMS浠诲姟鍙�
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setIoPri(10D);
+        wrkMast.setCrnNo(sourceLoc.getCrnNo());
+        wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+        wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
+        wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+        wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 宸ヤ綔妗f槑缁嗕繚瀛�
+        for (LocDetl locDetl : locDetls) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(locDetl);
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAnfme(locDetl.getAnfme());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setAppeUser(userId);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setModiUser(userId);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+        }
+        // 淇敼婧愬簱浣嶇姸鎬�
+        if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+            sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+            sourceLoc.setModiUser(userId);
+            sourceLoc.setModiTime(now);
+            if (!locMastService.updateById(sourceLoc)){
+                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+            }
+        } else {
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+        }
+        // 淇敼鐩爣搴撲綅鐘舵��
+        if (loc.getLocSts().equals("O")) {
+            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+            loc.setModiTime(now);
+            loc.setModiUser(userId);
+            if (!locMastService.updateById(loc)) {
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+        }
+    }
 }

--
Gitblit v1.9.1