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