diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTask/repository/task/BillingScheduler.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTask/repository/task/BillingScheduler.java index d5bb2cb27..226662cb5 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTask/repository/task/BillingScheduler.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTask/repository/task/BillingScheduler.java @@ -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); } } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/entity/ScheduledTaskLog.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/entity/ScheduledTaskLog.java new file mode 100644 index 000000000..59ff409fc --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/entity/ScheduledTaskLog.java @@ -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; +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/facade/ScheduledTaskLogService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/facade/ScheduledTaskLogService.java new file mode 100644 index 000000000..c848f0518 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/facade/ScheduledTaskLogService.java @@ -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 { + +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/mapper/ScheduledTaskLogMapper.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/mapper/ScheduledTaskLogMapper.java new file mode 100644 index 000000000..a18a1dd14 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/mapper/ScheduledTaskLogMapper.java @@ -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 { + +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/persistence/ScheduledTaskLogServiceImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/persistence/ScheduledTaskLogServiceImpl.java new file mode 100644 index 000000000..9eece488d --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/scheduledTaskLog/repository/persistence/ScheduledTaskLogServiceImpl.java @@ -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 implements ScheduledTaskLogService { + +} \ No newline at end of file