From 5ca5e7de230f92e468cda70000b5aaa1ccb06b8e Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 23 三月 2026 14:03:39 +0800
Subject: [PATCH] 优化平库明细导出逻辑

---
 src/main/webapp/views/manLocDetl/PLocDetl.html                 |    2 
 src/main/java/com/zy/asrs/controller/ManLocDetlController.java |   45 +++-----
 src/main/webapp/static/js/manLocDetl/PLocDetl.js               |  105 +++++++++++---------
 src/main/webapp/static/js/manLocDetl/manLocDetl.js             |  105 +++++++++++---------
 4 files changed, 138 insertions(+), 119 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
index 612634e..6e254a7 100644
--- a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
@@ -15,7 +15,6 @@
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.service.ManLocDetlService;
 import com.zy.asrs.service.MatService;
-import com.zy.common.utils.RoleUtils;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -26,6 +25,8 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLEncoder;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -53,26 +54,14 @@
     @RequestMapping(value = "/manLocDetl/export/auth")
     @ManagerAuth(memo = "搴撲綅鏄庣粏瀵煎嚭")
     public R export(@RequestBody JSONObject param){
-        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
-        EntityWrapper<ManLocDetl> wrapper = new EntityWrapper<>();
-        Map<String, Object> map = excludeTrash(param.getJSONObject("locDetl"));
-        String row = "";
-        if (map.get("row") != null) {
-            String chooseRow = (String) map.get("row");
-            if (chooseRow.length() == 1) {
-                row = "0" + chooseRow;
-                map.remove("row");
-            }else {
-                row = chooseRow;
-                map.remove("row");
-            }
-        }
-        convert(map, wrapper);
-        if (!row.equals("")){
-            wrapper.and()
-                    .where("loc_no like '" +row +"%'");
-        }
-        List<ManLocDetl> list = manLocDetlService.selectList(wrapper);
+        List<String> fields = param.getJSONArray("fields") == null
+                ? Collections.emptyList()
+                : JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> searchParam = param.getJSONObject("locDetl") == null
+                ? new HashMap<>()
+                : excludeTrash(param.getJSONObject("locDetl"));
+        String condition = searchParam.get("condition") == null ? null : String.valueOf(searchParam.remove("condition"));
+        List<ManLocDetl> list = manLocDetlService.selectList(buildWrapper(searchParam, condition));
         return R.ok(exportSupport(list, fields));
     }
 
@@ -130,11 +119,7 @@
                   @RequestParam(required = false)String orderByType,
                   @RequestParam(required = false)String condition,
                   @RequestParam Map<String, Object> param){
-
-        EntityWrapper<ManLocDetl> wrapper = new EntityWrapper<>();
-        excludeTrash(param);
-        convert(param, wrapper);
-        allLike(ManLocDetl.class, param.keySet(), wrapper, condition);
+        EntityWrapper<ManLocDetl> wrapper = buildWrapper(param, condition);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
 
         return R.ok(manLocDetlService.selectPage(new Page<>(curr, limit), wrapper));
@@ -191,5 +176,13 @@
         }
     }
 
+    private EntityWrapper<ManLocDetl> buildWrapper(Map<String, Object> param, String condition) {
+        EntityWrapper<ManLocDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(ManLocDetl.class, param.keySet(), wrapper, condition);
+        return wrapper;
+    }
+
 
 }
diff --git a/src/main/webapp/static/js/manLocDetl/PLocDetl.js b/src/main/webapp/static/js/manLocDetl/PLocDetl.js
index 8682c53..86685d4 100644
--- a/src/main/webapp/static/js/manLocDetl/PLocDetl.js
+++ b/src/main/webapp/static/js/manLocDetl/PLocDetl.js
@@ -80,10 +80,7 @@
 
     // 鐩戝惉鎺掑簭浜嬩欢
     table.on('sort(locDetl)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
+        var searchData = getSearchData();
         searchData['orderByField'] = obj.field;
         searchData['orderByType'] = obj.type;
         tableIns.reload({
@@ -155,43 +152,9 @@
                 }
                 break;
             case 'exportData':
-                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'locDetl': exportData,
-                        'fields': fields
-                    };
-                    var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
-                    $.ajax({
-                        url: baseUrl+"/locDetl/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg)
-                            }
-                        }
-                    });
+                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(confirmIndex){
+                    layer.close(confirmIndex);
+                    exportTableData(obj.config.cols[0], baseUrl+"/manLocDetl/export/auth", table, layer);
                 });
                 break;
         }
@@ -456,11 +419,7 @@
 });
 
 function tableReload(child) {
-    var searchData = {
-    };
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
+    var searchData = getSearchData();
     (child ? parent.tableIns : tableIns).reload({
         where: searchData,
         page: {
@@ -538,3 +497,57 @@
         $("#search").click();
     }
 });
+
+function getSearchData() {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    return searchData;
+}
+
+function getExportColumns(cols) {
+    var titles = [];
+    var fields = [];
+    cols.map(function (col) {
+        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+            titles.push(col.title);
+            fields.push(col.field);
+        }
+    });
+    return {
+        titles: titles,
+        fields: fields
+    };
+}
+
+function exportTableData(cols, exportUrl, table, layer) {
+    var exportColumns = getExportColumns(cols);
+    var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
+    $.ajax({
+        url: exportUrl,
+        headers: {'token': localStorage.getItem('token')},
+        data: JSON.stringify({
+            'locDetl': getSearchData(),
+            'fields': exportColumns.fields
+        }),
+        dataType:'json',
+        contentType:'application/json;charset=UTF-8',
+        method: 'POST',
+        success: function (res) {
+            if (res.code === 200) {
+                table.exportFile(exportColumns.titles, res.data, 'xls');
+            } else if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg);
+            }
+        },
+        error: function () {
+            layer.msg('瀵煎嚭澶辫触锛岃绋嶅悗閲嶈瘯');
+        },
+        complete: function () {
+            layer.close(loadIndex);
+        }
+    });
+}
diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetl.js b/src/main/webapp/static/js/manLocDetl/manLocDetl.js
index ff281b0..7ed6196 100644
--- a/src/main/webapp/static/js/manLocDetl/manLocDetl.js
+++ b/src/main/webapp/static/js/manLocDetl/manLocDetl.js
@@ -98,10 +98,7 @@
 
     // 鐩戝惉鎺掑簭浜嬩欢
     table.on('sort(locDetl)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
+        var searchData = getSearchData();
         searchData['orderByField'] = obj.field;
         searchData['orderByType'] = obj.type;
         tableIns.reload({
@@ -173,43 +170,9 @@
                 }
                 break;
             case 'exportData':
-                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'locDetl': exportData,
-                        'fields': fields
-                    };
-                    var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
-                    $.ajax({
-                        url: baseUrl+"/locDetl/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg)
-                            }
-                        }
-                    });
+                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(confirmIndex){
+                    layer.close(confirmIndex);
+                    exportTableData(obj.config.cols[0], baseUrl+"/manLocDetl/export/auth", table, layer);
                 });
                 break;
         }
@@ -475,11 +438,7 @@
 });
 
 function tableReload(child) {
-    var searchData = {
-    };
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
+    var searchData = getSearchData();
     (child ? parent.tableIns : tableIns).reload({
         where: searchData,
         page: {
@@ -557,3 +516,57 @@
         $("#search").click();
     }
 });
+
+function getSearchData() {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    return searchData;
+}
+
+function getExportColumns(cols) {
+    var titles = [];
+    var fields = [];
+    cols.map(function (col) {
+        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+            titles.push(col.title);
+            fields.push(col.field);
+        }
+    });
+    return {
+        titles: titles,
+        fields: fields
+    };
+}
+
+function exportTableData(cols, exportUrl, table, layer) {
+    var exportColumns = getExportColumns(cols);
+    var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
+    $.ajax({
+        url: exportUrl,
+        headers: {'token': localStorage.getItem('token')},
+        data: JSON.stringify({
+            'locDetl': getSearchData(),
+            'fields': exportColumns.fields
+        }),
+        dataType:'json',
+        contentType:'application/json;charset=UTF-8',
+        method: 'POST',
+        success: function (res) {
+            if (res.code === 200) {
+                table.exportFile(exportColumns.titles, res.data, 'xls');
+            } else if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg);
+            }
+        },
+        error: function () {
+            layer.msg('瀵煎嚭澶辫触锛岃绋嶅悗閲嶈瘯');
+        },
+        complete: function () {
+            layer.close(loadIndex);
+        }
+    });
+}
diff --git a/src/main/webapp/views/manLocDetl/PLocDetl.html b/src/main/webapp/views/manLocDetl/PLocDetl.html
index 991e69c..e61490d 100644
--- a/src/main/webapp/views/manLocDetl/PLocDetl.html
+++ b/src/main/webapp/views/manLocDetl/PLocDetl.html
@@ -56,7 +56,7 @@
 </div>
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">瀵煎嚭</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm"  lay-event="exportData" style="margin-top: 10px">瀵煎嚭</button>
     </div>
 </script>
 

--
Gitblit v1.9.1