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 private IGroupBuySettingInnerServiceSMO groupBuySettingInnerServiceSMOImpl; @Autowired private IGroupBuyBatchInnerServiceSMO groupBuyBatchInnerServiceSMOImpl; @Autowired private IGroupBuyProductInnerServiceSMO groupBuyProductInnerServiceSMOImpl; @Override protected void process(TaskDto taskDto) { logger.debug("开始生成拼团批次" + taskDto.toString()); // 获取小区 List 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 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("保存批次失败"); } } }