Browse Source

分配床位提交后,返回预览结果

dzx 1 year ago
parent
commit
01ea90fa94

+ 67 - 0
src/main/java/com/xjrsoft/module/base/entity/BaseOfficeBuild.java

@@ -0,0 +1,67 @@
+package com.xjrsoft.module.base.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 学期表
+ * </p>
+ *
+ * @author baomidou
+ * @since 2023-09-02 04:52:58
+ */
+@Data
+@TableName("base_office_build")
+@ApiModel(value = "BaseOfficeBuild对象", description = "楼栋表")
+public class BaseOfficeBuild implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+
+    @ApiModelProperty("楼栋名称")
+    private String name;
+
+    @ApiModelProperty("所属校区(xjr_department)第一级")
+    private Long orgId;
+
+    @ApiModelProperty("楼层数")
+    private Integer floorTotal;
+
+    @ApiModelProperty("楼栋类型(xjr_dictionary_item[build_type])")
+    private String buildType;
+
+    @ApiModelProperty("状态(1:可用 0:停用)")
+    private Integer status;
+
+    @ApiModelProperty("地址")
+    private String address;
+
+    @ApiModelProperty("描述")
+    private String remark;
+}

+ 22 - 2
src/main/java/com/xjrsoft/module/room/controller/DistributeRoomBedController.java

@@ -1,9 +1,21 @@
 package com.xjrsoft.module.room.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseOfficeBuild;
 import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
+import com.xjrsoft.module.room.entity.Room;
+import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.service.IRoomBedService;
+import com.xjrsoft.module.room.vo.DistributeResultClassVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -13,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
 * @title: 寝室床位
@@ -32,7 +46,13 @@ public class DistributeRoomBedController {
     @PutMapping
     @ApiOperation(value = "修改寝室床位")
     @SaCheckPermission("roombed:edit")
-    public RT<Boolean> distributeRoomBed(@Valid @RequestBody DistributeRoomBedDto dto){
-        return RT.ok(roomBedService.distributeRoomBed(dto));
+    public RT<List<DistributeResultClassVo>> distributeRoomBed(@Valid @RequestBody DistributeRoomBedDto dto){
+        Boolean result = roomBedService.distributeRoomBed(dto);
+        List<DistributeResultClassVo> list = new ArrayList<>();
+        if(result){
+            list = roomBedService.getDistributeResult(dto);
+            return RT.ok(list);
+        }
+        return RT.ok(list);
     }
 }

+ 10 - 3
src/main/java/com/xjrsoft/module/room/mapper/RoomBedMapper.java

@@ -3,16 +3,17 @@ package com.xjrsoft.module.room.mapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
+import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
-import com.xjrsoft.module.room.dto.DistributeStudentDto;
 import com.xjrsoft.module.room.dto.RoomBedPageDto;
 import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.vo.DistributeClassPageVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedVo;
-import com.xjrsoft.module.student.vo.StudentInfoVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -44,5 +45,11 @@ public interface RoomBedMapper extends MPJBaseMapper<RoomBed> {
 
     List<RoomBedVo> getBedInfo(List<Long> ids);
 
-    List<StudentInfoVo> getClassStudent(DistributeStudentDto dto);
+    /**
+     * 返回分配的结果
+     * @param dto
+     * @return
+     */
+    List<DistributeResultListVo> getDistributeResult(@Param("dto") DistributeRoomBedDto dto);
+
 }

+ 9 - 0
src/main/java/com/xjrsoft/module/room/service/IRoomBedService.java

@@ -8,6 +8,8 @@ import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
 import com.xjrsoft.module.room.dto.RoomBedPageDto;
 import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.vo.DistributeClassPageVo;
+import com.xjrsoft.module.room.vo.DistributeResultClassVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 
@@ -51,4 +53,11 @@ public interface IRoomBedService extends MPJBaseService<RoomBed> {
 
     Boolean distributeRoomBed(DistributeRoomBedDto dto);
 
+    /**
+     * 返回分配的结果
+     * @param dto
+     * @return
+     */
+    List<DistributeResultClassVo> getDistributeResult(DistributeRoomBedDto dto);
+
 }

+ 31 - 0
src/main/java/com/xjrsoft/module/room/service/impl/RoomBedServiceImpl.java

@@ -2,11 +2,14 @@ package com.xjrsoft.module.room.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
@@ -17,6 +20,8 @@ import com.xjrsoft.module.room.mapper.RoomBedMapper;
 import com.xjrsoft.module.room.mapper.RoomMapper;
 import com.xjrsoft.module.room.service.IRoomBedService;
 import com.xjrsoft.module.room.vo.DistributeClassPageVo;
+import com.xjrsoft.module.room.vo.DistributeResultClassVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedVo;
@@ -28,6 +33,7 @@ import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -45,6 +51,7 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
     private final RoomMapper roomMapper;
     private final RoomBedMapper roomBedMapper;
     private final BaseStudentMapper baseStudentMapper;
+    private final BaseClassMapper baseClassMapper;
     @Override
     public Page<RoomBedPageVo> getPage(Page<RoomBedPageVo> page, RoomBedPageDto dto) {
         Page<RoomBedPageVo> result = roomBedMapper.getPage(page, dto);
@@ -140,4 +147,28 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
         }
         return true;
     }
+
+    @Override
+    public List<DistributeResultClassVo> getDistributeResult(DistributeRoomBedDto dto) {
+        List<DistributeResultListVo> list = roomBedMapper.getDistributeResult(dto);
+        List<BaseClass> classList = baseClassMapper.selectList(
+            Wrappers.lambdaQuery(BaseClass.class).in(BaseClass::getId, dto.getClassIds())
+            .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty()))
+        );
+        List<DistributeResultClassVo> result =  new ArrayList<>();
+        for (BaseClass baseClass : classList) {
+            DistributeResultClassVo classVo = new DistributeResultClassVo();
+            classVo.setClassName(baseClass.getName());
+            List<DistributeResultListVo> studentList = new ArrayList<>();
+            for (DistributeResultListVo listVo : list) {
+                if(listVo.getClassId() == null || !listVo.getClassId().equals(baseClass.getId().toString())){
+                    continue;
+                }
+                studentList.add(listVo);
+            }
+            classVo.setStudentList(studentList);
+            result.add(classVo);
+        }
+        return result;
+    }
 }

+ 34 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeResultClassVo.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 寝室床位分页列表出参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class DistributeResultClassVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班级id")
+    private String classId;
+
+    /**
+     * 学生姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("学生姓名")
+    private String className;
+
+    private List<DistributeResultListVo> studentList;
+
+}

+ 45 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeResultListVo.java

@@ -0,0 +1,45 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 寝室床位分页列表出参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class DistributeResultListVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班级id")
+    private String classId;
+
+    /**
+     * 学生姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("学生姓名")
+    private String name;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("性别")
+    private String genderCn;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("楼栋名称")
+    private String buildName;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("床位号")
+    private Integer bedNumber;
+}

+ 20 - 0
src/main/resources/mapper/room/RoomBedMapper.xml

@@ -108,4 +108,24 @@
         </foreach>
         ORDER BY t2.sort_code,t1.sort_code
     </select>
+
+    <select id="getDistributeResult" parameterType="com.xjrsoft.module.room.dto.DistributeRoomBedDto" resultType="com.xjrsoft.module.room.vo.DistributeResultListVo">
+        SELECT t5.class_id,t4.name,t6.name AS gender_cn,t3.name AS build_name,t2.room_name,t1.bed_number FROM room_bed t1
+        LEFT JOIN room t2 ON t1.room_id = t2.id
+        LEFT JOIN base_office_build t3 ON t2.office_build_id = t3.id
+        LEFT JOIN xjr_user t4 ON t1.student_user_id = t4.id
+        LEFT JOIN base_student_school_roll t5 ON t5.user_id = t4.id
+        LEFT JOIN xjr_dictionary_detail t6 ON t2.gender = t6.code AND t6.item_id = 2023000000000000004
+        WHERE t1.student_user_id IS NOT NULL AND t1.delete_mark = 0
+        AND t1.room_id IN
+        <foreach item="roomId" index="index" collection="dto.roomIds" open="(" close=")" separator=",">
+            #{roomId}
+        </foreach>
+        AND t5.class_id IN
+        <foreach item="classId" index="index" collection="dto.classIds" open="(" close=")" separator=",">
+            #{classId}
+        </foreach>
+        ORDER BY t2.sort_code,t1.sort_code
+    </select>
+
 </mapper>