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()); + } + } }