From 7f9ad8362df4f5c0ddf652055002e1a4cef2b06b Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 05 九月 2024 16:46:29 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js                  |   56 +++++++++++
 zy-asrs-wms/src/main/webapp/views/locInPrintMat/locInPrintMat.html                    |   42 +++++++-
 zy-asrs-common/src/main/java/com/zy/asrs/common/utils/LocInPrintMatExcelListener.java |  143 ++++++++++++++++++++++++++++
 zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/LocInPrintMatExcel.java |   23 ++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java               |   28 +++++
 5 files changed, 285 insertions(+), 7 deletions(-)

diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/LocInPrintMatExcel.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/LocInPrintMatExcel.java
new file mode 100644
index 0000000..6d298a4
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/LocInPrintMatExcel.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.common.domain.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.zy.asrs.common.wms.entity.Mat;
+import lombok.Data;
+
+/**
+ * 0.A 1.B 2.C 3.D 4.E 5.F 6.G 7.H 8.I
+ * 9.J 10.K 11.L 12.M 13.N 14.O 15.P 16.Q 17.R 18.S
+ * 19.T 20.U 21.V 22.W 23.X 24.Y 25.Z
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class LocInPrintMatExcel extends Mat {
+    @ExcelProperty(index = 0, value = "鍝佸彿")
+    private String matnr;
+    @ExcelProperty(index = 1, value = "鍝佸悕")
+    private String matax;
+    @ExcelProperty(index = 2, value = "鎵撳嵃鏁伴噺")
+    private String anfme;
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/LocInPrintMatExcelListener.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/LocInPrintMatExcelListener.java
new file mode 100644
index 0000000..56512a2
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/LocInPrintMatExcelListener.java
@@ -0,0 +1,143 @@
+package com.zy.asrs.common.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.generator.config.IFileCreate;
+import com.zy.asrs.common.domain.entity.LocInPrintMatExcel;
+import com.zy.asrs.common.wms.entity.LocInPrintMat;
+import com.zy.asrs.common.wms.service.LocInPrintMatService;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.framework.exception.CoolException;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by vincent on 2019-11-25
+ */
+@Slf4j
+public class LocInPrintMatExcelListener extends AnalysisEventListener<LocInPrintMatExcel> {
+
+    private int total = 0;
+    private int totalAnfme = 0;
+    private Long userId;
+    private Long hostId;
+    List<String[]> OutLocBoxCs = new ArrayList<>();
+
+    public LocInPrintMatExcelListener() {
+    }
+
+    public LocInPrintMatExcelListener(Long userId, Long hostId) {
+        this.userId = userId;
+        this.hostId = hostId;
+    }
+
+    /**
+     * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+     */
+    private static final int BATCH_COUNT = 50;
+
+    private final List<LocInPrintMatExcel> list = new ArrayList<>();
+
+    /**
+     * 杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+     */
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+    }
+
+    /**
+     * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+     */
+    @Override
+    public void invoke(LocInPrintMatExcel excel, AnalysisContext ctx) {
+        String matnr = "";
+        try{
+            matnr =  excel.getMatnr();
+            if (Cools.isEmpty(matnr)){
+                throw new CoolException("鍝佸彿鍙傛暟涓虹┖");
+            }
+        } catch (Exception e){
+            throw new CoolException("鍝佸彿鍙傛暟涓虹┖");
+        }
+        String matax = "";
+        try{
+            matax =  excel.getMatax();
+        } catch (Exception e){
+            matax = "";
+        }
+        String anfme = "1";
+        try{
+            String anfme1 = excel.getAnfme();
+            try{
+                Integer anfmeInt = Integer.parseInt(anfme1);
+                if (!Cools.isEmpty(anfmeInt) && anfmeInt>1){
+                    anfme = anfmeInt.toString();
+                } else {
+                    anfme =  "1";
+                }
+            } catch (Exception e){
+                anfme =  "1";
+            }
+        } catch (Exception e){
+            anfme = "1";
+        }
+        String[] s=new String[3];
+        s[0] = matnr;
+        s[1] = matax;
+        s[2] = anfme;
+        OutLocBoxCs.add(s);
+        total++;
+        totalAnfme = totalAnfme+Integer.parseInt(anfme);
+    }
+
+    /**
+     * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡璋冪敤
+     * 閫傚悎浜嬪姟
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext ctx) {
+        if (!Cools.isEmpty(OutLocBoxCs) && OutLocBoxCs.size() != 0) {
+            LocInPrintMatService locInPrintMatService = SpringUtils.getBean(LocInPrintMatService.class);
+            Date now = new Date();
+            for (String[] outLocBoxC:OutLocBoxCs){
+                String matnr = outLocBoxC[0];
+                String matax = outLocBoxC[1];
+                String anfme = outLocBoxC[2];
+                Integer intAnfme = 1;
+                try{
+                    Integer intAnfme1 = Integer.parseInt(anfme);
+                    if (!Cools.isEmpty(intAnfme1) && intAnfme1 > 1){
+                        intAnfme = intAnfme1;
+                    }
+                } catch (Exception e){
+                }
+                for (int i = 0 ; i < intAnfme ; i++){
+                    LocInPrintMat locInPrintMat = new LocInPrintMat();
+                    locInPrintMat.setMatnr(matnr);
+                    locInPrintMat.setMaktx(matax);
+                    locInPrintMat.setCreateBy(userId);
+                    locInPrintMat.setUpdateBy(userId);
+                    locInPrintMat.setCreateTime(now);
+                    locInPrintMat.setUpdateTime(now);
+                    locInPrintMatService.save(locInPrintMat);
+                }
+
+            }
+
+        }
+
+        log.info("鏂板{}绉嶅緟鎵撳嵃鐗╂枡淇℃伅锛屽叡鐢熸垚{}鏉″緟鎵撳嵃鏉$爜锛�", total,totalAnfme);
+    }
+
+    public int[] getTotal() {
+        return new int[]{total,totalAnfme};
+    }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java
index ea9196f..157d8ff 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.common.domain.CodeRes;
+import com.zy.asrs.common.domain.entity.LocInPrintMatExcel;
 import com.zy.asrs.common.domain.entity.MatExcel;
 import com.zy.asrs.common.domain.entity.MatPrint;
 import com.zy.asrs.common.utils.*;
@@ -296,4 +297,31 @@
         return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉″晢鍝佹暟鎹�");
     }
 
+
+    /**
+     * excel瀵煎叆妯℃澘涓嬭浇
+     */
+    @RequestMapping(value = "/out/loc/box/excel/import/mould")
+    public void outLocBoxExcelImportMould(HttpServletResponse response) throws IOException {
+        List<LocInPrintMatExcel> excels = new ArrayList<>();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode("瀵煎叆寰呮墦鍗扮墿鏂欐ā鏉�", "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        EasyExcel.write(response.getOutputStream(), LocInPrintMatExcel.class)
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                .sheet("寰呮墦鍗扮墿鏂欐ā鏉�")
+                .doWrite(excels);
+    }
+
+    // excel瀵煎叆
+    @PostMapping(value = "/out/loc/box/excel/import/auth")
+    @ManagerAuth(memo = "瀵煎叆寰呮墦鍗扮墿鏂欐ā鏉�")
+    @Transactional
+    public R outLocBoxExcelImport(MultipartFile file) throws IOException {
+        LocInPrintMatExcelListener listener = new LocInPrintMatExcelListener(getUserId(), getHostId());
+        EasyExcel.read(file.getInputStream(), LocInPrintMatExcel.class, listener).sheet().doRead();
+        return R.ok("鎴愬姛瀵煎叆"+listener.getTotal()[0]+"绉嶅緟鎵撳嵃鐗╂枡淇℃伅锛屽叡鐢熸垚"+listener.getTotal()[1]+"鏉″緟鎵撳嵃鏉$爜锛�");
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js b/zy-asrs-wms/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js
index 7461fd9..8ddbe16 100644
--- a/zy-asrs-wms/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js
+++ b/zy-asrs-wms/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js
@@ -1,5 +1,6 @@
 var pageCurr;
 var pageCount = 0;
+var admin;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
 }).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
@@ -8,7 +9,7 @@
     var layer = layui.layer;
     var layDate = layui.laydate;
     var form = layui.form;
-    var admin = layui.admin;
+    admin = layui.admin;
     var xmSelect = layui.xmSelect;
 
     // 鏁版嵁娓叉煋
@@ -326,6 +327,16 @@
 
 });
 
+// excel瀵煎叆妯℃澘涓嬭浇
+function excelMouldDownload(){
+    layer.load(1, {shade: [0.1,'#fff']});
+    location.href = baseUrl + "/out/loc/box/excel/import/mould";
+    layer.closeAll('loading');
+}
+// excel瀵煎叆
+function importExcel() {
+    $("#importExcel").trigger("click");
+}
 // 鍏抽棴鍔ㄤ綔
 $(document).on('click','#data-detail-close', function () {
     parent.layer.closeAll();
@@ -341,3 +352,46 @@
         page: {curr: pageCurr}
     });
 }
+
+function upload(obj){
+    if(!obj.files) {
+        return;
+    }
+    var file = obj.files[0];
+    admin.confirm('纭鍚屾 [' + file.name +'] 鏂囦欢鍚楋紵', function (index) {
+        layer.load(1, {shade: [0.1,'#fff']});
+        var url = baseUrl + "/out/loc/box/excel/import/auth";
+        var form = new FormData();
+        form.append("file", file);
+        xhr = new XMLHttpRequest();
+        xhr.open("post", url, true); //post鏂瑰紡锛寀rl涓烘湇鍔″櫒璇锋眰鍦板潃锛宼rue 璇ュ弬鏁拌瀹氳姹傛槸鍚﹀紓姝ュ鐞嗐��
+        xhr.setRequestHeader('token', localStorage.getItem('token'));
+        xhr.onload = uploadComplete; //璇锋眰瀹屾垚
+        xhr.onerror =  uploadFailed; //璇锋眰澶辫触
+        xhr.onloadend = function () { // // 涓婁紶瀹屾垚閲嶇疆鏂囦欢娴�
+            layer.closeAll('loading');
+            $("#importExcel").val("");
+        };
+        // xhr.upload.onprogress = progressFunction;//銆愪笂浼犺繘搴﹁皟鐢ㄦ柟娉曞疄鐜般��
+        xhr.upload.onloadstart = function(){//涓婁紶寮�濮嬫墽琛屾柟娉�
+            ot = new Date().getTime();   //璁剧疆涓婁紶寮�濮嬫椂闂�
+            oloaded = 0;//璁剧疆涓婁紶寮�濮嬫椂锛屼互涓婁紶鐨勬枃浠跺ぇ灏忎负0
+        };
+        xhr.send(form);
+    }, function(index){
+        $("#importExcel").val("");
+    });
+}
+function uploadComplete(evt) {
+    var res = JSON.parse(evt.target.responseText);
+    if(res.code === 200) {
+        layer.msg(res.msg, {icon: 1});
+        loadTree("");
+    } else {
+        layer.msg(res.msg, {icon: 2});
+    }
+}
+function uploadFailed(evt) {
+    var res = JSON.parse(evt.target.responseText);
+    layer.msg(res.msg, {icon: 2});
+}
diff --git a/zy-asrs-wms/src/main/webapp/views/locInPrintMat/locInPrintMat.html b/zy-asrs-wms/src/main/webapp/views/locInPrintMat/locInPrintMat.html
index 2cfbdb6..9e06f9f 100644
--- a/zy-asrs-wms/src/main/webapp/views/locInPrintMat/locInPrintMat.html
+++ b/zy-asrs-wms/src/main/webapp/views/locInPrintMat/locInPrintMat.html
@@ -72,6 +72,21 @@
             padding: 8px;
         }
 
+        /*----------------------------------*/
+        .function-area {
+            padding: 20px 50px;
+        }
+        .function-btn:hover {
+            background-color: #2b425b;
+            color: #fff;
+        }
+
+        #mat-query {
+            display: none;
+        }
+        #btn-outbound {
+            display: none;
+        }
     </style>
 </head>
 <body>
@@ -109,6 +124,10 @@
                         <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                             <i class="layui-icon">&#xe666;</i>閲嶇疆
                         </button>
+                        <!-- 鍔熻兘鍖� -->
+                    </div>
+                    <div class="layui-inline">
+                        <button class="function-btn layui-btn icon-btn" style="width: auto;float:right;" onclick="excelMouldDownload()">瀵煎叆寰呮墦鍗扮墿鏂欐ā鏉夸笅杞�</button>
                     </div>
                 </div>
             </div>
@@ -117,22 +136,33 @@
     </div>
 </div>
 
+
+
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
         <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
         <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
         <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch">鎵归噺鎵撳嵃</button>
-
+        <button class="layui-btn layui-btn-lg" onclick="importExcel()" style="font-size: 12px;width: auto;">瀵煎叆鐗╂枡鎵撳嵃</button>
+        <span style="display: none"><input id="importExcel" type="file" onchange="upload(this)">瀵煎叆鐗╂枡淇℃伅</span>
         <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
     </div>
 </script>
 
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-    <!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint">鎵撳嵃</a>-->
+<!-- 琛ㄦ牸 -->
+<div style="padding-bottom: 5px; margin-bottom: 45px">
 
-</script>
+    <!-- 澶撮儴 -->
+    <script type="text/html" id="operate">
+        <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+        <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+        <!-- 3.瀵煎叆绠卞彿鍑哄簱 -->
+        <!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint">鎵撳嵃</a>-->
+
+    </script>
+
+    <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
+</div>
 
 <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>

--
Gitblit v1.9.1