wuxw
2025-03-20 3b6f49f1123f68bb6d1424070600158f85b66a30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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.CmdContextUtils;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.owner.OwnerRoomRelDto;
import com.java110.dto.room.RoomDto;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
import com.java110.intf.user.IStaffCommunityV1InnerServiceSMO;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.ListUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
 
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
 
@Java110Cmd(serviceCode = "room.queryAdminRoom")
public class QueryAdminRoomCmd extends Cmd {
 
    @Autowired
    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
 
    @Autowired
    private IQueryRoomStatisticsBMO queryRoomStatisticsBMOImpl;
 
    @Autowired
    private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
 
    @Autowired
    private IStaffCommunityV1InnerServiceSMO staffCommunityV1InnerServiceSMOImpl;
 
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        super.validateAdmin(context);
        super.validatePageInfo(reqJson);
    }
 
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
        RoomDto roomDto = BeanConvertUtil.covertBean(reqJson, RoomDto.class);
 
 
        // 计算根据业主查询
        computeOwnerRoomIds(reqJson, roomDto);
 
 
        //todo 计算楼栋单元房屋编号
        computeFloorUnitRoomNum(reqJson, roomDto);
 
        String staffId = CmdContextUtils.getUserId(context);
 
        List<String> communityIds = staffCommunityV1InnerServiceSMOImpl.queryStaffCommunityIds(staffId);
 
        if (!ListUtil.isNull(communityIds)) {
            roomDto.setCommunityIds(communityIds.toArray(new String[communityIds.size()]));
        }
 
        int count = roomInnerServiceSMOImpl.queryRoomsCount(roomDto);
        List<RoomDto> roomDtos = null;
        if (count > 0) {
            roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
            // todo 查询房屋统计数据
            roomDtos = queryRoomStatisticsBMOImpl.querySimple(roomDtos);
        } else {
            roomDtos = new ArrayList<>();
        }
        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, roomDtos);
 
        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
 
        context.setResponseEntity(responseEntity);
    }
 
    private void computeOwnerRoomIds(JSONObject reqJson, RoomDto roomDto) {
        String ownerNameLike = reqJson.getString("ownerNameLike");
        String ownerTel = reqJson.getString("ownerTel");
 
        if (StringUtil.isEmpty(ownerNameLike) && StringUtil.isEmpty(ownerTel)) {
            return;
        }
 
        OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
        ownerRoomRelDto.setOwnerNameLike(reqJson.getString("ownerNameLike"));
        ownerRoomRelDto.setLink(ownerTel);
        List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
        if (ListUtil.isNull(ownerRoomRelDtos)) { // 表示后续查不到
            roomDto.setRoomId("-1");
            return;
        }
        List<String> roomIds = new ArrayList<>();
        for (OwnerRoomRelDto tOwnerRoomRelDto : ownerRoomRelDtos) {
            roomIds.add(tOwnerRoomRelDto.getRoomId());
        }
        roomDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
    }
 
    /**
     * 计算 楼栋单元房屋编号
     *
     * @param reqJson
     * @param roomDto
     */
    private static void computeFloorUnitRoomNum(JSONObject reqJson, RoomDto roomDto) {
 
        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.length == 3) {
            roomDto.setFloorNum(roomNums[0]);
            roomDto.setUnitNum(roomNums[1]);
            roomDto.setRoomNum(roomNums[2]);
            return;
        }
        roomDto.setRoomNum(reqJson.getString("roomNum"));
    }
}