From 0bcf74c608983957b2f89336cb8f6b3790140f53 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 16 Apr 2026 15:46:39 +0800 Subject: [PATCH] =?UTF-8?q?2026-04-16=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LabelTransactionLogController.java | 22 ++++++ .../dao/LabelTransactionLogMapper.java | 5 ++ .../service/LabelTransactionLogService.java | 5 ++ .../impl/LabelTransactionLogServiceImpl.java | 70 +++++++++++++++++++ .../warehouse/LabelTransactionLogMapper.xml | 11 +++ 5 files changed, 113 insertions(+) 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 5a0c323..137a3b0 100644 --- a/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java +++ b/src/main/java/com/gaotao/modules/warehouse/controller/LabelTransactionLogController.java @@ -101,5 +101,27 @@ public class LabelTransactionLogController extends AbstractController { return R.error("批量异常关闭失败: " + e.getMessage()); } } + + /** + * 批量单据回冲 + */ + @PostMapping("reverse") + @SuppressWarnings("unchecked") + public R reverse(@RequestBody Map params) { + try { + List> reverseList = (List>) params.get("reverseList"); + String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername(); + + if (reverseList == null || reverseList.isEmpty()) { + return R.error("请选择要回冲的记录"); + } + + Map result = labelTransactionLogService.batchReverse(reverseList, username); + 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/dao/LabelTransactionLogMapper.java b/src/main/java/com/gaotao/modules/warehouse/dao/LabelTransactionLogMapper.java index 57f85e4..4df7bdd 100644 --- a/src/main/java/com/gaotao/modules/warehouse/dao/LabelTransactionLogMapper.java +++ b/src/main/java/com/gaotao/modules/warehouse/dao/LabelTransactionLogMapper.java @@ -21,5 +21,10 @@ public interface LabelTransactionLogMapper { * 查询标签变动记录总数 */ int queryTotal(@Param("query") Map params); + + /** + * 调用单据回冲存储过程 + */ + List> reverseInboundByTransaction(Map params); } 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 11c43c2..06e64be 100644 --- a/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java +++ b/src/main/java/com/gaotao/modules/warehouse/service/LabelTransactionLogService.java @@ -27,5 +27,10 @@ public interface LabelTransactionLogService { * 批量异常关闭 */ Map batchClose(List> closeList); + + /** + * 批量单据回冲 + */ + Map batchReverse(List> reverseList, String username); } 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 e6caa96..48e36bb 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 @@ -170,5 +170,75 @@ public class LabelTransactionLogServiceImpl implements LabelTransactionLogServic return result; } + + @Override + public Map batchReverse(List> reverseList, String username) { + logger.info("批量单据回冲开始,记录数: {}", reverseList.size()); + + int successCount = 0; + int failureCount = 0; + List> details = new ArrayList<>(); + + for (Map reverseItem : reverseList) { + String site = (String) reverseItem.get("site"); + String buNo = (String) reverseItem.get("buNo"); + String transactionId = (String) reverseItem.get("transactionId"); + String transactionType = (String) reverseItem.get("documentType"); + + Map detail = new HashMap<>(); + detail.put("transactionId", transactionId); + + try { + Map params = new HashMap<>(); + params.put("site", site); + params.put("buNo", buNo); + params.put("transactionId", transactionId); + params.put("transactionType", transactionType); + params.put("username", username); + + // 调用存储过程 + List> resultList = labelTransactionLogMapper.reverseInboundByTransaction(params); + + if (resultList != null && !resultList.isEmpty()) { + Map spResult = resultList.get(0); + String resultCode = spResult.get("resultCode") != null ? spResult.get("resultCode").toString() : ""; + String resultMsg = spResult.get("resultMsg") != null ? spResult.get("resultMsg").toString() : ""; + + if ("200".equals(resultCode)) { + successCount++; + detail.put("status", "success"); + detail.put("message", resultMsg); + logger.info("单据回冲成功,transactionId: {}", transactionId); + } else { + failureCount++; + detail.put("status", "failure"); + detail.put("message", resultMsg); + logger.warn("单据回冲失败,transactionId: {}, 错误: {}", transactionId, resultMsg); + } + } else { + failureCount++; + detail.put("status", "failure"); + detail.put("message", "存储过程未返回结果"); + logger.warn("单据回冲失败,transactionId: {}, 错误: 存储过程未返回结果", transactionId); + } + } catch (Exception e) { + logger.error("单据回冲异常,transactionId: {}, error: {}", transactionId, e.getMessage(), e); + detail.put("status", "error"); + detail.put("message", "回冲异常: " + e.getMessage()); + failureCount++; + } + details.add(detail); + } + + logger.info("批量单据回冲完成,成功: {}, 失败: {}", successCount, failureCount); + + Map result = new HashMap<>(); + result.put("successCount", successCount); + result.put("failureCount", failureCount); + result.put("totalCount", reverseList.size()); + result.put("details", details); + + return result; + } } diff --git a/src/main/resources/mapper/warehouse/LabelTransactionLogMapper.xml b/src/main/resources/mapper/warehouse/LabelTransactionLogMapper.xml index 84b9445..1241c28 100644 --- a/src/main/resources/mapper/warehouse/LabelTransactionLogMapper.xml +++ b/src/main/resources/mapper/warehouse/LabelTransactionLogMapper.xml @@ -160,5 +160,16 @@ + + +