/// <summary> /// 新增组织机构 /// </summary> /// <param name="loginId">登录ID</param> /// <param name="orgEntity"></param> /// <returns></returns> public EntityBase AddOrg(string loginId, OrgEntity orgEntity) { TradeUser TdUser = new TradeUser(); if (ComFunction.ExistUserLoginID(loginId, ref TdUser) == false) { return entityBase; } UserLogEntity userLogEntity = new UserLogEntity(); userLogEntity.Account = TdUser.Account; userLogEntity.DESC = string.Format(@"后台新增组织机构;{0}", orgEntity.OrgName); userLogEntity.UserType = (int)TdUser.UType; //检测使用组织编码作为默认组织账户时,组织账户是否已经存在 if(ComFunction.TradeAccountExist(orgEntity.TelePhone)) { entityBase.Result = false; entityBase.Desc = string.Format("新增失败,已存在组织账户{0}!", orgEntity.TelePhone); return entityBase; } if (ComFunction.IsExitOrgName(orgEntity.OrgName, orgEntity.TelePhone) >= 1) { entityBase.Result = false; entityBase.Desc = "新增失败,存在相同的机构名称或组织编码!"; return entityBase; } if (string.IsNullOrEmpty(orgEntity.ParentOrgId)) { orgEntity.ParentOrgId = ""; orgEntity.ParentOrgName = ""; } YicelTransaction tran = new YicelTransaction(); try { string ipmac = string.Empty; if (!string.IsNullOrEmpty(TdUser.Ip)) { ipmac += string.Format("IP={0},", TdUser.Ip); } if (!string.IsNullOrEmpty(TdUser.Mac)) { ipmac += string.Format("MAC={0},", TdUser.Mac); } tran.BeginTransaction(); ComFunction.AddOrg(orgEntity, tran); ComFunction.CreateLogEx(userLogEntity,ipmac, tran); tran.Commit(); entityBase.Result = true; entityBase.Desc = "组织机构新增成功"; } catch (Exception ex) { tran.Rollback(); entityBase.Result = false; entityBase.Desc = "组织机构新增失败"; SetException("组织机构新增失败,原因:", ex); } return entityBase; }
/// <summary> /// 新增组织机构 /// </summary> /// <param name="orgEntity"></param> /// <param name="tran"></param> /// <returns></returns> public static int AddOrg(OrgEntity orgEntity, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@OrgID",orgEntity.OrgID), new SqlParameter("@OrgName",orgEntity.OrgName), new SqlParameter("@Coperson",orgEntity.Coperson), new SqlParameter("@CardType",orgEntity.CardType), new SqlParameter("@CardNum",orgEntity.CardNum), new SqlParameter("@ParentOrgId",orgEntity.ParentOrgId), new SqlParameter("@ParentOrgName",orgEntity.ParentOrgName), new SqlParameter("@Reperson",orgEntity.Reperson), new SqlParameter("@PhoneNum",orgEntity.PhoneNum), new SqlParameter("@TelePhone",orgEntity.TelePhone), new SqlParameter("@Email",orgEntity.Email), new SqlParameter("@Address",orgEntity.Address), new SqlParameter("@AddTime",orgEntity.AddTime), new SqlParameter("@Status",(int)orgEntity.Status) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into Base_Org({0})", Fields.Org_FIELD_List); strSql.AppendFormat(" values ({0})", "@" + Fields.Org_FIELD_List.Replace(",", ",@")); object obj = DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction); StringBuilder strbld = new StringBuilder(); string strdt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //构造新增组织用户信息的sql语句 strbld.AppendFormat(@"insert into Base_User([userId],[userName],[status],[Accounttype],[Account],[LoginPwd], [CardType],[CardNum],[OrgId],[PhoneNum],[TelNum],[Email],[LinkAdress],[sex],[OpenTime], [LastUpdateTime],[LastUpdateID],[Online],[UserType],[BindAccount]) values('{0}','{1}','{2}','{3}','{4}','{5}',", orgEntity.OrgID, string.IsNullOrEmpty(orgEntity.OrgName) ? string.Empty : orgEntity.OrgName, 1, 1, orgEntity.TelePhone, com.individual.helper.Des3.Des3EncodeCBC("123456")); strbld.AppendFormat("'{0}','{1}','{2}','{3}','{4}','{5}',", 1, string.IsNullOrEmpty(orgEntity.CardNum) ? string.Empty : orgEntity.CardNum, orgEntity.OrgID, orgEntity.PhoneNum, string.Empty, string.IsNullOrEmpty(orgEntity.Email) ? string.Empty : orgEntity.Email); strbld.AppendFormat("'{0}','{1}','{2}','{3}','{4}',{5},{6},'{7}')", string.IsNullOrEmpty(orgEntity.Address) ? string.Empty : orgEntity.Address, 1, strdt, strdt, string.Empty, 0, 2, string.Empty); obj = DbHelper.ExecuteNonQuery(strbld.ToString(), null, tran.Transaction); return obj == null || obj == DBNull.Value ? 0 : Convert.ToInt32(obj); }
/// <summary> /// 删除用户角色 /// </summary> /// <param name="loginId">登录ID</param> /// <param name="account"></param> /// <returns></returns> public EntityBase DeleteUserRole(string loginId, string account) { TradeUser TdUser = new TradeUser(); if (ComFunction.ExistUserLoginID(loginId, ref TdUser) == false) { return entityBase; } UserLogEntity userLogEntity = new UserLogEntity(); userLogEntity.Account = TdUser.Account; userLogEntity.DESC = string.Format(@"后台删除用户角色;{0}", TdUser.Account); userLogEntity.UserType = (int)TdUser.UType; YicelTransaction tran = new YicelTransaction(); try { string ipmac = string.Empty; if (!string.IsNullOrEmpty(TdUser.Ip)) { ipmac += string.Format("IP={0},", TdUser.Ip); } if (!string.IsNullOrEmpty(TdUser.Mac)) { ipmac += string.Format("MAC={0},", TdUser.Mac); } tran.BeginTransaction(); ComFunction.DeleteUserRole(account, tran); ComFunction.CreateLogEx(userLogEntity,ipmac, tran); tran.Commit(); entityBase.Result = true; entityBase.Desc = "用户角色删除成功"; } catch (Exception ex) { SetException("用户角色删除失败,原因:", ex); } return entityBase; }
/// <summary> /// 修改组织机构数据 /// </summary> /// <param name="loginId"></param> /// <param name="orgEntity"></param> /// <returns></returns> public EntityBase UpdateOrg(string loginId, OrgEntity orgEntity) { TradeUser TdUser = new TradeUser(); if (ComFunction.ExistUserLoginID(loginId, ref TdUser) == false) { return entityBase; } UserLogEntity userLogEntity = new UserLogEntity(); userLogEntity.Account = TdUser.Account; userLogEntity.DESC = string.Format(@"后台修改组织机构;{0}", orgEntity.OrgName); userLogEntity.UserType = (int)TdUser.UType; if (ComFunction.IsExitOrgName(orgEntity.OrgName, orgEntity.TelePhone,orgEntity.OrgID) >= 1) { entityBase.Result = false; entityBase.Desc = "修改失败,存在相同的机构名称或组织编码!"; return entityBase; } if (ComFunction.IsExistHuWeiFuzi(orgEntity.OrgID, orgEntity.ParentOrgId)>=1) { entityBase.Result = false; entityBase.Desc = "修改失败,上级组织不能是该组织的下级组织!"; return entityBase; } YicelTransaction tran = new YicelTransaction(); try { string ipmac = string.Empty; if (!string.IsNullOrEmpty(TdUser.Ip)) { ipmac += string.Format("IP={0},", TdUser.Ip); } if (!string.IsNullOrEmpty(TdUser.Mac)) { ipmac += string.Format("MAC={0},", TdUser.Mac); } tran.BeginTransaction(); ComFunction.UpdateOrg(orgEntity, tran); ComFunction.UpdateChileOrg(orgEntity, tran); ComFunction.CreateLogEx(userLogEntity,ipmac, tran); tran.Commit(); entityBase.Result = true; entityBase.Desc = "组织机构修改成功"; } catch (Exception ex) { tran.Rollback(); SetException("组织机构修改失败,原因:", ex); } return entityBase; }
/// <summary> /// 后台用户库存入库(库存减少用的) /// </summary> /// <param name="operationId"></param> /// <param name="entity"></param> /// <param name="loginId"></param> /// <returns></returns> public static bool CreateStockDeliverAdmin(string operationId, OrderEntity entity, string loginId) { List<DeliverEntity> deliverList = new List<DeliverEntity>();//需要更新的交割单列表 List<DeliverRecordEntity> deliverRecordList = new List<DeliverRecordEntity>(); List<UpdateDataMember> updateList = new List<UpdateDataMember>();//需要更新的订单信息 List<UpdateDataMember> userList = new List<UpdateDataMember>();//需要更新用户数量 StockEntity stockEntity = LoadByAccount(entity.UserId);//获取订单所属用户信息 entity.OrderType = 13;//默认提货单 Direction d = Direction.库存调整; //获取交割单信息 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((int)key)).ToList(); var values = dic[key]; if (values >= 0) continue; foreach (var mm in tmp) { if (values > mm.AvailableTotal) { values -= mm.AvailableTotal; mm.AvailableTotal = 0; mm.State = 0; deliverList.Add(mm); } else { mm.State = values.Equals(mm.AvailableTotal) ? 0 : 1; mm.AvailableTotal = mm.AvailableTotal + values; if (mm.AvailableTotal == 0) { mm.State = 0; } deliverList.Add(mm); break; } } } #endregion List<DeliverAdjustmentEntity> listDeliver = new List<DeliverAdjustmentEntity>(); DeliverAdjustmentEntity deliver = null; if (entity.Au < 0) { deliver = new DeliverAdjustmentEntity(); deliver.DeliverAdjustmentID = Guid.NewGuid().ToString("n"); deliver.DeliverAdjustmentNO = "JS" + DateTime.Now.ToString("yyMMddhhmmssffff"); deliver.Goods = (int)GoodsType.Au; deliver.Direction = (int)OrderType.库存调整; deliver.Total = entity.Au; deliver.Account = entity.Account; deliver.LockPrice = 0; deliver.State = 0; deliver.AvailableTotal = 0; deliver.FromFlag = 1; deliver.OperationUserID = operationId; deliver.UserID = entity.UserId; listDeliver.Add(deliver); } if (entity.Ag < 0) { deliver = new DeliverAdjustmentEntity(); deliver.DeliverAdjustmentID = Guid.NewGuid().ToString("n"); deliver.DeliverAdjustmentNO = "JS" + DateTime.Now.ToString("yyMMddhhmmssffff"); deliver.Goods = (int)GoodsType.Ag; deliver.Direction = (int)OrderType.库存调整; deliver.Total = entity.Ag; deliver.Account = entity.Account; deliver.LockPrice = 0; deliver.State = 0; deliver.AvailableTotal = 0; deliver.FromFlag = 1; deliver.OperationUserID = operationId; deliver.UserID = entity.UserId; listDeliver.Add(deliver); } if (entity.Pd < 0) { deliver = new DeliverAdjustmentEntity(); deliver.DeliverAdjustmentID = Guid.NewGuid().ToString("n"); deliver.DeliverAdjustmentNO = "JS" + DateTime.Now.ToString("yyMMddhhmmssffff"); deliver.Goods = (int)GoodsType.Pd; deliver.Direction = (int)OrderType.库存调整; deliver.Total = entity.Pd; deliver.Account = entity.Account; deliver.LockPrice = 0; deliver.State = 0; deliver.AvailableTotal = 0; deliver.FromFlag = 1; deliver.OperationUserID = operationId; deliver.UserID = entity.UserId; listDeliver.Add(deliver); } if (entity.Pt < 0) { deliver = new DeliverAdjustmentEntity(); deliver.DeliverAdjustmentID = Guid.NewGuid().ToString("n"); deliver.DeliverAdjustmentNO = "JS" + DateTime.Now.ToString("yyMMddhhmmssffff"); deliver.Goods = (int)GoodsType.Pt; deliver.Direction = (int)OrderType.库存调整; deliver.Total = entity.Pt; deliver.Account = entity.Account; deliver.LockPrice = 0; deliver.State = 0; deliver.AvailableTotal = 0; deliver.FromFlag = 1; deliver.OperationUserID = operationId; deliver.UserID = entity.UserId; listDeliver.Add(deliver); } UserLogEntity userLogEntity = new UserLogEntity(); userLogEntity.Account = operationId; userLogEntity.DESC = string.Format(@"后台用户库存调整(减少):{0}库存,减少.Ag:{1},Au:{2},Pt:{3},Pd:{4};", entity.Account, entity.Au, entity.Ag, entity.Pt, entity.Pd); userLogEntity.UserType = (int)LogType.用户库存调整减少; YicelTransaction tran = new YicelTransaction(); try { tran.BeginTransaction(); // CreateOrder(order, tran);//创建订单信息 deliverList.ForEach(m => UpdateDeliver(m, entity, operationId, tran));//更新交割单信息 listDeliver.ForEach(m => CreateDeliverAdjustment(m, tran)); UpdateUserTotal(entity, stockEntity, tran);//更新用户库存数量 CreateLog(userLogEntity, tran); tran.Commit(); return true; } catch (Exception ex) { ManagerLog.WriteErr(ex + ":" + userLogEntity.DESC); tran.Rollback(); return false; } }
/// <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="ipmac"></param> /// <param name="tran"></param> /// <returns></returns> public static int CreateLogEx(UserLogEntity entity,string ipmac, YicelTransaction tran) { entity.OperTime = DateTime.Now.ToString(); SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@OperTime",entity.OperTime), new SqlParameter("@Account",entity.Account), new SqlParameter("@Remark",ipmac+entity.DESC), new SqlParameter("@UserType",entity.UserType) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into Base_OperrationLog({0})", Fields.Log_FIELD_List); strSql.AppendFormat(" values ({0})", "@" + Fields.Log_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="tran"></param> /// <returns></returns> public static int CreateDeliverRecord(DeliverRecordEntity entity, YicelTransaction tran) { entity.DeliverRecordId = Guid.NewGuid().ToString("n"); entity.CreateDate = DateTime.Now.ToString(); SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@DeliverRecordId",entity.DeliverRecordId), new SqlParameter("@DeliverId",entity.DeliverId), new SqlParameter("@DeliverNo",entity.DeliverNo), new SqlParameter("@OrderId",entity.OrderId), new SqlParameter("@OrderNo",entity.OrderNo), new SqlParameter("@OrderType",entity.OrderType), new SqlParameter("@Goods",entity.Goods), new SqlParameter("@Direction",entity.Direction), new SqlParameter("@UseTotal",entity.UseTotal), new SqlParameter("@LockPrice",entity.LockPrice), new SqlParameter("@CreateDate",entity.CreateDate) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into DeliverRecord_BZJ({0})", Fields.DeliverRecord_FIELD_LIST); strSql.AppendFormat(" values ({0})", "@" + Fields.DeliverRecord_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="uid">用户编号</param> /// <param name="d">提货 卖</param> /// <param name="type">物品类型</param> /// <param name="total">数量</param> /// <param name="tran"></param> public static void UpdateAgentTotal(string uid, Direction d, GoodsType type, decimal total, YicelTransaction tran) { StringBuilder strSql = new StringBuilder(); strSql.Append("update Trade_Agent set "); #region if (d == Direction.提货单) { switch (type) { case GoodsType.Au: strSql.Append("Au=Au+@Total "); break; case GoodsType.Ag: strSql.Append("Ag=Ag+@Total "); break; case GoodsType.Pt: strSql.Append("Pt=Pt+@Total "); break; case GoodsType.Pd: strSql.Append("Pd=Pd+@Total "); break; } } else if (d == Direction.卖单) { switch (type) { case GoodsType.Au: strSql.Append("Au_b=Au_b+@Total "); break; case GoodsType.Ag: strSql.Append("Ag_b=Ag_b+@Total "); break; case GoodsType.Pt: strSql.Append("Pt_b=Pt_b+@Total "); break; case GoodsType.Pd: strSql.Append("Pd_b=Pd_b+@Total "); break; } } else if (d == Direction.金店库存同步) { switch (type) { case GoodsType.Au: strSql.Append("Au=Au-@Total "); break; case GoodsType.Ag: strSql.Append("Ag=ag-@Total "); break; case GoodsType.Pt: strSql.Append("Pt=pt-@Total "); break; case GoodsType.Pd: strSql.Append("Pd=pd-@Total "); break; } } #endregion strSql.Append("where AgentId=@AgentId"); SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@AgentId", uid), new SqlParameter("@Total", total) }; DbHelper.ExecuteNonQuery(strSql.ToString(), paras, tran.Transaction); }
//public static int CreateDeliverAgent(DeliverEntity entity, YicelTransaction tran) //{ // SqlParameter[] paras = new SqlParameter[] { // new SqlParameter("@OrderNo", entity.DeliverNo), // new SqlParameter("@Account", entity.Account), // new SqlParameter("@UserID", entity.UserID), // new SqlParameter("@Price", entity.LockPrice), // new SqlParameter("@Goodst", entity.Goods), // new SqlParameter("@Quantity", entity.Total), // new SqlParameter("@Direction", entity.Direction), // new SqlParameter("@OperUserID", entity.OperationUserID) // }; // int result; // return DbHelper.RunProcedure("P_CreateDeliverAgent", paras, out result); //} /// <summary> /// 更新金商绑定用户库存信息 /// </summary> /// <param name="stock"></param> /// <param name="tran"></param> public static void UpdateAgentTotal(StockEntity stock, YicelTransaction tran) { StringBuilder strSql = new StringBuilder(); strSql.AppendFormat(@"update Stock_BZJ SET Au={0},Ag={1},Pt ={2},Pd={3},AuPrice={4},AgPrice={5},PtPrice={6},PdPrice={7},AuTotal={8},AgTotal={9},PtTotal={10},PdTotal={11},AuAmount={12},AgAmount={13},PtAmount={14},PdAmount={15}", stock.Au, stock.Ag, stock.Pt, stock.Pd, stock.AuPrice, stock.AgPrice, stock.PtPrice, stock.PdPrice, stock.AuTotal, stock.AgTotal, stock.PtTotal, stock.PdTotal, stock.AuAmount, stock.AgAmount, stock.PtAmount, stock.PdAmount); strSql.Append("where UserId=@UserId"); SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@UserId",stock.UserId) }; DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction); }
/// <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; } }
/// <summary> /// 金商交割单 /// </summary> /// <param name="entity"></param> /// <param name="tran"></param> /// <returns></returns> public static int CreateAgentDeliver(AgentDeliverEntity entity, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@AgentDeliverId", entity.AgentDeliverId), new SqlParameter("@AgentInfoId", entity.AgentInfoId), new SqlParameter("@FromTo", entity.FromTo), new SqlParameter("@OrderId", entity.OrderId), new SqlParameter("@Direction", (int)entity.Direction), new SqlParameter("@Au", entity.Au), new SqlParameter("@Ag", entity.Ag), new SqlParameter("@Pt", entity.Pt), new SqlParameter("@Pd", entity.Pd), new SqlParameter("@AvailableAu", entity.AvailableAu), new SqlParameter("@AvailableAg", entity.AvailableAg), new SqlParameter("@AvailablePt", entity.AvailablePt), new SqlParameter("@AvailablePd", entity.AvailablePd), new SqlParameter("@CreateDate", entity.CreateDate), new SqlParameter("@State", entity.State) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into AgentDeliver_BZJ({0})", Fields.Agent_FIELD_LIST); strSql.AppendFormat(" values ({0})", "@" + Fields.Agent_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="roleEntity"></param> /// <param name="tran"></param> /// <returns></returns> public static int UpdateUserRole(UserRoleEntity roleEntity, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@userId",roleEntity.UserId), new SqlParameter("@RoleID",roleEntity.RoleID) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat(@"UPDATE Base_UserRole SET RoleID = @RoleID WHERE userId = @userId", Fields.UserRole_FIELD_List); object obj = DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction); return obj == null || obj == DBNull.Value ? 0 : Convert.ToInt32(obj); }
/// <summary> /// 修改组织机构 /// </summary> /// <param name="orgEntity"></param> /// <param name="tran"></param> /// <returns></returns> public static int UpdateOrg(OrgEntity orgEntity, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@OrgID",orgEntity.OrgID), new SqlParameter("@OrgName",orgEntity.OrgName), new SqlParameter("@Coperson",orgEntity.Coperson), new SqlParameter("@CardType",orgEntity.CardType), new SqlParameter("@CardNum",orgEntity.CardNum), new SqlParameter("@ParentOrgID",orgEntity.ParentOrgId), new SqlParameter("@ParentOrgName",orgEntity.ParentOrgName), new SqlParameter("@Reperson",orgEntity.Reperson), new SqlParameter("@PhoneNum",orgEntity.PhoneNum), // new SqlParameter("@TelePhone",orgEntity.TelePhone),//组织编码不能修改 new SqlParameter("@Email",orgEntity.Email), new SqlParameter("@Address",orgEntity.Address), new SqlParameter("@AddTime",orgEntity.AddTime), new SqlParameter("@Status",(int)orgEntity.Status) }; StringBuilder strSql = new StringBuilder(); // strSql.AppendFormat(@"UPDATE Base_Org SET // OrgName = @OrgName,Coperson = @Coperson,CardType =@CardType,CardNum = @CardNum,ParentOrgID = @ParentOrgID,ParentOrgName=@ParentOrgName,Reperson = @Reperson, // PhoneNum = @PhoneNum,TelePhone = @TelePhone,Email = @Email,Address =@Address,AddTime = @AddTime,Status = @Status // WHERE OrgID = @OrgID", Fields.Org_FIELD_List); strSql.AppendFormat(@"UPDATE Base_Org SET OrgName = @OrgName,Coperson = @Coperson,CardType =@CardType,CardNum = @CardNum,ParentOrgID = @ParentOrgID,ParentOrgName=@ParentOrgName,Reperson = @Reperson, PhoneNum = @PhoneNum,Email = @Email,Address =@Address,AddTime = @AddTime,Status = @Status WHERE OrgID = @OrgID", Fields.Org_FIELD_List); object obj = DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction); return obj == null || obj == DBNull.Value ? 0 : Convert.ToInt32(obj); }
public static int UpdateChileOrg(OrgEntity orgEntity, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@ParentOrgID",orgEntity.ParentOrgId), new SqlParameter("@ParentOrgName",orgEntity.ParentOrgName) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat(@"UPDATE Base_Org SET ParentOrgName=@ParentOrgName WHERE ParentOrgID = @ParentOrgID"); 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="userEntity"></param> /// <param name="tran"></param> private static void UpdateUserTotal(OrderEntity entity, StockEntity userEntity, YicelTransaction tran) { if (entity.OrderType == (int)OrderType.提货单 || entity.OrderType == (int)OrderType.回购单) { if (entity.Au != 0) UpdateTotal(entity.UserId, Direction.提货单, GoodsType.Au, entity.Au * -1, userEntity, tran); if (entity.Ag != 0) UpdateTotal(entity.UserId, Direction.提货单, GoodsType.Ag, entity.Ag * -1, userEntity, tran); if (entity.Pt != 0) UpdateTotal(entity.UserId, Direction.提货单, GoodsType.Pt, entity.Pt * -1, userEntity, tran); if (entity.Pd != 0) UpdateTotal(entity.UserId, Direction.提货单, GoodsType.Pd, entity.Pd * -1, userEntity, tran); } if (entity.OrderType == (int)OrderType.卖单) { if (entity.Au != 0) UpdateTotal(entity.UserId, Direction.卖单, GoodsType.Au, entity.Au * -1, userEntity, tran); if (entity.Ag != 0) UpdateTotal(entity.UserId, Direction.卖单, GoodsType.Ag, entity.Ag * -1, userEntity, tran); if (entity.Pt != 0) UpdateTotal(entity.UserId, Direction.卖单, GoodsType.Pt, entity.Pt * -1, userEntity, tran); } if (entity.OrderType == (int)OrderType.金生金) { if (entity.Au != 0) UpdateTotal(entity.UserId, Direction.金生金, GoodsType.Au, entity.Au * -1, userEntity, tran); if (entity.Ag != 0) UpdateTotal(entity.UserId, Direction.金生金, GoodsType.Ag, entity.Ag * -1, userEntity, tran); if (entity.Pt != 0) UpdateTotal(entity.UserId, Direction.金生金, GoodsType.Pt, entity.Pt * -1, userEntity, tran); if (entity.Pd != 0) UpdateTotal(entity.UserId, Direction.金生金, GoodsType.Pd, entity.Pd * -1, userEntity, tran); } if (entity.OrderType == (int)OrderType.库存调整) { if (entity.Au != 0) UpdateTotal(entity.UserId, Direction.库存调整, GoodsType.Au, entity.Au, userEntity, tran); if (entity.Ag != 0) UpdateTotal(entity.UserId, Direction.库存调整, GoodsType.Ag, entity.Ag, userEntity, tran); if (entity.Pt != 0) UpdateTotal(entity.UserId, Direction.库存调整, GoodsType.Pt, entity.Pt, userEntity, tran); if (entity.Pd != 0) UpdateTotal(entity.UserId, Direction.库存调整, GoodsType.Pd, entity.Pd, userEntity, tran); } }
/// <summary> /// 金商库存修改减少 /// </summary> /// <param name="entity"></param> /// <param name="tran"></param> /// <returns></returns> public static int CreateDeliverAdjustment(DeliverAdjustmentEntity entity, YicelTransaction tran) { entity.DeliverDate = DateTime.Now.ToString(); entity.CreateDate = entity.DeliverDate; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@DeliverAdjustmentId",entity.DeliverAdjustmentID), new SqlParameter("@DeliverAdjustmentNo",entity.DeliverAdjustmentNO), new SqlParameter("@Goods",entity.Goods), new SqlParameter("@Direction",entity.Direction), new SqlParameter("@Total",entity.Total), new SqlParameter("@DeliverDate",entity.DeliverDate), new SqlParameter("@LockPrice",entity.LockPrice), new SqlParameter("@State",entity.State), new SqlParameter("@AvailableTotal",entity.AvailableTotal), new SqlParameter("@CreateDate",entity.CreateDate), new SqlParameter("@FromFlag",entity.FromFlag), new SqlParameter("@OperationUserID",entity.OperationUserID), new SqlParameter("@UserID",entity.UserID), new SqlParameter("@Account",entity.Account) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into DeliverAdjustment_BZJ({0})", Fields.DeliverAdjustment_List); strSql.AppendFormat(" values ({0})", "@" + Fields.DeliverAdjustment_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="agentId"></param> /// <param name="order"></param> /// <returns></returns> public static bool UpdateBuyBackOrder(string agentId, OrderEntity order) { UserLogEntity userLogEntity = new UserLogEntity(); userLogEntity.OperTime = DateTime.Now.ToString(); userLogEntity.Account = agentId; userLogEntity.DESC = string.Format(@"更新回购订单状态:金商{0},订单号:{1}订单ID:{2};", agentId, order.IDNo, order.OrderId); userLogEntity.UserType = (int)LogType.金商回购单状态修改; YicelTransaction tran = new YicelTransaction(); SqlParameter[] parms = new SqlParameter[] { }; string strSql = string.Format(@"update Order_BZJ set version={0},state={1} ,OperationDate=GETDATE(),ClerkID='{4}',AgentID='{4}' where OrderNo='{2}' and userid='{3}'", order.Version, order.State, order.OrderNo, order.UserId, agentId); try { tran.BeginTransaction(); DbHelper.ExecuteNonQuery(strSql, parms, tran.Transaction); 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 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="id"></param> /// <param name="filter"></param> /// <param name="tran"></param> /// <returns></returns> public static int UpdateColumns(string id, List<UpdateDataMember> filter, YicelTransaction tran) { Dictionary<string, object> parms; return DbHelper.ExecuteNonQuery(UpdateColumns("Order_BZJ", "OrderId", id, filter, out parms), parms); }
/// <summary> /// 订单增加 /// </summary> /// <param name="entity"></param> /// <param name="tran"></param> /// <returns></returns> public static int CreateOrder(OrderEntity entity, YicelTransaction tran) { if (string.IsNullOrEmpty(entity.JUserId)) { entity.JUserId = ""; } SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@OrderId",entity.OrderId), new SqlParameter("@OrderNo",entity.OrderNo), new SqlParameter("@OrderCode",entity.OrderCode), new SqlParameter("@OrderType",entity.OrderType), new SqlParameter("@UserId",entity.UserId), new SqlParameter("@Account",entity.Account), new SqlParameter("@JUserId",entity.JUserId), new SqlParameter("@CarryWay",entity.CarryWay), new SqlParameter("@Au",entity.Au), new SqlParameter("@Ag",entity.Ag), new SqlParameter("@Pt",entity.Pt), new SqlParameter("@Pd",entity.Pd), new SqlParameter("@CreateDate",entity.CreateDate), new SqlParameter("@EndDate",entity.EndDate), new SqlParameter("@State",entity.State), new SqlParameter("@Version",entity.Version), new SqlParameter("@AuQuantity",entity.AuQuantity), new SqlParameter("@AgQuantity",entity.AgQuantity), new SqlParameter("@PtQuantity",entity.PtQuantity), new SqlParameter("@PdQuantity",entity.PdQuantity), new SqlParameter("@AgP",entity.AgP), new SqlParameter("@AuP",entity.AuP), new SqlParameter("@PdP",entity.PdP), new SqlParameter("@PtP",entity.PtP) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into Order_BZJ({0})", Fields.Order_FIELD_LIST); strSql.AppendFormat(" values ({0})", "@" + Fields.Order_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="orderEntity"></param> /// <param name="operationId"></param> /// <param name="tran"></param> /// <returns></returns> public static int UpdateDeliver(DeliverEntity entity, OrderEntity orderEntity, string operationId, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@DeliverId",entity.DeliverId), new SqlParameter("@DeliverNo",entity.DeliverNo), new SqlParameter("@Account",entity.Account), new SqlParameter("@Direction",entity.Direction), new SqlParameter("@Total",entity.Total), new SqlParameter("@Goods",entity.Goods), new SqlParameter("@DeliverDate",entity.DeliverDate), new SqlParameter("@LockPrice",entity.LockPrice), new SqlParameter("@AvailableTotal",entity.AvailableTotal), new SqlParameter("@FromFlag",entity.FromFlag), new SqlParameter("@State",entity.State), new SqlParameter("@CreateDate",entity.CreateDate) }; StringBuilder strSql = new StringBuilder(); strSql.Append("update Deliver_BZJ set "); strSql.Append("DeliverNo=@DeliverNo,"); strSql.Append("Account=@Account,"); strSql.Append("Goods=@Goods,"); strSql.Append("Direction=@Direction,"); strSql.Append("Total=@Total,"); strSql.Append("DeliverDate=@DeliverDate,"); strSql.Append("LockPrice=@LockPrice,"); strSql.Append("AvailableTotal=@AvailableTotal,"); strSql.Append("FromFlag=@FromFlag,"); strSql.Append("State=@State,"); strSql.Append("CreateDate=@CreateDate"); strSql.AppendFormat(" where DeliverId='{0}'", entity.DeliverId); return DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction); #region 记录出库记录 //DeliverAdjustmentEntity deliver = new DeliverAdjustmentEntity(); //deliver.DeliverAdjustmentID = Guid.NewGuid().ToString("n"); //deliver.DeliverAdjustmentNO = "JS" + DateTime.Now.ToString("yyMMddhhmmssffff"); //deliver.Goods = entity.Goods; //deliver.Direction = orderEntity.OrderType; //if (entity.Goods == 1) //{ // deliver.Total =- Math.Abs( orderEntity.Au); //} //if (entity.Goods == 2) //{ // deliver.Total = - Math.Abs(orderEntity.Ag); //} //if (entity.Goods == 3) //{ // deliver.Total = - Math.Abs(orderEntity.Pt); //} //if (entity.Goods == 4) //{ // deliver.Total = - Math.Abs(orderEntity.Pd); //} //deliver.Account = entity.Account; //deliver.LockPrice = 0; //deliver.State = 0; //deliver.AvailableTotal = 0; //deliver.FromFlag = 1; //deliver.OperationUserID = OperationId; //deliver.UserID = orderEntity.UserId; #endregion // return CreateDeliverAdjustment(deliver, tran); }
/// <summary> /// 订单回购价 /// </summary> /// <param name="entity"></param> /// <param name="tran"></param> /// <returns></returns> public static int CreatePrice(OrderPriceEntity entity, YicelTransaction tran) { entity.OrderPriceId = Guid.NewGuid().ToString("n"); SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@OrderPriceId", entity.OrderPriceId), new SqlParameter("@OrderId", entity.OrderId), new SqlParameter("@OrderNo", entity.OrderNo), new SqlParameter("@PriceId", entity.PriceId), new SqlParameter("@AuPrice", entity.AuPrice), new SqlParameter("@AgPrice", entity.AgPrice), new SqlParameter("@PtPrice", entity.PtPrice), new SqlParameter("@PdPrice", entity.PdPrice) }; StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("insert into OrderPrice_BZJ({0})", Fields.OrderPrice_FIELD_LIST); strSql.AppendFormat(" values ({0})", "@" + Fields.OrderPrice_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="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="tran"></param> /// <returns></returns> public static bool CreateAgent(AgentDeliverEntity entity, YicelTransaction tran) { entity.AgentDeliverId = Guid.NewGuid().ToString("n"); entity.CreateDate = DateTime.Now.ToString(); entity.State = 1; entity.AvailableAg = entity.Ag; entity.AvailableAu = entity.Au; entity.AvailablePd = entity.Pd; entity.AvailablePt = entity.Pt; UpdateAgentTotal(entity.AgentInfoId, entity.Direction, GoodsType.Au, entity.Au, tran); UpdateAgentTotal(entity.AgentInfoId, entity.Direction, GoodsType.Ag, entity.Ag, tran); UpdateAgentTotal(entity.AgentInfoId, entity.Direction, GoodsType.Pt, entity.Pt, tran); UpdateAgentTotal(entity.AgentInfoId, entity.Direction, GoodsType.Pd, entity.Pd, tran); CreateAgentDeliver(entity, tran); return true; }
/// <summary> /// 更新订单状态 /// </summary> /// <param name="orderNO"></param> /// <param name="userId">用户ID</param> /// <param name="state"></param> /// <returns></returns> public static bool UpdateOrderState(string orderNO, string userId, int state) { UserLogEntity userLogEntity = new UserLogEntity(); userLogEntity.OperTime = DateTime.Now.ToString(); // userLogEntity.UserID = userid; userLogEntity.DESC = string.Format(@"更新回购订单状态:用户{0},订单号:{1};", userId, orderNO); userLogEntity.UserType = (int)LogType.订单修改; YicelTransaction tran = new YicelTransaction(); SqlParameter[] parms = new SqlParameter[] { }; string strSql = string.Format(@"update Order_BZJ set version={0},state={1} ,enddate='{2}' where OrderNo='{3}' and userid='{4}'", 2, state, DateTime.Now.ToString(), orderNO, userId); try { tran.BeginTransaction(); DbHelper.ExecuteNonQuery(strSql, parms, tran.Transaction); CreateLog(userLogEntity, tran); tran.Commit(); return true; } catch { tran.Rollback(); return false; } }
/// <summary> /// 系统角色权限设置 /// </summary> /// <param name="loginId"></param> /// <param name="list"></param> /// <param name="roldeID"></param> /// <returns></returns> public EntityBase AddRolePrivileges(string loginId, List<RolePrivilegeEntity> list, string roldeID) { if (ComFunction.ExistUserLoginID(loginId) == false) { return entityBase; } YicelTransaction tran = new YicelTransaction(); try { tran.BeginTransaction(); ComFunction.DeleteRolePrivilege(roldeID, tran);//第一步先删除已有角色权限 list.ForEach(m => ComFunction.AddRolePrivilege(m, tran));//第二步增加新权限 tran.Commit(); entityBase.Result = true; entityBase.Desc = "角色新增成功"; } catch (Exception ex) { tran.Rollback(); SetException("角色新增失败,原因:", ex); } return entityBase; }
/// <summary> /// 更新订单状态 /// </summary> /// <param name="orderid"></param> /// <param name="agentId"></param> /// <param name="userId"></param> /// <param name="clerkId"></param> /// <param name="tran"></param> /// <returns></returns> public static int UpdateOrderState(string orderid, string agentId, string userId, string clerkId, YicelTransaction tran) { StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("UPDATE dbo.Order_BZJ SET State=2 ,AgentUserID='{1}' ,AgentID='{2}',ClerkID='{3}' ,OperationDate=GETDATE() where OrderId='{0} '", orderid, agentId, agentId, clerkId); object obj = DbHelper.ExecuteNonQuery(strSql.ToString(), null, tran.Transaction); return obj == null || obj == DBNull.Value ? 0 : Convert.ToInt32(obj); }
/// <summary> /// 更新用户库存数量 /// </summary> /// <param name="uid">用户编号</param> /// <param name="d">提货 卖</param> /// <param name="type">物品类型</param> /// <param name="total"></param> /// <param name="userEntity">数量</param> /// <param name="tran"></param> public static void UpdateTotal(string uid, Direction d, GoodsType type, decimal total, StockEntity userEntity, YicelTransaction tran) { StringBuilder strSql = new StringBuilder(); strSql.Append("update Stock_BZJ set "); #region if (d == Direction.提货单) { switch (type) { case GoodsType.Au: if (userEntity.AuTotal + total * userEntity.AuPrice >= 0) { strSql.Append("Au=Au+@Total,AuTotal=AuTotal+@Total*AuPrice,AuAmount=AuAmount+@Total "); } else { strSql.Append("Au=Au+@Total,AuTotal=0,AuAmount=0 "); } break; case GoodsType.Ag: if (userEntity.AgTotal + total * userEntity.AgPrice >= 0) { strSql.Append("Ag=Ag+@Total,AgTotal=AgTotal+@Total*AgPrice,AgAmount=AgAmount+@Total "); } else { strSql.Append("Ag=Ag+@Total,AgTotal=0,AgAmount=0 "); } break; case GoodsType.Pt: if (userEntity.PtTotal + total * userEntity.PtPrice >= 0) { strSql.Append("Pt=Pt+@Total,PtTotal=PtTotal+@Total*PtPrice,PtAmount=PtAmount+@Total "); } else { strSql.Append("Pt=Pt+@Total,PtTotal=0,PtAmount=0 "); } break; case GoodsType.Pd: if (userEntity.PdTotal + total * userEntity.PdPrice >= 0) { strSql.Append("Pd=Pd+@Total,PdTotal=PdTotal+@Total*PdPrice,PdAmount=PdAmount+@Total "); } else { strSql.Append("Pd=Pd+@Total,PdTotal=0,PdAmount=0 "); } break; } } else if (d == Direction.卖单) { switch (type) { case GoodsType.Au: strSql.Append("Au_b=Au_b+@Total "); break; case GoodsType.Ag: strSql.Append("Ag_b=Ag_b+@Total "); break; case GoodsType.Pt: strSql.Append("Pt_b=Pt_b+@Total "); break; } } else if (d == Direction.金生金 || d == Direction.到期单 || d == Direction.已生金单 || d == Direction.提成单 || d == Direction.金店库存同步 || d == Direction.库存调整) { switch (type) { case GoodsType.Au: strSql.Append("Au=Au+@Total "); break; case GoodsType.Ag: strSql.Append("Ag=Ag+@Total "); break; case GoodsType.Pt: strSql.Append("Pt=Pt+@Total "); break; case GoodsType.Pd: strSql.Append("Pd=Pd+@Total "); break; } } #endregion strSql.Append("where UserId=@UserId"); SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@UserId",uid), new SqlParameter("@Total",total) }; DbHelper.ExecuteNonQuery(strSql.ToString(), parms, tran.Transaction); }
/// <summary> /// 删除用户角色 /// </summary> /// <param name="userId">用户角色ID</param> /// <param name="tran"></param> /// <returns>影响记录数</returns> public static int DeleteUserRole(string userId, YicelTransaction tran) { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@userId",userId)}; string sqlCommand = string.Format(@"delete from Base_Org where userId=@userId"); return DbHelper.ExecuteNonQuery(sqlCommand, parms, tran.Transaction); }