package com.bosshand.virgo.api.controller; import com.bosshand.virgo.api.model.Contract; 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; import com.bosshand.virgo.core.utils.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("projectItemTargetRoom") @Api(tags = {"房源管理"}) public class ProjectItemTargetRoomController { @Autowired ProjectItemTargetRoomService projectItemTargetRoomService; @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) { ProjectItemTargetRoom room = new ProjectItemTargetRoom(); room.setChargePersonId(ContextUtils.getCurrentUser().getId()); return getResponse(currPage, pageSize, room); } @ApiOperation("关键字模糊查询") @RequestMapping(value = "/query/{keyWord}", method = RequestMethod.GET) public Response queryKeyWord(@PathVariable String keyWord) { return Response.ok(projectItemTargetRoomService.queryKeyWord(keyWord)); } @OperationControllerLog(module = "房源管理", operation = "房源列表") @ApiOperation("获取") @RequestMapping(value = "/{currPage}/{pageSize}", method = RequestMethod.POST) public Response list(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) { return getResponse(currPage, pageSize, projectItemTargetRoom); } @ApiOperation("获取楼层下房源以及合同") @RequestMapping(value = "/projectItemTarget/{projectItemTargetId}", method = RequestMethod.GET) public Response getRoomIdContract(@PathVariable long projectItemTargetId) { List list = projectItemTargetRoomService.getProjectItemTargetId(projectItemTargetId); if (list.size() > 0) { List ids = new ArrayList<>(); list.forEach(ls -> ids.add(String.valueOf(ls.getId()))); Map> roomIdContract = contractService.getRoomIdContract(String.join(",", ids)); list.forEach(ll -> ll.setContractList(roomIdContract.get(ll.getId()))); } return Response.ok(list); } @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 dataList = projectItemTargetRoomService.getLimit(projectItemTargetRoom, currPage, pageSize); if (dataList != null && dataList.size() > 0) { List ids = new ArrayList<>(); dataList.forEach(ls -> ids.add(String.valueOf(ls.getId()))); String str = String.join(",", ids); Map contractMap = contractService.countSize(str); Map workOrderMap = workOrderService.countSize(str); List 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 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) { ProjectItemTargetRoom room = new ProjectItemTargetRoom(); room.setOpenState(2); room.setCoordinates(projectItemTargetRoom.getCoordinates()); room.setTagIds(projectItemTargetRoom.getTagIds()); if (projectItemTargetRoom.getAddressCode() != null) { List projectIds = projectItemTargetRoomService.getProjectAddressCode(projectItemTargetRoom.getAddressCode()); if (projectIds.size() > 0) { room.setProjectIds(projectIds); } else { long id = -1; projectIds.add(id); room.setProjectIds(projectIds); } } return getResponse(currPage, pageSize, room); } private Response getResponse(int currPage, int pageSize, ProjectItemTargetRoom projectItemTargetRoom) { int totalCount = projectItemTargetRoomService.getTotalCount(projectItemTargetRoom); List dataList = projectItemTargetRoomService.getLimit(projectItemTargetRoom, currPage, pageSize); List 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); } Map result = new HashMap<>(); result.put("dataList", dataList); result.put("totalCount", totalCount); return Response.ok(result); } @OperationControllerLog(module = "房源管理", operation = "房源新增") @ApiOperation("新增") @RequestMapping(value = "", method = RequestMethod.POST) public Response insert(@RequestBody ProjectItemTargetRoom projectItemTargetRoom) { projectItemTargetRoomService.insert(projectItemTargetRoom); return Response.ok(); } @OperationControllerLog(module = "房源管理", operation = "房源删除") @ApiOperation("删除") @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) public Response delete(@PathVariable long id) { projectItemTargetRoomService.delete(id); return Response.ok(); } @OperationControllerLog(module = "房源管理", operation = "房源编辑") @ApiOperation("修改") @RequestMapping(value = "", method = RequestMethod.PUT) public Response update(@RequestBody ProjectItemTargetRoom projectItemTargetRoom) { projectItemTargetRoomService.update(projectItemTargetRoom); return Response.ok(); } @OperationControllerLog(module = "房源管理", operation = "房源详情") @ApiOperation("详情") @RequestMapping(value = "/{id}", method = RequestMethod.GET) public Response get(@PathVariable long id, @RequestParam(required = false) String coordinates) { ProjectItemTargetRoom room = projectItemTargetRoomService.get(id); if (room != null) { String tagIds = room.getTagIds(); List tags = new ArrayList<>(); if (StringUtil.notBlank(tagIds)) { for (String tagId : tagIds.split(",")) { tags.add(projectItemTargetRoomService.getTag(Long.parseLong(tagId))); } } room.setTagList(tags); // 当前用户是否收藏 RoomCollection roomCollection = roomService.get(id, ContextUtils.getCurrentUser().getId()); if (roomCollection != null) { room.setRoomCollection(true); } } return Response.ok(projectItemTargetRoomService.coordinates(room, coordinates)); } @ApiOperation("层级结构") @RequestMapping(value = "/level/{projectId}", method = RequestMethod.GET) public Response getLevel(@PathVariable long projectId) { return Response.ok(projectItemTargetRoomService.getLevel(projectId)); } @RequestMapping(value = "/open/roomIds/{roomIds}", method = RequestMethod.GET) public Map getRoomIds(@PathVariable String roomIds) { Map map = new HashMap<>(); projectItemTargetRoomService.getRoomLevel(map, roomIds); return map; } @ApiOperation("项目工作台-房源管理") @RequestMapping(value = "/roomCount/{projectId}", method = RequestMethod.GET) public Response roomCount(@PathVariable long projectId) { return Response.ok(projectItemTargetRoomService.roomCount(projectId)); } }