From 1c6659a0f946b15bea84bccb206fe11111ac211e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 10 三月 2021 16:18:48 +0800
Subject: [PATCH] #

---
 src/main/java/zy/cloud/wms/manager/controller/PakoutController.java     |    6 
 src/main/resources/mapper/LocDetlMapper.xml                             |    9 +
 src/main/java/zy/cloud/wms/manager/controller/WorkController.java       |   14 ++
 src/main/java/zy/cloud/wms/common/utils/VersionUtils.java               |   22 +++
 src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java            |    2 
 src/main/java/zy/cloud/wms/manager/service/LocDetlService.java          |    5 
 src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java    |   56 ++++++++
 src/main/java/zy/cloud/wms/manager/service/WorkService.java             |    4 
 src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java |    5 
 src/main/webapp/views/pakout/pakout.html                                |    5 
 src/main/webapp/static/js/pakout/pakout.js                              |  192 +++----------------------------
 11 files changed, 145 insertions(+), 175 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/common/utils/VersionUtils.java b/src/main/java/zy/cloud/wms/common/utils/VersionUtils.java
index 841a436..1de1c1b 100644
--- a/src/main/java/zy/cloud/wms/common/utils/VersionUtils.java
+++ b/src/main/java/zy/cloud/wms/common/utils/VersionUtils.java
@@ -82,4 +82,26 @@
         pakout.setDocNum(locDetl.getDocNum());
     }
 
+    public static void setLocDetl(LocDetl locDetl, Pakout pakout) {
+        locDetl.setNodeId(pakout.getNodeId());
+        locDetl.setLocNo(pakout.getLocNo());
+        locDetl.setZpallet(pakout.getZpallet());
+        locDetl.setAnfme(pakout.getAnfme());
+        locDetl.setMatnr(pakout.getMatnr());
+        locDetl.setMaktx(pakout.getMaktx());
+        locDetl.setName(pakout.getName());
+        locDetl.setSpecs(pakout.getSpecs());
+        locDetl.setModel(pakout.getModel());
+        locDetl.setBatch(pakout.getBatch());
+        locDetl.setUnit(pakout.getUnit());
+        locDetl.setBarcode(pakout.getBarcode());
+        locDetl.setCustName(pakout.getCustName());
+        locDetl.setItemNum(pakout.getItemNum());
+        locDetl.setCount(pakout.getCount());
+        locDetl.setWeight(pakout.getWeight());
+        locDetl.setStatus(1);
+        locDetl.setDocId(pakout.getDocId());
+        locDetl.setDocNum(pakout.getDocNum());
+    }
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java b/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java
index db929bc..bc618a0 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java
@@ -43,7 +43,11 @@
         EntityWrapper<Pakout> wrapper = new EntityWrapper<>();
         excludeTrash(param);
         convert(param, wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        if (!Cools.isEmpty(orderByField)){
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+        } else {
+            wrapper.orderBy("update_time", false);
+        }
         return R.ok(pakoutService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
index 19f92f9..7c826d2 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -95,9 +95,21 @@
     }
 
     @RequestMapping("/pakout/init")
-    @ManagerAuth(memo = "鐢熸垚鍑哄簱鍗�")
+    @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�")
     public R initPakout(@RequestBody List<InitPakoutParam> params) {
         return workService.initPakout(params, getUserId());
     }
 
+
+    @RequestMapping("/hand/control/pakout")
+    @ManagerAuth(memo = "鎵嬪姩澶勭悊鎷h揣鍗�")
+    public R handControlWrkMast(@RequestParam String wrkNo, @RequestParam Integer type){
+        if (type == 1) {
+            return workService.completePakout(wrkNo, getUserId());
+        } else if (type == 2) {
+            return workService.cancelPakout(wrkNo, getUserId());
+        }
+        return R.ok();
+    }
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java
index 3446b58..1f9a5cc 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java
@@ -23,6 +23,8 @@
 
     Integer reduceStock(@Param("nodeId") Long nodeId, @Param("matnr") String matnr, @Param("anfme") Double anfme);
 
+    Integer incrementStock(@Param("nodeId") Long nodeId, @Param("matnr") String matnr, @Param("anfme") Double anfme);
+
     Integer removeStock(@Param("nodeId") Long nodeId, @Param("matnr") String matnr);
 
     List<LocDetl> selectByPrior(@Param("matnr") String matnr, @Param("nodeId") Long nodeId);
diff --git a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
index b5af7d5..d49545d 100644
--- a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -26,6 +26,11 @@
     Boolean reduceStock(Long nodeId, String matnr, Double anfme);
 
     /**
+     * 澧炲姞搴撳瓨
+     */
+    Boolean incrementStock(Long nodeId, String matnr, Double anfme);
+
+    /**
      * 鍒犻櫎搴撳瓨
      * @param nodeId
      * @param matnr
diff --git a/src/main/java/zy/cloud/wms/manager/service/WorkService.java b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
index 0825803..7351e80 100644
--- a/src/main/java/zy/cloud/wms/manager/service/WorkService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
@@ -22,4 +22,8 @@
 
     R initPakout(List<InitPakoutParam> params, Long userId);
 
+    R completePakout(String wrkNo, Long userId);
+
+    R cancelPakout(String wrkNo, Long userId);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
index a5141f7..3cb3441 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
@@ -85,6 +85,11 @@
     }
 
     @Override
+    public Boolean incrementStock(Long nodeId, String matnr, Double anfme) {
+        return this.baseMapper.incrementStock(nodeId, matnr, anfme)>0;
+    }
+
+    @Override
     public Boolean removeStock(Long nodeId, String matnr) {
         return this.baseMapper.removeStock(nodeId, matnr)>0;
     }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
index 30a8371..7266714 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -154,13 +154,63 @@
                 if (!pakoutService.insert(pakout)) {
                     throw new CoolException("鐢熸垚鎷h揣鍗曞け璐�");
                 }
-                // 淇敼搴撳瓨鏄庣粏鏁伴噺
-                if (!locDetlService.reduceStock(locDetl.getNodeId(), locDetl.getMatnr(), param.getCount())) {
-                    throw new CoolException("淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触");
+                if (param.getCount() > locDetl.getAnfme()) {
+                    throw new CoolException("搴撳瓨涓嶈冻");
+                } else if (param.getCount()<locDetl.getAnfme()) {
+                    // 淇敼搴撳瓨鏄庣粏鏁伴噺
+                    if (!locDetlService.reduceStock(locDetl.getNodeId(), param.getMatnr(), param.getCount())) {
+                        throw new CoolException("淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触");
+                    }
+                } else {
+                    // 鍒犻櫎搴撳瓨鏄庣粏
+                    if (!locDetlService.removeStock(locDetl.getNodeId(), param.getMatnr())) {
+                        throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+                    }
                 }
             }
         }
         return R.ok();
     }
 
+    @Override
+    public R completePakout(String wrkNo, Long userId) {
+        Pakout pakout = pakoutService.selectOne(new EntityWrapper<Pakout>().eq("wrk_no", wrkNo));
+        if (null != pakout) {
+            if (pakoutService.stockOutComplete(wrkNo, null, userId)) {
+                return R.ok("鎷h揣鍗曞凡瀹屾垚");
+            }
+        }
+        return R.error();
+    }
+
+    @Override
+    @Transactional
+    public R cancelPakout(String wrkNo, Long userId) {
+        Pakout pakout = pakoutService.selectOne(new EntityWrapper<Pakout>().eq("wrk_no", wrkNo));
+        if (null != pakout) {
+            LocDetl locDetl = locDetlService.getLocDetl(pakout.getNodeId(), pakout.getMatnr());
+            if (locDetl == null) {
+                LocDetl oldLocDetl = new LocDetl();
+                VersionUtils.setLocDetl(oldLocDetl, pakout);
+                oldLocDetl.setCreateTime(new Date());
+                oldLocDetl.setCreateBy(userId);
+                oldLocDetl.setUpdateTime(new Date());
+                oldLocDetl.setUpdateBy(userId);
+                if (!locDetlService.insert(oldLocDetl)) {
+                    throw new CoolException("鎭㈠搴撳瓨鏄庣粏澶辫触");
+                }
+            } else {
+                if (!locDetlService.incrementStock(locDetl.getNodeId(), locDetl.getMatnr(), pakout.getAnfme())) {
+                   throw new CoolException("鎭㈠搴撳瓨鏄庣粏澶辫触");
+                }
+            }
+        } else {
+            return R.error("鎷h揣鍗曞凡澶辨晥锛屽彇娑堝け璐ワ紒");
+        }
+        if (!pakoutService.delete(new EntityWrapper<Pakout>().eq("wrk_no", pakout.getWrkNo()))) {
+            throw new CoolException("鍒犻櫎鎷h揣鍗曞け璐�");
+        }
+        return R.ok("鎷h揣鍗曞凡鍙栨秷");
+    }
+
 }
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 6b51896..0a05582 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -97,6 +97,15 @@
         and matnr = #{matnr}
     </update>
 
+    <update id="incrementStock">
+        update man_loc_detl
+        set anfme = anfme + #{anfme}
+        , update_time = getdate()
+        where 1=1
+        and node_id = #{nodeId}
+        and matnr = #{matnr}
+    </update>
+
     <update id="removeStock">
         delete from man_loc_detl
         where 1=1
diff --git a/src/main/webapp/static/js/pakout/pakout.js b/src/main/webapp/static/js/pakout/pakout.js
index 38f1e1b..3bec522 100644
--- a/src/main/webapp/static/js/pakout/pakout.js
+++ b/src/main/webapp/static/js/pakout/pakout.js
@@ -42,12 +42,12 @@
             ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: true}
             ,{field: 'status$', align: 'center',title: '鐘舵��', hide: true}
             // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳',event: 'createBy', style: 'cursor:pointer'}
-            // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'createTime$', align: 'center',title: '鐢熸垚鏃堕棿'}
             // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳',event: 'updateBy', style: 'cursor:pointer'}
             // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
             ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
 
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:200}
         ]],
         request: {
             pageName: 'curr',
@@ -108,46 +108,6 @@
     table.on('toolbar(pakout)', function (obj) {
         var checkStatus = table.checkStatus(obj.config.id);
         switch(obj.event) {
-            case 'addData':
-                layer.open({
-                    type: 2,
-                    title: '鏂板',
-                    maxmin: true,
-                    area: [top.detailWidth, top.detailHeight],
-                    content: 'pakout_detail.html',
-                    success: function(layero, index){
-                        layer.getChildFrame('#data-detail-submit-edit', index).hide();
-                    	clearFormVal(layer.getChildFrame('#detail', index));
-                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                    }
-                });
-                break;
-            case 'deleteData':
-                var data = checkStatus.data;
-                if (data.length === 0){
-                    layer.msg('璇烽�夋嫨鏁版嵁');
-                } else {
-                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
-                        $.ajax({
-                            url: baseUrl+"/pakout/delete/auth",
-                            headers: {'token': localStorage.getItem('token')},
-                            data: {param: JSON.stringify(data)},
-                            method: 'POST',
-                            traditional:true,
-                            success: function (res) {
-                                if (res.code === 200){
-                                    layer.closeAll();
-                                    tableReload(false);
-                                } else if (res.code === 403){
-                                    top.location.href = baseUrl+"/";
-                                } else {
-                                    layer.msg(res.msg)
-                                }
-                            }
-                        })
-                    });
-                }
-                break;
             case 'exportData':
                 layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
                     var titles=[];
@@ -193,6 +153,27 @@
     table.on('tool(pakout)', function(obj){
         var data = obj.data;
         switch (obj.event) {
+            // 瀹屾垚
+            case 'complete':
+                layer.confirm('纭瀹屾垚璇ョ瑪鎷h揣鍗曪紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
+                    http.post(baseUrl+"/work/hand/control/pakout", {wrkNo: data.wrkNo, type:1}, function (res) {
+                        $(".layui-laypage-btn")[0].click();
+                        layer.msg(data.wrkNo + res.msg);
+                    })
+                    layer.closeAll();
+
+                });
+                break;
+            // 鍙栨秷
+            case 'cancel':
+                layer.confirm('纭鍙栨秷璇ョ瑪鎷h揣鍗曪紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
+                    http.post(baseUrl+"/work/hand/control/pakout", {wrkNo: data.wrkNo, type:2}, function (res) {
+                        $(".layui-laypage-btn")[0].click();
+                        layer.msg(data.wrkNo + res.msg);
+                    })
+                    layer.closeAll();
+                });
+                break;
             // 璇︽儏
             case 'detail':
                 layer.open({
@@ -211,133 +192,6 @@
                         layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                     }
                 });
-                break;
-            // 缂栬緫
-            case 'edit':
-                layer.open({
-                    type: 2,
-                    title: '淇敼',
-                    maxmin: true,
-                    area: [top.detailWidth, top.detailHeight],
-                    content: 'pakout_detail.html',
-                    success: function(layero, index){
-                        layer.getChildFrame('#data-detail-submit-save', index).hide();
-                        setFormVal(layer.getChildFrame('#detail', index), data, false);
-                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
-                        top.convertDisabled(layer.getChildFrame('#wrkNo', index), true);
-                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
-                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
-                    }
-                });
-                break;
-            case 'wrkSts':
-                var param = top.reObject(data).wrkSts;
-                if (param === undefined) {
-                    layer.msg("鏃犳暟鎹�");
-                } else {
-                   layer.open({
-                       type: 2,
-                       title: '宸ヤ綔鐘舵�佽鎯�',
-                       maxmin: true,
-                       area: [top.detailWidth, top.detailHeight],
-                       shadeClose: true,
-                       content: '../wrkSts/wrkSts_detail.html',
-                       success: function(layero, index){
-                           $.ajax({
-                               url: "baseUrl+/wrkSts/"+ param +"/auth",
-                               headers: {'token': localStorage.getItem('token')},
-                               method: 'GET',
-                               success: function (res) {
-                                   if (res.code === 200){
-                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
-                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
-                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
-                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
-                                   } else if (res.code === 403){
-                                       top.location.href = baseUrl+"/";
-                                   }else {
-                                       layer.msg(res.msg)
-                                   }
-                               }
-                           })
-                       }
-                   });
-                }
-                break;
-            case 'createBy':
-                var param = top.reObject(data).createBy;
-                if (param === undefined) {
-                    layer.msg("鏃犳暟鎹�");
-                } else {
-                   layer.open({
-                       type: 2,
-                       title: '娣诲姞浜哄憳璇︽儏',
-                       maxmin: true,
-                       area: [top.detailWidth, top.detailHeight],
-                       shadeClose: true,
-                       content: '../user/user_detail.html',
-                       success: function(layero, index){
-                           $.ajax({
-                               url: "baseUrl+/user/"+ param +"/auth",
-                               headers: {'token': localStorage.getItem('token')},
-                               method: 'GET',
-                               success: function (res) {
-                                   if (res.code === 200){
-                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
-                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
-                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
-                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
-                                   } else if (res.code === 403){
-                                       top.location.href = baseUrl+"/";
-                                   }else {
-                                       layer.msg(res.msg)
-                                   }
-                               }
-                           })
-                       }
-                   });
-                }
-                break;
-            case 'updateBy':
-                var param = top.reObject(data).updateBy;
-                if (param === undefined) {
-                    layer.msg("鏃犳暟鎹�");
-                } else {
-                   layer.open({
-                       type: 2,
-                       title: '淇敼浜哄憳璇︽儏',
-                       maxmin: true,
-                       area: [top.detailWidth, top.detailHeight],
-                       shadeClose: true,
-                       content: '../user/user_detail.html',
-                       success: function(layero, index){
-                           $.ajax({
-                               url: "baseUrl+/user/"+ param +"/auth",
-                               headers: {'token': localStorage.getItem('token')},
-                               method: 'GET',
-                               success: function (res) {
-                                   if (res.code === 200){
-                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
-                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
-                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
-                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
-                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
-                                   } else if (res.code === 403){
-                                       top.location.href = baseUrl+"/";
-                                   }else {
-                                       layer.msg(res.msg)
-                                   }
-                               }
-                           })
-                       }
-                   });
-                }
                 break;
 
         }
diff --git a/src/main/webapp/views/pakout/pakout.html b/src/main/webapp/views/pakout/pakout.html
index ec29f75..83da4cb 100644
--- a/src/main/webapp/views/pakout/pakout.html
+++ b/src/main/webapp/views/pakout/pakout.html
@@ -51,8 +51,11 @@
 </script>
 
 <script type="text/html" id="operate">
+    {{#if (d.wrkSts == 1||d.wrkSts == 2){ }}
+        <a class="layui-btn layui-btn-danger layui-btn-xs btn-complete" lay-event="complete">瀹屾垚</a>
+        <a class="layui-btn layui-btn-primary layui-btn-xs btn-cancel" lay-event="cancel">鍙栨秷</a>
+    {{# } }}
     <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>
-    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a>
 </script>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>

--
Gitblit v1.9.1