公会-土耳其-结算-拆分1和16

This commit is contained in:
khalil
2024-11-16 20:11:56 +08:00
parent 9c4ba43617
commit 796973ac34
6 changed files with 71 additions and 66 deletions

View File

@@ -7,21 +7,13 @@ import com.accompany.business.service.guild.GuildSalaryBillDateCycleService;
import com.accompany.business.util.CycleTimeUtil;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.model.PartitionInfo;
import com.accompany.core.service.partition.PartitionInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
@Component
@Slf4j
@@ -30,23 +22,44 @@ public class GuildSettleTask {
private AgencyMonthSettleService agencyMonthSettleService;
@Autowired
private GuildSalaryBillDateCycleService guildSalaryBillDateCycleService ;
@Autowired
private PartitionInfoService partitionInfoService;
@Resource(name = "bizExecutor")
private ThreadPoolExecutor bizExecutor;
//zone = "Asia/Riyadh zone = "Etc/GMT-3" 两种方式都支持
/**
* 公户月结算,用户明细
* 每月1号凌晨0点10分执行
*/
@Scheduled(cron = "0 10 0 1 * ?", zone = "Etc/GMT-3")
public void monthRankTaskAll2() {
Date date = new Date();
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
for (PartitionEnum partitionEnum : partitionEnumList) {
try {
DateTime lastMonth = DateUtil.offsetMonth(date, -1);
DateTime beginTime = DateUtil.offsetDay(lastMonth, 15);
DateTime endTime = DateUtil.beginOfDay(date);
log.info("=-=monthRankTaskAll2=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime) , DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskAll(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRankTaskAll2=-= end");
log.info("=-=monthRankTaskDetail2=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime) , DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskDetail(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRankTaskDetail2=-= end");
} catch (Exception e) {
log.error("[monthRankTaskAll2] 异常", e);
}
}
}
/**
* 公会月结算
* 每月16号凌晨0点10分执行
*/
@Scheduled(cron = "0 10 0 1,16 * ?", zone = "Etc/GMT-3")
@Scheduled(cron = "0 10 0 16 * ?", zone = "Etc/GMT-3")
public void monthRankTask() {
Date date = new Date();
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
for (PartitionEnum partitionEnum : partitionEnumList) {
bizExecutor.execute(()->{
try {
DateTime beginTime = DateUtil.beginOfMonth(date);
DateTime endTime = DateUtil.beginOfDay(date);
log.info("=-=monthRankTaskAll1=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime) , DateUtil.formatDateTime(endTime));
@@ -55,7 +68,9 @@ public class GuildSettleTask {
log.info("=-=monthRankTaskDetail1=-=:beginTime:{},endTime:{}", DateUtil.formatDateTime(beginTime) , DateUtil.formatDateTime(endTime));
agencyMonthSettleService.monthRankTaskDetail(partitionEnum.getId(), beginTime, endTime);
log.info("=-=monthRankTaskDetail1=-= end");
});
} catch (Exception e){
log.error("[monthRankTask异常] {}", e.getMessage());
}
}
}

View File

@@ -1,34 +1,29 @@
package com.accompany.scheduler.task.guild;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.guild.SSGuildService;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.model.PartitionInfo;
import com.accompany.core.service.partition.PartitionInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
@Component
@Slf4j
public class SSGuildTask {
@Autowired
private PartitionInfoService partitionInfoService;
@Autowired
private SSGuildService ssGuildService;
@Resource(name = "bizExecutor")
private ThreadPoolExecutor bizExecutor;
private static final DateTimeFormatter dateFormatters = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATETIME_PATTERN);
@@ -37,31 +32,37 @@ public class SSGuildTask {
*/
@Scheduled(cron = "0 0/5 * * * ?")
public void ssTaskByMinutes() {
PartitionInfo byId = partitionInfoService.getById(PartitionEnum.ARAB.getId());
ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(new Date(), byId.getZoneId());
log.info("=-=ssTaskByMinutes=-=:东三区时间:{}", zonedDateTime.format(dateFormatters));
String cycleOne = zonedDateTime.withDayOfMonth(1).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
String cycleTwo = zonedDateTime.withDayOfMonth(16).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
List<String> cycleDates = Arrays.asList(cycleOne, cycleTwo);
ssGuildService.ssTaskByMinutes(cycleDates, PartitionEnum.ARAB.getId());
log.info("=-=ssTaskByMinutes=-=:cycleOne:{},cycleTwo:{}", cycleOne , cycleTwo);
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
for (PartitionEnum partitionEnum : partitionEnumList) {
bizExecutor.execute(() -> {
ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(new Date(), partitionEnum.getZoneId());
log.info("=-=ssTaskByMinutes=-=:东三区时间:{}", zonedDateTime.format(dateFormatters));
String cycleOne = zonedDateTime.withDayOfMonth(1).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
String cycleTwo = zonedDateTime.withDayOfMonth(16).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
List<String> cycleDates = Arrays.asList(cycleOne, cycleTwo);
ssGuildService.ssTaskByMinutes(cycleDates, partitionEnum.getId());
log.info("=-=ssTaskByMinutes=-=:cycleOne:{},cycleTwo:{}", cycleOne , cycleTwo);
});
}
}
/**
* 每5minutes
*/
@Scheduled(cron = "0 10 0 1 * ?", zone = "Etc/GMT-3")
public void ssMonthTask() {
PartitionInfo byId = partitionInfoService.getById(PartitionEnum.ARAB.getId());
ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(new Date(), byId.getZoneId());
log.info("=-=ssMonthTask=-=:东三区时间:{}", zonedDateTime.format(dateFormatters));
String cycleOne = zonedDateTime.minusMonths(1).withDayOfMonth(1).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
String cycleTwo = zonedDateTime.minusMonths(1).withDayOfMonth(16).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
List<String> cycleDates = Arrays.asList(cycleOne, cycleTwo);
log.info("=-=ssMonthTask=-=:cycleOne:{},cycleTwo:{}", cycleOne , cycleTwo);
ssGuildService.ssMonthTask(cycleDates, PartitionEnum.ARAB.getId());
log.info("================ssMonthTask end===============");
ssGuildService.ssTaskByMinutes(cycleDates, PartitionEnum.ARAB.getId());
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
for (PartitionEnum partitionEnum : partitionEnumList) {
bizExecutor.execute(() -> {
ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(new Date(), partitionEnum.getZoneId());
log.info("=-=ssMonthTask=-=:东三区时间:{}", zonedDateTime.format(dateFormatters));
String cycleOne = zonedDateTime.minusMonths(1).withDayOfMonth(1).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
String cycleTwo = zonedDateTime.minusMonths(1).withDayOfMonth(16).format(DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN));
List<String> cycleDates = Arrays.asList(cycleOne, cycleTwo);
log.info("=-=ssMonthTask=-=:cycleOne:{},cycleTwo:{}", cycleOne , cycleTwo);
ssGuildService.ssMonthTask(cycleDates, partitionEnum.getId());
log.info("================ssMonthTask end===============");
ssGuildService.ssTaskByMinutes(cycleDates, partitionEnum.getId());
});
}
}
}