QueryOwnerCarsCmd.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package com.java110.user.cmd.owner;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.java110.core.annotation.Java110Cmd;
  5. import com.java110.core.context.ICmdDataFlowContext;
  6. import com.java110.core.event.cmd.Cmd;
  7. import com.java110.core.event.cmd.CmdEvent;
  8. import com.java110.dto.room.RoomDto;
  9. import com.java110.dto.privilege.BasePrivilegeDto;
  10. import com.java110.dto.machine.MachineTranslateDto;
  11. import com.java110.dto.owner.OwnerCarDto;
  12. import com.java110.dto.owner.OwnerRoomRelDto;
  13. import com.java110.dto.parking.ParkingSpaceDto;
  14. import com.java110.intf.common.IMachineTranslateV1InnerServiceSMO;
  15. import com.java110.intf.community.IMenuInnerServiceSMO;
  16. import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
  17. import com.java110.intf.community.IRoomInnerServiceSMO;
  18. import com.java110.intf.user.IOwnerCarInnerServiceSMO;
  19. import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
  20. import com.java110.utils.exception.CmdException;
  21. import com.java110.utils.util.Assert;
  22. import com.java110.utils.util.BeanConvertUtil;
  23. import com.java110.utils.util.ListUtil;
  24. import com.java110.utils.util.StringUtil;
  25. import com.java110.vo.ResultVo;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.http.ResponseEntity;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. import java.util.Map;
  31. @Java110Cmd(serviceCode = "owner.queryOwnerCars")
  32. public class QueryOwnerCarsCmd extends Cmd {
  33. @Autowired
  34. private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
  35. @Autowired
  36. private IMenuInnerServiceSMO menuInnerServiceSMOImpl;
  37. @Autowired
  38. private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
  39. @Autowired
  40. private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
  41. @Autowired
  42. private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
  43. @Autowired
  44. private IMachineTranslateV1InnerServiceSMO machineTranslateV1InnerServiceSMOImpl;
  45. @Override
  46. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  47. Assert.jsonObjectHaveKey(reqJson, "page", "请求中未包含page信息");
  48. Assert.jsonObjectHaveKey(reqJson, "row", "请求中未包含row信息");
  49. Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息");
  50. Assert.isInteger(reqJson.getString("page"), "不是有效数字");
  51. Assert.isInteger(reqJson.getString("row"), "不是有效数字");
  52. }
  53. @Override
  54. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  55. int row = reqJson.getInteger("row");
  56. if (reqJson.containsKey("num") && !StringUtil.isEmpty(reqJson.getString("num"))) {
  57. ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
  58. parkingSpaceDto.setAreaNum(reqJson.getString("areaNum"));
  59. parkingSpaceDto.setNum(reqJson.getString("num"));
  60. parkingSpaceDto.setCommunityId(reqJson.getString("communityId"));
  61. List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
  62. if (ListUtil.isNull(parkingSpaceDtos)) {
  63. ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(1, 1, new JSONArray());
  64. cmdDataFlowContext.setResponseEntity(responseEntity);
  65. return;
  66. }
  67. reqJson.put("psId", parkingSpaceDtos.get(0).getPsId());
  68. }
  69. OwnerCarDto ownerCarDto = BeanConvertUtil.covertBean(reqJson, OwnerCarDto.class);
  70. if (reqJson.containsKey("carTypeCds")) {
  71. ownerCarDto.setCarTypeCd("");
  72. ownerCarDto.setCarTypeCds(reqJson.getString("carTypeCds").split(","));
  73. }
  74. //查询总记录数
  75. int total = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto);
  76. // int count = 0;
  77. List<OwnerCarDto> ownerCarDtoList = null;
  78. if (total > 0) {
  79. ownerCarDtoList = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
  80. //小区20条时刷房屋和车位信息
  81. if (row < 20) {
  82. freshPs(ownerCarDtoList);
  83. freshRoomInfo(ownerCarDtoList);
  84. //刷入同步物联网状态
  85. freshTransactionIotState(ownerCarDtoList);
  86. }
  87. } else {
  88. ownerCarDtoList = new ArrayList<>();
  89. }
  90. //查询是否有脱敏权限
  91. List<Map> privileges = null;
  92. BasePrivilegeDto basePrivilegeDto = new BasePrivilegeDto();
  93. basePrivilegeDto.setResource("/roomCreateFee");
  94. basePrivilegeDto.setUserId(reqJson.getString("userId"));
  95. privileges = menuInnerServiceSMOImpl.checkUserHasResource(basePrivilegeDto);
  96. if (privileges == null || privileges.size() == 0) {
  97. for (OwnerCarDto tmpOwnerCarDto : ownerCarDtoList) {
  98. String link = tmpOwnerCarDto.getLink();
  99. if (!StringUtil.isEmpty(link)) {
  100. link = link.substring(0, 3) + "****" + link.substring(7);
  101. tmpOwnerCarDto.setLink(link);
  102. }
  103. }
  104. }
  105. ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) total / (double) row), total, ownerCarDtoList);
  106. cmdDataFlowContext.setResponseEntity(responseEntity);
  107. }
  108. private void freshTransactionIotState(List<OwnerCarDto> ownerCarDtoList) {
  109. if (ownerCarDtoList == null || ownerCarDtoList.size() < 1) {
  110. return;
  111. }
  112. List<String> memberIds = new ArrayList<>();
  113. for (OwnerCarDto ownerCarDto : ownerCarDtoList) {
  114. if (StringUtil.isEmpty(ownerCarDto.getPsId())) {
  115. continue;
  116. }
  117. memberIds.add(ownerCarDto.getMemberId());
  118. }
  119. MachineTranslateDto machineTranslateDto = new MachineTranslateDto();
  120. machineTranslateDto.setObjIds(memberIds.toArray(new String[memberIds.size()]));
  121. List<MachineTranslateDto> machineTranslateDtos = machineTranslateV1InnerServiceSMOImpl.queryObjStateInMachineTranslates(machineTranslateDto);
  122. if (machineTranslateDtos == null || machineTranslateDtos.size() < 1) {
  123. return;
  124. }
  125. for (OwnerCarDto ownerCarDto : ownerCarDtoList) {
  126. for (MachineTranslateDto tmpMachineTranslateDto : machineTranslateDtos) {
  127. if (!ownerCarDto.getMemberId().equals(tmpMachineTranslateDto.getObjId())) {
  128. continue;
  129. }
  130. ownerCarDto.setIotStateName(tmpMachineTranslateDto.getStateName());
  131. ownerCarDto.setIotRemark(tmpMachineTranslateDto.getRemark());
  132. }
  133. }
  134. }
  135. private void freshPs(List<OwnerCarDto> ownerCarDtoList) {
  136. if (ownerCarDtoList == null || ownerCarDtoList.size() < 1) {
  137. return;
  138. }
  139. List<String> psIds = new ArrayList<>();
  140. for (OwnerCarDto ownerCarDto : ownerCarDtoList) {
  141. if (StringUtil.isEmpty(ownerCarDto.getPsId())) {
  142. continue;
  143. }
  144. psIds.add(ownerCarDto.getPsId());
  145. }
  146. ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
  147. parkingSpaceDto.setCommunityId(ownerCarDtoList.get(0).getCommunityId());
  148. parkingSpaceDto.setPsIds(psIds.toArray(new String[psIds.size()]));
  149. List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
  150. for (ParkingSpaceDto tmpParkingSpaceDto : parkingSpaceDtos) {
  151. for (OwnerCarDto ownerCarDto : ownerCarDtoList) {
  152. if (tmpParkingSpaceDto.getPsId().equals(ownerCarDto.getPsId())) {
  153. ownerCarDto.setAreaNum(tmpParkingSpaceDto.getAreaNum());
  154. ownerCarDto.setNum(tmpParkingSpaceDto.getNum());
  155. ownerCarDto.setParkingType(tmpParkingSpaceDto.getParkingType());
  156. }
  157. }
  158. }
  159. }
  160. /**
  161. * 刷入房屋信息
  162. *
  163. * @param ownerCarDtos
  164. */
  165. private void freshRoomInfo(List<OwnerCarDto> ownerCarDtos) {
  166. for (OwnerCarDto ownerCarDto : ownerCarDtos) {
  167. doFreshRoomInfo(ownerCarDto);
  168. }
  169. }
  170. /**
  171. * 车位信息刷入房屋信息
  172. *
  173. * @param ownerCarDto
  174. */
  175. private void doFreshRoomInfo(OwnerCarDto ownerCarDto) {
  176. OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
  177. ownerRoomRelDto.setOwnerId(ownerCarDto.getOwnerId());
  178. ownerRoomRelDto.setPage(1);
  179. ownerRoomRelDto.setRow(3); //只展示3个房屋以内 不然页面太乱
  180. List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
  181. if (ListUtil.isNull(ownerRoomRelDtos)) {
  182. ownerCarDto.setRoomName("-");
  183. return;
  184. }
  185. List<String> roomIds = new ArrayList<>();
  186. for (OwnerRoomRelDto tOwnerRoomRelDto : ownerRoomRelDtos) {
  187. roomIds.add(tOwnerRoomRelDto.getRoomId());
  188. }
  189. RoomDto roomDto = new RoomDto();
  190. roomDto.setCommunityId(ownerCarDto.getCommunityId());
  191. roomDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
  192. List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
  193. String roomName = "";
  194. for (RoomDto tRoomDto : roomDtos) {
  195. roomName += (tRoomDto.getFloorNum() + "-" + tRoomDto.getUnitNum() + "-" + tRoomDto.getRoomNum() + "-" + "/");
  196. }
  197. roomName = roomName.endsWith("/") ? roomName.substring(0, roomName.length() - 1) : roomName;
  198. ownerCarDto.setRoomName(roomName);
  199. }
  200. }