Browse Source

更新使用注解定时器运行计算程序

Yangzw 7 months ago
parent
commit
1061884730

+ 22 - 11
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java

@@ -26,8 +26,11 @@ import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
 import cn.newfeifan.mall.module.distri.service.ptprofitlogdetails.PtProfitLogDetailsService;
 import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
 import cn.newfeifan.mall.module.distri.service.shopsettlement.ShopSettlementService;
+import cn.newfeifan.mall.module.infra.dal.dataobject.job.JobDO;
+import cn.newfeifan.mall.module.infra.dal.dataobject.job.JobLogDO;
 import cn.newfeifan.mall.module.infra.dal.mysql.job.JobLogMapper;
 import cn.newfeifan.mall.module.infra.dal.mysql.job.JobMapper;
+import cn.newfeifan.mall.module.infra.enums.job.JobLogStatusEnum;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
@@ -197,17 +200,25 @@ public class OrderCalcServiceImpl implements OrderCalcService {
             System.out.println("=================计算程序结束====================");
         }
 
-//        // 不是用的quzt 手动加上日志
-//        JobDO job = jobMapper.selectOne(JobDO::getHandlerName, "tradeOrderAutoCalcJob");
-//        JobLogDO log = new JobLogDO();
-//        log.setBeginTime(LocalDateTime.now());
-//        log.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
-//        log.setJobId(job.getId());
-//        log.setHandlerName(job.getHandlerName());
-//        log.setHandlerParam(job.getHandlerParam());
-//        log.setExecuteIndex(1);
-//
-//        jobLogMapper.insert(log);
+        // 不是用的quzt 手动加上日志
+        JobDO job = jobMapper.selectOne(JobDO::getHandlerName, "tradeOrderAutoCalcJob");
+
+        Long count = jobLogMapper.getJobLogCount(job.getHandlerName());
+
+        // 如果今天有记录并且是成功的那就不加了
+        if(count > 0){
+            return;
+        }
+
+        JobLogDO log = new JobLogDO();
+        log.setBeginTime(LocalDateTime.now());
+        log.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
+        log.setJobId(job.getId());
+        log.setHandlerName(job.getHandlerName());
+        log.setHandlerParam(job.getHandlerParam());
+        log.setExecuteIndex(1);
+
+        jobLogMapper.insert(log);
     }
 
     /**

+ 9 - 0
feifan-module-infra/feifan-module-infra-biz/src/main/java/cn/newfeifan/mall/module/infra/dal/mysql/job/JobLogMapper.java

@@ -5,6 +5,8 @@ import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
 import cn.newfeifan.mall.module.infra.dal.dataobject.job.JobLogDO;
+import cn.newfeifan.mall.module.infra.enums.job.JobLogStatusEnum;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -40,4 +42,11 @@ public interface JobLogMapper extends BaseMapperX<JobLogDO> {
     @Delete("DELETE FROM infra_job_log WHERE create_time < #{createTime} LIMIT #{limit}")
     Integer deleteByCreateTimeLt(@Param("createTime") LocalDateTime createTime, @Param("limit") Integer limit);
 
+    default Long getJobLogCount(String tradeOrderAutoCalcJob){
+        return selectCount(new LambdaQueryWrapper<JobLogDO>()
+                .eq(JobLogDO::getHandlerName, tradeOrderAutoCalcJob)
+                .eq(JobLogDO::getStatus, JobLogStatusEnum.SUCCESS.getStatus())
+                .apply("date(create_time) = date(now())")
+        );
+    }
 }

+ 1 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/job/order/TestJob.java

@@ -23,7 +23,7 @@ public class TestJob {
     @Resource
     private TradeOrderQueryService tradeOrderQueryService;
 
-    @Scheduled(cron = "0 0 17 * * ?")
+    @Scheduled(cron = "0 0 3 * * ?")
     public void execute() {
         //发货七天前订单
         List<DistriOrderMessage> appTradeOrderDetailRespVos = tradeOrderQueryService.queryAllOrder();