From 3abb457673b343ab1b5af0a531a625435dcff105 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 11 一月 2024 08:28:28 +0800
Subject: [PATCH] #

---
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocMastMapper.java            |    6 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocMastController.java              |    6 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java                 |    8 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java             |    5 +
 zy-asrs-wms/src/main/webapp/views/locDetl/locDetl.html                                   |    2 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocMastService.java          |   10 +++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java |   18 ++++++
 zy-asrs-wms/src/main/webapp/static/js/pakStore/locMove.js                                |    2 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java    |   90 ++++++++++++++++++++++++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocDetlController.java              |    4 
 10 files changed, 147 insertions(+), 4 deletions(-)

diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocMastMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocMastMapper.java
index 433df09..51d44bf 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocMastMapper.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocMastMapper.java
@@ -3,10 +3,16 @@
 import com.zy.asrs.common.wms.entity.LocMast;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
 @Mapper
 @Repository
 public interface LocMastMapper extends BaseMapper<LocMast> {
 
+    @Select("select loc_no from common_loc_mast where 1=1 and loc_sts = 'O' and host_id = #{hostId}")
+    List<String> queryGroupEmptyStock(Long hostId);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocMastService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocMastService.java
index a9a359c..6e4a9bf 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocMastService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocMastService.java
@@ -3,6 +3,16 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.asrs.common.wms.entity.LocMast;
 
+import java.util.List;
+
 public interface LocMastService extends IService<LocMast> {
 
+    /**
+     * 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
+     *
+     * @param sourceLocNo 婧愬簱浣�
+     * @return 鍚岀粍绌哄簱浣嶉泦鍚�
+     */
+    List<String> queryGroupEmptyStock(String sourceLocNo, Long hostId);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
index b28307f..7ff9ca8 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
@@ -47,5 +47,10 @@
      */
     void adjustLocDetl(LocDetlAdjustParam param, Long userId, Long hostId);
 
+    /**
+     * 搴撲綅绉昏浆
+     */
+    void locMove(String sourceLocNo, String locNo, Long userId, Long hostId);
+
 
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
index 4c91634..e56e26b 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
@@ -1,12 +1,30 @@
 package com.zy.asrs.common.wms.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.common.wms.mapper.LocMastMapper;
 import com.zy.asrs.common.wms.entity.LocMast;
 import com.zy.asrs.common.wms.service.LocMastService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.framework.common.Cools;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service("locMastService")
 public class LocMastServiceImpl extends ServiceImpl<LocMastMapper, LocMast> implements LocMastService {
 
+    @Override
+    public List<String> queryGroupEmptyStock(String sourceLocNo, Long hostId) {
+        if (Cools.isEmpty(sourceLocNo)) {
+            return null;
+        }
+        LocMast sourceStock = this.getOne(new LambdaQueryWrapper<LocMast>()
+                .eq(LocMast::getLocNo, sourceLocNo)
+                .eq(LocMast::getHostId, hostId));
+        if (Cools.isEmpty(sourceStock)) {
+            return null;
+        }
+        return this.baseMapper.queryGroupEmptyStock(hostId);
+    }
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
index 7a6debb..00d0826 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
@@ -163,6 +163,7 @@
     }
 
     @Override
+    @Transactional
     public void stockOut(Integer staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, Long hostId) {
         Date now = new Date();
         // 鍚堝苟鍚岀被椤�
@@ -535,6 +536,7 @@
     }
 
     @Override
+    @Transactional
     public void adjustLocDetl(LocDetlAdjustParam param, Long userId, Long hostId) {
         param.integrate();
         LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId, hostId));
@@ -656,4 +658,92 @@
             throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
         }
     }
+
+    @Override
+    @Transactional
+    public void locMove(String sourceLocNo, String locNo, Long userId, Long hostId) {
+        LocMast sourceLoc = locMastService.getOne(new LambdaQueryWrapper<LocMast>()
+                .eq(LocMast::getLocNo, sourceLocNo)
+                .eq(LocMast::getHostId, hostId));
+        List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>()
+                .eq(LocDetl::getLocNo, sourceLocNo)
+                .eq(LocDetl::getHostId, hostId));
+        if (Cools.isEmpty(sourceLoc)){
+            throw new CoolException("鏈壘鍒板簱浣�");
+        }
+        LocMast loc = locMastService.getOne(new LambdaQueryWrapper<LocMast>()
+                .eq(LocMast::getLocNo, locNo)
+                .eq(LocMast::getHostId, hostId));
+        if (Cools.isEmpty(loc)){
+            throw new CoolException("鏈壘鍒板簱浣�");
+        }
+        if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+//            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");   todo:luxiaotao
+        }
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱浠诲姟
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setIoPri(10D);
+        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.setAppeUser(String.valueOf(userId));
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(String.valueOf(userId));
+        wrkMast.setModiTime(now);
+        wrkMast.setHostId(hostId);
+        boolean res = wrkMastService.save(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);
+            wrkDetl.setHostId(hostId);
+            wrkDetl.setWrkMastId(wrkMast.getId());
+            if (!wrkDetlService.save(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.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+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$());
+        }
+    }
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocDetlController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocDetlController.java
index 204e248..5d3bb49 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocDetlController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocDetlController.java
@@ -51,8 +51,8 @@
             wrapper.ge(LocDetl::getAppeTime, DateUtils.convert(range[0]));
             wrapper.le(LocDetl::getAppeTime, DateUtils.convert(range[1]));
         }
-        if (!Cools.isEmpty(param.get("loc_no"))) {
-            wrapper.eq(LocDetl::getLocNo, param.get("loc_no"));
+        if (!Cools.isEmpty(param.get("locNo"))) {
+            wrapper.eq(LocDetl::getLocNo, param.get("locNo"));
         }
         return R.ok(locDetlService.page(new Page<>(curr, limit), wrapper));
     }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocMastController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocMastController.java
index 861d0d2..194311c 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocMastController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/LocMastController.java
@@ -60,6 +60,12 @@
         return R.ok(locMastService.page(new Page<>(curr, limit), wrapper));
     }
 
+    @PostMapping(value = "/group/empty/stock")
+    @ManagerAuth(memo = "鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅")
+    public R getGroupEmptyStock(@RequestParam(required = false) String sourceLocNo) {
+        return R.ok().add(locMastService.queryGroupEmptyStock(sourceLocNo, getHostId()));
+    }
+
 
     @RequestMapping(value = "/locMast/add/auth")
     @ManagerAuth
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
index e6f6716..1062b75 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
@@ -111,4 +111,12 @@
         return R.ok("搴撳瓨璋冩暣鎴愬姛");
     }
 
+    @RequestMapping("/loc/move/start")
+    @ManagerAuth(memo = "搴撲綅绉昏浆")
+    public synchronized R locMoveStart(@RequestParam String sourceLocNo,
+                          @RequestParam String targetLocNo) {
+        workService.locMove(sourceLocNo, targetLocNo, getUserId(), getHostId());
+        return R.ok("绉诲簱鍚姩鎴愬姛");
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/webapp/static/js/pakStore/locMove.js b/zy-asrs-wms/src/main/webapp/static/js/pakStore/locMove.js
index 542f6b9..882d795 100644
--- a/zy-asrs-wms/src/main/webapp/static/js/pakStore/locMove.js
+++ b/zy-asrs-wms/src/main/webapp/static/js/pakStore/locMove.js
@@ -59,7 +59,7 @@
 // 鎼滅储搴撲綅鐗╂枡
 function getLoc(el) {
     tableIns.reload({
-        url: baseUrl+'/locDetl/list/auth'
+        url: baseUrl+'/locDetl/page/auth'
         , where: {loc_no: el.value}
         , done:function (res) {
             limit();
diff --git a/zy-asrs-wms/src/main/webapp/views/locDetl/locDetl.html b/zy-asrs-wms/src/main/webapp/views/locDetl/locDetl.html
index e5102b9..d7477d8 100644
--- a/zy-asrs-wms/src/main/webapp/views/locDetl/locDetl.html
+++ b/zy-asrs-wms/src/main/webapp/views/locDetl/locDetl.html
@@ -16,7 +16,7 @@
 <div id="search-box" class="layui-form layui-card-header">
     <div class="layui-inline">
         <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+            <input class="layui-input" type="text" name="locNo" placeholder="搴撲綅鍙�" autocomplete="off">
         </div>
     </div>
     <div class="layui-inline">

--
Gitblit v1.9.1