You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.9 KiB

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.tbs.common.TbsActivityState;
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;
/**
* 同步活动底表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(){
//todo
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<TbsActivity> 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<TbsActivityTemplate> 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<TbsActivityTemplate> preStartList = activityTemplateService.list(lqw);
if(CollectionUtil.isNotEmpty(preStartList)){
preStartList.forEach(a->a.setTemplateState(1));
activityTemplateService.updateBatchById(preStartList);
}
LambdaQueryWrapper<TbsActivityTemplate> 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<TbsActivityTemplate> 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) {
2 years ago
birBaseActivityService.buildReport(year, month);
}
}