feat:1.已审核只能编辑单价
2.添加完成按钮
3.添加标签打印和单据打印次数展示
已修改6个文件
134 ■■■■■ 文件已修改
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerMapper.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -209,6 +209,40 @@
    }
    /**
     * 标记订单完成
     */
    @Log(title = "销售台账标记完成", businessType = BusinessType.UPDATE)
    @PostMapping("/markOrderCompleted")
    @ApiOperation("标记订单完成(不可撤销)")
    public AjaxResult markOrderCompleted(@RequestBody Map<String, Object> params) {
        @SuppressWarnings("unchecked")
        List<Long> ids = (List<Long>) params.get("ids");
        if (ids == null || ids.isEmpty()) {
            return AjaxResult.error("请选择要标记完成的订单");
        }
        salesLedgerService.markOrderCompleted(ids);
        return AjaxResult.success("标记完成成功");
    }
    /**
     * 递增打印次数
     */
    @PostMapping("/incrementPrintCount")
    @ApiOperation("递增打印次数")
    public AjaxResult incrementPrintCount(@RequestBody Map<String, Object> params) {
        Long id = params.get("id") != null ? Long.valueOf(params.get("id").toString()) : null;
        String printType = (String) params.get("printType");
        if (id == null) {
            return AjaxResult.error("销售台账ID不能为空");
        }
        if (printType == null || (!"label".equals(printType) && !"document".equals(printType))) {
            return AjaxResult.error("打印类型必须为 label 或 document");
        }
        salesLedgerService.incrementPrintCount(id, printType);
        return AjaxResult.success();
    }
    /**
     * 删除销售台账
     */
    @Log(title = "销售台账", businessType = BusinessType.DELETE)
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -93,4 +93,7 @@
    @ApiModelProperty("反审核描述")
    private String counterReviewDesc;
    @ApiModelProperty("订单状态:0-进行中,1-已完成")
    private Integer orderStatus;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -200,4 +200,22 @@
    @ApiModelProperty("反审核描述")
    private String counterReviewDesc;
    /**
     * 订单状态:0-进行中,1-已完成
     */
    @ApiModelProperty("订单状态:0-进行中,1-已完成")
    private Integer orderStatus;
    /**
     * 标签打印次数
     */
    @ApiModelProperty("标签打印次数")
    private Integer labelPrintCount;
    /**
     * 单据打印次数
     */
    @ApiModelProperty("单据打印次数")
    private Integer documentPrintCount;
}
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -106,4 +106,16 @@
     * 反审核操作:作废或重新生成
     */
    List<Long> counterReview(CounterReviewDto dto);
    /**
     * 标记订单完成
     */
    void markOrderCompleted(List<Long> ids);
    /**
     * 递增打印次数
     * @param id 销售台账ID
     * @param printType 打印类型:label=标签打印,document=单据打印
     */
    void incrementPrintCount(Long id, String printType);
}
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -3640,4 +3640,58 @@
                .eq(StockOutRecord::getSalesLedgerId, originalSalesLedgerId)
        );
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void markOrderCompleted(List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            throw new ServiceException("请选择要标记完成的订单");
        }
        for (Long id : ids) {
            SalesLedger ledger = salesLedgerMapper.selectById(id);
            if (ledger == null) {
                throw new ServiceException("订单不存在,无法标记完成");
            }
            if (ledger.getReviewStatus() == null || ledger.getReviewStatus() != 1) {
                throw new ServiceException("订单" + ledger.getSalesContractNo() + "不是已审核状态,无法标记完成");
            }
            if (ledger.getOrderStatus() != null && ledger.getOrderStatus() == 1) {
                throw new ServiceException("订单" + ledger.getSalesContractNo() + "已完成,无需重复标记");
            }
        }
        salesLedgerMapper.update(null,
            Wrappers.<SalesLedger>lambdaUpdate()
                .in(SalesLedger::getId, ids)
                .set(SalesLedger::getOrderStatus, 1)
        );
    }
    @Override
    public void incrementPrintCount(Long id, String printType) {
        if (id == null) {
            throw new ServiceException("销售台账ID不能为空");
        }
        if (printType == null || (!"label".equals(printType) && !"document".equals(printType))) {
            throw new ServiceException("打印类型必须为 label 或 document");
        }
        SalesLedger ledger = salesLedgerMapper.selectById(id);
        if (ledger == null) {
            throw new ServiceException("销售台账不存在");
        }
        if ("label".equals(printType)) {
            int currentCount = ledger.getLabelPrintCount() == null ? 0 : ledger.getLabelPrintCount();
            salesLedgerMapper.update(null,
                Wrappers.<SalesLedger>lambdaUpdate()
                    .eq(SalesLedger::getId, id)
                    .set(SalesLedger::getLabelPrintCount, currentCount + 1)
            );
        } else {
            int currentCount = ledger.getDocumentPrintCount() == null ? 0 : ledger.getDocumentPrintCount();
            salesLedgerMapper.update(null,
                Wrappers.<SalesLedger>lambdaUpdate()
                    .eq(SalesLedger::getId, id)
                    .set(SalesLedger::getDocumentPrintCount, currentCount + 1)
            );
        }
    }
}
src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -32,7 +32,10 @@
        T2.nick_name AS entry_person_name,
        T1.payment_method,
        DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff,
        T1.delivery_status AS deliveryStatus
        T1.delivery_status AS deliveryStatus,
        T1.order_status AS orderStatus,
        T1.label_print_count AS labelPrintCount,
        T1.document_print_count AS documentPrintCount
        FROM
        sales_ledger T1
        LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
@@ -72,7 +75,10 @@
        T1.counter_review_person AS counterReviewPerson,
        T1.counter_review_person_id AS counterReviewPersonId,
        T1.counter_review_type AS counterReviewType,
        T1.counter_review_desc AS counterReviewDesc
        T1.counter_review_desc AS counterReviewDesc,
        T1.order_status AS orderStatus,
        T1.label_print_count AS labelPrintCount,
        T1.document_print_count AS documentPrintCount
        FROM sales_ledger T1
        LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
        <where>
@@ -113,6 +119,9 @@
                    OR T1.review_status IS NULL
                )
            </if>
            <if test="salesLedgerDto.orderStatus != null">
                AND T1.order_status = #{salesLedgerDto.orderStatus}
            </if>
            <if test="salesLedgerDto.width != null or salesLedgerDto.height != null">
                AND EXISTS (
                SELECT 1