dcs 9 ヶ月 前
コミット
e6605237fc

+ 38 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/controller/ProjectItemTargetRoomController.java

@@ -3,8 +3,10 @@ package com.bosshand.virgo.api.controller;
 import com.bosshand.virgo.api.model.ProjectItemTargetRoom;
 import com.bosshand.virgo.api.model.RoomCollection;
 import com.bosshand.virgo.api.model.Tag;
+import com.bosshand.virgo.api.service.ContractService;
 import com.bosshand.virgo.api.service.ProjectItemTargetRoomService;
 import com.bosshand.virgo.api.service.RoomService;
+import com.bosshand.virgo.api.service.WorkOrderService;
 import com.bosshand.virgo.core.config.OperationControllerLog;
 import com.bosshand.virgo.core.response.Response;
 import com.bosshand.virgo.core.utils.ContextUtils;
@@ -30,6 +32,12 @@ public class ProjectItemTargetRoomController {
     @Autowired
     RoomService roomService;
 
+    @Autowired
+    ContractService contractService;
+
+    @Autowired
+    WorkOrderService workOrderService;
+
     @ApiOperation("当前用户(负责人)下房源列表")
     @RequestMapping(value = "/count/{currPage}/{pageSize}", method = RequestMethod.GET)
     public Response list(@PathVariable int currPage, @PathVariable int pageSize) {
@@ -51,6 +59,36 @@ public class ProjectItemTargetRoomController {
         return getResponse(currPage, pageSize, projectItemTargetRoom);
     }
 
+    @ApiOperation("房源下合同数、工单数")
+    @RequestMapping(value = "/countSize/{currPage}/{pageSize}", method = RequestMethod.POST)
+    public Response countSize(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) {
+        int totalCount = projectItemTargetRoomService.getTotalCount(projectItemTargetRoom);
+        List<ProjectItemTargetRoom> dataList = projectItemTargetRoomService.getLimit(projectItemTargetRoom, currPage, pageSize);
+        if (dataList != null && dataList.size() > 0) {
+            List<String> ids = new ArrayList<>();
+            dataList.forEach(ls -> ids.add(String.valueOf(ls.getId())));
+            String str = String.join(",", ids);
+            Map<Long, Integer> contractMap = contractService.countSize(str);
+            Map<Long, Integer> workOrderMap = workOrderService.countSize(str);
+            List<Tag> tags = new ArrayList<>();
+            for (ProjectItemTargetRoom room : dataList) {
+                tags.clear();
+                if (StringUtil.notBlank(room.getTagIds())) {
+                    for (String tagId : room.getTagIds().split(",")) {
+                        tags.add(projectItemTargetRoomService.getTag(Long.parseLong(tagId)));
+                    }
+                }
+                room.setTagList(tags);
+                room.setContractSize(contractMap.get(room.getId()));
+                room.setWorkOrderSize(workOrderMap.get(room.getId()));
+            }
+        }
+        Map<String, Object> result = new HashMap<>();
+        result.put("dataList", dataList);
+        result.put("totalCount", totalCount);
+        return Response.ok(result);
+    }
+
     @ApiOperation("获取公海房源")
     @RequestMapping(value = "/open/{currPage}/{pageSize}", method = RequestMethod.POST)
     public Response listOpen(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) {

+ 2 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/dao/WorkOrderDao.java

@@ -19,5 +19,7 @@ public interface WorkOrderDao {
 
     List<WorkOrder> getLimit(@Param("p") WorkOrder p, @Param("currIndex") int currIndex, @Param("pageSize") int pageSize);
 
+    List<WorkOrder> getList(WorkOrder workOrder);
+
     WorkOrder get(long id);
 }

+ 26 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/model/ProjectItemTargetRoom.java

@@ -170,6 +170,16 @@ public class ProjectItemTargetRoom {
      */
     private String data;
 
+    /**
+     * 工单数量
+     */
+    private int workOrderSize;
+
+    /**
+     * 合同数量
+     */
+    private int contractSize;
+
 
     public long getId() {
         return id;
@@ -450,4 +460,20 @@ public class ProjectItemTargetRoom {
     public void setData(String data) {
         this.data = data;
     }
+
+    public int getWorkOrderSize() {
+        return workOrderSize;
+    }
+
+    public void setWorkOrderSize(int workOrderSize) {
+        this.workOrderSize = workOrderSize;
+    }
+
+    public int getContractSize() {
+        return contractSize;
+    }
+
+    public void setContractSize(int contractSize) {
+        this.contractSize = contractSize;
+    }
 }

+ 23 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/service/ContractService.java

@@ -9,7 +9,9 @@ import com.bosshand.virgo.core.utils.RandomNumberUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class ContractService {
@@ -20,6 +22,27 @@ public class ContractService {
     @Autowired
     private ClauseDao clauseDao;
 
+    /**
+     * projectItemTargetRoomId下统计合同数量
+     */
+    public Map<Long, Integer> countSize(String projectItemTargetRoomIds) {
+        Contract contract = new Contract();
+        contract.setProjectItemTargetRoomIds(projectItemTargetRoomIds);
+        List<Contract> list = contractDao.getList(contract);
+        String[] split = projectItemTargetRoomIds.split(",");
+        Map<Long, Integer> map = new HashMap<>();
+        for (String id : split) {
+            int size = 0;
+            for (Contract c : list) {
+                if (c.getProjectItemTargetRoomIds().contains(id)) {
+                    size = size + 1;
+                }
+            }
+            map.put(Long.parseLong(id), size);
+        }
+        return map;
+    }
+
     private void batchInsertClause(long contractId, List<Clause> clauseList) {
         if (clauseList != null && clauseList.size() > 0) {
             clauseList.forEach(ls -> ls.setContractId(contractId));

+ 23 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/service/WorkOrderService.java

@@ -7,7 +7,9 @@ import com.bosshand.virgo.api.model.WorkOrderProcess;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class WorkOrderService {
@@ -18,6 +20,27 @@ public class WorkOrderService {
     @Autowired
     private WorkOrderProcessDao workOrderProcessDao;
 
+    /**
+     * projectItemTargetRoomId下统计工单数量
+     */
+    public Map<Long, Integer> countSize(String projectItemTargetRoomIds) {
+        WorkOrder workOrder = new WorkOrder();
+        workOrder.setProjectItemTargetRoomIds(projectItemTargetRoomIds);
+        List<WorkOrder> list = workOrderDao.getList(workOrder);
+        String[] split = projectItemTargetRoomIds.split(",");
+        Map<Long, Integer> map = new HashMap<>();
+        for (String id : split) {
+            int size = 0;
+            for (WorkOrder w : list) {
+                if (w.getProjectItemTargetRoomIds().contains(id)) {
+                    size = size + 1;
+                }
+            }
+            map.put(Long.parseLong(id), size);
+        }
+        return map;
+    }
+
     public int getTotalCount(WorkOrder workOrder) {
         return workOrderDao.getTotalCount(workOrder);
     }

+ 11 - 0
virgo.api/src/main/resources/mapper/WorkOrderMapper.xml

@@ -151,4 +151,15 @@
         limit #{currIndex} , #{pageSize}
     </select>
 
+    <select id="getList" resultMap="workOrderResult">
+        SELECT * FROM work_order
+        <where>
+        <if test="projectItemTargetRoomIds != null">and
+            <foreach item="projectItemTargetRoomId" collection="projectItemTargetRoomIds.split(',')" open="(" separator=" or " close=")">
+                FIND_IN_SET (#{projectItemTargetRoomId}, projectItemTargetRoomIds)
+            </foreach>
+        </if>
+        </where>
+    </select>
+
 </mapper>