Просмотр исходного кода

优化 房屋页面查询功能

Your Name лет назад: 3
Родитель
Сommit
8b493d44c0
15 измененных файлов с 503 добавлено и 0 удалено
  1. 86 0
      java110-bean/src/main/java/com/java110/dto/RoomDto.java
  2. 75 0
      java110-bean/src/main/java/com/java110/vo/api/ApiRoomDataVo.java
  3. 11 0
      java110-db/src/main/resources/mapper/report/ReportOweFeeServiceDaoImplMapper.xml
  4. 13 0
      java110-db/src/main/resources/mapper/store/ContractRoomServiceDaoImplMapper.xml
  5. 3 0
      java110-interface/src/main/java/com/java110/intf/report/IReportOweFeeInnerServiceSMO.java
  6. 4 0
      java110-interface/src/main/java/com/java110/intf/store/IContractRoomInnerServiceSMO.java
  7. 19 0
      service-community/src/main/java/com/java110/community/bmo/room/IQueryRoomStatisticsBMO.java
  8. 255 0
      service-community/src/main/java/com/java110/community/bmo/room/impl/QueryRoomStatisticsBMOImpl.java
  9. 8 0
      service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java
  10. 2 0
      service-report/src/main/java/com/java110/report/dao/IReportOweFeeServiceDao.java
  11. 7 0
      service-report/src/main/java/com/java110/report/dao/impl/ReportOweFeeServiceDaoImpl.java
  12. 5 0
      service-report/src/main/java/com/java110/report/smo/impl/ReportOweFeeInnerServiceSMOImpl.java
  13. 1 0
      service-store/src/main/java/com/java110/store/dao/IContractRoomServiceDao.java
  14. 8 0
      service-store/src/main/java/com/java110/store/dao/impl/ContractRoomServiceDaoImpl.java
  15. 6 0
      service-store/src/main/java/com/java110/store/smo/impl/ContractRoomInnerServiceSMOImpl.java

+ 86 - 0
java110-bean/src/main/java/com/java110/dto/RoomDto.java

@@ -84,6 +84,20 @@ public class RoomDto extends PageDto implements Serializable {
 
     private String statusCd = "0";
 
+    private String ownerTel; // 这个程序用,对外不输出
+
+    private String memberCount;
+    private String carCount;
+    private String roomCount;
+    private String complaintCount;
+    private String repairCount;
+    private String roomOweFee;
+    private String oweFee;
+
+    private String contractCount;
+
+
+
     public String getFeeCoefficient() {
         return feeCoefficient;
     }
@@ -435,4 +449,76 @@ public class RoomDto extends PageDto implements Serializable {
     public void setUnitIds(String[] unitIds) {
         this.unitIds = unitIds;
     }
+
+    public String getMemberCount() {
+        return memberCount;
+    }
+
+    public void setMemberCount(String memberCount) {
+        this.memberCount = memberCount;
+    }
+
+    public String getCarCount() {
+        return carCount;
+    }
+
+    public void setCarCount(String carCount) {
+        this.carCount = carCount;
+    }
+
+    public String getRoomCount() {
+        return roomCount;
+    }
+
+    public void setRoomCount(String roomCount) {
+        this.roomCount = roomCount;
+    }
+
+    public String getComplaintCount() {
+        return complaintCount;
+    }
+
+    public void setComplaintCount(String complaintCount) {
+        this.complaintCount = complaintCount;
+    }
+
+    public String getRepairCount() {
+        return repairCount;
+    }
+
+    public void setRepairCount(String repairCount) {
+        this.repairCount = repairCount;
+    }
+
+    public String getRoomOweFee() {
+        return roomOweFee;
+    }
+
+    public void setRoomOweFee(String roomOweFee) {
+        this.roomOweFee = roomOweFee;
+    }
+
+    public String getOweFee() {
+        return oweFee;
+    }
+
+    public void setOweFee(String oweFee) {
+        this.oweFee = oweFee;
+    }
+
+    public String getContractCount() {
+        return contractCount;
+    }
+
+    public void setContractCount(String contractCount) {
+        this.contractCount = contractCount;
+    }
+
+    public String getOwnerTel() {
+        return ownerTel;
+    }
+
+    public void setOwnerTel(String ownerTel) {
+        this.ownerTel = ownerTel;
+    }
 }

+ 75 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiRoomDataVo.java

@@ -48,6 +48,17 @@ public class ApiRoomDataVo implements Serializable {
     private List<RoomAttrDto> roomAttrDto;
 
 
+    private String memberCount;
+    private String carCount;
+    private String roomCount;
+    private String complaintCount;
+    private String repairCount;
+    private String roomOweFee;
+    private String oweFee;
+
+    private String contractCount;
+
+
     public String getFeeCoefficient() {
         return feeCoefficient;
     }
@@ -279,4 +290,68 @@ public class ApiRoomDataVo implements Serializable {
     public void setRoomName(String roomName) {
         this.roomName = roomName;
     }
+
+    public String getMemberCount() {
+        return memberCount;
+    }
+
+    public void setMemberCount(String memberCount) {
+        this.memberCount = memberCount;
+    }
+
+    public String getCarCount() {
+        return carCount;
+    }
+
+    public void setCarCount(String carCount) {
+        this.carCount = carCount;
+    }
+
+    public String getRoomCount() {
+        return roomCount;
+    }
+
+    public void setRoomCount(String roomCount) {
+        this.roomCount = roomCount;
+    }
+
+    public String getComplaintCount() {
+        return complaintCount;
+    }
+
+    public void setComplaintCount(String complaintCount) {
+        this.complaintCount = complaintCount;
+    }
+
+    public String getRepairCount() {
+        return repairCount;
+    }
+
+    public void setRepairCount(String repairCount) {
+        this.repairCount = repairCount;
+    }
+
+    public String getRoomOweFee() {
+        return roomOweFee;
+    }
+
+    public void setRoomOweFee(String roomOweFee) {
+        this.roomOweFee = roomOweFee;
+    }
+
+    public String getOweFee() {
+        return oweFee;
+    }
+
+    public void setOweFee(String oweFee) {
+        this.oweFee = oweFee;
+    }
+
+    public String getContractCount() {
+        return contractCount;
+    }
+
+    public void setContractCount(String contractCount) {
+        this.contractCount = contractCount;
+    }
 }

+ 11 - 0
java110-db/src/main/resources/mapper/report/ReportOweFeeServiceDaoImplMapper.xml

@@ -787,5 +787,16 @@
         </foreach>
         group by t.owner_id
     </select>
+    <select id="queryOweFeesByRoomIds" parameterType="Map" resultType="Map">
+        select  t.payer_obj_id roomId,SUM(t.amount_owed) oweFee
+        from report_owe_fee t
+        where t.community_id =  #{communityId}
+        and t.payer_obj_type = '3333'
+        and t.payer_obj_id in
+        <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        group by t.payer_obj_id
+    </select>
 
 </mapper>

+ 13 - 0
java110-db/src/main/resources/mapper/store/ContractRoomServiceDaoImplMapper.xml

@@ -118,5 +118,18 @@
 
 
     </select>
+    <select id="queryContractByRoomIds" parameterType="Map" resultType="Map">
+        select  t.room_id roomId,count(t.contract_id) contractCount
+        from contract_room t
+        where t.status_cd = '0'
+        and t.room_id in
+        <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        group by t.room_id
+
+
+    </select>
+
 
 </mapper>

+ 3 - 0
java110-interface/src/main/java/com/java110/intf/report/IReportOweFeeInnerServiceSMO.java

@@ -100,4 +100,7 @@ public interface IReportOweFeeInnerServiceSMO {
 
     @RequestMapping(value = "/queryOweFeesByOwnerIds", method = RequestMethod.POST)
     List<Map> queryOweFeesByOwnerIds(@RequestBody Map info);
+
+    @RequestMapping(value = "/queryOweFeesByRoomIds", method = RequestMethod.POST)
+    List<Map> queryOweFeesByRoomIds(@RequestBody Map info);
 }

+ 4 - 0
java110-interface/src/main/java/com/java110/intf/store/IContractRoomInnerServiceSMO.java

@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName IContractRoomInnerServiceSMO
@@ -50,4 +51,7 @@ public interface IContractRoomInnerServiceSMO {
      */
     @RequestMapping(value = "/queryContractRoomsCount", method = RequestMethod.POST)
     int queryContractRoomsCount(@RequestBody ContractRoomDto contractRoomDto);
+
+    @RequestMapping(value = "/queryContractByRoomIds", method = RequestMethod.POST)
+    List<Map> queryContractByRoomIds(@RequestBody Map info);
 }

+ 19 - 0
service-community/src/main/java/com/java110/community/bmo/room/IQueryRoomStatisticsBMO.java

@@ -0,0 +1,19 @@
+package com.java110.community.bmo.room;
+
+import com.java110.dto.RoomDto;
+import com.java110.dto.owner.OwnerDto;
+
+import java.util.List;
+
+/**
+ * 查询业主 房屋 车辆等统计信息
+ */
+public interface IQueryRoomStatisticsBMO {
+
+    /**
+     * 查询房屋统计信息
+     * @param roomDtos
+     * @return
+     */
+    List<RoomDto> query(List<RoomDto> roomDtos);
+}

+ 255 - 0
service-community/src/main/java/com/java110/community/bmo/room/impl/QueryRoomStatisticsBMOImpl.java

@@ -0,0 +1,255 @@
+package com.java110.community.bmo.room.impl;
+
+import com.java110.community.bmo.room.IQueryRoomStatisticsBMO;
+import com.java110.dto.RoomDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.intf.community.IComplaintV1InnerServiceSMO;
+import com.java110.intf.community.IRepairPoolV1InnerServiceSMO;
+import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
+import com.java110.intf.store.IContractRoomInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
+import com.java110.intf.user.IOwnerV1InnerServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class QueryRoomStatisticsBMOImpl implements IQueryRoomStatisticsBMO {
+
+    public static final int MAX_LINE_COUNT = 15;
+
+    @Autowired
+    private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairPoolV1InnerServiceSMO repairPoolV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IReportOweFeeInnerServiceSMO reportOweFeeInnerServiceSMOImpl;
+
+    @Autowired
+    private IContractRoomInnerServiceSMO contractRoomInnerServiceSMOImpl;
+
+    @Override
+    public List<RoomDto> query(List<RoomDto> roomDtos) {
+
+        if (roomDtos == null || roomDtos.size() < 1) {
+            return roomDtos;
+        }
+
+        //这里限制行数,以免影响系统性能
+        if (roomDtos.size() > MAX_LINE_COUNT) {
+            return roomDtos;
+        }
+        List<String> roomIds = new ArrayList<>();
+        List<String> ownerIds = new ArrayList<>();
+        List<String> ownerTels = new ArrayList<>();
+        for (RoomDto roomDto : roomDtos) {
+            ownerIds.add(roomDto.getOwnerId());
+            ownerTels.add(roomDto.getOwnerTel());
+            roomIds.add(roomDto.getRoomId());
+        }
+
+        // 查询 家庭成员数
+        queryOwnerMemberCount(ownerIds, roomDtos);
+
+        // 查询 车辆数
+        queryCarCount(ownerIds, roomDtos);
+
+        // 查询 房屋数量
+        queryRoomCount(ownerIds, roomDtos);
+
+        // 查询 投诉数
+        queryComplaintCount(ownerTels, roomDtos);
+
+        // 查询 报修数
+        queryRepairCount(ownerTels, roomDtos);
+
+        // 查询房屋欠费
+        queryRoomOweFee(roomIds, roomDtos);
+
+        // 查询业主欠费
+        queryOwnerOweFee(ownerIds, roomDtos);
+
+        // 查询房屋 合同
+        queryRoomContract(roomIds, roomDtos);
+
+        return roomDtos;
+    }
+
+    /**
+     * 查询
+     *
+     * @param roomIds
+     * @param roomDtos
+     */
+    private void queryRoomContract(List<String> roomIds, List<RoomDto> roomDtos) {
+        Map info = new HashMap();
+        info.put("communityId", roomDtos.get(0).getCommunityId());
+        info.put("roomIds", roomIds.toArray(new String[roomIds.size()]));
+        List<Map> repairCounts = contractRoomInnerServiceSMOImpl.queryContractByRoomIds(info);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : repairCounts) {
+                if (roomDto.getRoomId().equals(count.get("roomId"))) {
+                    roomDto.setContractCount(count.get("contractCount").toString());
+                }
+            }
+        }
+    }
+
+    private void queryRoomOweFee(List<String> roomIds, List<RoomDto> roomDtos) {
+        Map info = new HashMap();
+        info.put("communityId", roomDtos.get(0).getCommunityId());
+        info.put("roomIds", roomIds.toArray(new String[roomIds.size()]));
+        List<Map> repairCounts = reportOweFeeInnerServiceSMOImpl.queryOweFeesByRoomIds(info);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : repairCounts) {
+                if (roomDto.getRoomId().equals(count.get("roomId"))) {
+                    roomDto.setRoomOweFee(count.get("oweFee").toString());
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询业主欠费
+     *
+     * @param ownerIds
+     * @param roomDtos
+     */
+    private void queryOwnerOweFee(List<String> ownerIds, List<RoomDto> roomDtos) {
+        Map info = new HashMap();
+        info.put("communityId", roomDtos.get(0).getCommunityId());
+        info.put("ownerIds", ownerIds.toArray(new String[ownerIds.size()]));
+        List<Map> repairCounts = reportOweFeeInnerServiceSMOImpl.queryOweFeesByOwnerIds(info);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : repairCounts) {
+                if (roomDto.getOwnerId().equals(count.get("ownerId"))) {
+                    roomDto.setOweFee(count.get("oweFee").toString());
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 查询业主投诉数
+     *
+     * @param ownerTels
+     * @param roomDtos
+     */
+    private void queryRepairCount(List<String> ownerTels, List<RoomDto> roomDtos) {
+
+
+        Map info = new HashMap();
+        info.put("communityId", roomDtos.get(0).getCommunityId());
+        info.put("ownerTels", ownerTels.toArray(new String[ownerTels.size()]));
+        List<Map> repairCounts = repairPoolV1InnerServiceSMOImpl.queryRepairCountByOwnerTels(info);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : repairCounts) {
+                if (roomDto.getLink().equals(count.get("ownerTel"))) {
+                    roomDto.setRepairCount(count.get("repairCount").toString());
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询业主投诉数
+     *
+     * @param ownerTels
+     * @param roomDtos
+     */
+    private void queryComplaintCount(List<String> ownerTels, List<RoomDto> roomDtos) {
+
+
+        Map info = new HashMap();
+        info.put("communityId", roomDtos.get(0).getCommunityId());
+        info.put("ownerTels", ownerTels.toArray(new String[ownerTels.size()]));
+        List<Map> complaintCounts = complaintV1InnerServiceSMOImpl.queryComplaintCountByOwnerTels(info);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : complaintCounts) {
+                if (roomDto.getLink().equals(count.get("ownerTel"))) {
+                    roomDto.setComplaintCount(count.get("complaintCount").toString());
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询业主车辆数
+     *
+     * @param ownerIds
+     * @param roomDtos
+     */
+    private void queryCarCount(List<String> ownerIds, List<RoomDto> roomDtos) {
+
+        List<Map> memberCounts = ownerCarV1InnerServiceSMOImpl.queryOwnerCarCountByOwnerIds(ownerIds);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : memberCounts) {
+                if (roomDto.getOwnerId().equals(count.get("ownerId"))) {
+                    roomDto.setCarCount(count.get("carCount").toString());
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询 业主成员数
+     *
+     * @param ownerIds
+     * @param roomDtos
+     */
+    private void queryOwnerMemberCount(List<String> ownerIds, List<RoomDto> roomDtos) {
+
+        List<Map> memberCounts = ownerV1InnerServiceSMOImpl.queryOwnerMembersCount(ownerIds);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : memberCounts) {
+                if (roomDto.getOwnerId().equals(count.get("ownerId"))) {
+                    roomDto.setMemberCount(count.get("memberCount").toString());
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询 房屋数量
+     *
+     * @param ownerIds
+     * @param roomDtos
+     */
+    private void queryRoomCount(List<String> ownerIds, List<RoomDto> roomDtos) {
+
+        //查询业主房屋数
+        List<Map> ownerRoomCounts = ownerRoomRelV1InnerServiceSMOImpl.queryRoomCountByOwnerIds(ownerIds);
+
+        for (RoomDto roomDto : roomDtos) {
+            for (Map count : ownerRoomCounts) {
+                if (roomDto.getOwnerId().equals(count.get("ownerId"))) {
+                    roomDto.setRoomCount(count.get("roomCount").toString());
+                }
+            }
+        }
+    }
+}

+ 8 - 0
service-community/src/main/java/com/java110/community/cmd/room/QueryRoomsCmd.java

@@ -1,6 +1,7 @@
 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;
@@ -87,6 +88,9 @@ public class QueryRoomsCmd extends Cmd {
     @Autowired
     private IMenuInnerServiceSMO menuInnerServiceSMOImpl;
 
+    @Autowired
+    private IQueryRoomStatisticsBMO queryRoomStatisticsBMOImpl;
+
     protected static final int MAX_ROW = 10000;
 
     @Override
@@ -222,6 +226,9 @@ public class QueryRoomsCmd extends Cmd {
         if (total > 0) {
             roomDtoList = roomInnerServiceSMOImpl.queryRooms(roomDto);
             refreshRoomOwners(reqJson.getString("loginUserId"), reqJson.getString("communityId"), roomDtoList);
+
+            // 查询房屋统计数据
+            roomDtoList = queryRoomStatisticsBMOImpl.query(roomDtoList);
         } else {
             roomDtoList = new ArrayList<>();
         }
@@ -276,6 +283,7 @@ public class QueryRoomsCmd extends Cmd {
                 }
                 //对业主手机号隐藏处理
                 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);
                 }

+ 2 - 0
service-report/src/main/java/com/java110/report/dao/IReportOweFeeServiceDao.java

@@ -95,4 +95,6 @@ public interface IReportOweFeeServiceDao {
     List<Map> queryInvalidOweFee(Map reportFeeDto);
 
     List<Map> queryOweFeesByOwnerIds(Map info);
+
+    List<Map> queryOweFeesByRoomIds(Map info);
 }

+ 7 - 0
service-report/src/main/java/com/java110/report/dao/impl/ReportOweFeeServiceDaoImpl.java

@@ -183,5 +183,12 @@ public class ReportOweFeeServiceDaoImpl extends BaseServiceDao implements IRepor
         return businessReportOweFeeInfos;
     }
 
+    @Override
+    public List<Map> queryOweFeesByRoomIds(Map info) {
+        List<Map> businessReportOweFeeInfos = sqlSessionTemplate.selectList("reportOweFeeServiceDaoImpl.queryOweFeesByRoomIds", info);
+        return businessReportOweFeeInfos;
+    }
+
+
 
 }

+ 5 - 0
service-report/src/main/java/com/java110/report/smo/impl/ReportOweFeeInnerServiceSMOImpl.java

@@ -70,6 +70,11 @@ public class ReportOweFeeInnerServiceSMOImpl extends BaseServiceSMO implements I
         return reportOweFeeServiceDaoImpl.queryOweFeesByOwnerIds(info);
     }
 
+    @Override
+    public List<Map> queryOweFeesByRoomIds(@RequestBody Map info) {
+        return reportOweFeeServiceDaoImpl.queryOweFeesByRoomIds(info);
+    }
+
     @Override
     public List<ReportOweFeeDto> queryReportOweFees(@RequestBody ReportOweFeeDto reportOweFeeDto) {
 

+ 1 - 0
service-store/src/main/java/com/java110/store/dao/IContractRoomServiceDao.java

@@ -58,4 +58,5 @@ public interface IContractRoomServiceDao {
      */
     int queryContractRoomsCount(Map info);
 
+    List<Map> queryContractByRoomIds(Map info);
 }

+ 8 - 0
service-store/src/main/java/com/java110/store/dao/impl/ContractRoomServiceDaoImpl.java

@@ -94,5 +94,13 @@ public class ContractRoomServiceDaoImpl extends BaseServiceDao implements IContr
         return Integer.parseInt(businessContractRoomInfos.get(0).get("count").toString());
     }
 
+    @Override
+    public List<Map> queryContractByRoomIds(Map info) {
+        logger.debug("查询合同房屋数据 入参 info : {}",info);
+
+        List<Map> result = sqlSessionTemplate.selectList("contractRoomServiceDaoImpl.queryContractByRoomIds", info);
+        return result;
+    }
+
 
 }

+ 6 - 0
service-store/src/main/java/com/java110/store/smo/impl/ContractRoomInnerServiceSMOImpl.java

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName FloorInnerServiceSMOImpl
@@ -103,6 +104,11 @@ public class ContractRoomInnerServiceSMOImpl extends BaseServiceSMO implements I
         return contractRoomServiceDaoImpl.queryContractRoomsCount(BeanConvertUtil.beanCovertMap(contractRoomDto));
     }
 
+    @Override
+    public List<Map> queryContractByRoomIds(@RequestBody Map info) {
+        return contractRoomServiceDaoImpl.queryContractByRoomIds(info);
+    }
+
     public IContractRoomServiceDao getContractRoomServiceDaoImpl() {
         return contractRoomServiceDaoImpl;
     }