public object Post(OrderModel model)
        {
            if (model == null || model.OrderDetailModels.Any() == false)
            {
                return Failed("合同不能为空");
            }
            if (model.OrderDetailModels.Any(n => n.Qty == 0))
            {
                return Failed("合同的每个料号都需要数量");
            }
            if (model.OrderDate == DateTime.MinValue)
            {
                return Failed("合同不能没有日期");
            }
            if (model.PayPeriodModel == null)
            {
                return Failed("请选择账期");
            }
            var payPeriod = _payPeriodService.GetPayPeriod(model.PayPeriodModel.Id);
            if (payPeriod == null)
            {
                return Failed("请选择账期");
            }
            var currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            var currentPosition =
                _employeesService.GetEmployee(HttpContext.Current.User.Identity.GetUser().EmployeeId)
                    .EmployeePostions.Where(
                        n => n.StartDate <= currentDate && (n.EndDate == null || n.EndDate >= currentDate) && n.IsDeleted == false)
                    .Select(n => n.Position)
                    .FirstOrDefault();
            if (currentPosition == null)
            {
                return Failed("没有权限");
            }
            if (model.OrderDetailModels.Select(n => n.EnquiryModel.CustomerModel.Id).Distinct().Count() != 1)
            {
                return Failed("一次合同只限一个客户");
            }
            var orderdetails = new List<OrderDetail>();
            foreach (var item in model.OrderDetailModels)
            {
                var enquiry = _enquiryService.GetEnquiry(item.EnquiryModel.Id);
                if (item.UnitPrice == null)
                {
                    return Failed("请填写单价");
                }
                if (item.Qty == null)
                {
                    return Failed("请填写数量");
                }
                if (enquiry == null || enquiry.IsDeleted || enquiry.PositionId != currentPosition.Id)
                {
                    return Failed("禁止提交");
                }
                if (enquiry.Price == null || item.UnitPrice < enquiry.Price ||
                    (Math.Abs(item.UnitPrice.Value) > Math.Abs(enquiry.Price.Value) * (decimal)1.05))
                {
                    return Failed("单价超出范围");
                }
                orderdetails.Add(new OrderDetail
                {
                    Id = Guid.NewGuid(),
                    Qty = item.Qty.Value,
                    EnquiryId = enquiry.Id,
                    TotalPrice = (decimal)(item.Qty * item.UnitPrice.Value),
                    UnitPrice = item.UnitPrice.Value
                });
            }
            var parentRole =
                _auditLevelService.GetAuditLevels()
                    .Where(n => n.RoleId == currentPosition.Role.Id)
                    .Select(n => n.ParentRole).FirstOrDefault();
            var customer = _customerService.GetCustomer(model.CustomerModel.Id);
            if (parentRole == null)
            {
                return Failed("找不到上级审核人");
            }
            if (customer == null)
            {
                return Failed("找不到客户");
            }
            try
            {
                var item = new Order
                {
                    Id = Guid.NewGuid(),
                    Remark = model.Remark,
                    OrderDate = model.OrderDate,
                    PayPeriodId = model.PayPeriodModel.Id,
                    EstimatedDeliveryDate = model.EstimatedDeliveryDate,
                    LastPayDate = model.OrderDate.AddDays(payPeriod.Days),
                    OrderReviews = new Collection<OrderReview>
                    {
                        new OrderReview
                        {
                            Id = Guid.NewGuid(),
                            SendToRoleId = parentRole.Id
                        }
                    },
                    ContractAmount = orderdetails.Sum(p => p.TotalPrice),
                    OrderDetails = orderdetails,
                    PositionId = currentPosition.Id,
                    CustomerId = customer.Id
                };
                _orderService.Insert(item);
                return Success();
            }
            catch (Exception ex)
            {

                return Failed(ex.Message);
            }


        }
        public object Put(Guid id, OrderModel model)
        {
            var item = _orderService.GetOrder(id);
            if (item == null)
            {
                return Failed("找不到合同");
            }
            if (model.OrderDetailModels == null || model.OrderDetailModels.Any() == false)
            {
                return Failed("合同没有具体料号");
            }
            if (model.OrderDate == DateTime.MinValue)
            {
                return Failed("不能没有合同日期");
            }
            if (model.PayPeriodModel == null)
            {
                return Failed("请选择账期");
            }
            if (model.OrderDetailModels.Select(n => n.EnquiryModel.CustomerModel.Id).Distinct().Count() != 1)
            {
                return Failed("一次合同只限一个客户");
            }
            if (model.OrderDetailModels.Any(n => n.Qty == null || n.UnitPrice == null))
            {
                return Failed("数量金额不得为空");
            }
            var payPeriod = _payPeriodService.GetPayPeriod(model.PayPeriodModel.Id);
            if (payPeriod == null)
            {
                return Failed("请选择账期");
            }
            var currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            var currentPosition =
                _employeesService.GetEmployee(HttpContext.Current.User.Identity.GetUser().EmployeeId)
                    .EmployeePostions.Where(
                        n => n.StartDate <= currentDate && (n.EndDate == null || n.EndDate >= currentDate) && n.IsDeleted == false)
                    .Select(n => n.Position)
                    .FirstOrDefault();
            if (currentPosition == null || currentPosition.Id != item.PositionId)
            {
                return Failed("没有权限");
            }
            var parentRole =
                _auditLevelService.GetAuditLevels()
                    .Where(n => n.RoleId == currentPosition.Role.Id)
                    .Select(n => n.ParentRole).FirstOrDefault();
            if (parentRole == null)
            {
                return Failed("找不到上级审核人");
            }
            //更新Detail
            foreach (var detail in item.OrderDetails)
            {
                var detailmodel = model.OrderDetailModels.FirstOrDefault(n => n.Id == detail.Id);
                if (detailmodel != null)
                {
                    if (detail.Enquiry.Price == null || detailmodel.UnitPrice < detail.Enquiry.Price ||
                    (Math.Abs(Convert.ToDecimal(detailmodel.UnitPrice)) > Math.Abs(detail.Enquiry.Price.Value) * (decimal)1.05))
                    {
                        return Failed("单价超出范围");
                    }
                    if (detailmodel.Qty != null)
                    {
                        detail.Qty = detailmodel.Qty.Value;
                    }
                    if (detailmodel.UnitPrice != null)
                    {
                        detail.Qty = detailmodel.UnitPrice.Value;
                    }
                }
                else
                {
                    detail.IsDeleted = true;
                }
            }
            //新增Detail
            foreach (var detailmodel in model.OrderDetailModels)
            {
                var detail = item.OrderDetails.FirstOrDefault(n => n.Id == detailmodel.Id);
                if (detail == null)
                {
                    item.OrderDetails.Add(new OrderDetail
                    {
                        EnquiryId = detailmodel.EnquiryModel.Id,
                        Id = Guid.NewGuid(),
                        Qty = Convert.ToDecimal(detailmodel.Qty),
                        UnitPrice = Convert.ToDecimal(detailmodel.UnitPrice),
                        TotalPrice = Convert.ToDecimal(detailmodel.Qty * detailmodel.UnitPrice)
                    });
                }
            }
            item.Remark = model.Remark;
            var sum = model.OrderDetailModels.Sum(n => n.Qty * n.UnitPrice);
            if (sum != null)
            {
                item.ContractAmount = sum.Value;
            }
            item.OrderDate = model.OrderDate;
            item.EstimatedDeliveryDate = model.EstimatedDeliveryDate;
            item.PayPeriodId = model.PayPeriodModel.Id;
            item.LastPayDate = model.OrderDate.AddDays(payPeriod.Days);
            item.OrderReviews.Add(new OrderReview
            {
                Id = Guid.NewGuid(),
                SendToRoleId = parentRole.Id
            });
            try
            {
                _orderService.Update();
                return Success();
            }
            catch (Exception ex)
            {
                return Failed(ex.Message);
            }

        }