Skip to content

Commit 94e8ab0

Browse files
committed
fetch: add sale export api eairps#245
1 parent c138f8c commit 94e8ab0

File tree

3 files changed

+175
-4
lines changed

3 files changed

+175
-4
lines changed

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

+2-4
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,11 @@ public Response<String> refundUpdateStatus(@RequestParam("ids") List<Long> ids,
106106

107107
@GetMapping("/shipments/export")
108108
public void exportShipmentsExcel(@ModelAttribute QueryShipmentsDTO queryShipmentsDTO, HttpServletResponse response) throws Exception {
109-
var file = receiptRetailService.exportRetailShipmentsExcel(queryShipmentsDTO, response);
110-
ExcelUtils.downloadExcel(file, "零售出库单", response);
109+
receiptRetailService.exportRetailShipmentsExcel(queryShipmentsDTO, response);
111110
}
112111

113112
@GetMapping("/refund/export")
114113
public void exportRefundExcel(@ModelAttribute QueryRetailRefundDTO queryRetailRefundDTO, HttpServletResponse response) throws Exception {
115-
var file = receiptRetailService.exportRetailRefundExcel(queryRetailRefundDTO, response);
116-
ExcelUtils.downloadExcel(file, "零售退货单", response);
114+
receiptRetailService.exportRetailRefundExcel(queryRetailRefundDTO, response);
117115
}
118116
}

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

+7
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.wansenai.entities.receipt.ReceiptSaleMain;
1919
import com.wansenai.utils.response.Response;
2020
import com.wansenai.vo.receipt.sale.*;
21+
import jakarta.servlet.http.HttpServletResponse;
2122

2223
import java.util.List;
2324

@@ -236,4 +237,10 @@ public interface ReceiptSaleService extends IService<ReceiptSaleMain> {
236237
* 返回分页数据
237238
*/
238239
Response<Page<SaleArrearsVO>> getSaleArrearsPage(QuerySaleArrearsDTO arrearsDTO);
240+
241+
void exportSaleOrderExcel(QuerySaleOrderDTO querySaleOrderDTO, HttpServletResponse response) throws Exception;
242+
243+
void exportSaleShipmentsExcel(QuerySaleShipmentsDTO querySaleShipmentsDTO, HttpServletResponse response) throws Exception;
244+
245+
void exportSaleRefundExcel(QuerySaleRefundDTO querySaleRefundDTO, HttpServletResponse response) throws Exception;
239246
}

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

+166
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@
4242
import com.wansenai.utils.constants.ReceiptConstants;
4343
import com.wansenai.utils.enums.BaseCodeEnum;
4444
import com.wansenai.utils.enums.SaleCodeEnum;
45+
import com.wansenai.utils.excel.ExcelUtils;
4546
import com.wansenai.utils.response.Response;
4647
import com.wansenai.vo.receipt.sale.*;
48+
import jakarta.servlet.http.HttpServletResponse;
4749
import org.springframework.stereotype.Service;
4850
import org.springframework.transaction.annotation.Transactional;
4951
import org.springframework.util.StringUtils;
@@ -319,6 +321,50 @@ public Response<Page<SaleOrderVO>> getSaleOrderPage(QuerySaleOrderDTO querySaleO
319321
return Response.responseData(result);
320322
}
321323

324+
private List<SaleOrderVO> getSaleOrderList(QuerySaleOrderDTO querySaleOrderDTO) {
325+
var saleOrderVOList = new ArrayList<SaleOrderVO>();
326+
var saleMains = lambdaQuery()
327+
.eq(ReceiptSaleMain::getType, ReceiptConstants.RECEIPT_TYPE_ORDER)
328+
.in(ReceiptSaleMain::getSubType, ReceiptConstants.RECEIPT_SUB_TYPE_SALES_ORDER)
329+
.eq(StringUtils.hasText(querySaleOrderDTO.getReceiptNumber()), ReceiptSaleMain::getReceiptNumber, querySaleOrderDTO.getReceiptNumber())
330+
.like(StringUtils.hasText(querySaleOrderDTO.getRemark()), ReceiptSaleMain::getRemark, querySaleOrderDTO.getRemark())
331+
.eq(querySaleOrderDTO.getCustomerId() != null, ReceiptSaleMain::getCustomerId, querySaleOrderDTO.getCustomerId())
332+
.eq(querySaleOrderDTO.getOperatorId() != null, ReceiptSaleMain::getCreateBy, querySaleOrderDTO.getOperatorId())
333+
.eq(querySaleOrderDTO.getStatus() != null, ReceiptSaleMain::getStatus, querySaleOrderDTO.getStatus())
334+
.eq(ReceiptSaleMain::getDeleteFlag, CommonConstants.NOT_DELETED)
335+
.ge(StringUtils.hasText(querySaleOrderDTO.getStartDate()), ReceiptSaleMain::getCreateTime, querySaleOrderDTO.getStartDate())
336+
.le(StringUtils.hasText(querySaleOrderDTO.getEndDate()), ReceiptSaleMain::getCreateTime, querySaleOrderDTO.getEndDate())
337+
.list();
338+
339+
saleMains.forEach(item -> {
340+
var receiptSubList = receiptSaleSubService.lambdaQuery()
341+
.eq(ReceiptSaleSub::getReceiptSaleMainId, item.getId())
342+
.list();
343+
var productNumber = calculateProductNumber(receiptSubList);
344+
345+
var customerName = getCustomerName(item.getCustomerId());
346+
var crateBy = getUserName(item.getCreateBy());
347+
var totalAmount = calculateTotalAmount(receiptSubList, ReceiptSaleSub::getTotalAmount);
348+
var taxRateTotalPrice = calculateTotalAmount(receiptSubList, ReceiptSaleSub::getTaxIncludedAmount);
349+
350+
var saleOrderVO = SaleOrderVO.builder()
351+
.id(item.getId())
352+
.customerName(customerName)
353+
.receiptNumber(item.getReceiptNumber())
354+
.receiptDate(item.getReceiptDate())
355+
.productInfo(item.getRemark())
356+
.operator(crateBy)
357+
.productNumber(productNumber)
358+
.totalPrice(totalAmount)
359+
.taxRateTotalPrice(taxRateTotalPrice)
360+
.deposit(item.getDeposit())
361+
.status(item.getStatus())
362+
.build();
363+
saleOrderVOList.add(saleOrderVO);
364+
});
365+
return saleOrderVOList;
366+
}
367+
322368
@Override
323369
public Response<SaleOrderDetailVO> getSaleOrderDetail(Long id) {
324370
if (id == null) {
@@ -578,6 +624,52 @@ public Response<Page<SaleShipmentsVO>> getSaleShipmentsPage(QuerySaleShipmentsDT
578624
return Response.responseData(result);
579625
}
580626

627+
private List<SaleShipmentsVO> getSaleShipmentsList(QuerySaleShipmentsDTO shipmentsDTO) {
628+
var saleShipmentsVOList = new ArrayList<SaleShipmentsVO>();
629+
var saleMains = lambdaQuery()
630+
.eq(ReceiptSaleMain::getType, ReceiptConstants.RECEIPT_TYPE_SHIPMENT)
631+
.in(ReceiptSaleMain::getSubType, ReceiptConstants.RECEIPT_SUB_TYPE_SALES_SHIPMENTS)
632+
.eq(StringUtils.hasText(shipmentsDTO.getReceiptNumber()), ReceiptSaleMain::getReceiptNumber, shipmentsDTO.getReceiptNumber())
633+
.like(StringUtils.hasText(shipmentsDTO.getRemark()), ReceiptSaleMain::getRemark, shipmentsDTO.getRemark())
634+
.eq(shipmentsDTO.getCustomerId() != null, ReceiptSaleMain::getCustomerId, shipmentsDTO.getCustomerId())
635+
.eq(shipmentsDTO.getOperatorId() != null, ReceiptSaleMain::getCreateBy, shipmentsDTO.getOperatorId())
636+
.eq(shipmentsDTO.getStatus() != null, ReceiptSaleMain::getStatus, shipmentsDTO.getStatus())
637+
.eq(ReceiptSaleMain::getDeleteFlag, CommonConstants.NOT_DELETED)
638+
.ge(StringUtils.hasText(shipmentsDTO.getStartDate()), ReceiptSaleMain::getCreateTime, shipmentsDTO.getStartDate())
639+
.le(StringUtils.hasText(shipmentsDTO.getEndDate()), ReceiptSaleMain::getCreateTime, shipmentsDTO.getEndDate())
640+
.list();
641+
642+
saleMains.forEach(item -> {
643+
var receiptSubList = receiptSaleSubService.lambdaQuery()
644+
.eq(ReceiptSaleSub::getReceiptSaleMainId, item.getId())
645+
.list();
646+
var productNumber = calculateProductNumber(receiptSubList);
647+
var customerName = getCustomerName(item.getCustomerId());
648+
var crateBy = getUserName(item.getCreateBy());
649+
var totalAmount = calculateTotalAmount(receiptSubList, ReceiptSaleSub::getTotalAmount);
650+
var taxRateTotalPrice = calculateTotalAmount(receiptSubList, ReceiptSaleSub::getTaxIncludedAmount);
651+
var totalCollectAmount = item.getArrearsAmount().add(item.getChangeAmount());
652+
653+
var saleShipmentVO = SaleShipmentsVO.builder()
654+
.id(item.getId())
655+
.customerName(customerName)
656+
.receiptNumber(item.getReceiptNumber())
657+
.receiptDate(item.getReceiptDate())
658+
.productInfo(item.getRemark())
659+
.operator(crateBy)
660+
.productNumber(productNumber)
661+
.totalAmount(totalAmount)
662+
.taxIncludedAmount(taxRateTotalPrice)
663+
.totalCollectAmount(totalCollectAmount)
664+
.thisCollectAmount(item.getChangeAmount())
665+
.thisArrearsAmount(item.getArrearsAmount())
666+
.status(item.getStatus())
667+
.build();
668+
saleShipmentsVOList.add(saleShipmentVO);
669+
});
670+
return saleShipmentsVOList;
671+
}
672+
581673
@Override
582674
public Response<SaleShipmentsDetailVO> getSaleShipmentsDetail(Long id) {
583675
if (id == null) {
@@ -882,6 +974,53 @@ public Response<Page<SaleRefundVO>> getSaleRefundPage(QuerySaleRefundDTO refundD
882974
return Response.responseData(result);
883975
}
884976

977+
private List<SaleRefundVO> getSaleRefundList(QuerySaleRefundDTO refundDTO) {
978+
var saleRefundVOList = new ArrayList<SaleRefundVO>();
979+
var saleMains = lambdaQuery()
980+
.eq(ReceiptSaleMain::getType, ReceiptConstants.RECEIPT_TYPE_STORAGE)
981+
.in(ReceiptSaleMain::getSubType, ReceiptConstants.RECEIPT_SUB_TYPE_SALES_REFUND)
982+
.eq(StringUtils.hasText(refundDTO.getReceiptNumber()), ReceiptSaleMain::getReceiptNumber, refundDTO.getReceiptNumber())
983+
.like(StringUtils.hasText(refundDTO.getRemark()), ReceiptSaleMain::getRemark, refundDTO.getRemark())
984+
.eq(refundDTO.getCustomerId() != null, ReceiptSaleMain::getCustomerId, refundDTO.getCustomerId())
985+
.eq(refundDTO.getOperatorId() != null, ReceiptSaleMain::getCreateBy, refundDTO.getOperatorId())
986+
.eq(refundDTO.getStatus() != null, ReceiptSaleMain::getStatus, refundDTO.getStatus())
987+
.eq(ReceiptSaleMain::getDeleteFlag, CommonConstants.NOT_DELETED)
988+
.ge(StringUtils.hasText(refundDTO.getStartDate()), ReceiptSaleMain::getCreateTime, refundDTO.getStartDate())
989+
.le(StringUtils.hasText(refundDTO.getEndDate()), ReceiptSaleMain::getCreateTime, refundDTO.getEndDate())
990+
.list();
991+
992+
saleMains.forEach(item -> {
993+
var receiptSubList = receiptSaleSubService.lambdaQuery()
994+
.eq(ReceiptSaleSub::getReceiptSaleMainId, item.getId())
995+
.list();
996+
var productNumber = calculateProductNumber(receiptSubList);
997+
var customerName = getCustomerName(item.getCustomerId());
998+
var crateBy = getUserName(item.getCreateBy());
999+
var totalAmount = calculateTotalAmount(receiptSubList, ReceiptSaleSub::getTotalAmount);
1000+
var taxRateTotalPrice = calculateTotalAmount(receiptSubList, ReceiptSaleSub::getTaxIncludedAmount);
1001+
1002+
var totalRefundAmount = item.getArrearsAmount().add(item.getChangeAmount());
1003+
1004+
var saleRefundVO = SaleRefundVO.builder()
1005+
.id(item.getId())
1006+
.customerName(customerName)
1007+
.receiptNumber(item.getReceiptNumber())
1008+
.receiptDate(item.getReceiptDate())
1009+
.productInfo(item.getRemark())
1010+
.operator(crateBy)
1011+
.productNumber(productNumber)
1012+
.totalAmount(totalAmount)
1013+
.taxIncludedAmount(taxRateTotalPrice)
1014+
.refundTotalAmount(totalRefundAmount)
1015+
.thisRefundAmount(item.getChangeAmount())
1016+
.thisArrearsAmount(item.getArrearsAmount())
1017+
.status(item.getStatus())
1018+
.build();
1019+
saleRefundVOList.add(saleRefundVO);
1020+
});
1021+
return saleRefundVOList;
1022+
}
1023+
8851024
@Override
8861025
public Response<SaleRefundDetailVO> getSaleRefundDetail(Long id) {
8871026
if (id == null) {
@@ -1180,4 +1319,31 @@ public Response<Page<SaleArrearsVO>> getSaleArrearsPage(QuerySaleArrearsDTO arre
11801319

11811320
return Response.responseData(result);
11821321
}
1322+
1323+
@Override
1324+
public void exportSaleOrderExcel(QuerySaleOrderDTO querySaleOrderDTO, HttpServletResponse response) throws Exception {
1325+
var data = getSaleOrderList(querySaleOrderDTO);
1326+
if (!data.isEmpty()) {
1327+
var file = ExcelUtils.exportFile(ExcelUtils.DEFAULT_FILE_PATH, "销售订单", data);
1328+
ExcelUtils.downloadExcel(file, "销售订单", response);
1329+
}
1330+
}
1331+
1332+
@Override
1333+
public void exportSaleShipmentsExcel(QuerySaleShipmentsDTO querySaleShipmentsDTO, HttpServletResponse response) throws Exception {
1334+
var data = getSaleShipmentsList(querySaleShipmentsDTO);
1335+
if (!data.isEmpty()) {
1336+
var file = ExcelUtils.exportFile(ExcelUtils.DEFAULT_FILE_PATH, "销售出库", data);
1337+
ExcelUtils.downloadExcel(file, "销售出库", response);
1338+
}
1339+
}
1340+
1341+
@Override
1342+
public void exportSaleRefundExcel(QuerySaleRefundDTO querySaleRefundDTO, HttpServletResponse response) throws Exception {
1343+
var data = getSaleRefundList(querySaleRefundDTO);
1344+
if (!data.isEmpty()) {
1345+
var file = ExcelUtils.exportFile(ExcelUtils.DEFAULT_FILE_PATH, "销售退货", data);
1346+
ExcelUtils.downloadExcel(file, "销售退货", response);
1347+
}
1348+
}
11831349
}

0 commit comments

Comments
 (0)