From 0079be77d58c5836dfbd6b3603a6580823ec590a Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期日, 12 十一月 2023 16:03:00 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/pakStore/stockOut.html                |    5 +
 src/main/java/com/zy/common/entity/OutLocBoxExcel.java      |   22 +++++
 src/main/java/com/zy/asrs/entity/result/OutLocBoxVo.java    |   24 ++++++
 src/main/java/com/zy/asrs/controller/MatController.java     |   33 ++++++++
 src/main/webapp/static/js/pakStore/stockOut.js              |   58 ++++++++++++++
 src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java |   69 +++++++++++++++++
 6 files changed, 210 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 53e9135..9c53503 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -17,9 +17,11 @@
 import com.zy.asrs.entity.result.KeyValueVo;
 import com.zy.asrs.service.MatService;
 import com.zy.asrs.utils.MatExcelListener;
+import com.zy.asrs.utils.OutLocBoxExcelListener;
 import com.zy.common.CodeRes;
 import com.zy.common.config.AdminInterceptor;
 import com.zy.common.entity.MatExcel;
+import com.zy.common.entity.OutLocBoxExcel;
 import com.zy.common.utils.BarcodeUtils;
 import com.zy.common.utils.QrCode;
 import com.zy.common.web.BaseController;
@@ -331,4 +333,35 @@
     }
 
 
+    /*************************************** 鏁版嵁鐩稿叧 ***********************************************/
+
+    /**
+     * excel瀵煎叆妯℃澘涓嬭浇
+     */
+    @RequestMapping(value = "/out/loc/box/excel/import/mould")
+    public void outLocBoxExcelImportMould(HttpServletResponse response) throws IOException {
+        List<OutLocBoxExcel> 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(), OutLocBoxExcel.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 {
+        OutLocBoxExcelListener listener = new OutLocBoxExcelListener(getUserId());
+        EasyExcel.read(file.getInputStream(), OutLocBoxExcel.class, listener).sheet().doRead();
+        return R.ok("鎴愬姛鍑哄簱"+listener.getTotal()+"鏉″晢鍝佹暟鎹�");
+    }
+
+    /*************************************** xm-select ***********************************************/
+
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/result/OutLocBoxVo.java b/src/main/java/com/zy/asrs/entity/result/OutLocBoxVo.java
new file mode 100644
index 0000000..1ceae65
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/OutLocBoxVo.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.entity.result;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotations.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/4/13
+ */
+@Data
+public class OutLocBoxVo {
+
+    @ExcelProperty(value = "绠卞彿")
+    private String batch;
+
+    public OutLocBoxVo() {
+    }
+
+    public OutLocBoxVo(String batch) {
+        this.batch = batch;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java
new file mode 100644
index 0000000..e0a4fd3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java
@@ -0,0 +1,69 @@
+package com.zy.asrs.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
+import com.zy.common.entity.OutLocBoxExcel;
+import lombok.extern.slf4j.Slf4j;
+
+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 OutLocBoxExcelListener extends AnalysisEventListener<OutLocBoxExcel> {
+
+    private int total = 0;
+    private Long userId;
+    List<String> batchs = new ArrayList<>();
+
+    public OutLocBoxExcelListener() {
+    }
+
+    public OutLocBoxExcelListener(Long userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+     */
+    private static final int BATCH_COUNT = 50;
+
+    private final List<OutLocBoxExcel> list = new ArrayList<>();
+
+    /**
+     * 杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+     */
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+    }
+
+    /**
+     * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+     */
+    @Override
+    public void invoke(OutLocBoxExcel excel, AnalysisContext ctx) {
+        String batch = excel.getBatch();
+        batchs.add(batch);
+        total++;
+    }
+
+    /**
+     * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡璋冪敤
+     * 閫傚悎浜嬪姟
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext ctx) {
+        log.info("鐢熸垚{}鏉″嚭搴撲换鍔★紒", total);
+    }
+
+    public int getTotal() {
+        return total;
+    }
+}
diff --git a/src/main/java/com/zy/common/entity/OutLocBoxExcel.java b/src/main/java/com/zy/common/entity/OutLocBoxExcel.java
new file mode 100644
index 0000000..0f0e7a3
--- /dev/null
+++ b/src/main/java/com/zy/common/entity/OutLocBoxExcel.java
@@ -0,0 +1,22 @@
+package com.zy.common.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.Mat;
+import com.zy.asrs.entity.result.OutLocBoxVo;
+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 OutLocBoxExcel extends OutLocBoxVo {
+
+    private String batch;
+
+}
diff --git a/src/main/webapp/static/js/pakStore/stockOut.js b/src/main/webapp/static/js/pakStore/stockOut.js
index a514dc8..96f5e97 100644
--- a/src/main/webapp/static/js/pakStore/stockOut.js
+++ b/src/main/webapp/static/js/pakStore/stockOut.js
@@ -1,5 +1,6 @@
 var locDetlLayerIdx;
 var locDetlData = [];
+var admin;
 function getCol() {
     var cols = [
         // {field: 'count', align: 'center',title: '鍑哄簱鏁伴噺', edit:'text', width: 130,  style:'color: blue;font-weight: bold'},
@@ -19,7 +20,7 @@
     var $ = layui.jquery;
     var layer = layui.layer;
     var form = layui.form;
-    var admin = layui.admin;
+    admin = layui.admin;
 
     tableIns = table.render({
         elem: '#chooseData',
@@ -175,3 +176,58 @@
     tableIns.reload({data: locDetlData});
     layer.close(locDetlLayerIdx);
 }
+
+
+// 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");
+}
+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});
+}
\ No newline at end of file
diff --git a/src/main/webapp/views/pakStore/stockOut.html b/src/main/webapp/views/pakStore/stockOut.html
index 3e02f19..c20d9e8 100644
--- a/src/main/webapp/views/pakStore/stockOut.html
+++ b/src/main/webapp/views/pakStore/stockOut.html
@@ -84,6 +84,7 @@
 <!-- 鍔熻兘鍖� -->
 <div class="function-area">
     <button id="mat-query" class="function-btn">鎻愬彇搴撳瓨</button>
+    <button class="function-btn" style="width: auto;float:right;" onclick="excelMouldDownload()">瀵煎叆绠卞彿鍑哄簱妯℃澘涓嬭浇</button>
 </div>
 
 <hr>
@@ -102,6 +103,9 @@
                 </select>
                 <!-- 2.鍚姩鍑哄簱 -->
                 <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">鍚姩鍑哄簱</button>
+                <!-- 3.瀵煎叆绠卞彿鍑哄簱 -->
+                <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>
             </div>
         </div>
     </script>
@@ -116,6 +120,7 @@
 
 <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>
+<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>

--
Gitblit v1.9.1