From 9538400404d7a6a1acb036aa0ce8463400e8f497 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 21 六月 2021 14:05:16 +0800
Subject: [PATCH] 盘点上传

---
 version/v1.0.3/addMenu                                                |    1 
 src/main/webapp/static/js/check/checkUpload.js                        |  177 +++++++++++++++++++++++++++++
 src/main/java/zy/cloud/wms/manager/controller/WorkController.java     |   56 ++++++++
 src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java |   16 ++
 src/main/webapp/views/check/check_upload.html                         |   61 ++++++++++
 5 files changed, 305 insertions(+), 6 deletions(-)

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 f14b33e..5d79466 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -1,16 +1,21 @@
 package zy.cloud.wms.manager.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
+import com.core.exception.CoolException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import zy.cloud.wms.common.model.BillDto;
+import zy.cloud.wms.common.service.erp.ErpService;
 import zy.cloud.wms.common.web.BaseController;
 import zy.cloud.wms.manager.entity.*;
 import zy.cloud.wms.manager.entity.param.*;
@@ -23,6 +28,7 @@
 /**
  * Created by vincent on 2021/2/25
  */
+@Slf4j
 @RestController
 @RequestMapping("/work")
 public class WorkController extends BaseController {
@@ -37,6 +43,9 @@
     private SnowflakeIdWorker snowflakeIdWorker;
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private ErpService erpService;
+
 
     @RequestMapping("/stock/pakin")
     @ManagerAuth(memo = "鍏ュ簱")
@@ -89,7 +98,7 @@
     @RequestMapping("/pakout/get")
     @ManagerAuth(memo = "鑾峰彇鍑哄簱鍗�")
     public R getPakout(@RequestParam String docNumber) {
-        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", docNumber).in("wrk_sts", 1,2));
+        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", docNumber).in("wrk_sts", 1, 2));
         if (Cools.isEmpty(pakouts)) {
             return R.parse(BaseRes.EMPTY);
         }
@@ -101,8 +110,8 @@
         return R.ok().add(Cools
                 .add("number", pakouts.get(0).getDocNum())
                 .add("wrkSts", pakouts.get(0).getWrkSts())
-                .add("wrkSts$", wrkSts==null?"鏈煡":wrkSts.getStsName())
-                .add("custName", Cools.isEmpty(pakouts.get(0).getCustName())?"-":pakouts.get(0).getCustName())
+                .add("wrkSts$", wrkSts == null ? "鏈煡" : wrkSts.getStsName())
+                .add("custName", Cools.isEmpty(pakouts.get(0).getCustName()) ? "-" : pakouts.get(0).getCustName())
                 .add("pakouts", pakouts)
         );
     }
@@ -121,7 +130,7 @@
 
     @RequestMapping("/hand/control/pakout")
     @ManagerAuth(memo = "鎵嬪姩澶勭悊鎷h揣鍗�")
-    public R handControlWrkMast(@RequestParam String wrkNo, @RequestParam Integer type){
+    public R handControlWrkMast(@RequestParam String wrkNo, @RequestParam Integer type) {
         if (type == 1) {
             return workService.completePakout(wrkNo, getUserId());
         } else if (type == 2) {
@@ -178,10 +187,46 @@
         for (Long checkId : checkIds) {
             R r = workService.stockCheckAuditing(checkId, getUserId());
             if (String.valueOf(r.get("code")).equals("200")) {
-                success ++;
+                success++;
             }
         }
         return R.ok("瀹℃牳鎴愬姛鏁伴噺锛�" + success);
+    }
+
+    // 鐩樼偣涓婁紶
+    @RequestMapping("/check/upload")
+    @ManagerAuth(memo = "鐩樼偣涓婁紶")
+    public R checkUpload(@RequestBody CheckUploadParam params) {
+        List<BillDto> dtos = new ArrayList<>();
+        if (params.getMats().size() > 0) {
+            for (Mat matList : params.getMats()) {
+                BillDto dto = new BillDto();
+                dto.setMatnr(matList.getMatnr());
+                dto.setQty(matList.getCount().doubleValue());
+                dtos.add(dto);
+            }
+        } else {
+            throw new CoolException("鏁版嵁寮傚父");
+        }
+        int docId;
+        String docNum;
+        if (params.getType().equals("1")) { // 鐩樼泩
+            docNum = "CS-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+            docId = 14; // 鎶ユ孩鍗�
+        } else if (params.getType().equals("2")) { // 鐩樹簭
+            docNum = "CD-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+            docId = 9;  // 鎶ユ崯鍗�
+        } else {
+            throw new CoolException("鏁版嵁寮傚父");
+        }
+        // erp涓婁紶鐩樼泩鐩樹簭
+        if (!erpService.uploadBill(dtos, docId, docNum)) {
+            throw new CoolException("鏃犳硶涓婃姤鑷砮rp");
+        }
+        String dotsStr = JSON.toJSONString(dtos);
+        log.info("鐩樼偣涓婁紶锛岀被鍨嬶細" + (docId == 14 ? "鐩樼泩" : "鐩樹簭") + "锛屽崟鍙凤細" + docNum + "锛屼笂浼犵墿鏂欐竻鍗�:" + dotsStr);
+        log.info("===============================================================================================");
+        return R.ok().add("涓婃姤鑷砮rp鎴愬姛");
     }
 
     /******************************************************************************************************/
@@ -231,6 +276,7 @@
         List<Item> items = itemService.selectList(new EntityWrapper<Item>().eq("status", 1).orderBy("create_time", false));
         return R.ok().add(items);
     }
+
     // 鑾峰彇鎵�鏈夐」鐩�
     @RequestMapping("/item/all/get/kv")
     @ManagerAuth
diff --git a/src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java b/src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java
new file mode 100644
index 0000000..1fb8b33
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java
@@ -0,0 +1,16 @@
+package zy.cloud.wms.manager.entity.param;
+
+import lombok.Data;
+import zy.cloud.wms.manager.entity.Mat;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/6/21
+ */
+@Data
+public class CheckUploadParam {
+    private String type;
+
+    private List<Mat> mats;
+}
diff --git a/src/main/webapp/static/js/check/checkUpload.js b/src/main/webapp/static/js/check/checkUpload.js
index e69de29..03fd34e 100644
--- a/src/main/webapp/static/js/check/checkUpload.js
+++ b/src/main/webapp/static/js/check/checkUpload.js
@@ -0,0 +1,177 @@
+matCodeData = [];
+var tableIns;
+
+function getCol() {
+    var cols = [
+        {
+            fixed: 'left',
+            field: 'count',
+            title: '鏁伴噺(蹇呭~)',
+            align: 'center',
+            edit: 'text',
+            width: 120,
+            style: 'color: blue;font-weight: bold'
+        }
+    ];
+    cols.push.apply(cols, matCols);
+    cols.push({fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 80})
+    return cols;
+}
+
+layui.use(['table', 'laydate', 'form'], function () {
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+
+    tableIns = table.render({
+        elem: '#chooseData',
+        data: [],
+        even: true,
+        limit: 500,
+        cellMinWidth: 50,
+        toolbar: '#toolbar',
+        cols: [getCol()],
+        done: function (res, curr, count) {
+            limit();
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�-绉婚櫎
+    table.on('tool(chooseData)', function (obj) {
+        var data = obj.data;
+        switch (obj.event) {
+            case 'remove':
+                for (var i = matCodeData.length - 1; i >= 0; i--) {
+                    if (matCodeData[i].matnr === data.matnr) {
+                        matCodeData.splice(i, 1);
+                    }
+                }
+                tableIns.reload({
+                    data: matCodeData, done: function (res) {
+                        limit();
+                        // 瑕嗙洊render鏂规硶鐨刣one
+                    }
+                });
+                break;
+        }
+    });
+
+    // 椤甸潰淇敼
+    table.on('edit(chooseData)', function (obj) {
+        updateMatCodeData(obj.data.matnr, Number(obj.value));
+    });
+
+    // 鎿嶄綔鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        $("#type").val("");
+        form.render();
+        matCodeData = [];
+        tableIns.reload({data: []});
+    });
+
+    // 鎿嶄綔鏍忔彁浜や簨浠�
+    form.on('submit(submit)', function (data) {
+        var type = $("#type").val();
+        if (isEmpty(type)) {
+            layer.msg("璇烽�夋嫨鐩堜簭鎯呭喌");
+            return;
+        }
+        if (!matCodeData || matCodeData.length == 0) {
+            layer.msg("鍟嗗搧淇℃伅涓嶅彲涓虹┖");
+            return;
+        }
+        for (var i = 0; i < matCodeData.length; i++) {
+            if (matCodeData[i].count == 0) {
+                layer.msg("鍟嗗搧" + matCodeData[i].maktx + "鏁伴噺涓嶅彲涓虹┖");
+                return;
+            }
+        }
+        // 璋冪敤涓婁紶erp鎺ュ彛
+        console.log('matCodeData:', matCodeData, ";type:", type);
+        $.ajax({
+            url : baseUrl+'/work/check/upload',
+            headers: {'token': localStorage.getItem('token')},
+            method: 'POST',
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify({
+                mats: matCodeData,
+                type: type,
+            }),
+            success : function(res) {
+                if (res.code == 200) {
+                    layer.msg(res.data)
+                    matCodeData = [];
+                    tableIns.reload({data: []});
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
+                    layer.msg(res.msg, {icon: 2});
+                }
+            }
+        });
+    });
+
+});
+
+
+// 鎻愬彇鐗╂枡
+var matCodeLayerIdx;
+
+function getMat() {
+    matCodeLayerIdx = layer.open({
+        type: 2,
+        title: '鎻愬彇鐗╂枡',
+        maxmin: true,
+        area: [top.detailWidth, top.detailHeight],
+        shadeClose: true,
+        content: '../ioWorks/matQuery.html',
+        success: function (layero, index) {
+        }
+    });
+}
+
+// 娣诲姞琛ㄦ牸鏁版嵁
+function addTableData(data) {
+    for (var i = 0; i < data.length; i++) {
+        let pass = false;
+        for (var j = 0; j < matCodeData.length; j++) {
+            if (data[i].matnr === matCodeData[j].matnr) {
+                pass = true;
+                break;
+            }
+        }
+        if (pass) {
+            data.splice(i--, 1);
+        } else {
+            data[i]["count"] = 0;
+        }
+    }
+    matCodeData.push.apply(matCodeData, data);
+    tableIns.reload({data: matCodeData});
+    layer.close(matCodeLayerIdx);
+}
+
+function updateMatCodeData(matnr, count) {
+    if (isNaN(count)) {
+        layer.msg("璇疯緭鍏ユ暟瀛�");
+    } else {
+        if (count > 0) {
+            for (var i = 0; i < matCodeData.length; i++) {
+                if (matCodeData[i]["matnr"] === matnr) {
+                    matCodeData[i]["count"] = count;
+                }
+            }
+        } else {
+            layer.msg("鏁伴噺蹇呴』澶т簬闆�");
+        }
+    }
+
+    tableIns.reload({
+        data: matCodeData, done: function (res) {
+            limit();
+            // 瑕嗙洊render鏂规硶鐨刣one
+        }
+    });
+}
diff --git a/src/main/webapp/views/check/check_upload.html b/src/main/webapp/views/check/check_upload.html
index 48221d7..0cf8cce 100644
--- a/src/main/webapp/views/check/check_upload.html
+++ b/src/main/webapp/views/check/check_upload.html
@@ -10,8 +10,67 @@
     <link rel="stylesheet" href="../../static/css/cool.css" media="all">
     <link rel="stylesheet" href="../../static/css/common.css" media="all">
 </head>
+<style>
+    .function-btn {
+        font-size: 16px;
+        padding: 1px 1px 1px 1px;
+        width: 100px;
+        height: 50px;
+        border-color: #2b425b;
+        border-radius: 4px;
+        border-width: 2px;
+        background: none;
+        border-style: solid;
+        transition: 0.4s;
+        cursor: pointer;
+        letter-spacing: 3px;
+    }
+
+    .function-btn:hover {
+        background-color: #2b425b;
+        color: #fff;
+    }
+
+    .function-area {
+        padding: 20px 50px;
+    }
+</style>
 <body>
-<div>鐩樼偣涓婁紶</div>
+
+<div>
+    <!-- 鎿嶄綔鏍� -->
+    <div id="search-box" class="layui-form layui-card-header">
+        <div class="layui-inline">
+            <select id="type">
+                <option value="">鐩堜簭鎯呭喌</option>
+                <option value="1">鐩樼泩</option>
+                <option value="2">鐩樹簭</option>
+            </select>
+        </div>
+
+        <!-- 寰呮坊鍔� -->
+        <div id="data-search-btn" class="layui-btn-container layui-form-item">
+            <button style="margin-top: -5px" id="submit" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit
+                    lay-filter="submit">鎻愪氦
+            </button>
+            <button style="margin-top: -5px" id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+        </div>
+    </div>
+    <!-- 鍔熻兘鍖� -->
+    <div class="function-area">
+        <button id="mat-query" class="function-btn" onclick="getMat()">鏂板</button>
+    </div>
+</div>
+<!-- 琛ㄦ牸鍖� -->
+<div>
+    <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
+</div>
+
+<!-- 琛� -->
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">绉婚櫎</a>
+</script>
+
 </body>
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
 <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
diff --git a/version/v1.0.3/addMenu b/version/v1.0.3/addMenu
new file mode 100644
index 0000000..6199ce0
--- /dev/null
+++ b/version/v1.0.3/addMenu
@@ -0,0 +1 @@
+insert into sys_resource(code, name, resource_id, [level], sort, status) values ('check/check_upload.html', '鐩樼偣涓婁紶', 20428, 2, 10, 1)

--
Gitblit v1.9.1