package com.norteksoft.bs.options.web; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.beans.factory.annotation.Autowired; import com.norteksoft.acs.entity.authorization.BusinessSystem; import com.norteksoft.acs.service.authorization.BusinessSystemManager; import com.norteksoft.bs.options.entity.TimedTask; import com.norteksoft.bs.options.entity.Timer; import com.norteksoft.bs.options.enumeration.TimingType; import com.norteksoft.bs.options.service.JobInfoManager; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.enumeration.DataState; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.JsTreeUtils; import com.norteksoft.product.util.PageUtils; import com.norteksoft.product.util.Scheduler; import com.norteksoft.product.web.struts2.CrudActionSupport; /** * 定时任务 * @author Administrator * */ @Namespace("/options") @ParentPackage("default") @Results( { @Result(name = CrudActionSupport.RELOAD, location = "job-info", type = "redirectAction")}) public class JobInfoAction extends CrudActionSupport<TimedTask> { private static final long serialVersionUID = 1L; private Long id; private String ids; private TimedTask jobInfo; private Long systemId; private List<BusinessSystem> businessSystems; private Page<TimedTask> pages= new Page<TimedTask>(0,true); private Page<Timer> cornInfos =new Page<Timer>(0,true); private TimingType typeEnum;//方式 private String everyMonth;//每月 private String everyWeek;//每周 private String everyDate;//每天 private String appointTime;//指定时间 private String appointSet;//高级设置 private DataState dataState;//状态 @Autowired private JobInfoManager jobInfoManager; @Autowired private BusinessSystemManager businessSystemManager; /** * 删除 */ @Action("job-info-delete") @Override public String delete() throws Exception { String str=jobInfoManager.deleteJobInfos(ids); if(str.split("=-")[0].equals("0")){ addActionMessage("<font class='onSuccess'><nobr>成功删除"+str.split("=-")[0]+"条,失败"+str.split("=-")[1]+"条,不能删除已启用的记录.</nobr></font>"); }else{ addActionMessage("<font class='onSuccess'><nobr>成功删除"+str.split("=-")[0]+"条,失败"+str.split("=-")[1]+"条</nobr></font>"); } ApiFactory.getBussinessLogService().log("定时设置", "删除定时器",ContextUtils.getSystemId("bs")); return "job-info"; } /** * 新建 */ @Action("job-info-input") @Override public String input() throws Exception { if(jobInfo.getRunAsUser()==null){ jobInfo.setRunAsUser(ContextUtils.getLoginName()); jobInfo.setRunAsUserName(ContextUtils.getUserName()); } return "job-info-input"; } @Override public String list() throws Exception { if(pages.getPageSize()>1){ jobInfoManager.getJobInfo(pages,systemId); this.renderText(PageUtils.pageToJson(pages)); return null; }else{ businessSystems= businessSystemManager.getAllSystems(); if(businessSystems.size()>0&&systemId==null)systemId=businessSystems.get(0).getId(); } ApiFactory.getBussinessLogService().log("定时设置", "查看定时列表",ContextUtils.getSystemId("bs")); return SUCCESS; } /** * 子表内容(时间表) * @return */ @Action("job-info-chiledList") public String chiledList(){ if(cornInfos.getPageSize()>1){ if(id!=null){ cornInfos=jobInfoManager.getCornInfos(cornInfos,id); this.renderText(PageUtils.pageToJson(cornInfos)); } } return null; } @Override protected void prepareModel() throws Exception { if(id==null){ jobInfo = new TimedTask(); jobInfo.setCreatedTime(new Date()); jobInfo.setCompanyId(ContextUtils.getCompanyId()); }else{ jobInfo = jobInfoManager.getJobInfo(id); } } /** * 保存 */ @Action("job-info-save") @Override public String save() throws Exception { if(systemId!=null) jobInfo.setSystemCode(businessSystemManager.getBusiness(systemId).getCode()); jobInfoManager.saveJobInfo(jobInfo); if(typeEnum!=null||everyMonth!=null||everyWeek!=null||everyDate!=null||appointTime!=null||appointSet!=null){ Timer cornInfo=new Timer(); cornInfo.setCompanyId(ContextUtils.getCompanyId()); cornInfo.setTimingType(typeEnum);//类型 if(StringUtils.isNotEmpty(everyMonth)) cornInfo.setDateTime(everyMonth);//按月 if(StringUtils.isNotEmpty(everyWeek)) cornInfo.setWeekTime(everyWeek);//按星期 if(StringUtils.isNotEmpty(everyDate)) cornInfo.setCorn(everyDate);//每天 if(StringUtils.isNotEmpty(appointTime)) cornInfo.setAppointTime(appointTime);//指定时间 if(StringUtils.isNotEmpty(appointSet)) cornInfo.setAppointSet(appointSet);//高级 cornInfo.setJobId(jobInfo.getId()); cornInfo.setJobInfo(jobInfo); jobInfoManager.saveCornInfo(cornInfo); if(DataState.ENABLE.equals(jobInfo.getDataState())) Scheduler.addJob(cornInfo); ApiFactory.getBussinessLogService().log("定时设置", "增加定时",ContextUtils.getSystemId("bs")); } this.renderText(jobInfo.getId().toString()); ApiFactory.getBussinessLogService().log("定时设置", "保存定时",ContextUtils.getSystemId("bs")); return null; } public void prepareView()throws Exception { prepareModel(); } /** * 查看 * @return * @throws Exception */ @Action("job-info-view") public String view()throws Exception{ return "job-info-view"; } /** * 删除CornInfo表 * @return * @throws Exception */ @Action("job-info-deleteCornInfo") public String deleteCornInfo() throws Exception { jobInfoManager.deleteCornInfos(ids); addActionMessage("<font class='onSuccess'><nobr>删除成功</nobr></font>"); ApiFactory.getBussinessLogService().log("定时设置", "删除定时器中定时任务",ContextUtils.getSystemId("bs")); return "job-info"; } public void prepareSetState()throws Exception { prepareModel(); } /** * 设置状态 * @return * @throws Exception */ @Action("job-info-setState") public String setState()throws Exception { addActionMessage("<font class='onSuccess'><nobr>成功设置"+jobInfoManager.setJobInfos(ids,dataState)+"条</nobr></font>"); ApiFactory.getBussinessLogService().log("定时设置", "启用或禁用定时器",ContextUtils.getSystemId("bs")); return "job-info"; } /** * 验证重复 * @return */ @Action("job-info-validateJob") public String validateJob(){ return null; } /** * 得到所有系统树 * @return * @throws Exception */ @Action("job-info-dataTableStandardSysTree") public String dataTableStandardSysTree() throws Exception { businessSystems= businessSystemManager.getAllSystems(); StringBuilder tree = new StringBuilder("[ "); for(BusinessSystem system :businessSystems){ tree.append(JsTreeUtils.generateJsTreeNodeNew(system.getId().toString(), "root", system.getName(),"")).append(","); } JsTreeUtils.removeLastComma(tree); tree.append(" ]"); renderText(tree.toString()); return null; } public TimedTask getModel() { return jobInfo; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public List<BusinessSystem> getBusinessSystems() { return businessSystems; } public Long getSystemId() { return systemId; } public void setSystemId(Long systemId) { this.systemId = systemId; } public Page<TimedTask> getPages() { return pages; } public Page<Timer> getCornInfos() { return cornInfos; } public String getIds() { return ids; } public void setIds(String ids) { this.ids = ids; } public TimedTask getJobInfo() { return jobInfo; } public void setJobInfo(TimedTask jobInfo) { this.jobInfo = jobInfo; } public TimingType getTypeEnum() { return typeEnum; } public void setTypeEnum(TimingType typeEnum) { this.typeEnum = typeEnum; } public String getEveryMonth() { return everyMonth; } public void setEveryMonth(String everyMonth) { this.everyMonth = everyMonth; } public String getEveryWeek() { return everyWeek; } public void setEveryWeek(String everyWeek) { this.everyWeek = everyWeek; } public String getEveryDate() { return everyDate; } public void setEveryDate(String everyDate) { this.everyDate = everyDate; } public String getAppointTime() { return appointTime; } public void setAppointTime(String appointTime) { this.appointTime = appointTime; } public String getAppointSet() { return appointSet; } public void setAppointSet(String appointSet) { this.appointSet = appointSet; } public DataState getDataState() { return dataState; } public void setDataState(DataState dataState) { this.dataState = dataState; } }