コード例 #1
0
        /// <summary>
        /// 金商提货受理明细
        /// </summary>
        /// <param name="loginID"></param>
        /// <param name="agentInfoID"></param>
        /// <param name="orderNo">定单编码</param>
        /// <param name="orderCode">提货买跌验证号</param>
        /// <param name="accountName">用户名</param>
        /// <param name="createDate">提货开始时间</param>
        /// <param name="endDate">提货结束时间</param>
        /// <param name="pageindex"></param>
        /// <param name="pagesize"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public ErrType GetAgentOrderList(string agentInfoID, string loginID, string account,
                                         string orderNo, string orderCode, string userName, string createDate,
                                         string endDate, int pageindex, int pagesize, ref int page,
                                         ref ObservableCollection <BzjTakeGoodsDetailEntity> list, int roleType)
        {
            try
            {
                OrderEntity orderEntity = new OrderEntity();
                orderEntity.OrderNo    = orderNo;    //     定单编码
                orderEntity.OrderCode  = orderCode;  //	提货买跌验证号
                orderEntity.Account    = account;    //	用户
                orderEntity.CreateDate = createDate; //提货开始时间
                orderEntity.EndDate    = endDate;    //提货结束时间
                orderEntity.Name       = userName;
                //Name	String	姓名


                OrderOperationEntity opEntyit = new OrderOperationEntity();
                opEntyit.Type = 1;
                EntityBase result = _IManagerBzj.GetAgentOrderList(agentInfoID, orderEntity, loginID, pageindex, pagesize, ref page, roleType);
                if (result.Result)
                {
                    list = MyConverter.ToBzjTakeGoodsDetailEntity(result.DataSource);
                }
                return(result.Result ? GeneralErr.Success : new ErrType(ERR.SERVICE, result.Desc));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
                return(null);
            }
        }
コード例 #2
0
        /// <summary>
        /// 金商管理客户提货
        /// </summary>
        /// <param name="loginAccount">登录用户账户名/param>
        /// <param name="loginID">登录标识ID</param>
        /// <param name="agentInfoID">金商账户名</param>
        /// <param name="orderNo">定单编码</param>
        /// <param name="orderCode">提货买跌验证号</param>
        /// <param name="accountName">用户名</param>
        /// <param name="agentName">金商帐户</param>
        /// <param name="userID"></param>
        /// <param name="au">黄金</param>
        /// <param name="ag">白银</param>
        /// <returns></returns>
        public ErrType UpdateOrder(string loginAccount, string loginID, string agentInfoID,
                                   string orderNo, string orderCode, string accountName, string agentName, string userID, decimal au, decimal ag, decimal pt, decimal pd, int roleType)
        {
            try
            {
                OrderEntity orderEntity = new OrderEntity();

                orderEntity.OrderNo   = orderNo;     //     定单编码
                orderEntity.OrderType = 1;           //	定单类别:提货单= 1,
                orderEntity.CarryWay  = 1;           //	提货单方向:提货单 = 1
                orderEntity.OrderCode = orderCode;   //string	提货买跌验证号
                orderEntity.Account   = accountName; //	用户
                orderEntity.AgentName = agentName;   //	金商帐户
                orderEntity.UserId    = userID;
                orderEntity.Au        = au;          //黄金
                orderEntity.Ag        = ag;          //白银
                orderEntity.Pt        = pt;
                orderEntity.Pd        = pd;

                OrderOperationEntity opEntyit = new OrderOperationEntity();
                opEntyit.OperationId = loginAccount;
                opEntyit.Type        = 1;
                ResultDesc result = _IManagerBzj.UpdateOrder(loginID, orderEntity, opEntyit, agentInfoID, CommonHelper.GetNetwork(), roleType);
                return(result.Result ? GeneralErr.Success : new ErrType(ERR.SERVICE, result.Desc));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
                return(null);
            }
        }
コード例 #3
0
        /// <summary>
        /// 金商提货受理明细
        /// </summary>
        /// <param name="loginID"></param>
        /// <param name="agentInfoID"></param>
        /// <param name="orderNo">定单编码</param>
        /// <param name="orderCode">提货买跌验证号</param>
        /// <param name="accountName">用户名</param>
        /// <param name="createDate">提货开始时间</param>
        /// <param name="endDate">提货结束时间</param>
        /// <param name="pageindex"></param>
        /// <param name="pagesize"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public ErrType GetAgentOrderList(string agentInfoID, string loginID, string account,
            string orderNo, string orderCode, string userName, string createDate, 
            string endDate, int pageindex, int pagesize, ref int page,
            ref ObservableCollection<BzjTakeGoodsDetailEntity> list, int roleType)
        {
            try
            {
                OrderEntity orderEntity = new OrderEntity();
                orderEntity.OrderNo = orderNo;	// 	定单编码
                orderEntity.OrderCode = orderCode;	//	提货买跌验证号
                orderEntity.Account = account;	//	用户
                orderEntity.CreateDate = createDate;//提货开始时间
                orderEntity.EndDate = endDate;//提货结束时间
                orderEntity.Name = userName;
                //Name	String	姓名	


                OrderOperationEntity opEntyit = new OrderOperationEntity();
                opEntyit.Type = 1;
                EntityBase result = _IManagerBzj.GetAgentOrderList(agentInfoID, orderEntity, loginID, pageindex, pagesize, ref  page, roleType);
                if (result.Result)
                    list = MyConverter.ToBzjTakeGoodsDetailEntity(result.DataSource);
                return result.Result ? GeneralErr.Success : new ErrType(ERR.SERVICE, result.Desc);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
                return null;
            }
        }
コード例 #4
0
        /// <summary>
        /// 金商管理客户提货
        /// </summary>
        /// <param name="loginAccount">登录用户账户名/param>
        /// <param name="loginID">登录标识ID</param>
        /// <param name="agentInfoID">金商账户名</param>
        /// <param name="orderNo">定单编码</param>
        /// <param name="orderCode">提货买跌验证号</param>
        /// <param name="accountName">用户名</param>
        /// <param name="agentName">金商帐户</param>
        /// <param name="userID"></param>
        /// <param name="au">黄金</param>
        /// <param name="ag">白银</param>
        /// <returns></returns>
        public ErrType UpdateOrder(string loginAccount,string loginID, string agentInfoID,
            string orderNo, string orderCode, string accountName, string agentName, string userID, decimal au, decimal ag,decimal pt,decimal pd, int roleType)
        {
            try
            {
                OrderEntity orderEntity = new OrderEntity();

                orderEntity.OrderNo = orderNo;	// 	定单编码
                orderEntity.OrderType = 1;	//	定单类别:提货单= 1,        
                orderEntity.CarryWay = 1;	//	提货单方向:提货单 = 1
                orderEntity.OrderCode = orderCode;	//string	提货买跌验证号
                orderEntity.Account = accountName;	//	用户
                orderEntity.AgentName = agentName;	//	金商帐户
                orderEntity.UserId = userID;
                orderEntity.Au = au;//黄金
                orderEntity.Ag = ag;//白银
                orderEntity.Pt = pt;
                orderEntity.Pd = pd;

                OrderOperationEntity opEntyit = new OrderOperationEntity();
                opEntyit.OperationId = loginAccount;
                opEntyit.Type = 1;
                ResultDesc result = _IManagerBzj.UpdateOrder(loginID, orderEntity, opEntyit, agentInfoID, CommonHelper.GetNetwork(), roleType);
                return result.Result ? GeneralErr.Success : new ErrType(ERR.SERVICE, result.Desc);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
                return null;
            }
        }
コード例 #5
0
 /// <summary>
 /// 操作记录
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="tran"></param>
 /// <returns></returns>
 public static int CreateOrderOperation(OrderOperationEntity entity, YicelTransaction tran)
 {
     SqlParameter[] parms = new SqlParameter[] {
         new SqlParameter("@OperationId",entity.OperationId),
         new SqlParameter("@OrderId",entity.OrderId),
         new SqlParameter("@OrderNo",entity.OrderNo),
         new SqlParameter("@Type",entity.Type),
         new SqlParameter("@Account",entity.Account),
         new SqlParameter("@OperationIP",entity.OperationIP),
         new SqlParameter("@OperationDate",entity.OperationDate),
         new SqlParameter("@Remark",entity.Remark)
     };
     //   Dictionary<string, object> parms = OperationValueParas(entity);   @OperationId
     StringBuilder strSql = new StringBuilder();
     strSql.AppendFormat("insert into OrderOperation_BZJ({0})", Fields.OrderOperation_FIELD_LIST);
     strSql.AppendFormat(" values ({0})", "@" + Fields.OrderOperation_FIELD_LIST.Replace(",", ",@"));
     object obj = DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction);
     return obj == null || obj == DBNull.Value ? 0 : Convert.ToInt32(obj);
 }
コード例 #6
0
        /// <summary>
        /// 金生金办理
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="operationEntity"></param>
        /// <param name="loginId"></param>
        /// <returns></returns>
        public static int CreateJSJOrder(OrderEntity entity, OrderOperationEntity operationEntity, string loginId)
        {
            List<DeliverEntity> deliverList = new List<DeliverEntity>();//需要更新的交割单列表
            List<DeliverRecordEntity> deliverRecordList = new List<DeliverRecordEntity>();//交割单记录列表
            #region 赋值

            entity.OrderId = Guid.NewGuid().ToString("n");
            entity.OrderNo = "JSJ" + DateTime.Now.ToString("yyMMddhhmmssffff");
            entity.OrderCode = "";
            entity.OrderType = (int)OrderType.金生金;
            entity.State = (int)OrderState.新订单;
            entity.CreateDate = DateTime.Now.ToString();
            entity.EndDate = DateTime.Now.ToString();

            operationEntity.OperationId = Guid.NewGuid().ToString("n");
            operationEntity.OperationDate = DateTime.Now.ToString();
            operationEntity.Account = entity.Account;
            operationEntity.OperationId = Guid.NewGuid().ToString("n");
            operationEntity.OrderId = entity.OrderId;
            operationEntity.OrderNo = entity.OrderNo;
            operationEntity.Type = 5;
            operationEntity.Remark = string.Format("用户:{0} 创建金生金订单", entity.Account);

            #endregion

            List<DeliverEntity> list = GetListByAccount(entity.Account, Direction.提货单, 1);

            #region 计算交割单信息

            Dictionary<GoodsType, decimal> dic = new Dictionary<GoodsType, decimal>();
            dic.Add(GoodsType.Au, entity.Au);
            dic.Add(GoodsType.Ag, entity.Ag);
            dic.Add(GoodsType.Pd, entity.Pd);
            dic.Add(GoodsType.Pt, entity.Pt);
            foreach (var key in dic.Keys)
            {
                var tmp = list.Where(m => m.Goods.Equals((int)key)).ToList();
                var values = dic[key];
                if (values <= 0) continue;
                foreach (var mm in tmp)
                {
                    DeliverRecordEntity recordEntity = new DeliverRecordEntity
                    {
                        DeliverId = mm.DeliverId,
                        DeliverNo = mm.DeliverNo,
                        Goods = mm.Goods,
                        Direction = mm.Direction,
                        LockPrice = mm.LockPrice,
                        OrderType = (int)OrderType.金生金,
                        OrderId = entity.OrderId,
                        OrderNo = entity.OrderNo
                    };
                    if (values > mm.AvailableTotal)
                    {
                        recordEntity.UseTotal = mm.AvailableTotal;
                        values -= mm.AvailableTotal;
                        mm.AvailableTotal = 0;
                        mm.State = 0;
                        deliverList.Add(mm);
                        deliverRecordList.Add(recordEntity);
                        break;
                    }
                    else
                    {
                        mm.State = values.Equals(mm.AvailableTotal) ? 0 : 1;
                        recordEntity.UseTotal = values;
                        mm.AvailableTotal -= values;
                        deliverList.Add(mm);
                        deliverRecordList.Add(recordEntity);
                        break;
                    }
                }
            }

            #endregion
            StockEntity userEntity = new StockEntity();
            userEntity = LoadByAccount(entity.UserId);

            entity.AuP = userEntity.AuPrice;
            entity.AgP = userEntity.AgPrice;
            UserLogEntity userLogEntity = new UserLogEntity();

            userLogEntity.Account = entity.UserId;
            userLogEntity.DESC = string.Format(@"用户{0}金生金办理:Ag:{1},Au:{2};订单号:{3}", entity.Account, entity.Au, entity.Ag, entity.OrderNo);
            userLogEntity.UserType = (int)LogType.用户库存调整减少;
            YicelTransaction tran = new YicelTransaction();
            try
            {
                tran.BeginTransaction();
                CreateOrder(entity, tran);//创建订单信息
                CreateOrderOperation(operationEntity, tran);//创建金生金订单操作记录
                deliverRecordList.ForEach(m => CreateDeliverRecord(m, tran));//插入交割单记录信息
                deliverList.ForEach(m => UpdateDeliver(m, entity, operationEntity.OperationId, tran));//更新交割单信息
                UpdateUserTotal(entity, userEntity, tran);//更新用户库存数量
                CreateLog(userLogEntity, tran);
                tran.Commit();
                return 1;
            }
            catch (Exception ex)
            {
                tran.Rollback();
                ManagerLog.WriteErr(ex);
                return 0;
            }
        }
コード例 #7
0
        /// <summary>
        /// 更新订单状态为已提货或卖
        /// </summary>
        /// <param name="agentId"></param>
        /// <param name="order"></param>
        /// <param name="dataMember"></param>
        /// <param name="operationEntity"></param>
        /// <returns></returns>
        public static bool UpdateOrder(string agentId, OrderEntity order, List<UpdateDataMember> dataMember, OrderOperationEntity operationEntity)
        {
            List<DeliverEntity> deliverList = new List<DeliverEntity>();//需要更新的交割单列表
            List<DeliverRecordEntity> deliverRecordList = new List<DeliverRecordEntity>();
            List<UpdateDataMember> updateList = new List<UpdateDataMember>();//需要更新的订单信息
            List<UpdateDataMember> userList = new List<UpdateDataMember>();//需要更新用户数量

            OrderEntity entity = LoadByOrderCode(order.OrderCode);//获取订单信息
            StockEntity stockEntity = LoadByAccount(entity.UserId);//获取订单所属用户信息
            Direction d = entity.OrderType == (int)OrderType.提货单 ? Direction.提货单 : Direction.卖单;

            #region 合法性验证
            //获取用户交割单各物品总重量
            Dictionary<GoodsType, GoodsEntity> goodsDic = GetGoodsDic(entity.Account, d);
            //判断用户交割单种类是否小于0 或者小于提交的种类数量
            if (goodsDic.Count <= 0 || goodsDic.Count < dataMember.Count)
                return false;
            //判断用户物品数量是否与交割物品数量相等 2013/4/6
            if (!CheckTotal(order, stockEntity))
                return false;

            //循环判断提交重量是否大于用户交割单总重量
            foreach (var m in dataMember)
            {
                foreach (var g in goodsDic.Values)
                {
                    if (m.field.ToLower() == g.Symbol.ToString().ToLower() && Convert.ToDecimal(m.value) > g.Total)
                    {
                        return false;
                    }
                    else
                    {
                        if (m.field.ToLower() == "au")
                        {
                            entity.Au = Convert.ToDecimal(m.value);
                            updateList.Add(new UpdateDataMember { field = "Au", value = m.value });

                            updateList.Add(new UpdateDataMember { field = "AuP", value = stockEntity.AuPrice });
                            if (Convert.ToDecimal(m.value) > stockEntity.AuAmount)
                            {
                                updateList.Add(new UpdateDataMember { field = "AuQuantity", value = stockEntity.AuAmount });
                            }
                            else
                            {
                                updateList.Add(new UpdateDataMember { field = "AuQuantity", value = m.value });
                            }
                            break;
                        }
                        if (m.field.ToLower() == "ag")
                        {
                            entity.Ag = Convert.ToDecimal(m.value);
                            updateList.Add(new UpdateDataMember { field = "Ag", value = m.value });

                            updateList.Add(new UpdateDataMember { field = "AgP", value = stockEntity.AgPrice });
                            if (Convert.ToDecimal(m.value) > stockEntity.AuAmount)
                            {
                                updateList.Add(new UpdateDataMember { field = "AgQuantity", value = stockEntity.AgAmount });
                            }
                            else
                            {
                                updateList.Add(new UpdateDataMember { field = "AgQuantity", value = m.value });
                            }
                            break;
                        }
                        if (m.field.ToLower() == "pt")
                        {
                            entity.Pt = Convert.ToDecimal(m.value);
                            updateList.Add(new UpdateDataMember { field = "Pt", value = m.value });

                            updateList.Add(new UpdateDataMember { field = "PtP", value = stockEntity.PtPrice });
                            if (Convert.ToDecimal(m.value) > stockEntity.AuAmount)
                            {
                                updateList.Add(new UpdateDataMember { field = "PtQuantity", value = stockEntity.PtAmount });
                            }
                            else
                            {
                                updateList.Add(new UpdateDataMember { field = "PtQuantity", value = m.value });
                            }
                            break;
                        }
                        if (m.field.ToLower() == "pd")
                        {
                            entity.Pd = Convert.ToDecimal(m.value);
                            updateList.Add(new UpdateDataMember { field = "Pd", value = m.value });

                            updateList.Add(new UpdateDataMember { field = "PdP", value = stockEntity.AuPrice });
                            if (Convert.ToDecimal(m.value) > stockEntity.AuAmount)
                            {
                                updateList.Add(new UpdateDataMember { field = "PdQuantity", value = stockEntity.AuAmount });
                            }
                            else
                            {
                                updateList.Add(new UpdateDataMember { field = "PdQuantity", value = m.value });
                            }
                            break;
                        }
                    }
                }
            }

            #endregion

            //获取交割单信息
            List<DeliverEntity> list = GetListByAccount(entity.Account, d, 1);
            if (list == null || list.Count <= 0)
                return false;

            #region 计算交割单信息

            Dictionary<GoodsType, decimal> dic = new Dictionary<GoodsType, decimal>();
            dic.Add(GoodsType.Au, entity.Au);
            dic.Add(GoodsType.Ag, entity.Ag);
            dic.Add(GoodsType.Pd, entity.Pd);
            dic.Add(GoodsType.Pt, entity.Pt);
            foreach (var key in dic.Keys)
            {
                var tmp = list.Where(m => m.Goods.Equals(key)).ToList(); var values = dic[key];
                if (values <= 0) continue;
                foreach (var mm in tmp)
                {
                    DeliverRecordEntity recordEntity = new DeliverRecordEntity
                    {
                        DeliverId = mm.DeliverId,
                        DeliverNo = mm.DeliverNo,
                        Goods = mm.Goods,
                        Direction = mm.Direction,
                        LockPrice = mm.LockPrice,
                        OrderType = order.OrderType,
                        OrderId = entity.OrderId,
                        OrderNo = entity.OrderNo
                    };
                    if (values > mm.AvailableTotal)
                    {
                        recordEntity.UseTotal = mm.AvailableTotal;
                        values -= mm.AvailableTotal;
                        mm.AvailableTotal = 0;
                        mm.State = 0;
                        deliverList.Add(mm);
                        deliverRecordList.Add(recordEntity);
                    }
                    else
                    {
                        mm.State = values.Equals(mm.AvailableTotal) ? 0 : 1;
                        recordEntity.UseTotal = values;
                        mm.AvailableTotal -= values;
                        deliverList.Add(mm);
                        deliverRecordList.Add(recordEntity);
                        break;
                    }
                }
            }

            #endregion

            #region 部分实体赋值
            AgentDeliverEntity agentDeliverEntity = new AgentDeliverEntity
            {
                AgentInfoId = agentId,
                OrderId = entity.OrderId,
                FromTo = 1,
                Direction = d,
                Ag = entity.Ag,
                Au = entity.Au,
                Pd = entity.Pd,
                Pt = entity.Pt
            };
            #endregion
            updateList.Add(new UpdateDataMember { field = "State", value = "2" });
            updateList.Add(new UpdateDataMember { field = "Version", value = (entity.Version + 1).ToString() });
            updateList.Add(new UpdateDataMember { field = "EndDate", value = DateTime.Now.ToString() });

            UserLogEntity userLogEntity = new UserLogEntity();

            userLogEntity.Account = agentId;
            userLogEntity.DESC = string.Format(@"金商{5},用户{0}提货:Ag:{1},Au:{2},Pt:{3},Pd:{4};", entity.Account, entity.Au, entity.Ag, entity.Pt, entity.Pd, entity.AgentName);
            userLogEntity.UserType = (int)LogType.用户库存调整减少;

            operationEntity.OrderId = entity.OrderId;
            operationEntity.OrderNo = entity.OrderNo;
            YicelTransaction tran = new YicelTransaction();
            try
            {
                tran.BeginTransaction();
                UpdateColumns(entity.OrderId, updateList, tran);
                CreateOrderOperation(operationEntity, tran);//创建订单操作记录
                deliverList.ForEach(m => UpdateDeliver(m, entity, operationEntity.OperationId, tran));//更新交割单信息
                deliverRecordList.ForEach(m => CreateDeliverRecord(m, tran));//创建订单对应交割单信息
                UpdateUserTotal(entity, stockEntity, tran);//更新用户库存数量
                CreateAgent(agentDeliverEntity, tran);//创建金商库存
                CreateLog(userLogEntity, tran);
                tran.Commit();
                return true;
            }
            catch
            {
                tran.Rollback();
                return false;
            }
        }
コード例 #8
0
        /// <summary>
        /// 创建回购订单
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="operationEntity"></param>
        /// <param name="loginId"></param>
        /// <returns></returns>
        public static bool CreateBackOrder(OrderEntity entity, OrderOperationEntity operationEntity, string loginId)
        {
            List<DeliverEntity> deliverList = new List<DeliverEntity>();//需要更新的交割单列表
            List<DeliverRecordEntity> deliverRecordList = new List<DeliverRecordEntity>();//交割单记录列表

            StockEntity stockEntity = new StockEntity();
            stockEntity = LoadByAccount(entity.UserId); //用户信息
            #region 赋值

            entity.OrderId = Guid.NewGuid().ToString("n");
            entity.OrderNo = "HG" + DateTime.Now.ToString("yyMMddhhmmssffff");
            entity.OrderCode = "";
            entity.OrderType = (int)OrderType.回购单;
            entity.State = (int)OrderState.新订单;
            entity.CreateDate = DateTime.Now.ToString();
            entity.EndDate = DateTime.Now.AddDays(7).ToString();

            decimal temp = 0;
            if (stockEntity.Au < entity.Au)
            {
                temp = entity.Au - stockEntity.Au;
                entity.AuP = temp * entity.AuP + entity.Au * (entity.AuP - 3);
            }
            if (stockEntity.Ag < entity.Ag)
            {
                temp = entity.Ag - stockEntity.Ag;
                entity.AgP = temp * entity.AgP + entity.Ag * (entity.AgP - 1);
            }

            if (stockEntity.Pt < entity.Pt)
            {
                temp = entity.Pt - stockEntity.Pt;
                entity.PtP = temp * entity.PtP + entity.Pt * (entity.PtP - 3);
            }

            if (stockEntity.Pd < entity.Pd)
            {
                temp = entity.Pd - stockEntity.Pd;
                entity.PdP = temp * entity.PdP + entity.Pd * (entity.PdP - 3);
            }

            entity.AuQuantity = entity.Au * entity.AuP;
            entity.AgQuantity = entity.Ag * entity.AgP;
            entity.PtQuantity = entity.Pt * entity.PtP;
            entity.PdQuantity = entity.Pd * entity.PdP;

            operationEntity.OperationId = Guid.NewGuid().ToString("n");
            operationEntity.OperationDate = DateTime.Now.ToString();
            operationEntity.OrderNo = entity.OrderNo;
            operationEntity.Remark = string.Format("用户:{0} 创建回购订单", entity.Account);
            operationEntity.OrderId = entity.OrderId;
            operationEntity.Account = entity.Account;
            operationEntity.Type = entity.OrderType;

            OrderPriceEntity orderPriceEntity = new OrderPriceEntity();
            orderPriceEntity.OrderId = entity.OrderId;
            orderPriceEntity.OrderNo = entity.OrderNo;
            orderPriceEntity.PriceId = "";
            orderPriceEntity.AuPrice = stockEntity.AuPrice;
            orderPriceEntity.AgPrice = stockEntity.AgPrice;
            orderPriceEntity.PtPrice = stockEntity.PtPrice;
            orderPriceEntity.PdPrice = stockEntity.PdPrice;

            #endregion

            //判断用户是否存在交割单
            List<DeliverEntity> list = GetListByAccount(entity.Account, Direction.提货单, 1);
            if (list == null || list.Count <= 0)
            {
                return false;
            }
            #region 计算交割单信息

            Dictionary<GoodsType, decimal> dic = new Dictionary<GoodsType, decimal>();
            dic.Add(GoodsType.Au, entity.Au);
            dic.Add(GoodsType.Ag, entity.Ag);
            dic.Add(GoodsType.Pd, entity.Pd);
            dic.Add(GoodsType.Pt, entity.Pt);
            foreach (var key in dic.Keys)
            {
                var tmp = list.Where(m => m.Goods.Equals((int)key)).ToList();
                var values = dic[key];
                if (values <= 0) continue;
                foreach (var mm in tmp)
                {
                    DeliverRecordEntity recordEntity = new DeliverRecordEntity
                    {
                        DeliverId = mm.DeliverId,
                        DeliverNo = mm.DeliverNo,
                        Goods = mm.Goods,
                        Direction = mm.Direction,
                        LockPrice = mm.LockPrice,
                        OrderType = (int)OrderType.回购单,
                        OrderId = entity.OrderId,
                        OrderNo = entity.OrderNo
                    };
                    if (values > mm.AvailableTotal)
                    {
                        recordEntity.UseTotal = mm.AvailableTotal;
                        values -= mm.AvailableTotal;
                        mm.AvailableTotal = 0;
                        mm.State = 0;
                        deliverList.Add(mm);
                        deliverRecordList.Add(recordEntity);
                    }
                    else
                    {
                        mm.State = values.Equals(mm.AvailableTotal) ? 0 : 1;
                        recordEntity.UseTotal = values;
                        mm.AvailableTotal -= values;
                        deliverList.Add(mm);
                        deliverRecordList.Add(recordEntity);
                        break;
                    }
                }
            }

            #endregion

            UserLogEntity userLogEntity = new UserLogEntity();

            userLogEntity.Account = entity.UserId;
            userLogEntity.DESC = string.Format(@"用户{0}创建回购订单,订单号:{1}", entity.Account, entity.OrderNo);
            userLogEntity.UserType = (int)LogType.创建回购订单;

            YicelTransaction tran = new YicelTransaction();
            try
            {
                tran.BeginTransaction();
                CreateOrder(entity, tran);//创建订单信息
                CreateOrderOperation(operationEntity, tran);//创建回购订单操作记录
                CreatePrice(orderPriceEntity, tran);//创建回购单价格信息
                deliverRecordList.ForEach(m => CreateDeliverRecord(m, tran));//插入交割单记录信息
                deliverList.ForEach(m => UpdateDeliver(m, entity, operationEntity.OperationId, tran));//更新交割单信息
                UpdateUserTotal(entity, stockEntity, tran);//更新用户库存数量
                CreateLog(userLogEntity, tran);
                tran.Commit();
                return true;
            }
            catch
            {
                tran.Rollback();
                return false;
            }
        }