From cc6dd37d631d3c526da594eeb06cfc1fc7c21ea6 Mon Sep 17 00:00:00 2001
From: Mlxa0324 <mlx950324@163.com>
Date: Fri, 24 Feb 2023 22:09:29 +0800
Subject: [PATCH] =?UTF-8?q?=E9=99=A2=E6=A0=A1=E9=AA=8C=E8=AF=81=E7=8F=AD?=
 =?UTF-8?q?=E7=BA=A7=E9=87=8D=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../jlw/service/SchoolClassService.java       | 27 +++++++++++++++++--
 .../ibeetl/jlw/web/SchoolClassController.java | 14 +++++-----
 2 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java b/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java
index 4cd3de33..6d117afa 100644
--- a/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java
+++ b/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java
@@ -13,10 +13,12 @@ import com.ibeetl.jlw.entity.SchoolClass;
 import com.ibeetl.jlw.web.query.SchoolClassQuery;
 import org.beetl.sql.core.SqlId;
 import org.beetl.sql.core.engine.PageQuery;
+import org.beetl.sql.core.query.interfacer.StrongValue;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -78,7 +80,7 @@ public class SchoolClassService extends CoreBaseService<SchoolClass>{
      * 验证班级编号数据,是否已经存在
      * @param classList
      */
-    public void validateClassSnListIsExistsThrow(List<SchoolClass> classList) {
+    public void validateClassSnListIsExistsThrow(List<SchoolClass> classList, String orgIds) {
         if (CollectionUtil.isEmpty(classList)) {
             return;
         }
@@ -92,13 +94,33 @@ public class SchoolClassService extends CoreBaseService<SchoolClass>{
         // 查询库里已经存在的编号
         List<String> existsList = schoolClassDao.createLambdaQuery()
                 .andIsNotNull(SchoolClass::getClassSn)
-                .andIn(SchoolClass::getClassSn, classSnList).select(String.class,"class_sn");
+                .andIn(SchoolClass::getClassSn, classSnList)
+                .andIn(SchoolClass::getOrgId, new StrongValue() {
+                    @Override
+                    public boolean isEffective() {
+                        return StrUtil.isNotBlank(orgIds);
+                    }
+
+                    @Override
+                    public Object getValue() {
+                        return Arrays.asList(orgIds.split(","));
+                    }
+                })
+                .andEq(SchoolClass::getClassStatus, 1).select(String.class,"class_sn");
         // 如果存在的话,属于异常数据
         String errorClassSns = CollectionUtil.emptyIfNull(existsList).stream().collect(Collectors.joining(","));
         // 构建异常信息,传给前端
         Assert.isTrue(StrUtil.isBlank(errorClassSns), "已存在的班级编号:\"{}\",请修改后再进行提交!", errorClassSns);
     }
 
+    /**
+     * 没有传递机构ID的验证方法
+     * @param classList
+     */
+    public void validateClassSnListIsExistsThrow(List<SchoolClass> classList) {
+        validateClassSnListIsExistsThrow(classList, null);
+    }
+
     /**
      * 查询所有的班级
      *
@@ -108,4 +130,5 @@ public class SchoolClassService extends CoreBaseService<SchoolClass>{
 //        Long currentOrgId = SpringUtil.getBean(CorePlatformService.class).getCurrentOrgId();
         return SpringUtil.getBean(SchoolClassDao.class).getAllSchoolClass(null);
     }
+
 }
\ No newline at end of file
diff --git a/web/src/main/java/com/ibeetl/jlw/web/SchoolClassController.java b/web/src/main/java/com/ibeetl/jlw/web/SchoolClassController.java
index 046adde3..43acfa04 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/SchoolClassController.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/SchoolClassController.java
@@ -184,14 +184,15 @@ public class SchoolClassController extends BaseController {
             schoolClass.setClassStatus(1);
             schoolClass.setUserId(coreUser.getId());
 
-            // 判断班级编号是否已经存在,并抛出异常
-            if(StrUtil.isNotBlank(schoolClass.getClassSn())) {
-                schoolClassService.validateClassSnListIsExistsThrow(Collections.singletonList(schoolClass));
-            }
-
             if(null != schoolClass.getUniversitiesCollegesId()){
                 UniversitiesColleges universitiesColleges = universitiesCollegesService.queryById(schoolClass.getUniversitiesCollegesId());
                 schoolClass.setOrgId(universitiesColleges.getOrgId());
+
+                // 判断班级编号是否已经存在,并抛出异常
+                // 如果院校ID不为空,则验证方法的区域缩减到院校级别的。不使用全表验证了
+                if(StrUtil.isNotBlank(schoolClass.getClassSn())) {
+                    schoolClassService.validateClassSnListIsExistsThrow(Collections.singletonList(schoolClass), universitiesColleges.getOrgId().toString());
+                }
             }else {
                 UniversitiesColleges universitiesColleges = new UniversitiesColleges();
                 universitiesColleges.setOrgId(coreUser.getOrgId());
@@ -330,11 +331,12 @@ public class SchoolClassController extends BaseController {
             }, true);
 
             try {
-                schoolClassService.validateClassSnListIsExistsThrow(classList);
+                schoolClassService.validateClassSnListIsExistsThrow(classList, classList.get(0).getOrgId().toString());
             }
             catch (IllegalArgumentException e) {
                 listener.putFailMessage(e.getMessage());
             }
+            catch (Exception e) { }
             finally {
                 // 再次判断错误的结果集
                 Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage()));