From c1413aeb9fe5d736af38e25285ac8d88074a89bf Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期五, 28 二月 2025 01:01:23 +0800
Subject: [PATCH] 开发完成运营房屋查询

---
 service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java |  291 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 200 insertions(+), 91 deletions(-)

diff --git a/service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java b/service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java
index 025d7c0..cc32803 100644
--- a/service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java
+++ b/service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java
@@ -1,28 +1,25 @@
 package com.java110.community.cmd.room;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.community.bmo.room.IQueryRoomStatisticsBMO;
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
-import com.java110.dto.FloorDto;
-import com.java110.dto.RoomDto;
-import com.java110.dto.UnitDto;
-import com.java110.dto.basePrivilege.BasePrivilegeDto;
+import com.java110.doc.annotation.*;
+import com.java110.dto.floor.FloorDto;
+import com.java110.dto.room.RoomDto;
+import com.java110.dto.unit.UnitDto;
+import com.java110.dto.privilege.BasePrivilegeDto;
+import com.java110.dto.data.DataPrivilegeStaffDto;
 import com.java110.dto.owner.OwnerDto;
-import com.java110.intf.community.IFloorInnerServiceSMO;
-import com.java110.intf.community.IMenuInnerServiceSMO;
-import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.community.IUnitInnerServiceSMO;
+import com.java110.intf.community.*;
 import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.SMOException;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.BeanConvertUtil;
-import com.java110.utils.util.DateUtil;
-import com.java110.utils.util.StringUtil;
+import com.java110.utils.util.*;
 import com.java110.vo.api.ApiRoomDataVo;
 import com.java110.vo.api.ApiRoomVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +30,39 @@
 import java.util.List;
 import java.util.Map;
 
+@Java110CmdDoc(title = "鏌ヨ鎴垮眿",
+        description = "鏌ヨ鎴垮眿淇℃伅",
+        httpMethod = "get",
+        url = "http://{ip}:{port}/app/room.queryRooms",
+        resource = "communityDoc",
+        author = "鍚村鏂�",
+        serviceCode = "room.queryRooms",
+        seq = 16
+)
+
+@Java110ParamsDoc(params = {
+        @Java110ParamDoc(name = "page", type = "int", length = 11, remark = "椤垫暟"),
+        @Java110ParamDoc(name = "row", type = "int", length = 11, remark = "琛屾暟"),
+        @Java110ParamDoc(name = "communityId", length = 30, remark = "灏忓尯ID"),
+        @Java110ParamDoc(name = "roomId", length = 30, remark = "鎴垮眿ID"),
+        @Java110ParamDoc(name = "floorId", length = 30, remark = "妤兼爧ID"),
+        @Java110ParamDoc(name = "unitId", length = 30, remark = "鍗曞厓ID"),
+})
+
+@Java110ResponseDoc(
+        params = {
+                @Java110ParamDoc(name = "records", type = "int", length = 11, remark = "鎬婚〉鏁�"),
+                @Java110ParamDoc(name = "total", type = "int", length = 11, remark = "鎬绘暟鎹�"),
+                @Java110ParamDoc(name = "rooms", type = "Object", remark = "鏈夋晥鏁版嵁"),
+                @Java110ParamDoc(parentNodeName = "rooms", name = "roomName", type = "String", remark = "鎴垮眿鍚嶇О"),
+                @Java110ParamDoc(parentNodeName = "rooms", name = "roomId", type = "String", remark = "鎴垮眿缂栧彿"),
+        }
+)
+
+@Java110ExampleDoc(
+        reqBody = "http://{ip}:{port}/app/room.queryRooms?floorId=&floorName=&unitId=&roomNum=&roomId=&state=&section=&roomType=1010301&roomSubType=&flag=0&page=1&row=10&communityId=2022081539020475",
+        resBody = "{\"page\":0,\"records\":1,\"rooms\":[{\"apartment\":\"10101\",\"apartmentName\":\"涓�瀹や竴鍘匼",\"builtUpArea\":\"11.00\",\"endTime\":\"2037-01-01 00:00:00\",\"feeCoefficient\":\"1.00\",\"floorId\":\"732022081690440002\",\"floorNum\":\"D\",\"idCard\":\"\",\"layer\":\"1\",\"link\":\"18909711447\",\"ownerId\":\"772022082070860017\",\"ownerName\":\"寮犳澃\",\"remark\":\"11\",\"roomArea\":\"11.00\",\"roomAttrDto\":[{\"attrId\":\"112022082081600012\",\"listShow\":\"Y\",\"page\":-1,\"records\":0,\"roomId\":\"752022082030880010\",\"row\":0,\"specCd\":\"9035007248\",\"specName\":\"绮捐淇甛",\"statusCd\":\"0\",\"total\":0,\"value\":\"20\",\"valueName\":\"20\"}],\"roomId\":\"752022082030880010\",\"roomName\":\"D-1-1001\",\"roomNum\":\"1001\",\"roomRent\":\"0.00\",\"roomSubType\":\"110\",\"roomSubTypeName\":\"浣忓畢\",\"roomType\":\"1010301\",\"section\":\"1\",\"startTime\":\"2022-09-03 18:50:53\",\"state\":\"2001\",\"stateName\":\"宸插叆浣廫",\"unitId\":\"742022082058950007\",\"unitNum\":\"1\"}],\"rows\":0,\"total\":2}"
+)
 @Java110Cmd(serviceCode = "room.queryRooms")
 public class QueryRoomsCmd extends Cmd {
 
@@ -52,7 +82,13 @@
     private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
 
     @Autowired
+    private IDataPrivilegeUnitV1InnerServiceSMO dataPrivilegeUnitV1InnerServiceSMOImpl;
+
+    @Autowired
     private IMenuInnerServiceSMO menuInnerServiceSMOImpl;
+
+    @Autowired
+    private IQueryRoomStatisticsBMO queryRoomStatisticsBMOImpl;
 
     protected static final int MAX_ROW = 10000;
 
@@ -75,7 +111,7 @@
         //鏍¢獙灏忓尯妤糏D鍜屽皬鍖烘槸鍚︽湁瀵瑰簲鍏崇郴
         int total = floorInnerServiceSMOImpl.queryFloorsCount(BeanConvertUtil.covertBean(reqJson, FloorDto.class));
 
-        if (total < 1) {
+        if (!StringUtil.isEmpty(reqJson.getString("floorId")) && total < 1) {
             throw new IllegalArgumentException("浼犲叆灏忓尯妤糏D涓嶆槸璇ュ皬鍖虹殑妤�");
         }
     }
@@ -84,87 +120,33 @@
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
         RoomDto roomDto = BeanConvertUtil.covertBean(reqJson, RoomDto.class);
 
-        //瀵艰嚧涓氬姟鍙楃悊鎼滅储鏌ヨ
-//        if (reqJson.containsKey("flag") && reqJson.getString("flag").equals("1")) {
-//            if (reqJson.containsKey("roomNumLike") && !StringUtil.isEmpty(reqJson.getString("roomNumLike"))) {
-//                String[] roomNumLikes = reqJson.getString("roomNumLike").split("-");
-//                roomDto.setFloorNum(roomNumLikes[0]);
-//                roomDto.setUnitNum(roomNumLikes[1]);
-//                roomDto.setRoomNum(roomNumLikes[2]);
-//                roomDto.setRoomNumLike("");
-//            }
-//        }
-        String roomId = "";
-        String unitId = "";
-        if (reqJson.containsKey("flag") && "0".equals(reqJson.getString("flag"))
-                && reqJson.containsKey("floorNum") && !StringUtil.isEmpty(reqJson.getString("floorNum"))
-                && reqJson.containsKey("unitNum") && !StringUtil.isEmpty(reqJson.getString("unitNum"))
-                && reqJson.containsKey("roomNum") && !StringUtil.isEmpty(reqJson.getString("roomNum"))) {
-            FloorDto floorDto = new FloorDto();
-            floorDto.setFloorNum(reqJson.getString("floorNum"));
-            floorDto.setCommunityId(reqJson.getString("communityId"));
-            List<FloorDto> floorDtos = floorInnerServiceSMOImpl.queryFloors(floorDto);
-            if (floorDtos != null && floorDtos.size() > 0) {
-                for (FloorDto floor : floorDtos) {
-                    UnitDto unitDto = new UnitDto();
-                    unitDto.setFloorId(floor.getFloorId());
-                    unitDto.setUnitNum(reqJson.getString("unitNum"));
-                    List<UnitDto> unitDtos = unitInnerServiceSMOImpl.queryUnits(unitDto);
-                    if (unitDtos != null && unitDtos.size() > 0) {
-                        for (UnitDto unit : unitDtos) {
-                            RoomDto room = new RoomDto();
-                            room.setUnitId(unit.getUnitId());
-                            room.setRoomNum(reqJson.getString("roomNum"));
-                            room.setCommunityId(reqJson.getString("communityId"));
-                            List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(room);
-                            if (roomDtos != null && roomDtos.size() == 1) {
-                                unitId = roomDtos.get(0).getUnitId();
-                                roomId = roomDtos.get(0).getRoomId();
-                            } else {
-                                continue;
-                            }
-                        }
-                    }
-                }
-            }
-            roomDto.setRoomId(roomId);
-            roomDto.setUnitId(unitId);
-        }
-        if (reqJson.containsKey("flag") && "1".equals(reqJson.getString("flag"))) {
-            if (reqJson.containsKey("roomNum") && !StringUtil.isEmpty(reqJson.getString("roomNum"))) {
-                String[] roomNums = reqJson.getString("roomNum").split("-", 3);
-                if (roomNums != null && roomNums.length == 3) {
-                    roomDto.setFloorNum(roomNums[0]);
-                    roomDto.setUnitNum(roomNums[1]);
-                    roomDto.setRoomNum(roomNums[2]);
-                } else {
-                    roomDto.setRoomNum(reqJson.getString("roomNum"));
-                }
-            } else {
-                roomDto.setUnitNum("");
-                roomDto.setFloorNum("");
-                roomDto.setRoomNum("");
-            }
+        //todo 鍛樺伐鏁版嵁鏉冮檺
+        String staffId = cmdDataFlowContext.getReqHeaders().get("user-id");
+        DataPrivilegeStaffDto dataPrivilegeStaffDto = new DataPrivilegeStaffDto();
+        dataPrivilegeStaffDto.setStaffId(staffId);
+        String[] unitIds = dataPrivilegeUnitV1InnerServiceSMOImpl.queryDataPrivilegeUnitsByStaff(dataPrivilegeStaffDto);
+
+        //todo 璁$畻鎴垮眿ID鍜屽崟鍏僆D
+        computeRoomIdAndUnitId(reqJson, unitIds, roomDto);
+
+        //todo 璁$畻妤兼爧鍗曞厓鎴垮眿缂栧彿
+        computeFloorUnitRoomNum(reqJson, roomDto);
+
+        //todo 鍟嗛摵 涓や釜鐭嚎鏂瑰紡澶勭悊 add by wuxw
+        computeRoomShopFloorUnitRoomNum(reqJson, roomDto);
+
+        //todo 澶勭悊鐘舵��
+        String roomState = reqJson.getString("roomState");
+        if(!StringUtil.isEmpty(roomState)){
+            roomDto.setStates(roomState.split(","));
         }
 
-        //add by wuxw 鍟嗛摵 涓や釜鐭嚎鏂瑰紡澶勭悊
-        if(reqJson.containsKey("roomType") && "2020602".equals(reqJson.getString("roomType"))){
-            if (reqJson.containsKey("roomNum") && !StringUtil.isEmpty(reqJson.getString("roomNum"))) {
-                String[] roomNums = reqJson.getString("roomNum").split("-", 2);
-                if (roomNums != null && roomNums.length == 2) {
-                    roomDto.setFloorNum(roomNums[0]);
-                    roomDto.setUnitNum("0");
-                    roomDto.setRoomNum(roomNums[1]);
-                } else {
-                    roomDto.setRoomNum(reqJson.getString("roomNum"));
-                }
-            } else {
-                roomDto.setUnitNum("");
-                roomDto.setFloorNum("");
-                roomDto.setRoomNum("");
-            }
-        }
         ApiRoomVo apiRoomVo = new ApiRoomVo();
+
+        //鍛樺伐鏄惁 鏈夋潈闄愭煡璇�
+        if (unitIds != null && unitIds.length > 0) {
+            roomDto.setUnitIds(unitIds);
+        }
         //鏌ヨ鎬昏褰曟暟
         int total = roomInnerServiceSMOImpl.queryRoomsCount(roomDto);
         apiRoomVo.setTotal(total);
@@ -172,6 +154,8 @@
         if (total > 0) {
             roomDtoList = roomInnerServiceSMOImpl.queryRooms(roomDto);
             refreshRoomOwners(reqJson.getString("loginUserId"), reqJson.getString("communityId"), roomDtoList);
+            // todo 鏌ヨ鎴垮眿缁熻鏁版嵁
+            roomDtoList = queryRoomStatisticsBMOImpl.query(roomDtoList);
         } else {
             roomDtoList = new ArrayList<>();
         }
@@ -181,6 +165,130 @@
 
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiRoomVo), HttpStatus.OK);
         cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    /**
+     * 鍟嗛摵 涓や釜鐭嚎鏂瑰紡澶勭悊
+     *
+     * @param reqJson
+     * @param roomDto
+     */
+    private static void computeRoomShopFloorUnitRoomNum(JSONObject reqJson, RoomDto roomDto) {
+        //todo 涓嶆槸鍟嗛摵杩斿洖
+        if (!reqJson.containsKey("roomType") || !RoomDto.ROOM_TYPE_SHOPS.equals(reqJson.getString("roomType"))) {
+            return;
+        }
+        if (!reqJson.containsKey("roomNum") || StringUtil.isEmpty(reqJson.getString("roomNum"))) {
+            roomDto.setUnitNum("");
+            roomDto.setFloorNum("");
+            roomDto.setRoomNum("");
+            return;
+        }
+        String[] roomNums = reqJson.getString("roomNum").split("-", 2);
+        if (roomNums != null && roomNums.length == 2) {
+            roomDto.setFloorNum(roomNums[0]);
+            roomDto.setUnitNum("0");
+            roomDto.setRoomNum(roomNums[1]);
+        } else {
+            roomDto.setRoomNum(reqJson.getString("roomNum"));
+        }
+    }
+
+    /**
+     * 璁$畻 妤兼爧鍗曞厓鎴垮眿缂栧彿
+     *
+     * @param reqJson
+     * @param roomDto
+     */
+    private static void computeFloorUnitRoomNum(JSONObject reqJson, RoomDto roomDto) {
+
+        //todo 鏈寘鍚玣lag 鏍囪瘑
+        if (!reqJson.containsKey("flag") || !"1".equals(reqJson.getString("flag"))) {
+            return;
+        }
+        if (!reqJson.containsKey("roomNum") || StringUtil.isEmpty(reqJson.getString("roomNum"))) {
+            roomDto.setUnitNum("");
+            roomDto.setFloorNum("");
+            roomDto.setRoomNum("");
+            return;
+        }
+        String[] roomNums = reqJson.getString("roomNum").split("-", 3);
+        if (roomNums != null && roomNums.length == 3) {
+            roomDto.setFloorNum(roomNums[0]);
+            roomDto.setUnitNum(roomNums[1]);
+            roomDto.setRoomNum(roomNums[2]);
+            return;
+        }
+        roomDto.setRoomNum(reqJson.getString("roomNum"));
+    }
+
+    /**
+     * 璁$畻鎴垮眿鍜屽崟鍏僆D
+     *
+     * @param reqJson
+     * @param unitIds
+     * @param roomDto
+     */
+    private void computeRoomIdAndUnitId(JSONObject reqJson, String[] unitIds, RoomDto roomDto) {
+
+        //todo 鏈寘鍚玣lag 鏍囪瘑
+        if (!reqJson.containsKey("flag") || !"0".equals(reqJson.getString("flag"))) {
+            return;
+        }
+
+        //todo 鏈寘鍚ゼ鏍嬬紪鍙�
+        if (!reqJson.containsKey("floorNum") || StringUtil.isEmpty(reqJson.getString("floorNum"))) {
+            return;
+        }
+
+        //todo 鏈寘鍚崟鍏冪紪鍙�
+        if (!reqJson.containsKey("unitNum") || StringUtil.isEmpty(reqJson.getString("unitNum"))) {
+            return;
+        }
+
+        //todo 鏈寘鍚埧灞嬬紪鍙�
+        if (!reqJson.containsKey("roomNum") || StringUtil.isEmpty(reqJson.getString("roomNum"))) {
+            return;
+        }
+
+        //todo 鏌ヨ妤兼爧
+        FloorDto floorDto = new FloorDto();
+        floorDto.setFloorNum(reqJson.getString("floorNum"));
+        floorDto.setCommunityId(reqJson.getString("communityId"));
+        List<FloorDto> floorDtos = floorInnerServiceSMOImpl.queryFloors(floorDto);
+        if (ListUtil.isNull(floorDtos)) {
+            return;
+        }
+
+        String roomId = "";
+        String unitId = "";
+        List<UnitDto> unitDtos = null;
+        for (FloorDto floor : floorDtos) {
+            UnitDto unitDto = new UnitDto();
+            unitDto.setFloorId(floor.getFloorId());
+            unitDto.setUnitNum(reqJson.getString("unitNum"));
+            if (unitIds != null && unitIds.length > 0) {
+                unitDto.setUnitIds(unitIds);
+            }
+            unitDtos = unitInnerServiceSMOImpl.queryUnits(unitDto);
+            if (unitDtos == null || unitDtos.isEmpty()) {
+                continue;
+            }
+            for (UnitDto unit : unitDtos) {
+                RoomDto room = new RoomDto();
+                room.setUnitId(unit.getUnitId());
+                room.setRoomNum(reqJson.getString("roomNum"));
+                room.setCommunityId(reqJson.getString("communityId"));
+                List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(room);
+                if (roomDtos == null || roomDtos.isEmpty()) {
+                    continue;
+                }
+                unitId = roomDtos.get(0).getUnitId();
+                roomId = roomDtos.get(0).getRoomId();
+            }
+        }
+        roomDto.setRoomId(roomId);
+        roomDto.setUnitId(unitId);
     }
 
 
@@ -226,6 +334,7 @@
                 }
                 //瀵逛笟涓绘墜鏈哄彿闅愯棌澶勭悊
                 String link = tmpOwnerDto.getLink();
+                roomDto.setOwnerTel(link); //绋嬪簭鐢� 涓昏鐢ㄤ互鏌ヨ 鎶ヤ慨绛夌粺璁′俊鎭�
                 if (mark.size() == 0 && link != null && !link.equals("") && link.length() > 10) {
                     link = link.substring(0, 3) + "****" + link.substring(7);
                 }

--
Gitblit v1.8.0