zhongrj
2024-01-10 a2979b5df06744de80c6be6218260e2fa701cce2
新增标签任务处理
9 files modified
10 files added
656 ■■■■■ changed files
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml 19 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/IPlaceService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/vo/PlaceVO.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/entity/TaskCampusReportingEventEntity.java 34 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/service/ITaskService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/service/impl/TaskCampusReportingEventServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java 66 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/controller/JobInfoController.java 109 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/dto/JobInfoDTO.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/entity/JobInfoEntity.java 134 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java 54 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/mapper/JobInfoMapper.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/mapper/JobInfoMapper.xml 39 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/service/IJobInfoService.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/service/impl/JobInfoServiceImpl.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/vo/JobInfoVO.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/wrapper/JobInfoWrapper.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java
@@ -108,4 +108,12 @@
     * @return
     */
    List<PlaceEntity> placeAndRelHandle();
    /**
     * 根据标签编号集合查询对应的场所
     * @param stringList
     * @return
     */
    List<PlaceVO> getPlaceListByParam(@Param("list") List<String> stringList,
                                      @Param("color") String color);
}
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
@@ -184,4 +184,23 @@
        and jp.is_deleted = 0
        and jp.source !=3
    </select>
    <!--根据标签编号集合查询对应的场所-->
    <select id="getPlaceListByParam" resultType="org.springblade.modules.place.vo.PlaceVO">
        select jp.* from jczz_place jp
        left join jczz_place_poi_label jppl on jppl.place_id = jp.id
        where jp.is_deleted = 0 and jppl.type = 3
        and jppl.color = #{color}
        <choose>
            <when test="list!=null and list.size()>0">
                and jppl.poi_code in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </when>
            <otherwise>
                and jppl.poi_code in ('')
            </otherwise>
        </choose>
    </select>
</mapper>
src/main/java/org/springblade/modules/place/service/IPlaceService.java
@@ -17,6 +17,7 @@
package org.springblade.modules.place.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import org.springblade.common.node.TreeStringNode;
import org.springblade.modules.place.entity.PlaceEntity;
import org.springblade.modules.place.excel.PlaceAndRelExcel;
@@ -121,4 +122,12 @@
     * @return
     */
    Object placeAndRelHandle();
    /**
     * 根据标签编号集合查询对应的场所
     * @param stringList
     * @param color
     * @return
     */
    List<PlaceVO> getPlaceListByParam(List<String> stringList,String color);
}
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -542,6 +542,10 @@
                        placeVO.setGrid(gridVO);
                        place.setGridId(gridVO.getId());
                    }
                    // 设置详情信息
                    QueryWrapper<PlaceExtEntity> queryWrapper = new QueryWrapper<>();
                    queryWrapper.eq("is_deleted",0).eq("place_id",placeVO.getId());
                    placeVO.setPlaceExtEntity(placeExtService.getOne(queryWrapper));
                } else {
                    // 通过定位点落面分析网格位置,反向推出社区派出所相关数据
@@ -841,4 +845,15 @@
        }
        return null;
    }
    /**
     * 根据标签编号集合查询对应的场所
     * @param stringList
     * @param color
     * @return
     */
    @Override
    public List<PlaceVO> getPlaceListByParam(List<String> stringList,String color) {
        return baseMapper.getPlaceListByParam(stringList,color);
    }
}
src/main/java/org/springblade/modules/place/vo/PlaceVO.java
@@ -24,6 +24,7 @@
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.place.entity.PlaceExtEntity;
import org.springblade.modules.place.entity.PlacePoiLabel;
import java.util.ArrayList;
@@ -112,4 +113,9 @@
     * 详情id(维护)
     */
    private Long placeExtId;
    /**
     * 门牌地址信息
     */
    private PlaceExtEntity placeExtEntity;
}
src/main/java/org/springblade/modules/task/entity/TaskCampusReportingEventEntity.java
@@ -16,14 +16,14 @@
 */
package org.springblade.modules.task.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@@ -214,6 +214,32 @@
    @TableField("fo_image_urls")
    private String foImageUrls;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 创建人
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    /**
     * 来源: 1:主动上报  2:系统自动下发
     */
    @ApiModelProperty(value = "来源: 1:主动上报  2:系统自动下发")
    private Integer source;
    /**
     * 是否已删除 0:否  1:是
     */
    @ApiModelProperty("是否已删除")
    private Integer isDeleted;
src/main/java/org/springblade/modules/task/service/ITaskService.java
@@ -70,4 +70,12 @@
    Boolean removeTask(TaskEntity task);
    IPage<TaskVO> getBailReportingPage(IPage<TaskVO> page, TaskVO task);
    /**
     * 根据类型创建任务
     * @param reportType 任务/事件类型
     * @param color 参数
     * @return
     */
    boolean createTaskJob(Integer reportType, String color);
}
src/main/java/org/springblade/modules/task/service/impl/TaskCampusReportingEventServiceImpl.java
@@ -27,6 +27,8 @@
import org.springblade.modules.task.service.ITaskCampusReportingEventService;
import org.springblade.modules.task.service.ITaskService;
import org.springblade.modules.task.vo.TaskCampusReportingEventVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -41,8 +43,10 @@
@Service
public class TaskCampusReportingEventServiceImpl extends ServiceImpl<TaskCampusReportingEventMapper, TaskCampusReportingEventEntity> implements ITaskCampusReportingEventService {
    @Resource
    @Autowired
    @Lazy
    private ITaskService taskService;
    @Override
    public IPage<TaskCampusReportingEventVO> selectTaskCampusReportingEventPage(IPage<TaskCampusReportingEventVO> page, TaskCampusReportingEventVO taskCampusReportingEvent) {
        return page.setRecords(baseMapper.selectTaskCampusReportingEventPage(page, taskCampusReportingEvent));
src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java
@@ -17,16 +17,22 @@
package org.springblade.modules.task.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.DictConstant;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.modules.category.entity.CategoryEntity;
import org.springblade.modules.category.service.ICategoryService;
import org.springblade.modules.house.service.IHouseRentalService;
import org.springblade.modules.house.service.IHouseholdService;
import org.springblade.modules.house.vo.HouseRentalTenantVO;
import org.springblade.modules.place.service.IPlaceExtService;
import org.springblade.modules.place.service.IPlaceService;
import org.springblade.modules.place.vo.PlaceVO;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.task.entity.*;
@@ -35,11 +41,13 @@
import org.springblade.modules.task.vo.TaskVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 任务表 服务实现类
@@ -50,8 +58,8 @@
@Service
public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> implements ITaskService {
    // @Autowired
    // private ITaskReportForRepairsService iTaskReportForRepairsService;
     @Autowired
     private IPlaceService placeService;
    @Autowired
    private IHouseholdService iHouseholdService;
@@ -59,9 +67,14 @@
    @Autowired
    private IHouseRentalService iHouseRentalService;
    @Autowired
    private IDeptService deptService;
    @Autowired
    private ICategoryService categoryService;
    @Autowired
    private ITaskCampusReportingEventService taskCampusReportingEventService;
    @Override
    public IPage<TaskVO> selectTaskPage(IPage<TaskVO> page, TaskVO task) {
@@ -268,4 +281,51 @@
        return update1;
    }
    /**
     * 根据类型创建任务
     * @param reportType 任务/事件类型
     * @param color 参数
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean createTaskJob(Integer reportType, String color) {
        boolean flag = false;
        if (reportType==6){
            // 校园安全自查,查询标签为教育的场所 parentNo = 1601
            String parentNo = "1601";
            QueryWrapper<CategoryEntity> wrapper = new QueryWrapper<>();
            wrapper.eq("is_deleted",0).eq("parent_no",parentNo);
            List<CategoryEntity> categoryEntityList = categoryService.list(wrapper);
            // 取出编号集合
            List<String> stringList = categoryEntityList.stream().map(categoryEntity -> categoryEntity.getCategoryNo()).collect(Collectors.toList());
            // 根据编号集合查询对应的场所
            List<PlaceVO> placeVOList = placeService.getPlaceListByParam(stringList,color);
            // 生成任务
            for (PlaceVO placeVO : placeVOList) {
                TaskEntity taskEntity = new TaskEntity();
                taskEntity.setType(1);
                taskEntity.setName(DictConstant.CAMPUS_SECURITY_INSPECTION);
                taskEntity.setFrequency(2);
                taskEntity.setCreateTime(new Date());
                taskEntity.setHouseCode(placeVO.getHouseCode());
                taskEntity.setReportType(reportType);
                // 新增
                flag = save(taskEntity);
                // 同时新增校园安全检查任务
                TaskCampusReportingEventEntity campusReportingEventEntity = new TaskCampusReportingEventEntity();
                campusReportingEventEntity.setTaskId(taskEntity.getId());
                campusReportingEventEntity.setPlaceId(placeVO.getId());
                campusReportingEventEntity.setCheckUserId(placeVO.getPrincipalUserId());
                campusReportingEventEntity.setCheckUserName(placeVO.getPrincipal());
                campusReportingEventEntity.setCheckTelephone(placeVO.getPrincipalPhone());
                // 系统下发
                campusReportingEventEntity.setSource(2);
                // 新增
                taskCampusReportingEventService.save(campusReportingEventEntity);
            }
        }
        return flag;
    }
}
src/main/java/org/springblade/xxljob/controller/JobInfoController.java
New file
@@ -0,0 +1,109 @@
package org.springblade.xxljob.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.xxljob.entity.JobInfoEntity;
import org.springblade.xxljob.vo.JobInfoVO;
import org.springblade.xxljob.wrapper.JobInfoWrapper;
import org.springblade.xxljob.service.IJobInfoService;
import org.springblade.core.boot.ctrl.BladeController;
/**
 * 调度任务信息表 控制器
 *
 * @author BladeX
 * @since 2024-01-10
 */
@RestController
@AllArgsConstructor
@RequestMapping("blade-jobInfo/jobInfo")
@Api(value = "调度任务信息表", tags = "调度任务信息表接口")
public class JobInfoController extends BladeController {
    private final IJobInfoService jobInfoService;
    /**
     * 调度任务信息表 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入jobInfo")
    public R<JobInfoEntity> detail(JobInfoEntity jobInfo) {
        JobInfoEntity detail = jobInfoService.getOne(Condition.getQueryWrapper(jobInfo));
        return R.data(detail);
    }
    /**
     * 调度任务信息表 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入jobInfo")
    public R<IPage<JobInfoVO>> list(JobInfoEntity jobInfo, Query query) {
        IPage<JobInfoEntity> pages = jobInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(jobInfo));
        return R.data(JobInfoWrapper.build().pageVO(pages));
    }
    /**
     * 调度任务信息表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入jobInfo")
    public R<IPage<JobInfoVO>> page(JobInfoVO jobInfo, Query query) {
        IPage<JobInfoVO> pages = jobInfoService.selectJobInfoPage(Condition.getPage(query), jobInfo);
        return R.data(pages);
    }
    /**
     * 调度任务信息表 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入jobInfo")
    public R save(@Valid @RequestBody JobInfoEntity jobInfo) {
        return R.status(jobInfoService.save(jobInfo));
    }
    /**
     * 调度任务信息表 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入jobInfo")
    public R update(@Valid @RequestBody JobInfoEntity jobInfo) {
        return R.status(jobInfoService.updateById(jobInfo));
    }
    /**
     * 调度任务信息表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入jobInfo")
    public R submit(@Valid @RequestBody JobInfoEntity jobInfo) {
        return R.status(jobInfoService.saveOrUpdate(jobInfo));
    }
    /**
     * 调度任务信息表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(jobInfoService.deleteLogic(Func.toLongList(ids)));
    }
}
src/main/java/org/springblade/xxljob/dto/JobInfoDTO.java
New file
@@ -0,0 +1,18 @@
package org.springblade.xxljob.dto;
import org.springblade.xxljob.entity.JobInfoEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 调度任务信息表 数据传输对象实体类
 *
 * @author BladeX
 * @since 2024-01-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class JobInfoDTO extends JobInfoEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/xxljob/entity/JobInfoEntity.java
New file
@@ -0,0 +1,134 @@
package org.springblade.xxljob.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * 调度任务信息表 实体类
 *
 * @author BladeX
 * @since 2024-01-10
 */
@Data
@TableName("xxl_job_info")
@ApiModel(value = "JobInfo对象", description = "调度任务信息表")
@EqualsAndHashCode(callSuper = true)
public class JobInfoEntity extends TenantEntity {
    /**
     * 执行器主键ID
     */
    @ApiModelProperty(value = "执行器主键ID")
    private Integer jobGroup;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String jobDesc;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date addTime;
    /**
     * 作者
     */
    @ApiModelProperty(value = "作者")
    private String author;
    /**
     * 报警邮件
     */
    @ApiModelProperty(value = "报警邮件")
    private String alarmEmail;
    /**
     * 调度类型
     */
    @ApiModelProperty(value = "调度类型")
    private String scheduleType;
    /**
     * 调度配置,值含义取决于调度类型
     */
    @ApiModelProperty(value = "调度配置,值含义取决于调度类型")
    private String scheduleConf;
    /**
     * 调度过期策略
     */
    @ApiModelProperty(value = "调度过期策略")
    private String misfireStrategy;
    /**
     * 执行器路由策略
     */
    @ApiModelProperty(value = "执行器路由策略")
    private String executorRouteStrategy;
    /**
     * 执行器任务handler
     */
    @ApiModelProperty(value = "执行器任务handler")
    private String executorHandler;
    /**
     * 执行器任务参数
     */
    @ApiModelProperty(value = "执行器任务参数")
    private String executorParam;
    /**
     * 阻塞处理策略
     */
    @ApiModelProperty(value = "阻塞处理策略")
    private String executorBlockStrategy;
    /**
     * 任务执行超时时间,单位秒
     */
    @ApiModelProperty(value = "任务执行超时时间,单位秒")
    private Integer executorTimeout;
    /**
     * 失败重试次数
     */
    @ApiModelProperty(value = "失败重试次数")
    private Integer executorFailRetryCount;
    /**
     * GLUE类型
     */
    @ApiModelProperty(value = "GLUE类型")
    private String glueType;
    /**
     * GLUE源代码
     */
    @ApiModelProperty(value = "GLUE源代码")
    private String glueSource;
    /**
     * GLUE备注
     */
    @ApiModelProperty(value = "GLUE备注")
    private String glueRemark;
    /**
     * GLUE更新时间
     */
    @ApiModelProperty(value = "GLUE更新时间")
    private Date glueUpdatetime;
    /**
     * 子任务ID,多个逗号分隔
     */
    @ApiModelProperty(value = "子任务ID,多个逗号分隔")
    private String childJobid;
    /**
     * 调度状态:0-停止,1-运行
     */
    @ApiModelProperty(value = "调度状态:0-停止,1-运行")
    private Byte triggerStatus;
    /**
     * 上次调度时间
     */
    @ApiModelProperty(value = "上次调度时间")
    private Long triggerLastTime;
    /**
     * 下次调度时间
     */
    @ApiModelProperty(value = "下次调度时间")
    private Long triggerNextTime;
}
src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java
New file
@@ -0,0 +1,54 @@
package org.springblade.xxljob.jobhandler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.modules.task.service.ITaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * 三色标签定时任务执行器
 * @author zhongrj
 * @date 2024-01-10
 */
@Component
public class LabelHandleJob {
    private static Logger logger = LoggerFactory.getLogger(LabelHandleJob.class);
    @Autowired
    private ITaskService taskService;
    /**
     * 校园安全自查定时任务-绿色
     */
    @XxlJob("campusSecurityJobHandler")
    public void campusSecurityJobHandler (String param){
        XxlJobHelper.log("开始执行任务...");
        JSONObject jsonParam = JSON.parseObject(param);
        String color = jsonParam.getString("color");
        // 校园安全检查
        Integer reportType = 6;
        // 根据类型创建任务
        boolean result = taskService.createTaskJob(reportType,color);
        XxlJobHelper.log("任务响应结果..." + result);
        // 创建外呼短信发送任务记录
        XxlJobHelper.log("结束自动创建任务...");
    }
}
src/main/java/org/springblade/xxljob/mapper/JobInfoMapper.java
New file
@@ -0,0 +1,27 @@
package org.springblade.xxljob.mapper;
import org.springblade.xxljob.entity.JobInfoEntity;
import org.springblade.xxljob.vo.JobInfoVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * 调度任务信息表 Mapper 接口
 *
 * @author BladeX
 * @since 2024-01-10
 */
public interface JobInfoMapper extends BaseMapper<JobInfoEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param jobInfo
     * @return
     */
    List<JobInfoVO> selectJobInfoPage(IPage page, JobInfoVO jobInfo);
}
src/main/java/org/springblade/xxljob/mapper/JobInfoMapper.xml
New file
@@ -0,0 +1,39 @@
<?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="org.springblade.xxljob.mapper.JobInfoMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="jobInfoResultMap" type="org.springblade.xxljob.entity.JobInfoEntity">
        <result column="id" property="id"/>
        <result column="job_group" property="jobGroup"/>
        <result column="job_desc" property="jobDesc"/>
        <result column="add_time" property="addTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="author" property="author"/>
        <result column="alarm_email" property="alarmEmail"/>
        <result column="schedule_type" property="scheduleType"/>
        <result column="schedule_conf" property="scheduleConf"/>
        <result column="misfire_strategy" property="misfireStrategy"/>
        <result column="executor_route_strategy" property="executorRouteStrategy"/>
        <result column="executor_handler" property="executorHandler"/>
        <result column="executor_param" property="executorParam"/>
        <result column="executor_block_strategy" property="executorBlockStrategy"/>
        <result column="executor_timeout" property="executorTimeout"/>
        <result column="executor_fail_retry_count" property="executorFailRetryCount"/>
        <result column="glue_type" property="glueType"/>
        <result column="glue_source" property="glueSource"/>
        <result column="glue_remark" property="glueRemark"/>
        <result column="glue_updatetime" property="glueUpdatetime"/>
        <result column="child_jobid" property="childJobid"/>
        <result column="trigger_status" property="triggerStatus"/>
        <result column="trigger_last_time" property="triggerLastTime"/>
        <result column="trigger_next_time" property="triggerNextTime"/>
    </resultMap>
    <select id="selectJobInfoPage" resultMap="jobInfoResultMap">
        select * from xxl_job_info where is_deleted = 0
    </select>
</mapper>
src/main/java/org/springblade/xxljob/service/IJobInfoService.java
New file
@@ -0,0 +1,26 @@
package org.springblade.xxljob.service;
import org.springblade.xxljob.entity.JobInfoEntity;
import org.springblade.xxljob.vo.JobInfoVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 调度任务信息表 服务类
 *
 * @author BladeX
 * @since 2024-01-10
 */
public interface IJobInfoService extends BaseService<JobInfoEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param jobInfo
     * @return
     */
    IPage<JobInfoVO> selectJobInfoPage(IPage<JobInfoVO> page, JobInfoVO jobInfo);
}
src/main/java/org/springblade/xxljob/service/impl/JobInfoServiceImpl.java
New file
@@ -0,0 +1,26 @@
package org.springblade.xxljob.service.impl;
import org.springblade.xxljob.entity.JobInfoEntity;
import org.springblade.xxljob.vo.JobInfoVO;
import org.springblade.xxljob.mapper.JobInfoMapper;
import org.springblade.xxljob.service.IJobInfoService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 调度任务信息表 服务实现类
 *
 * @author BladeX
 * @since 2024-01-10
 */
@Service
public class JobInfoServiceImpl extends BaseServiceImpl<JobInfoMapper, JobInfoEntity> implements IJobInfoService {
    @Override
    public IPage<JobInfoVO> selectJobInfoPage(IPage<JobInfoVO> page, JobInfoVO jobInfo) {
        return page.setRecords(baseMapper.selectJobInfoPage(page, jobInfo));
    }
}
src/main/java/org/springblade/xxljob/vo/JobInfoVO.java
New file
@@ -0,0 +1,18 @@
package org.springblade.xxljob.vo;
import org.springblade.xxljob.entity.JobInfoEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 调度任务信息表 视图实体类
 *
 * @author BladeX
 * @since 2024-01-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class JobInfoVO extends JobInfoEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/xxljob/wrapper/JobInfoWrapper.java
New file
@@ -0,0 +1,34 @@
package org.springblade.xxljob.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.xxljob.entity.JobInfoEntity;
import org.springblade.xxljob.vo.JobInfoVO;
import java.util.Objects;
/**
 * 调度任务信息表 包装类,返回视图层所需的字段
 *
 * @author BladeX
 * @since 2024-01-10
 */
public class JobInfoWrapper extends BaseEntityWrapper<JobInfoEntity, JobInfoVO>  {
    public static JobInfoWrapper build() {
        return new JobInfoWrapper();
     }
    @Override
    public JobInfoVO entityVO(JobInfoEntity jobInfo) {
        JobInfoVO jobInfoVO = Objects.requireNonNull(BeanUtil.copy(jobInfo, JobInfoVO.class));
        //User createUser = UserCache.getUser(jobInfo.getCreateUser());
        //User updateUser = UserCache.getUser(jobInfo.getUpdateUser());
        //jobInfoVO.setCreateUserName(createUser.getName());
        //jobInfoVO.setUpdateUserName(updateUser.getName());
        return jobInfoVO;
    }
}