/// <summary>
        ///  生成领用信息(领用单号和领用详情)
        /// </summary>
        /// <param name="goodsDtos">操作数据</param>
        /// <returns></returns>
        public bool InsertFetchOrderInfo(List <GoodsDto> goodsDtos, GoodsChageAttribute goodsChageAttribute, string surgeryOrderCode, out string goodsChangeBusinessOrderCode)
        {
            goodsChangeBusinessOrderCode = null;

            if (goodsDtos.Count <= 0)
            {
                return(false);
            }

            //修改商品里的数据为有单领用
            goodsDtos.ForEach(it =>
            {
                if (it.exception_flag == (int)ExceptionFlag.正常 && it.fetch_type == (int)RequisitionAttribute.无单领用)
                {
                    it.fetch_type = (int)RequisitionAttribute.单领用;
                }
            });


            List <GoodsDto> goodsDtosNotEx = goodsDtos.Where(it => it.exception_flag == (int)ExceptionFlag.正常).ToList();

            if (goodsDtosNotEx.Count <= 0)
            {
                return(false);
            }

            //生成领用单的业务单号,根据实际情况
            string business_order_code;

            switch (goodsChageAttribute.RequisitionType)
            {
            case RequisitionType.一般领用:
                business_order_code = "-";
                break;

            case RequisitionType.无单手术领用:
                business_order_code = "";
                break;

            case RequisitionType.单手术领用:
                business_order_code = surgeryOrderCode;
                break;

            default:
                business_order_code = "";
                break;
            }

            //事务防止多插入产生脏数据
            var result = Db.Ado.UseTran(() =>
            {
                //领用单id
                FetchOrder fetchOrder = Db.Insertable(new FetchOrder
                {
                    //用uuid当作新生成的领用单单号
                    code                = Guid.NewGuid().ToString("N"),
                    create_time         = DateTime.Now,
                    operator_id         = 1,
                    type                = (int)goodsChageAttribute.RequisitionType,
                    status              = (int)goodsChageAttribute.RequisitionStatus,
                    business_order_code = business_order_code
                }).ExecuteReturnEntity();



                List <FetchOrderdtl> fetchOrderdtls = goodsDtosNotEx.MapToListIgnoreId <GoodsDto, FetchOrderdtl>();

                fetchOrderdtls.ForEach(it =>
                {
                    it.is_add           = 0;
                    it.related_order_id = fetchOrder.id;
                    it.status           = (int)goodsChageAttribute.ConsumablesStatus;
                });

                Db.Insertable(fetchOrderdtls).ExecuteCommand();

                return(fetchOrder);
            });

            //返回用于生成库存变化单的业务单号
            if (result.IsSuccess)
            {
                goodsChangeBusinessOrderCode = result.Data.code;
            }


            return(result.IsSuccess);
        }
 private void VisitOrderBy(MethodCallExpression m)
 {
     // visit the source
     this.Visit(m.Arguments[0]);
     // BUG: Check that order attribute is on primary (non-linked/joined) entity
     FetchOrder order = new FetchOrder((((m.Arguments[1] as UnaryExpression).Operand as LambdaExpression).Body as MemberExpression).Member.Name);
     stmt.Entity.Orders.Add(order);
 }