潘志宝
2025-02-07 0dc07f5709b9505889b18a5effc0d2099c6e3397
提交 | 用户 | 时间
1c9291 1 package com.iailab.module.model.job.service.impl;
L 2
3 import com.alibaba.cloud.commons.lang.StringUtils;
4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 import com.iailab.framework.common.constant.Constant;
6 import com.iailab.framework.common.pojo.PageResult;
7 import com.iailab.framework.common.service.impl.BaseServiceImpl;
8 import com.iailab.framework.common.util.object.ConvertUtils;
9 import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
10 import com.iailab.framework.tenant.core.context.TenantContextHolder;
11 import com.iailab.module.model.job.dao.ScheduleJobDao;
12 import com.iailab.module.model.job.dto.ScheduleJobDTO;
13 import com.iailab.module.model.job.entity.ScheduleJobEntity;
14 import com.iailab.module.model.job.service.ScheduleJobService;
15 import com.iailab.module.model.job.utils.ScheduleUtils;
16 import com.iailab.module.model.job.vo.ScheduleJobReqVO;
17 import org.quartz.Scheduler;
18 import org.springframework.stereotype.Service;
19 import org.springframework.transaction.annotation.Transactional;
20
21 import javax.annotation.Resource;
22 import java.util.Date;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 @Service
27 public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJobDao, ScheduleJobEntity> implements ScheduleJobService {
28     @Resource
29     private Scheduler scheduler;
30
31     @Override
32     public PageResult<ScheduleJobEntity> page(ScheduleJobReqVO reqVO) {
33         return baseDao.selectPage(reqVO);
34     }
35
36     @Override
37     public ScheduleJobDTO get(Long id) {
38         ScheduleJobEntity entity = baseDao.selectById(id);
39
40         return ConvertUtils.sourceToTarget(entity, ScheduleJobDTO.class);
41     }
42
43     private QueryWrapper<ScheduleJobEntity> getWrapper(Map<String, Object> params){
44         String beanName = (String)params.get("beanName");
45
46         QueryWrapper<ScheduleJobEntity> wrapper = new QueryWrapper<>();
47         wrapper.like(StringUtils.isNotBlank(beanName), "bean_name", beanName);
48
49         return wrapper;
50     }
51
52     @Override
53     @Transactional(rollbackFor = Exception.class)
54     public void save(ScheduleJobDTO dto) {
55         Long tenantId = TenantContextHolder.getRequiredTenantId();
56         ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class);
57         entity.setId(System.currentTimeMillis());
58         entity.setStatus(Constant.ScheduleStatus.NORMAL.getValue());
59         entity.setTenantId(tenantId);
60         entity.setCreator(SecurityFrameworkUtils.getLoginUser().getId());
61         entity.setCreateDate(new Date());
62         this.insert(entity);
63         
64         ScheduleUtils.createScheduleJob(scheduler, entity);
65     }
66     
67     @Override
68     @Transactional(rollbackFor = Exception.class)
69     public void update(ScheduleJobDTO dto) {
70         Long tenantId = TenantContextHolder.getRequiredTenantId();
71         ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class);
72         entity.setUpdateDate(new Date());
73         entity.setUpdater(SecurityFrameworkUtils.getLoginUser().getId());
74         entity.setTenantId(tenantId);
75         ScheduleUtils.updateScheduleJob(scheduler, entity);
76                 
77         this.updateById(entity);
78     }
79
80     @Override
81     @Transactional(rollbackFor = Exception.class)
82     public void deleteBatch(Long id) {
83         ScheduleUtils.deleteScheduleJob(scheduler, id);
84
85         baseDao.deleteById(id);
86     }
87
88     @Override
89     public int updateBatch(Long[] ids, int status){
90         Map<String, Object> map = new HashMap<>(2);
91         map.put("ids", ids);
92         map.put("status", status);
93         return baseDao.updateBatch(map);
94     }
95     
96     @Override
97     @Transactional(rollbackFor = Exception.class)
98     public void run(Long[] ids) {
99         for(Long id : ids){
100             ScheduleUtils.run(scheduler, this.selectById(id));
101         }
102     }
103
104     @Override
105     @Transactional(rollbackFor = Exception.class)
106     public void pause(Long[] ids) {
107         for(Long id : ids){
108             ScheduleUtils.pauseJob(scheduler, id);
109         }
110         
111         updateBatch(ids, Constant.ScheduleStatus.PAUSE.getValue());
112     }
113
114     @Override
115     @Transactional(rollbackFor = Exception.class)
116     public void resume(Long[] ids) {
117         for(Long id : ids){
118             ScheduleUtils.resumeJob(scheduler, id);
119         }
120
121         updateBatch(ids, Constant.ScheduleStatus.NORMAL.getValue());
122     }
123     
124 }