Browse Source

2026-03-30

标签变动记录增加【异常关闭】功能
master
fengyuan_yang 3 months ago
parent
commit
b78c1cf25d
  1. 6
      src/main/java/com/gaotao/modules/sys/dao/InterfaceLogDao.java
  2. 21
      src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java
  3. 5
      src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java
  4. 53
      src/main/java/com/gaotao/modules/warehouse/service/impl/LabelTransactionLogServiceImpl.java
  5. 9
      src/main/resources/mapper/sys/InterfaceLogDao.xml

6
src/main/java/com/gaotao/modules/sys/dao/InterfaceLogDao.java

@ -93,6 +93,12 @@ public interface InterfaceLogDao extends BaseMapper<ApiLogEntity> {
@Param("message") String message, @Param("message") String message,
@Param("needRetryFlag") Integer needRetryFlag, @Param("needRetryFlag") Integer needRetryFlag,
@Param("lastResponseData") String lastResponseData); @Param("lastResponseData") String lastResponseData);
/**
* 根据transactionId关闭api_log记录用于异常关闭
*/
int closeApiLogByTransactionId(@Param("site") String site,
@Param("transactionId") String transactionId);
} }

21
src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java

@ -80,5 +80,26 @@ public class LabelTransactionLogController extends AbstractController {
return R.error("批量手动重试失败: " + e.getMessage()); return R.error("批量手动重试失败: " + e.getMessage());
} }
} }
/**
* 批量异常关闭
*/
@PostMapping("close")
@SuppressWarnings("unchecked")
public R close(@RequestBody Map<String, Object> params) {
try {
List<Map<String, Object>> closeList = (List<Map<String, Object>>) params.get("closeList");
if (closeList == null || closeList.isEmpty()) {
return R.error("请选择要关闭的记录");
}
Map<String, Object> result = labelTransactionLogService.batchClose(closeList);
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

@ -22,5 +22,10 @@ public interface LabelTransactionLogService {
* 批量手动重试 * 批量手动重试
*/ */
Map<String, Object> batchRetry(List<Map<String, Object>> retryList, boolean isExceptionRetry); Map<String, Object> batchRetry(List<Map<String, Object>> retryList, boolean isExceptionRetry);
/**
* 批量异常关闭
*/
Map<String, Object> batchClose(List<Map<String, Object>> closeList);
} }

53
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.erp.service.ErpInterfaceService;
import com.gaotao.modules.stock.dao.StockTransactionLogDao; 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.dao.LabelTransactionLogMapper;
import com.gaotao.modules.warehouse.service.LabelTransactionLogService; import com.gaotao.modules.warehouse.service.LabelTransactionLogService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -28,6 +30,9 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic
@Autowired @Autowired
private StockTransactionLogDao stockTransactionLogDao; private StockTransactionLogDao stockTransactionLogDao;
@Autowired
private InterfaceLogDao interfaceLogDao;
@Autowired @Autowired
private ErpInterfaceService erpInterfaceService; private ErpInterfaceService erpInterfaceService;
@ -117,5 +122,53 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic
return result; return result;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> batchClose(List<Map<String, Object>> closeList) {
logger.info("批量异常关闭开始,记录数: {}", closeList.size());
int successCount = 0;
int failureCount = 0;
List<Map<String, Object>> details = new ArrayList<>();
for (Map<String, Object> closeItem : closeList) {
String site = (String) closeItem.get("site");
String buNo = (String) closeItem.get("buNo");
String transactionId = (String) closeItem.get("transactionId");
Map<String, Object> detail = new HashMap<>();
detail.put("transactionId", transactionId);
try {
// 1. 更新StockTransactionLog表的synced_flag为'Y'
stockTransactionLogDao.updateSyncedSuccessBySiteAndTransactionId(site, transactionId);
// 2. 更新api_log表的need_retry_flag为0status_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<String, Object> result = new HashMap<>();
result.put("successCount", successCount);
result.put("failureCount", failureCount);
result.put("totalCount", closeList.size());
result.put("details", details);
return result;
}
} }

9
src/main/resources/mapper/sys/InterfaceLogDao.xml

@ -234,6 +234,15 @@
AND transaction_id = #{transactionId} AND transaction_id = #{transactionId}
</update> </update>
<!-- 根据transactionId关闭api_log记录(用于异常关闭) -->
<update id="closeApiLogByTransactionId">
UPDATE api_log
SET status_code = '200',
need_retry_flag = 0
WHERE site = #{site}
AND transaction_id = #{transactionId}
</update>
<!-- 查询接口配置信息 --> <!-- 查询接口配置信息 -->
<select id="queryApiInterface" resultType="com.gaotao.modules.sys.entity.ApiInterfaceEntity"> <select id="queryApiInterface" resultType="com.gaotao.modules.sys.entity.ApiInterfaceEntity">
SELECT SELECT

Loading…
Cancel
Save