package com.norteksoft.bs.options.service; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.norteksoft.bs.options.dao.CornInfoDao; import com.norteksoft.bs.options.dao.JobInfoDao; import com.norteksoft.bs.options.entity.TimedTask; import com.norteksoft.bs.options.entity.Timer; import com.norteksoft.product.enumeration.DataState; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.Scheduler; @Service @Transactional public class JobInfoManager { @Autowired private CornInfoDao cornInfoDao; @Autowired private JobInfoDao jobInfoDao; public void saveJobInfo(TimedTask jobInfo){ this.jobInfoDao.save(jobInfo); } public void deleteJobInfo(Long id){ this.jobInfoDao.delete(id); } public TimedTask getJobInfo(Long id){ return this.jobInfoDao.get(id); } public Page<TimedTask> getJobInfo(Page<TimedTask> page,Long systemId){ return this.jobInfoDao.findPage(page, "from TimedTask j where j.systemId=?", systemId); } /** * 批量删除 * @param id */ public String deleteJobInfos(String ids){ int num=0; int error=0; if(StringUtils.isNotEmpty(ids)){ String str[]=ids.split(","); for (String string : str) { Long id=Long.valueOf(string); TimedTask jobInfo=getJobInfo(id); if(!(DataState.ENABLE.equals(jobInfo.getDataState()))){ num++; this.cornInfoDao.batchExecute("delete from Timer c where c.jobId=?", id); this.jobInfoDao.delete(id); }else{ error++; } } } return num+"=-"+error; } /** * 批量设置状态 * @param id */ public int setJobInfos(String ids,DataState state){ int num=0; if(StringUtils.isNotEmpty(ids)){ String str[]=ids.split(","); for (String string : str) { num++; Long id=Long.valueOf(string); TimedTask jobInfo=getJobInfo(id); jobInfo.setDataState(state); saveJobInfo(jobInfo); List<Timer> cornInfos=getCornInfos(id); for (Timer cornInfo : cornInfos) { if(state.equals(DataState.ENABLE)){ cornInfo.setJobInfo(jobInfo); Scheduler.addJob(cornInfo); }else if(state.equals(DataState.DISABLE)){ Scheduler.deleteJob(cornInfo); } } } } return num; } /**时间设置 =============================================================== */ public void saveCornInfo(Timer CornInfo){ this.cornInfoDao.save(CornInfo); } public void deleteCornInfo(Long id){ this.cornInfoDao.delete(id); } public void deleteCornInfo(Timer CornInfo){ this.cornInfoDao.delete(CornInfo); } /** * 批量删除 * @param id */ public void deleteCornInfos(String ids){ if(StringUtils.isNotEmpty(ids)){ String str[]=ids.split(","); for (String string : str) { Long id=Long.valueOf(string); Timer cornInfo=getCornInfo(id); TimedTask jobInfo=getJobInfo(cornInfo.getJobId()); if(!(DataState.ENABLE.equals(jobInfo.getDataState()))){ this.cornInfoDao.delete(cornInfo); }else{ Scheduler.deleteJob(cornInfo); this.cornInfoDao.delete(cornInfo); } } } } public Timer getCornInfo(Long id){ return this.cornInfoDao.get(id); } public List<Timer> getCornInfos(Long jobId){ return this.cornInfoDao.find("from Timer c where c.jobId=?", jobId); } public Page<Timer> getCornInfos(Page<Timer> page,Long jobId){ return this.cornInfoDao.findPage(page,"from Timer c where c.jobId=?", jobId); } public List<Timer> getCornInfos(){ List<Object> objs = cornInfoDao.getCornInfo(); List<Timer> infos = new ArrayList<Timer>(); for(Object obj : objs){ Object[] arr = (Object[]) obj; Timer ci = (Timer)arr[0]; ci.setJobInfo((TimedTask)arr[1]); infos.add(ci); } return infos; } /** * 根据系统获得定时信息 * @param companyId * @param systemId * @return */ public List<TimedTask> getJobInfoBySystem(Long companyId,String systemIds){ return jobInfoDao.getJobInfoBySystem(companyId, systemIds); } /** * 根据定时信息获得定时时间信息 * @param jobInfoId * @return */ public List<Timer> getCornInfoByJob(Long jobInfoId){ return cornInfoDao.getCornInfoByJob(jobInfoId); } /** * 根据定时编码获得定时信息 * @param code * @param systemCode * @return */ public TimedTask getJobInfoByCode(String code,String systemCode){ return jobInfoDao.getJobInfoByCode(code, systemCode); } public Timer getCornInfo(String typeEnum,String corn,String dateTime,String weekTime,String appointTime,String appointSet,Long jobInfoId){ return cornInfoDao.getCornInfo(typeEnum, corn, dateTime, weekTime, appointTime, appointSet, jobInfoId); } }