package cn.com.goldenwater.dcproj.task; import cn.com.goldenwater.dcproj.dao.TaskDthDayCountDao; import cn.com.goldenwater.dcproj.model.AttAdBase; import cn.com.goldenwater.dcproj.model.BisInspTaskOrgPtype; import cn.com.goldenwater.dcproj.model.BisInspTaskTypeItemTotal; import cn.com.goldenwater.dcproj.model.TaskItemDay; import cn.com.goldenwater.dcproj.param.AttAdBaseParam; import cn.com.goldenwater.dcproj.param.BisInspTaskOrgPtypeParam; import cn.com.goldenwater.dcproj.param.TaskItemDayParam; import cn.com.goldenwater.dcproj.service.AttAdBaseService; import cn.com.goldenwater.dcproj.service.BisInspTaskOrgPtypeService; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.service.TaskItemDayService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.DateUtils; import com.alibaba.fastjson.JSON; import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @DisallowConcurrentExecution public class DayTypeItemRegJiChaService implements Job { /** * 要执行的 BisInspTaskOrgPtype */ private final static String IS_STAT = "1"; private Logger log = LoggerFactory.getLogger(getClass()); @Autowired private BisInspTaskOrgPtypeService bisInspTaskOrgPtypeService; @Autowired private TaskItemDayService taskItemDayService; @Autowired private AttAdBaseService attAdBaseService; @Autowired private TaskDthDayCountDao taskDthDayCountDao; @Autowired private OlBisInspOrgService olBisInspOrgService; @Override public void execute(JobExecutionContext arg0) { log.info("执行定时任务日行政区督查任务整编:DayTypeItemRegService.execute()..."); JobDataMap dataMap = arg0.getJobDetail().getJobDataMap(); String param = dataMap.getString("param"); log.info("param:{}", param); // 设置整编时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date stTm = null; Date enTm = null; if (StringUtils.isNotBlank(param)) { Map dateMap = JSON.parseObject(param, Map.class); try { if (StringUtils.isNotBlank(dateMap.get("sttm"))) { stTm = sdf.parse(dateMap.get("sttm")); } if (StringUtils.isNotBlank(dateMap.get("entm"))) { enTm = sdf.parse(dateMap.get("entm")); } } catch (ParseException e) { e.printStackTrace(); } } // 提取需要处理的行政区类型及代码循环处理统计数据 BisInspTaskOrgPtypeParam bisInspTaskOrgPtypeParam = new BisInspTaskOrgPtypeParam(); bisInspTaskOrgPtypeParam.setIsStat(IS_STAT); List bisInspTaskOrgPtypes = bisInspTaskOrgPtypeService.findList(bisInspTaskOrgPtypeParam); Set orgIdSets = new HashSet<>(); if (bisInspTaskOrgPtypes != null && bisInspTaskOrgPtypes.size() > 0) { for (BisInspTaskOrgPtype bisInspTaskOrgPtype : bisInspTaskOrgPtypes) { orgIdSets.add(bisInspTaskOrgPtype.getOrgId()); } for (String orgId : orgIdSets) { regCounty(orgId, stTm, enTm); } } //整编按照填统计 昨天新增对象数据及问题数据 暂时按照 数据库插入时间来处理 //插入县数据到统计列表 } /** * 根据配置整编某个省下的数据 * * @param stTm 开始时间 * @param enTm 结束时间 */ public void regCounty(String orgId, Date stTm, Date enTm) { if (null == stTm || null == enTm) { stTm = getYesterday(); enTm = getToday(); } AttAdBaseParam attAdBaseParam = new AttAdBaseParam(); String province = AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(orgId)); attAdBaseParam.setAdCode(AdLevelUtil.getAddvcd(province)); List attAdBases = attAdBaseService.findList(attAdBaseParam); while (stTm.getTime() < enTm.getTime()) { Date tempTm = getAddDay(stTm, 1); log.info("objType: {}, stTm: {}", "008", stTm); //提取行政区代码下所有县,循环提取县下的督查对象添加情况和问题录入情况; for (AttAdBase attAdBase : attAdBases) { TaskItemDay taskItemDay = new TaskItemDay(); taskItemDay.setOrgId(orgId); taskItemDay.setObjType("008"); taskItemDay.setObjName("稽察工作"); taskItemDay.setTm(stTm); taskItemDay.setAdCode(attAdBase.getAdCode()); taskItemDay.setAdName(attAdBase.getAdName()); taskItemDay.setAdFullName(attAdBase.getAdFullName()); taskItemDay.setAdGrad(attAdBase.getAdGrad()); //获取对象数 taskDthDayCountDao //获取问题数据 List bisInspTaskTypeItemTotalList = taskDthDayCountDao.getPblmListTypeJiChaByTm(attAdBase.getAdCode().substring(0, 6), DateUtils.Date2Str(stTm, "yyyy-MM-dd"), DateUtils.Date2Str(tempTm, "yyyy-MM-dd")); if (null != bisInspTaskTypeItemTotalList && bisInspTaskTypeItemTotalList.size() > 0) { for (BisInspTaskTypeItemTotal taskTypeItem : bisInspTaskTypeItemTotalList) { // itemName taskItemDay.setItemName(taskTypeItem.getItemName()); // pblmSize taskItemDay.setPblmSize(taskTypeItem.getPblmSize()); // mendSize taskItemDay.setMendSize(taskTypeItem.getMendSize()); // pblmLogSize taskItemDay.setPblmLogSize(taskTypeItem.getPblmLogSize()); // infoPlbm taskItemDay.setInfoPlbm(taskTypeItem.getInfoPlbm()); // warmPlbm taskItemDay.setWarmPlbm(taskTypeItem.getWarmPlbm()); // errorPlbm taskItemDay.setErrorPlbm(taskTypeItem.getErrorPlbm()); taskItemDayService.insert(taskItemDay); } } } stTm = tempTm; } } public Date getAddDay(Date stTm, int size) { Calendar c = Calendar.getInstance(); c.setTime(stTm); c.add(Calendar.DAY_OF_MONTH, size); return c.getTime(); } public Date getYesterday() { // 日历对象 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -1); // 时 calendar.set(Calendar.HOUR_OF_DAY, 0); // 分 calendar.set(Calendar.MINUTE, 0); // 秒 calendar.set(Calendar.SECOND, 0); // 毫秒 calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } public static Date getToday() { //日历对象 Calendar calendar = Calendar.getInstance(); // 时 calendar.set(Calendar.HOUR_OF_DAY, 0); // 分 calendar.set(Calendar.MINUTE, 0); // 秒 calendar.set(Calendar.SECOND, 0); // 毫秒 calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } }