xieb
2023-05-15 623479e1d1376e0b452e95841082169bdb47da72
集成定时任务
5 files modified
6 files added
456 ■■■■ changed files
skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/constant/LauncherConstant.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/pom.xml 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskXxlJobController.java 99 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/AttResBase.java 216 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/entity/XxlJobInfo.java 57 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/jobhandler/SampleXxlJob.java 18 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/mapper/XxlJobInfoMapper.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/mapper/XxlJobInfoMapper.xml 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/service/IXxlJobInfoService.java 14 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/service/impl/XxlJobInfoServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/application-dev.yml 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/constant/LauncherConstant.java
@@ -40,7 +40,7 @@
    /**
     * nacos dev 地址
     */
    String NACOS_DEV_ADDR = "127.0.0.1:8848";
    String NACOS_DEV_ADDR = "172.16.13.129:8848";
    /**
     * nacos prod 地址
skjcmanager/skjcmanager-ops/pom.xml
@@ -15,7 +15,7 @@
    <packaging>pom</packaging>
    <modules>
        <module>skjcmanager-admin</module>
<!--        <module>skjcmanager-admin</module>-->
        <module>skjcmanager-develop</module>
        <module>skjcmanager-flow</module>
        <module>skjcmanager-log</module>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskXxlJobController.java
New file
@@ -0,0 +1,99 @@
package cn.gistack.sm.patrol.controller;
import cn.gistack.sm.patrol.entity.PatrolGroup;
import cn.gistack.sm.patrol.entity.PatrolTask;
import cn.gistack.sm.xxljob.entity.XxlJobInfo;
import cn.gistack.sm.xxljob.service.IXxlJobInfoService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION: 定时任务
 * @USER: aix
 * @DATE: 2023/5/15 14:53
 */
@Slf4j
@Api(tags="定时任务")
@RestController
@RequestMapping("/patrol/patrolTaskJob")
@AllArgsConstructor
public class PatrolTaskXxlJobController extends BladeController {
    private IXxlJobInfoService xxlJobInfoService;
    @ApiOperation(value="定时任务-分页列表查询", notes="定时任务-分页列表查询")
    @GetMapping(value = "/list")
    public R list(XxlJobInfo xxlJobInfo, Query query) {
        IPage<XxlJobInfo> pageList = xxlJobInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(xxlJobInfo));
        return R.data(pageList);
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "定时任务-通过id查询", notes = "定时任务-通过id查询")
    @GetMapping(value = "/queryById")
    public R queryById(@RequestParam(name = "id", required = true) String id) {
        XxlJobInfo xxlJobInfo = xxlJobInfoService.getById(id);
        return R.data(xxlJobInfo);
    }
    /**
     * 添加
     */
    @ApiOperation(value="定时任务-添加", notes="定时任务-添加")
    @PostMapping(value = "/add")
    public R add(@RequestBody XxlJobInfo xxlJobInfo) {
        return R.data(xxlJobInfoService.save(xxlJobInfo));
    }
    /**
     * 编辑
     * @return
     */
    @ApiOperation(value="定时任务-编辑", notes="定时任务-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public R edit(@RequestBody XxlJobInfo xxlJobInfo) {
        return R.data(xxlJobInfoService.updateById(xxlJobInfo));
    }
    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value="定时任务-通过id删除", notes="定时任务-通过id删除")
    @DeleteMapping(value = "/delete")
    public R delete(@RequestParam(name="id",required=true) String id) {
        return R.data(xxlJobInfoService.removeById(id));
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @ApiOperation(value="定时任务-批量删除", notes="定时任务-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public R deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        return R.data(xxlJobInfoService.removeByIds(Arrays.asList(ids.split(","))));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/AttResBase.java
@@ -16,7 +16,7 @@
 * @author Chill
 */
@Data
@TableName("\"att_res_base\"")
@TableName("\"tb_res_base\"")
@ApiModel(value = "水库对象", description = "水库对象")
public class AttResBase implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -36,12 +36,12 @@
    @TableField("\"code\"")
    private String code;
//    /**
//     * 老库编码
//     */
//    @ApiModelProperty(value = "老库编码")
//    @TableField("\"sk_code\"")
//    private String skCode;
    /**
     * 老库编码
     */
    @ApiModelProperty(value = "老库编码")
    @TableField("\"sk_code\"")
    private String skCode;
    /**
     * 水库名称
@@ -57,12 +57,12 @@
//    @TableField("\"alias_name\"")
//    private String aliasName;
//
//    /**
//     * 注册登记码
//     */
//    @ApiModelProperty(value = "注册登记码")
//    @TableField("\"res_reg_code\"")
//    private String resRegCode;
    /**
     * 注册登记码
     */
    @ApiModelProperty(value = "注册登记码")
    @TableField("\"res_reg_code\"")
    private String resRegCode;
//
//    /**
//     * 其他行业注册号
@@ -78,33 +78,33 @@
//    @TableField("\"res_reg_date\"")
//    private String resRegDate;
//
//    /**
//     * 水库类型
//     */
//    @ApiModelProperty(value = "水库类型")
//    @TableField("\"res_type\"")
//    private String resType;
    /**
     * 水库类型
     */
    @ApiModelProperty(value = "水库类型")
    @TableField("\"res_type\"")
    private String resType;
//
//    /**
//     * 水库功能
//     */
//    @ApiModelProperty(value = "水库功能")
//    @TableField("\"res_func\"")
//    private String resFunc;
    /**
     * 水库功能
     */
    @ApiModelProperty(value = "水库功能")
    @TableField("\"res_func\"")
    private String resFunc;
//
//    /**
//     * 水库类别
//     */
//    @ApiModelProperty(value = "水库类别")
//    @TableField("\"res_category\"")
//    private String resCategory;
    /**
     * 水库类别
     */
    @ApiModelProperty(value = "水库类别")
    @TableField("\"res_category\"")
    private String resCategory;
//
//    /**
//     * 工程等别
//     */
//    @ApiModelProperty(value = "工程等别")
//    @TableField("\"eng_grad\"")
//    private String engGrad;
    /**
     * 工程等别
     */
    @ApiModelProperty(value = "工程等别")
    @TableField("\"eng_grad\"")
    private String engGrad;
//
    /**
     * 工程规模
@@ -113,33 +113,33 @@
    @TableField("\"eng_scal\"")
    private String engScal;
//
//    /**
//     * 工程建设情况
//     */
//    @ApiModelProperty(value = "工程建设情况")
//    @TableField("\"eng_stat\"")
//    private String engStat;
//
//    /**
//     * 开工时间
//     */
//    @ApiModelProperty(value = "开工时间 ")
//    @TableField("\"start_date\"")
//    private String startDate;
//
//    /**
//     * 完工时间
//     */
//    @ApiModelProperty(value = "完工时间 ")
//    @TableField("\"finish_date\"")
//    private String finishDate;
//
//    /**
//     * 建成时间
//     */
//    @ApiModelProperty(value = "建成时间 ")
//    @TableField("\"comp_date\"")
//    private String compDate;
    /**
     * 工程建设情况
     */
    @ApiModelProperty(value = "工程建设情况")
    @TableField("\"eng_stat\"")
    private String engStat;
    /**
     * 开工时间
     */
    @ApiModelProperty(value = "开工时间 ")
    @TableField("\"start_date\"")
    private String startDate;
    /**
     * 完工时间
     */
    @ApiModelProperty(value = "完工时间 ")
    @TableField("\"finish_date\"")
    private String finishDate;
    /**
     * 建成时间
     */
    @ApiModelProperty(value = "建成时间 ")
    @TableField("\"comp_date\"")
    private String compDate;
//
//    /**
//     * 河流guid
@@ -148,19 +148,19 @@
//    @TableField("\"rv_guid\"")
//    private String rvGuid;
//
//    /**
//     * 河流名称
//     */
//    @ApiModelProperty(value = "河流名称 ")
//    @TableField("\"rv_name\"")
//    private String rvName;
    /**
     * 河流名称
     */
    @ApiModelProperty(value = "河流名称 ")
    @TableField("\"rv_name\"")
    private String rvName;
//
//    /**
//     * 流域guid
//     */
//    @ApiModelProperty(value = "流域guid ")
//    @TableField("\"bas_guid\"")
//    private String basGuid;
    /**
     * 流域guid
     */
    @ApiModelProperty(value = "流域guid ")
    @TableField("\"bas_guid\"")
    private String basGuid;
//
//    /**
//     * 流域名称
@@ -190,26 +190,26 @@
//    @TableField("\"interior_ad_guid\"")
//    private String interiorAdGuid;
//
//    /**
//     * 水库所在位置
//     */
//    @ApiModelProperty(value = "水库所在位置 ")
//    @TableField("\"res_loc\"")
//    private String resLoc;
    /**
     * 水库所在位置
     */
    @ApiModelProperty(value = "水库所在位置 ")
    @TableField("\"res_loc\"")
    private String resLoc;
//
//    /**
//     * 中心点经度(度)
//     */
//    @ApiModelProperty(value = "中心点经度(度) ")
//    @TableField("\"center_long\"")
//    private String centerLong;
//
//    /**
//     * 中心点纬度(度)
//     */
//    @ApiModelProperty(value = "中心点纬度(度) ")
//    @TableField("\"center_lat\"")
//    private String centerLat;
    /**
     * 中心点经度(度)
     */
    @ApiModelProperty(value = "中心点经度(度) ")
    @TableField("\"center_long\"")
    private String centerLong;
    /**
     * 中心点纬度(度)
     */
    @ApiModelProperty(value = "中心点纬度(度) ")
    @TableField("\"center_lat\"")
    private String centerLat;
//
//    /**
//     * 右上角经度(度)
@@ -239,19 +239,19 @@
//    @TableField("\"low_left_lat\"")
//    private String lowLeftLat;
//
//    /**
//     * 所属行业部门
//     */
//    @ApiModelProperty(value = "所属行业部门 ")
//    @TableField("\"industry_dept\"")
//    private String industryDept;
//
//    /**
//     * 抗震设计烈度
//     */
//    @ApiModelProperty(value = "抗震设计烈度 ")
//    @TableField("\"base_eq_intensity\"")
//    private String baseEqIntensity;
    /**
     * 所属行业部门
     */
    @ApiModelProperty(value = "所属行业部门 ")
    @TableField("\"industry_dept\"")
    private String industryDept;
    /**
     * 抗震设计烈度
     */
    @ApiModelProperty(value = "抗震设计烈度 ")
    @TableField("\"base_eq_intensity\"")
    private String baseEqIntensity;
//
//    /**
//     * 地震基本烈度
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/entity/XxlJobInfo.java
New file
@@ -0,0 +1,57 @@
package cn.gistack.sm.xxljob.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/5/15 14:53
 */
@Data
@TableName(value = "xxl_job_info", autoResultMap = true)
public class XxlJobInfo {
    @TableId(type= IdType.AUTO)
    private Integer id;                // 主键ID
    private Integer jobGroup;        // 执行器主键ID
    private String jobCron;        // 任务执行CRON表达式
    private String jobDesc;
    private Date addTime;
    private Date updateTime;
    private String author;        // 负责人
    private String alarmEmail;    // 报警邮件
    private String executorRouteStrategy;    // 执行器路由策略
    private String executorHandler;            // 执行器,任务Handler名称
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Object executorParam;            // 执行器,任务参数
    private String executorBlockStrategy;    // 阻塞处理策略
    private Integer executorTimeout;             // 任务执行超时时间,单位秒
    private Integer executorFailRetryCount;        // 失败重试次数
    private String glueType;        // GLUE类型    #com.xxl.job.core.glue.GlueTypeEnum
    private String glueSource;        // GLUE源代码
    private String glueRemark;        // GLUE备注
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date glueUpdatetime;    // GLUE更新时间
    private String childJobid;        // 子任务ID,多个逗号分隔
    private Integer triggerStatus;        // 调度状态:0-停止,1-运行
    private Long triggerLastTime;    // 上次调度时间
    private Long triggerNextTime;    // 下次调度时间
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/jobhandler/SampleXxlJob.java
@@ -27,14 +27,10 @@
import java.util.concurrent.atomic.AtomicInteger;
/**
 * XxlJob开发示例(Bean模式)
 * <p>
 * 开发步骤:
 * 1、在Spring Bean实例中,开发Job方法,方式格式要求为 "public ReturnT<String> execute(String param)"
 * 2、为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。
 * 3、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
 *
 * @author xuxueli
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION: 执行器相关
 * @USER: aix
 * @DATE: 2023/5/13 14:53
 */
@Component
public class SampleXxlJob {
@@ -63,6 +59,12 @@
        return ReturnT.SUCCESS;
    }
    /**
     * 给巡查责任人定时创建任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("createTaskJobHandler")
    public ReturnT<String> createTaskJobHandler(String param) throws Exception {
        XxlJobLogger.log("开始自动创建任务...");
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/mapper/XxlJobInfoMapper.java
New file
@@ -0,0 +1,15 @@
package cn.gistack.sm.xxljob.mapper;
import cn.gistack.sm.xxljob.entity.XxlJobInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/5/15 14:53
 */
public interface XxlJobInfoMapper extends BaseMapper<XxlJobInfo> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/mapper/XxlJobInfoMapper.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.gistack.sm.xxljob.mapper.XxlJobInfoMapper">
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/service/IXxlJobInfoService.java
New file
@@ -0,0 +1,14 @@
package cn.gistack.sm.xxljob.service;
import cn.gistack.sm.xxljob.entity.XxlJobInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/5/15 14:53
 */
public interface IXxlJobInfoService extends IService<XxlJobInfo> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/xxljob/service/impl/XxlJobInfoServiceImpl.java
New file
@@ -0,0 +1,20 @@
package cn.gistack.sm.xxljob.service.impl;
import cn.gistack.sm.xxljob.entity.XxlJobInfo;
import cn.gistack.sm.xxljob.mapper.XxlJobInfoMapper;
import cn.gistack.sm.xxljob.service.IXxlJobInfoService;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/5/15 14:53
 */
@Service
@DS("xxljob")
public class XxlJobInfoServiceImpl extends ServiceImpl<XxlJobInfoMapper, XxlJobInfo> implements IXxlJobInfoService {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/application-dev.yml
@@ -19,10 +19,12 @@
      #设置默认的数据源或者数据源组,默认值即为master
      primary: master
      datasource:
        ## 业务默认数据源
        master:
          url: ${blade.datasource.dev.url}
          username: ${blade.datasource.dev.username}
          password: ${blade.datasource.dev.password}
        ##中台数据源
        zt:
          url: ${blade.datasource.dev.zt.url}
          username: ${blade.datasource.dev.zt.username}
@@ -32,6 +34,11 @@
          url: ${blade.datasource.dev.ztznwh.url}
          username: ${blade.datasource.dev.ztznwh.username}
          password: ${blade.datasource.dev.ztznwh.password}
        ## 定时器数据源
        xxljob:
          url: ${blade.datasource.dev.xxljob.url}
          username: ${blade.datasource.dev.xxljob.username}
          password: ${blade.datasource.dev.xxljob.password}
  main:
    allow-circular-references: true
xxl: