| | |
| | | using 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 |
| | | { |
| | |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | } |