java110
2020-06-04 09c25c250ba885c9b5b23429ce08d255a5d8f980
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
package com.java110.job.quartz;
 
import com.java110.core.smo.community.ICommunityInnerServiceSMO;
import com.java110.dto.community.CommunityDto;
import com.java110.dto.task.TaskDto;
import com.java110.dto.taskAttr.TaskAttrDto;
import com.java110.job.dao.ITaskServiceDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @author
 */
public abstract class TaskSystemQuartz {
 
    protected static final Logger logger = LoggerFactory.getLogger(TaskSystemQuartz.class);
 
    @Autowired
    private ITaskServiceDao taskServiceDaoImpl;
 
    @Autowired
    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
 
 
    public void initTask() {
 
    }
 
    /**
     * 启动任务
     *
     * @param taskDto
     */
    public void startTask(TaskDto taskDto) throws Exception {
 
        Map info = new HashMap();
        info.put("taskId", taskDto.getTaskId());
        List<Map> taskInfos = taskServiceDaoImpl.getTaskInfo(info);
        if (taskInfos == null || taskInfos.size() < 1) {
            return;
        }
 
        // 这么做是为了,单线程调用,防止多线程导致数据重复处理
        if (!"002".equals(taskInfos.get(0).get("state"))) {
            return;
        }
 
        String taskId = taskDto.getTaskId();
 
        if (logger.isDebugEnabled()) {
            logger.debug("---【TaskSystemQuartz.startFtpTask】:任务【" + taskId + "】开始运行!", taskId);
        }
 
        try {
            // 1.0空方法,让子类去实现
            prepare(taskDto);
 
            // 3.0核心业务处理逻辑,需要子类去实现
            process(taskDto);
 
            // 5.0空方法,让子类去实现
            after(taskDto);
        } catch (Exception ex) {
 
            // 接续向外抛出去
            logger.error("处理出现问题:", ex);
            return;
        }
 
    }
 
 
    /**
     * 主要业务处理(上传下载),让子类去实现
     *
     * @param taskDto
     */
    protected abstract void process(TaskDto taskDto) throws Exception;
 
    /**
     * 空方法,如果在事前过程处理前,还需要做一定的处理,需要子类重写这个方法,实现业务逻辑
     *
     * @param taskDto
     */
    protected void prepare(TaskDto taskDto) {
 
    }
 
    /**
     * 空方法,如果在事后过程处理完后,还需要做一定的处理,需要子类重写这个方法,实现业务逻辑
     *
     * @param taskDto
     */
    protected void after(TaskDto taskDto) {
 
    }
 
    /**
     * 查询小区信息
     *
     * @return
     */
    protected List<CommunityDto> getAllCommunity() {
        CommunityDto communityDto = new CommunityDto();
        communityDto.setState("1100"); //审核过的小区
        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
        return communityDtos;
    }
 
    /**
     * 获取当前属性
     * @param taskDto
     * @param specCd
     * @return
     */
    protected TaskAttrDto getCurTaskAttr(TaskDto taskDto, String specCd) {
        List<TaskAttrDto> taskAttrDtos = taskDto.getTaskAttr();
        for (TaskAttrDto taskAttrDto : taskAttrDtos) {
            if (specCd.equals(taskAttrDto.getSpecCd())) {
                return taskAttrDto;
            }
        }
 
        return null;
    }
}