package com.iailab.module.shasteel.job.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.iailab.framework.common.constant.Constant; import com.iailab.framework.common.page.PageData; import com.iailab.framework.common.service.impl.BaseServiceImpl; import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.framework.security.core.util.SecurityFrameworkUtils; import com.iailab.module.shasteel.job.dao.ScheduleJobDao; import com.iailab.module.shasteel.job.dto.ScheduleJobDTO; import com.iailab.module.shasteel.job.entity.ScheduleJobEntity; import com.iailab.module.shasteel.job.service.ScheduleJobService; import com.iailab.module.shasteel.job.utils.ScheduleUtils; import org.apache.commons.lang3.StringUtils; import org.quartz.Scheduler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Map; @Service public class ScheduleJobServiceImpl extends BaseServiceImpl implements ScheduleJobService { @Autowired private Scheduler scheduler; @Override public PageData page(Map params) { IPage page = baseDao.selectPage( getPage(params, "create_date", false), getWrapper(params) ); return getPageData(page, ScheduleJobDTO.class); } @Override public ScheduleJobDTO get(Long id) { ScheduleJobEntity entity = baseDao.selectById(id); return ConvertUtils.sourceToTarget(entity, ScheduleJobDTO.class); } private QueryWrapper getWrapper(Map params){ String beanName = (String)params.get("beanName"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like(StringUtils.isNotBlank(beanName), "bean_name", beanName); return wrapper; } @Override @Transactional(rollbackFor = Exception.class) public void save(ScheduleJobDTO dto) { ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class); entity.setId(System.currentTimeMillis()); entity.setCreateDate(new Date()); entity.setCreator(SecurityFrameworkUtils.getLoginUser().getId()); entity.setStatus(Constant.ScheduleStatus.NORMAL.getValue()); this.insert(entity); ScheduleUtils.createScheduleJob(scheduler, entity); } @Override @Transactional(rollbackFor = Exception.class) public void update(ScheduleJobDTO dto) { ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class); entity.setUpdateDate(new Date()); entity.setUpdater(SecurityFrameworkUtils.getLoginUser().getId()); ScheduleUtils.updateScheduleJob(scheduler, entity); this.updateById(entity); } @Override @Transactional(rollbackFor = Exception.class) public void deleteBatch(Long[] ids) { for(Long id : ids){ ScheduleUtils.deleteScheduleJob(scheduler, id); } //删除数据 this.deleteBatchIds(Arrays.asList(ids)); } @Override public int updateBatch(Long[] ids, int status){ Map map = new HashMap<>(2); map.put("ids", ids); map.put("status", status); return baseDao.updateBatch(map); } @Override @Transactional(rollbackFor = Exception.class) public void run(Long id) { ScheduleUtils.run(scheduler, this.selectById(id)); } @Override @Transactional(rollbackFor = Exception.class) public void pause(Long[] ids) { for(Long id : ids){ ScheduleUtils.pauseJob(scheduler, id); } updateBatch(ids, Constant.ScheduleStatus.PAUSE.getValue()); } @Override @Transactional(rollbackFor = Exception.class) public void resume(Long[] ids) { for(Long id : ids){ ScheduleUtils.resumeJob(scheduler, id); } updateBatch(ids, Constant.ScheduleStatus.NORMAL.getValue()); } }