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