gongchunyi
5 天以前 d7c69d76e9c81464c698199b90ec4a339a18b257
feat: 销售订单标签打印
已添加1个文件
已修改3个文件
105 ■■■■■ 文件已修改
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLabelDto.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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>
 * é”€å”®æ ‡ç­¾Dto
 * </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;
}
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -65,4 +65,5 @@
    SalesInvoicesDto salesInvoices(List<Long> salesLedgerIds);
    List<SalesLabelDto> salesLabel(Long salesLedgerId);
}
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;