af5907ec00a0f2678e612d9a7e719fbc9662a547.svn-base 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package cn.com.goldenwater.dcproj.task;
  2. import cn.com.goldenwater.dcproj.dao.TaskDthDayCountDao;
  3. import cn.com.goldenwater.dcproj.dto.BisInspTaskTotal;
  4. import cn.com.goldenwater.dcproj.model.AttAdBase;
  5. import cn.com.goldenwater.dcproj.model.BisInspTaskDthDay;
  6. import cn.com.goldenwater.dcproj.model.BisInspTaskOrgPtype;
  7. import cn.com.goldenwater.dcproj.param.AttAdBaseParam;
  8. import cn.com.goldenwater.dcproj.param.BisInspTaskOrgPtypeParam;
  9. import cn.com.goldenwater.dcproj.service.AttAdBaseService;
  10. import cn.com.goldenwater.dcproj.service.BisInspTaskDthDayService;
  11. import cn.com.goldenwater.dcproj.service.BisInspTaskOrgPtypeService;
  12. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  13. import cn.com.goldenwater.dcproj.utils.DateUtils;
  14. import com.alibaba.fastjson.JSON;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.quartz.DisallowConcurrentExecution;
  17. import org.quartz.Job;
  18. import org.quartz.JobDataMap;
  19. import org.quartz.JobExecutionContext;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import java.text.ParseException;
  24. import java.text.SimpleDateFormat;
  25. import java.util.*;
  26. /**
  27. * @author lhc
  28. * @date 2020/10/12 11:00
  29. */
  30. @DisallowConcurrentExecution
  31. public class DayTypeRegService implements Job {
  32. private Logger log = LoggerFactory.getLogger(getClass());
  33. /**
  34. * 要执行的 BisInspTaskOrgPtype
  35. */
  36. private final static String IS_STAT = "1";
  37. @Autowired
  38. private BisInspTaskOrgPtypeService bisInspTaskOrgPtypeService;
  39. @Autowired
  40. private BisInspTaskDthDayService bisInspTaskDthDayService;
  41. @Autowired
  42. private AttAdBaseService attAdBaseService;
  43. @Autowired
  44. private TaskDthDayCountDao taskDthDayCountDao;
  45. @Override
  46. public void execute(JobExecutionContext arg0) {
  47. log.info("执行定时任务日行政区督查任务整编:DayTypeRegService.execute()...");
  48. JobDataMap dataMap = arg0.getJobDetail().getJobDataMap();
  49. String param = dataMap.getString("param");
  50. log.info("param:{}", param);
  51. // 设置整编时间
  52. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  53. Date stTm = null;
  54. Date enTm = null;
  55. if (StringUtils.isNotBlank(param)) {
  56. Map<String, String> dateMap = JSON.parseObject(param, Map.class);
  57. try {
  58. if (StringUtils.isNotBlank(dateMap.get("sttm"))) {
  59. stTm = sdf.parse(dateMap.get("sttm"));
  60. }
  61. if (StringUtils.isNotBlank(dateMap.get("entm"))) {
  62. enTm = sdf.parse(dateMap.get("entm"));
  63. }
  64. } catch (ParseException e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. // 提取需要处理的行政区类型及代码循环处理统计数据
  69. BisInspTaskOrgPtypeParam bisInspTaskOrgPtypeParam = new BisInspTaskOrgPtypeParam();
  70. bisInspTaskOrgPtypeParam.setIsStat(IS_STAT);
  71. List<BisInspTaskOrgPtype> bisInspTaskOrgPtypes = bisInspTaskOrgPtypeService.findList(bisInspTaskOrgPtypeParam);
  72. if (bisInspTaskOrgPtypes != null && bisInspTaskOrgPtypes.size() > 0) {
  73. for (BisInspTaskOrgPtype bisInspTaskOrgPtype : bisInspTaskOrgPtypes) {
  74. regCounty(bisInspTaskOrgPtype, stTm, enTm);
  75. }
  76. }
  77. }
  78. /**
  79. * 根据配置整编某个省下的数据
  80. *
  81. * @param bisInspTaskOrgPtype
  82. * @param stTm 开始时间
  83. * @param enTm 结束时间
  84. */
  85. public void regCounty(BisInspTaskOrgPtype bisInspTaskOrgPtype, Date stTm, Date enTm) {
  86. if (null == stTm || null == enTm) {
  87. stTm = getYesterday();
  88. enTm = getToday();
  89. }
  90. AttAdBaseParam attAdBaseParam = new AttAdBaseParam();
  91. attAdBaseParam.setAdCode(AdLevelUtil.getAddvcd(bisInspTaskOrgPtype.getAdCode()));
  92. // attAdBaseParam.setAdGrad("4");
  93. List<AttAdBase> attAdBases = attAdBaseService.findList(attAdBaseParam);
  94. String pType = String.valueOf(Integer.parseInt(bisInspTaskOrgPtype.getObjType()));
  95. while (stTm.getTime() < enTm.getTime()) {
  96. Date tempTm = getAddDay(stTm, 1);
  97. //提取行政区代码下所有市或县,循环提取县下的督查对象添加情况和问题录入情况;
  98. for (AttAdBase attAdBase : attAdBases) {
  99. BisInspTaskDthDay bisInspTaskDthDay = new BisInspTaskDthDay();
  100. bisInspTaskDthDay.setOrgId(bisInspTaskOrgPtype.getOrgId());
  101. bisInspTaskDthDay.setObjType(bisInspTaskOrgPtype.getObjType());
  102. bisInspTaskDthDay.setObjName(bisInspTaskOrgPtype.getObjName());
  103. bisInspTaskDthDay.setTm(stTm);
  104. bisInspTaskDthDay.setAdCode(attAdBase.getAdCode());
  105. bisInspTaskDthDay.setAdName(attAdBase.getAdName());
  106. bisInspTaskDthDay.setAdFullName(attAdBase.getAdFullName());
  107. bisInspTaskDthDay.setAdGrad(attAdBase.getAdGrad());
  108. // 获取对象数 taskDthDayCountDao
  109. BisInspTaskTotal bisInspTaskTotal = taskDthDayCountDao.getListByTm(attAdBase.getAdCode().substring(0, 6), pType,
  110. DateUtils.Date2Str(stTm, "yyyy-MM-dd"), DateUtils.Date2Str(tempTm, "yyyy-MM-dd"));
  111. bisInspTaskDthDay.setObjSize(bisInspTaskTotal == null ? 0 : bisInspTaskTotal.getObjSize());
  112. if (bisInspTaskTotal != null && bisInspTaskTotal.getObjSize() != 0){
  113. log.info("时间:{}", DateUtils.Date2Str(stTm, "yyyy-MM-dd"));
  114. log.info(bisInspTaskTotal.toString());
  115. log.info(String.valueOf(bisInspTaskDthDay.getObjSize()));
  116. }
  117. // 获取问题数据
  118. BisInspTaskTotal bisInspTaskTotalPblm = taskDthDayCountDao.getPblmListByTm(attAdBase.getAdCode().substring(0, 6), pType,
  119. DateUtils.Date2Str(stTm, "yyyy-MM-dd"), DateUtils.Date2Str(tempTm, "yyyy-MM-dd"));
  120. bisInspTaskDthDay.setPblmSize(bisInspTaskTotalPblm == null ? 0 : bisInspTaskTotalPblm.getPblmSize());
  121. bisInspTaskDthDay.setInfoPlbm(bisInspTaskTotalPblm == null ? 0 : bisInspTaskTotalPblm.getInfoPlbm());
  122. bisInspTaskDthDay.setWarmPlbm(bisInspTaskTotalPblm == null ? 0 : bisInspTaskTotalPblm.getWarmPlbm());
  123. bisInspTaskDthDay.setErrorPlbm(bisInspTaskTotalPblm == null ? 0 : bisInspTaskTotalPblm.getErrorPlbm());
  124. if (bisInspTaskTotalPblm != null && bisInspTaskTotalPblm.getPblmSize() != 0){
  125. log.info("时间:{}", DateUtils.Date2Str(stTm, "yyyy-MM-dd"));
  126. log.info(bisInspTaskTotalPblm.toString());
  127. log.info("问题个数:{}", String.valueOf(bisInspTaskDthDay.getPblmSize()));
  128. }
  129. // BisInspTaskTotal bisInspTaskTotalDelPblm = taskDthDayCountDao.getDelPblmListByTm(attAdBase.getAdCode().substring(0, 6), String.valueOf(Integer.parseInt(bisInspTaskOrgPtype.getObjType())),
  130. // DateUtils.Date2Str(stTm, "yyyy-MM-dd"), DateUtils.Date2Str(tempTm, "yyyy-MM-dd"));
  131. // bisInspTaskDthDay.setPblmLogSize(bisInspTaskTotalDelPblm == null ? 0 : bisInspTaskTotalDelPblm.getPblmLogSize());
  132. // TODO 整改数
  133. bisInspTaskDthDay.setMendSize(0);
  134. // TODO 销号数
  135. bisInspTaskDthDay.setPblmLogSize(0);
  136. bisInspTaskDthDayService.insert(bisInspTaskDthDay);
  137. }
  138. stTm = tempTm;
  139. }
  140. }
  141. public Date getAddDay(Date stTm, int size) {
  142. Calendar c = Calendar.getInstance();
  143. c.setTime(stTm);
  144. c.add(Calendar.DAY_OF_MONTH, size);
  145. return c.getTime();
  146. }
  147. public Date getYesterday() {
  148. // 日历对象
  149. Calendar calendar = Calendar.getInstance();
  150. calendar.add(Calendar.DAY_OF_MONTH, -1);
  151. // 时
  152. calendar.set(Calendar.HOUR_OF_DAY, 0);
  153. // 分
  154. calendar.set(Calendar.MINUTE, 0);
  155. // 秒
  156. calendar.set(Calendar.SECOND, 0);
  157. // 毫秒
  158. calendar.set(Calendar.MILLISECOND, 0);
  159. return calendar.getTime();
  160. }
  161. public static Date getToday() {
  162. //日历对象
  163. Calendar calendar = Calendar.getInstance();
  164. // 时
  165. calendar.set(Calendar.HOUR_OF_DAY, 0);
  166. // 分
  167. calendar.set(Calendar.MINUTE, 0);
  168. // 秒
  169. calendar.set(Calendar.SECOND, 0);
  170. // 毫秒
  171. calendar.set(Calendar.MILLISECOND, 0);
  172. return calendar.getTime();
  173. }
  174. }