java110
2023-04-24 357f12084dd380a23a1140b4935087bf6878e7c6
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package com.java110.job.quartz;
 
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.community.CommunityDto;
import com.java110.dto.logSystemError.LogSystemErrorDto;
import com.java110.dto.store.StoreDto;
import com.java110.dto.task.TaskDto;
import com.java110.dto.task.TaskAttrDto;
import com.java110.intf.community.ICommunityInnerServiceSMO;
import com.java110.intf.store.IStoreInnerServiceSMO;
import com.java110.job.dao.ITaskServiceDao;
import com.java110.po.logSystemError.LogSystemErrorPo;
import com.java110.service.smo.ISaveSystemErrorSMO;
import com.java110.utils.util.ExceptionUtil;
import org.slf4j.Logger;
import com.java110.core.log.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;
 
    @Autowired
    private IStoreInnerServiceSMO storeInnerServiceSMOImpl;
 
    @Autowired
    private ISaveSystemErrorSMO saveSystemErrorSMOImpl;
 
 
    public void initTask() {
 
    }
 
    /**
     * 启动任务
     *
     * @param taskDto
     */
    public void startTask(TaskDto taskDto) throws Exception {
        try {
            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);
            }
 
 
            // 1.0空方法,让子类去实现
            prepare(taskDto);
 
            // 3.0核心业务处理逻辑,需要子类去实现
            process(taskDto);
 
            // 5.0空方法,让子类去实现
            after(taskDto);
        } catch (Exception ex) {
            LogSystemErrorPo logSystemErrorPo = new LogSystemErrorPo();
            logSystemErrorPo.setErrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_errId));
            logSystemErrorPo.setErrType(LogSystemErrorDto.ERR_TYPE_JOB);
            logSystemErrorPo.setMsg(ExceptionUtil.getStackTrace(ex));
            saveSystemErrorSMOImpl.saveLog(logSystemErrorPo);
            // 接续向外抛出去
            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;
    }
 
    /**
     * 查询商户信息
     *
     * @return
     */
    protected List<StoreDto> getAllStore(String storeTypeCd) {
        StoreDto storeDto = new StoreDto();
        storeDto.setStoreTypeCd(storeTypeCd);
        List<StoreDto> storeDtos = storeInnerServiceSMOImpl.getStores(storeDto);
        return storeDtos;
    }
 
    /**
     * 获取当前属性
     *
     * @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;
    }
}