ScheduleTaskHandler.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package jnpf.scheduletask.task;
  2. import com.xxl.job.core.context.XxlJobHelper;
  3. import com.xxl.job.core.handler.annotation.XxlJob;
  4. import jnpf.base.UserInfo;
  5. import jnpf.base.entity.DataInterfaceEntity;
  6. import jnpf.base.service.DataInterfaceService;
  7. import jnpf.base.service.DbLinkService;
  8. import jnpf.database.util.TenantDataSourceUtil;
  9. import jnpf.emnus.TemplateEnum;
  10. import jnpf.exception.TenantInvalidException;
  11. import jnpf.model.visualJson.TemplateJsonModel;
  12. import jnpf.scheduletask.entity.TimeTaskEntity;
  13. import jnpf.scheduletask.model.ContentNewModel;
  14. import jnpf.scheduletask.model.UpdateTaskModel;
  15. import jnpf.scheduletask.rest.RestScheduleTaskUtil;
  16. import jnpf.util.AuthUtil;
  17. import jnpf.util.JsonUtil;
  18. import jnpf.util.StringUtil;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Component;
  22. import java.util.HashMap;
  23. import java.util.Map;
  24. import java.util.Objects;
  25. /**
  26. * Api和数据接口使用
  27. *
  28. * @author :JNPF开发平台组
  29. * @version: V3.1.0
  30. * @copyright 引迈信息技术有限公司
  31. * @date :2022/3/23 9:25
  32. */
  33. @Slf4j
  34. @Component
  35. public class ScheduleTaskHandler {
  36. @Autowired
  37. private DataInterfaceService dataInterfaceService;
  38. @Autowired
  39. private DbLinkService dbLinkService;
  40. @XxlJob("defaultHandler")
  41. public void defaultHandler() {
  42. // 获取参数
  43. String param = XxlJobHelper.getJobParam();
  44. // 转换成模型
  45. TimeTaskEntity entity = JsonUtil.getJsonToBean(param, TimeTaskEntity.class);
  46. ContentNewModel model = JsonUtil.getJsonToBean(param, ContentNewModel.class);
  47. String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "";
  48. String userId = StringUtil.isNotEmpty(model.getUserInfo().getUserId()) ? model.getUserInfo().getUserId() : "";
  49. String token = AuthUtil.loginTempUser(userId, tenantId, true);
  50. // 切换租户
  51. UserInfo userInfo = model.getUserInfo();
  52. // 切换数据源
  53. if (userInfo != null && StringUtil.isNotEmpty(userInfo.getTenantId())) {
  54. try {
  55. TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
  56. }catch (TenantInvalidException e){
  57. // 租户无效 禁用任务
  58. log.error("ScheduleTaskHandler, 租户无效, 禁用任务:{}", userInfo.getTenantId());
  59. entity = RestScheduleTaskUtil.getInfo(entity.getId(), model.getUserInfo());
  60. entity.setEnabledMark(0);
  61. UpdateTaskModel updateTaskModel = new UpdateTaskModel();
  62. updateTaskModel.setEntity(entity);
  63. updateTaskModel.setUserInfo(model.getUserInfo());
  64. RestScheduleTaskUtil.updateTask(updateTaskModel);
  65. }
  66. }
  67. // 如果是http
  68. if ("1".equals(entity.getExecuteType())) {
  69. Boolean callHttp = callHttp(model, token);
  70. // if (callHttp) {
  71. // XxlJobHelper.handleResult(ReturnT.SUCCESS_CODE, "调用成功");
  72. // } else {
  73. // XxlJobHelper.handleResult(ReturnT.FAIL_CODE, "调用失败");
  74. // }
  75. } else if ("2".equals(entity.getExecuteType())) {
  76. boolean callSql = callSql(model, token);
  77. // if ( callSql) {
  78. // XxlJobHelper.handleResult(ReturnT.SUCCESS_CODE, "调用成功");
  79. // } else {
  80. // XxlJobHelper.handleResult(ReturnT.FAIL_CODE, "调用失败");
  81. // }
  82. }
  83. }
  84. // ---------------START callSQL
  85. /**
  86. * 调用SQL
  87. *
  88. * @param model 系统调度参数
  89. */
  90. private boolean callSql(ContentNewModel model, String token) {
  91. try {
  92. // 得到数据接口信息
  93. String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "0";
  94. DataInterfaceEntity entity = dataInterfaceService.getInfo(model.getInterfaceId());
  95. if (entity != null) {
  96. Map<String, String> map = null;
  97. if (model.getParameter() != null && model.getParameter().size() > 0) {
  98. map = new HashMap<>(16);
  99. for (TemplateJsonModel parameterModel : model.getParameter()) {
  100. String value = Objects.equals(parameterModel.getSourceType(), TemplateEnum.Empty.getCode()) ? "" : parameterModel.getRelationField();
  101. map.put(parameterModel.getField(), value);
  102. }
  103. }
  104. dataInterfaceService.infoToId(entity.getId(), tenantId, map, token, null, null, null, null);
  105. }
  106. } catch (Exception e) {
  107. e.printStackTrace();
  108. }
  109. return false;
  110. }
  111. // ---------------START callHttp
  112. /**
  113. * HTTP调用
  114. *
  115. * @param model 系统调度参数
  116. * @return
  117. */
  118. private Boolean callHttp(ContentNewModel model, String token) {
  119. try {
  120. // 得到数据接口信息
  121. String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "0";
  122. DataInterfaceEntity entity = dataInterfaceService.getInfo(model.getInterfaceId());
  123. if (entity != null) {
  124. Map<String, String> map = null;
  125. if (model.getParameter() != null && model.getParameter().size() > 0) {
  126. map = new HashMap<>(16);
  127. for (TemplateJsonModel parameterModel : model.getParameter()) {
  128. String value = Objects.equals(parameterModel.getSourceType(), TemplateEnum.Empty.getCode()) ? "" : parameterModel.getRelationField();
  129. map.put(parameterModel.getField(), value);
  130. }
  131. }
  132. dataInterfaceService.infoToId(entity.getId(), tenantId, map, token, null, null, null, null);
  133. }
  134. } catch (Exception e) {
  135. e.printStackTrace();
  136. }
  137. return false;
  138. }
  139. }