UpdateApplicationKeyPwd.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.java110.common.thread;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.factory.AuthenticationFactory;
  4. import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
  5. import com.java110.dto.machine.ApplicationKeyDto;
  6. import com.java110.utils.constant.CommonConstant;
  7. import com.java110.utils.constant.ServiceConstant;
  8. import com.java110.utils.factory.ApplicationContextFactory;
  9. import com.java110.utils.util.DateUtil;
  10. import org.slf4j.Logger;
  11. import com.java110.core.log.LoggerFactory;
  12. import org.springframework.http.HttpEntity;
  13. import org.springframework.http.HttpHeaders;
  14. import org.springframework.http.HttpMethod;
  15. import org.springframework.http.HttpStatus;
  16. import org.springframework.http.ResponseEntity;
  17. import org.springframework.web.client.HttpStatusCodeException;
  18. import org.springframework.web.client.RestTemplate;
  19. import java.util.Calendar;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.Random;
  23. import java.util.UUID;
  24. /**
  25. * 从订单中同步业主信息至设备中间表
  26. * add by wuxw 2019-11-14
  27. */
  28. public class UpdateApplicationKeyPwd implements Runnable {
  29. Logger logger = LoggerFactory.getLogger(UpdateApplicationKeyPwd.class);
  30. public static final long DEFAULT_WAIT_SECOND = 1000 * 60 * 24; // 默认30秒执行一次
  31. public static boolean TRANSLATE_STATE = false;
  32. private IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl;
  33. private RestTemplate restTemplate;
  34. public UpdateApplicationKeyPwd(boolean state) {
  35. TRANSLATE_STATE = state;
  36. applicationKeyInnerServiceSMOImpl = ApplicationContextFactory.getBean("applicationKeyInnerServiceSMOImpl", IApplicationKeyInnerServiceSMO.class);
  37. restTemplate = ApplicationContextFactory.getBean("restTemplate", RestTemplate.class);
  38. }
  39. @Override
  40. public void run() {
  41. long waitTime = DEFAULT_WAIT_SECOND;
  42. while (TRANSLATE_STATE) {
  43. try {
  44. executeTask();
  45. /*waitTime = StringUtil.isNumber(MappingCache.getValue("DEFAULT_WAIT_SECOND")) ?
  46. Long.parseLong(MappingCache.getValue("DEFAULT_WAIT_SECOND")) : DEFAULT_WAIT_SECOND;*/
  47. Thread.sleep(waitTime);
  48. } catch (Throwable e) {
  49. logger.error("执行订单中同步业主信息至设备中失败", e);
  50. }
  51. }
  52. }
  53. /**
  54. * 执行任务
  55. */
  56. private void executeTask() {
  57. //判断是不是每个月第一天
  58. if(!isFirstDayOfMonth(new Date())){
  59. return ;
  60. }
  61. ApplicationKeyDto applicationKeyDto = new ApplicationKeyDto();
  62. applicationKeyDto.setTypeFlag("1100102");
  63. applicationKeyDto.setEndTime(DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_A));
  64. //查询订单信息
  65. List<ApplicationKeyDto> applicationKeyDtos = applicationKeyInnerServiceSMOImpl.queryApplicationKeys(applicationKeyDto);
  66. String url = "applicationKey.updateApplicationKey";
  67. for (ApplicationKeyDto tmpApplicationKeyDto : applicationKeyDtos) {
  68. try {
  69. logger.debug("开始处理订单" + JSONObject.toJSONString(tmpApplicationKeyDto));
  70. tmpApplicationKeyDto.setPwd(getRandom());//这里修改密码
  71. callService(JSONObject.toJSONString(tmpApplicationKeyDto), url, HttpMethod.POST);
  72. } catch (Exception e) {
  73. logger.error("执行订单任务失败", e);
  74. }
  75. }
  76. }
  77. private ResponseEntity<String> callService(String param, String url, HttpMethod httpMethod) {
  78. ResponseEntity<String> responseEntity = null;
  79. HttpHeaders header = new HttpHeaders();
  80. header.add(CommonConstant.HTTP_APP_ID.toLowerCase(), CommonConstant.HC_HARDWARE_APP_ID);
  81. header.add(CommonConstant.HTTP_USER_ID.toLowerCase(), CommonConstant.ORDER_DEFAULT_USER_ID);
  82. header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), UUID.randomUUID().toString());
  83. header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), DateUtil.getDefaultFormateTimeString(new Date()));
  84. //header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
  85. AuthenticationFactory.createSign(header,httpMethod,url,param);
  86. HttpEntity<String> httpEntity = new HttpEntity<String>(param, header);
  87. //logger.debug("请求中心服务信息,{}", httpEntity);
  88. try {
  89. responseEntity = restTemplate.exchange(url, httpMethod, httpEntity, String.class);
  90. } catch (HttpStatusCodeException e) { //这里spring 框架 在4XX 或 5XX 时抛出 HttpServerErrorException 异常,需要重新封装一下
  91. responseEntity = new ResponseEntity<String>( e.getResponseBodyAsString(), e.getStatusCode());
  92. } catch (Exception e) {
  93. responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
  94. } finally {
  95. logger.debug("请求地址为,{} 请求中心服务信息,{},中心服务返回信息,{}", url, httpEntity, responseEntity);
  96. }
  97. return responseEntity;
  98. }
  99. /**
  100. * 获取随机数
  101. *
  102. * @return
  103. */
  104. private String getRandom() {
  105. Random random = new Random();
  106. String result = "";
  107. for (int i = 0; i < 6; i++) {
  108. result += (random.nextInt(9) + 1);;
  109. }
  110. return result;
  111. }
  112. public boolean isFirstDayOfMonth(Date date) {
  113. Calendar calendar = Calendar.getInstance();
  114. calendar.setTime(date);
  115. System.out.println(calendar.get(Calendar.MONTH));
  116. return calendar.get(Calendar.DAY_OF_MONTH) == 1;
  117. }
  118. public static void main(String[]args){
  119. String a="?";
  120. String value = "'${nextUserId}'";
  121. if(value.contains("${")){
  122. value = value.replace("${","\\${");
  123. }
  124. System.out.println(a.replaceFirst("\\?",value));
  125. }
  126. }