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