1
huanghongfeng
2024-11-11 3ecd03b3a0a30a57153468beaed3199bfe906772
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -11,6 +11,7 @@
using Microsoft.Extensions.Logging;
using MailKit.Search;
using System.Reflection.Metadata;
using static WIDESEA_ITaskInfoService.ITaskService;
namespace WIDESEA_TaskInfoService
{
@@ -212,26 +213,27 @@
        /// </summary>
        /// <param name="PalletCode"></param>
        /// <returns></returns>
        public WebResponseContent GenerateInventoryInformation(string SourceAddress, string PalletCode)
        public WebResponseContent GenerateInventoryInformation(GenerateInv generate)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == PalletCode);
                Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == generate.PalletCode);
                if (task != null)
                {
                    return content = WebResponseContent.Instance.Error($"已有该托盘的入库任务,托盘号:{task.PalletCode}");
                }
                else
                {
                    Dt_StockInfo dt_StockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
                    if (dt_StockInfo == null)
                    Dt_StockInfo dt_StockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == generate.PalletCode);
                    if (dt_StockInfo != null)
                    {
                        Dt_LocationInfo newLocation;
                        Dt_LocationInfo newSourceAddress;
                        newSourceAddress = _basicService.LocationInfoService.GetLocationplatform(SourceAddress);
                        newSourceAddress = _basicService.LocationInfoService.GetLocationplatform(generate.SourceAddress);
                        newLocation = _basicService.LocationInfoService.GetLocation(newSourceAddress.RoadwayNo);
                        string[] Pallet = PalletCode.Split("-");
                        //string[] Pallet = PalletCode.Split("-");
                        if (newLocation != null && newSourceAddress != null)
                        {
@@ -239,7 +241,7 @@
                            //生成入库任务
                            Dt_Task dt_Task = new()
                            {
                                PalletCode = PalletCode,
                                PalletCode = generate.PalletCode,
                                TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                                Roadway = newLocation.RoadwayNo,
                                TaskType = newSourceAddress.LocationType == (int)LocationTypeEnum.EmptyOut ? TaskTypeEnum.PalletInbound.ObjToInt() : TaskTypeEnum.Inbound.ObjToInt(),
@@ -253,20 +255,6 @@
                                Depth = newLocation.Depth,
                                CreateDate = DateTime.Now,
                            };
                            Dt_StockInfo dt_Stock = new()
                            {
                                PalletCode = PalletCode,
                                LocationCode = newLocation.LocationCode,
                                IsFull = true,
                                StockStatus = (int)StockStatusEmun.组盘暂存,
                                Creater = "WMS",
                                CreateDate = DateTime.Now,
                                MaterialType = newSourceAddress.LocationType == (int)LocationTypeEnum.EmptyIn ? (int)InventoryMaterialType.空托:
                                (newSourceAddress.LocationType == (int)LocationTypeEnum.FinishedIn ? (int)InventoryMaterialType.成品: (int)InventoryMaterialType.原材料),
                                Materialweight = float.Parse(Pallet[3]),
                            };
                            _unitOfWorkManage.BeginTran();
                            if (newLocation.LocationStatus == LocationStatusEnum.Free.ObjToInt())
                            {
@@ -274,7 +262,8 @@
                            }
                            BaseDal.AddData(dt_Task);
                            _basicService.LocationInfoService.UpdateData(newLocation);
                            _stockService.StockInfoService.Repository.AddData(dt_Stock);
                           
                            _unitOfWorkManage.CommitTran();
@@ -282,13 +271,14 @@
                        }
                        else
                        {
                            return content = WebResponseContent.Instance.Error($"未找到对应的起点:{SourceAddress},或终点{newSourceAddress.RoadwayNo},信息");
                            return content = WebResponseContent.Instance.Error($"未找到对应的起点:{generate.SourceAddress},或终点{newSourceAddress.RoadwayNo},信息");
                        }
                    }
                    else
                    {
                        return content = WebResponseContent.Instance.Error($"该托盘号已入库,请核对托盘号:{PalletCode}");
                        Queryinventory(generate.PalletCode);
                        return content = WebResponseContent.Instance.Error($"组盘,请核对托盘号:{generate.PalletCode}");
                    }
                }
@@ -306,26 +296,62 @@
        /// <returns></returns>
        public WebResponseContent Queryinventory(string palletCode)
        {
            WebResponseContent content = new WebResponseContent();
            string[] targetCodes = palletCode.Split("-");
            if (targetCodes[2] == "2")
            try
            {
                List<Dt_LocationInfo> LocationInfo = _basicService.LocationInfoService.Repository.QueryData(x => x.RoadwayNo == "2" && x.LocationType == (int)LocationStatusEnum.Free).ToList();
                if (LocationInfo.Count < 40)
                WebResponseContent content = new WebResponseContent();
                string result = palletCode.Substring(0, 2);
                Dt_InboundOrder dt_Inbound = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.UpperOrderNo == result);
                if (dt_Inbound != null)
                {
                    Dt_StockInfo dt_Stock = new()
                    {
                        PalletCode = palletCode,
                        IsFull = true,
                        StockStatus = (int)StockStatusEmun.组盘暂存,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
                        MaterialType = (int)InventoryMaterialType.原材料,
                        Materialweight = 0,
                    };
                    _unitOfWorkManage.BeginTran();
                    _stockService.StockInfoService.Repository.AddData(dt_Stock);
                    if (dt_Stock.Id != null)
                    {
                        string part2 = palletCode.Substring(2, 8);
                        string part3 = palletCode.Split('#')[1];
                        Dt_StockInfoDetail dt_StockInfoDetail = new()
                        {
                            StockId = dt_Stock.Id,
                            MaterielCode = result,    //物料编号
                            MaterielName = dt_Inbound.OrderNo,    //材质
                            OrderNo = palletCode,        //单据(托盘条码)
                            BatchNo = part2,         //批次号
                            SerialNumber = part3,    //序列号
                            StockQuantity = 1,    //序列号
                            OutboundQuantity = 1,    //序列号
                            Status = (int)StockStatusEmun.组盘暂存,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                        };
                        _stockService.StockInfoDetailService.AddData(dt_StockInfoDetail);
                    }
                    _unitOfWorkManage.CommitTran();
                    return content = WebResponseContent.Instance.OK();
                }
                else
                {
                    return content = WebResponseContent.Instance.Error();
                    return content = WebResponseContent.Instance.Error("未找到该类型的解析");
                }
            }
            else
            catch (Exception ex)
            {
                return content = WebResponseContent.Instance.OK();
                throw;
            }
        }
    }
}