浏览代码

修复床位分配,选择性别后任然返回非选择性别的数据

dzx 1 年之前
父节点
当前提交
a26ff781ee

+ 11 - 8
src/main/java/com/xjrsoft/module/room/service/impl/RoomBedServiceImpl.java

@@ -172,25 +172,28 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
             Integer needCout = 0;
             Integer distributeCount = 0;
             Integer maleCount = 0, femaleCount = 0;
+            record.setMaleCount(maleCount);
+            record.setFemaleCount(femaleCount);
 
             if("SB10001".equals(dto.getGender()) && allStayMaleCountMap.get(record.getId()) != null){
-                needCout = allStayMaleCountMap.get(record.getId());
-                if(allArrangedMaleCountMap.get(record.getId()) != null){
-                    distributeCount = (allArrangedMaleCountMap.get(record.getId()) == null ? 0 : allArrangedMaleCountMap.get(record.getId()));
-                }
                 if(allStayMaleCountMap.get(record.getId()) != null){
                     maleCount = allStayMaleCountMap.get(record.getId()) - (allArrangedMaleCountMap.get(record.getId()) == null ? 0 : allArrangedMaleCountMap.get(record.getId()));
                 }
                 record.setMaleCount(maleCount);
-            }else if("SB10002".equals(dto.getGender())){
-                needCout = femaleCount;
-                if(allArrangedFemaleCountMap.get(record.getId()) != null){
-                    distributeCount = (allArrangedFemaleCountMap.get(record.getId()) == null ? 0 : allArrangedFemaleCountMap.get(record.getId()));
+                needCout = allStayMaleCountMap.get(record.getId());
+                if(allArrangedMaleCountMap.get(record.getId()) != null){
+                    distributeCount = (allArrangedMaleCountMap.get(record.getId()) == null ? 0 : allArrangedMaleCountMap.get(record.getId()));
                 }
+
+            }else if("SB10002".equals(dto.getGender())){
                 if(allStayFemaleCountMap.get(record.getId()) != null){
                     femaleCount = allStayFemaleCountMap.get(record.getId()) - (allArrangedFemaleCountMap.get(record.getId()) == null ? 0 : allArrangedFemaleCountMap.get(record.getId()));
                 }
                 record.setFemaleCount(femaleCount);
+                needCout = femaleCount;
+                if(allArrangedFemaleCountMap.get(record.getId()) != null){
+                    distributeCount = (allArrangedFemaleCountMap.get(record.getId()) == null ? 0 : allArrangedFemaleCountMap.get(record.getId()));
+                }
             }else{
                 needCout = allStayCountMap.get(record.getId());
                 if(allArrangedCountMap.get(record.getId()) != null){

+ 13 - 18
src/main/resources/mapper/room/RoomBedMapper.xml

@@ -65,24 +65,6 @@
             </if>
         </if>
         ) AS need_count,
-        (
-            SELECT COUNT(*) FROM base_student c1
-            LEFT JOIN base_student_school_roll c2 ON c1.user_id = c2.user_id
-            LEFT JOIN xjr_dictionary_detail c3 ON c2.stduy_status = c3.code AND c3.item_id = 2023000000000000030
-            left join xjr_user c4 on c1.user_id = c4.id
-            WHERE c1.delete_mark = 0 AND c2.delete_mark = 0
-            AND c3.code = 'FB3002' AND c2.class_id = t1.id
-            and c4.gender = 1
-        ) as male_count,
-        (
-            SELECT COUNT(*) FROM base_student c1
-            LEFT JOIN base_student_school_roll c2 ON c1.user_id = c2.user_id
-            LEFT JOIN xjr_dictionary_detail c3 ON c2.stduy_status = c3.code AND c3.item_id = 2023000000000000030
-            left join xjr_user c4 on c1.user_id = c4.id
-            WHERE c1.delete_mark = 0 AND c2.delete_mark = 0
-            AND c3.code = 'FB3002' AND c2.class_id = t1.id
-            and c4.gender = 2
-        ) as female_count,
         (
         SELECT COUNT(*) FROM room_bed a1
         LEFT JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id
@@ -105,14 +87,27 @@
         SELECT COUNT(*) FROM base_student c1
         LEFT JOIN base_student_school_roll c2 ON c1.user_id = c2.user_id
         LEFT JOIN xjr_dictionary_detail c3 ON c2.stduy_status = c3.code AND c3.item_id = 2023000000000000030
+        left join xjr_user c4 on c4.id = c1.user_id
         WHERE c1.delete_mark = 0 AND c2.delete_mark = 0
         AND c3.code = 'FB3002' AND c2.class_id = t1.id
+        <if test="dto.gender != null">
+            <if test="dto.gender == 'SB10001'">
+                and c4.gender = 1
+            </if>
+            <if test="dto.gender == 'SB10002'">
+                and c4.gender = 2
+            </if>
+        </if>
         ) >
         (
         SELECT COUNT(*) FROM room_bed a1
         LEFT JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id
+        left join room a3 on a3.id = a1.room_id
         WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
         AND a2.class_id = t1.id
+        <if test="dto.gender != null">
+            and a3.gender = #{dto.gender}
+        </if>
         )
         <if test="dto.gradeId != null">
             and t1.grade_id = #{dto.gradeId}