TranslateOwnerToMachine.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.java110.hardwareAdapation.thread;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.factory.GenerateCodeFactory;
  4. import com.java110.core.smo.hardwareAdapation.IMachineInnerServiceSMO;
  5. import com.java110.core.smo.order.IOrderInnerServiceSMO;
  6. import com.java110.core.smo.owner.IOwnerInnerServiceSMO;
  7. import com.java110.dto.OwnerDto;
  8. import com.java110.dto.hardwareAdapation.MachineDto;
  9. import com.java110.dto.order.OrderDto;
  10. import com.java110.hardwareAdapation.dao.IMachineTranslateServiceDao;
  11. import com.java110.utils.cache.MappingCache;
  12. import com.java110.utils.constant.BusinessTypeConstant;
  13. import com.java110.utils.constant.StatusConstant;
  14. import com.java110.utils.factory.ApplicationContextFactory;
  15. import com.java110.utils.util.StringUtil;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * 从订单中同步业主信息至设备中间表
  23. * add by wuxw 2019-11-14
  24. */
  25. public class TranslateOwnerToMachine implements Runnable {
  26. Logger logger = LoggerFactory.getLogger(TranslateOwnerToMachine.class);
  27. public static final long DEFAULT_WAIT_SECOND = 5000 * 6; // 默认30秒执行一次
  28. public static boolean TRANSLATE_STATE = false;
  29. private IOrderInnerServiceSMO orderInnerServiceSMOImpl;
  30. private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
  31. private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
  32. private IMachineTranslateServiceDao machineTranslateServiceDaoImpl;
  33. public TranslateOwnerToMachine(boolean state) {
  34. TRANSLATE_STATE = state;
  35. orderInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOrderInnerServiceSMO.class.getName(), IOrderInnerServiceSMO.class);
  36. ownerInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOwnerInnerServiceSMO.class.getName(), IOwnerInnerServiceSMO.class);
  37. machineInnerServiceSMOImpl = ApplicationContextFactory.getBean("machineInnerServiceSMOImpl", IMachineInnerServiceSMO.class);
  38. machineTranslateServiceDaoImpl = ApplicationContextFactory.getBean("machineTranslateServiceDaoImpl", IMachineTranslateServiceDao.class);
  39. }
  40. @Override
  41. public void run() {
  42. long waitTime = DEFAULT_WAIT_SECOND;
  43. while (TRANSLATE_STATE) {
  44. try {
  45. executeTask();
  46. waitTime = StringUtil.isNumber(MappingCache.getValue("DEFAULT_WAIT_SECOND")) ?
  47. Long.parseLong(MappingCache.getValue("DEFAULT_WAIT_SECOND")) : DEFAULT_WAIT_SECOND;
  48. Thread.sleep(waitTime);
  49. } catch (Throwable e) {
  50. logger.error("执行订单中同步业主信息至设备中失败", e);
  51. }
  52. }
  53. }
  54. /**
  55. * 执行任务
  56. */
  57. private void executeTask() {
  58. OwnerDto ownerDto = null;
  59. //查询订单信息
  60. OrderDto orderDto = new OrderDto();
  61. List<OrderDto> orderDtos = orderInnerServiceSMOImpl.queryOwenrOrders(orderDto);
  62. for (OrderDto tmpOrderDto : orderDtos) {
  63. try {
  64. logger.debug("开始处理订单"+ JSONObject.toJSONString(tmpOrderDto));
  65. //根据bId 查询业主信息
  66. ownerDto = new OwnerDto();
  67. ownerDto.setbId(tmpOrderDto.getbId());
  68. List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
  69. if (ownerDtos == null || ownerDtos.size() == 0) {
  70. continue;
  71. }
  72. dealData(tmpOrderDto, ownerDtos.get(0));
  73. //刷新 状态为C1
  74. orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
  75. logger.debug("处理订单结束"+ JSONObject.toJSONString(tmpOrderDto));
  76. } catch (Exception e) {
  77. logger.error("执行订单任务失败", e);
  78. }
  79. }
  80. }
  81. /**
  82. * 将业主数据同步给所有该小区设备
  83. *
  84. * @param tmpOrderDto
  85. * @param ownerDto
  86. */
  87. private void dealData(OrderDto tmpOrderDto, OwnerDto ownerDto) {
  88. //拿到小区ID
  89. String communityId = ownerDto.getCommunityId();
  90. //根据小区ID查询现有设备
  91. MachineDto machineDto = new MachineDto();
  92. machineDto.setCommunityId(communityId);
  93. List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
  94. for (MachineDto tmpMachineDto : machineDtos) {
  95. if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  96. saveMachineTranslate(tmpMachineDto, ownerDto);
  97. } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  98. updateMachineTranslate(tmpMachineDto, ownerDto);
  99. } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  100. deleteMachineTranslate(tmpMachineDto, ownerDto);
  101. } else {
  102. }
  103. }
  104. }
  105. private void saveMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
  106. Map info = new HashMap();
  107. //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
  108. info.put("machineTranslateId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
  109. info.put("machineId", tmpMachineDto.getMachineId());
  110. info.put("machineCode", tmpMachineDto.getMachineCode());
  111. info.put("typeCd", "8899");
  112. info.put("objId", ownerDto.getMemberId());
  113. info.put("objName", ownerDto.getName());
  114. info.put("state", "10000");
  115. info.put("communityId", ownerDto.getCommunityId());
  116. info.put("bId", "-1");
  117. machineTranslateServiceDaoImpl.saveMachineTranslate(info);
  118. }
  119. private void updateMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
  120. Map info = new HashMap();
  121. //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
  122. info.put("machineId", tmpMachineDto.getMachineId());
  123. info.put("objId", ownerDto.getMemberId());
  124. info.put("state", "10000");
  125. info.put("communityId", ownerDto.getCommunityId());
  126. machineTranslateServiceDaoImpl.updateMachineTranslate(info);
  127. }
  128. private void deleteMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
  129. Map info = new HashMap();
  130. //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
  131. info.put("machineId", tmpMachineDto.getMachineId());
  132. info.put("objId", ownerDto.getMemberId());
  133. info.put("statusCd", StatusConstant.STATUS_CD_INVALID);
  134. info.put("communityId", ownerDto.getCommunityId());
  135. machineTranslateServiceDaoImpl.updateMachineTranslate(info);
  136. }
  137. }