定时推送账单添加执行日志;

This commit is contained in:
王奎兴
2026-03-24 10:10:44 +08:00
parent 98023ce981
commit 9825b64016
5 changed files with 97 additions and 0 deletions
@@ -3,12 +3,15 @@ package com.mhd.basic.domain.scheduledTask.repository.task;
import com.mhd.basic.domain.scheduledTask.entity.ScheduledTask;
import com.mhd.basic.domain.scheduledTask.repository.facade.ScheduledTaskService;
import com.mhd.basic.domain.scheduledTask.repository.mapper.ScheduledTaskMapper;
import com.mhd.basic.domain.scheduledTaskLog.entity.ScheduledTaskLog;
import com.mhd.basic.domain.scheduledTaskLog.repository.mapper.ScheduledTaskLogMapper;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@@ -18,6 +21,9 @@ public class BillingScheduler {
@Resource
private ScheduledTaskMapper scheduledTaskMapper;
@Resource
private ScheduledTaskLogMapper scheduledTaskLogMapper;
@Resource
private ScheduledTaskService scheduledTaskService;
@@ -51,19 +57,28 @@ public class BillingScheduler {
}
private void executeTask(ScheduledTask task) {
String status = "";
try {
// 执行具体的出账逻辑
scheduledTaskService.executeBilling(task.getBusId());
scheduledTaskMapper.updateStatus(task.getId(), "SUCCESS");
status = "SUCCESS";
} catch (Exception e) {
// 重试机制
scheduledTaskMapper.incrementRetryCount(task.getId());
if (task.getRetryCount() < 3) {
scheduledTaskMapper.updateStatus(task.getId(), "PENDING");
} else {
status = "FAILED";
scheduledTaskMapper.updateStatus(task.getId(), "FAILED");
}
}
ScheduledTaskLog log = new ScheduledTaskLog();
log.setTaskId(task.getId());
log.setBusId(task.getBusId());
log.setTaskStatus(status);
log.setExecuteTime(new Date());
scheduledTaskLogMapper.insert(log);
}
}
@@ -0,0 +1,41 @@
package com.mhd.basic.domain.scheduledTaskLog.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import com.mhd.common.core.web.domain.BaseVOEntity;
import lombok.Data;
import java.time.LocalTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
*
* @author gen
* @date 2024-06-07
*/
@Data
public class ScheduledTaskLog extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("业务id")
private Long busId;
@ApiModelProperty("任务id")
private Long taskId;
@ApiModelProperty("结果")
private String taskStatus;
@ApiModelProperty("执行时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date executeTime;
}
@@ -0,0 +1,12 @@
package com.mhd.basic.domain.scheduledTaskLog.repository.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mhd.basic.domain.scheduledTask.entity.ScheduledTask;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.scheduledTaskLog.entity.ScheduledTaskLog;
import java.time.LocalDateTime;
public interface ScheduledTaskLogService extends IService<ScheduledTaskLog> {
}
@@ -0,0 +1,14 @@
package com.mhd.basic.domain.scheduledTaskLog.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.basic.domain.scheduledTask.entity.ScheduledTask;
import com.mhd.basic.domain.scheduledTaskLog.entity.ScheduledTaskLog;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.time.LocalDateTime;
import java.util.List;
public interface ScheduledTaskLogMapper extends BaseMapper<ScheduledTaskLog> {
}
@@ -0,0 +1,15 @@
package com.mhd.basic.domain.scheduledTaskLog.repository.persistence;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.basic.domain.scheduledTaskLog.entity.ScheduledTaskLog;
import com.mhd.basic.domain.scheduledTaskLog.repository.facade.ScheduledTaskLogService;
import com.mhd.basic.domain.scheduledTaskLog.repository.mapper.ScheduledTaskLogMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class ScheduledTaskLogServiceImpl extends ServiceImpl<ScheduledTaskLogMapper, ScheduledTaskLog> implements ScheduledTaskLogService {
}