1
wankeda
2 天以前 0cc7b55a04bc96c76e8ac3b02793dff1c69e578a
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -171,6 +171,7 @@
        public string ReceiveWMSTaskAllocatein = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskAllocatein"];
        public string ReceiveERPTaskout = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveERPTaskout"];
        public string InMaterialWarehousingCallback = WIDESEA_Core.Helper.AppSettings.Configuration["InMaterialWarehousingCallback"];
        public string LEDAPI = WIDESEA_Core.Helper.AppSettings.Configuration["LEDAPI"];
        /// <summary>
@@ -578,9 +579,9 @@
                                return WebResponseContent.Instance.Error("未找到入库单信息");
                            }
                            var allBoxCodesForDetail = BaseDal.Db.Queryable<Dt_StockInfoDetailCP>()
                              .Where(x => dt_StockInfo.Details.Select(d => d.Id).Contains(x.StockDetailId))
                              .Select(x => x.BoxCode)
                              .ToList();
              .Where(x => dt_StockInfo.Details.Select(d => d.Id).Contains(x.StockDetailId))
              .Select(x => x.BoxCode)
              .ToList();
                            // 2. 获取托盘下的所有箱号
                            var boxCodes = new List<string>();
@@ -617,7 +618,7 @@
                                return WebResponseContent.Instance.Error($"未找到对应的入库单明细");
                            }
                            // 更新入库单明细状态
                            // 更新入库单明细状态
                            foreach (var inboundOrderDetail in inboundOrderDetails)
                            {
                                // 检查该明细是否已全部入库
@@ -808,10 +809,9 @@
                                        // 判断Success的值
                                        if (!response.Success)
                                        {
                                            WriteLog.Write_Log("API", "SMOM立库回传给WMS", "请求失败", new { 请求报文 = houseInboundPassBack, 接收报文 = response });
                                            throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                                        }
                                        WriteLog.Write_Log("API", "SMOM立库入库回传WMS", "请求成功", new { 请求报文 = houseInboundPassBack, 接收报文 = response });
                                    }
                                }
@@ -887,11 +887,8 @@
                                        var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskAllocatein, inventoryAllocate, "调拨入库数量回传WMS");
                                        if (!response.Success)
                                        {
                                            WriteLog.Write_Log("API", "SMOM调拨入库数量回传WMS", "请求失败", new { 请求报文 = inventoryAllocate, 接收报文 = response });
                                            throw new Exception($"操作失败:{response.Message ?? "未提供错误信息"}");
                                        }
                                        WriteLog.Write_Log("API", "SMOM调拨入库数量回传WMS", "请求成功", new { 请求报文 = inventoryAllocate, 接收报文 = response });
                                    }
                                }
                                else if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 5 && inboundOrder.System.Equals("SMOM"))
@@ -917,28 +914,33 @@
                                            {
                                                Value =  new Parame.Syncretism
                                                {
                                                    OrderNo = inboundOrder.OrderNo,
                                                    Details = StockInfos.SelectMany(stockInfo =>
                                                        stockInfo.Details.Select(g =>
                                                        {
                                                            //var InboundOrderde1=dt_InboundOrder.Details.FirstOrDefault;
                                                    {
                                                        OrderNo = inboundOrder.OrderNo,
                                                        Details =   StockInfos.SelectMany(stockInfo =>
                                                            return new Parame.Syncretism.details
                                                            {
                                                                MoveType = 0,
                                                                WareHouseCode = warehouse.WarehouseCode,
                                                                ItemCode = g.MaterielCode,
                                                                MoveNumber = g.StockQuantity,
                                                                LotNo = g.BatchNo,
                                                                WipBatch = g.BatchNo,
                                                                Lpn = g.StockDetails.FirstOrDefault().LPNNO,
                                                                LocationName = g.StockDetails.FirstOrDefault().OrinalLocation,
                                                                TargetLocName = stockInfo.LocationCode, // 添加null检查
                                                                TargetLpn = stockInfo.PalletCode, // 添加null检查
                                                            };
                                                        })).ToList()
                                                }
                                                    stockInfo.Details.Select(g =>
                                                    {
                                                       //var InboundOrderde1=dt_InboundOrder.Details.FirstOrDefault;
                                                       return new Parame.Syncretism.details
                                                       {
                                                        MoveType = 0,
                                                        WareHouseCode = warehouse.WarehouseCode,
                                                        ItemCode = g.MaterielCode,
                                                        MoveNumber = g.StockQuantity,
                                                        LotNo = g.BatchNo,
                                                        WipBatch = g.BatchNo,
                                                        Lpn = g.StockDetails.FirstOrDefault().LPNNO,
                                                        LocationName = g.StockDetails.FirstOrDefault().OrinalLocation,
                                                        TargetLocName = stockInfo.LocationCode, // 添加null检查
                                                        TargetLpn = stockInfo.PalletCode, // 添加null检查
                                                       };
                                                    })).ToList()
                                                    }
                                            }
                                        }
                                    };
@@ -947,19 +949,17 @@
                                    if (authResult.IsSuccess)
                                    {
                                        houseSyncretism.Context = new Dictionary<string, string>
                                        {
                                            { "Ticket", authResult.Ticket },
                                            { "InvOrgId", authResult.InvOrgId }
                                            {
                                                { "Ticket", authResult.Ticket },
                                                { "InvOrgId", authResult.InvOrgId }
                                        };
                                            };
                                        var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskin, houseSyncretism, "立库入库数量回传WMS");
                                        if (!response.Success)
                                        {
                                            WriteLog.Write_Log("API", "SMOM立库入库数量回传WMS", "请求失败", new { 请求报文 = houseSyncretism, 接收报文 = response });
                                            throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                                        }
                                        WriteLog.Write_Log("API", "SMOM立库入库数量回传WMS", "请求成功", new { 请求报文 = houseSyncretism, 接收报文 = response });
                                    }
@@ -1088,8 +1088,6 @@
                                if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
                                {
                                    //SendInboundInfoToWMS(task, inboundOrder, stockInfo);
                                    SendInboundInfoToWMS(task, inboundOrder, dt_StockInfo);
                                }
                                else if (inboundOrder.OrderStatus == InboundStatusEnum.入库完成.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
                                {
@@ -1509,13 +1507,11 @@
                // 判断Success的值
                if (response.Success)
                {
                    WriteLog.Write_Log("API", "SMOM立库入库回传WMS", "请求成功", new { 请求报文 = houseInboundPassBack, 接收报文 = response });
                    // 如果Success为true,返回需要的值(这里以返回整个响应对象为例)
                    return WebResponseContent.Instance.OK();
                }
                else
                {
                    WriteLog.Write_Log("API", "SMOM立库入库回传WMS", "请求失败", new { 请求报文 = houseInboundPassBack, 接收报文 = response });
                    // 如果Success为false,抛出异常并包含错误信息
                    throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                }
@@ -1536,9 +1532,9 @@
                Parameters = new List<HouseBackboundPassBack.backdata>
                {
                   new HouseBackboundPassBack.backdata
                   {
                    {
                         Value= new List<backdata.backdata1>
                         {
                        {
                            new backdata.backdata1
                            {
                                OrderType = returnOrder.OrderType,
@@ -1554,7 +1550,7 @@
                                WarehouseCode = returnOrder.WarehouseCode,
                                System = returnOrder.System,
                            }
                         }
                        }
                   }
                }
            };
@@ -1570,16 +1566,11 @@
                // 判断Success的值
                if (response.Success)
                {
                    WriteLog.Write_Log("API", "取消发货后立库反拣入库回传WMS", "请求成功", new { 请求报文 = houseReturnOrders, 接收报文 = response });
                    // 如果Success为true,返回需要的值(这里以返回整个响应对象为例)
                    return WebResponseContent.Instance.OK();
                }
                else
                {
                    WriteLog.Write_Log("API", "取消发货后立库反拣入库回传WMS", "请求失败", new { 请求报文 = houseReturnOrders, 接收报文 = response });
                    // 如果Success为false,抛出异常并包含错误信息
                    throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                }
@@ -1644,33 +1635,33 @@
                ApiType = "InventoryAllocateController",
                Method = "AsrsFinishedStockCount",
                Parameters = new List<InventoryAllocate.Allocate>
        {
             new InventoryAllocate.Allocate
            {
                Value = new List<Allocate.data1>
                {
                    new InventoryAllocate.Allocate
                new Allocate.data1
                {
                    No = inboundOrder.OrderNo,
                    //InWarehouse = task.Roadway,
                    TransactionCode = inboundOrder.TransactionCode,
                    InoutType = inboundOrder.OrderType,
                    OrderType = inboundOrder.InoutType,
                    // 遍历所有库存明细,添加到 DetailList
                    DetailList = StockInfos.Select(d => new Allocate.data1.Inventory
                    {
                        Value = new List<Allocate.data1>
                        {
                            new Allocate.data1
                            {
                                No = inboundOrder.OrderNo,
                                //InWarehouse = task.Roadway,
                                TransactionCode = inboundOrder.TransactionCode,
                                InoutType = inboundOrder.OrderType,
                                OrderType = inboundOrder.InoutType,
                                // 遍历所有库存明细,添加到 DetailList
                                DetailList = StockInfos.Select(d => new Allocate.data1.Inventory
                                {
                                    LinId = d.Details.FirstOrDefault()?.LinId?? "",
                                    MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "",
                                    OrderQuantity = d.Details.FirstOrDefault().StockQuantity,
                                    BatchNo = d.BatchNo,
                                    LPNNo = d.PalletCode,
                                    FinishQty = d.Details.FirstOrDefault().StockQuantity,
                                    LocationName = d.LocationCode
                                }).ToList()
                            }
                        }
                    }
                        LinId = d.Details.FirstOrDefault()?.LinId?? "",
                        MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "",
                        OrderQuantity = d.Details.FirstOrDefault().StockQuantity,
                        BatchNo = d.BatchNo,
                        LPNNo = d.PalletCode,
                        FinishQty = d.Details.FirstOrDefault().StockQuantity,
                        LocationName = d.LocationCode
                    }).ToList()
                }
                }
            }
        }
            };
            var authResult = AuthenticateWithWMS();
@@ -1683,8 +1674,6 @@
        };
                HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskAllocatein, inventoryAllocate, "调拨入库数量回传WMS");
                WriteLog.Write_Log("API", "调拨入库数量回传WMS", "请求", new { 请求报文 = inventoryAllocate, 接收报文 = inventoryAllocate });
            }
        }
@@ -1713,10 +1702,10 @@
            {
                ApiType = "AuthenticationController",
                Parameters = new List<Parameter>
                {
                    new Parameter { Value = "LK-Admin" },
                    new Parameter { Value = "LK-Admin" }
                },
        {
            new Parameter { Value = "LK-Admin" },
            new Parameter { Value = "LK-Admin" }
        },
                Method = "Login",
            };
@@ -1891,7 +1880,6 @@
                                        foreach (var orderDetail in outboundOrderDetails1.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()))
                                        {
                                            FeedBackOutERP(outboundOrder.OrderNo, orderDetail.LinId);
                                        }
                                        // 如果有完成的明细,下载报表
@@ -1918,33 +1906,33 @@
                                                ApiType = "ShippingOrderController",
                                                Method = "AsrsOutboundSO",
                                                Parameters = new List<HouseoutboundPassBack.datas>
                                                {
                                                    new HouseoutboundPassBack.datas
                                                    {
                                                        Value = new List<HouseoutboundPassBack.datas.data1>
                        {
                            new HouseoutboundPassBack.datas
                            {
                                Value = new List<HouseoutboundPassBack.datas.data1>
                                {
                                    new HouseoutboundPassBack.datas.data1
                                    {
                                        No = outboundOrder.OrderNo,
                                        OutWareHouse = task.Roadway,
                                        TransactionCode = outboundOrder.TransactionCode,
                                        InoutType = outboundOrder.OrderType,
                                        OrderType = outboundOrder.InoutType,
                                              DetailList = outStockLockInfoList.Select(d => new HouseoutboundPassBack.datas.data1.Inbound
                                                        {
                                                            new HouseoutboundPassBack.datas.data1
                                                            {
                                                                No = outboundOrder.OrderNo,
                                                                OutWareHouse = task.Roadway,
                                                                TransactionCode = outboundOrder.TransactionCode,
                                                                InoutType = outboundOrder.OrderType,
                                                                OrderType = outboundOrder.InoutType,
                                                                DetailList = outStockLockInfoList.Select(d => new HouseoutboundPassBack.datas.data1.Inbound
                                                                {
                                                                    LinId = d.LinId?? "",
                                                                    LPN_No = d.PalletCode,
                                                                    MaterielCode = d.MaterielCode?? "",
                                                                    OrderQuantity = d.OrderQuantity,
                                                                    BatchNo = d.BatchNo,
                                                                    FinishQty = d.OrderQuantity,
                                                                    LocationName = d.LocationCode
                                                                })
                                                                .ToList()
                                                            }
                                                        }
                                                    }
                                                }
                                                            LinId = d.LinId?? "",
                                                            LPN_No = d.PalletCode,
                                                            MaterielCode = d.MaterielCode?? "",
                                                            OrderQuantity = d.OrderQuantity,
                                                            BatchNo = d.BatchNo,
                                                            FinishQty = d.OrderQuantity,
                                                            LocationName = d.LocationCode
                                                        })
                                                        .ToList()
                                    }
                                }
                            }
                        }
                                            };
                                            //调用SMOM接口...
@@ -1959,52 +1947,49 @@
                                                var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskout, passBack, "立库出库数量回传WMS");
                                                if (!response.Success)
                                                {
                                                    WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求失败", new { 请求报文 = passBack, 接收报文 = response });
                                                    throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                                                }
                                                WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求成功", new { 请求报文 = passBack, 接收报文 = response });
                                            }
                                        }
                                        // 调拨出库
                                        if (outboundOrder.OrderType == 4)
                                        if (outboundOrder.OrderType == 3)
                                        {
                                            var allocate = new InventoryAllocate
                                            {
                                                ApiType = "InventoryAllocateController",
                                                Method = "AsrsFinishedStockCount",
                                                Parameters = new List<Allocate>
                                                {
                                                    new Allocate
                                                    {
                                                        Value = new List<Allocate.data1>
                        {
                            new Allocate
                            {
                                Value = new List<Allocate.data1>
                                {
                                    new Allocate.data1
                                    {
                                        No = outboundOrder.OrderNo,
                                        InWarehouse = task.Roadway,
                                        TransactionCode = outboundOrder.TransactionCode,
                                        InoutType = outboundOrder.OrderType,
                                        OrderType = outboundOrder.InoutType,
                                        ActiveType = 2,
                                                DetailList = outStockLockInfoList.Select(item =>
                                                        {
                                                            new Allocate.data1
                                                            return new Allocate.data1.Inventory
                                                            {
                                                                No = outboundOrder.OrderNo,
                                                                InWarehouse = task.Roadway,
                                                                TransactionCode = outboundOrder.TransactionCode,
                                                                InoutType = outboundOrder.OrderType,
                                                                OrderType = outboundOrder.InoutType,
                                                                ActiveType = 2,
                                                                DetailList = outStockLockInfoList.Select(item =>
                                                                {
                                                                    return new Allocate.data1.Inventory
                                                                    {
                                                                        LinId = item.LinId,
                                                                        LPNNo = item.PalletCode,
                                                                        MaterielCode = item.MaterielCode,
                                                                        OrderQuantity = item.OrderQuantity,
                                                                        BatchNo = item.BatchNo,
                                                                        FinishQty = item.OrderQuantity,
                                                                        LocationName = task.SourceAddress
                                                                    };
                                                                }).ToList()
                                                            }
                                                        }
                                                    }
                                                }
                                                                LinId = item.LinId,
                                                                LPNNo = item.PalletCode,
                                                                MaterielCode = item.MaterielCode,
                                                                OrderQuantity = item.OrderQuantity,
                                                                BatchNo = item.BatchNo,
                                                                FinishQty = item.OrderQuantity,
                                                                LocationName = task.SourceAddress
                                                            };
                                                        }).ToList()
                                    }
                                }
                            }
                        }
                                            };
                                            // 调用SMOM接口...
@@ -2012,19 +1997,15 @@
                                            if (authResult.IsSuccess)
                                            {
                                                allocate.Context = new Dictionary<string, string>
                                                {
                                                    { "Ticket", authResult.Ticket },
                                                    { "InvOrgId", authResult.InvOrgId }
                                                };
                                        {
                                            { "Ticket", authResult.Ticket },
                                            { "InvOrgId", authResult.InvOrgId }
                                        };
                                                var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskin, allocate, "立库入库数量回传WMS");
                                                if (!response.Success)
                                                {
                                                    WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求失败", new { 请求报文 = allocate, 接收报文 = response });
                                                    throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                                                }
                                                WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求成功", new { 请求报文 = allocate, 接收报文 = response });
                                            }
                                        }
                                    }
@@ -2157,33 +2138,33 @@
                                                ApiType = "ShippingOrderController",
                                                Method = "AsrsOutboundSO",
                                                Parameters = new List<HouseoutboundPassBack.datas>
                                                {
                                                    new HouseoutboundPassBack.datas
                                                    {
                                                        Value = new List<HouseoutboundPassBack.datas.data1>
                        {
                            new HouseoutboundPassBack.datas
                            {
                                Value = new List<HouseoutboundPassBack.datas.data1>
                                {
                                    new HouseoutboundPassBack.datas.data1
                                    {
                                        No = outboundOrder.OrderNo,
                                        OutWareHouse = task.Roadway,
                                        TransactionCode = outboundOrder.TransactionCode,
                                        InoutType = outboundOrder.OrderType,
                                        OrderType = outboundOrder.InoutType,
                                              DetailList = outStockLockInfoList.Select(d => new HouseoutboundPassBack.datas.data1.Inbound
                                                        {
                                                            new HouseoutboundPassBack.datas.data1
                                                            {
                                                                No = outboundOrder.OrderNo,
                                                                OutWareHouse = task.Roadway,
                                                                TransactionCode = outboundOrder.TransactionCode,
                                                                InoutType = outboundOrder.OrderType,
                                                                OrderType = outboundOrder.InoutType,
                                                                DetailList = outStockLockInfoList.Select(d => new HouseoutboundPassBack.datas.data1.Inbound
                                                                {
                                                                    LinId = d.LinId?? "",
                                                                    LPN_No = d.PalletCode,
                                                                    MaterielCode = d.MaterielCode?? "",
                                                                    OrderQuantity = d.OrderQuantity,
                                                                    BatchNo = d.BatchNo,
                                                                    FinishQty = d.OrderQuantity,
                                                                    LocationName = d.LocationCode
                                                                })
                                                                .ToList()
                                                            }
                                                        }
                                                    }
                                                }
                                                            LinId = d.LinId?? "",
                                                            LPN_No = d.PalletCode,
                                                            MaterielCode = d.MaterielCode?? "",
                                                            OrderQuantity = d.OrderQuantity,
                                                            BatchNo = d.BatchNo,
                                                            FinishQty = d.OrderQuantity,
                                                            LocationName = d.LocationCode
                                                        })
                                                        .ToList()
                                    }
                                }
                            }
                        }
                                            };
                                            //调用SMOM接口...
@@ -2198,53 +2179,49 @@
                                                var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskout, passBack, "立库出库数量回传WMS");
                                                if (!response.Success)
                                                {
                                                    WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求失败", new { 请求报文 = passBack, 接收报文 = response });
                                                    throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                                                }
                                                WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求成功", new { 请求报文 = passBack, 接收报文 = response });
                                            }
                                        }
                                        // 调拨出库
                                        if (outboundOrder.OrderType == 4)
                                        if (outboundOrder.OrderType == 3)
                                        {
                                            var allocate = new InventoryAllocate
                                            {
                                                ApiType = "InventoryAllocateController",
                                                Method = "AsrsFinishedStockCount",
                                                Parameters = new List<Allocate>
                                                {
                                                    new Allocate
                                                    {
                                                        Value = new List<Allocate.data1>
                        {
                            new Allocate
                            {
                                Value = new List<Allocate.data1>
                                {
                                    new Allocate.data1
                                    {
                                        No = outboundOrder.OrderNo,
                                        InWarehouse = task.Roadway,
                                        TransactionCode = outboundOrder.TransactionCode,
                                        InoutType = outboundOrder.OrderType,
                                        OrderType = outboundOrder.InoutType,
                                        ActiveType = 2,
                                                DetailList = outStockLockInfoList.Select(item =>
                                                        {
                                                            new Allocate.data1
                                                            return new Allocate.data1.Inventory
                                                            {
                                                                No = outboundOrder.OrderNo,
                                                                InWarehouse = task.Roadway,
                                                                TransactionCode = outboundOrder.TransactionCode,
                                                                InoutType = outboundOrder.OrderType,
                                                                OrderType = outboundOrder.InoutType,
                                                                ActiveType = 2,
                                                                DetailList = outStockLockInfoList.Select(item =>
                                                                {
                                                                    return new Allocate.data1.Inventory
                                                                    {
                                                                        LinId = item.LinId,
                                                                        LPNNo = item.PalletCode,
                                                                        MaterielCode = item.MaterielCode,
                                                                        OrderQuantity = item.OrderQuantity,
                                                                        BatchNo = item.BatchNo,
                                                                        FinishQty = item.OrderQuantity,
                                                                        LocationName = task.SourceAddress
                                                                    };
                                                                }).ToList()
                                                            }
                                                        }
                                                    }
                                                }
                                                                LinId = item.LinId,
                                                                LPNNo = item.PalletCode,
                                                                MaterielCode = item.MaterielCode,
                                                                OrderQuantity = item.OrderQuantity,
                                                                BatchNo = item.BatchNo,
                                                                FinishQty = item.OrderQuantity,
                                                                LocationName = task.SourceAddress
                                                            };
                                                        }).ToList()
                                    }
                                }
                            }
                        }
                                            };
                                            // 调用SMOM接口...
@@ -2259,12 +2236,8 @@
                                                var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskin, allocate, "立库入库数量回传WMS");
                                                if (!response.Success)
                                                {
                                                    WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求失败", new { 请求报文 = allocate, 接收报文 = response });
                                                    throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
                                                }
                                                WriteLog.Write_Log("API", "SMOM立库库数量回传WMS", "请求成功", new { 请求报文 = allocate, 接收报文 = response });
                                            }
                                        }
                                    }
@@ -2303,11 +2276,11 @@
                        {
                            Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
                           .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == detail.BatchNo).First();
                            if(outboundOrderDetail != null)
                            if (outboundOrderDetail != null)
                            {
                                outboundOrderDetails.Add(outboundOrderDetail);
                            }
                        }
                        for (var i = 0; i < outboundOrderDetails.Count; i++)
@@ -2498,7 +2471,7 @@
                // 更新库存状态 回库单
                if (locationInfo.RoadwayNo.Contains("DW") || locationInfo.RoadwayNo.Contains("YS"))
                {
                    AddDWANDYSRetrueOrder(stockInfo, inboundOrder);
                    AddDWANDYSRetrueOrder(task, stockInfo, inboundOrder);
                }
                // 区分单据数据来源更新货位状态
@@ -2516,7 +2489,7 @@
                // 添加状态变更记录
                AddStatusChangeRecord(task, stockInfo, locationInfo);
                // 根据订单类型处理不同逻辑
                var outboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>()
@@ -2592,11 +2565,11 @@
        private void DWANDYSUpdateOutboundOrderDetails(Dt_StockInfo stockInfo, Dt_OutboundOrder inboundOrder, ref List<Dt_OutboundOrderDetail> inboundOrderDetails)
        {
            List<Dt_OutboundOrderDetail> newOutboundOrderDetails = inboundOrderDetails;
            int CompeletedNum = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count();
            foreach (var newOutboundOrderDetail in newOutboundOrderDetails)
            {
                string BatchNo = newOutboundOrderDetail.BatchNo;
                //inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == stockInfo.Details.FirstOrDefault()?.BatchNo&&x.LPNNo==stockInfo.PalletCode);
                foreach (var item in stockInfo.Details)
                {
                    if (newOutboundOrderDetail == null) continue;
@@ -2610,15 +2583,17 @@
                        if (newOutboundOrderDetail.OverOutQuantity == newOutboundOrderDetail.OrderQuantity)
                        {
                            newOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                            CompeletedNum++;
                        }
                        else if (newOutboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
                        {
                            newOutboundOrderDetail.OrderDetailStatus = OutboundStatusEnum.出库中.ObjToInt();
                            inboundOrder.OrderStatus = OutboundStatusEnum.出库中.ObjToInt();
                        }
                    }
                }
                if (newOutboundOrderDetails.All(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()))
                if (inboundOrder.Details.Count == CompeletedNum)
                {
                    inboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                }
@@ -2838,50 +2813,48 @@
                ApiType = "InventoryAllocateController",
                Method = "AsrsFinishedStockCount",
                Parameters = new List<Allocate>
        {
            new Allocate
            {
                Value = new List<Allocate.data1>
                {
                    new Allocate
                    new Allocate.data1
                    {
                        Value = new List<Allocate.data1>
                        No = outboundOrder.OrderNo,
                        InWarehouse = task.Roadway,
                        TransactionCode = outboundOrder.TransactionCode,
                        InoutType = outboundOrder.OrderType,
                        OrderType = outboundOrder.InoutType,
                        DetailList = outStockLockInfos.Select(item =>
                        {
                            new Allocate.data1
                            //var detail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == item.StockId);
                            return new Allocate.data1.Inventory
                            {
                                No = outboundOrder.OrderNo,
                                InWarehouse = task.Roadway,
                                TransactionCode = outboundOrder.TransactionCode,
                                InoutType = outboundOrder.OrderType,
                                OrderType = outboundOrder.InoutType,
                                DetailList = outStockLockInfos.Select(item =>
                                {
                                    //var detail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == item.StockId);
                                    return new Allocate.data1.Inventory
                                    {
                                        LinId = outDetail.LinId,
                                        LPNNo = item.PalletCode,
                                        MaterielCode = outDetail.MaterielCode,
                                        OrderQuantity = outDetail.OrderQuantity,
                                        BatchNo = outDetail.BatchNo,
                                        FinishQty = outDetail.OrderQuantity,
                                        LocationName = task.SourceAddress
                                    };
                                }).ToList()
                            }
                        }
                                LinId = outDetail.LinId,
                                LPNNo = item.PalletCode,
                                MaterielCode = outDetail.MaterielCode,
                                OrderQuantity = outDetail.OrderQuantity,
                                BatchNo = outDetail.BatchNo,
                                FinishQty = outDetail.OrderQuantity,
                                LocationName = task.SourceAddress
                            };
                        }).ToList()
                    }
                }
            }
        }
            };
            var authResult = AuthenticateWithWMS();
            if (authResult.IsSuccess)
            {
                allocate.Context = new Dictionary<string, string>
                {
                    { "Ticket", authResult.Ticket },
                    { "InvOrgId", authResult.InvOrgId }
                };
        {
            { "Ticket", authResult.Ticket },
            { "InvOrgId", authResult.InvOrgId }
        };
                var response = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskin, allocate, "立库入库数量回传WMS");
                WriteLog.Write_Log("API", "SMOM立库入库数量回传WMS", "请求", new { 请求报文 = allocate, 接收报文 = response });
                HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskin, allocate, "立库入库数量回传WMS");
            }
        }
@@ -2961,7 +2934,7 @@
        }
        //低温、药水回库单
        private void AddDWANDYSRetrueOrder(Dt_StockInfo stockInfo, Dt_OutboundOrder outboundOrder)
        private void AddDWANDYSRetrueOrder(Dt_Task task, Dt_StockInfo stockInfo, Dt_OutboundOrder outboundOrder)
        {
            List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
@@ -2990,6 +2963,22 @@
                }
                else
                {
                    var postData = new
                    {
                        DeviceCode = task.NextAddress,    // 屏幕编号
                        MaterialCode = outboundOrder.Details.FirstOrDefault()?.MaterielCode,//物料类型
                        BackNum = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity,//回库数
                        SendNum = outboundOrder.Details.FirstOrDefault()?.OrderQuantity//发料数
                    };
                    string json = Newtonsoft.Json.JsonConvert.SerializeObject(postData);
                    using (var client = new HttpClient())
                    {
                        var content = new StringContent(json, Encoding.UTF8, "application/json");
                        var response = client.PostAsync(LEDAPI, content).Result;
                        string result = response.Content.ReadAsStringAsync().Result;
                    }
                    bool allowCompeted = stockInfo.Details.All(x => x.StockQuantity == x.OutboundQuantity);
                    if (allowCompeted)
                    {
@@ -3078,7 +3067,8 @@
                        var matchedStockDetail = stockInfoDetails.FirstOrDefault(x => x.MaterielCode == outDetail.MaterielCode && x.BatchNo == outDetail.BatchNo);
                        if (matchedStockDetail == null)
                        {
                            matchedStockDetail = stockInfoDetails.FirstOrDefault(x =>x.MaterielCode == outDetail.MaterielCode);
                            matchedStockDetail = stockInfoDetails.FirstOrDefault(x =>
               x.MaterielCode == outDetail.MaterielCode);
                            if (matchedStockDetail == null)
                            {
@@ -3302,8 +3292,6 @@
                    result = response.Content.ReadAsStringAsync()
                        .ConfigureAwait(false).GetAwaiter().GetResult();
                    WriteLog.Write_Log("API", "单据明细出库完成回调ERP", "请求成功", new { 请求报文 = postContent, 接收报文 = response });
                }
                // 假设ERP返回成功时返回成功响应
@@ -3311,15 +3299,11 @@
            }
            catch (HttpRequestException ex)
            {
                WriteLog.Write_Log("API", "单据明细出库完成回调ERP", "请求失败", new { 请求报文 = postContent, 接收报文 = ex.Message });
                // 处理HTTP请求相关异常
                return WebResponseContent.Instance.Error($"HTTP请求错误: {ex.Message}");
            }
            catch (Exception ex)
            {
                WriteLog.Write_Log("API", "单据明细出库完成回调ERP", "请求失败", new { 请求报文 = postContent, 接收报文 = ex.Message });
                // 处理其他异常
                return WebResponseContent.Instance.Error($"处理失败: {ex.Message}");
            }
@@ -3347,15 +3331,11 @@
            // 判断Success的值
            if (response.Code == 0)
            {
                WriteLog.Write_Log("API", "任务回传给erp", "请求成功", new { 请求报文 = feedbackInboundOrder, 接收报文 = response });
                // 如果Success为true,返回需要的值(这里以返回整个响应对象为例)
                return WebResponseContent.Instance.OK();
            }
            else
            {
                WriteLog.Write_Log("API", "任务回传给erp", "请求失败", new { 请求报文 = feedbackInboundOrder, 接收报文 = response });
                // 如果Success为false,抛出异常并包含错误信息
                throw new Exception($"操作失败: {response.Message ?? "未提供错误信息"}");
            }
@@ -3923,520 +3903,11 @@
    #endregion
    #region
    //public WebResponseContent InboundTaskCompleted(int taskNum)
    //{
    //    try
    //    {
    //        Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
    //        if (task == null)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到该任务");
    //        }
    //        if (task.TaskType != TaskTypeEnum.Inbound.ObjToInt())
    //        {
    //            return WebResponseContent.Instance.Error($"任务类型错误");
    //        }
    //        Dt_StockInfo dt_StockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.Details).First();
    //        if (dt_StockInfo == null)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到托盘对应的组盘信息");
    //        }
    //        if (!string.IsNullOrEmpty(dt_StockInfo.LocationCode))
    //        {
    //            return WebResponseContent.Instance.Error($"该托盘已绑定货位");
    //        }
    //        if (dt_StockInfo.Details == null || dt_StockInfo.Details.Count == 0)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到该托盘库存明细信息");
    //        }
    //        Dt_LocationInfo dt_LocationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
    //        if (dt_LocationInfo == null)
    //        {
    //            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();
    //        Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
    //        dt_StockInfo.LocationCode = dt_LocationInfo.LocationCode;
    //        Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == dt_StockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
    //        Dt_InboundOrderDetail? inboundOrderDetail = null;
    //        //判断单据类型是入库还是调拨入库。。。入库
    //        if (inboundOrder.OrderType == 0 && inboundOrder != null && dt_StockInfo.StockStatus == StockStatusEmun.入库确认.ObjToInt())
    //        {
    //            #region //判断入库单据明细只有最后一条完成时删除入库单
    //            //查询原完成的入库明细数量
    //            int overCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
    //            //明细id查询
    //            inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.LinId == dt_StockInfo.Details.FirstOrDefault()?.LinId);
    //            foreach (var item in dt_StockInfo.Details)
    //            {
    //                if (inboundOrderDetail == null)
    //                {
    //                    continue;
    //                }
    //                inboundOrderDetail.OverInQuantity += item.StockQuantity;
    //                if (inboundOrderDetail.OverInQuantity == inboundOrderDetail.OrderQuantity)
    //                {
    //                    inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
    //                    overCount += 1;
    //                }
    //                else if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
    //                {
    //                    inboundOrderDetail.OrderDetailStatus = InboundStatusEnum.入库中.ObjToInt();
    //                }
    //            }
    //            dt_StockInfo.Details.ForEach(x =>
    //            {
    //                x.Status = StockStatusEmun.入库完成.ObjToInt();
    //            });
    //            _unitOfWorkManage.BeginTran();
    //            task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
    //            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateType.人工完成 : OperateType.自动完成);
    //            _basicService.LocationInfoService.Repository.UpdateData(dt_LocationInfo);
    //            _stockRepository.StockInfoRepository.UpdateData(dt_StockInfo);
    //            _stockRepository.StockInfoDetailRepository.UpdateData(dt_StockInfo.Details);
    //            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(dt_LocationInfo, lastStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
    //            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(dt_StockInfo, dt_StockInfo.Details, dt_StockInfo.Details.Sum(x => x.StockQuantity), dt_StockInfo.Details.Sum(x => x.StockQuantity), StockChangeType.Inbound, task.TaskNum);
    //            if (inboundOrder != null)
    //            {
    //                _inboundService.InbounOrderService.UpdateData(inboundOrder);
    //                _inboundService.InboundOrderDetailService.UpdateData(inboundOrderDetail);
    //            }
    //            _unitOfWorkManage.CommitTran();
    //            if (inboundOrder.Details.Count == 1)
    //            {
    //                var stockInfoDetail = dt_StockInfo.Details.FirstOrDefault();
    //                #region//入库信息返回上位WMS。。立库入库数量回传
    //                HouseInboundPassBack houseInboundPassBack = new HouseInboundPassBack();
    //                houseInboundPassBack.ApiType = "AsnController";
    //                houseInboundPassBack.Method = "AsrsGroudingAsn";
    //                data data = new data();
    //                data.data1 data1 = new data.data1();
    //                data1.AsnNo = task.OrderNo;
    //                data1.InWarehouse = task.Roadway;
    //                data1.TransactionCode = inboundOrder.TransactionCode;
    //                data1.InoutType = inboundOrder.OrderType;
    //                data1.OrderType = inboundOrder.InoutType;
    //                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);
    //                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)
    //                {
    //                    houseInboundPassBack.Context = new Dictionary<string, string>();
    //                    houseInboundPassBack.Context.Add("Ticket", Ticket);
    //                    houseInboundPassBack.Context.Add("InvOrgId", InvOrgId);
    //                    var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskin, houseInboundPassBack, "立库入库数量回传WMS");
    //                }
    //                #endregion
    //            }
    //        }
    //        else
    //        {
    //            #region //判断调拨入库单据明细只有最后一条完成时删除入库单并一次返回入库明细信息
    //            if (inboundOrder.Details.Count == 1)
    //            {
    //                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);
    //                #endregion
    //                #region//调拨任务数量回传WMS
    //                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");
    //                }
    //            }
    //            #endregion
    //            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)
    //    {
    //        _unitOfWorkManage.RollbackTran();
    //        return WebResponseContent.Instance.Error(ex.Message);
    //    }
    //}
    #endregion
    #region
    //public WebResponseContent OutboundTaskCompleted(int taskNum)
    //{
    //    try
    //    {
    //        Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
    //        if (task == null)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到任务信息");
    //        }
    //        Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
    //        Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
    //        if (stockInfo == null)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到库存信息");
    //        }
    //        if (locationInfo == null)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到货位信息");
    //        }
    //        List<Dt_OutStockLockInfo> outStockLockInfos = _outboundService.OutboundStockLockInfoService.Repository.QueryData(x => x.TaskNum == taskNum);
    //        if (outStockLockInfos == null || outStockLockInfos.Count == 0)
    //        {
    //            return WebResponseContent.Instance.Error($"未找到出库详情信息");
    //        }
    //        List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
    //        for (int i = 0; i < outStockLockInfos.Count; i++)
    //        {
    //            Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfos[i].OrderDetailId);
    //            if (outboundOrderDetail != null)
    //            {
    //                outboundOrderDetail.OverOutQuantity = outboundOrderDetail.LockQuantity;
    //                if (outboundOrderDetail.LockQuantity == outboundOrderDetail.OrderQuantity)
    //                {
    //                    outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
    //                }
    //                outboundOrderDetails.Add(outboundOrderDetail);
    //            }
    //        }
    //        _unitOfWorkManage.BeginTran();
    //        _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
    //        stockInfo.LocationCode = locationInfo.LocationCode;
    //        stockInfo.StockStatus = StockStatusEmun.出库完成.ObjToInt();
    //        _stockService.StockInfoService.Repository.UpdateData(stockInfo);
    //        int beforeStatus = locationInfo.LocationStatus;
    //        locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
    //        _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
    //        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
    //        _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.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)
    //        {
    //            #region //判断出库单据明细只有最后一条完成时删除出库单
    //            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);
    //            #endregion
    //            #region//出库信息返回上位WMS。。。立库出库数量回传
    //            HouseoutboundPassBack houseInboundPassBack = new HouseoutboundPassBack();
    //            houseInboundPassBack.ApiType = "ShippingOrderController";
    //            houseInboundPassBack.Method = "AsrsOutboundSO";
    //            datas datas = new datas();
    //            datas.data1 data1 = new datas.data1();
    //            data1.No = outboundOrder.OrderNo;
    //            data1.OutWareHouse = task.Roadway;
    //            data1.TransactionCode = outboundOrder.TransactionCode;
    //            data1.InoutType = outboundOrder.OrderType;
    //            data1.OrderType = outboundOrder.InoutType;
    //            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;
    //            inbound.FinishQty = stockInfoDetail.OutboundQuantity;
    //            inbound.LocationName = task.SourceAddress;
    //            datas.Value.Add(data1);
    //            data1.DetailList.Add(inbound);
    //            houseInboundPassBack.Parameters.Add(datas);
    //            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)
    //            {
    //                houseInboundPassBack.Context = new Dictionary<string, string>();
    //                houseInboundPassBack.Context.Add("Ticket", Ticket);
    //                houseInboundPassBack.Context.Add("InvOrgId", InvOrgId);
    //                var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskout, houseInboundPassBack, "立库出库数量回传WMS");
    //            }
    //            #endregion
    //            //删除库存信息
    //            _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
    //            _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfo.Details, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
    //        }
    //        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";
    //            Allocate allocate = new Allocate();
    //            Allocate.data1 data1 = new Allocate.data1();
    //            data1.No = outboundOrder.OrderNo;
    //            data1.InWarehouse = task.Roadway;
    //            data1.TransactionCode = outboundOrder.TransactionCode;
    //            data1.InoutType = outboundOrder.OrderType;
    //            data1.OrderType = outboundOrder.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 = 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);
    //            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");
    //            }
    //            _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
    //            _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfo.Details, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
    //        }
    //        return WebResponseContent.Instance.OK();
    //    }
    //    catch (Exception ex)
    //    {
    //        _unitOfWorkManage.RollbackTran();
    //        return WebResponseContent.Instance.Error(ex.Message);
    //    }
    //}
    #endregion
    public class LEDDTO
    {
        public string DeviceCode { get; set; }
        public string MaterialCode { get; set; }
        public int BackNum { get; set; }
        public int SendNum { get; set; }
    }
}