xiaogang
2022-09-22 dea2325896c7f8bd7df5107569b71d15fede79c7
service-job/src/main/java/com/java110/job/task/purchase/InspectionTaskDetailTemplate.java
@@ -13,11 +13,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import java.util.*;
/**
 * 巡检签到状态修改定时任务
@@ -43,7 +41,10 @@
        List<CommunityDto> communityDtos = getAllCommunity();
        for (CommunityDto communityDto : communityDtos) {
            try {
                //签到状态修改
                generatorTask(taskDto, communityDto);
                //当天巡检任务状态修改
                changeToadyTask(taskDto, communityDto);
            } catch (Exception e) {
                logger.error("推送消息失败", e);
            }
@@ -92,4 +93,55 @@
            }
        }
    }
    private void changeToadyTask(TaskDto taskDto, CommunityDto communityDto) throws ParseException {
        //取出今天的日期
        Calendar cal = Calendar.getInstance(Locale.CHINA);
        String today = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
        String toadyStartTime = today + " 00:00:00";
        String todayEndTime = today + " 23:59:59";
        InspectionTaskDetailDto inspectionTaskDetailDto = new InspectionTaskDetailDto();
        inspectionTaskDetailDto.setCommunityId(communityDto.getCommunityId());
        inspectionTaskDetailDto.setQrCodeTime(toadyStartTime);
        inspectionTaskDetailDto.setNowTime(todayEndTime);
        inspectionTaskDetailDto.setInspectionTimeFlag("1");
        List<InspectionTaskDetailDto> inspectionTaskDetailDtos = iInspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(inspectionTaskDetailDto);
        if (inspectionTaskDetailDtos != null && inspectionTaskDetailDtos.size() > 0) {
            String taskId = "";
            for (InspectionTaskDetailDto inspectionTaskDetail : inspectionTaskDetailDtos) {
                InspectionTaskDto inspectionTaskDto = new InspectionTaskDto();
                if (!StringUtil.isEmpty(inspectionTaskDetail.getState()) && !inspectionTaskDetail.getState().equals("20200407")) { //不是巡检完成状态
                    //获取当前时间
                    Date date = new Date();
                    if (!StringUtil.isEmpty(inspectionTaskDetail.getPlanInsTime()) && !StringUtil.isEmpty(inspectionTaskDetail.getPlanEndTime())) {
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        //获取巡检计划开始时间
                        Date planInsTime = sdf.parse(inspectionTaskDetail.getPlanInsTime());
                        //获取巡检计划结束时间
                        Date planEndTime = sdf.parse(inspectionTaskDetail.getPlanEndTime());
                        if (date.before(planInsTime)) { //如果当前时间在计划开始时间之前,任务状态就为未开始
                            inspectionTaskDetail.setState("20200405"); // 20200405 未开始  20200406 巡检中  20200407 巡检完成  20200408 巡检未完成
                            inspectionTaskDto.setState("20200405"); //20200405 未开始  20200406 巡检中  20200407 巡检完成  20200408 已超时  20200409 缺勤
                        } else if (date.after(planEndTime)) { //如果当前时间在计划结束时间之后,任务状态为巡检未完成
                            inspectionTaskDetail.setState("20200408");
                            inspectionTaskDto.setState("20200408");
                        } else {
                            inspectionTaskDetail.setState("20200406");
                            inspectionTaskDto.setState("20200406");
                        }
                    } else {
                        inspectionTaskDetail.setState("20200405");
                        inspectionTaskDto.setState("20200405");
                    }
                    iInspectionTaskDetailInnerServiceSMOImpl.updateInspectionTaskDetail(inspectionTaskDetail);
                }
                if (!taskId.equals(inspectionTaskDetail.getTaskId())) {
                    //获取巡检任务id
                    taskId = inspectionTaskDetail.getTaskId();
                    inspectionTaskDto.setTaskId(taskId);
                    iInspectionTaskInnerServiceSMOImpl.updateInspectionTask(inspectionTaskDto);
                }
            }
        }
    }
}