dengjunjie
2025-01-17 df97e66f99cf081abf212a8d97fc32afe9c6e7a7
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
@@ -3,6 +3,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -15,9 +16,13 @@
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.Seed;
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Basic;
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Outbound;
@@ -38,23 +43,20 @@
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IBasicService _basicService;
        private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
        private readonly IStockInfoService _stockInfoService;
        private readonly IStockInfoRepository _stockInfoRepository;
        private readonly IStockService _stockService;
        public IOutboundOrderRepository Repository => BaseDal;
        private readonly IInvokeERPService _invokeERPService;
        private readonly IOutStockLockInfoService _outStockLockInfoService;
        private readonly IOutboundOrderRepository _outboundOrderRepository;
        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IStockInfoService stockInfoService,
          IStockInfoRepository stockInfoRepository, IInvokeERPService invokeERPService, IOutStockLockInfoService outStockLockInfoService,
        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IStockService stockService, IInvokeERPService invokeERPService, IOutStockLockInfoService outStockLockInfoService,
          IOutboundOrderRepository outboundOrderRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
            _basicService = basicService;
            _outboundOrderDetailRepository = outboundOrderDetailRepository;
            _stockInfoService = stockInfoService;
            _stockInfoRepository = stockInfoRepository;
            _stockService = stockService;
            _invokeERPService = invokeERPService;
            _outStockLockInfoService = outStockLockInfoService;
            _outboundOrderRepository = outboundOrderRepository;
@@ -83,11 +85,11 @@
                List<Dt_OutboundOrder> dt_ReceiveOrders = new List<Dt_OutboundOrder>();
                if (string.IsNullOrEmpty(orderNo))
                {
                    dt_ReceiveOrders = Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderStatus < OutLockStockStatusEnum.出库完成.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
                    dt_ReceiveOrders = Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderStatus < OutLockStockStatusEnum.出库完成.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 5);
                }
                else
                {
                    dt_ReceiveOrders = Db.Queryable<Dt_OutboundOrder>().Where(x => (x.OrderNo.Contains(orderNo)) && x.OrderStatus < OutLockStockStatusEnum.出库完成.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
                    dt_ReceiveOrders = Db.Queryable<Dt_OutboundOrder>().Where(x => (x.OrderNo.Contains(orderNo)) && x.OrderStatus < OutLockStockStatusEnum.出库完成.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 5);
                }
                content.OK(data: dt_ReceiveOrders);
@@ -97,6 +99,175 @@
                content.Error(ex.Message);
            }
            return content;
        }
        public WebResponseContent outpinku(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var orderNo = saveModel.MainData["orderNo"].ToString();
                var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                var serNum = saveModel.MainData["sn"].ToString();
                Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseId == warehouseId);
                if (warehouse == null)
                {
                    return WebResponseContent.Instance.Error($"未找到该仓库信息");
                }
                Dt_OutboundOrder outboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == orderNo && x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).First();
                if (outboundOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到出库单信息");
                }
                if (outboundOrder.Details == null || outboundOrder.Details.Count <= 0)
                {
                    return WebResponseContent.Instance.Error($"未找到出库单明细信息");
                }
                MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum);
                Dt_MaterielInfo materielInfo = _basicService.MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == model.MaterielCode);
                if (materielInfo == null)
                {
                    return WebResponseContent.Instance.Error($"未找到该物料的信息");
                }
                if (materielInfo.WarehouseId != outboundOrder.WarehouseId)
                {
                    return WebResponseContent.Instance.Error($"该物料不属于本仓");
                }
                Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.MaterielCode == model.MaterielCode);
                if (outboundOrderDetail == null) return WebResponseContent.Instance.Error($"该物料不属于本出库单");
                if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt())
                    return WebResponseContent.Instance.Error($"本出库单当前物料已出库完成");
                if (outboundOrderDetail.OrderQuantity - outboundOrderDetail.OverOutQuantity < model.Quantity)
                    return WebResponseContent.Instance.Error($"出库数量超出出库单");
                Dt_StockInfoDetail stockInfoDetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.MaterielCode == model.MaterielCode && x.BatchNo == model.LotNo);
                if (stockInfoDetail == null) return WebResponseContent.Instance.Error($"未找到库存");
                if (stockInfoDetail.StockQuantity < model.Quantity) return WebResponseContent.Instance.Error($"库存不足");
                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.Id == stockInfoDetail.StockId);
                if (stockInfo == null) return WebResponseContent.Instance.Error($"未找到库存主表");
                if (stockInfo.LocationCode != "平库位") return WebResponseContent.Instance.Error($"库存不属于平库位");
                Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
                {
                    PalletCode = stockInfo.PalletCode,
                    AssignQuantity = model.Quantity,
                    MaterielCode = model.MaterielCode,
                    BatchNo = model.LotNo,
                    LocationCode = stockInfo.LocationCode,
                    MaterielName = materielInfo.MaterielName,
                    OrderDetailId = outboundOrderDetail.Id,
                    OrderNo = outboundOrder.OrderNo,
                    OrderType = outboundOrder.OrderType,
                    OriginalQuantity = stockInfoDetail.StockQuantity,
                    Status = OutLockStockStatusEnum.出库完成.ObjToInt(),
                    StockId = stockInfo.Id,
                    TaskNum = 0,
                    OrderQuantity = outboundOrderDetail.OrderQuantity,
                    Unit = outboundOrderDetail.Unit
                };
                #region ä¿®æ”¹å‡ºåº“单
                outboundOrderDetail.OverOutQuantity += outStockLockInfo.AssignQuantity;
                if (outboundOrderDetail.OrderQuantity > outboundOrderDetail.OverOutQuantity)
                    outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                else
                    outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                int overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count();
                if (outboundOrder.Details.Count == overCount)
                    outboundOrder.OrderStatus = OutOrderStatusEnum.出库完成.ObjToInt();
                else
                    outboundOrder.OrderStatus = OutOrderStatusEnum.出库中.ObjToInt();
                #endregion
                #region ä¿®æ”¹åº“å­˜
                stockInfoDetail.StockQuantity -= stockInfoDetail.StockQuantity - outStockLockInfo.AssignQuantity;
                #endregion
                _unitOfWorkManage.BeginTran();
                _outStockLockInfoService.Repository.AddData(outStockLockInfo);
                BaseDal.UpdateData(outboundOrder);
                _outboundOrderDetailRepository.UpdateData(outboundOrderDetail);
                if (stockInfoDetail.StockQuantity > 0)
                {
                    _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
                }
                else
                {
                    _stockService.StockInfoDetailService.Repository.DeleteData(stockInfoDetail);
                    if (stockInfo.Details.Count <= 1) _stockService.StockInfoService.Repository.DeleteData(stockInfo);
                }
                _unitOfWorkManage.CommitTran();
                #region å‡ºåº“完成上报ERP
                if (outboundOrder.OrderStatus == OutOrderStatusEnum.出库完成.ObjToInt())
                    _invokeERPService.InvokeOutStandardsApi(GetERPIssueModel(outboundOrder, warehouse.WarehouseCode));
                #endregion
                content.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        public ERPIssueModel GetERPIssueModel(Dt_OutboundOrder outboundOrder, string WarehouseCode)
        {
            ERPIssueModel issueModel = new ERPIssueModel();
            try
            {
                List<Dt_OutStockLockInfo> stockLockInfos = _outStockLockInfoService.OutStockLockInfos(outboundOrder.OrderNo);
                List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
                foreach (var item in stockLockInfos)
                {
                    ERPPickItemModel pickItemModel = new ERPPickItemModel()
                    {
                        Lotno = item.BatchNo,
                        Qty = item.AssignQuantity.ObjToInt().ToString(),
                        Location = WarehouseCode
                    };
                    //获取出库单明细
                    Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId);
                    ERPPickModel pickModel = new ERPPickModel()
                    {
                        Rowindex = outboundOrderDetail.RowNo,
                        Material = outboundOrderDetail.MaterielCode,
                        Qty = pickItemModel.Qty,
                        Dataitem = new List<ERPPickItemModel> { pickItemModel }
                    };
                    eRPPickModels.Add(pickModel);
                }
                ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
                {
                    Pickcode = outboundOrder.UpperOrderNo,
                    PickList = eRPPickModels
                };
                string Createuser = "";
                if (!string.IsNullOrEmpty(App.User.UserName)) Createuser = App.User.UserName;
                else Createuser = stockLockInfos.FirstOrDefault().Creater;
                issueModel = new ERPIssueModel()
                {
                    UniqueTag = outboundOrder.Id.ToString(),
                    Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
                    WarehouseCode = WarehouseCode,
                    Docremark = "",
                    Deptno = outboundOrder.DepartmentCode,
                    Deptname = outboundOrder.DepartmentName,
                    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    Createuser = string.IsNullOrEmpty(Createuser) ? Createuser : "admin",
                    Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                };
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return issueModel;
        }
        public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO model)
        {
@@ -164,7 +335,9 @@
                            WarehouseId = warehouse.WarehouseId,
                            DepartmentCode = model.DepartmentCode,
                            DepartmentName = model.DepartmentName,
                            Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail }
                            Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail },
                            Remark = model.Node
                        };
                        Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                    }
@@ -192,6 +365,7 @@
                        MaterielName = materielInfo.MaterielName,
                        OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                        OrderQuantity = model.Qty,
                        Unit = model.Unit,
                    };
                    _outboundOrderDetailRepository.UpdateData(outboundOrderDetail);
@@ -274,7 +448,7 @@
                    issueModel = new ERPIssueModel()
                    {
                        UniqueTag = id.ToString(),
                        Code = outboundOrder.OrderNo,//测试
                        Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),//测试
                        WarehouseCode = warehouse.WarehouseCode,
                        Docremark = "",
                        Deptno = outboundOrder.DepartmentCode,
@@ -283,70 +457,147 @@
                        Createuser = outboundOrder.Creater,
                        Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                    };
                    _invokeERPService.InvokeOutStandardsApi(issueModel);
                }
                else
                {
                    List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
                    //获取出库详情单
                    #region MyRegion
                    foreach (var item in outStockLockInfos)
                    {
                        ERPPickItemModel pickItemModel = new ERPPickItemModel()
                        {
                            Lotno = item.BatchNo,
                            Qty = item.AssignQuantity.ObjToInt().ToString(),
                            Location = warehouse.WarehouseCode
                        };
                        //获取出库单明细
                        Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId);
                        ERPPickModel pickModel = new ERPPickModel()
                        {
                            Rowindex = outboundOrderDetail.RowNo,
                            Material = outboundOrderDetail.MaterielCode,
                            Qty = pickItemModel.Qty,
                            Dataitem = new List<ERPPickItemModel> { pickItemModel }
                        };
                        if (item.OrderQuantity == item.AssignQuantity)
                        {
                            item.Status = OutLockStockStatusEnum.出库完成.ObjToInt();
                        }
                        eRPPickModels.Add(pickModel);
                        _OutStockLockInfos.Add(item);
                    }
                    ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
                    {
                        Pickcode = outboundOrder.UpperOrderNo,
                        PickList = eRPPickModels
                    };
                    issueModel = new ERPIssueModel()
                    {
                        UniqueTag = id.ToString(),
                        Code = outboundOrder.OrderNo,
                        WarehouseCode = warehouse.WarehouseCode,
                        Docremark = "",
                        Deptno = outboundOrder.DepartmentCode,
                        Deptname = outboundOrder.DepartmentName,
                        Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                        Createuser = outStockLockInfos.FirstOrDefault().Creater,
                        Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                    };
                    #endregion
                    #region MyRegion
                    //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
                    ////获取出库详情单
                    //foreach (var item in outStockLockInfos)
                    //{
                    //    ERPPickItemModel pickItemModel = new ERPPickItemModel()
                    //    {
                    //        Lotno = item.BatchNo,
                    //        Qty = item.AssignQuantity.ObjToInt().ToString(),
                    //        Location = warehouse.WarehouseCode
                    //    };
                    //    //获取出库单明细
                    //    Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId);
                    //    ERPPickModel pickModel = new ERPPickModel()
                    //    {
                    //        Rowindex = outboundOrderDetail.RowNo,
                    //        Material = outboundOrderDetail.MaterielCode,
                    //        Qty = pickItemModel.Qty,
                    //        Dataitem = new List<ERPPickItemModel> { pickItemModel }
                    //    };
                    //    if (item.OrderQuantity == item.AssignQuantity)
                    //    {
                    //        item.Status = OutLockStockStatusEnum.出库完成.ObjToInt();
                    //    }
                    //    eRPPickModels.Add(pickModel);
                    //    _OutStockLockInfos.Add(item);
                    //}
                    //ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
                    //{
                    //    Pickcode = outboundOrder.UpperOrderNo,
                    //    PickList = eRPPickModels
                    //};
                    //issueModel = new ERPIssueModel()
                    //{
                    //    UniqueTag = id.ToString(),
                    //    Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
                    //    WarehouseCode = warehouse.WarehouseCode,
                    //    Docremark = "",
                    //    Deptno = outboundOrder.DepartmentCode,
                    //    Deptname = outboundOrder.DepartmentName,
                    //    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    //    Createuser = outStockLockInfos.FirstOrDefault().Creater,
                    //    Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                    //};
                    #endregion
                }
                if (stockInfos.Count > 0)
                {
                    _stockInfoRepository.UpdateData(stockInfos);
                    _stockService.StockInfoService.Repository.UpdateData(stockInfos);
                }
                else
                {
                    _outStockLockInfoService.Repository.UpdateData(_OutStockLockInfos);
                }
                //出库完成上报ERP æµ‹è¯•注释
                _invokeERPService.InvokeOutStandardsApi(issueModel);
                if (outboundOrder.OrderStatus == OutOrderStatusEnum.出库完成.ObjToInt())
                {
                    issueModel = GetERPIssueModel(outboundOrder, warehouse.WarehouseCode);
                    _invokeERPService.InvokeOutStandardsApi(issueModel);
                }
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        static object lock_code = new object();
        public string CreateCodeByRule(string ruleCode)
        {
            lock (lock_code)
            {
                string code = string.Empty;
                DateTime dateTime = DateTime.Now;
                DateTime now = DateTime.Now;
                try
                {
                    if (string.IsNullOrEmpty(ruleCode))
                        throw new ArgumentNullException(nameof(ruleCode));
                    SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
                    {
                        IsAutoCloseConnection = false,
                        DbType = DbType.SqlServer,
                        ConnectionString = DBContext.ConnectionString
                    });
                    Dt_CodeRuleConfig codeRuleConfig = sugarClient.Queryable<Dt_CodeRuleConfig>().Where(x => x.RuleCode == ruleCode).First();
                    if (codeRuleConfig == null)
                        throw new ArgumentNullException(nameof(codeRuleConfig));
                    if (codeRuleConfig.ModifyDate != null)
                    {
                        dateTime = Convert.ToDateTime(codeRuleConfig.ModifyDate);
                    }
                    else
                    {
                        dateTime = Convert.ToDateTime(codeRuleConfig.CreateDate);
                    }
                    if (now.Year == dateTime.Year && now.Month == dateTime.Month && now.Day == dateTime.Day)
                    {
                        now = dateTime;
                        codeRuleConfig.CurrentVal = Convert.ToInt32(codeRuleConfig.CurrentVal) + 1;
                    }
                    else
                    {
                        codeRuleConfig.CurrentVal = 1;
                    }
                    codeRuleConfig.ModifyDate = DateTime.Now;
                    code = codeRuleConfig.Format;
                    code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
                    code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
                    code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
                    code = code.Replace($"[{CodeFormatTypeEnum.ST}]", codeRuleConfig.StartStr?.ToString() ?? "");
                    code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", codeRuleConfig.CurrentVal.ToString().PadLeft(codeRuleConfig.Length, '0'));
                    Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() { { nameof(codeRuleConfig.CurrentVal), codeRuleConfig.CurrentVal }, { nameof(codeRuleConfig.Id), codeRuleConfig.Id }, { nameof(codeRuleConfig.ModifyDate), DateTime.Now } };
                    sugarClient.Updateable(keyValuePairs).AS(MainDb.CodeRuleConfig).WhereColumns(nameof(codeRuleConfig.Id)).ExecuteCommand();
                    sugarClient.Updateable(codeRuleConfig);
                }
                catch (Exception ex)
                {
                }
                return code;
            }
        }
        /// <summary>
@@ -355,12 +606,12 @@
        /// <param name="warehouse"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public WebResponseContent TestOutStocksUpdate(Dt_Warehouse warehouse,Dt_OutboundOrderDetail outboundOrderDetails)
        public WebResponseContent TestOutStocksUpdate(Dt_Warehouse warehouse, Dt_OutboundOrderDetail outboundOrderDetails)
        {
            try
            {
                //获取出库单库存
                List<Dt_StockInfo> stockInfos = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).Where(x=>x.Details.Any(j=>j.MaterielCode== outboundOrderDetails.MaterielCode)).Take((int)outboundOrderDetails.OrderQuantity).ToList();
                List<Dt_StockInfo> stockInfos = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(j => j.MaterielCode == outboundOrderDetails.MaterielCode)).Take((int)outboundOrderDetails.OrderQuantity).ToList();
                if (stockInfos.Count <= 0)
                {
                    return WebResponseContent.Instance.OK();
@@ -377,5 +628,36 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// æ ¹æ®å‡ºåº“单推送ERP系统
        /// </summary>
        /// <param name="outId"></param>
        /// <param name="WarehouseCode"></param>
        /// <returns></returns>
        public WebResponseContent PushERPOutBound(int outId, string WarehouseCode)
        {
            WebResponseContent content=new WebResponseContent();
            try
            {
                //获取出库单
                Dt_OutboundOrder outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outId).Includes(x => x.Details).First();
                if (outboundOrder == null)
                {
                    return content.Error("出库单不存在");
                }
                if (outboundOrder.Details.Count!=(outboundOrder.Details.Where(x=>x.OrderDetailStatus==OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count)||outboundOrder.OrderStatus!=OutOrderStatusEnum.出库完成.ObjToInt())
                {
                    return content.Error("该出库单未完成");
                }
                ERPIssueModel issueModel = GetERPIssueModel(outboundOrder, WarehouseCode);
                string response=_invokeERPService.InvokeOutStandardsApi(issueModel);
                return content.OK(response);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}