diff --git a/src/main/java/com/gaotao/modules/sys/service/impl/InterfaceLogServiceImpl.java b/src/main/java/com/gaotao/modules/sys/service/impl/InterfaceLogServiceImpl.java index bfc0517..f9f1f97 100644 --- a/src/main/java/com/gaotao/modules/sys/service/impl/InterfaceLogServiceImpl.java +++ b/src/main/java/com/gaotao/modules/sys/service/impl/InterfaceLogServiceImpl.java @@ -518,25 +518,6 @@ public class InterfaceLogServiceImpl implements InterfaceLogService { return R.error("存在已传输的记录!"); } - // 校验StockTransactionLog的传输状态 - if (transactionId != null && !transactionId.isEmpty()) { - Map syncStatus = stockTransactionLogDao.getSyncStatus(site, buNo, transactionId); - if (syncStatus != null) { - String syncedFlag = syncStatus.get("syncedFlag") != null ? syncStatus.get("syncedFlag").toString() : ""; - String syncedErrorMsg = syncStatus.get("syncedErrorMsg") != null ? syncStatus.get("syncedErrorMsg").toString() : ""; - - // 传输状态必须是"待传输"(即synced_flag不为Y)且传输消息必须有值 - if ("Y".equalsIgnoreCase(syncedFlag)) { - logger.error("该记录已传输成功,不允许重试,syncedFlag: {}", syncedFlag); - return R.error("该记录已传输成功,不允许重试"); - } - if (syncedErrorMsg == null || syncedErrorMsg.trim().isEmpty()) { - logger.error("该记录没有错误信息,不允许重试"); - return R.error("该记录没有错误信息,不允许重试"); - } - } - } - logger.info("查询到接口名称: {}, transactionId: {}, 当前重试次数: {}", interfaceName, transactionId, retryCount); // 2. 查询api_Interface获取接口IP和路径 diff --git a/src/main/java/com/gaotao/modules/sys/service/impl/SystemLogServiceImpl.java b/src/main/java/com/gaotao/modules/sys/service/impl/SystemLogServiceImpl.java index 25a1b96..4a723ba 100644 --- a/src/main/java/com/gaotao/modules/sys/service/impl/SystemLogServiceImpl.java +++ b/src/main/java/com/gaotao/modules/sys/service/impl/SystemLogServiceImpl.java @@ -496,25 +496,6 @@ public class SystemLogServiceImpl implements SystemLogService { return R.error("存在已传输的记录!"); } - // 校验StockTransactionLog的传输状态 - if (transactionId != null && !transactionId.isEmpty()) { - Map syncStatus = stockTransactionLogDao.getSyncStatus(site, buNo, transactionId); - if (syncStatus != null) { - String syncedFlag = syncStatus.get("syncedFlag") != null ? syncStatus.get("syncedFlag").toString() : ""; - String syncedErrorMsg = syncStatus.get("syncedErrorMsg") != null ? syncStatus.get("syncedErrorMsg").toString() : ""; - - // 传输状态必须是"待传输"(即synced_flag不为Y)且传输消息必须有值 - if ("Y".equalsIgnoreCase(syncedFlag)) { - logger.error("该记录已传输成功,不允许重试,syncedFlag: {}", syncedFlag); - return R.error("该记录已传输成功,不允许重试"); - } - if (syncedErrorMsg == null || syncedErrorMsg.trim().isEmpty()) { - logger.error("该记录没有错误信息,不允许重试"); - return R.error("该记录没有错误信息,不允许重试"); - } - } - } - logger.info("查询到接口名称: {}, transactionId: {}, 当前重试次数: {}", interfaceName, transactionId, retryCount); // 2. 查询api_Interface获取接口IP和路径 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 198f8fc..29eed6e 100644 --- a/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java +++ b/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java @@ -58,5 +58,25 @@ public class LabelTransactionLogController extends AbstractController { return R.error("查询标签变动记录列表失败: " + e.getMessage()); } } + + /** + * 批量手动重试 + */ + @PostMapping("retry") + @SuppressWarnings("unchecked") + public R retry(@RequestBody Map params) { + try { + List> retryList = (List>) params.get("retryList"); + if (retryList == null || retryList.isEmpty()) { + return R.error("请选择要重试的记录"); + } + + Map result = labelTransactionLogService.batchRetry(retryList); + 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 6874b0f..cd6b59b 100644 --- a/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java +++ b/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java @@ -17,5 +17,10 @@ public interface LabelTransactionLogService { * 查询标签变动记录总数 */ int queryTotal(Map params); + + /** + * 批量手动重试 + */ + Map batchRetry(List> retryList); } 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 ff4ea32..2730fca 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 @@ -1,10 +1,15 @@ 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.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 java.util.HashMap; import java.util.List; import java.util.Map; @@ -14,9 +19,17 @@ import java.util.Map; @Service public class LabelTransactionLogServiceImpl implements LabelTransactionLogService { + private static final Logger logger = LoggerFactory.getLogger(LabelTransactionLogServiceImpl.class); + @Autowired private LabelTransactionLogMapper labelTransactionLogMapper; + @Autowired + private StockTransactionLogDao stockTransactionLogDao; + + @Autowired + private ErpInterfaceService erpInterfaceService; + @Override public List> queryList(Map params) { return labelTransactionLogMapper.queryList(params); @@ -26,5 +39,60 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic public int queryTotal(Map params) { return labelTransactionLogMapper.queryTotal(params); } + + @Override + public Map batchRetry(List> retryList) { + logger.info("批量手动重试开始,记录数: {}", retryList.size()); + + int successCount = 0; + int failureCount = 0; + + for (Map retryItem : retryList) { + String site = (String) retryItem.get("site"); + String buNo = (String) retryItem.get("buNo"); + String transactionId = (String) retryItem.get("transactionId"); + + try { + // 1. 校验StockTransactionLog的传输状态 + Map syncStatus = stockTransactionLogDao.getSyncStatus(site, buNo, transactionId); + if (syncStatus != null) { + String syncedFlag = syncStatus.get("syncedFlag") != null ? syncStatus.get("syncedFlag").toString() : ""; + String syncedErrorMsg = syncStatus.get("syncedErrorMsg") != null ? syncStatus.get("syncedErrorMsg").toString() : ""; + + // 传输状态必须是"待传输"(即synced_flag不为Y)且传输消息必须有值 + if ("Y".equalsIgnoreCase(syncedFlag)) { + logger.warn("该记录已传输成功,不允许重试,transactionId: {}", transactionId); + failureCount++; + continue; + } +// if (syncedErrorMsg == null || syncedErrorMsg.trim().isEmpty()) { +// logger.warn("该记录没有错误信息,不允许重试,transactionId: {}", transactionId); +// failureCount++; +// continue; +// } + } + + // 2. 调用ERP接口(参考PDA的异步调用方法) + logger.info("开始调用ERP接口,site: {}, buNo: {}, transactionId: {}", site, buNo, transactionId); + erpInterfaceService.asyncCallErpInterface(site, buNo, transactionId); + + successCount++; + logger.info("手动重试成功,transactionId: {}", transactionId); + + } catch (Exception e) { + logger.error("手动重试失败,transactionId: {}, error: {}", transactionId, e.getMessage(), e); + failureCount++; + } + } + + logger.info("批量手动重试完成,成功: {}, 失败: {}", successCount, failureCount); + + Map result = new HashMap<>(); + result.put("successCount", successCount); + result.put("failureCount", failureCount); + result.put("totalCount", retryList.size()); + + return result; + } }