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("needRetryFlag") Integer needRetryFlag,
@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());
}
}
/**
* 批量异常关闭
*/
@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> 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.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<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}
</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

Loading…
Cancel
Save