Skip to content

Commit 236b058

Browse files
committed
fetch: add sale module view receipt detail export function and api eairps#245
1 parent c9199e1 commit 236b058

File tree

8 files changed

+148
-9
lines changed

8 files changed

+148
-9
lines changed

core/service/src/main/java/com/wansenai/service/receipt/ReceiptSaleService.java

+6
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,13 @@ public interface ReceiptSaleService extends IService<ReceiptSaleMain> {
240240

241241
void exportSaleOrderExcel(QuerySaleOrderDTO querySaleOrderDTO, HttpServletResponse response) throws Exception;
242242

243+
void exportSaleOrderDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception;
244+
243245
void exportSaleShipmentsExcel(QuerySaleShipmentsDTO querySaleShipmentsDTO, HttpServletResponse response) throws Exception;
244246

247+
void exportSaleShipmentsDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception;
248+
245249
void exportSaleRefundExcel(QuerySaleRefundDTO querySaleRefundDTO, HttpServletResponse response) throws Exception;
250+
251+
void exportSaleRefundDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception;
246252
}

core/service/src/main/java/com/wansenai/service/receipt/impl/ReceiptSaleServiceImpl.java

+73
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.wansenai.utils.response.Response;
4848
import com.wansenai.vo.receipt.sale.*;
4949
import jakarta.servlet.http.HttpServletResponse;
50+
import org.springframework.beans.BeanUtils;
5051
import org.springframework.stereotype.Service;
5152
import org.springframework.transaction.annotation.Transactional;
5253
import org.springframework.util.StringUtils;
@@ -1363,6 +1364,30 @@ public void exportSaleOrderExcel(QuerySaleOrderDTO querySaleOrderDTO, HttpServle
13631364
}
13641365
}
13651366

1367+
@Override
1368+
public void exportSaleOrderDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception {
1369+
var id = lambdaQuery()
1370+
.eq(ReceiptSaleMain::getReceiptNumber, receiptNumber)
1371+
.eq(ReceiptSaleMain::getDeleteFlag, CommonConstants.NOT_DELETED)
1372+
.one()
1373+
.getId();
1374+
var detail = getSaleOrderDetail(id);
1375+
if (detail != null) {
1376+
var data = detail.getData();
1377+
var tableData = data.getTableData();
1378+
var exportData = new ArrayList<SalesDataExportBO>();
1379+
tableData.forEach(item -> {
1380+
var saleDataBo = new SalesDataExportBO();
1381+
saleDataBo.setCustomerName(data.getCustomerName());
1382+
saleDataBo.setReceiptNumber(data.getReceiptNumber());
1383+
BeanUtils.copyProperties(item, saleDataBo);
1384+
exportData.add(saleDataBo);
1385+
});
1386+
var fileName = data.getReceiptNumber() + "-销售订单明细";
1387+
ExcelUtils.export(response, fileName, ExcelUtils.getSheetData(exportData));
1388+
}
1389+
}
1390+
13661391
@Override
13671392
public void exportSaleShipmentsExcel(QuerySaleShipmentsDTO querySaleShipmentsDTO, HttpServletResponse response) throws Exception {
13681393
var exportMap = new ConcurrentHashMap<String, List<List<Object>>>();
@@ -1405,6 +1430,30 @@ public void exportSaleShipmentsExcel(QuerySaleShipmentsDTO querySaleShipmentsDTO
14051430
}
14061431
}
14071432

1433+
@Override
1434+
public void exportSaleShipmentsDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception {
1435+
var id = lambdaQuery()
1436+
.eq(ReceiptSaleMain::getReceiptNumber, receiptNumber)
1437+
.eq(ReceiptSaleMain::getDeleteFlag, CommonConstants.NOT_DELETED)
1438+
.one()
1439+
.getId();
1440+
var detail = getSaleShipmentsDetail(id);
1441+
if (detail != null) {
1442+
var data = detail.getData();
1443+
var tableData = data.getTableData();
1444+
var exportData = new ArrayList<SalesDataExportBO>();
1445+
tableData.forEach(item -> {
1446+
var saleDataBo = new SalesDataExportBO();
1447+
saleDataBo.setCustomerName(data.getCustomerName());
1448+
saleDataBo.setReceiptNumber(data.getReceiptNumber());
1449+
BeanUtils.copyProperties(item, saleDataBo);
1450+
exportData.add(saleDataBo);
1451+
});
1452+
var fileName = data.getReceiptNumber() + "-销售出库单明细";
1453+
ExcelUtils.export(response, fileName, ExcelUtils.getSheetData(exportData));
1454+
}
1455+
}
1456+
14081457
@Override
14091458
public void exportSaleRefundExcel(QuerySaleRefundDTO querySaleRefundDTO, HttpServletResponse response) throws Exception {
14101459
var exportMap = new ConcurrentHashMap<String, List<List<Object>>>();
@@ -1446,4 +1495,28 @@ public void exportSaleRefundExcel(QuerySaleRefundDTO querySaleRefundDTO, HttpSer
14461495
ExcelUtils.exportManySheet(response, "销售退货", exportMap);
14471496
}
14481497
}
1498+
1499+
@Override
1500+
public void exportSaleRefundDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception {
1501+
var id = lambdaQuery()
1502+
.eq(ReceiptSaleMain::getReceiptNumber, receiptNumber)
1503+
.eq(ReceiptSaleMain::getDeleteFlag, CommonConstants.NOT_DELETED)
1504+
.one()
1505+
.getId();
1506+
var detail = getSaleRefundDetail(id);
1507+
if (detail != null) {
1508+
var data = detail.getData();
1509+
var tableData = data.getTableData();
1510+
var exportData = new ArrayList<SalesDataExportBO>();
1511+
tableData.forEach(item -> {
1512+
var saleDataBo = new SalesDataExportBO();
1513+
saleDataBo.setCustomerName(data.getCustomerName());
1514+
saleDataBo.setReceiptNumber(data.getReceiptNumber());
1515+
BeanUtils.copyProperties(item, saleDataBo);
1516+
exportData.add(saleDataBo);
1517+
});
1518+
var fileName = data.getReceiptNumber() + "-销售退货单明细";
1519+
ExcelUtils.export(response, fileName, ExcelUtils.getSheetData(exportData));
1520+
}
1521+
}
14491522
}

web/src/api/sale/order.ts

+10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ enum API {
1616
Delete = '/sale/order/delete',
1717
GetLinkOrderDetail = '/sale/order/getLinkOrderDetail',
1818
Export = '/sale/order/export',
19+
ExportDetail = '/sale/order/exportDetail',
1920
}
2021

2122
export function getSaleOrderPageList(params: QuerySaleOrderReq) {
@@ -85,4 +86,13 @@ export function exportOrder(params: QuerySaleOrderReq) {
8586
responseType: "blob"
8687
}
8788
);
89+
}
90+
91+
export function exportOrderDetail(receiptNumber: string) {
92+
return defHttp.get<BaseDataResp<Blob>>(
93+
{
94+
url: `${API.ExportDetail}/${receiptNumber}`,
95+
responseType: "blob"
96+
}
97+
);
8898
}

web/src/api/sale/refund.ts

+10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ enum API {
1616
Delete = '/sale/refund/delete',
1717
GetLinkRefundDetail = '/sale/refund/getLinkRefundDetail',
1818
Export = '/sale/refund/export',
19+
ExportDetail = '/sale/refund/exportDetail',
1920
}
2021

2122
export function getSaleRefundPageList(params: QuerySaleRefundReq) {
@@ -85,4 +86,13 @@ export function exportRefund(params: QuerySaleRefundReq) {
8586
responseType: "blob"
8687
}
8788
);
89+
}
90+
91+
export function exportRefundDetail(receiptNumber: string) {
92+
return defHttp.get<BaseDataResp<Blob>>(
93+
{
94+
url: `${API.ExportDetail}/${receiptNumber}`,
95+
responseType: "blob"
96+
}
97+
);
8898
}

web/src/api/sale/shipments.ts

+10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ enum API {
1616
Delete = '/sale/shipments/delete',
1717
GetLinkShipmentsDetail = '/sale/shipments/getLinkShipmentDetail',
1818
Export = '/sale/shipments/export',
19+
ExportDetail = '/sale/shipments/exportDetail',
1920
}
2021

2122
export function getSaleShipmentsPageList(params: QuerySaleShipmentsReq) {
@@ -85,4 +86,13 @@ export function exportShipments(params: QuerySaleShipmentsReq) {
8586
responseType: "blob"
8687
}
8788
);
89+
}
90+
91+
export function exportShipmentsDetail(receiptNumber: string) {
92+
return defHttp.get<BaseDataResp<Blob>>(
93+
{
94+
url: `${API.ExportDetail}/${receiptNumber}`,
95+
responseType: "blob"
96+
}
97+
);
8898
}

web/src/views/sales/order/components/ViewSaleOrderModal.vue

+13-3
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
import {defineComponent, ref} from 'vue';
5757
import {BasicTable, useTable} from '/src/components/Table';
5858
import {BasicModal, useModalInner} from "@/components/Modal";
59-
import {getLinkOrderDetail} from "@/api/sale/order";
59+
import {getLinkOrderDetail, exportOrderDetail} from "@/api/sale/order";
6060
import {TableColumns} from "@/views/sales/order/sales.data";
6161
import {
6262
Descriptions,
@@ -65,6 +65,7 @@ import {
6565
Statistic,
6666
} from 'ant-design-vue';
6767
import printJS from "print-js";
68+
import {getTimestamp} from "@/utils/dateUtil";
6869
6970
export default defineComponent({
7071
name: 'ViewSaleOrderModal',
@@ -118,8 +119,17 @@ export default defineComponent({
118119
closeModal();
119120
}
120121
121-
function exportTable() {
122-
122+
async function exportTable() {
123+
const file: any = await exportOrderDetail(receiptNumber.value)
124+
if (file.size > 0) {
125+
const blob = new Blob([file]);
126+
const link = document.createElement("a");
127+
const timestamp = getTimestamp(new Date());
128+
link.href = URL.createObjectURL(blob);
129+
link.download = "销售订单单据详情" + timestamp + ".xlsx";
130+
link.target = "_blank";
131+
link.click();
132+
}
123133
}
124134
125135
const flexContainer = 'display: flex; justify-content: space-between; border-bottom: 1px solid #ddd; padding: 8px;';

web/src/views/sales/refund/components/ViewSaleRefundModal.vue

+13-3
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
import {defineComponent, ref} from 'vue';
6464
import {BasicTable, useTable} from '/src/components/Table';
6565
import {BasicModal, useModal, useModalInner} from "@/components/Modal";
66-
import {getLinkRefundDetail} from "@/api/sale/refund";
66+
import {getLinkRefundDetail, exportRefundDetail} from "@/api/sale/refund";
6767
import {TableColumns} from "@/views/sales/order/sales.data";
6868
import ViewShipmentsModal from "@/views/sales/shipments/components/ViewSaleShipmentsModal.vue";
6969
import {
@@ -73,6 +73,7 @@ import {
7373
Statistic,
7474
} from 'ant-design-vue';
7575
import printJS from "print-js";
76+
import {getTimestamp} from "@/utils/dateUtil";
7677
7778
export default defineComponent({
7879
name: 'ViewSaleRefundModal',
@@ -140,8 +141,17 @@ export default defineComponent({
140141
closeModal();
141142
}
142143
143-
function exportTable() {
144-
144+
async function exportTable() {
145+
const file: any = await exportRefundDetail(receiptNumber.value)
146+
if (file.size > 0) {
147+
const blob = new Blob([file]);
148+
const link = document.createElement("a");
149+
const timestamp = getTimestamp(new Date());
150+
link.href = URL.createObjectURL(blob);
151+
link.download = "销售退货单据详情" + timestamp + ".xlsx";
152+
link.target = "_blank";
153+
link.click();
154+
}
145155
}
146156
147157
const flexContainer = 'display: flex; justify-content: space-between; border-bottom: 1px solid #ddd; padding: 8px;';

web/src/views/sales/shipments/components/ViewSaleShipmentsModal.vue

+13-3
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
import {defineComponent, ref} from 'vue';
6565
import {BasicTable, useTable} from '/src/components/Table';
6666
import {BasicModal, useModal, useModalInner} from "@/components/Modal";
67-
import {getLinkShipmentsDetail} from "@/api/sale/shipments";
67+
import {getLinkShipmentsDetail, exportShipmentsDetail} from "@/api/sale/shipments";
6868
import {TableColumns} from "@/views/sales/order/sales.data";
6969
import ViewOrderModal from "@/views/sales/order/components/ViewSaleOrderModal.vue";
7070
import {
@@ -74,6 +74,7 @@ import {
7474
Statistic,
7575
} from 'ant-design-vue';
7676
import printJS from "print-js";
77+
import {getTimestamp} from "@/utils/dateUtil";
7778
7879
export default defineComponent({
7980
name: 'ViewSaleShipmentsModal',
@@ -141,8 +142,17 @@ export default defineComponent({
141142
closeModal();
142143
}
143144
144-
function exportTable() {
145-
145+
async function exportTable() {
146+
const file: any = await exportShipmentsDetail(receiptNumber.value)
147+
if (file.size > 0) {
148+
const blob = new Blob([file]);
149+
const link = document.createElement("a");
150+
const timestamp = getTimestamp(new Date());
151+
link.href = URL.createObjectURL(blob);
152+
link.download = "销售出库单据详情" + timestamp + ".xlsx";
153+
link.target = "_blank";
154+
link.click();
155+
}
146156
}
147157
148158
const flexContainer = 'display: flex; justify-content: space-between; border-bottom: 1px solid #ddd; padding: 8px;';

0 commit comments

Comments
 (0)