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