zlwu 1 rok temu
rodzic
commit
99b771bb51

+ 5 - 0
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgDormRoom.java

@@ -67,6 +67,11 @@ public class XgDormRoom extends TenantEntity {
      */
     private String roomStatus;
 
+    /**
+     * 排序号
+     */
+    private Long sort;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */

+ 5 - 1
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgDormRoomBo.java

@@ -70,6 +70,11 @@ public class XgDormRoomBo extends BaseEntity {
      */
     private String roomStatus;
 
+    /**
+     * 排序号
+     */
+    private Long sort;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */
@@ -80,5 +85,4 @@ public class XgDormRoomBo extends BaseEntity {
      */
     private String remark;
 
-
 }

+ 28 - 2
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgDormRoomVo.java

@@ -11,8 +11,7 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-
-
+import com.fasterxml.jackson.annotation.JsonFormat;
 
 /**
  * 宿舍房间信息视图对象 xg_dorm_room
@@ -82,6 +81,12 @@ public class XgDormRoomVo implements Serializable {
     @ExcelProperty(value = "房间状态(0可用 1维修中 2停用)")
     private String roomStatus;
 
+    /**
+     * 排序号
+     */
+    @ExcelProperty(value = "排序号")
+    private Long sort;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */
@@ -94,5 +99,26 @@ public class XgDormRoomVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 
 }

+ 4 - 2
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormRoomServiceImpl.java

@@ -144,8 +144,9 @@ public class XgDormRoomServiceImpl implements IXgDormRoomService {
     private LambdaQueryWrapper<XgDormRoom> buildQueryWrapper(XgDormRoomBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<XgDormRoom> lqw = Wrappers.lambdaQuery();
-        lqw.orderByAsc(XgDormRoom::getFloorNum); // 优先按楼层排序
-        lqw.orderByAsc(XgDormRoom::getRoomName); // 其次按房间名称排序
+        lqw.orderByAsc(XgDormRoom::getSort); // 第一优先级:按排序号升序
+        lqw.orderByAsc(XgDormRoom::getFloorNum); // 第二优先级:按楼层升序
+        lqw.orderByAsc(XgDormRoom::getRoomName); // 第三优先级:按房间名称升序
         lqw.like(StringUtils.isNotBlank(bo.getRoomCode()), XgDormRoom::getRoomCode, bo.getRoomCode());
         lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XgDormRoom::getRoomName, bo.getRoomName());
         lqw.eq(bo.getBuildingId() != null, XgDormRoom::getBuildingId, bo.getBuildingId());
@@ -154,6 +155,7 @@ public class XgDormRoomServiceImpl implements IXgDormRoomService {
         lqw.eq(bo.getActualBeds() != null, XgDormRoom::getActualBeds, bo.getActualBeds());
         lqw.eq(bo.getRoomArea() != null, XgDormRoom::getRoomArea, bo.getRoomArea());
         lqw.eq(StringUtils.isNotBlank(bo.getRoomStatus()), XgDormRoom::getRoomStatus, bo.getRoomStatus());
+        lqw.eq(bo.getSort() != null, XgDormRoom::getSort, bo.getSort());
         lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormRoom::getDeleted, bo.getDeleted());
         return lqw;
     }

+ 14 - 4
docs/开发文档/API/宿舍房间管理API.md

@@ -302,6 +302,7 @@ xgss:dormRoom:list
 | floorNum   | Integer | 否   | 楼层号,精确查询       |
 | roomType   | String  | 否   | 房间类型(1标准间 2单人间 3套间) |
 | roomStatus | String  | 否   | 房间状态(0正常 1维修中 2停用) |
+| sort       | Integer | 否   | 排序号,精确查询       |
 
 #### 返回结果
 
@@ -320,6 +321,7 @@ xgss:dormRoom:list
       "actualBeds": 4,
       "roomArea": 20.5,
       "roomStatus": "0",
+      "sort": 0,
       "remark": "标准四人间",
       "createBy": 1,
       "createTime": "2025-07-22 09:15:30",
@@ -337,6 +339,7 @@ xgss:dormRoom:list
       "actualBeds": 4,
       "roomArea": 20.5,
       "roomStatus": "0",
+      "sort": 0,
       "remark": "标准四人间",
       "createBy": 1,
       "createTime": "2025-07-22 09:15:30",
@@ -363,6 +366,7 @@ xgss:dormRoom:list
 | actualBeds   | Integer | 实际床位数                              |
 | roomArea     | Double  | 房间面积(平方米)                        |
 | roomStatus   | String  | 房间状态(0正常 1维修中 2停用)            |
+| sort         | Integer | 排序号,数字越小排序越靠前               |
 | remark       | String  | 备注                                    |
 | createBy     | Long    | 创建者ID                                |
 | createTime   | Date    | 创建时间                                |
@@ -371,11 +375,17 @@ xgss:dormRoom:list
 
 #### 排序规则
 
-房间列表按照以下顺序排序:
-1. 优先按楼层号(floorNum)升序排列
-2. 其次按房间名称(roomName)升序排列
+房间列表按照以下优先级顺序排序:
+1. **第一优先级**:按排序号(sort)升序排列
+2. **第二优先级**:按楼层号(floorNum)升序排列  
+3. **第三优先级**:按房间名称(roomName)升序排列
 
-这确保了在宿舍管理系统中房间按照从低楼层到高楼层的顺序展示,相同楼层的房间按照名称顺序排列,提供更直观的浏览体验。
+**排序逻辑说明**:
+- **自定义排序**:`sort` 字段允许管理员为房间设置自定义排序,数字越小排序越靠前
+- **默认排序**:当 `sort` 值相同或为0时,按楼层和房间名称的自然顺序排列
+- **灵活管理**:支持同一楼层内房间的个性化排序需求
+
+这确保了宿舍管理系统既能保持传统的楼层顺序展示,又能支持管理员根据实际需要进行个性化排序调整。
 
 #### 错误码
 

+ 1 - 0
docs/设计文档/database/hzdyjs_xg0820.sql

@@ -4531,6 +4531,7 @@ CREATE TABLE `xg_dorm_room` (
   `actual_beds` int(11) DEFAULT '4' COMMENT '实际床位数',
   `room_area` decimal(10,2) DEFAULT NULL COMMENT '房间面积(平方米)',
   `room_status` char(1) DEFAULT '0' COMMENT '房间状态(0可用 1维修中 2停用)',
+  `sort` int(11) DEFAULT '0' COMMENT '排序号',
   `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
   `tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
   `create_by` bigint(20) DEFAULT NULL COMMENT '创建者',

+ 15 - 0
web/src/api/xg/xgss/dormRoom/types.ts

@@ -49,6 +49,11 @@ export interface DormRoomVO {
    */
   roomStatus: string;
 
+  /**
+   * 排序号
+   */
+  sort: number;
+
   /**
    * 删除标志(0代表存在 1代表删除)
    */
@@ -106,6 +111,11 @@ export interface DormRoomForm extends BaseEntity {
    */
   roomStatus?: string;
 
+  /**
+   * 排序号
+   */
+  sort?: number;
+
   /**
    * 删除标志(0代表存在 1代表删除)
    */
@@ -158,6 +168,11 @@ export interface DormRoomQuery extends PageQuery {
    */
   roomStatus?: string;
 
+  /**
+   * 排序号
+   */
+  sort?: number;
+
   /**
    * 删除标志(0代表存在 1代表删除)
    */

+ 11 - 0
web/src/views/xg/xgss/xsssfjgl/components/RoomDialog.vue

@@ -34,6 +34,16 @@
           <el-radio label="2">停用</el-radio>
         </el-radio-group>
       </el-form-item>
+      <el-form-item label="排序号" prop="sort">
+        <el-input-number
+          v-model="form.sort"
+          :min="0"
+          :max="9999"
+          controls-position="right"
+          style="width: 100%"
+          placeholder="排序号,数字越小越靠前"
+        />
+      </el-form-item>
       <el-form-item label="备注" prop="remark">
         <el-input v-model="form.remark" type="textarea" placeholder="请输入备注内容" />
       </el-form-item>
@@ -78,6 +88,7 @@ const initFormData: DormRoomForm = {
   roomArea: 0,
   roomType: '1',
   roomStatus: '0',
+  sort: 0,
   remark: ''
 };
 

+ 1 - 0
web/src/views/xg/xgss/xsssfjgl/index.vue

@@ -130,6 +130,7 @@
                         <span class="text-gray-500">类型:</span>{{ room.roomType === '1' ? '标准间' : room.roomType === '2' ? '单人间' : '套间' }}
                       </div>
                       <div class="mb-2"><span class="text-gray-500">床位:</span>{{ room.currentBeds || 0 }}/{{ room.actualBeds }}</div>
+                      <div class="mb-2"><span class="text-gray-500">排序:</span>{{ room.sort || 0 }}</div>
                       <div class="flex justify-between mt-4">
                         <div>
                           <el-button type="primary" link size="small" @click="handleManageBeds(room)">床位管理</el-button>