InspectionTaskDetailTemplate.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.java110.job.task.purchase;
  2. import com.java110.dto.community.CommunityDto;
  3. import com.java110.dto.inspection.InspectionTaskDetailDto;
  4. import com.java110.dto.inspection.InspectionTaskDto;
  5. import com.java110.dto.task.TaskDto;
  6. import com.java110.intf.community.IInspectionTaskDetailInnerServiceSMO;
  7. import com.java110.intf.community.IInspectionTaskInnerServiceSMO;
  8. import com.java110.job.quartz.TaskSystemQuartz;
  9. import com.java110.utils.util.ListUtil;
  10. import com.java110.utils.util.StringUtil;
  11. import org.slf4j.Logger;
  12. import com.java110.core.log.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Component;
  15. import java.text.ParseException;
  16. import java.text.SimpleDateFormat;
  17. import java.util.*;
  18. /**
  19. * 巡检签到状态修改定时任务
  20. *
  21. * @author fqz
  22. * @date 2021-06-11 9:12
  23. */
  24. @Component
  25. public class InspectionTaskDetailTemplate extends TaskSystemQuartz {
  26. private static Logger logger = LoggerFactory.getLogger(InspectionTaskDetailTemplate.class);
  27. @Autowired
  28. private IInspectionTaskDetailInnerServiceSMO iInspectionTaskDetailInnerServiceSMOImpl;
  29. @Autowired
  30. private IInspectionTaskInnerServiceSMO iInspectionTaskInnerServiceSMOImpl;
  31. @Override
  32. protected void process(TaskDto taskDto) {
  33. logger.debug("开始执行微信模板信息推送" + taskDto.toString());
  34. // 获取小区
  35. List<CommunityDto> communityDtos = getAllCommunity();
  36. for (CommunityDto communityDto : communityDtos) {
  37. try {
  38. //签到状态修改
  39. generatorTask(taskDto, communityDto);
  40. //当天巡检任务状态修改
  41. changeToadyTask(taskDto, communityDto);
  42. } catch (Exception e) {
  43. logger.error("推送消息失败", e);
  44. }
  45. }
  46. }
  47. //签到状态修改
  48. private void generatorTask(TaskDto taskDto, CommunityDto communityDto) {
  49. //取出今天的日期
  50. Calendar cal = Calendar.getInstance(Locale.CHINA);
  51. cal.add(Calendar.DAY_OF_MONTH,-3);
  52. String today = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
  53. String nowTime = today + " 00:00:00";
  54. InspectionTaskDetailDto inspectionTaskDetailDto = new InspectionTaskDetailDto();
  55. inspectionTaskDetailDto.setCommunityId(communityDto.getCommunityId());
  56. inspectionTaskDetailDto.setNowTime(nowTime);
  57. inspectionTaskDetailDto.setInspectionTimeFlag("1");
  58. List<InspectionTaskDetailDto> inspectionTaskDetailDtos = iInspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(inspectionTaskDetailDto);
  59. if (ListUtil.isNull(inspectionTaskDetailDtos)) {
  60. return;
  61. }
  62. String taskId = "";
  63. List<InspectionTaskDetailDto> taskDetailDtos = new ArrayList<>();
  64. for (InspectionTaskDetailDto inspectionTaskDetail : inspectionTaskDetailDtos) {
  65. //巡检任务明细表签到状态改为未到
  66. inspectionTaskDetail.setInspectionState("70000");
  67. if (!taskId.equals(inspectionTaskDetail.getTaskId())) {
  68. //获取巡检任务id
  69. taskId = inspectionTaskDetail.getTaskId();
  70. InspectionTaskDetailDto taskDetail = new InspectionTaskDetailDto();
  71. taskDetail.setTaskId(taskId);
  72. taskDetail.setInspectionTimeFlag("2");
  73. taskDetailDtos = iInspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(taskDetail);
  74. }
  75. iInspectionTaskDetailInnerServiceSMOImpl.updateInspectionTaskDetail(inspectionTaskDetail);
  76. if (!ListUtil.isNull(taskDetailDtos)) { //如果查询结果不为空且有数据,说明该任务id下的巡检计划有过打卡的数据,该条巡检任务状态就变为缺勤
  77. InspectionTaskDto inspectionTaskDto = new InspectionTaskDto();
  78. inspectionTaskDto.setTaskId(taskId);
  79. //巡检任务表巡检状态变为缺勤
  80. inspectionTaskDto.setState("20200409");
  81. iInspectionTaskInnerServiceSMOImpl.updateInspectionTask(inspectionTaskDto);
  82. } else { //如果查询数据为空,说明该任务id下的巡检计划没有打卡的数据,该条巡检任务状态就变为已超时
  83. InspectionTaskDto inspectionTaskDto = new InspectionTaskDto();
  84. inspectionTaskDto.setTaskId(taskId);
  85. //巡检任务表巡检状态变为已超时
  86. inspectionTaskDto.setState("20200408");
  87. iInspectionTaskInnerServiceSMOImpl.updateInspectionTask(inspectionTaskDto);
  88. }
  89. }
  90. }
  91. private void changeToadyTask(TaskDto taskDto, CommunityDto communityDto) throws ParseException {
  92. //取出今天的日期
  93. Calendar cal = Calendar.getInstance(Locale.CHINA);
  94. String today = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
  95. String toadyStartTime = today + " 00:00:00";
  96. String todayEndTime = today + " 23:59:59";
  97. InspectionTaskDetailDto inspectionTaskDetailDto = new InspectionTaskDetailDto();
  98. inspectionTaskDetailDto.setCommunityId(communityDto.getCommunityId());
  99. inspectionTaskDetailDto.setQrCodeTime(toadyStartTime);
  100. inspectionTaskDetailDto.setNowTime(todayEndTime);
  101. inspectionTaskDetailDto.setInspectionTimeFlag("1");
  102. List<InspectionTaskDetailDto> inspectionTaskDetailDtos = iInspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(inspectionTaskDetailDto);
  103. if (inspectionTaskDetailDtos != null && inspectionTaskDetailDtos.size() > 0) {
  104. String taskId = "";
  105. for (InspectionTaskDetailDto inspectionTaskDetail : inspectionTaskDetailDtos) {
  106. InspectionTaskDto inspectionTaskDto = new InspectionTaskDto();
  107. if (!StringUtil.isEmpty(inspectionTaskDetail.getState()) && !inspectionTaskDetail.getState().equals("20200407")) { //不是巡检完成状态
  108. //获取当前时间
  109. Date date = new Date();
  110. if (!StringUtil.isEmpty(inspectionTaskDetail.getPlanInsTime()) && !StringUtil.isEmpty(inspectionTaskDetail.getPlanEndTime())) {
  111. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  112. //获取巡检计划开始时间
  113. Date planInsTime = sdf.parse(inspectionTaskDetail.getPlanInsTime());
  114. //获取巡检计划结束时间
  115. Date planEndTime = sdf.parse(inspectionTaskDetail.getPlanEndTime());
  116. if (date.before(planInsTime)) { //如果当前时间在计划开始时间之前,任务状态就为未开始
  117. inspectionTaskDetail.setState("20200405"); // 20200405 未开始 20200406 巡检中 20200407 巡检完成 20200408 巡检未完成
  118. inspectionTaskDto.setState("20200405"); //20200405 未开始 20200406 巡检中 20200407 巡检完成 20200408 已超时 20200409 缺勤
  119. } else if (date.after(planEndTime)) { //如果当前时间在计划结束时间之后,任务状态为巡检未完成
  120. inspectionTaskDetail.setState("20200408");
  121. inspectionTaskDto.setState("20200408");
  122. } else {
  123. inspectionTaskDetail.setState("20200406");
  124. inspectionTaskDto.setState("20200406");
  125. }
  126. } else {
  127. inspectionTaskDetail.setState("20200405");
  128. inspectionTaskDto.setState("20200405");
  129. }
  130. iInspectionTaskDetailInnerServiceSMOImpl.updateInspectionTaskDetail(inspectionTaskDetail);
  131. }
  132. if (!taskId.equals(inspectionTaskDetail.getTaskId())) {
  133. //获取巡检任务id
  134. taskId = inspectionTaskDetail.getTaskId();
  135. inspectionTaskDto.setTaskId(taskId);
  136. iInspectionTaskInnerServiceSMOImpl.updateInspectionTask(inspectionTaskDto);
  137. }
  138. }
  139. }
  140. }
  141. }