ProjectItemTargetRoomController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package com.bosshand.virgo.api.controller;
  2. import com.bosshand.virgo.api.model.Contract;
  3. import com.bosshand.virgo.api.model.ProjectItemTargetRoom;
  4. import com.bosshand.virgo.api.model.RoomCollection;
  5. import com.bosshand.virgo.api.model.Tag;
  6. import com.bosshand.virgo.api.service.ContractService;
  7. import com.bosshand.virgo.api.service.ProjectItemTargetRoomService;
  8. import com.bosshand.virgo.api.service.RoomService;
  9. import com.bosshand.virgo.api.service.WorkOrderService;
  10. import com.bosshand.virgo.core.config.OperationControllerLog;
  11. import com.bosshand.virgo.core.response.Response;
  12. import com.bosshand.virgo.core.utils.ContextUtils;
  13. import com.bosshand.virgo.core.utils.StringUtil;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.*;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22. @RestController
  23. @RequestMapping("projectItemTargetRoom")
  24. @Api(tags = {"房源管理"})
  25. public class ProjectItemTargetRoomController {
  26. @Autowired
  27. ProjectItemTargetRoomService projectItemTargetRoomService;
  28. @Autowired
  29. RoomService roomService;
  30. @Autowired
  31. ContractService contractService;
  32. @Autowired
  33. WorkOrderService workOrderService;
  34. @ApiOperation("当前用户(负责人)下房源列表")
  35. @RequestMapping(value = "/count/{currPage}/{pageSize}", method = RequestMethod.GET)
  36. public Response list(@PathVariable int currPage, @PathVariable int pageSize) {
  37. ProjectItemTargetRoom room = new ProjectItemTargetRoom();
  38. room.setChargePersonId(ContextUtils.getCurrentUser().getId());
  39. return getResponse(currPage, pageSize, room);
  40. }
  41. @ApiOperation("关键字模糊查询")
  42. @RequestMapping(value = "/query/{keyWord}", method = RequestMethod.GET)
  43. public Response queryKeyWord(@PathVariable String keyWord) {
  44. return Response.ok(projectItemTargetRoomService.queryKeyWord(keyWord));
  45. }
  46. @OperationControllerLog(module = "房源管理", operation = "房源列表")
  47. @ApiOperation("获取")
  48. @RequestMapping(value = "/{currPage}/{pageSize}", method = RequestMethod.POST)
  49. public Response list(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) {
  50. return getResponse(currPage, pageSize, projectItemTargetRoom);
  51. }
  52. @ApiOperation("获取楼层下房源以及合同")
  53. @RequestMapping(value = "/projectItemTarget/{projectItemTargetId}", method = RequestMethod.GET)
  54. public Response getRoomIdContract(@PathVariable long projectItemTargetId) {
  55. List<ProjectItemTargetRoom> list = projectItemTargetRoomService.getProjectItemTargetId(projectItemTargetId);
  56. if (list.size() > 0) {
  57. List<String> ids = new ArrayList<>();
  58. list.forEach(ls -> ids.add(String.valueOf(ls.getId())));
  59. Map<Long, List<Contract>> roomIdContract = contractService.getRoomIdContract(String.join(",", ids));
  60. list.forEach(ll -> ll.setContractList(roomIdContract.get(ll.getId())));
  61. }
  62. return Response.ok(list);
  63. }
  64. @ApiOperation("房源下合同数、工单数")
  65. @RequestMapping(value = "/countSize/{currPage}/{pageSize}", method = RequestMethod.POST)
  66. public Response countSize(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) {
  67. int totalCount = projectItemTargetRoomService.getTotalCount(projectItemTargetRoom);
  68. List<ProjectItemTargetRoom> dataList = projectItemTargetRoomService.getLimit(projectItemTargetRoom, currPage, pageSize);
  69. if (dataList != null && dataList.size() > 0) {
  70. List<String> ids = new ArrayList<>();
  71. dataList.forEach(ls -> ids.add(String.valueOf(ls.getId())));
  72. String str = String.join(",", ids);
  73. Map<Long, Integer> contractMap = contractService.countSize(str);
  74. Map<Long, Integer> workOrderMap = workOrderService.countSize(str);
  75. List<Tag> tags = new ArrayList<>();
  76. for (ProjectItemTargetRoom room : dataList) {
  77. tags.clear();
  78. if (StringUtil.notBlank(room.getTagIds())) {
  79. for (String tagId : room.getTagIds().split(",")) {
  80. tags.add(projectItemTargetRoomService.getTag(Long.parseLong(tagId)));
  81. }
  82. }
  83. room.setTagList(tags);
  84. room.setContractSize(contractMap.get(room.getId()));
  85. room.setWorkOrderSize(workOrderMap.get(room.getId()));
  86. }
  87. }
  88. Map<String, Object> result = new HashMap<>();
  89. result.put("dataList", dataList);
  90. result.put("totalCount", totalCount);
  91. return Response.ok(result);
  92. }
  93. @ApiOperation("获取公海房源")
  94. @RequestMapping(value = "/open/{currPage}/{pageSize}", method = RequestMethod.POST)
  95. public Response listOpen(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) {
  96. ProjectItemTargetRoom room = new ProjectItemTargetRoom();
  97. room.setOpenState(2);
  98. room.setCoordinates(projectItemTargetRoom.getCoordinates());
  99. room.setTagIds(projectItemTargetRoom.getTagIds());
  100. if (projectItemTargetRoom.getAddressCode() != null) {
  101. List<Long> projectIds = projectItemTargetRoomService.getProjectAddressCode(projectItemTargetRoom.getAddressCode());
  102. if (projectIds.size() > 0) {
  103. room.setProjectIds(projectIds);
  104. } else {
  105. long id = -1;
  106. projectIds.add(id);
  107. room.setProjectIds(projectIds);
  108. }
  109. }
  110. return getResponse(currPage, pageSize, room);
  111. }
  112. private Response getResponse(int currPage, int pageSize, ProjectItemTargetRoom projectItemTargetRoom) {
  113. int totalCount = projectItemTargetRoomService.getTotalCount(projectItemTargetRoom);
  114. List<ProjectItemTargetRoom> dataList = projectItemTargetRoomService.getLimit(projectItemTargetRoom, currPage, pageSize);
  115. List<Tag> tags = new ArrayList<>();
  116. for (ProjectItemTargetRoom room : dataList) {
  117. tags.clear();
  118. if (StringUtil.notBlank(room.getTagIds())) {
  119. for (String tagId : room.getTagIds().split(",")) {
  120. tags.add(projectItemTargetRoomService.getTag(Long.parseLong(tagId)));
  121. }
  122. }
  123. room.setTagList(tags);
  124. }
  125. Map<String, Object> result = new HashMap<>();
  126. result.put("dataList", dataList);
  127. result.put("totalCount", totalCount);
  128. return Response.ok(result);
  129. }
  130. @OperationControllerLog(module = "房源管理", operation = "房源新增")
  131. @ApiOperation("新增")
  132. @RequestMapping(value = "", method = RequestMethod.POST)
  133. public Response insert(@RequestBody ProjectItemTargetRoom projectItemTargetRoom) {
  134. projectItemTargetRoomService.insert(projectItemTargetRoom);
  135. return Response.ok();
  136. }
  137. @OperationControllerLog(module = "房源管理", operation = "房源删除")
  138. @ApiOperation("删除")
  139. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  140. public Response delete(@PathVariable long id) {
  141. projectItemTargetRoomService.delete(id);
  142. return Response.ok();
  143. }
  144. @OperationControllerLog(module = "房源管理", operation = "房源编辑")
  145. @ApiOperation("修改")
  146. @RequestMapping(value = "", method = RequestMethod.PUT)
  147. public Response update(@RequestBody ProjectItemTargetRoom projectItemTargetRoom) {
  148. projectItemTargetRoomService.update(projectItemTargetRoom);
  149. return Response.ok();
  150. }
  151. @OperationControllerLog(module = "房源管理", operation = "房源详情")
  152. @ApiOperation("详情")
  153. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  154. public Response get(@PathVariable long id, @RequestParam(required = false) String coordinates) {
  155. ProjectItemTargetRoom room = projectItemTargetRoomService.get(id);
  156. if (room != null) {
  157. String tagIds = room.getTagIds();
  158. List<Tag> tags = new ArrayList<>();
  159. if (StringUtil.notBlank(tagIds)) {
  160. for (String tagId : tagIds.split(",")) {
  161. tags.add(projectItemTargetRoomService.getTag(Long.parseLong(tagId)));
  162. }
  163. }
  164. room.setTagList(tags);
  165. // 当前用户是否收藏
  166. RoomCollection roomCollection = roomService.get(id, ContextUtils.getCurrentUser().getId());
  167. if (roomCollection != null) {
  168. room.setRoomCollection(true);
  169. }
  170. }
  171. return Response.ok(projectItemTargetRoomService.coordinates(room, coordinates));
  172. }
  173. @ApiOperation("层级结构")
  174. @RequestMapping(value = "/level/{projectId}", method = RequestMethod.GET)
  175. public Response getLevel(@PathVariable long projectId) {
  176. return Response.ok(projectItemTargetRoomService.getLevel(projectId));
  177. }
  178. @RequestMapping(value = "/open/roomIds/{roomIds}", method = RequestMethod.GET)
  179. public Map<Long, String> getRoomIds(@PathVariable String roomIds) {
  180. Map<Long, String> map = new HashMap<>();
  181. projectItemTargetRoomService.getRoomLevel(map, roomIds);
  182. return map;
  183. }
  184. @ApiOperation("项目工作台-房源管理")
  185. @RequestMapping(value = "/roomCount/{projectId}", method = RequestMethod.GET)
  186. public Response roomCount(@PathVariable long projectId) {
  187. return Response.ok(projectItemTargetRoomService.roomCount(projectId));
  188. }
  189. }