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.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.Calendar; import java.util.Date; import java.util.List; import java.util.Map; /** * @author lhc * @date 2020/10/12 11:17 */ @DisallowConcurrentExecution public class DayTypeItemRegService 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; @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); if (bisInspTaskOrgPtypes != null && bisInspTaskOrgPtypes.size() > 0) { for (BisInspTaskOrgPtype bisInspTaskOrgPtype : bisInspTaskOrgPtypes) { regCounty(bisInspTaskOrgPtype, stTm, enTm); } } //整编按照填统计 昨天新增对象数据及问题数据 暂时按照 数据库插入时间来处理 //插入县数据到统计列表 } /** * 根据配置整编某个省下的数据 * * @param bisInspTaskOrgPtype * @param stTm 开始时间 * @param enTm 结束时间 */ public void regCounty(BisInspTaskOrgPtype bisInspTaskOrgPtype, Date stTm, Date enTm) { if (null == stTm || null == enTm) { stTm = getYesterday(); enTm = getToday(); } AttAdBaseParam attAdBaseParam = new AttAdBaseParam(); attAdBaseParam.setAdCode(AdLevelUtil.getAddvcd(bisInspTaskOrgPtype.getAdCode())); List attAdBases = attAdBaseService.findList(attAdBaseParam); while (stTm.getTime() < enTm.getTime()) { Date tempTm = getAddDay(stTm, 1); log.info("orgId: {}, objType: {}, stTm: {}", bisInspTaskOrgPtype.getOrgId(), bisInspTaskOrgPtype.getObjType(), stTm); //提取行政区代码下所有县,循环提取县下的督查对象添加情况和问题录入情况; for (AttAdBase attAdBase : attAdBases) { TaskItemDay taskItemDay = new TaskItemDay(); taskItemDay.setOrgId(bisInspTaskOrgPtype.getOrgId()); taskItemDay.setObjType(bisInspTaskOrgPtype.getObjType()); taskItemDay.setObjName(bisInspTaskOrgPtype.getObjName()); taskItemDay.setTm(stTm); taskItemDay.setAdCode(attAdBase.getAdCode()); taskItemDay.setAdName(attAdBase.getAdName()); taskItemDay.setAdFullName(attAdBase.getAdFullName()); taskItemDay.setAdGrad(attAdBase.getAdGrad()); //获取对象数 taskDthDayCountDao //获取问题数据 if ("350821".equals(attAdBase.getAdCode().substring(0,6))){ System.out.println("zhuyizhuyi"); } List bisInspTaskTypeItemTotalList = taskDthDayCountDao.getPblmListTypeByTm(attAdBase.getAdCode().substring(0,6), String.valueOf(Integer.parseInt(bisInspTaskOrgPtype.getObjType())), 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(); } }