TranslateOwnerToMachine.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. //刷新 状态为C1
  71. orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
  72. logger.debug("没有数据数据直接刷为C1"+ JSONObject.toJSONString(tmpOrderDto));
  73. continue;
  74. }
  75. dealData(tmpOrderDto, ownerDtos.get(0));
  76. //刷新 状态为C1
  77. orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
  78. logger.debug("处理订单结束"+ JSONObject.toJSONString(tmpOrderDto));
  79. } catch (Exception e) {
  80. logger.error("执行订单任务失败", e);
  81. }
  82. }
  83. }
  84. /**
  85. * 将业主数据同步给所有该小区设备
  86. *
  87. * @param tmpOrderDto
  88. * @param ownerDto
  89. */
  90. private void dealData(OrderDto tmpOrderDto, OwnerDto ownerDto) {
  91. //拿到小区ID
  92. String communityId = ownerDto.getCommunityId();
  93. //根据小区ID查询现有设备
  94. MachineDto machineDto = new MachineDto();
  95. machineDto.setCommunityId(communityId);
  96. List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
  97. for (MachineDto tmpMachineDto : machineDtos) {
  98. if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  99. saveMachineTranslate(tmpMachineDto, ownerDto);
  100. } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  101. updateMachineTranslate(tmpMachineDto, ownerDto);
  102. } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
  103. deleteMachineTranslate(tmpMachineDto, ownerDto);
  104. } else {
  105. }
  106. }
  107. }
  108. private void saveMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
  109. Map info = new HashMap();
  110. //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
  111. info.put("machineTranslateId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
  112. info.put("machineId", tmpMachineDto.getMachineId());
  113. info.put("machineCode", tmpMachineDto.getMachineCode());
  114. info.put("typeCd", "8899");
  115. info.put("objId", ownerDto.getMemberId());
  116. info.put("objName", ownerDto.getName());
  117. info.put("state", "10000");
  118. info.put("communityId", ownerDto.getCommunityId());
  119. info.put("bId", "-1");
  120. machineTranslateServiceDaoImpl.saveMachineTranslate(info);
  121. }
  122. private void updateMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
  123. Map info = new HashMap();
  124. //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
  125. info.put("machineId", tmpMachineDto.getMachineId());
  126. info.put("objId", ownerDto.getMemberId());
  127. info.put("state", "10000");
  128. info.put("communityId", ownerDto.getCommunityId());
  129. machineTranslateServiceDaoImpl.updateMachineTranslate(info);
  130. }
  131. private void deleteMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
  132. Map info = new HashMap();
  133. //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
  134. info.put("machineId", tmpMachineDto.getMachineId());
  135. info.put("objId", ownerDto.getMemberId());
  136. info.put("statusCd", StatusConstant.STATUS_CD_INVALID);
  137. info.put("communityId", ownerDto.getCommunityId());
  138. machineTranslateServiceDaoImpl.updateMachineTranslate(info);
  139. }
  140. }