From 51889b97a85b070cbb80a5bb2893149c80448d5d Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期二, 30 十二月 2025 16:31:15 +0800
Subject: [PATCH] #导出优化
---
src/main/java/com/zy/asrs/entity/param/ExportParam.java | 17 +++
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 4
src/main/java/com/zy/asrs/service/LocDetlService.java | 1
src/main/java/com/zy/asrs/controller/LocDetlController.java | 113 +++++++++++----------
src/main/webapp/static/js/locDetlStatis/locDetlStatis.js | 60 +++++++----
src/main/webapp/views/locDetlStatis/locDetlStatis.html | 11 ++
src/main/resources/mapper/LocDetlMapper.xml | 74 +++++++++++---
src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html | 11 ++
8 files changed, 195 insertions(+), 96 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/LocDetlController.java b/src/main/java/com/zy/asrs/controller/LocDetlController.java
index c71cc64..ad44284 100644
--- a/src/main/java/com/zy/asrs/controller/LocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -17,6 +17,7 @@
import com.zy.asrs.entity.LocOwner;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.AbnormalLocDetlParam;
+import com.zy.asrs.entity.param.ExportParam;
import com.zy.asrs.entity.result.LocDetlAll;
import com.zy.asrs.entity.result.LocDetlDTO;
import com.zy.asrs.mapper.LocDetlMapper;
@@ -26,7 +27,7 @@
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-
+import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
@@ -297,51 +298,27 @@
}
List<LocDetl> list = locDetlService.selectList(wrapper);
List<LocDetl> result = new ArrayList<>();
-
- Page<LocDetl> groupLocDetl = locDetlService.getStockStatis2(toPage(1, 10000, param, LocDetl.class));
-// for (LocDetl locDetl : groupLocDetl.getRecords()) {
for (LocDetl locDetl : list) {
-// AbnormalLocDetlParam abnormalLocDetlParam = new AbnormalLocDetlParam();
-// Mat mat = matService.selectOne(new EntityWrapper<Mat>()
-// .eq("matnr", locDetl.getMatnr()));
-// if (Cools.isEmpty(mat)) {
-// continue;
-// }
-// if (!Cools.isEmpty(mat.getStoreMax()) || !Cools.isEmpty(mat.getStoreMin())) {
-// abnormalLocDetlParam.setStoreMax(mat.getStoreMax());
-// abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate());
-// abnormalLocDetlParam.setStoreMin(mat.getStoreMin());
-// abnormalLocDetlParam.setAnfme(locDetl.getAnfme());//鏁伴噺
-// abnormalLocDetlParam.setMaktx(mat.getMaktx());//鍟嗗搧鍚嶇О
-// abnormalLocDetlParam.setMatnr(mat.getMatnr());//鍟嗗搧缂栧彿
-// abnormalLocDetlParam.setSpecs(mat.getSpecs());
-// abnormalLocDetlParam.setBatch(locDetl.getBatch());
-// abnormalLocDetlParam.setLocNo(locDetl.getLocNo());//搴撲綅鍙�
-// abnormalLocDetlParam.setZpallet(locDetl.getZpallet());//鎵樼洏鏉$爜
-// abnormalLocDetlParam.setBarcode(locDetl.getStandby2());//鏉$爜upc
-// abnormalLocDetlParam.setUnit(locDetl.getStandby1());//瀹㈡埛po
-// abnormalLocDetlParam.setSku(locDetl.getSku());//瀹㈡埛sku
-// abnormalLocDetlParam.setSupp(locDetl.getSupp());//渚涘簲鍟�
-// abnormalLocDetlParam.setManu(locDetl.getBoxType1());//璐т富
-// abnormalLocDetlParam.setOrderNo(locDetl.getOrderNo());//閲囪喘鍗曞彿
-// abnormalLocDetlParam.setMemo(locDetl.getMemo());//澶囨敞
-// abnormalLocDetlParam.setModiTime(locDetl.getModiTime());//淇敼鏃堕棿
-// SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd");
-// Date maxDate = simple.parse(locDetl.getBatch());
-// long time = maxDate.getTime();
-// Date now = new Date();
-// long time1 = now.getTime();
-// abnormalLocDetlParam.setNowTime((int) ((time1 - time) / (1000 * 60 * 60 * 24)));
-
-// if (!Cools.isEmpty(mat.getStoreMax()) && locDetl.getAnfme() > mat.getStoreMax()) {
- result.add(locDetl);
-// } else if (!Cools.isEmpty(mat.getStoreMin()) && locDetl.getAnfme() < mat.getStoreMin()) {
-// result.add(abnormalLocDetlParam);
-// }
-// }
+ result.add(locDetl);
}
return R.ok(exportSupport(result, fields));
}
+//
+// @RequestMapping(value = "/locDetl/statis/export/auth")
+// @ManagerAuth(memo = "搴撳瓨缁熻瀵煎嚭锛堝綋鍓嶇瓫閫夋潯浠讹級")
+// public R statisExport(@RequestBody JSONObject json) {
+// // 鑾峰彇鍓嶇浼犵殑瀛楁鍒楄〃
+// List<String> fields = JSONObject.parseArray(json.getJSONArray("fields").toJSONString(), String.class);
+//
+// // 鑾峰彇鎼滅储鍙傛暟锛岃浆鎴� DTO
+// ExportParam param = json.getJSONObject("locDetl").toJavaObject(ExportParam.class);
+//
+// // 鐩存帴璋冪敤 Mapper 鏂规硶锛堝叏閲忔暟鎹紝涓嶅垎椤碉級
+// List<LocDetl> list = locDetlMapper.selectStatisForExport(param);
+//
+// // 瀵煎嚭
+// return R.ok(exportSupport(list, fields));
+// }
@RequestMapping(value = "/locDetl/selectOwner/list/auth")
@ManagerAuth
@@ -430,29 +407,57 @@
}
return R.ok().add(stockStatis);
}
+ @RequestMapping(value = "/locDetl/statis/export/auth")
+ @ManagerAuth(memo = "搴撳瓨缁熻瀵煎嚭")
+ public R statisExport(@RequestBody JSONObject json) {
+ // 鑾峰彇鎼滅储鍙傛暟
+ ExportParam param = json.getJSONObject("locDetl").toJavaObject(ExportParam.class);
- @Autowired
- private LocDetlMapper LocDetlMapper;
+ // 鏌ヨ鍏ㄩ噺姹囨�绘暟鎹�
+ List<LocDetl> list = locDetlMapper.selectStockStatisExport(param);
- @RequestMapping(value = "/locDetl/statis/export")
-// @ManagerAuth
- public void statisExport(HttpServletResponse response) throws IOException {
- List<LocDetl> excel = LocDetlMapper.getStockStatisExcel();
- for (LocDetl locDetl : excel) {
+ // 鍚屾鐗╂枡淇℃伅锛堜繚鎸佸師鏈夐�昏緫锛�
+ for (LocDetl locDetl : list) {
Mat mat = matService.selectByMatnr(locDetl.getMatnr());
if (mat != null) {
locDetl.sync(mat);
}
}
+
+ // 鐩存帴杩斿洖 JSON 鏁版嵁鏁扮粍
+ return R.ok(list); // 鎴� R.ok().put("data", list)
+ }
+ private void exportExcel(HttpServletResponse response, List<LocDetl> list, List<String> fields, String fileName) throws Exception {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
- String fileName = URLEncoder.encode("搴撳瓨鏄庣粏缁熻鎶ヨ〃", "UTF-8");
- response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
+
EasyExcel.write(response.getOutputStream(), LocDetl.class)
- .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
- .sheet("琛�1")
- .doWrite(excel);
+ .sheet("搴撳瓨缁熻")
+ .doWrite(list);
}
+ @Autowired
+ private LocDetlMapper LocDetlMapper;
+
+// @RequestMapping(value = "/locDetl/statis/export")
+//// @ManagerAuth
+// public void statisExport(HttpServletResponse response) throws IOException {
+// List<LocDetl> excel = LocDetlMapper.getStockStatisExcel();
+// for (LocDetl locDetl : excel) {
+// Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+// if (mat != null) {
+// locDetl.sync(mat);
+// }
+// }
+// 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(), LocDetl.class)
+// .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+// .sheet("琛�1")
+// .doWrite(excel);
+// }
/**
* 鑾峰彇搴撳瓨鎬绘暟
diff --git a/src/main/java/com/zy/asrs/entity/param/ExportParam.java b/src/main/java/com/zy/asrs/entity/param/ExportParam.java
new file mode 100644
index 0000000..6bad5d7
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/ExportParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+import com.zy.common.utils.Synchro;
+import lombok.Data;
+
+@Data
+public class ExportParam {
+ private Double anfme;
+ private String matnr;
+ private String standby1;
+ private String standby2;
+ private String boxType3;
+
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index f72dbe8..71c9d85 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.param.ExportParam;
import com.zy.asrs.entity.result.LocDetlAll;
import com.zy.asrs.entity.result.LocDetlDTO;
import com.zy.asrs.entity.result.StockVo;
@@ -52,7 +53,8 @@
List<String> selectSameDetlTodayBatch(@Param("matnr") String matnr,@Param("batch") String batch, @Param("start") Integer start, @Param("end") Integer end);
List<LocDetl> getStockStatis(Map<String, Object> map);
-
+ List<LocDetl> selectStatisForExport(ExportParam param);
+ List<LocDetl> selectStockStatisExport( ExportParam param);
Integer getStockStatisCount(Map<String, Object> map);
List<LocDetl> getStockStatis2(Map<String, Object> map);
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index dfce28d..81c9de2 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -54,6 +54,7 @@
List<String> getSameDetlToday(String matnr, String batch, Integer start, Integer end);
Page<LocDetl> getStockStatis(Page<LocDetl> page);
+// List<LocDetl> getStockStatisList(Page<LocDetl> page);
Double getSumAnfme(String matnr);
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index aada17d..d32628d 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -358,7 +358,22 @@
and a.standby3 like '%' + #{standby3} + '%'
</if>
<if test="boxType3!=null and boxType3!='' ">
- and a.boxType3 like '%' + #{boxType3} + '%'
+ and a.box_type3 like '%' + #{boxType3} + '%'
+ </if>
+ </sql>
+
+ <sql id="stockOutCondition1">
+ <if test="matnr!=null and matnr!='' ">
+ and a.matnr like '%' + #{matnr} + '%'
+ </if>
+ <if test="standby1!=null and standby1!='' ">
+ and a.standby1 like '%' + #{standby1} + '%'
+ </if>
+ <if test="standby2!=null and standby2!='' ">
+ and a.standby2 like '%' + #{standby2} + '%'
+ </if>
+ <if test="boxType3!=null and boxType3!='' ">
+ and a.box_type3 like '%' + #{boxType3} + '%'
</if>
</sql>
@@ -386,21 +401,48 @@
<include refid="stockOutCondition"></include>
</select>
- <select id="getStockStatis" resultType="com.zy.asrs.entity.LocDetl">
- select * from
- (
- select
- ROW_NUMBER() over (order by sum(a.anfme) desc) as row
- , a.matnr
- , a.batch
- , a.standby1
- , a.standby2
- , sum(a.anfme) as anfme
- from asr_loc_detl a
- where 1=1
- <include refid="stockOutCondition"></include>
- group by a.matnr, a.batch, a.standby1, a.standby2
- ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+ <select id="getStockStatis" resultMap="BaseResultMap">
+ SELECT * FROM (
+ SELECT
+ ROW_NUMBER() OVER (ORDER BY SUM(a.anfme) DESC) AS row,
+ a.matnr,
+ a.batch,
+ a.standby1,
+ a.standby2,
+ MAX(a.box_type3) AS box_type3, -- 鍏抽敭锛氱敤 MAX 閬垮厤 null 鎴栦笉纭畾鎬�
+ SUM(a.anfme) AS anfme
+ FROM asr_loc_detl a
+ WHERE 1=1
+ <include refid="stockOutCondition"/>
+ GROUP BY
+ a.matnr,
+ a.batch,
+ a.standby1,
+ a.standby2,
+ a.box_type3 -- 淇濈暀锛屽洜涓轰笟鍔¢渶瑕佹寜閲囪喘鍗曞尯鍒�
+ ) t
+ WHERE t.row BETWEEN ((#{pageNumber}-1)*#{pageSize}+1) AND (#{pageNumber}*#{pageSize})
+ </select>
+
+ <!-- 搴撳瓨缁熻瀵煎嚭锛氬叏閲忔眹鎬绘暟鎹紙涓嶅垎椤碉級 -->
+ <select id="selectStockStatisExport" resultMap="BaseResultMap">
+ SELECT
+ a.matnr,
+ a.batch,
+ a.standby1,
+ a.standby2,
+ MAX(a.box_type3) AS box_type3,
+ SUM(a.anfme) AS anfme
+ FROM asr_loc_detl a
+ WHERE 1=1
+ <include refid="stockOutCondition1"/>
+ GROUP BY
+ a.matnr,
+ a.batch,
+ a.standby1,
+ a.standby2,
+ a.box_type3
+ ORDER BY SUM(a.anfme) DESC
</select>
<select id="getStockStatisCount" parameterType="java.util.Map" resultType="java.lang.Integer">
diff --git a/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js b/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
index fd1da33..a1adf70 100644
--- a/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
+++ b/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
@@ -5,6 +5,8 @@
];
arrRemove(detlCols, "field", "anfme")
arrRemove(detlCols, "field", "zpallet")
+ arrRemove(detlCols, "field", "orderNo")
+ arrRemove(detlCols, "field", "memo")
cols.push.apply(cols, detlCols);
// cols.push({field: 'anfme', align: 'center',title: '鏁伴噺', style: 'font-weight: bold'}
// )
@@ -103,45 +105,55 @@
var checkStatus = table.checkStatus(obj.config.id);
switch(obj.event) {
case 'exportAll':
- layer.closeAll();
- layer.load(1, {shade: [0.1,'#fff']});
- location.href = baseUrl + "/locDetl/statis/export";
- layer.closeAll('loading');
- 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);
- }
- });
+ layer.confirm('纭畾瀵煎嚭Excel鍚楋紵', {shadeClose: true}, function(){
+ // 鏀堕泦鎼滅储鏉′欢
var exportData = {};
$.each($('#search-box [name]').serializeArray(), function() {
exportData[this.name] = this.value;
});
+
var param = {
- 'locDetl': exportData,
- 'fields': fields
+ locDetl: exportData
};
+
$.ajax({
- url: baseUrl+"/locDetl/export/auth",
+ url: baseUrl + "/locDetl/statis/export/auth",
headers: {'token': localStorage.getItem('token')},
data: JSON.stringify(param),
- dataType:'json',
- contentType:'application/json;charset=UTF-8',
+ dataType: 'json',
+ contentType: 'application/json;charset=UTF-8',
method: 'POST',
success: function (res) {
layer.closeAll();
- if (res.code === 200) {
- table.exportFile(titles,res.data,'xls');
+ if (res.code === 200 && res.data && res.data.length > 0) {
+ var titles = ['搴撳瓨鏁伴噺', '鍟嗗搧缂栧彿', '鍟嗗搧鍚嶇О', '閲囪喘鍗曞彿', '鏉$爜UPC', '鍗曠鍑�閲�(kg)', '瀹㈡埛PO'];
+ var fieldKeys = ['anfme', 'matnr', 'maktx', 'boxType3', 'standby2', 'weight', 'standby1'];
+
+ var exportData = res.data.map(function(item) {
+ return [
+ item.anfme || '',
+ item.matnr || '',
+ item.maktx || '', // 濡傛灉 maktx 涓虹┖鍙粯璁�
+ item.boxType3 || '',
+ item.standby2 || '',
+ item.weight || '',
+ item.standby1 || '' // 濡傚瓧娈垫槸 order_no 鏀规垚 item.order_no
+ ];
+ });
+
+ table.exportFile(titles, exportData, 'xls');
+ layer.msg('瀵煎嚭鎴愬姛锛屽叡 ' + res.data.length + ' 鏉℃暟鎹�', {icon: 1});
+ } else if (res.code === 200) {
+ layer.msg('娌℃湁绗﹀悎鏉′欢鐨勬暟鎹彲瀵煎嚭', {icon: 2});
} else if (res.code === 403) {
- top.location.href = baseUrl+"/";
+ top.location.href = baseUrl + "/";
} else {
- layer.msg(res.msg)
+ layer.msg(res.msg || '瀵煎嚭澶辫触');
}
+ },
+ error: function() {
+ layer.closeAll();
+ layer.msg('缃戠粶閿欒锛屽鍑哄け璐�');
}
});
});
diff --git a/src/main/webapp/views/locDetlStatis/locDetlStatis.html b/src/main/webapp/views/locDetlStatis/locDetlStatis.html
index a312e9c..93578b4 100644
--- a/src/main/webapp/views/locDetlStatis/locDetlStatis.html
+++ b/src/main/webapp/views/locDetlStatis/locDetlStatis.html
@@ -16,7 +16,16 @@
<div id="search-box" class="layui-form layui-card-header">
<div class="layui-inline">
<div class="layui-input-inline">
- <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off">
+ <input class="layui-input" type="text" name="matnr" placeholder="SKU" autocomplete="off">
+ </div>
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="boxType3" placeholder="閲囪喘鍗曞彿" autocomplete="off">
+ </div>
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="standby2" placeholder="UPC" autocomplete="off">
+ </div>
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="standby1" placeholder="PO" autocomplete="off">
</div>
</div>
<!-- 寰呮坊鍔� -->
diff --git a/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html b/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html
index bf74c2a..0467e6c 100644
--- a/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html
+++ b/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html
@@ -430,6 +430,17 @@
this.getTableDataA();
}, 10000);
},
+ handleDetailSearch() {
+ // 瑙﹀彂璁$畻灞炴�ч噸鏂拌绠楀嵆鍙紝鏃犻渶棰濆鎿嶄綔
+ this.$forceUpdate(); // 鍙�夛紝纭繚绔嬪嵆鍒锋柊锛堥�氬父涓嶉渶瑕侊級
+ },
+
+ // 鏄庣粏鎼滅储閲嶇疆
+ handleDetailReset() {
+ this.detailSearch.standby3 = '';
+ this.detailSearch.boxType3 = '';
+ // 閲嶇疆鍚庤〃鏍艰嚜鍔ㄦ仮澶嶅師鏁版嵁
+ },
// 鑾峰彇涓昏〃A鏁版嵁
getTableDataA() {
--
Gitblit v1.9.1