diff --git a/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java b/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java index db9ddcb..b08724c 100644 --- a/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java +++ b/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java @@ -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("系统异常,请联系管理员"); + } + } + } diff --git a/bonus-business/src/main/java/com/bonus/job/domain/PmTask.java b/bonus-business/src/main/java/com/bonus/job/domain/PmTask.java index f6c3e12..01d10aa 100644 --- a/bonus-business/src/main/java/com/bonus/job/domain/PmTask.java +++ b/bonus-business/src/main/java/com/bonus/job/domain/PmTask.java @@ -3,6 +3,7 @@ package com.bonus.job.domain; import java.util.Date; import java.util.List; +import com.bonus.message.dao.GroupVo; import com.bonus.message.dao.WorkerVo; import lombok.AllArgsConstructor; import lombok.Data; @@ -49,6 +50,16 @@ public class PmTask { */ private List workerList; + /** + * 组列表 + */ + private List groupList; + + /** + * 性别 + */ + private Integer sex; + private String loopTime; private String loopId; diff --git a/bonus-business/src/main/java/com/bonus/job/mapper/PmTaskMapper.java b/bonus-business/src/main/java/com/bonus/job/mapper/PmTaskMapper.java index d878874..833b2fc 100644 --- a/bonus-business/src/main/java/com/bonus/job/mapper/PmTaskMapper.java +++ b/bonus-business/src/main/java/com/bonus/job/mapper/PmTaskMapper.java @@ -40,4 +40,8 @@ public interface PmTaskMapper { int updateOneWorkerData(WorkerVo o); String getMsgData(WorkerVo o); + + List getGroupByTaskId(Integer id); + + Integer getWorkerSexByTaskId(Integer id); } diff --git a/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java b/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java index 36d7ed6..c3ea798 100644 --- a/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java +++ b/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java @@ -27,4 +27,12 @@ public interface WorkerJobMapper { * @param userList */ void insertTaskRecord(List userList); + + /** + * 获取人员生日任务列表 + * + * @param jobId + * @return + */ + List getHappyBirthDayWorkerByJobId(String jobId); } diff --git a/bonus-business/src/main/java/com/bonus/job/service/PmTaskService.java b/bonus-business/src/main/java/com/bonus/job/service/PmTaskService.java index 2951b90..9264eb8 100644 --- a/bonus-business/src/main/java/com/bonus/job/service/PmTaskService.java +++ b/bonus-business/src/main/java/com/bonus/job/service/PmTaskService.java @@ -31,4 +31,6 @@ public interface PmTaskService{ AjaxResult getMessageBalance(); AjaxResult updateTaskStatus(PmTask task) throws SchedulerException; + + AjaxResult executeOnceJob(PmTask o) throws SchedulerException; } diff --git a/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java b/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java index fdd5d69..a1d3b7a 100644 --- a/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java @@ -19,8 +19,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDate; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -41,6 +39,8 @@ public class PmTaskServiceImpl implements PmTaskService{ @Transactional @Override public AjaxResult insert(PmTask task) throws SchedulerException, TaskException { + //客户要求初始状态为开启 + task.setTaskStatus("0"); //处理job数据 SysJob job = new SysJob(); job.setJobName(task.getTaskName()); @@ -50,6 +50,7 @@ public class PmTaskServiceImpl implements PmTaskService{ job.setMisfirePolicy(task.getMisfirePolicy()); job.setConcurrent(task.getConcurrent()); job.setStatus(task.getTaskStatus()); + job.setCreateBy(SecurityUtils.getUsername()); //验证job数据 AjaxResult ajaxResult = verifyJob(job); @@ -62,10 +63,34 @@ public class PmTaskServiceImpl implements PmTaskService{ job.setRelationId(task.getId()); job.setRelationType("短信"); if(insert > 0){ - int i = jobService.insertJob(job); - task.getWorkerList().forEach(worker -> worker.setTaskId(task.getId())); - mapper.insertTaskWorker(task.getWorkerList()); + List allList = new ArrayList<>(); + List workerList = task.getWorkerList(); + if (workerList != null && !workerList.isEmpty()) { + workerList.forEach(worker -> { + worker.setTaskId(task.getId()); + worker.setType("1"); + }); + allList.addAll(workerList); + } + List 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("添加失败"); } @@ -74,8 +99,15 @@ public class PmTaskServiceImpl implements PmTaskService{ public PmTask getById(PmTask task) { PmTask byId = mapper.getById(task); if(byId != null && byId.getId() != null){ + //单人 List list = mapper.getWorkerByTaskId(task.getId()); byId.setWorkerList(list); + //分组 + List groupList = mapper.getGroupByTaskId(task.getId()); + byId.setGroupList(list); + //按性别群发 + Integer sex = mapper.getWorkerSexByTaskId(task.getId()); + byId.setSex(sex); } return byId; } @@ -103,9 +135,34 @@ public class PmTaskServiceImpl implements PmTaskService{ int update = mapper.update(task); if(update > 0){ int i = jobService.updateJob(job); - task.getWorkerList().forEach(worker -> worker.setTaskId(task.getId())); + List allList = new ArrayList<>(); + List workerList = task.getWorkerList(); + if (workerList != null && !workerList.isEmpty()) { + workerList.forEach(worker -> { + worker.setTaskId(task.getId()); + worker.setType("1"); + }); + allList.addAll(workerList); + } + List 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.insertTaskWorker(task.getWorkerList()); + if (!allList.isEmpty()){ + mapper.insertTaskWorker(allList); + } } return update > 0 ? AjaxResult.success("修改成功",task) : AjaxResult.error("修改失败"); } @@ -160,6 +217,7 @@ public class PmTaskServiceImpl implements PmTaskService{ public AjaxResult oneWorkerResend(WorkerVo o) { //1.先去查短信内容 String sendContent = mapper.getMsgData(o); + o.setSendContent(sendContent); List userList = new ArrayList<>(); userList.add(o); MessageSendUtil messageSendUtil = new MessageSendUtil(); @@ -198,6 +256,12 @@ public class PmTaskServiceImpl implements PmTaskService{ } } + /** + * 更新任务状态 + * @param task + * @return + * @throws SchedulerException + */ @Override public AjaxResult updateTaskStatus(PmTask task) throws SchedulerException { SysJob newJob = jobService.selectJobById(task.getJobId()); @@ -206,6 +270,20 @@ public class PmTaskServiceImpl implements PmTaskService{ 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表达式 * @param job diff --git a/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java b/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java index 0eadc47..f4e8111 100644 --- a/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java +++ b/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java @@ -34,6 +34,7 @@ public class WorkerSendMsgTask{ SnowflakeIdGenerator idGen = new SnowflakeIdGenerator(1, 1); /** + * schedule * 人员短信调度执行 */ public void sendMsg(String jobId){ @@ -46,7 +47,19 @@ public class WorkerSendMsgTask{ } } - + /** + * schedule + * 默认任务生日任务 + */ + public void sendHappyBirthDayMsg(String jobId){ + try{ + //查询过生日的人员和短信内容 + List list = mapper.getHappyBirthDayWorkerByJobId(jobId); + sendInBatches(list); + }catch (Exception e){ + logger.error("人员短信调度,{}",e.getMessage()); + } + } /** * 批量发送短信 diff --git a/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java b/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java index 9a4ac87..9f9bd4f 100644 --- a/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java +++ b/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java @@ -3,6 +3,7 @@ package com.bonus.message.controller; import com.bonus.common.core.controller.BaseController; import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.utils.SecurityUtils; import com.bonus.message.dao.GroupVo; import com.bonus.message.dao.WorkerVo; import com.bonus.message.service.GroupService; @@ -45,6 +46,8 @@ public class GroupController extends BaseController { @PostMapping("/addGroup") public AjaxResult addGroup(@RequestBody GroupVo groupVo) { try { + String userName = SecurityUtils.getLoginUser().getUser().getUserName(); + groupVo.setCreateUser(userName); int res = groupService.addGroup(groupVo); if (res ==1) { return AjaxResult.success(); diff --git a/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java b/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java index 3f80c27..3ac9346 100644 --- a/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java +++ b/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java @@ -28,6 +28,11 @@ public class GroupVo { */ private String remark; + /** + * 创建人员 + */ + private String createUser; + /** * 创建时间 */ diff --git a/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java b/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java index 139da61..025981c 100644 --- a/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java +++ b/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java @@ -62,6 +62,11 @@ public class WorkerVo { */ private String keyWord; + /** + * 类别 + */ + private String type; + /** * 分组 */ diff --git a/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java b/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java index 02bde77..0087fef 100644 --- a/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java @@ -104,6 +104,11 @@ public class WorkerServiceImpl implements WorkerService { if (sysDept != null){ workerVo.setOrgId(sysDept.getDeptId().intValue()); } + if (workerVo.getSex().trim().equals("男")) { + workerVo.setSex("1"); + } else { + workerVo.setSex("0"); + } addWorker(workerVo); } return "导入成功"; diff --git a/bonus-business/src/main/resources/application.yml b/bonus-business/src/main/resources/application.yml index 161eb5d..1e601c2 100644 --- a/bonus-business/src/main/resources/application.yml +++ b/bonus-business/src/main/resources/application.yml @@ -68,13 +68,14 @@ spring: # redis 配置 redis: # 地址 - host: 192.168.0.14 - # 端口,默认为6379 - port: 2004 - # 数据库索引 +# host: 192.168.0.14 +# port: 2004 +# database: 6 +# password: Plzbns@Redis123! + host: 127.0.0.1 + port: 6379 database: 6 - # 密码 - password: Plzbns@Redis123! + password: # 连接超时时间 timeout: 10s lettuce: diff --git a/bonus-business/src/main/resources/mapper/GroupMapper.xml b/bonus-business/src/main/resources/mapper/GroupMapper.xml index 247e5c4..3b5318e 100644 --- a/bonus-business/src/main/resources/mapper/GroupMapper.xml +++ b/bonus-business/src/main/resources/mapper/GroupMapper.xml @@ -4,8 +4,8 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into pm_group (group_name,remark,create_time) - values (#{groupName},#{remark},#{createTime}) + insert into pm_group (group_name,remark,create_user) + values (#{groupName},#{remark},#{createUser}) insert into bm_group_details (group_id,worker_id) @@ -20,9 +20,6 @@ remark=#{remark}, - - update_time=#{updateTime}, - where id = #{id} @@ -38,7 +35,9 @@ and group_name like concat('%', #{groupName}, '%') - + + and create_user like concat('%', #{createUser}, '%') + - insert into bm_task_worker (task_id, worker_id) + insert into bm_task_worker (task_id, worker_id,type) values - (#{item.taskId},#{item.id}) + (#{item.taskId},#{item.id},#{item.type}) @@ -114,6 +114,12 @@ LEFT JOIN bm_task_record btw ON btw.task_id = pt.id WHERE pt.id = #{id} + + and pt.task_name like concat('%',#{taskName},'%') + + + and pt.msg_type = #{msgType} + GROUP BY btw.loop_id @@ -141,6 +147,7 @@ btw.id, w.worker_name, btw.phone, + sd.dept_name AS orgName, btw.send_time, btw.submit_status, btw.reason, @@ -148,6 +155,7 @@ FROM bm_task_record btw left join pm_worker w on btw.worker_id = w.id + left join sys_dept sd on w.org_id = sd.dept_id WHERE btw.loop_id = #{loopId} @@ -165,4 +173,19 @@ WHERE btw.id = #{id} + + + + diff --git a/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml b/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml index 1c4077e..9e8bb6c 100644 --- a/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml +++ b/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml @@ -21,12 +21,49 @@ @@ -36,4 +73,18 @@ (#{item.taskId}, #{item.loopId}, #{item.id}, #{item.phone}, #{item.batchNumber}, #{item.submitStatus}, #{item.sendTime}, #{item.reason}) + +