/// <summary> /// 新增销售订单 /// </summary> /// <param name="model"></param> /// <returns></returns> public int AddSaleOrder(SaleOrder model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into SaleOrder("); strSql.Append("SaleOrderID,SaleOrderCode,BillTypeID,MaterialID,SaleUnitID,ClientID,SaleDate,SaleQty,SalePrice,SaleCost,FinishDate,Creator,CreateTime,Editor,EditTime,FirstChecker,FirstCheckTime,FirstCheckView,RoutingID,SaleState,Remark,SecondCheckerName,ReaderName,Routing)"); strSql.Append(" values ("); strSql.Append("@SaleOrderID,@SaleOrderCode,@BillTypeID,@MaterialID,@SaleUnitID,@ClientID,@SaleDate,@SaleQty,@SalePrice,@SaleCost,@FinishDate,@Creator,@CreateTime,@Editor,@EditTime,@FirstChecker,@FirstCheckTime,@FirstCheckView,@RoutingID,@SaleState,@Remark,@SecondCheckerName,@ReaderName,@Routing)"); SqlParameter[] parameters = { new SqlParameter("@SaleOrderID", SqlDbType.VarChar, 36), new SqlParameter("@SaleOrderCode", SqlDbType.VarChar, 60), new SqlParameter("@BillTypeID", SqlDbType.VarChar, 36), new SqlParameter("@MaterialID", SqlDbType.VarChar, 36), new SqlParameter("@SaleUnitID", SqlDbType.VarChar, 36), new SqlParameter("@ClientID", SqlDbType.VarChar, 36), new SqlParameter("@SaleDate", SqlDbType.Char, 8), new SqlParameter("@SaleQty", SqlDbType.Decimal, 13), new SqlParameter("@SalePrice", SqlDbType.Decimal, 13), new SqlParameter("@SaleCost", SqlDbType.Decimal, 13), new SqlParameter("@FinishDate", SqlDbType.Char, 8), new SqlParameter("@Creator", SqlDbType.VarChar, 36), new SqlParameter("@CreateTime", SqlDbType.DateTime), new SqlParameter("@Editor", SqlDbType.VarChar, 36), new SqlParameter("@EditTime", SqlDbType.DateTime), new SqlParameter("@FirstChecker", SqlDbType.VarChar, 36), new SqlParameter("@FirstCheckTime", SqlDbType.DateTime), new SqlParameter("@FirstCheckView", SqlDbType.VarChar, 255), new SqlParameter("@RoutingID", SqlDbType.VarChar, 36), new SqlParameter("@SaleState", SqlDbType.Char, 1), new SqlParameter("@Remark", SqlDbType.VarChar, 1024), new SqlParameter("@SecondCheckerName", SqlDbType.VarChar, 255), new SqlParameter("@ReaderName", SqlDbType.VarChar, 255), new SqlParameter("@Routing", SqlDbType.VarChar, 1024) }; parameters[0].Value = model.SaleOrderID; parameters[1].Value = model.SaleOrderCode; parameters[2].Value = model.BillTypeID; parameters[3].Value = model.MaterialID; parameters[4].Value = model.SaleUnitID; parameters[5].Value = model.ClientID; parameters[6].Value = model.SaleDate; parameters[7].Value = model.SaleQty; parameters[8].Value = model.SalePrice; parameters[9].Value = model.SaleCost; parameters[10].Value = model.FinishDate; parameters[11].Value = model.Creator; parameters[12].Value = model.CreateTime; parameters[13].Value = model.Editor; parameters[14].Value = model.EditTime; parameters[15].Value = model.FirstChecker; parameters[16].Value = model.FirstCheckTime; parameters[17].Value = model.FirstCheckView; parameters[18].Value = model.RoutingID; parameters[19].Value = model.SaleState; parameters[20].Value = model.Remark; parameters[21].Value = model.SecondCheckerName; parameters[22].Value = model.ReaderName; parameters[23].Value = model.Routing; IDbTransaction transaction = DBAccess.BeginDbTransaction(DB.Type, DB.ConnectionString); try { DBAccess.ExecuteNonQuery(DB.Type, DB.ConnectionString, CommandType.Text, strSql.ToString(), parameters); SOSecondCheckDAL soSC = new SOSecondCheckDAL(); int socount = model.SOList.Count; if (socount > 0) { for (int i = 0; i < socount; i++) { SOSecondCheck sosc = model.SOList[i] as SOSecondCheck; soSC.Add(sosc); } } SOReaderDAL rSC = new SOReaderDAL(); int rcount = model.RList.Count; if (rcount > 0) { for (int i = 0; i < rcount; i++) { SOReader sor = model.RList[i] as SOReader; rSC.Add(sor); } } SaleOrderItemDAL item = new SaleOrderItemDAL(); item.Save(model.SaleOrderID, model.OldSaleOrderID); transaction.Commit(); } catch { transaction.Rollback(); } return(1); }
public override bool Save(params SaleOrder[] entities) { if (entities == null || entities.Length < 1) { return(false); } //Logger.LogInfo(entities.SerializeToJson()); StringBuilder sbSqlSaleOrder = new StringBuilder(); List <Func <bool> > saveItemsFuncs = new List <Func <bool> >(); List <SqlParameter> sqlParams = new List <SqlParameter>(); SaleOrder entity = null; for (int i = 0; i < entities.Length; i++) { entity = entities[i]; //1、组织sql //①销售订单 if (ValidateUtil.isBlank(entity.SaleOrderID)) { //新增,保存部分字段 entity.SaleOrderID = Guid.NewGuid().ToString(); sbSqlSaleOrder.AppendFormat("insert into {0}(SaleOrderID,SaleOrderCode,BillTypeID,MaterialID,SaleUnitID,ClientID,SaleDate,SaleQty,SalePrice,SaleCost,FinishDate,Creator,CreateTime,SaleState,Remark,Routing)", TableName); sbSqlSaleOrder.AppendFormat(" values (@SaleOrderID{0},@SaleOrderCode{0},@BillTypeID{0},@MaterialID{0},@SaleUnitID{0},@ClientID{0},@SaleDate{0},@SaleQty{0},@SalePrice{0},@SaleCost{0},@FinishDate{0},@Creator{0},@CreateTime{0},@SaleState{0},@Remark{0},@Routing{0});", i); sqlParams.AddRange(new SqlParameter[] { new SqlParameter { ParameterName = "@Creator" + i, Value = entity.Creator }, new SqlParameter { ParameterName = "@CreateTime" + i, Value = entity.CreateTime }, new SqlParameter { ParameterName = "@SaleState" + i, Value = entity.SaleState }, }); } else { //修改,只更新部分字段 sbSqlSaleOrder.AppendFormat("update {0} set BillTypeID=@BillTypeID{1},MaterialID=@MaterialID{1},SaleUnitID=@SaleUnitID{1},ClientID=@ClientID{1},SaleDate=@SaleDate{1},SaleQty=@SaleQty{1},SalePrice=@SalePrice{1},SaleCost=@SaleCost{1},FinishDate=@FinishDate{1},Editor=@Editor{1},EditTime=@EditTime{1},Remark=@Remark{1},Routing=@Routing{1}", TableName, i); sbSqlSaleOrder.AppendFormat(" where SaleOrderID=@SaleOrderID{0};", i); sqlParams.AddRange(new SqlParameter[] { new SqlParameter { ParameterName = "@Editor" + i, Value = entity.Editor }, new SqlParameter { ParameterName = "@EditTime" + i, Value = entity.EditTime }, }); } //不管新增或修改, 参数都一样 sqlParams.AddRange(new SqlParameter[] { new SqlParameter { ParameterName = "@SaleOrderID" + i, Value = entity.SaleOrderID }, new SqlParameter { ParameterName = "@SaleOrderCode" + i, Value = entity.SaleOrderCode }, new SqlParameter { ParameterName = "@BillTypeID" + i, Value = entity.BillTypeID }, new SqlParameter { ParameterName = "@MaterialID" + i, Value = entity.MaterialID }, new SqlParameter { ParameterName = "@SaleUnitID" + i, Value = entity.SaleUnitID }, new SqlParameter { ParameterName = "@ClientID" + i, Value = entity.ClientID }, new SqlParameter { ParameterName = "@SaleDate" + i, Value = entity.SaleDate.Replace("-", "") }, new SqlParameter { ParameterName = "@SaleQty" + i, Value = entity.SaleQty }, new SqlParameter { ParameterName = "@SalePrice" + i, Value = entity.SalePrice }, new SqlParameter { ParameterName = "@SaleCost" + i, Value = entity.SaleCost }, new SqlParameter { ParameterName = "@FinishDate" + i, Value = entity.FinishDate.Replace("-", "") }, new SqlParameter { ParameterName = "@Remark" + i, Value = entity.Remark }, new SqlParameter { ParameterName = "@Routing" + i, Value = entity.Routing } }); //②销售订单行 if (entity.Items != null && entity.Items.Count > 0) { foreach (var item in entity.Items) { item.SaleOrderID = entity.SaleOrderID; saveItemsFuncs.Add(() => { //调用SalesOrderItemDAL.Save return(soItemDAL.Save(entity.Items.ToArray())); }); } } } //2、执行sql IDbTransaction transaction = DBAccess.BeginDbTransaction(DB.Type, DB.ConnectionString); int rst = 0; try { rst = DBAccess.ExecuteNonQuery(DB.Type, DB.ConnectionString, CommandType.Text, sbSqlSaleOrder.ToString(), sqlParams.ToArray()); //保存销售订单行 if (saveItemsFuncs.Count > 0) { foreach (var func in saveItemsFuncs) { func(); } } //提交 transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); base.Logger.LogError(ex); return(false); } //3、返回成功或失败的标志 return(rst > 0); }