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