From 270b536cea3a42d8c45070ae3775aa4a586e32f2 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期日, 30 六月 2024 14:52:29 +0800
Subject: [PATCH] # bom档案
---
src/main/webapp/static/js/pakStore/locCheckOut.js | 57 +++++++++++
src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java | 150 ++++++++++++++++++++++++++++++
src/main/webapp/views/pakStore/locCheckOut.html | 7 +
src/main/java/com/zy/asrs/entity/result/pandianVo.java | 28 +++++
src/main/java/com/zy/common/entity/pandianExcel.java | 16 +++
src/main/java/com/zy/asrs/controller/MatController.java | 29 +++++
6 files changed, 284 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 9c53503..63aa249 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -22,6 +22,7 @@
import com.zy.common.config.AdminInterceptor;
import com.zy.common.entity.MatExcel;
import com.zy.common.entity.OutLocBoxExcel;
+import com.zy.common.entity.pandianExcel;
import com.zy.common.utils.BarcodeUtils;
import com.zy.common.utils.QrCode;
import com.zy.common.web.BaseController;
@@ -361,6 +362,34 @@
return R.ok("鎴愬姛鍑哄簱"+listener.getTotal()+"鏉″晢鍝佹暟鎹�");
}
+
+ /*********************************************鐩樼偣瀵煎叆瀵煎嚭****************************************************************/
+ /**
+ * excel瀵煎叆妯℃澘涓嬭浇
+ */
+ @RequestMapping(value = "/out/loc/box/excel/import/mould1")
+ public void outLocBoxExcelImportMould1(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(), pandianExcel.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .sheet("鐩樼偣妯℃澘")
+ .doWrite(excels);
+ }
+
+ // excel瀵煎叆
+ @PostMapping(value = "/out/loc/box/excel/import/auth1")
+ @ManagerAuth(memo = "瀵煎叆绠卞彿鐩樼偣鍑哄簱")
+ @Transactional
+ public R outLocBoxExcelImport1(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/pandianVo.java b/src/main/java/com/zy/asrs/entity/result/pandianVo.java
new file mode 100644
index 0000000..466154a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/pandianVo.java
@@ -0,0 +1,28 @@
+package com.zy.asrs.entity.result;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class pandianVo {
+ @ExcelProperty(value = "绠卞彿")
+ private String batch;
+ @ExcelProperty(value = "鍗峰彿")
+ private String model;
+ @ExcelProperty(value = "瑙勬牸鍨嬪彿")
+ private String matnr;
+
+ public pandianVo() {
+ }
+
+ public pandianVo(String batch) {
+ this.batch = batch;
+ }
+
+ public pandianVo(String batch, String model, String matnr) {
+ this.batch = batch;
+ this.model = model;
+ this.matnr = matnr;
+
+ }
+}
diff --git a/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java b/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java
new file mode 100644
index 0000000..dbbbb42
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java
@@ -0,0 +1,150 @@
+package com.zy.asrs.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.service.LocDetlService;
+import com.zy.asrs.service.WorkService;
+import com.zy.common.entity.pandianExcel;
+import com.zy.common.model.LocDto;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+public class OutpandianBoxExeclListener extends AnalysisEventListener<pandianExcel> {
+
+
+ private int total = 0;
+ private Long userId;
+ List<String[]> OutLocBoxCs = new ArrayList<>();
+
+ public OutpandianBoxExeclListener() {
+ }
+
+ public OutpandianBoxExeclListener(Long userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+ */
+ private static final int BATCH_COUNT = 50;
+
+ private final List<pandianExcel> list = new ArrayList<>();
+
+ /**
+ * 杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+ */
+ @Override
+ public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+ }
+
+ /**
+ * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+ */
+ @Override
+ public void invoke(pandianExcel pandianExcel, AnalysisContext analysisContext) {
+ String batch = pandianExcel.getBatch();
+ if (Cools.isEmpty(batch)){
+
+ throw new CoolException("绠卞彿鍙傛暟涓虹┖");
+
+ }
+ String[] s=new String[1];
+ s[0] = batch;
+ OutLocBoxCs.add(s);
+ total++;
+ }
+ /**
+ * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡璋冪敤
+ * 閫傚悎浜嬪姟
+ */
+ @Override
+ @ManagerAuth
+ public void doAfterAllAnalysed(AnalysisContext ctx) {
+ ArrayList<LocDetl> locDetls1 = new ArrayList<>();
+ if (!Cools.isEmpty(OutLocBoxCs) && OutLocBoxCs.size() != 0) {
+ LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
+ WorkService workService = SpringUtils.getBean(WorkService.class);
+ List<LocDto> locDtos = new ArrayList<>();
+ List<String[]> outLocBoxCList = new ArrayList<>();
+ List<String> outLocBoxCNew = new ArrayList<>();
+ for (String[] outLocBoxC:OutLocBoxCs){
+ total--;
+ if (!outLocBoxCNew.contains(outLocBoxC[0])){
+ LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0]));
+ if (Cools.isEmpty(locDetlSou)){
+ throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�");
+ }
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+ .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin()));
+ for (LocDetl locDetl:locDetls){
+ total++;
+ String[] locDetlNow=new String[2];
+ locDetlNow[0] = locDetl.getBatch();
+ locDetlNow[1] = outLocBoxC[1];
+ outLocBoxCList.add(locDetlNow);
+ outLocBoxCNew.add(outLocBoxC[0]);
+ }
+ }
+ }
+ for (String[] outLocBoxC:outLocBoxCList){
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0]));
+ if (Cools.isEmpty(locDetl)){
+ total--;
+ continue;
+ }
+// LocDto locDto = new LocDto(locDetl.getManu(), locDetl.getMatnr(), locDetl.getMaktx(),locDetl.getModel(),locDetl.getSpecs(),
+// locDetl.getBatch(),locDetl.getBrand(),locDetl.getBarcode(), outLocBoxC[1],locDetl.getAnfme());
+// locDto.setOrigin(locDetl.getOrigin());
+// locDto.setWeight(locDetl.getWeight());
+ LocDto locDto = new LocDto(locDetl);
+ locDtos.add(locDto);
+ }
+
+ StockOutParam param = new StockOutParam();
+ List<LocDto> locDtosList = new ArrayList<>();
+ List<String> batchList = new ArrayList<>();
+ for (LocDto locDto : locDtos) {
+ if (!batchList.contains(locDto.getBatch())){
+ batchList.add(locDto.getBatch());
+ locDtosList.add(locDto);
+ }
+ }
+ for (LocDto locDto:locDtosList){
+ LocDetl locDetl = new LocDetl();
+ locDetl.setBrand(locDto.getBrand());
+ locDetl.setLocNo(locDto.getLocNo());
+ locDetl.setAnfme(locDto.getAnfme());
+ locDetl.setMatnr(locDto.getMatnr());
+ locDetl.setBatch(locDto.getBatch());
+ locDetl.setModel(locDto.getModel());
+ locDetl.setSpecs(locDto.getSpecs());
+ locDetl.setZpallet(locDto.getZpallet());
+ locDetl.setOrigin(locDto.getOrigin());
+ locDetl.setWeight(locDto.getWeight());
+
+ locDetls1.add(locDetl);
+ }
+ //if (total>0){
+ // workService.startupFullTakeStoreOrder(param,9999L);
+ //}
+
+ }
+ //return locDetls1;
+ }
+
+ public int getTotal() {
+ return total;
+ }
+
+}
diff --git a/src/main/java/com/zy/common/entity/pandianExcel.java b/src/main/java/com/zy/common/entity/pandianExcel.java
new file mode 100644
index 0000000..a5f8c9b
--- /dev/null
+++ b/src/main/java/com/zy/common/entity/pandianExcel.java
@@ -0,0 +1,16 @@
+package com.zy.common.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.zy.asrs.entity.result.pandianVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ExcelIgnoreUnannotated
+public class pandianExcel extends pandianVo {
+ private String batch;
+
+ private String model;
+
+ private String matnr;
+}
diff --git a/src/main/webapp/static/js/pakStore/locCheckOut.js b/src/main/webapp/static/js/pakStore/locCheckOut.js
index d2e5b58..f8fb271 100644
--- a/src/main/webapp/static/js/pakStore/locCheckOut.js
+++ b/src/main/webapp/static/js/pakStore/locCheckOut.js
@@ -1,6 +1,7 @@
var locDetlLayerIdx;
var tableIns;
var locDetlData = [];
+var admin;
function getCol() {
var cols = [
{field: 'locNo', align: 'center',title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'}
@@ -17,7 +18,7 @@
var layer = layui.layer;
var layDate = layui.laydate;
var form = layui.form;
- var admin = layui.admin;
+ admin = layui.admin;
var tableMerge = layui.tableMerge;
tableIns = table.render({
@@ -136,3 +137,57 @@
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/mould1";
+ 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/auth1";
+ 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/src/main/webapp/views/pakStore/locCheckOut.html b/src/main/webapp/views/pakStore/locCheckOut.html
index 393dfba..c722b69 100644
--- a/src/main/webapp/views/pakStore/locCheckOut.html
+++ b/src/main/webapp/views/pakStore/locCheckOut.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>
@@ -100,8 +101,10 @@
<select id="staNoSelect" lay-verify="required">
<option value="">璇烽�夋嫨绔欑偣</option>
</select>
- <!-- 2.鍚姩鍑哄簱 -->
- <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">鐩樼偣鍑哄簱</button>
+ <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>
--
Gitblit v1.9.1