Browse Source

1.13,补充

Crazy 6 months ago
parent
commit
da54b041a5

+ 2 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/StudentSelectSupervisorRecordController.java

@@ -232,7 +232,8 @@ public class StudentSelectSupervisorRecordController {
             if (updateReqVO.getSupervisorId() != null) {
                 AdminUserDO supervisor = adminUserService.getUser(updateReqVO.getSupervisorId());
                 if (supervisor != null) {
-                    if (supervisor.getUserType().equals("3")) { //如果是校内导师
+                    if (supervisor.getUserType().equals("3")) { //如果选择的是校内导师
+                        saveReqVO.setExternalSupervisorId(0L);//初始化选择的校外导师
                         saveReqVO.setSupervisorId(updateReqVO.getSupervisorId());
                     } else if (supervisor.getUserType().equals("5")) {//如果是校外导师
                         saveReqVO.setExternalSupervisorId(updateReqVO.getSupervisorId());

+ 53 - 8
yudao-module-system/yudao-module-system-biz/src/main/resources/Mapper/user/AdminUserMapper.xml

@@ -510,17 +510,39 @@
         GROUP BY
         a.id
 
-        <!-- 合并 HAVING 子句 -->
+        <!-- 在 HAVING 子句中引用 selectStatus 别名 -->
         HAVING
         CASE
         WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
-        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2  -- 如果有 2
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
         WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
         ELSE 0
         END
         <choose>
-            <when test="isPassed == 0">IN (0, 1)</when>
-            <when test="isPassed == 1">IN (2, 4)</when>
+            <when test="isPassed == 0">
+                IN (0, 1)
+                <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
+                    AND
+                    CASE
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
+                    ELSE 0
+                    END = #{reqVO.selectStatus}
+                </if>
+            </when>
+            <when test="isPassed == 1">
+                IN (2, 4)
+                <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
+                    AND
+                    CASE
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
+                    ELSE 0
+                    END = #{reqVO.selectStatus}
+                </if>
+            </when>
         </choose>
 
         ORDER BY
@@ -579,17 +601,40 @@
         AND a.deleted = 0
         GROUP BY a.id
 
-        <!-- 合并 HAVING 条件 -->
+        <!-- 在 HAVING 子句中引用 selectStatus 别名 -->
+        <!-- 在 HAVING 子句中引用 selectStatus 别名 -->
         HAVING
         CASE
         WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
-        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2  -- 如果有 2
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
         WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
         ELSE 0
         END
         <choose>
-            <when test="isPassed == 0">IN (0, 1)</when>
-            <when test="isPassed == 1">IN (2, 4)</when>
+            <when test="isPassed == 0">
+                IN (0, 1)
+                <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
+                    AND
+                    CASE
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
+                    ELSE 0
+                    END = #{reqVO.selectStatus}
+                </if>
+            </when>
+            <when test="isPassed == 1">
+                IN (2, 4)
+                <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
+                    AND
+                    CASE
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
+                    WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
+                    ELSE 0
+                    END = #{reqVO.selectStatus}
+                </if>
+            </when>
         </choose>
 
         ) AS subquery;