package com.nis.web.service; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.nis.domain.ScheduleCfg; import com.nis.domain.ScheduleExceInfo; import com.nis.domain.configuration.BaseCfg; import com.nis.util.SchedulerTaskUtil; import com.nis.util.ServiceConfigTemplateUtil; import com.nis.web.dao.SchedulerDao; import com.nis.web.dao.configuration.ConfigSynchronizationDao; @Service public class ScheduleService extends BaseService{ @Autowired private SchedulerDao dao ; @Autowired private ConfigSynchronizationDao configSynchronizationDao; @SuppressWarnings("rawtypes") @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void issueCompileInfo(ScheduleCfg cfg,Integer isValid)throws Exception { Integer compileId = cfg.getCompileId(); BaseCfg baseCfg = dao.getCfgTableInfo(cfg.getTableName(),compileId);//查询当前配置的最新状态 ScheduleCfg curSchedule = dao.get(cfg.getId());//查询当前任务的最新状态 Integer curIsValid = baseCfg.getIsValid();//当前配置的最新 是否有效信息 Integer curScheduleFlag = curSchedule.getDelFlag();//当前任务最新状态是否有效 if(curScheduleFlag == 0) { logger.info(String.format("当前任务已失效 : id:%s,delFlag:%s", cfg.getId(),curScheduleFlag)); return; } if(curIsValid == isValid) { logger.info(String.format("当前isValid状态没有变化,不需执行,compileId:%s,isValid : %s", compileId,isValid)); return; } //下发内容 Integer isIssueContent = 1; String errorInfo = null; String tableName = cfg.getTableName(); SchedulerTaskUtil scheduler = new SchedulerTaskUtil(); boolean udpateConfigStatus = false; isIssueContent=1; if(isValid == 0) { isIssueContent=0; } ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil(); List> serviceList = serviceTemplate.getServiceListByServiceId(cfg.getServiceId()); //根据编译ID查询配置表中的配置信息 for(Map service:serviceList){ //获取业务下的配置域 List> cfgList = (List>) service.get("cfgList"); //查询子域配置详情 if(cfgList!=null){ for(Map m:cfgList){ String regionTable = m.get("tableName").toString(); //更新配置域表的isValid字段 dao.updateCfgTableStatus(regionTable, compileId, isValid); } } } dao.updateCfgTableStatus(tableName, compileId, isValid); //3、更新 配置表的 isValid 字段,添加 exce_log 记录 ScheduleExceInfo exceNew = new ScheduleExceInfo(); exceNew.setCompileId(compileId); exceNew.setIssueStatus(isValid); exceNew.setExceTime(new Date()); exceNew.setIssueResult(1); exceNew.setErrorInfo(errorInfo); exceNew.setIsIssue(0); exceNew.setScheduleId(cfg.getId()); dao.insertScheduleExceLog(exceNew); //数据库操作完成后与服务端交互 scheduler.updateConfigByServiceAndCompile(cfg.getServiceId(), compileId, isValid, isIssueContent,configSynchronizationDao); logger.info(String.format("定时器下发配置内容,compileId:%s,isValid:%s,errorInfo:%s",compileId,isValid,errorInfo)); } }