1
yangpeixing
2 天以前 ef91bb06691b9bee56786673535cdc5042e76d5a
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -24,25 +24,35 @@
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Org.BouncyCastle.Asn1.Tsp;
using Spire.Pdf;
using Spire.Pdf;
using SqlSugar;
using System;
using System;
using System;
using System;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Drawing.Printing;
using System.Drawing.Printing;
using System.IO;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.Http;
using System.Reflection;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using System.Threading.Tasks;
using System.Threading.Tasks;
using WIDESEA_BasicRepository;
using WIDESEA_Common;
using WIDESEA_Common.Log;
using WIDESEA_Common.Log;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.TaskEnum;
@@ -54,6 +64,7 @@
using WIDESEA_Core.TaskEnum;
using WIDESEA_DTO.Basic;
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Stock;
using WIDESEA_DTO.Task;
@@ -62,6 +73,7 @@
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_InboundRepository;
using WIDESEA_InboundRepository;
using WIDESEA_IOutboundRepository;
using WIDESEA_IOutboundService;
using WIDESEA_IRecordService;
@@ -69,8 +81,10 @@
using WIDESEA_IStockService;
using WIDESEA_ITaskInfoRepository;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model;
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.Inbound;
using WIDESEA_OutboundRepository;
using WIDESEA_OutboundRepository;
using WIDESEA_StockRepository;
using WIDESEA_TaskInfoRepository;
@@ -78,26 +92,13 @@
using static WIDESEA_Common.HouseBackboundPassBack;
using static WIDESEA_Common.HouseInboundPassBack;
using static WIDESEA_Common.HouseInboundPassBack.data.data1;
using static WIDESEA_Common.HouseInboundPassBack.data.data1;
using static WIDESEA_Common.HouseoutboundPassBack;
using static WIDESEA_Common.InventoryAllocate;
using static WIDESEA_Common.NewHouseInboundPassBack;
using static WIDESEA_Common.NewHouseInboundPassBack.Parame.Syncretism;
using static WIDESEA_ITaskInfoService.ITaskService;
using Parameter = WIDESEA_Common.Parameter;
using WIDESEA_DTO.ERP;
using WIDESEA_OutboundRepository;
using System.ComponentModel.DataAnnotations;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Spire.Pdf;
using WIDESEA_InboundRepository;
using System.Drawing.Printing;
using System;
using WIDESEA_Common.Log;
using static WIDESEA_Common.HouseInboundPassBack.data.data1;
using System.Diagnostics;
namespace WIDESEA_TaskInfoService
{
@@ -131,9 +132,11 @@
        private readonly IInboundRepository _inboundRepository;
        private readonly ITakeStockOrderCPRepository _takeStockOrderCPRepository;
        private readonly ITakeStockOrderDetailCPRepository _takeStockOrderDetailCPRepository;
        private readonly IHubContext<WMSNoticeHub> _hubContext;
        public ITaskRepository Repository => 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, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository, INewOutboundOrderDetailRepository newOutboundOrderDetailRepository, ITakeStockOrderCPRepository takeStockOrderCPRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository, IStockInfoDetailCPRepository stockInfoDetailCPRepository) : 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, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository, INewOutboundOrderDetailRepository newOutboundOrderDetailRepository, ITakeStockOrderCPRepository takeStockOrderCPRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository, IStockInfoDetailCPRepository stockInfoDetailCPRepository,
          IHubContext<WMSNoticeHub> hubContext) : base(BaseDal)
        {
            _mapper = mapper;
            _stockRepository = stockRepository;
@@ -162,6 +165,7 @@
            _takeStockOrderCPRepository = takeStockOrderCPRepository;
            _takeStockOrderDetailCPRepository = takeStockOrderDetailCPRepository;
            _stockInfoDetailCPRepository = stockInfoDetailCPRepository;
            _hubContext = hubContext;
        }
        public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
@@ -171,6 +175,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>
@@ -617,7 +622,7 @@
                                return WebResponseContent.Instance.Error($"未找到对应的入库单明细");
                            }
                            // 更新入库单明细状态
                            // 更新入库单明细状态
                            foreach (var inboundOrderDetail in inboundOrderDetails)
                            {
                                // 检查该明细是否已全部入库
@@ -1431,7 +1436,7 @@
            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(
                stockInfo, stockInfo.Details,
                stockInfo.Details.Sum(x => x.StockQuantity),
                0,
                stockInfo.Details.Sum(x => x.StockQuantity),
                StockChangeType.Inbound, task.TaskNum);
        }
@@ -1848,7 +1853,7 @@
                                    _outboundService.NewOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails1);
                                    AddCPRetrueOrder(stockInfo, outboundOrder, outboundOrderDetails1);
                                    AddCPRetrueOrder(task,stockInfo, outboundOrder, outboundOrderDetails1);
                                    // 区分单据数据来源更新货位状态
                                    if (outboundOrder.System == null)
@@ -1952,7 +1957,7 @@
                                        }
                                        // 调拨出库
                                        if (outboundOrder.OrderType == 4)
                                        if (outboundOrder.OrderType == 3)
                                        {
                                            var allocate = new InventoryAllocate
                                            {
@@ -2080,7 +2085,7 @@
                                    _outboundService.NewOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
                                    AddCPRetrueOrder(stockInfo, outboundOrder, outboundOrderDetails);
                                    AddCPRetrueOrder(task,stockInfo, outboundOrder, outboundOrderDetails);
                                    // 区分单据数据来源更新货位状态
                                    if (outboundOrder.System == null)
@@ -2184,7 +2189,7 @@
                                        }
                                        // 调拨出库
                                        if (outboundOrder.OrderType == 4)
                                        if (outboundOrder.OrderType == 3)
                                        {
                                            var allocate = new InventoryAllocate
                                            {
@@ -2275,7 +2280,11 @@
                        {
                            Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
                           .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == detail.BatchNo).First();
                            outboundOrderDetails.Add(outboundOrderDetail);
                            if (outboundOrderDetail != null)
                            {
                                outboundOrderDetails.Add(outboundOrderDetail);
                            }
                        }
                        for (var i = 0; i < outboundOrderDetails.Count; i++)
@@ -2391,7 +2400,7 @@
                // 更新库存状态 回库单
                AddRetrueOrder(stockInfo, inboundOrder);
                AddRetrueOrder(task,stockInfo, inboundOrder);
                // 区分单据数据来源更新货位状态
@@ -2466,7 +2475,7 @@
                // 更新库存状态 回库单
                if (locationInfo.RoadwayNo.Contains("DW") || locationInfo.RoadwayNo.Contains("YS"))
                {
                    AddDWANDYSRetrueOrder(stockInfo, inboundOrder);
                    AddDWANDYSRetrueOrder(task, stockInfo, inboundOrder);
                }
                // 区分单据数据来源更新货位状态
@@ -2483,6 +2492,7 @@
                // 添加状态变更记录
                AddStatusChangeRecord(task, stockInfo, locationInfo);
                // 根据订单类型处理不同逻辑
@@ -2559,12 +2569,11 @@
        private void DWANDYSUpdateOutboundOrderDetails(Dt_StockInfo stockInfo, Dt_OutboundOrder inboundOrder, ref List<Dt_OutboundOrderDetail> inboundOrderDetails)
        {
            List<Dt_OutboundOrderDetail> newOutboundOrderDetails = inboundOrderDetails;
            int overCount = inboundOrder.Details.Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
            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;
@@ -2578,16 +2587,15 @@
                        if (newOutboundOrderDetail.OverOutQuantity == newOutboundOrderDetail.OrderQuantity)
                        {
                            newOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                            overCount++;
                            CompeletedNum++;
                        }
                        else if (newOutboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
                        {
                            newOutboundOrderDetail.OrderDetailStatus = OutboundStatusEnum.出库中.ObjToInt();
                        {
                            inboundOrder.OrderStatus = OutboundStatusEnum.出库中.ObjToInt();
                        }
                    }
                }
                if (inboundOrder.Details.Count() == overCount)
                if (inboundOrder.Details.Count == CompeletedNum)
                {
                    inboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                }
@@ -2623,6 +2631,12 @@
                StockChangeType.Outbound.ObjToInt(),
                stockInfo.Details.FirstOrDefault()?.OrderNo ?? "",
                task.TaskNum);
            _recordService.StockQuantityChangeRecordService.NEWAddStockChangeRecord(
                stockInfo, stockInfo.Details,
                stockInfo.Details.Sum(x => x.StockQuantity),
                stockInfo.Details.Sum(x => x.OutboundQuantity),
                StockChangeType.Outbound, task.TaskNum);
        }
        private void ProcessNormalOutbound(Dt_Task task, Dt_StockInfo stockInfo,
@@ -2854,75 +2868,108 @@
                App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
        }
        private void AddRetrueOrder(Dt_StockInfo stockInfo, Dt_OutboundOrder outboundOrder)
        private void AddRetrueOrder(Dt_Task task,Dt_StockInfo stockInfo, Dt_OutboundOrder outboundOrder)
        {
            Dt_StockInfoDetail stockInfoDetail = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
           .Where(x => x.StockId == stockInfo.Id).First();
            if (stockInfoDetail == null)
            List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
           .Where(x => x.StockId == stockInfo.Id).ToList();
            if (stockInfoDetails == null || stockInfoDetails.Count == 0)
            {
                throw new Exception("建立回库单时,未找到该库存信息");
            }
            if (outboundOrder.OrderType == OrderTypeEnum.反拣出库单.ObjToInt())
            Dt_ReturnOrder? lastReturnOrder = null;
            foreach (var stockInfoDetail in stockInfoDetails)
            {
                Dt_ReturnOrder returnOrder = _returnOrderRepository.QueryFirst(x => x.LPNNo == stockInfo.PalletCode && x.LocationCode == stockInfo.LocationCode && x.OrderStatus == InOrderStatusEnum.未开始.ObjToInt());
                if (returnOrder == null)
                if (outboundOrder.OrderType == OrderTypeEnum.反拣出库单.ObjToInt())
                {
                    throw new Exception("反拣出库后,未找到对应反拣回库单信息");
                }
                stockInfo.LocationCode = "";
                stockInfo.StockStatus = StockStatusEmun.反拣入库.ObjToInt();
                stockInfo.Remark = "反拣入库";
                stockInfoDetail.OutboundQuantity = 0;
                stockInfoDetail.StockQuantity += returnOrder.OrderQuantity;
                stockInfoDetail.OrderNo = returnOrder.OrderNo;
            }
            else
            {
                decimal returnQuantity = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity;
                if (returnQuantity > 0)
                {
                    Dt_ReturnOrder returnOrder = new Dt_ReturnOrder
                    Dt_ReturnOrder returnOrder = _returnOrderRepository.QueryFirst(x => x.LPNNo == stockInfo.PalletCode && x.LocationCode == stockInfo.LocationCode && x.OrderStatus == InOrderStatusEnum.未开始.ObjToInt());
                    if (returnOrder == null)
                    {
                        MaterielCode = stockInfoDetail.MaterielCode,
                        MaterielName = stockInfoDetail.MaterielName,
                        BatchNo = stockInfoDetail.BatchNo,
                        OrderQuantity = returnQuantity,
                        ReceiptQuantity = returnQuantity,
                        OrderStatus = InOrderStatusEnum.未开始.ObjToInt(),
                        LinId = stockInfoDetail.LinId,
                        LPNNo = stockInfo.PalletCode,
                        Creater = "LK",
                        CreateDate = DateTime.Now,
                        OrderType = OrderTypeEnum.余料回库单.ObjToInt(),
                        System = "WMS"
                    };
                    if (outboundOrder.System == "SMOM" && stockInfo.LocationCode != null)
                    {
                        returnOrder.LocationCode = stockInfo.LocationCode;
                        throw new Exception("反拣出库后,未找到对应反拣回库单信息");
                    }
                    _unitOfWorkManage.BeginTran();
                    _returnOrderRepository.AddData(returnOrder);
                    stockInfo.LocationCode = "";
                    stockInfo.StockStatus = StockStatusEmun.余料退库.ObjToInt();
                    stockInfo.Remark = "余料退库";
                    stockInfo.StockStatus = StockStatusEmun.反拣入库.ObjToInt();
                    stockInfo.Remark = "反拣入库";
                    stockInfoDetail.OutboundQuantity = 0;
                    stockInfoDetail.StockQuantity = returnQuantity;
                    stockInfoDetail.StockQuantity += returnOrder.OrderQuantity;
                    stockInfoDetail.OrderNo = returnOrder.OrderNo;
                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                    _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
                    _unitOfWorkManage.CommitTran();
                }
                else
                {
                    DeleteAndMoveIntoHtStockStatus(stockInfo);
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = 1 });
                    var postData = new
                    {
                        DeviceCode = task.NextAddress,    // 屏幕编号
                        MaterialCode = stockInfoDetail.MaterielCode,//物料类型
                        SendNum = stockInfoDetail.OutboundQuantity,//发料数
                        BackNum = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity//回库数
                    };
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文2 = postData });
                    string json = Newtonsoft.Json.JsonConvert.SerializeObject(postData);
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文3 = json });
                    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;
                        WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = response, 接收报文 = result });
                    }
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = 4 });
                    bool allowCompeted = stockInfo.Details.All(x => x.StockQuantity == x.OutboundQuantity);
                    if (allowCompeted)
                    {
                        DeleteAndMoveIntoHtStockStatus(stockInfo);
                    }
                    else
                    {
                        decimal returnQuantity = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity;
                        Dt_ReturnOrder returnOrder = new Dt_ReturnOrder
                        {
                            MaterielCode = stockInfoDetail.MaterielCode,
                            MaterielName = stockInfoDetail.MaterielName,
                            BatchNo = stockInfoDetail.BatchNo,
                            OrderQuantity = returnQuantity,
                            ReceiptQuantity = returnQuantity,
                            OrderStatus = InOrderStatusEnum.未开始.ObjToInt(),
                            LinId = stockInfoDetail.LinId,
                            LPNNo = stockInfo.PalletCode,
                            Creater = "LK",
                            CreateDate = DateTime.Now,
                            OrderType = OrderTypeEnum.余料回库单.ObjToInt(),
                            System = "WMS"
                        };
                        if(lastReturnOrder != null)
                        {
                            lastReturnOrder.Remark = lastReturnOrder.Remark + $",{returnOrder.BatchNo}";
                            _returnOrderRepository.UpdateData(lastReturnOrder);
                        }
                        if (outboundOrder.System == "SMOM" && stockInfo.LocationCode != null)
                        {
                            returnOrder.LocationCode = stockInfo.LocationCode;
                        }
                        _unitOfWorkManage.BeginTran();
                        if(lastReturnOrder == null)
                        {
                            _returnOrderRepository.AddData(returnOrder);
                            lastReturnOrder = returnOrder;
                        }
                        stockInfo.LocationCode = "";
                        stockInfo.StockStatus = StockStatusEmun.余料退库.ObjToInt();
                        stockInfo.Remark = "余料退库";
                        stockInfoDetail.OutboundQuantity = 0;
                        stockInfoDetail.StockQuantity = returnQuantity;
                        stockInfoDetail.OrderNo = lastReturnOrder.OrderNo;
                        _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                        _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
                        _unitOfWorkManage.CommitTran();
                    }
                }
            }
        }
        //低温、药水回库单
        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>()
@@ -2951,6 +2998,26 @@
                }
                else
                {
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = 1 });
                    var postData = new
                    {
                        DeviceCode = task.NextAddress,    // 屏幕编号
                        MaterialCode = stockInfoDetail.MaterielCode,//物料类型
                        SendNum = stockInfoDetail.OutboundQuantity,//发料数
                        BackNum = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity//回库数
                    };
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文2 = postData });
                    string json = Newtonsoft.Json.JsonConvert.SerializeObject(postData);
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文3 = json });
                    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;
                        WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = response, 接收报文 = result });
                    }
                    WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = 4 });
                    bool allowCompeted = stockInfo.Details.All(x => x.StockQuantity == x.OutboundQuantity);
                    if (allowCompeted)
                    {
@@ -3010,7 +3077,7 @@
        }
        //成品回库单
        private void AddCPRetrueOrder(Dt_StockInfo stockInfo, Dt_NewOutboundOrder outboundOrder, List<Dt_NewOutboundOrderDetail> outboundOrderDetails)
        private void AddCPRetrueOrder(Dt_Task task,Dt_StockInfo stockInfo, Dt_NewOutboundOrder outboundOrder, List<Dt_NewOutboundOrderDetail> outboundOrderDetails)
        {
            List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
                .Where(x => x.StockId == stockInfo.Id)
@@ -3064,6 +3131,28 @@
                }
                else
                {
                    foreach(var stockInfoDetail in stockInfoDetails)
                    {
                        WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = 1 });
                        var postData = new
                        {
                            DeviceCode = task.NextAddress,    // 屏幕编号
                            MaterialCode = stockInfoDetail.MaterielCode,//物料类型
                            SendNum = stockInfoDetail.OutboundQuantity,//发料数
                            BackNum = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity//回库数
                        };
                        WriteLog.Write_Log("API", "成品库入库—请求LED", "请求成功", new { 请求报文2 = postData });
                        string json = Newtonsoft.Json.JsonConvert.SerializeObject(postData);
                        WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文3 = json });
                        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;
                            WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = response, 接收报文 = result });
                        }
                        WriteLog.Write_Log("API", "出库—请求LED", "请求成功", new { 请求报文 = 4 });
                    }
                    var groupedDetails = outboundOrderDetails
                        .GroupBy(d => new { d.MaterielCode, d.BatchNo })
                        .ToList();
@@ -3875,520 +3964,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; }
    }
}