From 831dbe10d1c0975b0de4251b67b939347b079006 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期四, 20 二月 2025 10:35:01 +0800
Subject: [PATCH] 单据管理多选,全选excel导出
---
src/main/java/com/zy/asrs/controller/OrderController.java | 82 ++++++++++++-
src/main/java/com/zy/asrs/entity/OrderDetlExcelVo.java | 92 +-------------
src/main/webapp/static/js/order/order.js | 90 ++++++++++++---
src/main/java/com/zy/asrs/entity/param/DefinedExcelExportParam.java | 33 +++++
src/main/webapp/views/order/order.html | 4
5 files changed, 189 insertions(+), 112 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index 7e97795..c73d459 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -10,6 +10,7 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.DefinedExcelExportParam;
import com.zy.asrs.entity.param.OrderDomainParam;
import com.zy.asrs.entity.result.OrderDetlVo;
import com.zy.asrs.mapper.OrderDetlMapper;
@@ -19,6 +20,7 @@
import com.zy.common.web.BaseController;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -102,7 +104,7 @@
// 璁㈠崟琛ㄥ彧瀛樹簡鎿嶄綔浜篿d,鎵�浠ユ搷浣滀汉濮撳悕鏌ヨ锛屽彧鑳戒粠濮撳悕鍏堝幓鎵緄d锛�
Object userName = param.get("oper_memb");
if (userName != null && user.getRoleId() != 21) {
- List<User> users = userService.selectList(new EntityWrapper<User>().like("username", (String) param.get("oper_memb")));
+ List<User> users = userService.selectList(new EntityWrapper<User>().eq("username", param.get("oper_memb")));
if (users.size() > 0) {
wrapper.in("create_by", users.stream().map(User::getId).collect(Collectors.toList()));
}
@@ -322,7 +324,7 @@
wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
} else {
- wrapper.like(entry.getKey(), val);
+ wrapper.eq(entry.getKey(), val);
}
}
}
@@ -474,18 +476,78 @@
.doWrite(orderDetlVos);
}
- @PostMapping (value = "/order/exportAll/auth")
+ @PostMapping (value = "/order/definedExcelExport/auth")
@ManagerAuth
- public R export() {
+ public void export(HttpServletResponse response, @RequestBody DefinedExcelExportParam definedExcelExportParam) throws IOException {
- User user = getUser();
- Long userId = null;
- if (user.getRoleId() != 2 && user.getRoleId() != 24) {
- userId = user.getId();
+ EntityWrapper<OrderDetl> orderDetlEntityWrapper = new EntityWrapper<>();
+
+ if ("all".equals(definedExcelExportParam.getType())) {
+ DefinedExcelExportParam.QueryWhere queryWhere = definedExcelExportParam.getQueryWhere();
+ EntityWrapper<Order> orderEntityWrapper = new EntityWrapper<>();
+
+ // 闄愬埗閿�鍞鑹插彧鑳界湅鑷繁鍒涘缓鐨勫崟瀛愶紙閿�鍞鑹瞚d鍥哄畾21锛屼笉鑳介殢鎰忎慨鏀癸級
+ User user = getUser();
+ if (user.getRoleId() != 2 && user.getRoleId() != 24) {
+ orderEntityWrapper.eq("create_by", user.getId());
+ }
+ // 鎿嶄綔浜猴細璁㈠崟琛ㄥ彧瀛樹簡鎿嶄綔浜篿d,鎵�浠ユ搷浣滀汉濮撳悕鏌ヨ锛屽彧鑳戒粠濮撳悕鍏堝幓鎵緄d锛�
+ Object userName = queryWhere.getOper_memb();
+ if (userName != null && user.getRoleId() != 21) {
+ List<User> users = userService.selectList(new EntityWrapper<User>().eq("username", queryWhere.getOper_memb()));
+ if (users.size() > 0) {
+ orderEntityWrapper.in("create_by", users.stream().map(User::getId).collect(Collectors.toList()));
+ }
+ }
+ // 璁㈠崟缂栧彿
+ if (!Cools.isEmpty(queryWhere.getOrder_no())) {
+ orderEntityWrapper.eq("order_no", queryWhere.getOrder_no());
+ }
+ // 鍒涘缓鏃堕棿
+ if (queryWhere.getCreate_time().contains(RANGE_TIME_LINK)) {
+ String[] dates = queryWhere.getCreate_time().split(RANGE_TIME_LINK);
+ orderEntityWrapper.ge("create_time", DateUtils.convert(dates[0]));
+ orderEntityWrapper.le("create_time", DateUtils.convert(dates[1]));
+ }
+ // 鍗曟嵁绫诲瀷
+ if (!Cools.isEmpty(queryWhere.getDoc_type())) {
+ orderEntityWrapper.eq("doc_type", queryWhere.getDoc_type());
+ }
+ // 鍗曟嵁鐘舵��
+ if (!Cools.isEmpty(queryWhere.getSettle())) {
+ orderEntityWrapper.eq("settle", queryWhere.getSettle());
+ }
+ // 瀹㈡埛鍚嶇О
+ if (!Cools.isEmpty(queryWhere.getCstmr_name())) {
+ orderEntityWrapper.eq("cstmr_name", queryWhere.getCstmr_name());
+ }
+ // 鏈垹闄�
+ orderEntityWrapper.eq("status", 1);
+ orderEntityWrapper.setSqlSelect("order_no as orderNo");
+ List<Order> orderList = orderService.selectList(orderEntityWrapper);
+ orderDetlEntityWrapper.in("order_no", orderList.stream().map(Order::getOrderNo).collect(Collectors.toList()));
+
+ } else {
+ orderDetlEntityWrapper.in("order_no", definedExcelExportParam.getOrderNoList());
}
- List<OrderDetlExcelVo> orderDetlExcelVoList = orderDetlMapper.selectExportExcelAllDataList(userId);
- return R.ok(orderDetlExcelVoList);
+ List<OrderDetl> list = orderDetlService.selectList(orderDetlEntityWrapper);
+ List<OrderDetlExcelVo> orderDetlExcelVoList = new ArrayList<>();
+
+ for (OrderDetl orderDetl : list) {
+ OrderDetlExcelVo orderDetlExcelVo = new OrderDetlExcelVo();
+ BeanUtils.copyProperties(orderDetl,orderDetlExcelVo);
+ orderDetlExcelVoList.add(orderDetlExcelVo);
+ }
+
+ 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(), OrderDetlExcelVo.class)
+ .sheet("琛�1")
+ .doWrite(orderDetlExcelVoList);
+
}
@RequestMapping(value = "/order/list/all")
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlExcelVo.java b/src/main/java/com/zy/asrs/entity/OrderDetlExcelVo.java
index fa819a4..db8ad66 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlExcelVo.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlExcelVo.java
@@ -1,8 +1,6 @@
package com.zy.asrs.entity;
import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotations.TableField;
-import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@@ -12,104 +10,34 @@
private static final long serialVersionUID = 1L;
- /**
- * 鍗曟嵁缂栧彿
- */
- @ApiModelProperty(value= "鍗曟嵁缂栧彿")
- @TableField("order_no")
- @ExcelProperty({"鍗曟嵁", "鍗曟嵁缂栧彿"})
+ @ExcelProperty("鍗曟嵁缂栧彿")
private String orderNo;
-
- /**
- * 鏁伴噺
- */
- @ApiModelProperty(value= "鏁伴噺")
- @ExcelProperty({"鍗曟嵁", "鏁伴噺"})
+ @ExcelProperty("鏁伴噺")
private Double anfme;
- /**
- * 浣滀笟鏁伴噺
- *
- * 鍏ュ簱 : 缁勬墭瀹屾垚锛岀粍鎵樻。銆佸伐浣滄。銆佸叆搴撳畬鎴愭暟閲�
- * 鍑哄簱 : 宸ヤ綔妗c�佸嚭搴撳畬鎴愭暟閲�
- */
- @ApiModelProperty(value= "浣滀笟鏁伴噺")
- @TableField("work_qty")
- @ExcelProperty({"鍗曟嵁", "浣滀笟鏁伴噺"})
+ @ExcelProperty("浣滀笟鏁伴噺")
private Double workQty;
- /**
- * 瀹屾垚鏁伴噺
- *
- * 鍏ュ簱 : qty 馃憜
- * 鍑哄簱 : qty 馃憜
- */
- @ApiModelProperty(value= "瀹屾垚鏁伴噺")
- @ExcelProperty({"鍗曟嵁", "瀹屾垚鏁伴噺"})
+ @ExcelProperty("瀹屾垚鏁伴噺")
private Double qty;
- /**
- * 鍟嗗搧缂栫爜
- */
- @ApiModelProperty(value= "鍟嗗搧缂栫爜")
- @ExcelProperty({"鍗曟嵁", "鍟嗗搧缂栫爜"})
+ @ExcelProperty("鍟嗗搧缂栫爜")
private String matnr;
- /**
- * 鍟嗗搧鍚嶇О
- */
- @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
- @ExcelProperty({"鍗曟嵁", "鍟嗗搧鍚嶇О"})
+ @ExcelProperty("鍟嗗搧鍚嶇О")
private String maktx;
- /**
- * 瑙勬牸
- */
- @ApiModelProperty(value= "瑙勬牸")
- @ExcelProperty({"鍗曟嵁", "瑙勬牸"})
+ @ExcelProperty("瑙勬牸")
private String specs;
- /**
- * 閲嶉噺
- */
- @ApiModelProperty(value= "閲嶉噺")
- @ExcelProperty({"鍗曟嵁", "閲嶉噺"})
+ @ExcelProperty("閲嶉噺")
private Double weight;
- /**
- * 鎷ユ湁鑰�
- */
- @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠 ")
- @ExcelProperty({"鍗曟嵁", "璐т富ID"})
+ @ExcelProperty("璐т富ID")
private Integer owner;
- /**
- * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�
- */
- @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�")
+ @ExcelProperty("璐х墿褰㈡�両D")
private Integer payment;
-//
-//
-// public String getOwner$(){
-// LocOwnerService service = SpringUtils.getBean(LocOwnerService.class);
-// LocOwner locOwner = service.selectById(this.owner);
-// if (!Cools.isEmpty(locOwner)){
-// return String.valueOf(locOwner.getOwner());
-// }
-// return null;
-// }
-//
-// public String getPayment$(){
-// if (null == this.payment){ return null; }
-// switch (this.payment){
-// case 1:
-// return "浠撳偍";
-// case 0:
-// return "浠i噰";
-// default:
-// return String.valueOf(this.payment);
-// }
-// }
}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/param/DefinedExcelExportParam.java b/src/main/java/com/zy/asrs/entity/param/DefinedExcelExportParam.java
new file mode 100644
index 0000000..3006fb9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/DefinedExcelExportParam.java
@@ -0,0 +1,33 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鍗曟嵁绠$悊鑷畾涔夊鍑烘潯浠�
+ * @createDate 2025/2/18 16:45
+ */
+@Data
+public class DefinedExcelExportParam {
+ private String type;
+ private List<String> orderNoList;
+ private QueryWhere queryWhere;
+
+ @Data
+ public static class QueryWhere {
+ private String create_time;
+ private String cstmr_name;
+ private String order_no;
+ private String settle;
+ private String doc_type;
+ private String oper_memb;
+ }
+
+
+}
+
+
+
+
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 3e27de8..3b085f1 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -1,5 +1,8 @@
var insTbCount = 0;
var printMatCodeNos = [];
+var selectedData = [];
+var selectType = 'one';
+var queryWhere = {};
layui.config({
base: baseUrl + "/static/layui/lay/modules/"
}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () {
@@ -41,7 +44,8 @@
page: true,
cellMinWidth: 100,
cols: [[
- {type: 'numbers'},
+ {type: 'checkbox'},
+ {type: 'numbers', title: '搴忓彿'},
{field: 'orderNo', title: '鍗曟嵁缂栧彿'},
{field: 'docType$', align: 'center', title: '绫诲瀷', minWidth: 160, width: 160},
{align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
@@ -73,37 +77,87 @@
if (res.code === 403) {
top.location.href = baseUrl+"/";
}
+
+ var selectedOrderNos = selectedData.map(item => item.orderNo);
+ var indexArr = []
+
+ res.data.forEach(function (item,index) {
+ if (selectedOrderNos.includes(item.orderNo)) {
+ indexArr.push(index)
+ }
+ })
+ // 閲嶆柊娓叉煋
+ table.setRowChecked('order',{
+ index: indexArr
+ });
insTbCount = count;
+ }
+ });
+
+ table.on('checkbox(order)', function (obj) {
+ if (obj.type === 'all' && obj.checked) {
+ selectType = 'all'
+ } else if (obj.type === 'one' && obj.checked) {
+ selectType = 'one'
+ selectedData.push(obj.data); // 閫変腑鏃朵繚瀛樻暟鎹�
+ } else if (obj.type === 'one' && !obj.checked && obj.index !== undefined) {
+ selectType = 'one'
+ selectedData = selectedData.filter(item => item.orderNo !== obj.data.orderNo); // 鍙栨秷鏃剁Щ闄ゆ暟鎹�
+ } else if (obj.type === 'all' && !obj.checked && obj.index === undefined) {
+ selectType = 'one'
+ selectedData = [];
}
});
// 鎼滅储
form.on('submit(tbSearch)', function (data) {
insTb.reload({where: data.field, page: {curr: 1}});
+ queryWhere = data.field
});
- // 瀵煎嚭鎵�鏈�
+ // 瀵煎嚭
form.on('submit(exportAll)', function (data) {
- layer.closeAll();
- layer.load(1, {shade: [0.1,'#fff']});
- $.ajax({
- url: baseUrl+"/order/exportAll/auth",
- headers: {'token': localStorage.getItem('token')},
- data: {},
- dataType:'json',
- contentType:'application/json;charset=UTF-8',
- method: 'POST',
- success: function (res) {
- if (res.code === 200) {
- table.exportFile(['鍗曟嵁缂栧彿','鏁伴噺','浣滀笟鏁伴噺','瀹屾垚鏁伴噺','鍟嗗搧缂栫爜','鍟嗗搧鍚嶇О','瑙勬牸','閲嶉噺','璐т富id','璐х墿褰㈡�乮d'],res.data,'xls');
- } else if (res.code === 403) {
- top.location.href = baseUrl+"/";
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function () {
+ layer.closeAll();
+ layer.load(1, {shade: [0.1, '#fff']});
+ var reqData = {};
+ reqData.type = selectType;
+ if (reqData.type === 'one') {
+ reqData.orderNoList = selectedData.map(item => item.orderNo);
+ } else {
+ if (Object.keys(queryWhere).length === 0) {
+ reqData.queryWhere = {
+ create_time: "",
+ cstmr_name: "",
+ doc_type: "",
+ oper_memb: "",
+ order_no: "",
+ settle: ""
+ }
} else {
- layer.msg(res.msg)
+ reqData.queryWhere = queryWhere
}
}
+ $.ajax({
+ url: baseUrl + "/order/definedExcelExport/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(reqData),
+ contentType: 'application/json;charset=UTF-8',
+ method: 'POST',
+ xhrFields: {
+ responseType: 'blob' // 澶勭悊杩斿洖鐨勬枃浠舵祦
+ },
+ success: function (res) {
+ var link = document.createElement('a');
+ link.href = URL.createObjectURL(res); // 浣跨敤 Blob 瀵硅薄鐢熸垚涓存椂 URL
+ link.download = new Date().getTime() + '.xlsx'; // 璁剧疆涓嬭浇鐨勬枃浠跺悕
+ document.body.appendChild(link);
+ link.click(); // 瑙﹀彂涓嬭浇
+ document.body.removeChild(link);
+ }
+ });
+ layer.closeAll('loading');
});
- layer.closeAll('loading');
});
// 娣诲姞
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index 7c5b136..97d6217 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -36,7 +36,7 @@
<div class="layui-card">
<div class="layui-card-body">
<!-- 琛ㄦ牸椤堕儴宸ュ叿鏍� -->
- <div class="layui-form toolbar">
+ <div class="layui-form toolbar" lay-filter = 'val-filter'>
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline mr0">
@@ -77,7 +77,7 @@
</div>
<div class="layui-inline">
<button class="layui-btn icon-btn" lay-filter="exportAll" lay-submit>
- <i class="layui-icon"></i>瀵煎嚭鎵�鏈�
+ <i class="layui-icon"></i>瀵煎嚭
</button>
<button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit>
<i class="layui-icon"></i>鎼滅储
--
Gitblit v1.9.1