Skip to content

Commit fb5b407

Browse files
committed
fetch: add purchase module view receipt detail export function and api eairps#245
1 parent 1e0b9bf commit fb5b407

File tree

10 files changed

+167
-9
lines changed

10 files changed

+167
-9
lines changed

core/api/src/main/java/com/wansenai/api/receipt/PurchaseController.java

+15
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,28 @@ public void exportOrderExcel(@ModelAttribute QueryPurchaseOrderDTO queryPurchase
140140
purchaseService.exportPurchaseOrderExcel(queryPurchaseOrderDTO, response);
141141
}
142142

143+
@GetMapping("/order/exportDetail/{receiptNumber}")
144+
public void exportOrderDetailExcel(@PathVariable("receiptNumber") String receiptNumber, HttpServletResponse response) throws Exception {
145+
purchaseService.exportPurchaseOrderDetailExcel(receiptNumber, response);
146+
}
147+
143148
@GetMapping("/storage/export")
144149
public void exportStorageExcel(@ModelAttribute QueryPurchaseStorageDTO queryPurchaseStorageDTO, HttpServletResponse response) throws Exception {
145150
purchaseService.exportPurchaseStorageExcel(queryPurchaseStorageDTO, response);
146151
}
147152

153+
@GetMapping("/storage/exportDetail/{receiptNumber}")
154+
public void exportStorageDetailExcel(@PathVariable("receiptNumber") String receiptNumber, HttpServletResponse response) throws Exception {
155+
purchaseService.exportPurchaseStorageDetailExcel(receiptNumber, response);
156+
}
157+
148158
@GetMapping("/refund/export")
149159
public void exportRefundExcel(@ModelAttribute QueryPurchaseRefundDTO queryPurchaseRefundDTO, HttpServletResponse response) throws Exception {
150160
purchaseService.exportPurchaseRefundExcel(queryPurchaseRefundDTO, response);
151161
}
162+
163+
@GetMapping("/refund/exportDetail/{receiptNumber}")
164+
public void exportRefundDetailExcel(@PathVariable("receiptNumber") String receiptNumber, HttpServletResponse response) throws Exception {
165+
purchaseService.exportPurchaseRefundDetailExcel(receiptNumber, response);
166+
}
152167
}

core/domain/src/main/java/com/wansenai/bo/PurchaseDataExportBO.java

+4
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,17 @@
1313
package com.wansenai.bo;
1414

1515
import com.wansenai.utils.excel.ExcelExport;
16+
import lombok.AllArgsConstructor;
1617
import lombok.Builder;
1718
import lombok.Data;
19+
import lombok.NoArgsConstructor;
1820

1921
import java.math.BigDecimal;
2022

2123
@Data
2224
@Builder
25+
@NoArgsConstructor
26+
@AllArgsConstructor
2327
public class PurchaseDataExportBO {
2428

2529
@ExcelExport(value = "供应商")

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

+6
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,13 @@ public interface ReceiptPurchaseService extends IService<ReceiptPurchaseMain> {
241241

242242
void exportPurchaseOrderExcel(QueryPurchaseOrderDTO queryPurchaseOrderDTO, HttpServletResponse response) throws Exception;
243243

244+
void exportPurchaseOrderDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception;
245+
244246
void exportPurchaseStorageExcel(QueryPurchaseStorageDTO queryPurchaseStorageDTO, HttpServletResponse response) throws Exception;
245247

248+
void exportPurchaseStorageDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception;
249+
246250
void exportPurchaseRefundExcel(QueryPurchaseRefundDTO queryPurchaseRefundDTO, HttpServletResponse response) throws Exception;
251+
252+
void exportPurchaseRefundDetailExcel(String receiptNumber, HttpServletResponse response) throws Exception;
247253
}

core/service/src/main/java/com/wansenai/service/receipt/impl/ReceiptPurchaseServiceImpl.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.purchase.*;
4949
import jakarta.servlet.http.HttpServletResponse;
50+
import org.springframework.beans.BeanUtils;
5051
import org.springframework.stereotype.Service;
5152
import org.springframework.util.StringUtils;
5253
import org.w3c.dom.stylesheets.LinkStyle;
@@ -1358,6 +1359,30 @@ public void exportPurchaseOrderExcel(QueryPurchaseOrderDTO queryPurchaseOrderDTO
13581359
}
13591360
}
13601361

1362+
@Override
1363+
public void exportPurchaseOrderDetailExcel(String receiptNumber, HttpServletResponse response) {
1364+
var id = lambdaQuery()
1365+
.eq(ReceiptPurchaseMain::getReceiptNumber, receiptNumber)
1366+
.eq(ReceiptPurchaseMain::getDeleteFlag, CommonConstants.NOT_DELETED)
1367+
.one()
1368+
.getId();
1369+
var detail = getPurchaseOrderDetail(id);
1370+
if (detail != null) {
1371+
var data = detail.getData();
1372+
var tableData = data.getTableData();
1373+
var exportData = new ArrayList<PurchaseDataExportBO>();
1374+
tableData.forEach(item -> {
1375+
var purchaseBo = new PurchaseDataExportBO();
1376+
purchaseBo.setSupplierName(data.getSupplierName());
1377+
purchaseBo.setReceiptNumber(data.getReceiptNumber());
1378+
BeanUtils.copyProperties(item, purchaseBo);
1379+
exportData.add(purchaseBo);
1380+
});
1381+
var fileName = data.getReceiptNumber() + "-采购订单明细";
1382+
ExcelUtils.export(response, fileName, ExcelUtils.getSheetData(exportData));
1383+
}
1384+
}
1385+
13611386
@Override
13621387
public void exportPurchaseStorageExcel(QueryPurchaseStorageDTO queryPurchaseStorageDTO, HttpServletResponse response) {
13631388
var exportMap = new ConcurrentHashMap<String, List<List<Object>>>();
@@ -1399,6 +1424,30 @@ public void exportPurchaseStorageExcel(QueryPurchaseStorageDTO queryPurchaseStor
13991424
}
14001425
}
14011426

1427+
@Override
1428+
public void exportPurchaseStorageDetailExcel(String receiptNumber, HttpServletResponse response) {
1429+
var id = lambdaQuery()
1430+
.eq(ReceiptPurchaseMain::getReceiptNumber, receiptNumber)
1431+
.eq(ReceiptPurchaseMain::getDeleteFlag, CommonConstants.NOT_DELETED)
1432+
.one()
1433+
.getId();
1434+
var detail = getPurchaseStorageDetail(id);
1435+
if (detail != null) {
1436+
var data = detail.getData();
1437+
var tableData = data.getTableData();
1438+
var exportData = new ArrayList<PurchaseDataExportBO>();
1439+
tableData.forEach(item -> {
1440+
var purchaseBo = new PurchaseDataExportBO();
1441+
purchaseBo.setSupplierName(data.getSupplierName());
1442+
purchaseBo.setReceiptNumber(data.getReceiptNumber());
1443+
BeanUtils.copyProperties(item, purchaseBo);
1444+
exportData.add(purchaseBo);
1445+
});
1446+
var fileName = data.getReceiptNumber() + "-采购入库单明细";
1447+
ExcelUtils.export(response, fileName, ExcelUtils.getSheetData(exportData));
1448+
}
1449+
}
1450+
14021451
@Override
14031452
public void exportPurchaseRefundExcel(QueryPurchaseRefundDTO queryPurchaseRefundDTO, HttpServletResponse response) {
14041453
var exportMap = new ConcurrentHashMap<String, List<List<Object>>>();
@@ -1439,4 +1488,28 @@ public void exportPurchaseRefundExcel(QueryPurchaseRefundDTO queryPurchaseRefund
14391488
ExcelUtils.exportManySheet(response, "采购退货", exportMap);
14401489
}
14411490
}
1491+
1492+
@Override
1493+
public void exportPurchaseRefundDetailExcel(String receiptNumber, HttpServletResponse response) {
1494+
var id = lambdaQuery()
1495+
.eq(ReceiptPurchaseMain::getReceiptNumber, receiptNumber)
1496+
.eq(ReceiptPurchaseMain::getDeleteFlag, CommonConstants.NOT_DELETED)
1497+
.one()
1498+
.getId();
1499+
var detail = getPurchaseRefundDetail(id);
1500+
if (detail != null) {
1501+
var data = detail.getData();
1502+
var tableData = data.getTableData();
1503+
var exportData = new ArrayList<PurchaseDataExportBO>();
1504+
tableData.forEach(item -> {
1505+
var purchaseBo = new PurchaseDataExportBO();
1506+
purchaseBo.setSupplierName(data.getSupplierName());
1507+
purchaseBo.setReceiptNumber(data.getReceiptNumber());
1508+
BeanUtils.copyProperties(item, purchaseBo);
1509+
exportData.add(purchaseBo);
1510+
});
1511+
var fileName = data.getReceiptNumber() + "-采购退货单明细";
1512+
ExcelUtils.export(response, fileName, ExcelUtils.getSheetData(exportData));
1513+
}
1514+
}
14421515
}

web/src/api/purchase/order.ts

+10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ enum API {
1515
Delete = '/purchase/order/delete',
1616
GetLinkOrderDetail = '/purchase/order/getLinkOrderDetail',
1717
Export = '/purchase/order/export',
18+
ExportDetail = '/purchase/order/exportDetail',
1819
}
1920

2021
export function getPurchaseOrderPageList(params: QueryPurchaseOrderReq) {
@@ -84,4 +85,13 @@ export function exportOrder(params: QueryPurchaseOrderReq) {
8485
responseType: "blob"
8586
}
8687
);
88+
}
89+
90+
export function exportOrderDetail(receiptNumber: string) {
91+
return defHttp.get<BaseDataResp<Blob>>(
92+
{
93+
url: `${API.ExportDetail}/${receiptNumber}`,
94+
responseType: "blob"
95+
}
96+
);
8797
}

web/src/api/purchase/refund.ts

+10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ enum API {
1515
Delete = '/purchase/refund/delete',
1616
GetLinkRefundDetail = '/purchase/refund/getLinkRefundDetail',
1717
Export = '/purchase/refund/export',
18+
ExportDetail = '/purchase/order/exportDetail',
1819
}
1920

2021
export function getPurchaseRefundPageList(params: QueryPurchaseRefundReq) {
@@ -84,4 +85,13 @@ export function exportRefund(params: QueryPurchaseRefundReq) {
8485
responseType: "blob"
8586
}
8687
);
88+
}
89+
90+
export function exportRefundDetail(receiptNumber: string) {
91+
return defHttp.get<BaseDataResp<Blob>>(
92+
{
93+
url: `${API.ExportDetail}/${receiptNumber}`,
94+
responseType: "blob"
95+
}
96+
);
8797
}

web/src/api/purchase/storage.ts

+10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ enum API {
1515
Delete = '/purchase/storage/delete',
1616
GetLinkStorageDetail = '/purchase/storage/getLinkStorageDetail',
1717
Export = '/purchase/storage/export',
18+
ExportDetail = '/purchase/order/exportDetail',
1819
}
1920

2021
export function getPurchaseStoragePageList(params: QueryPurchaseStorageReq) {
@@ -84,4 +85,13 @@ export function exportStorage(params: QueryPurchaseStorageReq) {
8485
responseType: "blob"
8586
}
8687
);
88+
}
89+
90+
export function exportStorageDetail(receiptNumber: string) {
91+
return defHttp.get<BaseDataResp<Blob>>(
92+
{
93+
url: `${API.ExportDetail}/${receiptNumber}`,
94+
responseType: "blob"
95+
}
96+
);
8797
}

web/src/views/purchase/order/components/ViewOrderModal.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/purchase/order";
59+
import {getLinkOrderDetail, exportOrderDetail} from "@/api/purchase/order";
6060
import {purchaseOrderTableColumns} from "@/views/purchase/order/purchaseOrder.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: 'ViewPurchaseOrderModal',
@@ -120,8 +121,17 @@ export default defineComponent({
120121
closeModal();
121122
}
122123
123-
function exportTable() {
124-
124+
async function exportTable() {
125+
const file: any = await exportOrderDetail(receiptNumber.value)
126+
if (file.size > 0) {
127+
const blob = new Blob([file]);
128+
const link = document.createElement("a");
129+
const timestamp = getTimestamp(new Date());
130+
link.href = URL.createObjectURL(blob);
131+
link.download = "采购订单单据详情" + timestamp + ".xlsx";
132+
link.target = "_blank";
133+
link.click();
134+
}
125135
}
126136
127137
const flexContainer = 'display: flex; justify-content: space-between; border-bottom: 1px solid #ddd; padding: 8px;';

web/src/views/purchase/refund/components/ViewRefundModal.vue

+13-3
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
import {defineComponent, ref} from 'vue';
6363
import {BasicTable, useTable} from '/src/components/Table';
6464
import {BasicModal, useModal, useModalInner} from "@/components/Modal";
65-
import {getLinkRefundDetail} from "@/api/purchase/refund";
65+
import {getLinkRefundDetail, exportRefundDetail} from "@/api/purchase/refund";
6666
import {purchaseOrderTableColumns} from "@/views/purchase/order/purchaseOrder.data";
6767
import ViewStorageModal from "@/views/purchase/storage/components/ViewStorageModal.vue";
6868
import {
@@ -72,6 +72,7 @@ import {
7272
Statistic,
7373
} from 'ant-design-vue';
7474
import printJS from "print-js";
75+
import {getTimestamp} from "@/utils/dateUtil";
7576
7677
export default defineComponent({
7778
name: 'ViewPurchaseRefundModal',
@@ -146,8 +147,17 @@ export default defineComponent({
146147
closeModal();
147148
}
148149
149-
function exportTable() {
150-
150+
async function exportTable() {
151+
const file: any = await exportRefundDetail(receiptNumber.value)
152+
if (file.size > 0) {
153+
const blob = new Blob([file]);
154+
const link = document.createElement("a");
155+
const timestamp = getTimestamp(new Date());
156+
link.href = URL.createObjectURL(blob);
157+
link.download = "采购退货单据详情" + timestamp + ".xlsx";
158+
link.target = "_blank";
159+
link.click();
160+
}
151161
}
152162
153163
const flexContainer = 'display: flex; justify-content: space-between; border-bottom: 1px solid #ddd; padding: 8px;';

web/src/views/purchase/storage/components/ViewStorageModal.vue

+13-3
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
import {defineComponent, ref} from 'vue';
6363
import {BasicTable, useTable} from '/src/components/Table';
6464
import {BasicModal, useModal, useModalInner} from "@/components/Modal";
65-
import {getLinkStorageDetail} from "@/api/purchase/storage";
65+
import {getLinkStorageDetail, exportStorageDetail} from "@/api/purchase/storage";
6666
import {purchaseOrderTableColumns} from "@/views/purchase/order/purchaseOrder.data";
6767
import ViewOrderModal from "@/views/purchase/order/components/ViewOrderModal.vue";
6868
import {
@@ -72,6 +72,7 @@ import {
7272
Statistic,
7373
} from 'ant-design-vue';
7474
import printJS from "print-js";
75+
import {getTimestamp} from "@/utils/dateUtil";
7576
7677
export default defineComponent({
7778
name: 'ViewPurchaseStorageModal',
@@ -140,8 +141,17 @@ export default defineComponent({
140141
closeModal();
141142
}
142143
143-
function exportTable() {
144-
144+
async function exportTable() {
145+
const file: any = await exportStorageDetail(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;';

0 commit comments

Comments
 (0)