vince
2025-06-04 0d9a7c8974add02c61d2471642e4e5a04013ab7b
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
package com.fzzy.api.timer;
 
import com.fzzy.api.data.ApiParam;
import com.fzzy.api.entity.ApiConfs;
import com.fzzy.api.service.*;
import com.fzzy.api.utils.ContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.util.Date;
import java.util.List;
 
/**
 * @author: andy.jia
 * @description: 同步粮库信息系统数据入口
 * @version:
 */
@Slf4j
@Component(SyncDataScheduled.BEAN_ID)
public class SyncDataScheduled {
 
    public static final String BEAN_ID = "api.syncDataScheduled";
 
    @Autowired
    private ApiSyncManager apiSyncManager;
 
    @Autowired
    private ApiCommonService apiCommonService;
 
 
    /**
     * cron = "0 0,30 * * * ? "
     * <p>
     * 固定时间:0分钟和30分钟执行
     */
//    @Scheduled(cron = "0 0,30 * * * ? ")
    public void scheduled() {
 
        log.info("系统执行定时数据同步操作<<<<<<<<<<<<<--------");
 
 
        List<ApiConfs> list = apiCommonService.listCacheConf();
 
        if (null == list || list.isEmpty()) return;
 
        Date exeDate = new Date();
 
        for (ApiConfs conf : list) {
 
            exeByConf11(conf, exeDate);
 
            exeByConf99(conf, exeDate);
        }
    }
 
    /**
     * 同步义务数据
     *
     * @param conf
     * @param exeDate
     */
    private void exeByConf99(ApiConfs conf, Date exeDate) {
        if (null == conf.getSyncType99() || conf.getSyncType99().equals(ApiConfs.SYNC_PUSH_HAND)) {
 
            log.info("业务接口数据,系统配置为手动模式,取消自动执行<<<<<<<<<<<<<-------");
            return;
        }
 
 
        Date start = exeDate;
 
        //是否执行
        boolean isExecute = false;
        boolean isUpdateStart = false;
        //核对天是否匹配
        if (conf.getSyncDay99().equals(ApiConfs.TIME_ALL)) {
            isExecute = true;
        } else {
            int dayOfWeek = ContextUtil.getDayOfWeek(exeDate);
            if (String.valueOf(dayOfWeek).equals(conf.getSyncDay11())) {
                isExecute = true;
 
                //开始时间提前7天
                start = DateUtils.addDays(start, -7);
                isUpdateStart = true;
            } else {
                isExecute = false;
            }
        }
 
        if (!isExecute) {
            log.debug("业务数据同步---时间配置天不匹配<<<<<<<<<<<<<-------");
            return;
        }
 
        //核对时间是否匹配
        if (conf.getSyncHour99().equals(ApiConfs.TIME_ALL)) {
            isExecute = true;
        } else {
            int hourOfDay = ContextUtil.getHourOfDay(exeDate);
            if (String.valueOf(hourOfDay).equals(conf.getSyncHour11())) {
                isExecute = true;
 
                if (!isUpdateStart) {
                    start = DateUtils.addDays(start, -1);
                    isUpdateStart = true;
                }
            } else {
                isExecute = false;
            }
        }
        if (!isExecute) {
            log.debug("业务数据同步---时间配置小时不匹配<<<<<<<<<<<<<-------");
            return;
        }
 
        //核对时间分钟是否匹配
        int minute = ContextUtil.getMinuteOfHour(exeDate);
        if (String.valueOf(minute).equals(conf.getSyncMinute99())) {
            isExecute = true;
            if (!isUpdateStart) {
                start = DateUtils.addHours(start, -1);
            }
        } else {
            isExecute = false;
        }
 
        if (!isExecute) {
            log.debug("业务数据同步---时间配置分钟不匹配<<<<<<<<<<<<<-------");
            return;
        }
 
        ApiParam param = new ApiParam();
        param.setSyncProtocol(conf.getSyncProtocol());
        param.setPushProtocol(conf.getPushProtocol());
        param.setKqdm(conf.getKqdm());
        param.setStart(start);
        param.setEnd(exeDate);
        param.setDeptId(conf.getDeptId());
 
 
        SyncService12 syncService12 = apiSyncManager.getSyncService12(param.getSyncProtocol());
        syncService12.syncData(param);
 
        SyncService13 syncService13 = apiSyncManager.getSyncService13(param.getSyncProtocol());
        syncService13.syncData(param);
 
        SyncService14 syncService14 = apiSyncManager.getSyncService14(param.getSyncProtocol());
        syncService14.syncData(param);
    }
 
    /**
     * 同步基础信息
     *
     * @param conf
     * @param exeDate
     */
    private void exeByConf11(ApiConfs conf, Date exeDate) {
 
        if (null == conf.getSyncType11() || conf.getSyncType11().equals(ApiConfs.SYNC_PUSH_HAND)) {
 
            log.info("基础数据同步,系统配置为手动模式,取消自动执行<<<<<<<<<<<<<-------");
            return;
        }
 
 
        Date start = exeDate;
 
        //是否执行
        boolean isExecute = false;
        boolean isUpdateStart = false;
        //核对天是否匹配
        if (conf.getSyncDay11().equals(ApiConfs.TIME_ALL)) {
            isExecute = true;
        } else {
            int dayOfWeek = ContextUtil.getDayOfWeek(exeDate);
            if (String.valueOf(dayOfWeek).equals(conf.getSyncDay11())) {
                isExecute = true;
 
                //开始时间提前7天
                start = DateUtils.addDays(start, -7);
                isUpdateStart = true;
            } else {
                isExecute = false;
            }
        }
 
        if (!isExecute) {
            log.debug("基础数据同步---时间配置天不匹配<<<<<<<<<<<<<-------");
            return;
        }
 
        //核对时间是否匹配
        if (conf.getSyncHour11().equals(ApiConfs.TIME_ALL)) {
            isExecute = true;
        } else {
            int hourOfDay = ContextUtil.getHourOfDay(exeDate);
            if (String.valueOf(hourOfDay).equals(conf.getSyncHour11())) {
                isExecute = true;
 
                if (!isUpdateStart) {
                    start = DateUtils.addDays(start, -1);
                    isUpdateStart = true;
                }
            } else {
                isExecute = false;
            }
        }
        if (!isExecute) {
            log.debug("基础数据同步---时间配置小时不匹配<<<<<<<<<<<<<-------");
            return;
        }
 
        //核对时间分钟是否匹配
        int minute = ContextUtil.getMinuteOfHour(exeDate);
        if (String.valueOf(minute).equals(conf.getSyncMinute11())) {
            isExecute = true;
            if (!isUpdateStart) {
                start = DateUtils.addHours(start, -1);
            }
        } else {
            isExecute = false;
        }
 
        if (!isExecute) {
            log.debug("基础数据同步---时间配置分钟不匹配<<<<<<<<<<<<<-------");
            return;
        }
 
        ApiParam param = new ApiParam();
        param.setSyncProtocol(conf.getSyncProtocol());
        param.setKqdm(conf.getKqdm());
        param.setStart(start);
        param.setEnd(exeDate);
        param.setDeptId(conf.getDeptId());
 
 
        SyncService11 syncService11 = apiSyncManager.getSyncService11(param.getSyncProtocol());
        syncService11.syncData(param);
    }
}