Kaynağa Gözat

运营加入 房屋和房屋明细功能

wuxw 1 yıl önce
ebeveyn
işleme
307bc98d63

+ 6 - 0
java110-core/src/main/java/com/java110/core/event/cmd/Cmd.java

@@ -38,6 +38,12 @@ public abstract class Cmd implements ServiceCmdListener {
             throw new CmdException("该接口只能运营团队调用");
             throw new CmdException("该接口只能运营团队调用");
         }
         }
     }
     }
+    protected void validateProperty(ICmdDataFlowContext context) {
+        String storeTypeCd = CmdContextUtils.getStoreTypeCd(context);
+        if(!StoreDto.STORE_TYPE_PROPERTY.equals(storeTypeCd)){
+            throw new CmdException("该接口只能物业团队调用");
+        }
+    }
 //
 //
 //    @Override
 //    @Override
 //
 //

+ 2 - 0
service-user/src/main/java/com/java110/user/bmo/owner/IQueryOwnerStatisticsBMO.java

@@ -15,4 +15,6 @@ public interface IQueryOwnerStatisticsBMO {
      * @return
      * @return
      */
      */
     List<OwnerDto> query(List<OwnerDto> ownerDtos);
     List<OwnerDto> query(List<OwnerDto> ownerDtos);
+
+    List<OwnerDto> queryAdminData(List<OwnerDto> ownerDtos);
 }
 }

+ 73 - 0
service-user/src/main/java/com/java110/user/bmo/owner/impl/QueryOwnerStatisticsBMOImpl.java

@@ -1,6 +1,9 @@
 package com.java110.user.bmo.owner.impl;
 package com.java110.user.bmo.owner.impl;
 
 
+import com.java110.dto.community.CommunityDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.room.RoomDto;
+import com.java110.intf.community.ICommunityV1InnerServiceSMO;
 import com.java110.intf.store.IComplaintV1InnerServiceSMO;
 import com.java110.intf.store.IComplaintV1InnerServiceSMO;
 import com.java110.intf.community.IRepairPoolV1InnerServiceSMO;
 import com.java110.intf.community.IRepairPoolV1InnerServiceSMO;
 import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
 import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
@@ -45,6 +48,9 @@ public class QueryOwnerStatisticsBMOImpl implements IQueryOwnerStatisticsBMO {
     @Autowired
     @Autowired
     private IContractInnerServiceSMO contractInnerServiceSMOImpl;
     private IContractInnerServiceSMO contractInnerServiceSMOImpl;
 
 
+    @Autowired
+    private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl;
+
     @Override
     @Override
     public List<OwnerDto> query(List<OwnerDto> ownerDtos) {
     public List<OwnerDto> query(List<OwnerDto> ownerDtos) {
 
 
@@ -90,6 +96,53 @@ public class QueryOwnerStatisticsBMOImpl implements IQueryOwnerStatisticsBMO {
         return ownerDtos;
         return ownerDtos;
     }
     }
 
 
+    @Override
+    public List<OwnerDto> queryAdminData(List<OwnerDto> ownerDtos) {
+        if (ListUtil.isNull(ownerDtos)) {
+            return ownerDtos;
+        }
+
+        //这里限制行数,以免影响系统性能
+        if (ownerDtos.size() > MAX_LINE_COUNT) {
+            return ownerDtos;
+        }
+        List<String> ownerIds = new ArrayList<>();
+        List<String> memberIds = new ArrayList<>();
+        List<String> ownerTels = new ArrayList<>();
+        List<String> communityIds = new ArrayList<>();
+        for (OwnerDto ownerDto : ownerDtos) {
+            ownerIds.add(ownerDto.getOwnerId());
+            ownerTels.add(ownerDto.getLink());
+            memberIds.add(ownerDto.getMemberId());
+            communityIds.add(ownerDto.getCommunityId());
+        }
+// 查询小区名称
+        queryCommunityName(communityIds,ownerDtos);
+
+        // 查询 房屋数量
+        queryRoomCount(ownerIds, ownerDtos);
+
+        // 查询 家庭成员数
+        queryOwnerMemberCount(ownerIds, ownerDtos);
+
+        // 查询 车辆数
+        queryCarCount(memberIds, ownerDtos);
+
+        // 查询 投诉数
+        //queryComplaintCount(ownerTels,ownerDtos);
+
+        // 查询 报修数
+        //queryRepairCount(ownerTels,ownerDtos);
+
+        // 查询业主欠费
+        queryOwnerOweFee(ownerIds, ownerDtos);
+
+        // 查询业主合同
+        //queryOwnerContractCount(ownerIds,ownerDtos);
+
+        return ownerDtos;
+    }
+
     private void queryOwnerContractCount(List<String> ownerIds, List<OwnerDto> ownerDtos) {
     private void queryOwnerContractCount(List<String> ownerIds, List<OwnerDto> ownerDtos) {
         Map info = new HashMap();
         Map info = new HashMap();
         info.put("communityId", ownerDtos.get(0).getCommunityId());
         info.put("communityId", ownerDtos.get(0).getCommunityId());
@@ -240,4 +293,24 @@ public class QueryOwnerStatisticsBMOImpl implements IQueryOwnerStatisticsBMO {
             }
             }
         }
         }
     }
     }
+
+    private void queryCommunityName(List<String> communityIds, List<OwnerDto> ownerDtos) {
+        if(ListUtil.isNull(communityIds)){
+            return ;
+        }
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityIds(communityIds.toArray(new String[communityIds.size()]));
+        List<CommunityDto> communityDtos = communityV1InnerServiceSMOImpl.queryCommunitys(communityDto);
+        if(ListUtil.isNull(communityDtos)){
+            return;
+        }
+        for (OwnerDto tmpOwnerDto : ownerDtos) {
+            for (CommunityDto tCommunityDto : communityDtos) {
+                if (!tmpOwnerDto.getCommunityId().equals(tCommunityDto.getCommunityId())) {
+                    continue;
+                }
+                tmpOwnerDto.setCommunityName(tCommunityDto.getName());
+            }
+        }
+    }
 }
 }

+ 101 - 0
service-user/src/main/java/com/java110/user/cmd/owner/QueryAdminOwnersCmd.java

@@ -0,0 +1,101 @@
+package com.java110.user.cmd.owner;
+
+import com.alibaba.fastjson.JSONObject;
+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.doc.annotation.*;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.privilege.BasePrivilegeDto;
+import com.java110.dto.room.RoomDto;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
+import com.java110.intf.community.IMenuInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.user.bmo.owner.IQueryOwnerStatisticsBMO;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+@Java110Cmd(serviceCode = "owner.queryAdminOwners")
+public class QueryAdminOwnersCmd extends Cmd {
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IQueryOwnerStatisticsBMO queryOwnerStatisticsBMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+        super.validateAdmin(cmdDataFlowContext);
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        String userId = CmdContextUtils.getUserId(cmdDataFlowContext);
+
+        //todo 根据房屋查询时 先用 房屋信息查询 业主ID
+        freshRoomId(reqJson);
+        OwnerDto ownerDto = BeanConvertUtil.covertBean(reqJson, OwnerDto.class);
+
+        int row = reqJson.getInteger("row");
+        //查询总记录数
+        int total = ownerInnerServiceSMOImpl.queryOwnersCount(ownerDto);
+        List<OwnerDto> ownerDtos = null;
+        if (total > 0) {
+            ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+            // 查询统计数据
+            ownerDtos = queryOwnerStatisticsBMOImpl.queryAdminData(ownerDtos);
+        } else {
+            ownerDtos = new ArrayList<>();
+        }
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) total / (double) row), total, ownerDtos);
+        cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    private void freshRoomId(JSONObject reqJson) {
+        if (!reqJson.containsKey("roomName")) {
+            return;
+        }
+        String roomName = reqJson.getString("roomName");
+        if (StringUtil.isEmpty(roomName)) {
+            return;
+        }
+        if (!roomName.contains("-")) {
+            throw new IllegalArgumentException("房屋格式错误,请写入如 楼栋-单元-房屋 格式");
+        }
+        String[] params = roomName.split("-", 3);
+        if (params.length != 3) {
+            throw new IllegalArgumentException("房屋格式错误,请写入如 楼栋-单元-房屋 格式");
+        }
+        RoomDto roomDto = new RoomDto();
+        roomDto.setFloorNum(params[0]);
+        roomDto.setUnitNum(params[1]);
+        roomDto.setRoomNum(params[2]);
+        roomDto.setCommunityId(reqJson.getString("communityId"));
+        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+        Assert.listOnlyOne(roomDtos, "未查询到房屋下业主信息");
+        reqJson.put("roomId", roomDtos.get(0).getRoomId());
+    }
+
+
+}

+ 3 - 3
service-user/src/main/java/com/java110/user/cmd/owner/QueryOwnersCmd.java

@@ -113,9 +113,10 @@ public class QueryOwnersCmd extends Cmd {
 
 
     @Override
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+        super.validateProperty(cmdDataFlowContext);
         Assert.jsonObjectHaveKey(reqJson, "page", "请求中未包含page信息");
         Assert.jsonObjectHaveKey(reqJson, "page", "请求中未包含page信息");
         Assert.jsonObjectHaveKey(reqJson, "row", "请求中未包含row信息");
         Assert.jsonObjectHaveKey(reqJson, "row", "请求中未包含row信息");
-        Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息");
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求中未包含communityId信息");
         Assert.isInteger(reqJson.getString("page"), "不是有效数字");
         Assert.isInteger(reqJson.getString("page"), "不是有效数字");
         Assert.isInteger(reqJson.getString("row"), "不是有效数字");
         Assert.isInteger(reqJson.getString("row"), "不是有效数字");
     }
     }
@@ -152,7 +153,7 @@ public class QueryOwnersCmd extends Cmd {
                     tmpOwnerDto.setLink(link);
                     tmpOwnerDto.setLink(link);
                 }
                 }
             }
             }
-        }else{
+        } else {
             ownerDtos = new ArrayList<>();
             ownerDtos = new ArrayList<>();
         }
         }
         ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) total / (double) row), total, ownerDtos);
         ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) total / (double) row), total, ownerDtos);
@@ -185,7 +186,6 @@ public class QueryOwnersCmd extends Cmd {
     }
     }
 
 
 
 
-
     /**
     /**
      * 脱敏处理
      * 脱敏处理
      *
      *