TranslateOwnerPhotoToMachineTemplate.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. package com.java110.job.task.ownerToMachine;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.factory.GenerateCodeFactory;
  4. import com.java110.dto.RoomDto;
  5. import com.java110.dto.machine.MachineDto;
  6. import com.java110.dto.machine.MachineTranslateDto;
  7. import com.java110.dto.order.OrderDto;
  8. import com.java110.dto.owner.OwnerDto;
  9. import com.java110.dto.owner.OwnerRoomRelDto;
  10. import com.java110.dto.task.TaskDto;
  11. import com.java110.intf.common.IMachineInnerServiceSMO;
  12. import com.java110.intf.common.IMachineTranslateInnerServiceSMO;
  13. import com.java110.intf.community.ICommunityLocationInnerServiceSMO;
  14. import com.java110.intf.community.IRoomInnerServiceSMO;
  15. import com.java110.intf.order.IOrderInnerServiceSMO;
  16. import com.java110.intf.user.IOwnerInnerServiceSMO;
  17. import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
  18. import com.java110.job.quartz.TaskSystemQuartz;
  19. import com.java110.utils.constant.BusinessTypeConstant;
  20. import com.java110.utils.constant.StatusConstant;
  21. import com.java110.utils.util.Assert;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Component;
  26. import java.util.ArrayList;
  27. import java.util.List;
  28. /**
  29. * @ClassName TransalateOwnerPhotoToMachine
  30. * @Description TODO 传输业主图片到门禁 任务
  31. * @Author wuxw
  32. * @Date 2020/6/3 20:59
  33. * @Version 1.0
  34. * add by wuxw 2020/6/3
  35. **/
  36. @Component
  37. public class TranslateOwnerPhotoToMachineTemplate extends TaskSystemQuartz {
  38. private static Logger logger = LoggerFactory.getLogger(TranslateOwnerPhotoToMachineTemplate.class);
  39. private static final String TYPE_OWNER = "8899";
  40. private static final String STATE_NO_TRANSLATE = "10000";
  41. private static final String CREATE_FACE = "101"; //添加人脸
  42. private static final String DELETE_FACE = "102"; //删除人脸
  43. @Autowired
  44. private IOrderInnerServiceSMO orderInnerServiceSMOImpl;
  45. @Autowired
  46. private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
  47. @Autowired
  48. private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
  49. @Autowired
  50. private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
  51. @Autowired
  52. private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
  53. @Autowired
  54. private ICommunityLocationInnerServiceSMO communityLocationInnerServiceSMOImpl;
  55. @Autowired
  56. private IMachineTranslateInnerServiceSMO machineTranslateInnerServiceSMOImpl;
  57. @Override
  58. protected void process(TaskDto taskDto) throws Exception {
  59. logger.debug("任务在执行" + taskDto.toString());
  60. OwnerDto ownerDto = null;
  61. //查询订单信息
  62. OrderDto orderDto = new OrderDto();
  63. List<OrderDto> orderDtos = orderInnerServiceSMOImpl.queryOwenrOrders(orderDto);
  64. for (OrderDto tmpOrderDto : orderDtos) {
  65. try {
  66. logger.debug("开始处理订单" + JSONObject.toJSONString(tmpOrderDto));
  67. ownerDto = new OwnerDto();
  68. if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())) {
  69. //判断是否为添加房屋
  70. OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
  71. ownerRoomRelDto.setbId(tmpOrderDto.getbId());
  72. List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
  73. Assert.listOnlyOne(ownerRoomRelDtos, "数据错误 业主房屋关系未找到,或找到多条" + JSONObject.toJSONString(tmpOrderDto));
  74. ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
  75. } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())) {
  76. OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
  77. ownerRoomRelDto.setbId(tmpOrderDto.getbId());
  78. ownerRoomRelDto.setStatusCd(StatusConstant.STATUS_CD_INVALID);
  79. List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
  80. if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) {
  81. //刷新 状态为C1
  82. orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
  83. logger.debug("没有数据数据直接刷为C1" + JSONObject.toJSONString(tmpOrderDto));
  84. continue;
  85. }
  86. ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
  87. } else {
  88. ownerDto.setbId(tmpOrderDto.getbId());
  89. }
  90. List<OwnerDto> ownerDtos = null;
  91. //根据bId 查询业主信息
  92. //这种情况说明 业主已经删掉了 需要查询状态为 1 的数据
  93. if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  94. ownerDto.setStatusCd(StatusConstant.STATUS_CD_INVALID);
  95. }
  96. ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
  97. // 房屋信息
  98. if (ownerDtos == null || ownerDtos.size() == 0) {
  99. //刷新 状态为C1
  100. orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
  101. logger.debug("没有数据数据直接刷为C1" + JSONObject.toJSONString(tmpOrderDto));
  102. continue;
  103. }
  104. RoomDto roomDto = new RoomDto();
  105. roomDto.setOwnerId(ownerDtos.get(0).getOwnerId());
  106. //这种情况说明 业主已经删掉了 需要查询状态为 1 的数据
  107. if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())) {
  108. roomDto.setStatusCd(StatusConstant.STATUS_CD_INVALID);
  109. }
  110. List<RoomDto> rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto);
  111. dealData(tmpOrderDto, ownerDtos, rooms);
  112. //刷新 状态为C1
  113. orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
  114. logger.debug("处理订单结束" + JSONObject.toJSONString(tmpOrderDto));
  115. } catch (Exception e) {
  116. logger.error("执行订单任务失败", e);
  117. }
  118. }
  119. }
  120. /**
  121. * 将业主数据同步给所有该小区设备
  122. *
  123. * @param tmpOrderDto
  124. * @param ownerDtos
  125. */
  126. private void dealData(OrderDto tmpOrderDto, List<OwnerDto> ownerDtos, List<RoomDto> roomDtos) {
  127. //拿到小区ID
  128. String communityId = ownerDtos.get(0).getCommunityId();
  129. //根据小区ID查询现有设备
  130. MachineDto machineDto = new MachineDto();
  131. machineDto.setCommunityId(communityId);
  132. //String[] locationObjIds = new String[]{communityId};
  133. List<String> locationObjIds = new ArrayList<>();
  134. locationObjIds.add(communityId);
  135. for (RoomDto roomDto : roomDtos) {
  136. locationObjIds.add(roomDto.getUnitId());
  137. locationObjIds.add(roomDto.getRoomId());
  138. }
  139. machineDto.setLocationObjIds(locationObjIds.toArray(new String[locationObjIds.size()]));
  140. List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
  141. for (OwnerDto ownerDto : ownerDtos) {
  142. for (MachineDto tmpMachineDto : machineDtos) {
  143. if (!"9999".equals(tmpMachineDto.getMachineTypeCd())) {
  144. continue;
  145. }
  146. if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())
  147. || BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())
  148. || BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  149. saveMachineTranslate(tmpOrderDto, tmpMachineDto, ownerDto);
  150. // } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  151. // updateMachineTranslate(tmpMachineDto, ownerDto);
  152. } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())
  153. || BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())
  154. ) {
  155. deleteMachineTranslate(tmpOrderDto, tmpMachineDto, ownerDto);
  156. } else {
  157. }
  158. }
  159. }
  160. }
  161. private void saveMachineTranslate(OrderDto tmpOrderDto, MachineDto tmpMachineDto, OwnerDto ownerDto) {
  162. MachineTranslateDto machineTranslateDto = new MachineTranslateDto();
  163. machineTranslateDto.setMachineTranslateId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
  164. machineTranslateDto.setMachineId(tmpMachineDto.getMachineId());
  165. machineTranslateDto.setMachineCode(tmpMachineDto.getMachineCode());
  166. machineTranslateDto.setTypeCd(TYPE_OWNER);
  167. machineTranslateDto.setObjId(ownerDto.getMemberId());
  168. machineTranslateDto.setObjName(ownerDto.getName());
  169. machineTranslateDto.setState(STATE_NO_TRANSLATE);
  170. machineTranslateDto.setCommunityId(ownerDto.getCommunityId());
  171. machineTranslateDto.setbId("-1");
  172. machineTranslateDto.setMachineCmd(CREATE_FACE);
  173. machineTranslateDto.setObjBId(tmpOrderDto.getbId());
  174. machineTranslateInnerServiceSMOImpl.saveMachineTranslate(machineTranslateDto);
  175. }
  176. private void deleteMachineTranslate(OrderDto tmpOrderDto, MachineDto tmpMachineDto, OwnerDto ownerDto) {
  177. MachineTranslateDto machineTranslateDto = new MachineTranslateDto();
  178. machineTranslateDto.setMachineTranslateId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
  179. machineTranslateDto.setMachineId(tmpMachineDto.getMachineId());
  180. machineTranslateDto.setMachineCode(tmpMachineDto.getMachineCode());
  181. machineTranslateDto.setTypeCd(TYPE_OWNER);
  182. machineTranslateDto.setObjId(ownerDto.getMemberId());
  183. machineTranslateDto.setObjName(ownerDto.getName());
  184. machineTranslateDto.setState(STATE_NO_TRANSLATE);
  185. machineTranslateDto.setCommunityId(ownerDto.getCommunityId());
  186. machineTranslateDto.setbId("-1");
  187. machineTranslateDto.setMachineCmd(DELETE_FACE);
  188. machineTranslateDto.setObjBId(tmpOrderDto.getbId());
  189. machineTranslateInnerServiceSMOImpl.saveMachineTranslate(machineTranslateDto);
  190. }
  191. }