From 0ee00b5d3cbd625fc9d0e92f88bb327aac6c86e9 Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期六, 15 五月 2021 15:27:34 +0800
Subject: [PATCH] 1.立库任务单入库支持批量组托的功能

---
 src/main/java/com/zy/asrs/entity/param/CombParam.java         |   21 +++++
 src/main/webapp/views/pda/combPro.html                        |   74 +++++++++++-------
 src/main/java/com/zy/asrs/entity/WaitPakinLog.java            |    2 
 src/main/java/com/zy/asrs/entity/WaitPakin.java               |    2 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   84 ++++++++++++++++++++-
 src/main/java/com/zy/asrs/controller/MobileController.java    |   10 ++
 src/main/java/com/zy/asrs/service/MobileService.java          |    5 +
 7 files changed, 164 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index c56e2b5..6d2b05c 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -52,6 +52,16 @@
         return R.ok();
     }
 
+    /**
+     * 缁勬墭-鎵归噺
+     */
+    @RequestMapping("/comb/auth/batch")
+    @ManagerAuth(memo = "缁勬墭-鎵归噺")
+    public R combBatch(@RequestBody CombParam combParam){
+        mobileService.combBatch(combParam, getUserId());
+        return R.ok();
+    }
+
 
     /**
      * 缁勬墭
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index 0c90eff..2df04fb 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -99,7 +99,7 @@
 
     @ApiModelProperty(value= "搴撲綅鍙�")
     @TableField("loc_no")
-    private Date locNo;
+    private String locNo;
 
     @ApiModelProperty(value= "鐘舵��")
     private String status;
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
index 7124fc8..ff28ed5 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
@@ -91,7 +91,7 @@
 
     @ApiModelProperty(value= "搴撲綅鍙�")
     @TableField("loc_no")
-    private Date locNo;
+    private String locNo;
 
     @ApiModelProperty(value= "鐘舵��")
     private String status;
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 199224d..51f4e35 100644
--- a/src/main/java/com/zy/asrs/entity/param/CombParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -47,6 +47,12 @@
         // 鐗╂枡鏁伴噺
         private Double count;
 
+        // 閫氱煡鍗曞彿
+        private String supplier;
+
+        // 鐢熶骇鍗曞彿
+        private String mnemonic;
+
         public String getMatNo() {
             return matNo;
         }
@@ -63,6 +69,21 @@
             this.count = count;
         }
 
+        public String getSupplier() {
+            return supplier;
+        }
+
+        public void setSupplier(String supplier) {
+            this.supplier = supplier;
+        }
+
+        public String getMnemonic() {
+            return mnemonic;
+        }
+
+        public void setMnemonic(String mnemonic) {
+            this.mnemonic = mnemonic;
+        }
     }
 
     public String getBarcode() {
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index c3b6fd3..345e60a 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -10,4 +10,9 @@
      */
     void comb(CombParam param, Long userId);
 
+    /**
+     * 缁勬墭-鎵归噺
+     * @param param
+     */
+    void combBatch(CombParam param, Long userId);
 }
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 cd6121c..3b05adb 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -95,7 +95,7 @@
             // 鍏宠仈閫氱煡鍗曠粍鎵�
             for (CombParam.CombMat combMat : param.getCombMats()) {
                 WaitPakin one = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
-                        .eq("supplier", param.getBillNo())
+                        .eq("supplier", combMat.getSupplier())
                         .eq("matnr", combMat.getMatNo())
                         .isNull("zpallet"));
                 if (one == null) {
@@ -115,24 +115,25 @@
                 waitPakin.setAppeTime(new Date());
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(new Date());
+                waitPakin.setSupplier(combMat.getSupplier());
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鏁版嵁澶辫触");
                 }
                 // 鍑忓皯閫氱煡鍗曚笂璇ョ墿鏂欑粍鎵樻暟閲�
                 if (waitPakin.getAnfme() >= one.getAnfme()) {
                     waitPakinService.delete(new EntityWrapper<WaitPakin>()
-                            .eq("supplier", param.getBillNo())
+                            .eq("supplier", combMat.getSupplier())
                             .eq("matnr", combMat.getMatNo())
                             .eq("mnemonic", param.getMnemonic())
                             .isNull("zpallet"));
                 } else {
                     Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>();
                     if ("".equals(param.getMnemonic())) {
-                        wrapper.eq("supplier", param.getBillNo())
+                        wrapper.eq("supplier", combMat.getSupplier())
                                 .eq("matnr", combMat.getMatNo())
                                 .isNull("zpallet");
                     } else {
-                        wrapper.eq("supplier", param.getBillNo())
+                        wrapper.eq("supplier", combMat.getSupplier())
                                 .eq("matnr", combMat.getMatNo())
                                 .eq("mnemonic", param.getMnemonic())
                                 .isNull("zpallet");
@@ -153,4 +154,79 @@
 
     }
 
+    @Override
+    @Transactional
+    public void combBatch(CombParam param, Long userId) {
+        if (Cools.isEmpty(param.getBarcode())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getCombMats()) && Cools.isEmpty(param.getProductCode())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        int count = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+                eq("zpallet", param.getBarcode()).eq("io_status", "N"));
+        if (count > 0) {
+            throw new CoolException("鏉$爜鏁版嵁宸插瓨鍦�");
+        }
+        // 鍏宠仈閫氱煡鍗曠粍鎵�
+        for (CombParam.CombMat combMat : param.getCombMats()) {
+            WaitPakin one = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
+                    .eq("supplier", combMat.getSupplier())
+                    .eq("matnr", combMat.getMatNo())
+                    .isNull("zpallet"));
+            if (one == null) {
+                throw new CoolException("閫氱煡鍗曚笉瀛樺湪" + combMat.getMatNo() + "鏁版嵁锛�");
+            }
+            if (combMat.getCount() > one.getAnfme()) {
+                throw new CoolException(combMat.getMatNo() + "鐗╂枡鏁伴噺涓嶈冻锛�");
+            }
+            MatCode matCode = matCodeService.selectById(combMat.getMatNo());
+            if (Cools.isEmpty(matCode)) {
+                throw new CoolException("鐗╂枡鏁版嵁閿欒");
+            }
+            WaitPakin waitPakin = one.clone();
+            waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+            waitPakin.setAnfme(combMat.getCount());  // 鏁伴噺
+            waitPakin.setAppeUser(userId);
+            waitPakin.setAppeTime(new Date());
+            waitPakin.setModiUser(userId);
+            waitPakin.setModiTime(new Date());
+            waitPakin.setSupplier(combMat.getSupplier());
+            if (!waitPakinService.insert(waitPakin)) {
+                throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+            }
+            // 鍑忓皯閫氱煡鍗曚笂璇ョ墿鏂欑粍鎵樻暟閲�
+            if (waitPakin.getAnfme() >= one.getAnfme()) {
+                waitPakinService.delete(new EntityWrapper<WaitPakin>()
+                        .eq("supplier", combMat.getSupplier())
+                        .eq("matnr", combMat.getMatNo())
+                        .eq("mnemonic", combMat.getMnemonic())
+                        .isNull("zpallet"));
+            } else {
+                Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>();
+                if ("".equals(param.getMnemonic())) {
+                    wrapper.eq("supplier", combMat.getSupplier())
+                            .eq("matnr", combMat.getMatNo())
+                            .isNull("zpallet");
+                } else {
+                    wrapper.eq("supplier", combMat.getSupplier())
+                            .eq("matnr", combMat.getMatNo())
+                            .eq("mnemonic", combMat.getMnemonic())
+                            .isNull("zpallet");
+                }
+                WaitPakin pakin = new WaitPakin();
+                pakin.setAnfme(one.getAnfme() - waitPakin.getAnfme());
+                pakin.setSupplier(combMat.getSupplier());
+                pakin.setMatnr(combMat.getMatNo());
+                pakin.setMnemonic(combMat.getMnemonic());
+                if (!waitPakinService.update(pakin, wrapper)) {
+                    throw new CoolException("鏇存柊鏁版嵁澶辫触");
+                }
+
+            }
+
+        }
+
+
+    }
 }
diff --git a/src/main/webapp/views/pda/combPro.html b/src/main/webapp/views/pda/combPro.html
index 95cc57c..7579b01 100644
--- a/src/main/webapp/views/pda/combPro.html
+++ b/src/main/webapp/views/pda/combPro.html
@@ -166,6 +166,8 @@
     }
     var tableIns;
     var countLayer;
+    var matData = [];
+    var sourceData = [];
     layui.use(['table', 'laydate', 'form'], function () {
         var table = layui.table;
         var $ = layui.jquery;
@@ -179,8 +181,8 @@
             limit: 500,
             cellMinWidth: 50,
             cols: [[
-                {field: 'matNo', align: 'center', title: '鐗╂枡缂栫爜',event: 'modify',},
-                {field: 'mnemonic', align: 'center', title: '鐢熶骇鍗曞彿',event: 'modify',},
+                {field: 'matNo', align: 'center', title: '鐗╂枡缂栫爜', event: 'modify',},
+                {field: 'mnemonic', align: 'center', title: '鐢熶骇鍗曞彿', event: 'modify',},
                 {
                     align: 'center',
                     field: 'count',
@@ -189,7 +191,7 @@
                     style: 'cursor: pointer;color: blue',
                     width: 50
                 },
-                {field: 'matName', align: 'center', title: '鐗╂枡鍚嶇О',event: 'modify',}
+                {field: 'matName', align: 'center', title: '鐗╂枡鍚嶇О', event: 'modify',}
             ]],
             done: function (res, curr, count) {
             }
@@ -228,7 +230,7 @@
     }
 
     // 娣诲姞琛ㄦ牸鏁版嵁
-    var matData = [];
+    //    var matData = [];
 
     function addTableData(data) {
         for (var i = 0; i < data.length; i++) {
@@ -241,6 +243,12 @@
             }
             if (toPush) {
                 matData.push(data[i]);
+                sourceData.push({
+                    matNo: data[i].matNo,
+                    count: data[i].count,
+                    supplier: data[i].supplier,
+                    mnemonic: data[i].mnemonic,
+                });
             }
         }
         tableIns.reload({data: matData});
@@ -263,7 +271,7 @@
             return;
         }
         // 璧嬪�煎墠娓呯┖琛ㄦ牸
-        matData = [];
+//        matData = [];
         tableIns.reload({data: matData});
 
         $.ajax({
@@ -277,6 +285,10 @@
                 if (res.code === 200) {
                     if (res.data != null) {
                         addTableData(res.data);
+                        // 寤惰繜1绉掑悗娓呯┖閫氱煡鍗曞彿
+                        setTimeout(function () {
+                            $('#billNo').val("");
+                        }, 500);
                     }
                 } else if (res.code === 403) {
                     top.location.href = baseUrl + "/pda";
@@ -345,6 +357,7 @@
         $('#code').val("");
         $('#billNo').val("");
         matData = [];
+        sourceData = [];
         tableIns.reload({data: matData});
     }
 
@@ -364,31 +377,36 @@
             tips("璇锋彁鍙栫墿鏂�", true);
             return;
         }
-        var billNo = $('#billNo').val();
-        var mnemonic = $('#mnemonic').val();
-        $.ajax({
-            url: baseUrl + "/mobile/comb/auth",
-            headers: {'token': localStorage.getItem('token')},
-            data: JSON.stringify({
-                barcode: barcode,
-                combMats: matData,
-                billNo: billNo,
-                mnemonic: mnemonic,
-            }),
-            contentType: 'application/json;charset=UTF-8',
-            method: 'POST',
-            async: false,
-            success: function (res) {
-                if (res.code === 200) {
-                    reset();
-                    tips("缁勬墭鎴愬姛")
-                } else if (res.code === 403) {
-                    top.location.href = baseUrl + "/pda";
-                } else {
-                    tips(res.msg, true)
+        for (var i = 0; i < matData.length; i++) {
+            for (var j = 0; j < sourceData.length ; j++) {
+                if (matData[i].matNo == sourceData[j].matNo && matData[i].mnemonic == sourceData[j].mnemonic && matData[i].count == sourceData[j].count) {
+                    // 鏁伴噺鎻愰啋
+                    layer.confirm('鏁伴噺鍜屽墿浣欐暟閲忎竴鑷达紝纭畾缁х画缁勬墭鍚�?', function(){
+                        $.ajax({
+                            url: baseUrl + "/mobile/comb/auth/batch",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: JSON.stringify({
+                                barcode: barcode,
+                                combMats: matData,
+                            }),
+                            contentType: 'application/json;charset=UTF-8',
+                            method: 'POST',
+                            async: false,
+                            success: function (res) {
+                                if (res.code === 200) {
+                                    reset();
+                                    tips("缁勬墭鎴愬姛")
+                                } else if (res.code === 403) {
+                                    top.location.href = baseUrl + "/pda";
+                                } else {
+                                    tips(res.msg, true)
+                                }
+                            }
+                        })
+                    });
                 }
             }
-        })
+        }
     }
 
     /**

--
Gitblit v1.9.1