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