From fcdbb4d6cc8eb3629b871a4945ff2da599d64107 Mon Sep 17 00:00:00 2001
From: pan <antony1029@163.com>
Date: 星期六, 29 十一月 2025 17:51:43 +0800
Subject: [PATCH] 提交
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundBatchPickingController.cs | 198 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 197 insertions(+), 1 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundBatchPickingController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundBatchPickingController.cs"
index f481cc3..563ca1d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundBatchPickingController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundBatchPickingController.cs"
@@ -1,7 +1,10 @@
锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Outbound;
using WIDESEA_IOutboundService;
using WIDESEA_Model.Models;
+using static WIDESEA_OutboundService.OutboundBatchPickingService;
namespace WIDESEA_WMSServer.Controllers.Outbound
{
@@ -12,10 +15,203 @@
{
private readonly ISplitPackageService _splitPackageService;
private readonly IOutStockLockInfoService _outStockLockInfoService;
- public OutboundBatchPickingController(IOutboundBatchPickingService service, ISplitPackageService splitPackageService, IOutStockLockInfoService outStockLockInfoService) : base(service)
+ private readonly IOutboundBatchPickingService _outboundBatchPickingService;
+
+ private readonly ILogger<OutboundBatchPickingController> _logger;
+ public OutboundBatchPickingController(IOutboundBatchPickingService service, ISplitPackageService splitPackageService, IOutStockLockInfoService outStockLockInfoService, IOutboundBatchPickingService outboundBatchPickingService, ILogger<OutboundBatchPickingController> logger) : base(service)
{
_splitPackageService = splitPackageService;
_outStockLockInfoService = outStockLockInfoService;
+ _outboundBatchPickingService = outboundBatchPickingService;
+ _logger = logger;
+ }
+
+ /// <summary>
+ /// 鍒嗘嫞纭
+ /// </summary>
+ [HttpPost("confirm-picking")]
+ public async Task<WebResponseContent> ConfirmPicking([FromBody] ConfirmPickingDto dto)
+ {
+ return await _outboundBatchPickingService.ConfirmBatchPicking(dto.OrderNo, dto.PalletCode, dto.Barcode);
+ }
+
+ /// <summary>
+ /// 鍙栨秷鍒嗘嫞
+ /// </summary>
+ [HttpPost("cancel-picking")]
+ public async Task<WebResponseContent> CancelPicking([FromBody] CancelPickingDto dto)
+ {
+ return await _outboundBatchPickingService.CancelPicking(dto.OrderNo, dto.PalletCode, dto.Barcode);
+ }
+ /// <summary>
+ /// 鍙栨秷鎷嗗寘閾�
+ /// </summary>
+ [HttpPost("cancel-split-chain")]
+ public async Task<WebResponseContent> CancelSplitChain([FromBody] CancelSplitChainDto dto)
+ {
+ return await _outboundBatchPickingService.CancelSplitPackageChain(dto.OrderNo, dto.PalletCode, dto.StartBarcode);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎷嗗寘閾句俊鎭�
+ /// </summary>
+ [HttpPost("split-package-chain-info")]
+ public async Task<WebResponseContent> GetSplitPackageChainInfo([FromBody] SplitPackageChainInfoRequestDto dto)
+ {
+ return await _outboundBatchPickingService.GetSplitPackageChainInfo(dto.OrderNo, dto.Barcode);
+ }
+ /// <summary>
+ /// 鏌ユ壘瀹屾暣鎷嗗寘閾撅紙浠庢牴鏉$爜寮�濮嬶級
+ /// </summary>
+ [HttpPost("find-root-split-chain")]
+ public async Task<WebResponseContent> FindRootSplitChain([FromBody] SplitPackageChainInfoRequestDto dto)
+ {
+ try
+ {
+ // 鏌ユ壘鏍规潯鐮�
+ var rootBarcode = await _outboundBatchPickingService. FindRootBarcode(dto.OrderNo, dto.Barcode);
+
+ // 鑾峰彇瀹屾暣鎷嗗寘閾�
+ var splitChain = await _outboundBatchPickingService.GetSplitPackageChain(dto.OrderNo, rootBarcode);
+
+ var chainInfo = new SplitPackageChainInfoDto
+ {
+ OriginalBarcode = rootBarcode,
+ RootBarcode = rootBarcode,
+ TotalSplitTimes = splitChain.Count,
+ ChainType = "root",
+ SplitChain = splitChain.Select(x => new SplitChainItemDto
+ {
+ SplitTime = x.SplitTime,
+ OriginalBarcode = x.OriginalBarcode,
+ NewBarcode = x.NewBarcode,
+ SplitQuantity = x.SplitQty,
+ Operator = x.Operator,
+ IsReverted = x.IsReverted
+ }).ToList()
+ };
+
+ return WebResponseContent.Instance.OK("鑾峰彇鎴愬姛", chainInfo);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError($"鏌ユ壘瀹屾暣鎷嗗寘閾惧け璐� - OrderNo: {dto.OrderNo}, Barcode: {dto.Barcode}, Error: {ex.Message}");
+ return WebResponseContent.Instance.Error("鏌ユ壘瀹屾暣鎷嗗寘閾惧け璐�");
+ }
+ }
+ /// <summary>
+ /// 鎵嬪姩鎷嗗寘
+ /// </summary>
+ [HttpPost("split-package")]
+ public async Task<WebResponseContent> SplitPackage([FromBody] SplitPackageDto dto)
+ {
+ return await _outboundBatchPickingService.ManualSplitPackage(dto.OrderNo, dto.PalletCode, dto.OriginalBarcode, dto.SplitQuantity);
+ }
+ /// <summary>
+ /// 鍙栨秷鎷嗗寘
+ /// </summary>
+ [HttpPost("cancel-split")]
+ public async Task<WebResponseContent> CancelSplit([FromBody] CancelSplitDto dto)
+ {
+ return await _outboundBatchPickingService.CancelSplitPackage(dto.OrderNo, dto.PalletCode, dto.NewBarcode);
+ }
+
+ /// <summary>
+ /// 鍒嗘壒鍥炲簱
+ /// </summary>
+ [HttpPost("return-stock")]
+ public async Task<WebResponseContent> ReturnStock([FromBody] ReturnStockDto dto)
+ {
+ return await _outboundBatchPickingService.BatchReturnStock(dto.OrderNo, dto.PalletCode);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鐨勯攣瀹氫俊鎭�
+ /// </summary>
+ [HttpPost("pallet-locks")]
+ public async Task<WebResponseContent> GetPalletLocks([FromBody] PalletLocksDto dto)
+ {
+ try
+ {
+ var locks = await _outboundBatchPickingService.GetPalletLockInfos(dto.OrderNo, dto.PalletCode);
+ return WebResponseContent.Instance.OK("鑾峰彇鎴愬姛", locks);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, $"鑾峰彇鎵樼洏閿佸畾淇℃伅寮傚父 - OrderNo: {dto.OrderNo}, PalletCode: {dto.PalletCode}");
+ return WebResponseContent.Instance.Error("绯荤粺寮傚父锛岃绋嶅悗閲嶈瘯" + ex.Message);
+ }
+ }
+ /// <summary>
+ /// 鑾峰彇宸叉嫞閫夊垪琛�
+ /// </summary>
+ [HttpPost("pallet-picked-list")]
+ public async Task<WebResponseContent> GetPalletPickedList([FromBody] PalletLocksDto dto)
+ {
+ try
+ {
+ var pickedList = await _outboundBatchPickingService.GetPalletPickedList(dto.OrderNo, dto.PalletCode);
+ return WebResponseContent.Instance.OK("鑾峰彇鎴愬姛", pickedList);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, $"鑾峰彇宸叉嫞閫夊垪琛ㄥ紓甯� - OrderNo: {dto.OrderNo}, PalletCode: {dto.PalletCode}");
+ return WebResponseContent.Instance.Error("绯荤粺寮傚父锛岃绋嶅悗閲嶈瘯" + ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鐘舵��
+ /// </summary>
+ [HttpPost("pallet-status")]
+ public async Task<WebResponseContent> GetPalletStatus([FromBody] PalletLocksDto dto)
+ {
+ try
+ {
+ var status = await _outboundBatchPickingService.GetPalletStatus(dto.OrderNo, dto.PalletCode);
+ return WebResponseContent.Instance.OK("鑾峰彇鎴愬姛", status);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, $"鑾峰彇鎵樼洏鐘舵�佸紓甯� - OrderNo: {dto.OrderNo}, PalletCode: {dto.PalletCode}");
+ return WebResponseContent.Instance.Error("绯荤粺寮傚父锛岃绋嶅悗閲嶈瘯" + ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎷嗗寘淇℃伅
+ /// </summary>
+ [HttpPost("split-package-info")]
+ public async Task<WebResponseContent> GetSplitPackageInfo([FromBody] SplitPackageInfoDto dto)
+ {
+ try
+ {
+ var info = await _outboundBatchPickingService.GetSplitPackageInfo(dto.OrderNo, dto.PalletCode, dto.Barcode);
+ return WebResponseContent.Instance.OK("鑾峰彇鎴愬姛", info);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, $"鑾峰彇鎷嗗寘淇℃伅寮傚父 - OrderNo: {dto.OrderNo}, PalletCode: {dto.PalletCode}, Barcode: {dto.Barcode}");
+ return WebResponseContent.Instance.Error("绯荤粺寮傚父锛岃绋嶅悗閲嶈瘯" +ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鍙栬蛋绌虹
+ /// </summary>
+ [HttpPost("remove-empty-pallet")]
+ public async Task<WebResponseContent> RemoveEmptyPallet([FromBody] RemoveEmptyPalletDto dto)
+ {
+ try
+ {
+ var result = await _outboundBatchPickingService.RemoveEmptyPallet(dto.OrderNo, dto.PalletCode);
+ return result;
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, $"鍙栬蛋绌虹寮傚父 - OrderNo: {dto.OrderNo}, PalletCode: {dto.PalletCode}");
+ return WebResponseContent.Instance.Error("绯荤粺寮傚父锛岃绋嶅悗閲嶈瘯" +ex.Message);
+ }
}
}
--
Gitblit v1.9.3