| src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/sales/SalesLedgerMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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