From 481d8165f26fc7e37f0e87f6444ac0340bb563a3 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期二, 03 十一月 2026 18:53:22 +0800
Subject: [PATCH] fix: 移植长辉已验证的四类接口 500/体验问题(不含物料颜色字段)

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
index 2c4bdfe..03098d9 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
@@ -28,8 +28,21 @@
 @Mapper
 public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
 
+    default CrmContractDO selectByNoForUpdate(String no) {
+        return selectOne(new LambdaQueryWrapperX<CrmContractDO>().eq(CrmContractDO::getNo, no).last("FOR UPDATE"));
+    }
+
+    default CrmContractDO selectByIdForUpdate(Long id) {
+        return selectOne(new LambdaQueryWrapperX<CrmContractDO>().eq(CrmContractDO::getId, id).last("FOR UPDATE"));
+    }
     default CrmContractDO selectByNo(String no) {
         return selectOne(CrmContractDO::getNo, no);
+    }
+
+    default CrmContractDO selectByNameAndCustomerId(String name, Long customerId) {
+        return selectOne(new LambdaQueryWrapperX<CrmContractDO>()
+                .eq(CrmContractDO::getName, name)
+                .eq(CrmContractDO::getCustomerId, customerId));
     }
 
     /**
@@ -45,6 +58,8 @@
     default int submitAndResetAuditInfo(Long id, Integer status) {
         return update(null, new LambdaUpdateWrapper<CrmContractDO>()
                 .eq(CrmContractDO::getId, id)
+                .in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(),
+                        CrmAuditStatusEnum.REJECT.getStatus())
                 .set(CrmContractDO::getAuditStatus, status)
                 .set(CrmContractDO::getReviewerId, null)
                 .set(CrmContractDO::getReviewerName, null)
@@ -68,6 +83,7 @@
                               String reviewerName, String reviewRemark) {
         return update(null, new LambdaUpdateWrapper<CrmContractDO>()
                 .eq(CrmContractDO::getId, id)
+                .eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus())
                 .set(CrmContractDO::getAuditStatus, status)
                 .set(CrmContractDO::getReviewerId, reviewerId)
                 .set(CrmContractDO::getReviewerName, reviewerName)
@@ -75,6 +91,20 @@
                 .set(CrmContractDO::getReviewRemark, reviewRemark));
     }
 
+    /**
+     * BPM 瀹℃壒缁撴潫鍚庡洖鍐欏悎鍚岀姸鎬�
+     *
+     * 浠呭綋鍚堝悓浠嶅浜庛�屽鎵逛腑銆嶆椂鏇存柊锛岄伩鍏嶄笌鏃у鎵硅矾寰勯噸澶嶈鐩栥��
+     */
+    default int updateAuditStatusByBpm(Long id, Integer status, String reviewRemark) {
+        return update(null, new LambdaUpdateWrapper<CrmContractDO>()
+                .eq(CrmContractDO::getId, id)
+                .eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus())
+                .set(CrmContractDO::getAuditStatus, status)
+                .set(CrmContractDO::getReviewTime, LocalDateTime.now())
+                .set(CrmContractDO::getReviewRemark, reviewRemark));
+    }
+
     default PageResult<CrmContractDO> selectPageByCustomerId(CrmContractPageReqVO pageReqVO) {
         return selectPage(pageReqVO, new LambdaQueryWrapperX<CrmContractDO>()
                 .eq(CrmContractDO::getCustomerId, pageReqVO.getCustomerId())

--
Gitblit v1.9.3