Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }