code
This commit is contained in:
+24
-6
@@ -46,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -339,8 +340,10 @@ public class SettlementCustomersApplicationService {
|
||||
if (settlementEntityId != null) {
|
||||
stopXxlJob(settlementCustomersDO.getPushBillingRecordJobId());
|
||||
stopXxlJob(settlementCustomersDO.getPushBillManageJobId());
|
||||
Integer jobId = addXxlJob(String.valueOf(settlementEntityId));
|
||||
Integer jobId1 = addXxlJob1(String.valueOf(settlementEntityId));
|
||||
//生成唯一业务流水号拼接至JobDesc,保证本次新建任务的JobDesc唯一,据此查询jobId不会命中历史任务
|
||||
String xxlJobBizNo = generateXxlJobBizNo();
|
||||
Integer jobId = addXxlJob(String.valueOf(settlementEntityId), xxlJobBizNo);
|
||||
Integer jobId1 = addXxlJob1(String.valueOf(settlementEntityId), xxlJobBizNo);
|
||||
settlementCustomersDO.setPushBillingRecordJobId(jobId);
|
||||
settlementCustomersDO.setPushBillManageJobId(jobId1);
|
||||
}
|
||||
@@ -358,12 +361,13 @@ public class SettlementCustomersApplicationService {
|
||||
/**
|
||||
* 创建夜间23点定时任务
|
||||
* @param shipperId 结算对象id,作为任务参数
|
||||
* @param bizNo 业务流水号,拼接进JobDesc保证每个任务描述唯一,据此精确查询本次新建的xxlJobId
|
||||
* @return xxlJobId 保存到业务表,后续用于删除/暂停
|
||||
*/
|
||||
public Integer addXxlJob(String shipperId) {
|
||||
public Integer addXxlJob(String shipperId, String bizNo) {
|
||||
XxlJobOpenApiUtil.JobInfoAddReq req = new XxlJobOpenApiUtil.JobInfoAddReq();
|
||||
req.setJobGroup(3);
|
||||
req.setJobDesc("散租推送计费单据/流水任务,结算对象id:" + shipperId);
|
||||
req.setJobDesc("散租推送计费单据/流水任务,结算对象id:" + shipperId + ",业务流水号:" + bizNo);
|
||||
req.setAuthor("system");
|
||||
req.setAlarmEmail("");
|
||||
req.setScheduleType("CRON");
|
||||
@@ -395,12 +399,13 @@ public class SettlementCustomersApplicationService {
|
||||
/**
|
||||
* 创建夜间23点定时任务
|
||||
* @param shipperId 结算对象id,作为任务参数
|
||||
* @param bizNo 业务流水号,拼接进JobDesc保证每个任务描述唯一,据此精确查询本次新建的xxlJobId
|
||||
* @return xxlJobId 保存到业务表,后续用于删除/暂停
|
||||
*/
|
||||
public Integer addXxlJob1(String shipperId) {
|
||||
public Integer addXxlJob1(String shipperId, String bizNo) {
|
||||
XxlJobOpenApiUtil.JobInfoAddReq req = new XxlJobOpenApiUtil.JobInfoAddReq();
|
||||
req.setJobGroup(6);
|
||||
req.setJobDesc("计费单据/流水生成发票任务,结算对象id:" + shipperId);
|
||||
req.setJobDesc("计费单据/流水生成发票任务,结算对象id:" + shipperId + ",业务流水号:" + bizNo);
|
||||
req.setAuthor("system");
|
||||
req.setAlarmEmail("");
|
||||
req.setScheduleType("CRON");
|
||||
@@ -438,6 +443,7 @@ public class SettlementCustomersApplicationService {
|
||||
}
|
||||
|
||||
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyMMdd");
|
||||
private static final DateTimeFormatter JOB_BIZ_NO_FORMATTER = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||
private static final Random RANDOM = new Random();
|
||||
|
||||
/**
|
||||
@@ -454,6 +460,18 @@ public class SettlementCustomersApplicationService {
|
||||
return "HT" + dateStr + randomStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成xxl-job任务业务流水号:JOB + 当天yyMMddHHmmssSSS + 6位随机数字,保证每次创建的JobDesc唯一
|
||||
* 示例:JOB260905102030123123456
|
||||
* @return 业务流水号字符串
|
||||
*/
|
||||
public static String generateXxlJobBizNo() {
|
||||
String dateTimeStr = LocalDateTime.now().format(JOB_BIZ_NO_FORMATTER);
|
||||
int randomNum = RANDOM.nextInt(1_000_000);
|
||||
String randomStr = String.format("%06d", randomNum);
|
||||
return "JOB" + dateTimeStr + randomStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除结算对象
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user