From 64d6948806c3dd7d657c359354212fa3eadfaa8e Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 21 十一月 2025 20:01:07 +0800
Subject: [PATCH] #盘点

---
 src/main/java/com/zy/asrs/entity/CheckOrderDetl.java             |    6 +-
 src/main/webapp/views/checkOrder/checkOrder.html                 |    3 +
 src/main/java/com/zy/asrs/controller/CheckOrderController.java   |   47 ++++++++++++---
 src/main/webapp/static/js/checkOrder/checkOrder.js               |   50 ++++++++++++++++
 src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java |   47 +++++++++++++++
 5 files changed, 141 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/CheckOrderController.java b/src/main/java/com/zy/asrs/controller/CheckOrderController.java
index 8194bf9..0212f1d 100644
--- a/src/main/java/com/zy/asrs/controller/CheckOrderController.java
+++ b/src/main/java/com/zy/asrs/controller/CheckOrderController.java
@@ -1,5 +1,7 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -10,8 +12,10 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CheckTaskListParam;
 import com.zy.asrs.entity.param.OrderDomainParam;
+import com.zy.asrs.entity.result.CheckOrderExportDTO;
 import com.zy.asrs.service.*;
 import com.core.annotations.ManagerAuth;
+import com.zy.common.entity.NodeExcel;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.LocDto;
 import com.zy.common.web.BaseController;
@@ -19,6 +23,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
 
@@ -247,15 +253,38 @@
 //        return R.ok();
 //    }
 
-    @RequestMapping(value = "/checkOrder/export/auth")
-    @ManagerAuth
-    public R export(@RequestBody JSONObject param){
-        EntityWrapper<CheckOrder> wrapper = new EntityWrapper<>();
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        Map<String, Object> map = excludeTrash(param.getJSONObject("checkOrder"));
-        convert(map, wrapper);
-        List<CheckOrder> list = checkOrderService.selectList(wrapper);
-        return R.ok(exportSupport(list, fields));
+
+
+    @PostMapping(value = "/checkOrder/export/auth")
+    @ManagerAuth(memo = "鐩樼偣鍗曞鍑�")
+    public void export(@RequestParam("orderId") Long orderId, HttpServletResponse response) throws IOException {
+        CheckOrder checkOrder = checkOrderService.selectById(orderId);
+        if (Cools.isEmpty(checkOrder)) {
+            throw new CoolException("鏁版嵁閿欒");
+        }
+        List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId));
+
+        ArrayList<CheckOrderExportDTO> checkOrderExportDTOS = new ArrayList<>();
+        for (CheckOrderDetl checkOrderDetl : checkOrderDetls) {
+            CheckOrderExportDTO checkOrderExportDTO = new CheckOrderExportDTO();
+            checkOrderExportDTO.sync(checkOrderDetl);
+            checkOrderExportDTOS.add(checkOrderExportDTO);
+        }
+
+        String fileName = "鐩樼偣宸紓鍗昣"+checkOrder.getOrderNo() + ".xlsx";
+
+        // 璁剧疆鍝嶅簲澶达紝鎸囧畾鏂囦欢鍚�
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        // 闃叉涓枃涔辩爜
+        fileName = java.net.URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
+        response.setHeader("Content-Disposition", "attachment;filename*=" + fileName);
+
+        EasyExcel.write(response.getOutputStream(), CheckOrderExportDTO.class)
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                .sheet("sheet1")
+                .doWrite(checkOrderExportDTOS);
+
     }
 
     @RequestMapping(value = "/checkOrderQuery/auth")
diff --git a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
index d86d360..c2f3e39 100644
--- a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -489,15 +489,15 @@
 //            null    // [闈炵┖]
 //    );
 
-    public Double getDiffQty() {
+    public BigDecimal getDiffQty() {
         if (null == this.status || this.status == 1  ||  this.status == 0 ) {
-            return 0D;
+            return BigDecimal.ZERO;
         }
         if (null != this.anfme && this.workQty != null) {
 
             BigDecimal subtract = new BigDecimal(this.workQty.toString()).subtract(new BigDecimal(this.anfme.toString()));
 
-            return subtract.doubleValue();
+            return subtract;
         }
 //        if (null != this.anfme && this.qty != null) {
 //            return this.anfme - this.qty;
diff --git a/src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java b/src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java
new file mode 100644
index 0000000..00b46f2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java
@@ -0,0 +1,47 @@
+package com.zy.asrs.entity.result;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.zy.common.utils.Synchro;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@Data
+@EqualsAndHashCode
+@HeadRowHeight(20)
+public class CheckOrderExportDTO {
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "璁㈠崟鍙�"})
+    private String orderNo;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "搴撲綅鍙�"})
+    private String locNo;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "鐗╂枡浠g爜"})
+    private String matnr;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "鐗╂枡鍚嶇О"})
+    private String maktx;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "鐗╂枡瑙勬牸"})
+    private String specs;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "鎵规"})
+    private String batch;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "搴撳瓨鏁伴噺"})
+    private BigDecimal anfme;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "鐩樼偣鏁伴噺"})
+    private BigDecimal workQty;
+
+    @ExcelProperty({"鐩樼偣宸紓鍗�", "宸紓鏁伴噺"})
+    private BigDecimal diffQty;
+
+
+    public void sync(Object source) {
+        Synchro.Copy(source, this);
+    }
+
+}
diff --git a/src/main/webapp/static/js/checkOrder/checkOrder.js b/src/main/webapp/static/js/checkOrder/checkOrder.js
index 0f19c71..33dfa2d 100644
--- a/src/main/webapp/static/js/checkOrder/checkOrder.js
+++ b/src/main/webapp/static/js/checkOrder/checkOrder.js
@@ -96,6 +96,8 @@
             showEditModel(data);
         }else if (layEvent === 'createTask') {
             pakoutPreview(data.id);
+        }else if (layEvent === 'export') {
+            export1(data.id);
         }else if (layEvent === 'del') {
             doDel(data.id);
         } else if (layEvent === 'complete') {
@@ -601,6 +603,54 @@
         })
     }
 
+    function export1(id) {
+        notice.msg('姝e湪瀵煎嚭鏂囦欢......', {icon: 4});
+        $.ajax({
+            url: baseUrl + "/checkOrder/export/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                orderId: id
+            },
+            method: 'POST',
+            xhrFields: {
+                responseType: 'blob'
+            },
+            success: function (data, status, xhr) {
+                notice.destroy();
+                // 浠庡搷搴斿ご鑾峰彇鏂囦欢鍚�
+                var disposition = xhr.getResponseHeader('Content-Disposition');
+                var filename = '鐩樼偣宸紓鍗�.xlsx';
+                if (disposition && disposition.indexOf('filename') !== -1) {
+                    var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
+                    var matches = filenameRegex.exec(disposition);
+                    if (matches != null && matches[1]) {
+                        filename = decodeURIComponent(matches[1].replace(/['"]/g, ''));
+                    }
+                }
+                
+                // 鍒涘缓涓嬭浇閾炬帴
+                var blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
+                var link = document.createElement('a');
+                link.href = window.URL.createObjectURL(blob);
+                link.download = filename;
+                document.body.appendChild(link);
+                link.click();
+                document.body.removeChild(link);
+                window.URL.revokeObjectURL(link.href);
+                
+                layer.msg('瀵煎嚭鎴愬姛', {icon: 1});
+            },
+            error: function (xhr, status, error) {
+                notice.destroy();
+                if (xhr.status === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
+                    layer.msg('瀵煎嚭澶辫触锛�' + error, {icon: 2});
+                }
+            }
+        });
+    }
+
     function pakout(tableCache, layerIndex) {
         // let loadIndex = layer.load(2);
         notice.msg('姝e湪鐢熸垚鐩樼偣鍑哄簱浠诲姟......', {icon: 4});
diff --git a/src/main/webapp/views/checkOrder/checkOrder.html b/src/main/webapp/views/checkOrder/checkOrder.html
index 354848a..d0c64a3 100644
--- a/src/main/webapp/views/checkOrder/checkOrder.html
+++ b/src/main/webapp/views/checkOrder/checkOrder.html
@@ -108,6 +108,9 @@
     {{# if (d.settle == 2 || d.settle == 11) { }}
     <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>
     {{# } }}
+    {{# if (d.settle == 4) { }}
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="export">瀵煎嚭宸紓鍗�</a>
+    {{# } }}
 </script>
 <!-- 琛ㄦ牸鎿嶄綔鍒� -->
 <script type="text/html" id="tbLook">

--
Gitblit v1.9.1