From 06fc5297bb8f39212a46c8def4d9c24ff2b9c683 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 5 Dec 2025 10:41:39 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20TMS-=E8=BF=90=E8=BE=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E6=BC=8F=E7=BB=84=E6=89=B9=E6=AC=A1=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=5F=E6=96=B0-=E6=96=B0=E5=A2=9E=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E9=87=8D=E5=88=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emis/EmisTmsSiteBatchMissController.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java index 11baca6d4..59252a96c 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchMissController.java @@ -1,8 +1,13 @@ package com.xdadan.erp.web.emis; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import com.xdadan.erp.common.core.redis.RedissonService; import com.xdadan.erp.emis.domain.exception.EmisBizError; +import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -26,6 +31,7 @@ import com.xdadan.erp.common.core.page.TableDataInfo; * * @author heyu */ +@Slf4j @RestController @RequestMapping("/emis/emisTmsSiteBatchMiss") public class EmisTmsSiteBatchMissController extends EmisBaseController { @@ -33,6 +39,9 @@ public class EmisTmsSiteBatchMissController extends EmisBaseController { @Autowired private IEmisTmsSiteBatchMissService emisTmsSiteBatchMissService; + @Autowired + RedissonService redissonService; + /** * 查询TMS漏组批次信息列表 */ @@ -282,4 +291,50 @@ public class EmisTmsSiteBatchMissController extends EmisBaseController { emisTmsSiteBatchMissService.cancelConfirmBatchV2(billCodes); return AjaxResult.success("取消确认成功"); } + + /** + * 一键重算-V2 + * + * @return + */ + @GetMapping("/autoScanSiteBatchV2") + @PreAuthorize("@ss.hasPermi('emis:emisTmsSiteBatchMiss:autoScanSiteBatchV2')") + public AjaxResult autoScanSiteBatchV2(String lineCode) { + // 检查员工代码权限 + String empCode = getLoginUser().getUser().getEmpCode(); + Set allowedEmpCodes = new HashSet<>(Arrays.asList("88888059", "88888083", "88888102", "88888112")); + if (empCode == null || !allowedEmpCodes.contains(empCode)) { + log.warn("autoScanSiteBatchV2 access denied for empCode: {}", empCode); + return AjaxResult.error("您未被授权,如确有需要,请联系IT处理"); + } + + String statusKey = "autoScanSiteBatchV2_status"; + log.info("autoScanSiteBatchV2 start"); + + // 检查任务是否正在执行 + String currentStatus = redissonService.getStr(statusKey); + if ("RUNNING".equals(currentStatus)) { + log.warn("autoScanSiteBatchV2 is already running, request rejected"); + return AjaxResult.error("任务正在执行中,请稍后再试"); + } + + try { + // 设置任务状态为运行中,设置较长的过期时间(30分钟) + // 这样即使异步任务没有正确清除状态,也会在30分钟后自动过期 + redissonService.setStr(statusKey, "RUNNING", 1800); + + // 异步执行任务 + emisTmsSiteBatchMissService.autoScanSiteBatchV2(lineCode); + log.info("autoScanSiteBatchV2 async task started"); + + return AjaxResult.success("异步任务已启动,请稍后查看执行结果"); + + } catch (Exception ex) { + ex.printStackTrace(); + log.error("autoScanSiteBatchV2 exception:" + ex.getMessage()); + // 如果启动失败,清除状态 + redissonService.setStr(statusKey, "", 0); + return AjaxResult.error("任务启动失败:" + ex.getMessage()); + } + } }