From f67161d150eb5720b28fd3f9fbb40c4145d1146c Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 10 六月 2026 11:42:37 +0800
Subject: [PATCH] feat:1.已审核只能编辑单价 2.添加完成按钮 3.添加标签打印和单据打印次数展示

---
 src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java                  |    3 +
 src/main/resources/mapper/sales/SalesLedgerMapper.xml                  |   13 +++
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java    |   34 +++++++++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   54 ++++++++++++++++++
 src/main/java/com/ruoyi/sales/pojo/SalesLedger.java                    |   18 ++++++
 src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java         |   12 ++++
 6 files changed, 132 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index a1ae852..994b390 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/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("閿�鍞彴璐D涓嶈兘涓虹┖");
+        }
+        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)
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index 8180698..d7de2c3 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -93,4 +93,7 @@
 
     @ApiModelProperty("鍙嶅鏍告弿杩�")
     private String counterReviewDesc;
+
+    @ApiModelProperty("璁㈠崟鐘舵�侊細0-杩涜涓紝1-宸插畬鎴�")
+    private Integer orderStatus;
 }
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index f18a134..9728a53 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/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;
 }
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index 755b3e0..a7f88f7 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/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 閿�鍞彴璐D
+     * @param printType 鎵撳嵃绫诲瀷锛歭abel=鏍囩鎵撳嵃锛宒ocument=鍗曟嵁鎵撳嵃
+     */
+    void incrementPrintCount(Long id, String printType);
 }
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 9c7f2a2..527268f 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/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("閿�鍞彴璐D涓嶈兘涓虹┖");
+        }
+        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)
+            );
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 8fd4d29..b2d6781 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/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

--
Gitblit v1.9.3