代码接口调试提交

This commit is contained in:
方亮 2026-01-31 15:30:51 +08:00
parent b03fbd81fa
commit dbb14db432
15 changed files with 252 additions and 29 deletions

View File

@ -236,4 +236,19 @@ public class PmTaskController extends BaseController
} }
} }
/**
* 立即执行一次任务不管其他状态
*/
@Log(title = "立即执行一次任务", businessType = BusinessType.OTHER)
@GetMapping("executeOnceJob")
public AjaxResult executeOnceJob(@RequestBody PmTask o)
{
try {
return service.executeOnceJob(o);
} catch (Exception e) {
log.error(e.getMessage());
return AjaxResult.error("系统异常,请联系管理员");
}
}
} }

View File

@ -3,6 +3,7 @@ package com.bonus.job.domain;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.bonus.message.dao.GroupVo;
import com.bonus.message.dao.WorkerVo; import com.bonus.message.dao.WorkerVo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -49,6 +50,16 @@ public class PmTask {
*/ */
private List<WorkerVo> workerList; private List<WorkerVo> workerList;
/**
* 组列表
*/
private List<WorkerVo> groupList;
/**
* 性别
*/
private Integer sex;
private String loopTime; private String loopTime;
private String loopId; private String loopId;

View File

@ -40,4 +40,8 @@ public interface PmTaskMapper {
int updateOneWorkerData(WorkerVo o); int updateOneWorkerData(WorkerVo o);
String getMsgData(WorkerVo o); String getMsgData(WorkerVo o);
List<WorkerVo> getGroupByTaskId(Integer id);
Integer getWorkerSexByTaskId(Integer id);
} }

View File

@ -27,4 +27,12 @@ public interface WorkerJobMapper {
* @param userList * @param userList
*/ */
void insertTaskRecord(List<WorkerVo> userList); void insertTaskRecord(List<WorkerVo> userList);
/**
* 获取人员生日任务列表
*
* @param jobId
* @return
*/
List<WorkerVo> getHappyBirthDayWorkerByJobId(String jobId);
} }

View File

@ -31,4 +31,6 @@ public interface PmTaskService{
AjaxResult getMessageBalance(); AjaxResult getMessageBalance();
AjaxResult updateTaskStatus(PmTask task) throws SchedulerException; AjaxResult updateTaskStatus(PmTask task) throws SchedulerException;
AjaxResult executeOnceJob(PmTask o) throws SchedulerException;
} }

View File

@ -19,8 +19,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -41,6 +39,8 @@ public class PmTaskServiceImpl implements PmTaskService{
@Transactional @Transactional
@Override @Override
public AjaxResult insert(PmTask task) throws SchedulerException, TaskException { public AjaxResult insert(PmTask task) throws SchedulerException, TaskException {
//客户要求初始状态为开启
task.setTaskStatus("0");
//处理job数据 //处理job数据
SysJob job = new SysJob(); SysJob job = new SysJob();
job.setJobName(task.getTaskName()); job.setJobName(task.getTaskName());
@ -50,6 +50,7 @@ public class PmTaskServiceImpl implements PmTaskService{
job.setMisfirePolicy(task.getMisfirePolicy()); job.setMisfirePolicy(task.getMisfirePolicy());
job.setConcurrent(task.getConcurrent()); job.setConcurrent(task.getConcurrent());
job.setStatus(task.getTaskStatus()); job.setStatus(task.getTaskStatus());
job.setCreateBy(SecurityUtils.getUsername()); job.setCreateBy(SecurityUtils.getUsername());
//验证job数据 //验证job数据
AjaxResult ajaxResult = verifyJob(job); AjaxResult ajaxResult = verifyJob(job);
@ -62,10 +63,34 @@ public class PmTaskServiceImpl implements PmTaskService{
job.setRelationId(task.getId()); job.setRelationId(task.getId());
job.setRelationType("短信"); job.setRelationType("短信");
if(insert > 0){ if(insert > 0){
int i = jobService.insertJob(job); int i = jobService.insertJob(job);
task.getWorkerList().forEach(worker -> worker.setTaskId(task.getId())); List<WorkerVo> allList = new ArrayList<>();
mapper.insertTaskWorker(task.getWorkerList()); List<WorkerVo> workerList = task.getWorkerList();
if (workerList != null && !workerList.isEmpty()) {
workerList.forEach(worker -> {
worker.setTaskId(task.getId());
worker.setType("1");
});
allList.addAll(workerList);
}
List<WorkerVo> groupList = task.getGroupList();
if (groupList != null && !groupList.isEmpty()) {
groupList.forEach(worker ->{
worker.setTaskId(task.getId());
worker.setType("2");
});
allList.addAll(groupList);
}
if(task.getSex() != null){
WorkerVo bean = new WorkerVo();
bean.setId(task.getSex());
bean.setTaskId(task.getId());
bean.setType("3");
allList.add(bean);
}
if (!allList.isEmpty()){
mapper.insertTaskWorker(allList);
}
} }
return insert > 0 ? AjaxResult.success("添加成功",task) : AjaxResult.error("添加失败"); return insert > 0 ? AjaxResult.success("添加成功",task) : AjaxResult.error("添加失败");
} }
@ -74,8 +99,15 @@ public class PmTaskServiceImpl implements PmTaskService{
public PmTask getById(PmTask task) { public PmTask getById(PmTask task) {
PmTask byId = mapper.getById(task); PmTask byId = mapper.getById(task);
if(byId != null && byId.getId() != null){ if(byId != null && byId.getId() != null){
//单人
List<WorkerVo> list = mapper.getWorkerByTaskId(task.getId()); List<WorkerVo> list = mapper.getWorkerByTaskId(task.getId());
byId.setWorkerList(list); byId.setWorkerList(list);
//分组
List<WorkerVo> groupList = mapper.getGroupByTaskId(task.getId());
byId.setGroupList(list);
//按性别群发
Integer sex = mapper.getWorkerSexByTaskId(task.getId());
byId.setSex(sex);
} }
return byId; return byId;
} }
@ -103,9 +135,34 @@ public class PmTaskServiceImpl implements PmTaskService{
int update = mapper.update(task); int update = mapper.update(task);
if(update > 0){ if(update > 0){
int i = jobService.updateJob(job); int i = jobService.updateJob(job);
task.getWorkerList().forEach(worker -> worker.setTaskId(task.getId())); List<WorkerVo> allList = new ArrayList<>();
List<WorkerVo> workerList = task.getWorkerList();
if (workerList != null && !workerList.isEmpty()) {
workerList.forEach(worker -> {
worker.setTaskId(task.getId());
worker.setType("1");
});
allList.addAll(workerList);
}
List<WorkerVo> groupList = task.getGroupList();
if (groupList != null && !groupList.isEmpty()) {
groupList.forEach(worker ->{
worker.setTaskId(task.getId());
worker.setType("2");
});
allList.addAll(groupList);
}
if(task.getSex() != null){
WorkerVo bean = new WorkerVo();
bean.setId(task.getSex());
bean.setTaskId(task.getId());
bean.setType("3");
allList.add(bean);
}
mapper.delTaskWorker(task); mapper.delTaskWorker(task);
mapper.insertTaskWorker(task.getWorkerList()); if (!allList.isEmpty()){
mapper.insertTaskWorker(allList);
}
} }
return update > 0 ? AjaxResult.success("修改成功",task) : AjaxResult.error("修改失败"); return update > 0 ? AjaxResult.success("修改成功",task) : AjaxResult.error("修改失败");
} }
@ -160,6 +217,7 @@ public class PmTaskServiceImpl implements PmTaskService{
public AjaxResult oneWorkerResend(WorkerVo o) { public AjaxResult oneWorkerResend(WorkerVo o) {
//1.先去查短信内容 //1.先去查短信内容
String sendContent = mapper.getMsgData(o); String sendContent = mapper.getMsgData(o);
o.setSendContent(sendContent);
List<WorkerVo> userList = new ArrayList<>(); List<WorkerVo> userList = new ArrayList<>();
userList.add(o); userList.add(o);
MessageSendUtil messageSendUtil = new MessageSendUtil(); MessageSendUtil messageSendUtil = new MessageSendUtil();
@ -198,6 +256,12 @@ public class PmTaskServiceImpl implements PmTaskService{
} }
} }
/**
* 更新任务状态
* @param task
* @return
* @throws SchedulerException
*/
@Override @Override
public AjaxResult updateTaskStatus(PmTask task) throws SchedulerException { public AjaxResult updateTaskStatus(PmTask task) throws SchedulerException {
SysJob newJob = jobService.selectJobById(task.getJobId()); SysJob newJob = jobService.selectJobById(task.getJobId());
@ -206,6 +270,20 @@ public class PmTaskServiceImpl implements PmTaskService{
return i > 0 ? AjaxResult.success("更新成功") : AjaxResult.error("更新失败"); return i > 0 ? AjaxResult.success("更新成功") : AjaxResult.error("更新失败");
} }
/**
* 执行一次任务
* @param o
* @return
* @throws SchedulerException
*/
@Override
public AjaxResult executeOnceJob(PmTask o) throws SchedulerException {
//处理job数据
SysJob job = jobService.selectJobById(o.getJobId());
boolean run = jobService.run(job);
return run ? AjaxResult.success("执行成功") : AjaxResult.error("执行失败");
}
/** /**
* 校验cron表达式 * 校验cron表达式
* @param job * @param job

View File

@ -34,6 +34,7 @@ public class WorkerSendMsgTask{
SnowflakeIdGenerator idGen = new SnowflakeIdGenerator(1, 1); SnowflakeIdGenerator idGen = new SnowflakeIdGenerator(1, 1);
/** /**
* schedule
* 人员短信调度执行 * 人员短信调度执行
*/ */
public void sendMsg(String jobId){ public void sendMsg(String jobId){
@ -46,7 +47,19 @@ public class WorkerSendMsgTask{
} }
} }
/**
* schedule
* 默认任务生日任务
*/
public void sendHappyBirthDayMsg(String jobId){
try{
//查询过生日的人员和短信内容
List<WorkerVo> list = mapper.getHappyBirthDayWorkerByJobId(jobId);
sendInBatches(list);
}catch (Exception e){
logger.error("人员短信调度,{}",e.getMessage());
}
}
/** /**
* 批量发送短信 * 批量发送短信

View File

@ -3,6 +3,7 @@ package com.bonus.message.controller;
import com.bonus.common.core.controller.BaseController; import com.bonus.common.core.controller.BaseController;
import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.core.domain.AjaxResult;
import com.bonus.common.core.page.TableDataInfo; import com.bonus.common.core.page.TableDataInfo;
import com.bonus.common.utils.SecurityUtils;
import com.bonus.message.dao.GroupVo; import com.bonus.message.dao.GroupVo;
import com.bonus.message.dao.WorkerVo; import com.bonus.message.dao.WorkerVo;
import com.bonus.message.service.GroupService; import com.bonus.message.service.GroupService;
@ -45,6 +46,8 @@ public class GroupController extends BaseController {
@PostMapping("/addGroup") @PostMapping("/addGroup")
public AjaxResult addGroup(@RequestBody GroupVo groupVo) { public AjaxResult addGroup(@RequestBody GroupVo groupVo) {
try { try {
String userName = SecurityUtils.getLoginUser().getUser().getUserName();
groupVo.setCreateUser(userName);
int res = groupService.addGroup(groupVo); int res = groupService.addGroup(groupVo);
if (res ==1) { if (res ==1) {
return AjaxResult.success(); return AjaxResult.success();

View File

@ -28,6 +28,11 @@ public class GroupVo {
*/ */
private String remark; private String remark;
/**
* 创建人员
*/
private String createUser;
/** /**
* 创建时间 * 创建时间
*/ */

View File

@ -62,6 +62,11 @@ public class WorkerVo {
*/ */
private String keyWord; private String keyWord;
/**
* 类别
*/
private String type;
/** /**
* 分组 * 分组
*/ */

View File

@ -104,6 +104,11 @@ public class WorkerServiceImpl implements WorkerService {
if (sysDept != null){ if (sysDept != null){
workerVo.setOrgId(sysDept.getDeptId().intValue()); workerVo.setOrgId(sysDept.getDeptId().intValue());
} }
if (workerVo.getSex().trim().equals("")) {
workerVo.setSex("1");
} else {
workerVo.setSex("0");
}
addWorker(workerVo); addWorker(workerVo);
} }
return "导入成功"; return "导入成功";

View File

@ -68,13 +68,14 @@ spring:
# redis 配置 # redis 配置
redis: redis:
# 地址 # 地址
host: 192.168.0.14 # host: 192.168.0.14
# 端口默认为6379 # port: 2004
port: 2004 # database: 6
# 数据库索引 # password: Plzbns@Redis123!
host: 127.0.0.1
port: 6379
database: 6 database: 6
# 密码 password:
password: Plzbns@Redis123!
# 连接超时时间 # 连接超时时间
timeout: 10s timeout: 10s
lettuce: lettuce:

View File

@ -4,8 +4,8 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.message.mapper.GroupMapper"> <mapper namespace="com.bonus.message.mapper.GroupMapper">
<insert id="addGroup" useGeneratedKeys="true" keyProperty="id"> <insert id="addGroup" useGeneratedKeys="true" keyProperty="id">
insert into pm_group (group_name,remark,create_time) insert into pm_group (group_name,remark,create_user)
values (#{groupName},#{remark},#{createTime}) values (#{groupName},#{remark},#{createUser})
</insert> </insert>
<insert id="addGroupDetails"> <insert id="addGroupDetails">
insert into bm_group_details (group_id,worker_id) insert into bm_group_details (group_id,worker_id)
@ -20,9 +20,6 @@
<if test="remark!= null " > <if test="remark!= null " >
remark=#{remark}, remark=#{remark},
</if> </if>
<if test="updateTime!= null " >
update_time=#{updateTime},
</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
@ -38,7 +35,9 @@
<if test="groupName!= null " > <if test="groupName!= null " >
and group_name like concat('%', #{groupName}, '%') and group_name like concat('%', #{groupName}, '%')
</if> </if>
<if test="createUser!= null" >
and create_user like concat('%', #{createUser}, '%')
</if>
</select> </select>
<select id="getWorkerList" resultType="com.bonus.message.dao.WorkerVo"> <select id="getWorkerList" resultType="com.bonus.message.dao.WorkerVo">
select pw.id,pw.worker_name,pw.org_id,pw.sex,pw.phone select pw.id,pw.worker_name,pw.org_id,pw.sex,pw.phone

View File

@ -80,14 +80,14 @@
bm.worker_id as id, w.worker_name, w.phone bm.worker_id as id, w.worker_name, w.phone
from bm_task_worker bm from bm_task_worker bm
left join pm_worker w on bm.worker_id = w.id left join pm_worker w on bm.worker_id = w.id
where bm.task_id = #{taskId} where bm.task_id = #{taskId} and bm.type = '1'
</select> </select>
<insert id="insertTaskWorker"> <insert id="insertTaskWorker">
insert into bm_task_worker (task_id, worker_id) insert into bm_task_worker (task_id, worker_id,type)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.taskId},#{item.id}) (#{item.taskId},#{item.id},#{item.type})
</foreach> </foreach>
</insert> </insert>
@ -114,6 +114,12 @@
LEFT JOIN bm_task_record btw ON btw.task_id = pt.id LEFT JOIN bm_task_record btw ON btw.task_id = pt.id
WHERE WHERE
pt.id = #{id} pt.id = #{id}
<if test="taskName != null">
and pt.task_name like concat('%',#{taskName},'%')
</if>
<if test="msgType != null">
and pt.msg_type = #{msgType}
</if>
GROUP BY GROUP BY
btw.loop_id btw.loop_id
</select> </select>
@ -141,6 +147,7 @@
btw.id, btw.id,
w.worker_name, w.worker_name,
btw.phone, btw.phone,
sd.dept_name AS orgName,
btw.send_time, btw.send_time,
btw.submit_status, btw.submit_status,
btw.reason, btw.reason,
@ -148,6 +155,7 @@
FROM FROM
bm_task_record btw bm_task_record btw
left join pm_worker w on btw.worker_id = w.id left join pm_worker w on btw.worker_id = w.id
left join sys_dept sd on w.org_id = sd.dept_id
WHERE WHERE
btw.loop_id = #{loopId} btw.loop_id = #{loopId}
</select> </select>
@ -165,4 +173,19 @@
WHERE WHERE
btw.id = #{id} btw.id = #{id}
</select> </select>
<select id="getGroupByTaskId" resultType="com.bonus.message.dao.WorkerVo">
select
pg.id as id, pg.group_name as workerName
from bm_task_worker bm
left join pm_group pg on bm.worker_id = pg.id
where bm.task_id = #{taskId} and bm.type = '2'
</select>
<select id="getWorkerSexByTaskId" resultType="Integer">
select
bm.worker_id
from bm_task_worker bm
where bm.task_id = #{taskId} and bm.type = '3'
</select>
</mapper> </mapper>

View File

@ -21,12 +21,49 @@
<select id="getWorkerByJobId" resultType="com.bonus.message.dao.WorkerVo"> <select id="getWorkerByJobId" resultType="com.bonus.message.dao.WorkerVo">
select SELECT
pt.task_name, pt.send_content, w.worker_name, w.phone,pt.id as taskId, w.id pt.task_name,
from pm_task pt pt.send_content,
left join bm_task_worker bm on pt.id = bm.task_id w.worker_name,
left join pm_worker w on bm.worker_id = w.id w.phone,
where pt.id = #{jobId} pt.id AS taskId,
w.id
FROM
bm_task_worker bm
LEFT JOIN pm_task pt ON pt.id = bm.task_id
LEFT JOIN pm_worker w ON bm.worker_id = w.id
WHERE
pt.id = #{jobId} AND type = 1
UNION
SELECT
pt.task_name,
pt.send_content,
w.worker_name,
w.phone,
pt.id AS taskId,
w.id
FROM
bm_task_worker bm
LEFT JOIN pm_task pt ON pt.id = bm.task_id
LEFT JOIN pm_group g ON bm.worker_id = g.id
LEFT JOIN bm_group_details pgw ON g.id = pgw.group_id
LEFT JOIN pm_worker w ON pgw.worker_id = w.id
WHERE
pt.id = #{jobId} AND type = 2
UNION
SELECT
pt.task_name,
pt.send_content,
w.worker_name,
w.phone,
pt.id AS taskId,
w.id
FROM
bm_task_worker bm
LEFT JOIN pm_task pt ON pt.id = bm.task_id
LEFT JOIN pm_worker w ON bm.worker_id = w.sex
WHERE
pt.id = #{jobId} AND type = 3
</select> </select>
<insert id="insertTaskRecord"> <insert id="insertTaskRecord">
@ -36,4 +73,18 @@
(#{item.taskId}, #{item.loopId}, #{item.id}, #{item.phone}, #{item.batchNumber}, #{item.submitStatus}, #{item.sendTime}, #{item.reason}) (#{item.taskId}, #{item.loopId}, #{item.id}, #{item.phone}, #{item.batchNumber}, #{item.submitStatus}, #{item.sendTime}, #{item.reason})
</foreach> </foreach>
</insert> </insert>
<select id="getHappyBirthDayWorkerByJobId" resultType="com.bonus.message.dao.WorkerVo">
SELECT
pt.task_name,
pt.send_content,
w.worker_name,
w.phone,
pt.id AS taskId,
w.id
FROM pm_task pt, pm_worker w
WHERE
pt.id = #{jobId}
AND w.birthday = CURRENT_DATE;
</select>
</mapper> </mapper>