/// <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); } }
/// <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); } }
/// <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; } }
/// <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; } }
/// <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); }
/// <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; } }
/// <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; } }
/// <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; } }