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: