From ad6a05f2535c1f29a764f352d8ca666cae1b97d1 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期六, 22 二月 2025 17:06:28 +0800
Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/project_management-java

---
 business/src/main/resources/mapper/ProjectInfoMapper.xml                |   13 +++++++++++++
 business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java |   40 ++++++++++++++++++++++++++++++++++++++--
 start/src/main/resources/application.yml                                |    1 +
 business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java            |    4 ++++
 4 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
index f3b4467..8667a1f 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
@@ -1,5 +1,6 @@
 package com.ycl.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.common.annotation.DataScope;
@@ -34,6 +35,7 @@
     *  鍒嗛〉
     */
     @DataScope(deptAlias = "d")
+    @InterceptorIgnore(tenantLine = "true")
     IPage getPage(@Param("query") ProjectInfoQuery query, IPage page);
 
     @DataScope(deptAlias = "d")
@@ -42,4 +44,6 @@
     List<ProjectVO> selectProjectDetailByIds(@Param("dataIdList") List<Long> dataIdList);
 
     ProjectInfo queryById(Integer recordId);
+
+    List<ProjectInfo> checkProjectNameAndIdIsUnique(@Param("id")Long id,@Param("name") String name,@Param("code")String code);
 }
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
index 4bdbcd7..47ece3d 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -116,6 +116,9 @@
         if (ProjectConstant.COMMIT.equals(entity.getUsedStatus()) && ProjectStatusEnum.PENDDING.getType().equals(entity.getProjectStatus())) {
             entity.setUsedStatus(ProjectConstant.PASS);
         }
+        if(!checkProjectNameAndIdIsUnique(entity,null)){
+            return Result.error("椤圭洰鍚嶆垨椤圭洰鐮佸凡瀛樺湪");
+        }
         baseMapper.insert(entity);
         addPlan(entity.getId()); //娣诲姞璁″垝琛�
         //娣诲姞鏂囦欢
@@ -133,6 +136,33 @@
         return Result.ok("娣诲姞鎴愬姛").data(entity.getId());
     }
 
+    /**
+     * 鍒ゆ柇椤圭洰鍚嶅拰椤圭洰鐮佹槸鍚﹀敮涓�
+     * @param entity from true 鏉ヨ嚜add() false 鏉ヨ嚜edit()
+     * @return
+     */
+    public boolean  checkProjectNameAndIdIsUnique(ProjectInfo entity,Long updateId){
+        QueryWrapper<ProjectInfo> queryWrapper = new QueryWrapper<ProjectInfo>();
+        if (updateId == null) {
+
+            queryWrapper.eq("project_name", entity.getProjectName());
+
+            if (StringUtils.isNotEmpty(entity.getProjectCode())) {
+                queryWrapper.or();
+                queryWrapper.eq("project_code", entity.getProjectCode());
+            }
+
+            List<ProjectInfo> project = projectInfoMapper.selectList(queryWrapper);
+
+            return project == null || project.isEmpty();
+        }else {
+
+            List<ProjectInfo> project = projectInfoMapper.checkProjectNameAndIdIsUnique(updateId,entity.getProjectName(),entity.getProjectCode());
+
+            return project == null || project.isEmpty();
+        }
+
+    }
 
     public void addPlan(Long projectInfoId) {
         Plan plan = new Plan();
@@ -154,6 +184,7 @@
     @Override
     public Result update(ProjectInfoForm form) {
         ProjectInfo entity = baseMapper.selectById(form.getId());
+
         // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
         Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
         ProjectInfoForm.getEntityByForm(form, entity);
@@ -162,6 +193,9 @@
         //濡傛灉鏄偍澶囬」鐩�(鏈紑宸ラ」鐩�)涓嶉渶瑕佸鏍�
         if (ProjectConstant.COMMIT.equals(entity.getUsedStatus()) && ProjectStatusEnum.PENDDING.getType().equals(entity.getProjectStatus())) {
             entity.setUsedStatus(ProjectConstant.PASS);
+        }
+        if(!checkProjectNameAndIdIsUnique(entity,form.getId())){
+            return Result.error("椤圭洰鍚嶆垨椤圭洰鐮佸凡瀛樺湪");
         }
         //鏇存柊椤圭洰淇℃伅
         baseMapper.updateById(entity);
@@ -775,12 +809,14 @@
     @Transactional(rollbackFor = Exception.class)
     public Result editProject(ProjectForm form) {
         if (ObjectUtil.isNotNull(form.getProjectInfoForm())) {
+
             if (ObjectUtil.isNull(form.getProjectInfoForm().getId())) {
                 //鏂板
-                ((ProjectInfoServiceImpl) AopContext.currentProxy()).add(form.getProjectInfoForm());
+                return ((ProjectInfoServiceImpl) AopContext.currentProxy()).add(form.getProjectInfoForm());
+
             } else {
                 //鏇存柊
-                ((ProjectInfoServiceImpl) AopContext.currentProxy()).update(form.getProjectInfoForm());
+                return ((ProjectInfoServiceImpl) AopContext.currentProxy()).update(form.getProjectInfoForm());
             }
         }
         if (ObjectUtil.isNotNull(form.getProjectInvestmentInfoForm())) {
diff --git a/business/src/main/resources/mapper/ProjectInfoMapper.xml b/business/src/main/resources/mapper/ProjectInfoMapper.xml
index 2ab2752..f81ae05 100644
--- a/business/src/main/resources/mapper/ProjectInfoMapper.xml
+++ b/business/src/main/resources/mapper/ProjectInfoMapper.xml
@@ -232,4 +232,17 @@
     <select id="queryById" resultType="com.ycl.domain.entity.ProjectInfo">
         select * from t_project_info where id = #{id} and deleted = 0
     </select>
+
+    <resultMap id="pInfo" type="com.ycl.domain.entity.ProjectInfo">
+        <id column="id" property="id"/>
+    </resultMap>
+    <select id="checkProjectNameAndIdIsUnique" resultMap="pInfo">
+        select p.id from t_project_info p where  p.project_name =#{name}
+        <if test="code !=null and code !=''">
+            or p.project_code =#{code}
+        </if>
+        having p.id != #{id}
+
+    </select>
+
 </mapper>
diff --git a/start/src/main/resources/application.yml b/start/src/main/resources/application.yml
index 3be20ad..5e1ce3d 100644
--- a/start/src/main/resources/application.yml
+++ b/start/src/main/resources/application.yml
@@ -5,6 +5,7 @@
   # 瀹炰綋鎵弿锛屽涓猵ackage鐢ㄩ�楀彿鎴栬�呭垎鍙峰垎闅�
   typeAliasesPackage: com.ycl.**.domain
   configuration:
+    shrink-whitespaces-in-sql: true #浠嶴QL涓垹闄ゅ浣欑殑绌烘牸瀛楃
     default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler # 閫氱敤鏋氫妇澶勭悊鍣�
   #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 鏃ュ織鎵撳嵃
   global-config:

--
Gitblit v1.8.0