Browse Source

2026-01-22

标签变动记录页面增加【手动重试】
master
fengyuan_yang 1 month ago
parent
commit
0011d02a30
  1. 19
      src/main/java/com/gaotao/modules/sys/service/impl/InterfaceLogServiceImpl.java
  2. 19
      src/main/java/com/gaotao/modules/sys/service/impl/SystemLogServiceImpl.java
  3. 20
      src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java
  4. 5
      src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java
  5. 68
      src/main/java/com/gaotao/modules/warehouse/service/impl/LabelTransactionLogServiceImpl.java

19
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<String, Object> 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和路径

19
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<String, Object> 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和路径

20
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<String, Object> params) {
try {
List<Map<String, Object>> retryList = (List<Map<String, Object>>) params.get("retryList");
if (retryList == null || retryList.isEmpty()) {
return R.error("请选择要重试的记录");
}
Map<String, Object> result = labelTransactionLogService.batchRetry(retryList);
return R.ok().put("code", 0).put("result", result);
} catch (Exception e) {
logger.error("批量手动重试失败", e);
return R.error("批量手动重试失败: " + e.getMessage());
}
}
}

5
src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java

@ -17,5 +17,10 @@ public interface LabelTransactionLogService {
* 查询标签变动记录总数
*/
int queryTotal(Map<String, Object> params);
/**
* 批量手动重试
*/
Map<String, Object> batchRetry(List<Map<String, Object>> retryList);
}

68
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<Map<String, Object>> queryList(Map<String, Object> params) {
return labelTransactionLogMapper.queryList(params);
@ -26,5 +39,60 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic
public int queryTotal(Map<String, Object> params) {
return labelTransactionLogMapper.queryTotal(params);
}
@Override
public Map<String, Object> batchRetry(List<Map<String, Object>> retryList) {
logger.info("批量手动重试开始,记录数: {}", retryList.size());
int successCount = 0;
int failureCount = 0;
for (Map<String, Object> retryItem : retryList) {
String site = (String) retryItem.get("site");
String buNo = (String) retryItem.get("buNo");
String transactionId = (String) retryItem.get("transactionId");
try {
// 1. 校验StockTransactionLog的传输状态
Map<String, Object> 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<String, Object> result = new HashMap<>();
result.put("successCount", successCount);
result.put("failureCount", failureCount);
result.put("totalCount", retryList.size());
return result;
}
}
Loading…
Cancel
Save