package com.qs.serve.task.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; import com.qs.serve.modules.bir.service.BirBaseActivityService; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; import com.qs.serve.modules.tbs.service.TbsActivityService; import com.qs.serve.modules.tbs.service.TbsActivityTemplateService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * 【同步】 活动相关 * @author YenHex * @since 2023/6/27 */ @Slf4j @AllArgsConstructor @RestController @RequestMapping("/task/activity") //@ConditionalOnProperty(value = "project.task", havingValue = "true") public class TaskActivityController { private final TbsActivityService activityService; private final TbsActivityTemplateService activityTemplateService; private final BirBaseActivityService birBaseActivityService; private final BirActivityCenterGoodsService birActivityCenterGoodsService; private final SeeYonRequestBaseService seeYonRequestBaseService; /** * 同步活动底表ActivityCenterGoods * @param month * @return */ @GetMapping("syncActivityCenterGoods") public R taskBir(Integer month){ Integer year = 2023; if(month == null){ for (int i = 1;i < 13; i++) { birActivityCenterGoodsService.buildReport(year,i); } }else { birActivityCenterGoodsService.buildReport(year,month); } return R.ok(); } /** * 同步ERP的发货单,用于计算活动费率 * @return */ @GetMapping("syncDispatch") public R task0(){ seeYonRequestBaseService.getBase(TbsSeeYonConst.TASK_SYNC_DISPATCH,"同步ERP的发货单"); return R.ok(); } /** * 同步费率底表记录 * @param month 月份,不指定当前月 * @param year 年份,不指定当前年 * @return */ @GetMapping("birActivity") public R task1(Integer year,Integer month){ //移除当年所有 if(year==null){ year = LocalDate.now().getYear(); } if(month==null){ month = LocalDate.now().getMonthValue(); syncYearMonthActivity(month, year); }else { syncYearMonthActivity(month, year); } return R.ok(); } /** * 每日更新过期的活动,过期则进行冻结 * @return */ @GetMapping("lockActivity") public R task2(){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.le(TbsActivity::getPreEndDate, LocalDate.now()); lqw.eq(TbsActivity::getReopenFlag,0); TbsActivity param = new TbsActivity(); param.setActivityState(TbsActivityState.STATE_1_Baning); activityService.update(param,lqw); return R.ok(); } /** * 启用和停用模板规则 * @return */ @GetMapping("startAndStopActivityTemplates") public R task3(){ LocalDateTime nowTime = LocalDateTime.now(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.select(TbsActivityTemplate::getId); lqw.ge(TbsActivityTemplate::getStartTime,nowTime.with(LocalDateTime.MIN)); lqw.le(TbsActivityTemplate::getStartTime,nowTime.with(LocalDateTime.MAX)); lqw.eq(TbsActivityTemplate::getTemplateState,0); List preStartList = activityTemplateService.list(lqw); if(CollectionUtil.isNotEmpty(preStartList)){ preStartList.forEach(a->a.setTemplateState(1)); activityTemplateService.updateBatchById(preStartList); } LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); lqw2.select(TbsActivityTemplate::getId); lqw2.ge(TbsActivityTemplate::getEndTime,nowTime.with(LocalDateTime.MIN)); lqw2.le(TbsActivityTemplate::getEndTime,nowTime.with(LocalDateTime.MAX)); lqw2.eq(TbsActivityTemplate::getTemplateState,1); List preCloseList = activityTemplateService.list(lqw2); if(CollectionUtil.isNotEmpty(preCloseList)){ preCloseList.forEach(a->a.setTemplateState(0)); activityTemplateService.updateBatchById(preCloseList); } return R.ok(); } private void syncYearMonthActivity(Integer month, Integer year) { birBaseActivityService.buildReport(year, month); } }