From ac0f708807b8876b23b59dfce0d41a146323428a Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期三, 08 一月 2025 16:59:29 +0800
Subject: [PATCH] #平库出库

---
 src/main/resources/mapper/ManLocDetlMapper.xml                    |   36 +++++++
 src/main/java/com/zy/asrs/controller/OrderController.java         |   19 +++
 src/main/java/com/zy/asrs/entity/param/CombParam.java             |    6 +
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java       |   41 +++++++
 src/main/java/com/zy/asrs/entity/WrkMast.java                     |    2 
 src/main/resources/mapper/WrkMastMapper.xml                       |    1 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java     |  116 +++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/ManLocDetlService.java          |    2 
 src/main/java/com/zy/asrs/controller/MobileController.java        |   11 ++
 src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java |    4 
 src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java            |    3 
 src/main/java/com/zy/asrs/service/MobileService.java              |    2 
 12 files changed, 234 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 8986c3f..ba1e078 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -308,6 +308,17 @@
         return R.ok();
     }
 
+    @RequestMapping("/pingKu/unShelves/auth")
+    @ManagerAuth(memo = "骞冲簱涓嬫灦")
+    public R pingKuUnShelves(@RequestBody CombParam combParam){
+        if (Cools.isEmpty(combParam.getLocno(), combParam.getCombMats())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        mobileService.pingKuUnShelves(combParam, getUserId());
+
+        return R.ok();
+    }
+
     @RequestMapping("/pack/get/auth")
     @ManagerAuth
     public R packGet(@RequestParam String barcode){
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index e21e0ad..5a44740 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -78,6 +78,25 @@
         return R.ok().add(orderPage);
     }
 
+    @RequestMapping(value = "/order/list/pda/page/out/auth")
+    @ManagerAuth
+    public R pdaPageListOut(@RequestParam(required = true)Long tagId,
+                         @RequestParam(defaultValue = "1")Integer curr,
+                         @RequestParam(defaultValue = "10")Integer limit){
+        List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+        ArrayList<Integer> arrayList = new ArrayList<>();
+        docTypes.forEach(docType -> {
+            arrayList.add(docType.getDocId().intValue());
+        });
+        EntityWrapper<Order> wrapper = new EntityWrapper<>();
+//        wrapper.eq("tag_id", tagId);
+        wrapper.in("doc_type", arrayList);
+        wrapper.in("settle",1,2);
+        wrapper.orderBy("create_time", false);
+        Page<Order> orderPage = orderService.selectPage(new Page<>(curr, limit), wrapper);
+        return R.ok().add(orderPage);
+    }
+
     @RequestMapping(value = "/order/nav/list/auth")
     @ManagerAuth
     public R navList(@RequestParam(required = false) String orderNo){
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index cac671e..4c3374f 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -398,7 +398,7 @@
         if (!Cools.isEmpty(locMast)){
             return String.valueOf(locMast.getLocNo());
         }
-        return null;
+        return this.sourceLocNo;
     }
 
     public String getIoTime$(){
diff --git a/src/main/java/com/zy/asrs/entity/param/CombParam.java b/src/main/java/com/zy/asrs/entity/param/CombParam.java
index d1d5cfd..3c27eb1 100644
--- a/src/main/java/com/zy/asrs/entity/param/CombParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -40,6 +40,12 @@
         // 瑙勬牸
         private String specs;
 
+        private String supp;
+
+        private String temp1;
+
+        private String temp2;
+
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java
index 4eac4f1..c37099b 100644
--- a/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.mapper;
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.ManLocDetl;
 import com.zy.asrs.entity.result.StockVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -53,7 +54,7 @@
 
     // -------------------------------------------------
 
-    List<ManLocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos);
+    List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos, @Param("supp")String supp, @Param("temp1")String temp1, @Param("temp2")String temp2);
 
     Double queryStockAnfme(String matnr, String batch);
 
diff --git a/src/main/java/com/zy/asrs/service/ManLocDetlService.java b/src/main/java/com/zy/asrs/service/ManLocDetlService.java
index d6761c8..7d3d0e8 100644
--- a/src/main/java/com/zy/asrs/service/ManLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/ManLocDetlService.java
@@ -43,7 +43,7 @@
 
     // --------------------------------------------------
 
-    List<ManLocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos);
+    List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos,String supp,String temp1,String temp2);
 
     Double queryStockAnfme(String matnr, String batch);
 
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 605f917..4b14a68 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -60,4 +60,6 @@
     void inventoryUpload(String orderId);
 
     void pingKuShelves(CombParam combParam, Long userId);
+
+    void pingKuUnShelves(CombParam combParam, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
index e6b362b..9be4095 100644
--- a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
@@ -90,8 +90,8 @@
     }
 
     @Override
-    public List<ManLocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos) {
-        return this.baseMapper.queryStock(matnr, batch, orderNo, locNos);
+    public List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos,String supp,String temp1,String temp2) {
+        return this.baseMapper.queryStock(matnr, batch, orderNo, locNos,supp,temp1,temp2);
     }
 
     @Override
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 2061981..f81a2ea 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1096,11 +1096,127 @@
             wrkDetl.setSuppCode(detlDto.getFromOrderNo()); //鏉ユ簮鍗曞彿
             wrkDetl.setTemp1(detlDto.getTemp1());
             wrkDetl.setTemp2(detlDto.getTemp2());
+            wrkDetl.setTemp3(detlDto.getSuppName());
+            wrkDetl.setTemp4(detlDto.getTemp4());
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        }
+        orderService.updateSettle(order.getId(), 2L, userId);
+
+
+    }
+
+    @Override
+    @Transactional
+    public void pingKuUnShelves(CombParam combParam, Long userId) {
+        String orderNo = combParam.getOrderNo();
+
+        Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", combParam.getLocno()).eq("type", 3));
+        if (Cools.isEmpty(node)){
+            throw new CoolException("鏈壘鍒板簱浣嶄俊鎭�");
+        }
+        //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。
+        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo));
+        if (order.getSettle() != 1 && order.getSettle() != 2){
+            throw new CoolException("璇ヨ鍗曞凡澶勭悊");
+        }
+        List<DetlDto> detlDtos = new ArrayList<>();
+        for (CombParam.CombMat elem : combParam.getCombMats()) {
+            Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno())
+                    .eq("matnr", elem.getMatnr()).eq("batch", elem.getBatch())
+                    .eq("temp3", elem.getSupp()).eq("temp1", elem.getTemp1()).eq("temp2", elem.getTemp2());
+            ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper);
+
+            if (Cools.isEmpty(manLocDetl)){
+                throw new CoolException("璇ュ簱浣嶆湭鏌ヨ鍒拌揣鐗╀俊鎭�");
+            }
+            if (elem.getAnfme()> manLocDetl.getAnfme()){
+                throw new CoolException("鍑哄簱鏁伴噺澶т簬搴撲綅鍓╀綑鏁伴噺");
+            }
+
+            OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
+            if (Cools.isEmpty(orderDetl)) {
+                throw new CoolException("璇ュ崟鎹腑鏈壘鍒板搴旂墿鏂欐槑缁�");
+            }
+            if (elem.getAnfme() > orderDetl.getEnableQty()) {
+                throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+            }
+            // 淇敼璁㈠崟浣滀笟鏁伴噺
+            if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+                throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+            }
+
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getSuppCode()
+                    , orderDetl.getManu(),orderDetl.getSku(),orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2(),orderDetl.getTemp3(),orderDetl.getTemp4());
+
+
+            int workNo = commonService.getWorkNo(4);
+            Date now = new Date();
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(new Date());
+            wrkMast.setWrkSts(14L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+            wrkMast.setIoType(301); // 鍏ュ嚭搴撶姸鎬侊細301.骞冲簱鍑哄簱
+            wrkMast.setIoPri(12D); // 浼樺厛绾�
+            wrkMast.setSourceLocNo(node.getName());
+            wrkMast.setBarcode(""); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("Y");
+            wrkMast.setSheetNo(order.getOrderNo());
+            // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiTime(now);
+            boolean res = wrkMastService.insert(wrkMast);
+            if (!res) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+            }
+
+            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+            }
+            WrkDetl wrkDetl = new WrkDetl();
+
+            wrkDetl.sync(detlDto);
+            wrkDetl.sync(mat);
+
+            wrkDetl.setOrderNo(order.getOrderNo());
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setManu(detlDto.getMark()); //鏍囪
+            wrkDetl.setOrigin(order.getItemName());//浠撳簱
+            wrkDetl.setSupp(detlDto.getSuppName()); //渚涘簲鍟�
+            wrkDetl.setSku(detlDto.getCustomer()); //瀹㈡埛鍚嶇О
+            wrkDetl.setThreeCode(detlDto.getOrderNo()); //u8鍙戣繃鏉ョ殑璁㈠崟鍙�
+            wrkDetl.setSuppCode(detlDto.getFromOrderNo()); //鏉ユ簮鍗曞彿
+            wrkDetl.setTemp1(detlDto.getTemp1());
+            wrkDetl.setTemp2(detlDto.getTemp2());
             wrkDetl.setTemp3(detlDto.getTemp3());
             wrkDetl.setTemp4(detlDto.getTemp4());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
             }
+
+            if (new BigDecimal(manLocDetl.getAnfme()).subtract(new BigDecimal(elem.getAnfme())).doubleValue() == 0){
+                manLocDetlService.delete(manLocDetlWrapper);
+            }else {
+                manLocDetl.setAnfme(new BigDecimal(manLocDetl.getAnfme()).subtract(new BigDecimal(elem.getAnfme())).doubleValue());
+                if (!manLocDetlService.update(manLocDetl,manLocDetlWrapper)) {
+                    throw new CoolException("鏇存柊鏄庣粏澶辫触");
+                }
+            }
+
+
+
+
+
         }
         orderService.updateSettle(order.getId(), 2L, userId);
 
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 1961f9c..8d7d5cd 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -451,12 +451,24 @@
         Date now = new Date();
         LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
         try {
-            if (null == locMast) {
+            Node node = null;
+            if (wrkMast.getIoType() == 301){
+                node = nodeService.selectOne(new EntityWrapper<Node>().eq("name",wrkMast.getSourceLocNo()).eq("type",3));
+                if (null == node) {
 //                exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg("宸ヤ綔妗e簱浣嶅彿閿欒; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+                }
+                assert node != null;
+            }else {
+                locMast = locMastService.selectById(wrkMast.getLocNo());
+                if (null == locMast) {
+//                exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+                }
+                assert locMast != null;
             }
-            assert locMast != null;
             switch (wrkMast.getIoType()) {
                 // 鍏ㄦ澘鍑哄簱
                 case 101:
@@ -523,6 +535,27 @@
                         }
                     }
                     break;
+                case 301:
+                    List<WrkDetl> wrkDetls301 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                    for (WrkDetl wrkDetl : wrkDetls301) {
+                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                        if (orderDetl==null){
+                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+                        }
+                        try {
+                            if(!Cools.isEmpty(orderDetl)){
+                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
+//                                    exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
+//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                                }
+                            }
+                        } catch (Exception ignore){}
+                    }
+                    break;
                 default:
                     break;
             }
diff --git a/src/main/resources/mapper/ManLocDetlMapper.xml b/src/main/resources/mapper/ManLocDetlMapper.xml
index 9965e02..a6f79f7 100644
--- a/src/main/resources/mapper/ManLocDetlMapper.xml
+++ b/src/main/resources/mapper/ManLocDetlMapper.xml
@@ -317,6 +317,42 @@
     <select id="sum" resultType="java.lang.Double">
         SELECT SUM(anfme) FROM man_loc_detl
     </select>
+    <select id="queryStock" resultMap="BaseResultMap">
+        select a.*
+        from man_loc_detl a
+        where 1=1
+        and b.loc_sts = 'F'
+        and a.matnr = #{matnr}
+        <if test="supp != null and supp != ''">
+            and a.supp = #{supp}
+        </if>
+        <if test="temp1 != null and temp1 != ''">
+            and a.temp1 = #{temp1}
+        </if>
+        <if test="temp2 != null and temp2 != ''">
+            and a.temp2 = #{temp2}
+        </if>
+        <if test="batch != null and batch != ''">
+            and a.batch = #{batch}
+        </if>
+        <if test="orderNo != null and orderNo != ''">
+            and a.order_no = #{orderNo}
+        </if>
+
+        <if test="locNos != null and locNos.size > 0">
+            and b.loc_no not in
+            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        order by
+        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
+        desc
+
+
+
+    </select>
 
 
     <update id="updateLocNo0">
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 7c417dd..cfe0813 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -69,6 +69,7 @@
     <select id="selectToBeHistoryData" resultMap="BaseResultMap">
         select * from asr_wrk_mast
         where wrk_sts=5
+           or (wrk_sts=15 and io_type= 301)
            or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
            or (wrk_sts=15 and (dateadd(mi,5,crn_end_time) &lt;= getdate() or dateadd(mi,1,modi_time) &lt;= getdate()) and wrk_no not in (select wrk_no from asr_bas_devp))
            or (wrk_sts=15 and (dateadd(mi,5,crn_end_time) &lt;= getdate() or dateadd(mi,1,modi_time) &lt;= getdate()) and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))

--
Gitblit v1.9.1