RoomInnerServiceSMOImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. package com.java110.community.smo.impl;
  2. import com.java110.community.dao.IRoomAttrServiceDao;
  3. import com.java110.community.dao.IRoomServiceDao;
  4. import com.java110.core.base.smo.BaseServiceSMO;
  5. import com.java110.core.log.LoggerFactory;
  6. import com.java110.dto.PageDto;
  7. import com.java110.dto.room.RoomAttrDto;
  8. import com.java110.dto.room.RoomDto;
  9. import com.java110.dto.owner.OwnerRoomRelDto;
  10. import com.java110.dto.user.UserDto;
  11. import com.java110.dto.importData.ImportCustomCreateFeeDto;
  12. import com.java110.dto.importData.ImportRoomFee;
  13. import com.java110.intf.community.IRoomInnerServiceSMO;
  14. import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
  15. import com.java110.intf.user.IUserInnerServiceSMO;
  16. import com.java110.po.room.RoomPo;
  17. import com.java110.utils.cache.MappingCache;
  18. import com.java110.utils.constant.StatusConstant;
  19. import com.java110.utils.util.*;
  20. import org.slf4j.Logger;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.web.bind.annotation.RequestBody;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import java.util.ArrayList;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28. /**
  29. * @ClassName FloorInnerServiceSMOImpl
  30. * @Description 小区房屋内部服务实现类
  31. * @Author wuxw
  32. * @Date 2019/4/24 9:20
  33. * @Version 1.0
  34. * add by wuxw 2019/4/24
  35. **/
  36. @RestController
  37. public class RoomInnerServiceSMOImpl extends BaseServiceSMO implements IRoomInnerServiceSMO {
  38. private static final Logger logger = LoggerFactory.getLogger(RoomInnerServiceSMOImpl.class);
  39. @Autowired
  40. private IRoomServiceDao roomServiceDaoImpl;
  41. @Autowired
  42. private IRoomAttrServiceDao roomAttrServiceDaoImpl;
  43. @Autowired
  44. private IUserInnerServiceSMO userInnerServiceSMOImpl;
  45. @Autowired
  46. private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
  47. @Override
  48. public List<RoomDto> queryRooms(@RequestBody RoomDto roomDto) {
  49. //校验是否传了 分页信息
  50. int page = roomDto.getPage();
  51. if (page != PageDto.DEFAULT_PAGE) {
  52. roomDto.setPage((page - 1) * roomDto.getRow());
  53. }
  54. List<RoomDto> rooms = BeanConvertUtil.covertBeanList(roomServiceDaoImpl.getRoomInfoByCommunityId(BeanConvertUtil.beanCovertMap(roomDto)), RoomDto.class);
  55. if (ListUtil.isNull(rooms)) {
  56. return rooms;
  57. }
  58. if (rooms.size() > 50) {
  59. return rooms;
  60. }
  61. String[] roomIds = getRoomIds(rooms);
  62. Map attrParamInfo = new HashMap();
  63. attrParamInfo.put("roomIds", roomIds);
  64. attrParamInfo.put("statusCd", StatusConstant.STATUS_CD_VALID);
  65. List<RoomAttrDto> roomAttrDtos = BeanConvertUtil.covertBeanList(roomAttrServiceDaoImpl.getRoomAttrInfo(attrParamInfo), RoomAttrDto.class);
  66. List<UserDto> users = null;
  67. if (rooms.size() < 2) {
  68. String[] userIds = getUserIds(rooms);
  69. //根据 userId 查询用户信息
  70. users = userInnerServiceSMOImpl.getUserInfo(userIds);
  71. } else {
  72. users = new ArrayList<>();
  73. }
  74. for (RoomDto room : rooms) {
  75. try {
  76. OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
  77. ownerRoomRelDto.setRoomId(room.getRoomId());
  78. List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
  79. Assert.listOnlyOne(ownerRoomRelDtos, "查询业主房屋关系表错误!");
  80. room.setApartmentName(MappingCache.getValue(room.getApartment().substring(0, 2).toString()) + MappingCache.getValue(room.getApartment().substring(2, 5).toString()));
  81. room.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
  82. room.setOwnerName(ownerRoomRelDtos.get(0).getOwnerName());
  83. } catch (Exception e) {
  84. logger.error("设置房屋户型失败", e);
  85. }
  86. refreshRoom(room, users, roomAttrDtos);
  87. }
  88. return rooms;
  89. }
  90. @Override
  91. public int updateRooms(@RequestBody RoomPo roomPo) {
  92. roomServiceDaoImpl.updateRoomInfoInstance(BeanConvertUtil.beanCovertMap(roomPo));
  93. return 1;
  94. }
  95. /**
  96. * 从用户列表中查询用户,将用户中的信息 刷新到 floor对象中
  97. *
  98. * @param room 小区小区房屋信息
  99. * @param users 用户列表
  100. * @param roomAttrDtos 房屋属性信息
  101. */
  102. private void refreshRoom(RoomDto room, List<UserDto> users, List<RoomAttrDto> roomAttrDtos) {
  103. for (UserDto user : users) {
  104. if (room.getUserId().equals(user.getUserId())) {
  105. BeanConvertUtil.covertBean(user, room);
  106. }
  107. }
  108. if (ListUtil.isNull(roomAttrDtos)) {
  109. return;
  110. }
  111. List<RoomAttrDto> tmpRoomAttrDtos = new ArrayList<>();
  112. for (RoomAttrDto roomAttrDto : roomAttrDtos) {
  113. if (!roomAttrDto.getRoomId().equals(room.getRoomId())) {
  114. continue;
  115. }
  116. if (StringUtil.isEmpty(roomAttrDto.getValueName())) {
  117. roomAttrDto.setValueName(roomAttrDto.getValue());
  118. }
  119. tmpRoomAttrDtos.add(roomAttrDto);
  120. }
  121. room.setRoomAttrDto(tmpRoomAttrDtos);
  122. }
  123. /**
  124. * 获取批量userId
  125. *
  126. * @param rooms 小区楼信息
  127. * @return 批量userIds 信息
  128. */
  129. private String[] getUserIds(List<RoomDto> rooms) {
  130. List<String> userIds = new ArrayList<String>();
  131. for (RoomDto room : rooms) {
  132. userIds.add(room.getUserId());
  133. }
  134. return userIds.toArray(new String[userIds.size()]);
  135. }
  136. /**
  137. * 获取roomId 信息
  138. *
  139. * @param rooms 房屋信息
  140. * @return roomIds
  141. */
  142. private String[] getRoomIds(List<RoomDto> rooms) {
  143. List<String> roomIds = new ArrayList<String>();
  144. for (RoomDto room : rooms) {
  145. roomIds.add(room.getRoomId());
  146. }
  147. return roomIds.toArray(new String[roomIds.size()]);
  148. }
  149. @Override
  150. public int queryRoomsCount(@RequestBody RoomDto roomDto) {
  151. return roomServiceDaoImpl.queryRoomsByCommunityIdCount(BeanConvertUtil.beanCovertMap(roomDto));
  152. }
  153. @Override
  154. public int queryRoomsWithOutSellCount(@RequestBody RoomDto roomDto) {
  155. return roomServiceDaoImpl.queryRoomsWithOutSellByCommunityIdCount(BeanConvertUtil.beanCovertMap(roomDto));
  156. }
  157. @Override
  158. public List<RoomDto> queryRoomsWithOutSell(@RequestBody RoomDto roomDto) {
  159. //校验是否传了 分页信息
  160. int page = roomDto.getPage();
  161. if (page != PageDto.DEFAULT_PAGE) {
  162. roomDto.setPage((page - 1) * roomDto.getRow());
  163. }
  164. List<RoomDto> rooms = BeanConvertUtil.covertBeanList(roomServiceDaoImpl.getRoomInfoWithOutSellByCommunityId(BeanConvertUtil.beanCovertMap(roomDto)), RoomDto.class);
  165. if (rooms == null || rooms.size() == 0) {
  166. return rooms;
  167. }
  168. String[] roomIds = getRoomIds(rooms);
  169. Map attrParamInfo = new HashMap();
  170. attrParamInfo.put("roomIds", roomIds);
  171. attrParamInfo.put("statusCd", StatusConstant.STATUS_CD_VALID);
  172. List<RoomAttrDto> roomAttrDtos = BeanConvertUtil.covertBeanList(roomAttrServiceDaoImpl.getRoomAttrInfo(attrParamInfo), RoomAttrDto.class);
  173. String[] userIds = getUserIds(rooms);
  174. //根据 userId 查询用户信息
  175. List<UserDto> users = userInnerServiceSMOImpl.getUserInfo(userIds);
  176. for (RoomDto room : rooms) {
  177. try {
  178. room.setApartmentName(MappingCache.getValue(room.getApartment().substring(0, 2).toString()) + MappingCache.getValue(room.getApartment().substring(2, 5).toString()));
  179. } catch (Exception e) {
  180. logger.error("设置房屋户型失败", e);
  181. }
  182. refreshRoom(room, users, roomAttrDtos);
  183. }
  184. return rooms;
  185. }
  186. @Override
  187. public int queryRoomsWithSellCount(@RequestBody RoomDto roomDto) {
  188. return roomServiceDaoImpl.queryRoomsWithSellByCommunityIdCount(BeanConvertUtil.beanCovertMap(roomDto));
  189. }
  190. @Override
  191. public List<RoomDto> queryRoomsWithSell(@RequestBody RoomDto roomDto) {
  192. //校验是否传了 分页信息
  193. int page = roomDto.getPage();
  194. if (page != PageDto.DEFAULT_PAGE) {
  195. roomDto.setPage((page - 1) * roomDto.getRow());
  196. }
  197. List<RoomDto> rooms = BeanConvertUtil.covertBeanList(roomServiceDaoImpl.getRoomInfoWithSellByCommunityId(BeanConvertUtil.beanCovertMap(roomDto)), RoomDto.class);
  198. if (rooms == null || rooms.size() == 0) {
  199. return rooms;
  200. }
  201. String[] roomIds = getRoomIds(rooms);
  202. Map attrParamInfo = new HashMap();
  203. attrParamInfo.put("roomIds", roomIds);
  204. attrParamInfo.put("statusCd", StatusConstant.STATUS_CD_VALID);
  205. List<RoomAttrDto> roomAttrDtos = BeanConvertUtil.covertBeanList(roomAttrServiceDaoImpl.getRoomAttrInfo(attrParamInfo), RoomAttrDto.class);
  206. String[] userIds = getUserIds(rooms);
  207. //根据 userId 查询用户信息
  208. List<UserDto> users = userInnerServiceSMOImpl.getUserInfo(userIds);
  209. for (RoomDto room : rooms) {
  210. //处理下户型转义问题
  211. try {
  212. room.setApartmentName(MappingCache.getValue(room.getApartment().substring(0, 2).toString()) + MappingCache.getValue(room.getApartment().substring(2, 5).toString()));
  213. } catch (Exception e) {
  214. logger.error("设置房屋户型失败", e);
  215. }
  216. refreshRoom(room, users, roomAttrDtos);
  217. }
  218. return rooms;
  219. }
  220. @Override
  221. public List<RoomDto> queryRoomsByOwner(@RequestBody RoomDto roomDto) {
  222. OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
  223. ownerRoomRelDto.setOwnerId(roomDto.getOwnerId());
  224. ownerRoomRelDto.setOwnerNameLike(roomDto.getOwnerNameLike());
  225. ownerRoomRelDto.setStatusCd(roomDto.getStatusCd());
  226. List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
  227. if (ListUtil.isNull(ownerRoomRelDtos)) {
  228. return new ArrayList<>();
  229. }
  230. RoomDto tmpRoomDto = new RoomDto();
  231. List<String> roomIds = new ArrayList<>();
  232. for (OwnerRoomRelDto tmpOwnerRoomRelDto : ownerRoomRelDtos) {
  233. roomIds.add(tmpOwnerRoomRelDto.getRoomId());
  234. tmpRoomDto.setOwnerId(tmpOwnerRoomRelDto.getOwnerId());
  235. tmpRoomDto.setOwnerName(tmpOwnerRoomRelDto.getOwnerName());
  236. }
  237. tmpRoomDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
  238. tmpRoomDto.setRoomNum(roomDto.getRoomNum());
  239. tmpRoomDto.setCommunityId(roomDto.getCommunityId());
  240. List<RoomDto> roomDtos = queryRooms(tmpRoomDto);
  241. if(ListUtil.isNull(roomDtos)){
  242. return roomDtos;
  243. }
  244. for (OwnerRoomRelDto tmpOwnerRoomRelDto : ownerRoomRelDtos) {
  245. for(RoomDto tRoomDto:roomDtos){
  246. if(!tmpOwnerRoomRelDto.getRoomId().equals(tRoomDto.getRoomId())){
  247. continue;
  248. }
  249. tRoomDto.setStartTime(tmpOwnerRoomRelDto.getStartTime());
  250. tRoomDto.setEndTime(tmpOwnerRoomRelDto.getEndTime());
  251. }
  252. }
  253. return roomDtos;
  254. }
  255. /**
  256. * 刷新roomId
  257. *
  258. * @param importRoomFees 数据对象分享
  259. * @return
  260. */
  261. @Override
  262. public List<ImportRoomFee> freshRoomIds(@RequestBody List<ImportRoomFee> importRoomFees) {
  263. for (ImportRoomFee importRoomFee : importRoomFees) {
  264. List<Map> infos = null;
  265. if (!StringUtil.isEmpty(importRoomFee.getRoomId()) && !importRoomFee.getRoomId().startsWith("-")) {
  266. Map paramIn = new HashMap();
  267. paramIn.put("communityId", importRoomFee.getCommunityId());
  268. paramIn.put("roomId", importRoomFee.getRoomId());
  269. infos = roomServiceDaoImpl.getRoomInfos(BeanConvertUtil.beanCovertMap(importRoomFee));
  270. } else {
  271. infos = roomServiceDaoImpl.getRoomInfos(BeanConvertUtil.beanCovertMap(importRoomFee));
  272. }
  273. if (infos == null || infos.size() < 1) {
  274. continue;
  275. }
  276. importRoomFee.setRoomId(infos.get(0).get("roomId").toString());
  277. importRoomFee.setFloorNum(infos.get(0).get("floorNum").toString());
  278. importRoomFee.setUnitNum(infos.get(0).get("unitNum").toString());
  279. importRoomFee.setRoomNum(infos.get(0).get("roomNum").toString());
  280. importRoomFee.setRoomName(importRoomFee.getFloorNum() + "-" + importRoomFee.getUnitNum() + "-" + importRoomFee.getRoomNum());
  281. }
  282. return importRoomFees;
  283. }
  284. public List<ImportCustomCreateFeeDto> freshRoomIdsByImportCustomCreateFee(@RequestBody List<ImportCustomCreateFeeDto> importCustomCreateFeeDtos) {
  285. for (ImportCustomCreateFeeDto importRoomFee : importCustomCreateFeeDtos) {
  286. List<Map> infos = null;
  287. infos = roomServiceDaoImpl.getRoomInfos(BeanConvertUtil.beanCovertMap(importRoomFee));
  288. if (infos == null || infos.size() < 1) {
  289. continue;
  290. }
  291. importRoomFee.setPayObjId(infos.get(0).get("roomId").toString());
  292. importRoomFee.setFloorNum(infos.get(0).get("floorNum").toString());
  293. importRoomFee.setUnitNum(infos.get(0).get("unitNum").toString());
  294. importRoomFee.setRoomNum(infos.get(0).get("roomNum").toString());
  295. }
  296. return importCustomCreateFeeDtos;
  297. }
  298. public IRoomServiceDao getRoomServiceDaoImpl() {
  299. return roomServiceDaoImpl;
  300. }
  301. public void setRoomServiceDaoImpl(IRoomServiceDao roomServiceDaoImpl) {
  302. this.roomServiceDaoImpl = roomServiceDaoImpl;
  303. }
  304. public IUserInnerServiceSMO getUserInnerServiceSMOImpl() {
  305. return userInnerServiceSMOImpl;
  306. }
  307. public void setUserInnerServiceSMOImpl(IUserInnerServiceSMO userInnerServiceSMOImpl) {
  308. this.userInnerServiceSMOImpl = userInnerServiceSMOImpl;
  309. }
  310. public IRoomAttrServiceDao getRoomAttrServiceDaoImpl() {
  311. return roomAttrServiceDaoImpl;
  312. }
  313. public void setRoomAttrServiceDaoImpl(IRoomAttrServiceDao roomAttrServiceDaoImpl) {
  314. this.roomAttrServiceDaoImpl = roomAttrServiceDaoImpl;
  315. }
  316. }