pan
2025-11-29 fcdbb4d6cc8eb3629b871a4945ff2da599d64107
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderGetDTO.cs
@@ -1,8 +1,12 @@
using System;
using Microsoft.AspNetCore.Components.Forms;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Model.Models;
namespace WIDESEA_DTO.Outbound
{
@@ -12,17 +16,62 @@
        public int pageNo { get; set; }
    }
    // æ‹†åŒ…链DTO
    public class SplitPackageChainDto
    {
        public int Id { get; set; }
        public DateTime SplitTime { get; set; }
        public string Operator { get; set; }
        public string OriginalBarcode { get; set; }
        public string NewBarcode { get; set; }
        public decimal SplitQty { get; set; }
        public decimal RemainQuantity { get; set; }
        public bool IsReverted { get; set; }
        public DateTime? RevertTime { get; set; }
        public int? PreviousSplitRecordId { get; set; }
        public int NewLockInfoId { get; set; }
        public int Status { get; set; }
    }
    // æ‹†åŒ…请求
    public class SplitPackageRequest
    {
        public int OutStockLockInfoId { get; set; }
        public string MaterielCode { get; set; }
        public decimal SplitQuantity { get; set; }
        public string Operator { get; set; }
    }
        [Required(ErrorMessage = "订单号不能为空")]
        public string OrderNo { get; set; }
        [Required(ErrorMessage = "托盘号不能为空")]
        public string PalletCode { get; set; }
        [Required(ErrorMessage = "原条码不能为空")]
        public string OriginalBarcode { get; set; }
        [Range(0.001, double.MaxValue, ErrorMessage = "拆包数量必须大于0")]
        public decimal SplitQuantity { get; set; }
    }
    public class ConfirmPickingDto
    {
        [JsonProperty("orderNo")]
        public string OrderNo { get; set; }
        [JsonProperty("palletCode")]
        public string PalletCode { get; set; }
        [JsonProperty("barcode")]
        public string Barcode { get; set; }
    }
    public class SummaryPickingDto
    {
        public string PalletCode { get; set; }
        public string MaterielCode { get; set; }
        public int UnpickedCount { get; set; }
        public decimal UnpickedQuantity { get; set; }
        public int pickedCount { get; set; }
    }
    public class PickingConfirmRequest
    {
        public int OrderDetailId { get; set; }
@@ -33,17 +82,15 @@
        public string PalletCode { get; set; }
        public int StockId { get; set; } // åº“å­˜ID
        public int OutStockLockInfoId { get; set; } // å‡ºåº“锁定信息ID
    }
    }
    public class DirectOutboundRequest
    {
        public string PalletCode { get; set; }
        public string OrderNo { get; set; }
    }
    public class CancelPickingRequest
    {
        public int PickingHistoryId { get; set; }
    }
    public class BackToStockRequest
    {
@@ -59,4 +106,228 @@
        public string TargetLocation { get; set; }
        public DateTime CompleteTime { get; set; }
    }
    public class InputDto { }
    public class OutputDto { }
    #region å…¥å‚DTO
    public class ScanCodeValidateInput : InputDto
    {
        public string ScanCode { get; set; } = string.Empty; // æ‰«æçš„æ¡ç 
        public string OrderNo { get; set; } = string.Empty; // å‡ºåº“单号
    }
    public class PickingConfirmInput : InputDto
    {
        public string TaskNum { get; set; } = string.Empty; // ä»»åŠ¡å·
        public string PalletCode { get; set; } = string.Empty; // æ‰˜ç›˜ç 
        public string MaterielBarcode { get; set; } = string.Empty; // ç‰©æ–™æ¡ç 
    }
    public class SplitPackageInput : InputDto
    {
        public long OutStockLockId { get; set; } // å¾…拆分的出库详情ID
        public string NewBarcode { get; set; } = string.Empty; // æ–°æ¡ç 
        public decimal SplitQty { get; set; } // æ–°æ¡ç åˆ†é…æ•°é‡
    }
    public class StockReturnInput : InputDto
    {
        public string OrderNo { get; set; } = string.Empty; // å‡ºåº“单号
        public string TaskNum { get; set; } = string.Empty; // ä»»åŠ¡å·ï¼ˆå¯é€‰ï¼‰
    }
    public class OutStockLockDetailInput : InputDto
    {
        public long OutStockLockId { get; set; } // å‡ºåº“详情ID
    }
    #endregion
    #region å‡ºå‚DTO
    //[AutoMapFrom(typeof(OutStockLockInfo))]
    public class OutStockLockInfoOutput : OutputDto
    {
        public string TaskNum { get; set; } = string.Empty;
        public string PalletCode { get; set; } = string.Empty;
        public string CurrentBarcode { get; set; } = string.Empty;
        public decimal AssignQuantity { get; set; }
        public decimal PickedQty { get; set; }
        public int Status { get; set; }
        public bool IsSplitted { get; set; }
    }
    //[AutoMapFrom(typeof(OutStockLockInfo))]
    public class OutStockLockDetailOutput : OutputDto
    {
        public string CurrentBarcode { get; set; } = string.Empty;
        public decimal AssignQuantity { get; set; }
    }
    public class LockInfoDetailDto : Dt_OutStockLockInfo
    {
        public string MaterielName { get; set; }
        public string Unit { get; set; }
    }
    public class MaterielBarcodeValidateOutput : OutputDto
    {
        public bool IsValid { get; set; }
        public long OutStockLockId { get; set; }
        public decimal PackageQty { get; set; } // åˆ†é…æ•°é‡
        public string Message { get; set; } = string.Empty;
    }
    //[AutoMapFrom(typeof(PickingRecord))]
    public class PickingRecordOutput : OutputDto
    {
        public string Barcode { get; set; } = string.Empty;
        public string PalletCode { get; set; } = string.Empty;
        public decimal PickQuantity { get; set; }
        public string PickTime { get; set; } = string.Empty;
    }
    #endregion
    public class ScanCodeValidateReq
    {
        public string ScanCode { get; set; } = string.Empty; // æ‰«æçš„æ¡ç 
        public string OrderNo { get; set; } = string.Empty; // å‡ºåº“单号
    }
    public class PickingConfirmReq
    {
        public string TaskNum { get; set; } = string.Empty; // ä»»åŠ¡å·
        public string PalletCode { get; set; } = string.Empty; // æ‰˜ç›˜ç 
        public string MaterielBarcode { get; set; } = string.Empty; // ç‰©æ–™æ¡ç 
    }
    public class SplitPackageReq
    {
        public long OutStockLockId { get; set; } // å¾…拆分的出库详情ID
        public string NewBarcode { get; set; } = string.Empty; // æ–°æ¡ç 
        public decimal SplitQty { get; set; } // æ–°æ¡ç åˆ†é…æ•°é‡
    }
    public class StockReturnReq
    {
        public string OrderNo { get; set; } = string.Empty; // å‡ºåº“单号
        public string TaskNum { get; set; } = string.Empty; // ä»»åŠ¡å·ï¼ˆå¯é€‰ï¼‰
    }
    public class OutStockLockDetailReq
    {
        public long OutStockLockId { get; set; } // å‡ºåº“详情ID
    }
    public class MaterielBarcodeValidateResp
    {
        public bool IsValid { get; set; }
        public long OutStockLockId { get; set; }
        public decimal PackageQty { get; set; } // æ•´åŒ…数量(分配数量)
        public string Message { get; set; } = string.Empty;
    }
    public class OutStockLockDetailResp
    {
        public string CurrentBarcode { get; set; } = string.Empty;
        public decimal AssignQuantity { get; set; }
    }
    public class OutStockLockListResp
    {
        public long Id { get; set; }
        public string TaskNum { get; set; } = string.Empty;
        public string PalletCode { get; set; } = string.Empty;
        public string CurrentBarcode { get; set; } = string.Empty;
        public decimal AssignQuantity { get; set; }
        public decimal PickedQty { get; set; }
        public int Status { get; set; }
        public bool IsSplitted { get; set; }
    }
    public class PickedRecordListResp
    {
        public string barcode { get; set; } = string.Empty;
        public string palletCode { get; set; } = string.Empty;
        public decimal pickQuantity { get; set; }
        public string pickTime { get; set; } = string.Empty;
    }
    public class CancelPickingDto
    {
        public string OrderNo { get; set; }
        public string PalletCode { get; set; }
        public string Barcode { get; set; }
    }
    public class CancelSplitChainDto
    {
        [Required(ErrorMessage = "订单号不能为空")]
        public string OrderNo { get; set; }
        [Required(ErrorMessage = "托盘号不能为空")]
        public string PalletCode { get; set; }
        [Required(ErrorMessage = "起始条码不能为空")]
        public string StartBarcode { get; set; }
    }
    public class SplitPackageChainInfoRequestDto
    {
        [Required(ErrorMessage = "订单号不能为空")]
        public string OrderNo { get; set; }
        [Required(ErrorMessage = "条码不能为空")]
        public string Barcode { get; set; }
    }
    public class SplitPackageDto
    {
        public string OrderNo { get; set; }
        public string PalletCode { get; set; }
        public string OriginalBarcode { get; set; }
        public decimal SplitQuantity { get; set; }
        public string MaterielCode { get; set; }
    }
    public class RevertSplitDto
    {
        public string OriginalBarcode { get; set; }
    }
    // æ‹†åŒ…结果类
    public class SplitResult
    {
        public string materialCode { get; set; }
        public string supplierCode { get; set; }
        public string quantityTotal { get; set; }
        public string batchNumber { get; set; }
        public string  batch { get; set; }
        public string factory { get; set; }
        public string date { get; set; }
       // public string OriginalBarcode { get; set; }
       // public string NewBarcode { get; set; }
        //public decimal SplitQuantity { get; set; }
        //public decimal RemainQuantity { get; set; }
    }
}