Ver código fonte

重新派单,可以覆盖指定人员

hym 3 anos atrás
pai
commit
1e3bce73d6

+ 4 - 0
message/pom.xml

@@ -51,6 +51,10 @@
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
+       <dependency>
+           <groupId>org.apache.commons</groupId>
+           <artifactId>commons-pool2</artifactId>
+       </dependency>
     </dependencies>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 237 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/vo/XxlJobInfo.java

@@ -0,0 +1,237 @@
+package com.zcxk.rmcp.api.vo;
+
+import java.util.Date;
+
+/**
+ * xxl-job info
+ *
+ * @author xuxueli  2016-1-12 18:25:49
+ */
+public class XxlJobInfo {
+	
+	private int id;				// 主键ID
+	
+	private int jobGroup;		// 执行器主键ID
+	private String jobDesc;
+	
+	private Date addTime;
+	private Date updateTime;
+	
+	private String author;		// 负责人
+	private String alarmEmail;	// 报警邮件
+
+	private String scheduleType;			// 调度类型
+	private String scheduleConf;			// 调度配置,值含义取决于调度类型
+	private String misfireStrategy;			// 调度过期策略
+
+	private String executorRouteStrategy;	// 执行器路由策略
+	private String executorHandler;		    // 执行器,任务Handler名称
+	private String executorParam;		    // 执行器,任务参数
+	private String executorBlockStrategy;	// 阻塞处理策略
+	private int executorTimeout;     		// 任务执行超时时间,单位秒
+	private int executorFailRetryCount;		// 失败重试次数
+	
+	private String glueType;		// GLUE类型	#com.xxl.job.core.glue.GlueTypeEnum
+	private String glueSource;		// GLUE源代码
+	private String glueRemark;		// GLUE备注
+	private Date glueUpdatetime;	// GLUE更新时间
+
+	private String childJobId;		// 子任务ID,多个逗号分隔
+
+	private int triggerStatus;		// 调度状态:0-停止,1-运行
+	private long triggerLastTime;	// 上次调度时间
+	private long triggerNextTime;	// 下次调度时间
+
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public int getJobGroup() {
+		return jobGroup;
+	}
+
+	public void setJobGroup(int jobGroup) {
+		this.jobGroup = jobGroup;
+	}
+
+	public String getJobDesc() {
+		return jobDesc;
+	}
+
+	public void setJobDesc(String jobDesc) {
+		this.jobDesc = jobDesc;
+	}
+
+	public Date getAddTime() {
+		return addTime;
+	}
+
+	public void setAddTime(Date addTime) {
+		this.addTime = addTime;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getAuthor() {
+		return author;
+	}
+
+	public void setAuthor(String author) {
+		this.author = author;
+	}
+
+	public String getAlarmEmail() {
+		return alarmEmail;
+	}
+
+	public void setAlarmEmail(String alarmEmail) {
+		this.alarmEmail = alarmEmail;
+	}
+
+	public String getScheduleType() {
+		return scheduleType;
+	}
+
+	public void setScheduleType(String scheduleType) {
+		this.scheduleType = scheduleType;
+	}
+
+	public String getScheduleConf() {
+		return scheduleConf;
+	}
+
+	public void setScheduleConf(String scheduleConf) {
+		this.scheduleConf = scheduleConf;
+	}
+
+	public String getMisfireStrategy() {
+		return misfireStrategy;
+	}
+
+	public void setMisfireStrategy(String misfireStrategy) {
+		this.misfireStrategy = misfireStrategy;
+	}
+
+	public String getExecutorRouteStrategy() {
+		return executorRouteStrategy;
+	}
+
+	public void setExecutorRouteStrategy(String executorRouteStrategy) {
+		this.executorRouteStrategy = executorRouteStrategy;
+	}
+
+	public String getExecutorHandler() {
+		return executorHandler;
+	}
+
+	public void setExecutorHandler(String executorHandler) {
+		this.executorHandler = executorHandler;
+	}
+
+	public String getExecutorParam() {
+		return executorParam;
+	}
+
+	public void setExecutorParam(String executorParam) {
+		this.executorParam = executorParam;
+	}
+
+	public String getExecutorBlockStrategy() {
+		return executorBlockStrategy;
+	}
+
+	public void setExecutorBlockStrategy(String executorBlockStrategy) {
+		this.executorBlockStrategy = executorBlockStrategy;
+	}
+
+	public int getExecutorTimeout() {
+		return executorTimeout;
+	}
+
+	public void setExecutorTimeout(int executorTimeout) {
+		this.executorTimeout = executorTimeout;
+	}
+
+	public int getExecutorFailRetryCount() {
+		return executorFailRetryCount;
+	}
+
+	public void setExecutorFailRetryCount(int executorFailRetryCount) {
+		this.executorFailRetryCount = executorFailRetryCount;
+	}
+
+	public String getGlueType() {
+		return glueType;
+	}
+
+	public void setGlueType(String glueType) {
+		this.glueType = glueType;
+	}
+
+	public String getGlueSource() {
+		return glueSource;
+	}
+
+	public void setGlueSource(String glueSource) {
+		this.glueSource = glueSource;
+	}
+
+	public String getGlueRemark() {
+		return glueRemark;
+	}
+
+	public void setGlueRemark(String glueRemark) {
+		this.glueRemark = glueRemark;
+	}
+
+	public Date getGlueUpdatetime() {
+		return glueUpdatetime;
+	}
+
+	public void setGlueUpdatetime(Date glueUpdatetime) {
+		this.glueUpdatetime = glueUpdatetime;
+	}
+
+	public String getChildJobId() {
+		return childJobId;
+	}
+
+	public void setChildJobId(String childJobId) {
+		this.childJobId = childJobId;
+	}
+
+	public int getTriggerStatus() {
+		return triggerStatus;
+	}
+
+	public void setTriggerStatus(int triggerStatus) {
+		this.triggerStatus = triggerStatus;
+	}
+
+	public long getTriggerLastTime() {
+		return triggerLastTime;
+	}
+
+	public void setTriggerLastTime(long triggerLastTime) {
+		this.triggerLastTime = triggerLastTime;
+	}
+
+	public long getTriggerNextTime() {
+		return triggerNextTime;
+	}
+
+	public void setTriggerNextTime(long triggerNextTime) {
+		this.triggerNextTime = triggerNextTime;
+	}
+}

+ 96 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/util/XxlJobUtil.java

@@ -0,0 +1,96 @@
+package com.zcxk.rmcp.web.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.zcxk.rmcp.api.vo.XxlJobInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@Slf4j
+public class XxlJobUtil {
+    @Value("${xxl.job.admin.addresses}")
+    private String adminAddresses;
+
+    @Value("${xxl.job.executor.appname}")
+    private String appname;
+
+    private RestTemplate restTemplate = new RestTemplate();
+
+    private static final String ADD_URL = "/jobinfo/addJob";
+    private static final String UPDATE_URL = "/jobinfo/updateJob";
+    private static final String REMOVE_URL = "/jobinfo/removeJob";
+    private static final String REMOVE_ALL_URL = "/jobinfo/removeAllJob";
+    private static final String PAUSE_URL = "/jobinfo/pauseJob";
+    private static final String START_URL = "/jobinfo/startJob";
+    private static final String ADD_START_URL = "/jobinfo/addAndStart";
+    private static final String GET_GROUP_ID = "/jobgroup/getGroupId";
+
+
+    public String add(XxlJobInfo jobInfo){
+        // 查询对应groupId:
+        Map<String,Object> param = new HashMap<>();
+        param.put("appname", appname);
+        String json = JSON.toJSONString(param);
+        String result = doPost(adminAddresses + GET_GROUP_ID, json);
+
+        JSONObject jsonObject = JSON.parseObject(result);
+        String groupId = jsonObject.getString("content");
+        jobInfo.setJobGroup(Integer.parseInt(groupId));
+        String json2 = JSON.toJSONString(jobInfo);
+        return doPost(adminAddresses + ADD_URL, json2);
+    }
+
+    public String update(int id, String cron){
+        Map<String,Object> param = new HashMap<>();
+        param.put("id", id);
+        param.put("jobCron", cron);
+        String json = JSON.toJSONString(param);
+        return doPost(adminAddresses + UPDATE_URL, json);
+    }
+
+    public String remove(int id){
+        Map<String,Object> param = new HashMap<>();
+        param.put("id", id);
+        String json = JSON.toJSONString(param);
+        return doPost(adminAddresses + REMOVE_URL, json);
+    }
+    public String removeAll(List<Integer> ids){
+
+        String json = JSON.toJSONString(ids);
+        return doPost(adminAddresses + REMOVE_ALL_URL, json);
+    }
+    public String pause(int id){
+        Map<String,Object> param = new HashMap<>();
+        param.put("id", id);
+        String json = JSON.toJSONString(param);
+        return doPost(adminAddresses + PAUSE_URL, json);
+    }
+
+    public String start(int id){
+        Map<String,Object> param = new HashMap<>();
+        param.put("id", id);
+        String json = JSON.toJSONString(param);
+        return doPost(adminAddresses + START_URL, json);
+    }
+
+
+
+    public String doPost(String url, String json){
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        HttpEntity<String> entity = new HttpEntity<>(json ,headers);
+        log.info(entity.toString());
+        ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+        return stringResponseEntity.getBody().toString();
+    }
+
+
+}