From b78c1cf25d01a7884431c0dcf29d3bf75713ab4c Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Mon, 30 Mar 2026 16:14:51 +0800 Subject: [PATCH] =?UTF-8?q?2026-03-30=20=E6=A0=87=E7=AD=BE=E5=8F=98?= =?UTF-8?q?=E5=8A=A8=E8=AE=B0=E5=BD=95=E5=A2=9E=E5=8A=A0=E3=80=90=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=85=B3=E9=97=AD=E3=80=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/sys/dao/InterfaceLogDao.java | 6 +++ .../LabelTransactionLogController.java | 21 ++++++++ .../service/LabelTransactionLogService.java | 5 ++ .../impl/LabelTransactionLogServiceImpl.java | 53 +++++++++++++++++++ .../resources/mapper/sys/InterfaceLogDao.xml | 9 ++++ 5 files changed, 94 insertions(+) diff --git a/src/main/java/com/gaotao/modules/sys/dao/InterfaceLogDao.java b/src/main/java/com/gaotao/modules/sys/dao/InterfaceLogDao.java index f625e29..6c4995e 100644 --- a/src/main/java/com/gaotao/modules/sys/dao/InterfaceLogDao.java +++ b/src/main/java/com/gaotao/modules/sys/dao/InterfaceLogDao.java @@ -93,6 +93,12 @@ public interface InterfaceLogDao extends BaseMapper { @Param("message") String message, @Param("needRetryFlag") Integer needRetryFlag, @Param("lastResponseData") String lastResponseData); + + /** + * 根据transactionId关闭api_log记录(用于异常关闭) + */ + int closeApiLogByTransactionId(@Param("site") String site, + @Param("transactionId") String transactionId); } diff --git a/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java b/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java index 8b6df4d..5a0c323 100644 --- a/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java +++ b/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java @@ -80,5 +80,26 @@ public class LabelTransactionLogController extends AbstractController { return R.error("批量手动重试失败: " + e.getMessage()); } } + + /** + * 批量异常关闭 + */ + @PostMapping("close") + @SuppressWarnings("unchecked") + public R close(@RequestBody Map params) { + try { + List> closeList = (List>) params.get("closeList"); + + if (closeList == null || closeList.isEmpty()) { + return R.error("请选择要关闭的记录"); + } + + Map result = labelTransactionLogService.batchClose(closeList); + return R.ok().put("code", 0).put("result", result); + } catch (Exception e) { + logger.error("批量异常关闭失败", e); + return R.error("批量异常关闭失败: " + e.getMessage()); + } + } } diff --git a/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java b/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java index 7c11d0d..11c43c2 100644 --- a/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java +++ b/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java @@ -22,5 +22,10 @@ public interface LabelTransactionLogService { * 批量手动重试 */ Map batchRetry(List> retryList, boolean isExceptionRetry); + + /** + * 批量异常关闭 + */ + Map batchClose(List> closeList); } diff --git a/src/main/java/com/gaotao/modules/warehouse/service/impl/LabelTransactionLogServiceImpl.java b/src/main/java/com/gaotao/modules/warehouse/service/impl/LabelTransactionLogServiceImpl.java index f7717f2..e6caa96 100644 --- a/src/main/java/com/gaotao/modules/warehouse/service/impl/LabelTransactionLogServiceImpl.java +++ b/src/main/java/com/gaotao/modules/warehouse/service/impl/LabelTransactionLogServiceImpl.java @@ -2,12 +2,14 @@ package com.gaotao.modules.warehouse.service.impl; import com.gaotao.modules.erp.service.ErpInterfaceService; import com.gaotao.modules.stock.dao.StockTransactionLogDao; +import com.gaotao.modules.sys.dao.InterfaceLogDao; import com.gaotao.modules.warehouse.dao.LabelTransactionLogMapper; import com.gaotao.modules.warehouse.service.LabelTransactionLogService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; @@ -28,6 +30,9 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic @Autowired private StockTransactionLogDao stockTransactionLogDao; + @Autowired + private InterfaceLogDao interfaceLogDao; + @Autowired private ErpInterfaceService erpInterfaceService; @@ -117,5 +122,53 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic return result; } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map batchClose(List> closeList) { + logger.info("批量异常关闭开始,记录数: {}", closeList.size()); + + int successCount = 0; + int failureCount = 0; + List> details = new ArrayList<>(); + + for (Map closeItem : closeList) { + String site = (String) closeItem.get("site"); + String buNo = (String) closeItem.get("buNo"); + String transactionId = (String) closeItem.get("transactionId"); + + Map detail = new HashMap<>(); + detail.put("transactionId", transactionId); + + try { + // 1. 更新StockTransactionLog表的synced_flag为'Y' + stockTransactionLogDao.updateSyncedSuccessBySiteAndTransactionId(site, transactionId); + + // 2. 更新api_log表的need_retry_flag为0,status_code为'200' + interfaceLogDao.closeApiLogByTransactionId(site, transactionId); + + successCount++; + detail.put("status", "success"); + detail.put("message", "异常关闭成功"); + logger.info("异常关闭成功,transactionId: {}", transactionId); + } catch (Exception e) { + logger.error("异常关闭失败,transactionId: {}, error: {}", transactionId, e.getMessage(), e); + detail.put("status", "error"); + detail.put("message", "异常关闭失败: " + e.getMessage()); + details.add(detail); + failureCount++; + } + } + + logger.info("批量异常关闭完成,成功: {}, 失败: {}", successCount, failureCount); + + Map result = new HashMap<>(); + result.put("successCount", successCount); + result.put("failureCount", failureCount); + result.put("totalCount", closeList.size()); + result.put("details", details); + + return result; + } } diff --git a/src/main/resources/mapper/sys/InterfaceLogDao.xml b/src/main/resources/mapper/sys/InterfaceLogDao.xml index 26fcadb..11bbed0 100644 --- a/src/main/resources/mapper/sys/InterfaceLogDao.xml +++ b/src/main/resources/mapper/sys/InterfaceLogDao.xml @@ -234,6 +234,15 @@ AND transaction_id = #{transactionId} + + + UPDATE api_log + SET status_code = '200', + need_retry_flag = 0 + WHERE site = #{site} + AND transaction_id = #{transactionId} + +