wuxw
2022-07-19 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54
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
package com.java110.job.task.groupBuy;
 
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.groupBuySetting.GroupBuySettingDto;
import com.java110.dto.store.StoreDto;
import com.java110.dto.task.TaskDto;
import com.java110.intf.goods.IGroupBuyBatchInnerServiceSMO;
import com.java110.intf.goods.IGroupBuyProductInnerServiceSMO;
import com.java110.intf.goods.IGroupBuySettingInnerServiceSMO;
import com.java110.job.quartz.TaskSystemQuartz;
import com.java110.po.groupBuyBatch.GroupBuyBatchPo;
import com.java110.po.groupBuyProduct.GroupBuyProductPo;
import com.java110.po.groupBuySetting.GroupBuySettingPo;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import org.slf4j.Logger;
import com.java110.core.log.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.util.Calendar;
import java.util.Date;
import java.util.List;
 
/**
 * @program: MicroCommunity
 * @description: 定时任务 定时生成批次
 * @author: wuxw
 * @create: 2020-06-15 13:35
 **/
@Component
public class GeneratorGroupBuyBatchTemplate extends TaskSystemQuartz {
 
    private static Logger logger = LoggerFactory.getLogger(GeneratorGroupBuyBatchTemplate.class);
 
    private static final int EXPIRE_IN = 7200;
 
    @Autowired(required = false)
    private IGroupBuySettingInnerServiceSMO groupBuySettingInnerServiceSMOImpl;
 
    @Autowired(required = false)
    private IGroupBuyBatchInnerServiceSMO groupBuyBatchInnerServiceSMOImpl;
 
    @Autowired(required = false)
    private IGroupBuyProductInnerServiceSMO groupBuyProductInnerServiceSMOImpl;
 
 
    @Override
    protected void process(TaskDto taskDto) {
        logger.debug("开始生成拼团批次" + taskDto.toString());
 
        // 获取小区
        List<StoreDto> storeDtos = getAllStore(StoreDto.STORE_TYPE_ADMIN);
 
        for (StoreDto storeDto : storeDtos) {
            try {
                generatorGroupBuyBatch(taskDto, storeDto);
            } catch (Exception e) {
                logger.error("推送消息失败", e);
            }
        }
    }
 
    /**
     * 轮训派单
     *
     * @param taskDto
     * @param storeDto
     */
    private void generatorGroupBuyBatch(TaskDto taskDto, StoreDto storeDto) {
 
        //查询需要程序轮训派单 订单
        GroupBuySettingDto groupBuySettingDto = new GroupBuySettingDto();
        groupBuySettingDto.setStoreId(storeDto.getStoreId());
        List<GroupBuySettingDto> groupBuySettingDtos = groupBuySettingInnerServiceSMOImpl.queryGroupBuySettings(groupBuySettingDto);
 
        Assert.listOnlyOne(groupBuySettingDtos, "未配置 拼团设置");
 
        for (GroupBuySettingDto tmpGroupBuySettingDto : groupBuySettingDtos) {
            try {
                doGeneratorGroupBuyBatch(tmpGroupBuySettingDto);
            } catch (Exception e) {
                logger.error("生成批次", e);
            }
 
        }
 
    }
 
    /**
     * 生成批次
     *
     * @param tmpGroupBuySettingDto
     */
    private void doGeneratorGroupBuyBatch(GroupBuySettingDto tmpGroupBuySettingDto) throws Exception {
 
        Date endTime = DateUtil.getDateFromString(tmpGroupBuySettingDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A);
        Date nowTime = DateUtil.getCurrentDate();
 
        if (endTime.getTime() > nowTime.getTime()) { // 还没有到 批次结束
            return;
        }
 
        Date startTime = endTime;
 
        int validHours = Integer.parseInt(tmpGroupBuySettingDto.getValidHours());
 
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(endTime);
        calendar.add(Calendar.HOUR_OF_DAY, validHours);
 
        endTime = calendar.getTime();
 
        GroupBuyBatchPo groupBuyBatchPo = new GroupBuyBatchPo();
        groupBuyBatchPo.setSettingId(tmpGroupBuySettingDto.getSettingId());
        groupBuyBatchPo.setStoreId(tmpGroupBuySettingDto.getStoreId());
        groupBuyBatchPo.setCurBatch("F");
        groupBuyBatchPo.setDefaultCurBatch("Y");
        groupBuyBatchInnerServiceSMOImpl.updateGroupBuyBatch(groupBuyBatchPo);
 
 
        groupBuyBatchPo.setCurBatch("Y");
        groupBuyBatchPo.setBatchStartTime(DateUtil.getFormatTimeString(startTime, DateUtil.DATE_FORMATE_STRING_A));
        groupBuyBatchPo.setBatchEndTime(DateUtil.getFormatTimeString(endTime,DateUtil.DATE_FORMATE_STRING_A));
        groupBuyBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_batchId));
        int flag = groupBuyBatchInnerServiceSMOImpl.saveGroupBuyBatch(groupBuyBatchPo);
 
        if(flag < 1){
            throw new IllegalArgumentException("保存批次失败");
        }
 
        //更新 setting 表
        GroupBuySettingPo groupBuySettingPo = new GroupBuySettingPo();
        groupBuySettingPo.setStartTime(DateUtil.getFormatTimeString(startTime, DateUtil.DATE_FORMATE_STRING_A));
        groupBuySettingPo.setEndTime(DateUtil.getFormatTimeString(endTime,DateUtil.DATE_FORMATE_STRING_A));
        groupBuySettingPo.setSettingId(tmpGroupBuySettingDto.getSettingId());
        flag = groupBuySettingInnerServiceSMOImpl.updateGroupBuySetting(groupBuySettingPo);
        if(flag < 1){
            throw new IllegalArgumentException("保存批次失败");
        }
 
        GroupBuyProductPo groupBuyProductPo = new GroupBuyProductPo();
        groupBuyProductPo.setStoreId(tmpGroupBuySettingDto.getStoreId());
        groupBuyProductPo.setBatchId(groupBuyBatchPo.getBatchId());
 
        flag = groupBuyProductInnerServiceSMOImpl.updateGroupBuyProduct(groupBuyProductPo);
        if(flag < 1){
            throw new IllegalArgumentException("保存批次失败");
        }
    }
 
 
}