From d7c69d76e9c81464c698199b90ec4a339a18b257 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 27 三月 2026 16:06:17 +0800
Subject: [PATCH] feat: 销售订单标签打印
---
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 7 +++
src/main/java/com/ruoyi/sales/dto/SalesLabelDto.java | 41 ++++++++++++++++++++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 56 ++++++++++++++++++++++++++++
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | 1
4 files changed, 105 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index c961cff..09d9c23 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -388,4 +388,11 @@
return AjaxResult.success(dto);
}
+ @GetMapping("/salesLabel/{salesLedgerId}")
+ @ApiOperation("鎵撳嵃璁㈠崟鏍囩")
+ public AjaxResult salesLabel(@PathVariable Long salesLedgerId) {
+ List<SalesLabelDto> list = salesLedgerService.salesLabel(salesLedgerId);
+ return AjaxResult.success(list);
+ }
+
}
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLabelDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLabelDto.java
new file mode 100644
index 0000000..bfc92f2
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLabelDto.java
@@ -0,0 +1,41 @@
+package com.ruoyi.sales.dto;
+
+/**
+ * <br>
+ *
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/27 15:55
+ */
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * <br>
+ * 閿�鍞爣绛綝to
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/27 15:55
+ */
+@Data
+public class SalesLabelDto {
+
+ @ApiModelProperty("瀹㈡埛鍚嶇О")
+ private String customerName;
+
+ @ApiModelProperty("閿�鍞鍗曠紪鍙�")
+ private String salesContractNo;
+
+ @ApiModelProperty("浜у搧鍚嶇О")
+ private String productName;
+
+ @ApiModelProperty("瑙勬牸(瀹�*楂�=鏁伴噺)")
+ private String specification;
+
+ @ApiModelProperty("妤煎眰缂栧彿/鍦板潃")
+ private String floorCode;
+}
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index 23a675c..e8440af 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -65,4 +65,5 @@
SalesInvoicesDto salesInvoices(List<Long> salesLedgerIds);
+ List<SalesLabelDto> salesLabel(Long salesLedgerId);
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 025fe60..04f3a3a 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -1306,6 +1306,62 @@
return dto;
}
+ @Override
+ public List<SalesLabelDto> salesLabel(Long salesLedgerId) {
+ if (salesLedgerId == null) {
+ throw new ServiceException("鎵撳嵃鏍囩澶辫触,鏁版嵁涓嶈兘涓虹┖");
+ }
+ SalesLedger salesLedger = baseMapper.selectById(salesLedgerId);
+ if (salesLedger == null) {
+ throw new ServiceException("鎵撳嵃澶辫触,閿�鍞鍗曚笉瀛樺湪");
+ }
+
+ // 鏌ヨ浜у搧鍒楄〃
+ List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(
+ new LambdaQueryWrapper<SalesLedgerProduct>().eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerId));
+
+ // 鏌ヨ瀹㈡埛鍦板潃
+ String fullAddress = "";
+ if (salesLedger.getCustomerId() != null) {
+ Customer customer = customerMapper.selectById(salesLedger.getCustomerId());
+ if (customer != null) {
+ StringBuilder addressSb = new StringBuilder();
+ if (customer.getRegionsId() != null) {
+ CustomerRegions regions = customerRegionsService.getById(customer.getRegionsId());
+ if (regions != null) {
+ addressSb.append(regions.getRegionsName());
+ }
+ }
+ if (StringUtils.isNotEmpty(customer.getCompanyAddress())) {
+ addressSb.append(customer.getCompanyAddress());
+ }
+ fullAddress = addressSb.toString();
+ }
+ }
+
+ List<SalesLabelDto> list = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(products)) {
+ for (SalesLedgerProduct p : products) {
+ SalesLabelDto dto = new SalesLabelDto();
+ dto.setCustomerName(salesLedger.getCustomerName());
+ dto.setSalesContractNo(salesLedger.getSalesContractNo());
+ dto.setProductName(p.getProductCategory());
+
+ // 瀹�*楂�=鏁伴噺
+ String specification = (p.getWidth() != null ? p.getWidth().stripTrailingZeros().toPlainString() : "0") + "*" +
+ (p.getHeight() != null ? p.getHeight().stripTrailingZeros().toPlainString() : "0") + "=" +
+ (p.getQuantity() != null ? p.getQuantity().stripTrailingZeros().toPlainString() : "0");
+ dto.setSpecification(specification);
+
+ // 瀹㈡埛鍦板潃 + 妤煎眰缂栧彿
+ dto.setFloorCode(fullAddress + (StringUtils.isNotEmpty(p.getFloorCode()) ? " " + p.getFloorCode() : ""));
+ list.add(dto);
+ }
+ }
+
+ return list;
+ }
+
private int findFirstMissingSequence(List<Integer> sequences) {
if (sequences.isEmpty()) {
return 1;
--
Gitblit v1.9.3