1
Administrator
2025-01-24 45d3d62c44fc1169f997dfd0411832d8e9459f0c
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -75,10 +75,14 @@
        private readonly ILocationInfoService _locationInfoService;
        private readonly ITaskService _taskService;
        private readonly IMaterielInfoService _materielInfoService;
        private readonly IInboundOrder_HtyService _inboundOrder_HtyService;
        private readonly IInboundOrderDetail_HtyService _inboundOrderDetail_HtyService;
        private readonly IOutboundOrder_HtyService _outboundOrder_HtyService;
        private readonly IOutboundOrderDetail_HtyService _outboundOrderDetail_HtyService;
        public ITaskRepository Repository => BaseDal;
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService) : base(BaseDal)
        {
            _mapper = mapper;
            _stockRepository = stockRepository;
@@ -92,6 +96,11 @@
            _locationInfoService = locationInfoService;
            _inboundOrderDetailService = inboundOrderDetailService;
            _materielInfoService = materielInfoService;
            _inboundOrder_HtyService = inboundOrder_HtyService;
            _inboundOrderDetail_HtyService = inboundOrderDetail_HtyService;
            _outboundOrder_HtyService = outboundOrder_HtyService;
            _outboundOrderDetail_HtyService = outboundOrderDetail_HtyService;
        }
        public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
@@ -150,10 +159,10 @@
                    return WebResponseContent.Instance.Error($"未找到托盘对应的组盘信息");
                }
                if (!string.IsNullOrEmpty(dt_StockInfo.LocationCode))
                {
                    return WebResponseContent.Instance.Error($"该托盘已绑定货位");
                }
                //if (!string.IsNullOrEmpty(dt_StockInfo.LocationCode))
                //{
                //    return WebResponseContent.Instance.Error($"该托盘已绑定货位");
                //}
                if (dt_StockInfo.Details == null || dt_StockInfo.Details.Count == 0)
                {
@@ -165,10 +174,10 @@
                    return WebResponseContent.Instance.Error($"未找到目标货位信息");
                }
                if (dt_LocationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"货位状态不正确");
                }
                //if (dt_LocationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                //{
                //    return WebResponseContent.Instance.Error($"货位状态不正确");
                //}
                int lastStatus = dt_LocationInfo.LocationStatus;
                dt_LocationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
@@ -198,42 +207,45 @@
                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(dt_StockInfo, dt_StockInfo.Details, dt_StockInfo.Details.Sum(x => x.StockQuantity), dt_StockInfo.Details.Sum(x => x.StockQuantity), StockChangeType.Inbound);
                _unitOfWorkManage.CommitTran();
                Dt_StockInfoDetail stockInfoDetail = _stockRepository.StockInfoDetailRepository.Db.Queryable<Dt_StockInfoDetail>().Where(x => x.StockId == dt_StockInfo.Id).First();
                Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderNo == stockInfoDetail.OrderNo).First();
                Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderNo == stockInfoDetail.OrderNo).Includes(x => x.Details).First();
                Dt_InboundOrderDetail inboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.OrderId == inboundOrder.Id);
                Dt_InboundOrder_Hty inboundOrder_Hty = new Dt_InboundOrder_Hty
                {
                    OrderStatus = inboundOrder.OrderStatus,
                    CreateType = inboundOrder.CreateType,
                    //SourceId = oldOutboundOrder.SourceId,
                    UpperOrderNo = inboundOrder.UpperOrderNo,
                    OrderNo = inboundOrder.OrderNo,
                    OutWareHouse = inboundOrder.OutWareHouse,
                    TransactionCode = inboundOrder.TransactionCode,
                    InoutType = inboundOrder.InoutType,
                    OrderType = inboundOrder.OrderType,
                    Creater = "WMS",
                    CreateDate = DateTime.Now,
                };
                _inboundService.InboundOrder_HtyService.AddData(inboundOrder_Hty);
                Dt_InboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_InboundOrderDetail_Hty
                {
                    OrderId = inboundOrderDetail.OrderId,
                    MaterielCode = inboundOrderDetail.MaterielCode,
                    MaterielName = inboundOrderDetail.MaterielName,
                    BatchNo = inboundOrderDetail.BatchNo,
                    OrderQuantity = inboundOrderDetail.OrderQuantity,
                    ReceiptQuantity = inboundOrderDetail.ReceiptQuantity,
                    OverInQuantity = inboundOrderDetail.OverInQuantity,
                    OrderDetailStatus = inboundOrderDetail.OrderDetailStatus,
                };
                _inboundService.InboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
                _inboundService.InbounOrderService.DeleteData(inboundOrder);
                _inboundService.InboundOrderDetailService.DeleteData(inboundOrderDetail);
                if (inboundOrder.OrderType == 0)
                {
                    if (inboundOrder.Details.Count == 1)
                    {
                        Dt_InboundOrder_Hty inboundOrder_Hty = new Dt_InboundOrder_Hty
                        {
                            OrderStatus = inboundOrder.OrderStatus,
                            CreateType = inboundOrder.CreateType,
                            //SourceId = oldOutboundOrder.SourceId,
                            UpperOrderNo = inboundOrder.UpperOrderNo,
                            OrderNo = inboundOrder.OrderNo,
                            OutWareHouse = inboundOrder.OutWareHouse,
                            TransactionCode = inboundOrder.TransactionCode,
                            InoutType = inboundOrder.InoutType,
                            OrderType = inboundOrder.OrderType,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                        };
                        _inboundOrder_HtyService.AddData(inboundOrder_Hty);
                        _inboundService.InbounOrderService.DeleteData(inboundOrder);
                    }
                    Dt_InboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_InboundOrderDetail_Hty
                    {
                        OrderId = inboundOrderDetail.OrderId,
                        MaterielCode = inboundOrderDetail.MaterielCode,
                        MaterielName = inboundOrderDetail.MaterielName,
                        BatchNo = inboundOrderDetail.BatchNo,
                        OrderQuantity = inboundOrderDetail.OrderQuantity,
                        ReceiptQuantity = inboundOrderDetail.ReceiptQuantity,
                        OverInQuantity = inboundOrderDetail.OverInQuantity,
                        OrderDetailStatus = inboundOrderDetail.OrderDetailStatus,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
                    };
                    _inboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
                    _inboundService.InboundOrderDetailService.DeleteData(inboundOrderDetail);
                    HouseInboundPassBack houseInboundPassBack = new HouseInboundPassBack();
                    houseInboundPassBack.ApiType = "AsnController";
                    houseInboundPassBack.Method = "AsrsGroudingAsn";
@@ -245,13 +257,15 @@
                    data1.TransactionCode = inboundOrder.TransactionCode;
                    data1.InoutType = inboundOrder.OrderType;
                    data1.OrderType = inboundOrder.InoutType;
                    data.data1.Inbound inbound = new data.data1.Inbound();
                    inbound.LinId = stockInfoDetail.LinId;
                    inbound.MaterielCode = stockInfoDetail.MaterielCode;
                    inbound.OrderQuantity = stockInfoDetail.StockQuantity;
                    inbound.BatchNo = stockInfoDetail.BatchNo;
                    inbound.FinishQty = stockInfoDetail.StockQuantity;
                    inbound.LocationName = task.TargetAddress;
                    data.data1.Inbound inbound = new data.data1.Inbound
                    {
                        LinId = stockInfoDetail.LinId,
                        MaterielCode = stockInfoDetail.MaterielCode,
                        OrderQuantity = stockInfoDetail.StockQuantity,
                        BatchNo = stockInfoDetail.BatchNo,
                        FinishQty = stockInfoDetail.StockQuantity,
                        LocationName = task.TargetAddress
                    };
                    data.Value.Add(data1);
                    data1.DetailList.Add(inbound);
                    houseInboundPassBack.Parameters.Add(data);
@@ -278,53 +292,107 @@
                }
                else
                {
                    InventoryAllocate inventoryAllocate = new InventoryAllocate();
                    inventoryAllocate.ApiType = "InventoryAllocateController";
                    inventoryAllocate.Method = "AsrsFinishedStockCount";
                    Allocate allocate = new Allocate();
                    Allocate.data1 data1 = new Allocate.data1();
                    data1.No = task.OrderNo;
                    data1.InWarehouse = task.Roadway;
                    data1.TransactionCode = inboundOrder.TransactionCode;
                    data1.InoutType = inboundOrder.OrderType;
                    data1.OrderType = inboundOrder.InoutType;
                    Allocate.data1.Inventory inbound = new Allocate.data1.Inventory();
                    inbound.LinId = stockInfoDetail.LinId;
                    inbound.MaterielCode = stockInfoDetail.MaterielCode;
                    inbound.OrderQuantity = stockInfoDetail.StockQuantity;
                    inbound.BatchNo = stockInfoDetail.BatchNo;
                    inbound.FinishQty = stockInfoDetail.StockQuantity;
                    inbound.LocationName = task.TargetAddress;
                    allocate.Value.Add(data1);
                    data1.DetailList.Add(inbound);
                    inventoryAllocate.Parameters.Add(allocate);
                    Authentication authentication = new Authentication()
                    if (inboundOrder.Details.Count == 1)
                    {
                        ApiType = "AuthenticationController",
                        Parameters = new List<Parameter>
                        List<Dt_StockInfo> StockInfo = _stockService.StockInfoService.Repository.QueryData(x => x.BatchNo == inboundOrderDetail.BatchNo);
                        Dt_InboundOrder_Hty inboundOrder_Hty = new Dt_InboundOrder_Hty
                        {
                            OrderStatus = inboundOrder.OrderStatus,
                            CreateType = inboundOrder.CreateType,
                            //SourceId = oldOutboundOrder.SourceId,
                            UpperOrderNo = inboundOrder.UpperOrderNo,
                            OrderNo = inboundOrder.OrderNo,
                            OutWareHouse = inboundOrder.OutWareHouse,
                            TransactionCode = inboundOrder.TransactionCode,
                            InoutType = inboundOrder.InoutType,
                            OrderType = inboundOrder.OrderType,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                        };
                        _inboundOrder_HtyService.AddData(inboundOrder_Hty);
                        _inboundService.InbounOrderService.DeleteData(inboundOrder);
                        Dt_InboundOrderDetail_Hty dt_InboundOrderDetail_HtyS = new Dt_InboundOrderDetail_Hty
                        {
                            OrderId = inboundOrderDetail.OrderId,
                            MaterielCode = inboundOrderDetail.MaterielCode,
                            MaterielName = inboundOrderDetail.MaterielName,
                            BatchNo = inboundOrderDetail.BatchNo,
                            OrderQuantity = inboundOrderDetail.OrderQuantity,
                            ReceiptQuantity = inboundOrderDetail.ReceiptQuantity,
                            OverInQuantity = inboundOrderDetail.OverInQuantity,
                            OrderDetailStatus = inboundOrderDetail.OrderDetailStatus,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                        };
                        _inboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_HtyS);
                        _inboundService.InboundOrderDetailService.DeleteData(inboundOrderDetail);
                        InventoryAllocate inventoryAllocate = new InventoryAllocate();
                        inventoryAllocate.ApiType = "InventoryAllocateController";
                        inventoryAllocate.Method = "AsrsFinishedStockCount";
                        Allocate allocate = new Allocate();
                        Allocate.data1 data1 = new Allocate.data1();
                        data1.No = task.OrderNo;
                        data1.InWarehouse = task.Roadway;
                        data1.TransactionCode = inboundOrder.TransactionCode;
                        data1.InoutType = inboundOrder.OrderType;
                        data1.OrderType = inboundOrder.InoutType;
                        foreach (var item in StockInfo)
                        {
                            Dt_StockInfoDetail detail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == item.Id);
                            Allocate.data1.Inventory inbound = new Allocate.data1.Inventory();
                            inbound.LinId = detail.LinId;
                            inbound.LPN_No = item.PalletCode;
                            inbound.MaterielCode = detail.MaterielCode;
                            inbound.OrderQuantity = detail.StockQuantity;
                            inbound.BatchNo = detail.BatchNo;
                            inbound.FinishQty = detail.StockQuantity;
                            inbound.LocationName = item.LocationCode;
                            data1.DetailList.Add(inbound);
                        }
                        allocate.Value.Add(data1);
                        inventoryAllocate.Parameters.Add(allocate);
                        Authentication authentication = new Authentication()
                        {
                            ApiType = "AuthenticationController",
                            Parameters = new List<Parameter>
                    {
                     new Parameter { Value = "LKAdmin"},
                     new Parameter { Value = "LKAdmin"},
                    },
                        Method = "Login",
                    };
                    var responses1 = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskAUT, authentication, "登录WMS账号");
                    var Ticket = responses1.Context["Ticket"].ToString();
                    var InvOrgId = responses1.Context["InvOrgId"].ToString();
                    if (Ticket != null)
                    {
                        inventoryAllocate.Context = new Dictionary<string, string>();
                        inventoryAllocate.Context.Add("Ticket", Ticket);
                        inventoryAllocate.Context.Add("InvOrgId", InvOrgId);
                        var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskAllocatein, inventoryAllocate, "调拨入库数量回传WMS");
                            Method = "Login",
                        };
                        var responses1 = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskAUT, authentication, "登录WMS账号");
                        var Ticket = responses1.Context["Ticket"].ToString();
                        var InvOrgId = responses1.Context["InvOrgId"].ToString();
                        if (Ticket != null)
                        {
                            inventoryAllocate.Context = new Dictionary<string, string>();
                            inventoryAllocate.Context.Add("Ticket", Ticket);
                            inventoryAllocate.Context.Add("InvOrgId", InvOrgId);
                            var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskAllocatein, inventoryAllocate, "调拨入库数量回传WMS");
                        }
                    }
                    Dt_InboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_InboundOrderDetail_Hty
                    {
                        OrderId = inboundOrderDetail.OrderId,
                        MaterielCode = inboundOrderDetail.MaterielCode,
                        MaterielName = inboundOrderDetail.MaterielName,
                        BatchNo = inboundOrderDetail.BatchNo,
                        OrderQuantity = inboundOrderDetail.OrderQuantity,
                        ReceiptQuantity = inboundOrderDetail.ReceiptQuantity,
                        OverInQuantity = inboundOrderDetail.OverInQuantity,
                        OrderDetailStatus = inboundOrderDetail.OrderDetailStatus,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
                    };
                    _inboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
                    _inboundService.InboundOrderDetailService.DeleteData(inboundOrderDetail);
                }
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
@@ -391,10 +459,46 @@
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
                _unitOfWorkManage.CommitTran();
                Dt_StockInfoDetail stockInfoDetail = _stockRepository.StockInfoDetailRepository.Db.Queryable<Dt_StockInfoDetail>().Where(x => x.StockId == stockInfo.Id).First();
                Dt_OutboundOrderDetail outDetail = _outboundService.OutboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>().Where(x => x.BatchNo == stockInfoDetail.BatchNo).First();
                Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outDetail.OrderId).First();
                Dt_OutboundOrderDetail outDetail = _outboundService.OutboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>().Where(x => x.LPNNo == stockInfo.PalletCode).First();
                Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outDetail.OrderId).Includes(x => x.Details).First();
                if (outboundOrder.OrderType == 1)
                {
                    if (outboundOrder.Details.Count == 1)
                    {
                        Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty
                        {
                            OrderStatus = outboundOrder.OrderStatus,
                            CreateType = outboundOrder.CreateType,
                            //SourceId = oldOutboundOrder.SourceId,
                            UpperOrderNo = outboundOrder.UpperOrderNo,
                            OrderNo = outboundOrder.OrderNo,
                            OutWareHouse = outboundOrder.OutWareHouse,
                            TransactionCode = outboundOrder.TransactionCode,
                            InoutType = outboundOrder.InoutType,
                            OrderType = outboundOrder.OrderType,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                        };
                        _outboundOrder_HtyService.AddData(inboundOrder_Hty);
                        _outboundService.OutboundOrderService.DeleteData(outboundOrder);
                    }
                    Dt_OutboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_OutboundOrderDetail_Hty
                    {
                        OrderId = outDetail.OrderId,
                        MaterielCode = outDetail.MaterielCode,
                        MaterielName = outDetail.MaterielName,
                        BatchNo = outDetail.BatchNo,
                        OrderQuantity = outDetail.OrderQuantity,
                        //ReceiptQuantity = outDetail.ReceiptQuantity,
                        //OverInQuantity = outDetail.OverInQuantity,
                        OrderDetailStatus = outDetail.OrderDetailStatus,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
                    };
                    _outboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
                    _outboundService.OutboundOrderService.DeleteData(outDetail);
                    HouseoutboundPassBack houseInboundPassBack = new HouseoutboundPassBack();
                    houseInboundPassBack.ApiType = "ShippingOrderController";
                    houseInboundPassBack.Method = "AsrsOutboundSO";
@@ -408,6 +512,7 @@
                    datas.data1.Inbound inbound = new datas.data1.Inbound();
                    inbound.LinId = outDetail.LinId;
                    inbound.LPN_No = task.PalletCode;
                    inbound.MaterielCode = stockInfoDetail.MaterielCode;
                    inbound.OrderQuantity = stockInfoDetail.OutboundQuantity;
                    inbound.BatchNo = stockInfoDetail.BatchNo;
@@ -437,8 +542,48 @@
                        var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskout, houseInboundPassBack, "立库出库数量回传WMS");
                    }
                }
                else if (outboundOrder.OrderType == 240)
                {
                    //盘点出库任务完成、、、、、、、、、
                }
                else
                {
                    List<Dt_StockInfo> StockInfo = _stockService.StockInfoService.Repository.QueryData(x => x.BatchNo == outDetail.BatchNo);
                    if (outboundOrder.Details.Count == 1)
                    {
                        Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty
                        {
                            OrderStatus = outboundOrder.OrderStatus,
                            CreateType = outboundOrder.CreateType,
                            //SourceId = oldOutboundOrder.SourceId,
                            UpperOrderNo = outboundOrder.UpperOrderNo,
                            OrderNo = outboundOrder.OrderNo,
                            OutWareHouse = outboundOrder.OutWareHouse,
                            TransactionCode = outboundOrder.TransactionCode,
                            InoutType = outboundOrder.InoutType,
                            OrderType = outboundOrder.OrderType,
                            Creater = "WMS",
                            CreateDate = DateTime.Now,
                        };
                        _outboundOrder_HtyService.AddData(inboundOrder_Hty);
                        _outboundService.OutboundOrderService.DeleteData(outboundOrder);
                    }
                    Dt_OutboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_OutboundOrderDetail_Hty
                    {
                        OrderId = outDetail.OrderId,
                        MaterielCode = outDetail.MaterielCode,
                        MaterielName = outDetail.MaterielName,
                        BatchNo = outDetail.BatchNo,
                        OrderQuantity = outDetail.OrderQuantity,
                        //ReceiptQuantity = outDetail.ReceiptQuantity,
                        //OverInQuantity = outDetail.OverInQuantity,
                        OrderDetailStatus = outDetail.OrderDetailStatus,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
                    };
                    _outboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
                    _outboundService.OutboundOrderService.DeleteData(outDetail);
                    InventoryAllocate inventoryAllocate = new InventoryAllocate();
                    inventoryAllocate.ApiType = "InventoryAllocateController";
                    inventoryAllocate.Method = "AsrsFinishedStockCount";
@@ -451,15 +596,23 @@
                    data1.TransactionCode = outboundOrder.TransactionCode;
                    data1.InoutType = outboundOrder.OrderType;
                    data1.OrderType = outboundOrder.InoutType;
                    Allocate.data1.Inventory inbound = new Allocate.data1.Inventory();
                    inbound.LinId = outDetail.LinId;
                    inbound.MaterielCode = stockInfoDetail.MaterielCode;
                    inbound.OrderQuantity = stockInfoDetail.StockQuantity;
                    inbound.BatchNo = stockInfoDetail.BatchNo;
                    inbound.FinishQty = stockInfoDetail.StockQuantity;
                    inbound.LocationName = task.SourceAddress;
                    foreach (var item in StockInfo)
                    {
                        Dt_StockInfoDetail detail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == item.Id);
                        Allocate.data1.Inventory inbound = new Allocate.data1.Inventory();
                        inbound.LinId = outDetail.LinId;
                        inbound.LPN_No = item.PalletCode;
                        inbound.MaterielCode = detail.MaterielCode;
                        inbound.OrderQuantity = detail.OutboundQuantity;
                        inbound.BatchNo = detail.BatchNo;
                        inbound.FinishQty = detail.OutboundQuantity;
                        inbound.LocationName = task.SourceAddress;
                        data1.DetailList.Add(inbound);
                    }
                    allocate.Value.Add(data1);
                    data1.DetailList.Add(inbound);
                    inventoryAllocate.Parameters.Add(allocate);
                    Authentication authentication = new Authentication()
                    {