From 1c61a282a831cea285ddb503bdb810df9250b191 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期五, 23 五月 2025 16:44:27 +0800
Subject: [PATCH] [钣金计划大表] 增加分布式锁
---
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java | 39 +++++++++++++++++++++++++++++++++++++--
1 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
index d00d0af..7965f89 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
@@ -1,7 +1,6 @@
package com.aps.core.service.impl;
import cn.hutool.core.util.IdUtil;
-import com.aps.common.core.domain.R;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.web.domain.AjaxResult;
import com.aps.common.redis.service.RedisLockUtils;
@@ -10,9 +9,9 @@
import com.aps.core.enums.PLAN_TASK_TYPE;
import com.aps.core.enums.REDIS_LOCK_KEY;
import com.aps.core.mapper.ApsPlateStandardRequireOrderEndDayMapper;
+import com.aps.core.service.ApsPlate.IApsPlateProcessShopStatService;
import com.aps.core.service.ApsPlate.IApsPlateStandardRequireBatchService;
import com.aps.core.service.ApsPlate.IApsPlateStandardRequireService;
-import com.aps.core.service.ApsPlateStandardRequireOrderEndDayService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,6 +25,7 @@
import static com.aps.common.core.web.domain.AjaxResult.success;
import static com.aps.core.enums.REDIS_LOCK_KEY.PLATE_ORDER_PLAN;
+
/**
* @author zhl
@@ -50,6 +50,9 @@
@Resource
ApsPlateStandardRequireOrderEndDayMapper orderEndDayMapper;
+
+ @Resource
+ IApsPlateProcessShopStatService plateProcessShopStatService;
@Override
public Page<ApsPlanTask> pagingList(Page<ApsPlanTask> page ,ApsPlanTask task){
@@ -123,6 +126,38 @@
redisLockUtils.releaseLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode());
}
}
+ @Override
+ public AjaxResult generatorPlatePlanTable() {
+ String plateOrderPlanKey = REDIS_LOCK_KEY.PLATE_SHOP_PLAN_TABLE.getKey();
+ boolean existsLock = redisLockUtils.existLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_SHOP_PLAN_TABLE.getCode());
+ if (existsLock) {
+ return AjaxResult.warn("閽i噾璁″垝澶ц〃璁″垝浠诲姟姝e湪鎵ц涓�!");
+ }
+ LambdaQueryWrapper<ApsPlanTask> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ApsPlanTask::getTaskType, PLAN_TASK_TYPE.PLATE_SHOP_PLAN_TABLE.getCode());
+ queryWrapper.eq(ApsPlanTask::getTaskStatus, PLAN_TASK_STATUS.IN_PROCESS.getCode());
+ boolean existsDbTask = mapper.exists(queryWrapper);
+ if (existsDbTask) {
+ return AjaxResult.warn("閽i噾璁″垝澶ц〃浠诲姟姝e湪鎵ц涓�!!");
+ }
+ String currentBatchNum = String.valueOf(IdUtil.getSnowflakeNextId()) ;
+ try {
+ redisLockUtils.getLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_SHOP_PLAN_TABLE.getCode(), 15 * 60L);
+ this.savePlanTask( currentBatchNum);
+ Thread.sleep(60000);
+ plateProcessShopStatService.saveShopStat();
+ this.updateTaskStatus(currentBatchNum, PLAN_TASK_STATUS.FINISHED);
+ log.info("閽i噾璁″垝澶ц〃浠诲姟鎵ц瀹屾垚!" + currentBatchNum);
+ return success();
+ } catch (Exception e) {
+ redisLockUtils.releaseLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_SHOP_PLAN_TABLE.getCode());
+ log.error("閽i噾璁″垝澶ц〃浠诲姟鎵ц澶辫触!" + e.getMessage());
+ this.updateTaskStatus(currentBatchNum, PLAN_TASK_STATUS.ERROR);
+ return AjaxResult.error("閽i噾璁″垝澶ц〃浠诲姟鎵ц澶辫触!" + e.getMessage());
+ } finally {
+ redisLockUtils.releaseLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_SHOP_PLAN_TABLE.getCode());
+ }
+ }
}
--
Gitblit v1.9.3