예제 #1
0
        /// <summary>
        ///     获取最后一条记录
        /// </summary>
        /// <param name="kpi"></param>
        public Kpi GetLastSingle(Kpi kpi)
        {
            var sqlWhere          = $"  UserId={kpi.UserId} and ModuleId='{kpi.ModuleId}' and Type={Convert.ToInt16(kpi.Type)}";
            var timeTypeCondition = DataRecordExtension.GetTimeTypeCondition(kpi.Type, kpi.CreateTime);

            if (!timeTypeCondition.IsNullOrEmpty())
            {
                sqlWhere += $" And {timeTypeCondition}";
            }

            var sql = $"SELECT top 1 * FROM kpi_kpi WHERE {sqlWhere} order by id desc ";

            using (var reader = RepositoryContext.ExecuteDataReader(sql))
            {
                Kpi readKpi = null;
                if (reader.Read())
                {
                    readKpi = ReadKpi(reader);
                }

                return(readKpi);
            }
        }
예제 #2
0
        /// <summary>
        ///     转换成Sql查询语句,Sql数据库使用Sql查询
        /// </summary>
        /// <returns></returns>
        public string ToSqlWhere(ReportStyle reportStyle = ReportStyle.Count)
        {
            //  以下为示例代码
            var sqlWhere = " WHERE 1 = 1 ";

            if (Field.IsNotNullOrEmpty() && Value.IsNotNullOrEmpty())
            {
                var operatorMark = Operator.GetFieldAttribute().Mark;
                sqlWhere += $" AND {Field} {operatorMark} '{Value}'"; // 此处需要根据类型做额外的处理
            }

            if (reportStyle == ReportStyle.Count || reportStyle == ReportStyle.Sum ||
                reportStyle == ReportStyle.Avg || reportStyle == ReportStyle.Min || reportStyle == ReportStyle.Max)
            {
                // 根据timeType获取条件,获取季度,年度、月份等条件,构建时间查询语句
                var timeTypeCondition = DataRecordExtension.GetTimeTypeCondition(TimeType, ReferTime);
                if (!timeTypeCondition.IsNullOrEmpty())
                {
                    sqlWhere += $" And {timeTypeCondition}";
                }
            }

            return(sqlWhere);
        }