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"></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