From 6671f69b4d24869f3f321a15f511c2ad61b64c04 Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期一, 19 五月 2025 15:12:48 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-backend into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 53 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 36fd10b..383f5f6 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,34 +1,52 @@
 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;
 import com.aps.common.security.utils.SecurityUtils;
 import com.aps.core.enums.PLAN_TASK_STATUS;
 import com.aps.core.enums.PLAN_TASK_TYPE;
+import com.aps.core.enums.REDIS_LOCK_KEY;
+import com.aps.core.service.ApsPlate.IApsPlateStandardRequireBatchService;
+import com.aps.core.service.ApsPlate.IApsPlateStandardRequireService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.aps.core.domain.ApsPlanTask;
 import com.aps.core.service.ApsPlanTaskService;
 import com.aps.core.mapper.ApsPlanTaskMapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import static com.aps.common.core.web.domain.AjaxResult.success;
+import static com.aps.core.enums.REDIS_LOCK_KEY.PLATE_ORDER_PLAN;
 
 /**
 * @author zhl
 * @description 閽堝琛ㄣ�恆ps_plan_task(璁″垝鐢熸垚鏃ュ織琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
 * @createDate 2025-05-16 14:41:49
 */
+
+@Slf4j
 @Service
 public class ApsPlanTaskServiceImpl extends ServiceImpl<ApsPlanTaskMapper, ApsPlanTask> implements ApsPlanTaskService{
 
 
     @Autowired
     ApsPlanTaskMapper mapper;
+    @Autowired
+    private IApsPlateStandardRequireService apsPlateStandardRequireService;
+    @Resource
+    IApsPlateStandardRequireBatchService requireBatchService;
 
+    @Resource
+    RedisLockUtils redisLockUtils;
+
+    @Override
     public Page<ApsPlanTask> pagingList(Page<ApsPlanTask> page ,ApsPlanTask task){
         LambdaQueryWrapper<ApsPlanTask> queryWrapper=new LambdaQueryWrapper<>();
         queryWrapper.like( !task.getTaskType().isEmpty(),  ApsPlanTask::getTaskType,task.getTaskType());
@@ -65,6 +83,39 @@
                 .build();
         baseMapper.update(task,queryWrapper);
     }
+
+    @Override
+    public AjaxResult generatorPlan()
+    {
+        String plateOrderPlanKey = PLATE_ORDER_PLAN.getKey();
+        boolean existsLock = redisLockUtils.existLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+        if (existsLock){
+            return AjaxResult.warn("閽i噾宸ュ崟璁″垝浠诲姟姝e湪鎵ц涓�!");
+        }
+        LambdaQueryWrapper<ApsPlanTask> queryWrapper=new LambdaQueryWrapper<>();
+        queryWrapper.eq(ApsPlanTask::getTaskType,PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+        queryWrapper.eq(ApsPlanTask::getTaskStatus,PLAN_TASK_STATUS.IN_PROCESS.getCode());
+        boolean existsDbTask = mapper.exists(queryWrapper);
+        if (existsDbTask){
+            return AjaxResult.warn("閽i噾宸ュ崟璁″垝浠诲姟姝e湪鎵ц涓�!!");
+        }
+        try {
+            redisLockUtils.getLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode(), 3*60L);
+            String batchNum= requireBatchService.getNewBatchNumber();
+            this.savePlanTask(batchNum);
+            apsPlateStandardRequireService.generatorPlan(batchNum);
+            this.updateTaskStatus(batchNum, PLAN_TASK_STATUS.FINISHED);
+            log.info("璁″垝浠诲姟鎵ц瀹屾垚!"+batchNum);
+            return success();
+        }catch (Exception e){
+            redisLockUtils.releaseLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+            log.error("璁″垝浠诲姟鎵ц澶辫触!"+e.getMessage());
+            return AjaxResult.error("璁″垝浠诲姟鎵ц澶辫触!"+e.getMessage());
+        }finally {
+            redisLockUtils.releaseLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+        }
+    }
+
 }
 
 

--
Gitblit v1.9.3