• CASUAL_NCT


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Xml;
    using System.Collections;
    using MySql.Data.MySqlClient;
    
    
    
    /// <summary>
    /// Summary description for MySqlHelper
    /// </summary>
    public  sealed class MySqlHelper
    {
        private static readonly string connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionStringMySql"].ConnectionString;
        public static readonly string connectionString1 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionStringMySql1"].ConnectionString;
        public static readonly string connectionString2 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionStringMySql2"].ConnectionString;
        public static readonly string connectionString3 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionStringMySql3"].ConnectionString;
        public static readonly string connectionString4 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionStringMySql4"].ConnectionString;
        public  MySqlHelper()
        {
        }
    
        public static DataSet ExecuteDataset(CommandType commandType, string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlConnection cn = new MySqlConnection(connectionString))
            {
                cn.Open();
                return ExecuteDataset(cn, commandType, commandText, commandParameters);
            }
        }
    
        public static DataSet ExecuteDatasetNew(CommandType commandType, string commandText, string newconntentString,params MySqlParameter[] commandParameters)
        {
            using (MySqlConnection cn = new MySqlConnection(newconntentString))
            {
                cn.Open();
                return ExecuteDataset(cn, commandType, commandText, commandParameters);
            }
        }
    
    
        public static DataSet ExecuteDataset(MySqlConnection connection, CommandType commandType, string commandText, params MySqlParameter[] commandParameters)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.CommandTimeout = 30000;
            PrepareCommand(cmd, connection, (MySqlTransaction)null, commandType, commandText, commandParameters);
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds;
        }
    
        private static void PrepareCommand(MySqlCommand command, MySqlConnection connection, MySqlTransaction transaction, CommandType commandType, string commandText, MySqlParameter[] commandParameters)
        {
            if (connection.State != ConnectionState.Open)
            {
                Console.WriteLine("open");
                connection.Open();
            }
            command.Connection = connection;
            command.CommandText = commandText;
            if (transaction != null)
            {
                transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
            }
            command.CommandType = commandType;
            if (commandParameters != null)
            {
                AttachParameters(command, commandParameters);
            }
            return;
        }
    
        private static void AttachParameters(MySqlCommand command, MySqlParameter[] commandParameters)
        {
            foreach (MySqlParameter p in commandParameters)
            {
                //check for derived output value with no value assigned
                if ((p.Direction == ParameterDirection.InputOutput) && (p.Value == null))
                {
                    p.Value = DBNull.Value;
                }
    
                command.Parameters.Add(p);
            }
        }
    }

    以上是help类。

    接着是GetAdspaceReportForMD_HourlyNew,GetMediaBuyReportFromHourlyNew,GetAdFormatReportHourlyNew,GetAdFormatReportHourlyALLNew调用:

    public static List<AdSpaceHourlyNew> GetAdspaceReportForMD_HourlyNew(DateTime start, DateTime end, String aid)
        {
            List<AdSpaceHourlyNew> result = new List<AdSpaceHourlyNew>();
            List<AdSpaceHourlyNew> result1 = new List<AdSpaceHourlyNew>();
            List<AdSpaceHourlyNew> result2 = new List<AdSpaceHourlyNew>();
            AdSpaceIdForHourly adspaceinfo = new AdSpaceIdForHourly();
    
            string[] constr = new[] { MySqlHelper.connectionString1, MySqlHelper.connectionString3, MySqlHelper.connectionString4 };
    
            string sqladspace = @"SELECT AD.ID,AD.NAME,AD.ROAD_BLOCK_GROUP_ID FROM  AD_SPACE AD WHERE  id=:AID";
            OracleParameter para2 = new OracleParameter(":AID", OracleType.Int32);
            para2.Value = aid;
            OracleParameter[] paras = { para2 };
            DataTable dtadspace = OracleHelper.ExecuteDataset(CONNECTION_STRING, CommandType.Text, sqladspace, paras).Tables[0];
    
            if (dtadspace.Rows.Count > 0)
            {
                adspaceinfo = new AdSpaceIdForHourly()
                {
                    RoadBlockGroupId = Convert.ToInt32(dtadspace.Rows[0]["ROAD_BLOCK_GROUP_ID"]),
                    AdSpaceId = Convert.ToInt32(dtadspace.Rows[0]["ID"]),
                    AdSpaceName = dtadspace.Rows[0]["NAME"].ToString()
                };
            }
    
            String sqlhourly = @"SELECT date_format(SETTLED_TIME,'%Y-%m-%d %H') SETTLED_TIME, SUM(COUNT) AS PV
                            FROM   REPORT_DATA_HOURLY_CASUAL_NCT R
                            WHERE
                                    (ACTION_TYPE,PROCESS_STATUS) IN ((2,3),(7,1),(2,5),(2,0),(2,4),(8,1),(2,2),(7,2),(8,4))
                                   AND R.AD_SPACE_ID=@AID
                                   AND SETTLED_TIME>=@ST AND SETTLED_TIME<@ET
                            GROUP BY date_format(SETTLED_TIME,'%Y-%m-%d %H')";
            MySqlParameter[] orp = new MySqlParameter[] { 
                      new  MySqlParameter("@AID", aid),
                      new MySqlParameter("@ST", start),
                      new MySqlParameter("@ET", end)
                   };
            #region
            for (int i = 0; i < 3; i++)
            {
                DataTable dt1 = MySqlHelper.ExecuteDatasetNew(CommandType.Text, sqlhourly, constr[i], orp).Tables[0];
                if (dt1.Rows.Count > 0)
                {
                    for (int x = 0; x < dt1.Rows.Count; x++)
                    {
                        var r = result1.Find(os => os.SettledTime == dt1.Rows[x]["SETTLED_TIME"].ToString());
                        if (r == null)
                        {
                            result1.Add(new AdSpaceHourlyNew()
                            {
                                SettledTime = dt1.Rows[x]["SETTLED_TIME"].ToString(),
                                AdSpaceId = adspaceinfo.AdSpaceId,
                                AdSpaceName = adspaceinfo.AdSpaceName,
                                Pv = Convert.ToInt64(dt1.Rows[x]["PV"])
                            });
                        }
                        else
                        {
                            r.Pv += Convert.ToInt64(dt1.Rows[x]["PV"]);
                        }
                    }
                }
            }
            #endregion
    
            string sqlhourlypv = string.Empty;
            if (IfRB(aid))
            {
                sqlhourlypv = @"SELECT date_format(SETTLED_TIME,'%Y-%m-%d %H')  SETTLED_TIME,SUM(ADV_IMP_PAID) AS ADV,SUM(PUB_IMP_PAID) AS PUB,
    SUM(CLICKS)AS CLICKS FROM REPORT_DATA_HOURLY_NOCITY R WHERE  R.ROADBLOCK_ID=@ROAD_BLOCK_GROUP_ID  AND ADV_FLAG=1 AND SETTLED_TIME>=@ST AND SETTLED_TIME<@ET
                            GROUP BY date_format(SETTLED_TIME,'%Y-%m-%d %H')";
                MySqlParameter[] orp1 = new MySqlParameter[] { 
                      new  MySqlParameter("@ROAD_BLOCK_GROUP_ID", adspaceinfo.RoadBlockGroupId),
                      new MySqlParameter("@ST", start),
                      new MySqlParameter("@ET", end)
                   };
                for (int i = 0; i < 3; i++)
                {
                    DataTable dt1 = MySqlHelper.ExecuteDatasetNew(CommandType.Text, sqlhourlypv, constr[i], orp1).Tables[0];
                    if (dt1.Rows.Count > 0)
                    {
                        for (int y = 0; y < dt1.Rows.Count; y++)
                        {
                            var r = result1.Find(os => os.SettledTime == dt1.Rows[y]["SETTLED_TIME"].ToString());
                            if (r == null)
                            {
                                result2.Add(new AdSpaceHourlyNew()
                                {
                                    SettledTime = dt1.Rows[y]["SETTLED_TIME"].ToString(),
                                    AdSpaceId = adspaceinfo.AdSpaceId,
                                    AdSpaceName = adspaceinfo.AdSpaceName,
                                    Adv = Convert.ToInt64(dt1.Rows[y]["ADV"]),
                                    Pub = Convert.ToInt64(dt1.Rows[y]["PUB"]),
                                    Clicks = Convert.ToInt64(dt1.Rows[y]["CLICKS"])
                                });
                            }
                            else
                            {
                                r.Adv += Convert.ToInt64(dt1.Rows[y]["ADV"]);
                                r.Pub += Convert.ToInt64(dt1.Rows[y]["PUB"]);
                                r.Clicks += Convert.ToInt64(dt1.Rows[y]["CLICKS"]);
                            }
                        }
                    }
                }
            }
            else
            {
                sqlhourlypv = @"SELECT date_format(SETTLED_TIME,'%Y-%m-%d %H')  SETTLED_TIME,SUM(ADV_IMP_PAID) AS ADV,SUM(PUB_IMP_PAID) AS PUB,
    SUM(CLICKS)AS CLICKS FROM REPORT_DATA_HOURLY_NOCITY R WHERE  R.AD_SPACE_ID=@ROAD_BLOCK_GROUP_ID  AND ADV_FLAG=1 AND SETTLED_TIME>=@ST AND SETTLED_TIME<@ET
                            GROUP BY date_format(SETTLED_TIME,'%Y-%m-%d %H')";
                MySqlParameter[] orp1 = new MySqlParameter[] { 
                      new  MySqlParameter("@ROAD_BLOCK_GROUP_ID", adspaceinfo.AdSpaceId),
                      new MySqlParameter("@ST", start),
                      new MySqlParameter("@ET", end)
                   };
                for (int i = 0; i < 3; i++)
                {
                    DataTable dt1 = MySqlHelper.ExecuteDatasetNew(CommandType.Text, sqlhourlypv, constr[i], orp1).Tables[0];
                    if (dt1.Rows.Count > 0)
                    {
                        for (int y = 0; y < dt1.Rows.Count; y++)
                        {
                            var r = result2.Find(os => os.SettledTime == dt1.Rows[y]["SETTLED_TIME"].ToString());
                            if (r == null)
                            {
                                result2.Add(new AdSpaceHourlyNew()
                                {
                                    SettledTime = dt1.Rows[y]["SETTLED_TIME"].ToString(),
                                    AdSpaceId = adspaceinfo.AdSpaceId,
                                    AdSpaceName = adspaceinfo.AdSpaceName,
                                    Adv = Convert.ToInt64(dt1.Rows[y]["ADV"]),
                                    Pub = Convert.ToInt64(dt1.Rows[y]["PUB"]),
                                    Clicks = Convert.ToInt64(dt1.Rows[y]["CLICKS"])
                                });
                            }
                            else
                            {
                                r.Adv += Convert.ToInt64(dt1.Rows[y]["ADV"]);
                                r.Pub += Convert.ToInt64(dt1.Rows[y]["PUB"]);
                                r.Clicks += Convert.ToInt64(dt1.Rows[y]["CLICKS"]);
                            }
                        }
                    }
                }
            }
    
            foreach (var minfo in result1)
            {
                AdSpaceHourlyNew r = new AdSpaceHourlyNew();
                var pubr1 = result1.Find(os => os.SettledTime == minfo.SettledTime);
                var pubr2 = result2.Find(os => os.SettledTime == minfo.SettledTime);
                if (pubr2!=null)
                {
                    r.AdSpaceId = minfo.AdSpaceId;
                    r.AdSpaceName = minfo.AdSpaceName;
                    r.Pv = minfo.Pv;
                    r.Pub = pubr2 != null ? pubr2.Pub : 0;
                    r.Clicks = pubr2 != null ? pubr2.Clicks : 0;
                    r.Adv = pubr2 != null ? pubr2.Adv : 0;
                    r.Ctr = r.Adv > 0 ? (double)r.Clicks / r.Adv : 0;
                    r.SettledTime = minfo.SettledTime;
                    result.Add(r);
                }
                else
                {
                    r.AdSpaceId = minfo.AdSpaceId;
                    r.AdSpaceName = minfo.AdSpaceName;
                    r.Pv = minfo.Pv;
                    r.Pub = pubr1 != null ? pubr1.Pub : 0;
                    r.Clicks = pubr1 != null ? pubr1.Clicks : 0;
                    r.Adv = pubr1 != null ? pubr1.Adv : 0;
                    r.Ctr = r.Adv > 0 ? (double)r.Clicks / r.Adv : 0;
                    r.SettledTime = minfo.SettledTime;
                    result.Add(r);
                }
            }
            return result;
        }
    public static List<MediaBuyReportFromHourly> GetMediaBuyReportFromHourlyNew(int campaignID, DateTime start, DateTime end)
        {
            List<MediaBuyReportFromHourly> List = new List<MediaBuyReportFromHourly>();
            List<MediaBuyReportFromHourly> List1 = new List<MediaBuyReportFromHourly>();
            List<MediaBuyReportFromHourly> List2 = new List<MediaBuyReportFromHourly>();
            MediaBuyReportFromHourly MediaBuyReportFromHourly = new MediaBuyReportFromHourly();
            string[] constr = new[] { MySqlHelper.connectionString1,  MySqlHelper.connectionString3, MySqlHelper.connectionString4 };
    
            string sqlo = @"select campaign_id,id as media_buy_id,start_time,end_time,NAME,--rate.rate,
    BUDGET,PACING_DISABLED,decode(PACING_DISABLED,1,0,NVL(minute_budget,0)) minute_budget,balance FROM media_buy WHERE campaign_id = :CAMPAIGN_ID AND status > 0";
            OracleParameter pCampaignID = new OracleParameter(":CAMPAIGN_ID", OracleType.Int32);
            pCampaignID.Value = campaignID;
    
            DataSet ords = OracleHelper.ExecuteDataset(CONNECTION_STRING, CommandType.Text, sqlo, pCampaignID);
            string mediabuyid = "";
            foreach (DataRow row in ords.Tables[0].Rows)
            {
                mediabuyid += row[1] + " ,";
            }
            mediabuyid = mediabuyid.TrimEnd(',');
            if (ords.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < ords.Tables[0].Rows.Count; i++)
                {
                    List1.Add(new MediaBuyReportFromHourly()
                     {
                         Campaign_ID = Convert.ToInt32(ords.Tables[0].Rows[i]["Campaign_ID"].ToString()),
                         Media_Buy_ID = Convert.ToInt32(ords.Tables[0].Rows[i]["Media_Buy_ID"].ToString()),
                         Start_Time = Convert.ToDateTime(ords.Tables[0].Rows[i]["Start_Time"].ToString()),
                         End_Time = Convert.ToDateTime(ords.Tables[0].Rows[i]["End_Time"].ToString()),
                         Name = ords.Tables[0].Rows[i]["Name"].ToString(),
                         Budget = Convert.ToInt32(ords.Tables[0].Rows[i]["Budget"]),
                         Pacing_Disabled = Convert.ToInt32(ords.Tables[0].Rows[i]["Pacing_Disabled"]),
                         Minute_Budget = Convert.ToDouble(ords.Tables[0].Rows[i]["Minute_Budget"]),
                         Balance = Convert.ToDouble(ords.Tables[0].Rows[i]["Balance"])
                     });
                }
    
            }
            string sqlm = @"select media_buy_id, coalesce(sum(adv_imp_paid),0) as adv_imp_paid,coalesce(sum(pub_imp_paid),0) as pub_imp_paid,coalesce(sum(clicks),0) as clicks 
        from report_data_hourly_nocity a
        where media_buy_id in ({0})
        and settled_time >= @starttime and settled_time <@endtime and adv_flag=1
        group by media_buy_id";
            sqlm = string.Format(sqlm, mediabuyid);
            MySqlParameter[] myp = new MySqlParameter[] {
                      new MySqlParameter("@starttime", start),
                      new MySqlParameter("@endtime", end)
                   };
    
            for (int i = 0; i < 3; i++)
            {
                DataTable dt1 = MySqlHelper.ExecuteDatasetNew(CommandType.Text, sqlm, constr[i], myp).Tables[0];
                if (dt1.Rows.Count > 0)
                {
                    for (int j = 0; j < dt1.Rows.Count; j++)
                    {
                        var r = List2.Find(mbi => mbi.Media_Buy_ID == Convert.ToInt32(dt1.Rows[j]["Media_Buy_ID"].ToString()));
                        if (r == null)
                        {
                            List2.Add(new MediaBuyReportFromHourly()
                            {
                                Media_Buy_ID = Convert.ToInt32(dt1.Rows[j]["Media_Buy_ID"] != DBNull.Value ? dt1.Rows[j]["Media_Buy_ID"] : 0),
                                Adv_Imp_Paid = Convert.ToInt64(dt1.Rows[j]["Adv_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Adv_Imp_Paid"] : 0),
                                Pub_Imp_Paid = Convert.ToInt64(dt1.Rows[j]["Pub_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Pub_Imp_Paid"] : 0),
                                Clicks = Convert.ToInt64(dt1.Rows[j]["Clicks"] != DBNull.Value ? dt1.Rows[j]["Clicks"] : 0)
    
                            });
                        }
                        else
                        {
                            r.Adv_Imp_Paid += Convert.ToInt64(dt1.Rows[j]["Adv_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Adv_Imp_Paid"] : 0);
                            r.Pub_Imp_Paid += Convert.ToInt64(dt1.Rows[j]["Pub_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Pub_Imp_Paid"] : 0);
                            r.Clicks += Convert.ToInt64(dt1.Rows[j]["Clicks"] != DBNull.Value ? dt1.Rows[j]["Clicks"] : 0);
                        }
                    }
    
                }
            }
            foreach (var mymbi in List2)
            {
                MediaBuyReportFromHourly r = new MediaBuyReportFromHourly();
                var minfo = List1.Find(mbi => mbi.Media_Buy_ID == mymbi.Media_Buy_ID);
                if (minfo != null)
                {
                    r.Campaign_ID = minfo.Campaign_ID;
                    r.Media_Buy_ID = minfo.Media_Buy_ID;
                    r.Start_Time = minfo.Start_Time;
                    r.End_Time = minfo.End_Time;
                    r.Name = minfo.Name;
                    r.Budget = minfo.Budget;
                    r.Pacing_Disabled = minfo.Pacing_Disabled;
                    r.Minute_Budget = minfo.Minute_Budget;
                    r.Balance = minfo.Balance;
                }
    
                r.Adv_Imp_Paid = mymbi.Adv_Imp_Paid;
                r.Pub_Imp_Paid = mymbi.Pub_Imp_Paid;
                r.Clicks = mymbi.Clicks;
                r.Ctr = r.Adv_Imp_Paid > 0 ? (double)r.Clicks / r.Adv_Imp_Paid : 0;
                List.Add(r);
            }
    
            //foreach (var minfo in List1)
            //{
            //    MediaBuyReportFromHourly r = new MediaBuyReportFromHourly();
            //    var mymbi = List2.Find(mbi => mbi.Media_Buy_ID == minfo.Media_Buy_ID);
            //    r.Campaign_ID = minfo.Campaign_ID;
            //    r.Media_Buy_ID = minfo.Media_Buy_ID;
            //    r.Start_Time = minfo.Start_Time;
            //    r.End_Time = minfo.End_Time;
            //    r.Name = minfo.Name;
            //    r.Budget = minfo.Budget;
            //    r.Pacing_Disabled = minfo.Pacing_Disabled;
            //    r.Minute_Budget = minfo.Minute_Budget;
            //    r.Balance = minfo.Balance;
            //    r.Adv_Imp_Paid = mymbi != null ? mymbi.Adv_Imp_Paid : 0;
            //    r.Pub_Imp_Paid = mymbi != null ? mymbi.Pub_Imp_Paid : 0;
            //    r.Clicks = mymbi != null ? mymbi.Clicks : 0;
            //    r.Ctr = r.Adv_Imp_Paid > 0 ? (double)r.Clicks / r.Adv_Imp_Paid : 0;
            //    List.Add(r);
            //}
    
            return List.OrderBy(os => os.Media_Buy_ID).ToList();
        }
    public static List<AdFormatReportResultHourly> GetAdFormatReportHourlyNew(int campaignID, DateTime start, DateTime end)
        {
            List<AdFormatReportResultHourly> List = new List<AdFormatReportResultHourly>();
            List<AdFormatReportHourly> ListA = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> ListB = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List1 = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List2 = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List3 = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List4 = new List<AdFormatReportHourly>();
            AdFormatReportHourly AdFormatReportHourly = new AdFormatReportHourly();
            string[] constr = new[] { MySqlHelper.connectionString1,  MySqlHelper.connectionString3, MySqlHelper.connectionString4 };
    
            string sqlo = @"select campaign_id,id FROM media_buy WHERE campaign_id = :CAMPAIGN_ID AND status > 0";
            OracleParameter pCampaignID = new OracleParameter(":CAMPAIGN_ID", OracleType.Int32);
            pCampaignID.Value = campaignID;
    
            DataSet ords = OracleHelper.ExecuteDataset(CONNECTION_STRING, CommandType.Text, sqlo, pCampaignID);
            string mediabuyid = "";
            foreach (DataRow row in ords.Tables[0].Rows)
            {
                mediabuyid += row[1] + " ,";
            }
            mediabuyid = mediabuyid.TrimEnd(',');
            if (mediabuyid.Length == 0)
                return List;
            string creativids = "";
            string sqlm = @"select creative_id,roadblock_id, coalesce(sum(adv_imp_paid),0) as adv_imp_paid,coalesce(sum(pub_imp_paid),0) as pub_imp_paid,coalesce(sum(clicks),0) as clicks 
        from report_data_hourly_nocity a where media_buy_id in ({0}) and settled_time >= @starttime and settled_time <@endtime and adv_flag=1 group by creative_id,roadblock_id";
            sqlm = string.Format(sqlm, mediabuyid);
            MySqlParameter[] myp = new MySqlParameter[] {
                      new MySqlParameter("@starttime", start),
                      new MySqlParameter("@endtime", end)
                   };
            for (int i = 0; i < 3; i++)
            {
                DataTable dt1 = MySqlHelper.ExecuteDatasetNew(CommandType.Text, sqlm, constr[i], myp).Tables[0];
                if (dt1.Rows.Count > 0)
                {
                    for (int j = 0; j < dt1.Rows.Count; j++)
                    {
                        int creativeid = Convert.ToInt32(dt1.Rows[j]["Creative_ID"].ToString());
                        creativids += creativeid + ",";
                        int roadblockid = Convert.ToInt32(dt1.Rows[j]["roadblock_id"].ToString());
                        var r = List1.Find(cid => cid.Creative_ID == creativeid && cid.RoadblockId == roadblockid);
                        if (r == null)
                        {
                            List1.Add(new AdFormatReportHourly()
                            {
                                Campaign_ID = campaignID,
                                Creative_ID = creativeid,
                                RoadblockId = roadblockid,
                                Adv_Imp_Paid = Convert.ToInt64(dt1.Rows[j]["Adv_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Adv_Imp_Paid"] : 0),
                                Pub_Imp_Paid = Convert.ToInt64(dt1.Rows[j]["Pub_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Pub_Imp_Paid"] : 0),
                                Clicks = Convert.ToInt64(dt1.Rows[j]["Clicks"] != DBNull.Value ? dt1.Rows[j]["Clicks"] : 0)
                            });
                        }
                        else
                        {
                            r.Adv_Imp_Paid += Convert.ToInt64(dt1.Rows[j]["Adv_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Adv_Imp_Paid"] : 0);
                            r.Pub_Imp_Paid += Convert.ToInt64(dt1.Rows[j]["Pub_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Pub_Imp_Paid"] : 0);
                            r.Clicks += Convert.ToInt64(dt1.Rows[j]["Clicks"] != DBNull.Value ? dt1.Rows[j]["Clicks"] : 0);
                        }
                    }
                }
            }
    
            #region
            if (creativids.Length > 0)
            {
                string sqlNC = @"select id,ad_format,format_name from  (select id,ad_format,ad_size_format_desc as format_name from creative c left join AD_SIZE_FORMAT f on c.ad_format=f.format) c 
    where c.id in ({0}) ";
                sqlNC = string.Format(sqlNC, creativids.TrimEnd(','));
    
                DataSet ordsN2 = OracleHelper.ExecuteDataset(CONNECTION_STRING, CommandType.Text, sqlNC);
                if (ordsN2.Tables[0].Rows.Count > 0)
                {
                    for (int k = 0; k < ordsN2.Tables[0].Rows.Count; k++)
                    {
                        List2.Add(new AdFormatReportHourly()
                        {
                            Creative_ID = Convert.ToInt32(ordsN2.Tables[0].Rows[k]["ID"].ToString()),
                            Format_Name = ordsN2.Tables[0].Rows[k]["Format_Name"].ToString(),
                            AdFormat = Convert.ToInt32(ordsN2.Tables[0].Rows[k]["ad_format"].ToString())
                        });
                    }
                }
            }
            #endregion
    
            foreach (var minfo in List1)
            {
                AdFormatReportHourly r = new AdFormatReportHourly();
                var mymbi = List2.Find(cid => cid.Creative_ID == minfo.Creative_ID);
                r.Campaign_ID = campaignID;
                r.RoadblockId = minfo.RoadblockId;
                r.Format_Name = mymbi != null ? mymbi.Format_Name : "";
                r.AdFormat = mymbi != null ? mymbi.AdFormat : -1;
                r.Adv_Imp_Paid = minfo.Adv_Imp_Paid;
                r.Pub_Imp_Paid = minfo.Pub_Imp_Paid;
                r.Clicks = minfo.Clicks;
                ListA.Add(r);
                ListB.Add(r);
            }
    
            ListA = ListA.FindAll(os => (os.RoadblockId != 0 || os.AdFormat != 6));

    var ListA = ListA.GroupBy(a1 => new { a1.Campaign_ID, a1.Format_Name })
    .Select(a2 => new AdFormatReportHourly
    {
    Clicks=a2.Sum(a3=>a3.Clicks),
    Adv_Imp_Paid=a2.Sum(a3=>a3.Adv_Imp_Paid),
    Pub_Imp_Paid=a2.Sum(a3=>a3.Pub_Imp_Paid),
    Campaign_ID=a2.Key.Campaign_ID,
    Format_Name=a2.Key.Format_Name
    });

            ListB = ListB.FindAll(os => os.RoadblockId == 0 && os.AdFormat == 6).ToList();

    var listB = ListB.GroupBy(t1 => new { t1.Campaign_ID, t1.Format_Name })
    .Select(t2 => new AdFormatReportHourly
    {
    Clicks=t2.Sum(t3=>t3.Clicks),
    Adv_Imp_Paid=t2.Sum(t3=>t3.Adv_Imp_Paid),
    Pub_Imp_Paid=t2.Sum(t3=>t3.Pub_Imp_Paid),
    Campaign_ID=t2.Key.Campaign_ID,
    Format_Name=t2.Key.Format_Name
    });

    foreach (var lb in listB)
            {
                var temp = ListA.FindAll(os => os.Format_Name == lb.Format_Name);
                if (temp == null || temp.Count == 0)
                {
                    ListA.Add(lb);
                }
            }
            ListA.ForEach(os =>
            {
                List.Add(new AdFormatReportResultHourly()
                {
                    Adv_Imp_Paid = os.Adv_Imp_Paid,
                    Campaign_ID = os.Campaign_ID,
                    Format_Name = os.Format_Name,
                    Clicks = os.Clicks,
                    Pub_Imp_Paid = os.Pub_Imp_Paid,
                    Ctr = os.Adv_Imp_Paid > 0 ? os.Clicks / os.Adv_Imp_Paid : 0
                });
            });
            return List;
        }
    public static List<AdFormatReportResultNewHourly> GetAdFormatReportHourlyALLNew(string campaignID, DateTime start, DateTime end)
        {
            List<AdFormatReportResultNewHourly> List = new List<AdFormatReportResultNewHourly>();
            List<AdFormatReportHourly> ListA = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> ListB = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List1 = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List2 = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List3 = new List<AdFormatReportHourly>();
            List<AdFormatReportHourly> List4 = new List<AdFormatReportHourly>();
            AdFormatReportHourly AdFormatReportHourly = new AdFormatReportHourly();
            string[] constr = new[] { MySqlHelper.connectionString1, MySqlHelper.connectionString3, MySqlHelper.connectionString4 };
    
            string sqlo = @"select campaign_id,id FROM media_buy WHERE campaign_id in (" + campaignID + @")  AND status > :status";
            OracleParameter pCampaignID = new OracleParameter(":status", OracleType.Int32);
            pCampaignID.Value = 0;
           
            DataSet ords = OracleHelper.ExecuteDataset(CONNECTION_STRING, CommandType.Text, sqlo, pCampaignID);
            string mediabuyid = "";
            foreach (DataRow row in ords.Tables[0].Rows)
            {
                mediabuyid += row[1] + " ,";
             
            }
            mediabuyid = mediabuyid.TrimEnd(',');
            if (mediabuyid.Length == 0)
                return List;
            string creativids = "";
            string sqlm = @"select  creative_id,roadblock_id, coalesce(sum(adv_imp_paid),0) as adv_imp_paid,coalesce(sum(pub_imp_paid),0) as pub_imp_paid,coalesce(sum(clicks),0) as clicks 
        from report_data_hourly_nocity a where media_buy_id in ({0}) and settled_time >= @starttime and settled_time <@endtime and adv_flag=1 group by creative_id,roadblock_id";
            sqlm = string.Format(sqlm, mediabuyid);
            MySqlParameter[] myp = new MySqlParameter[] {
                      new MySqlParameter("@starttime", start),
                      new MySqlParameter("@endtime", end)
                   };
            for (int i = 0; i < 3; i++)
            {
                DataTable dt1 = MySqlHelper.ExecuteDatasetNew(CommandType.Text, sqlm, constr[i], myp).Tables[0];
                if (dt1.Rows.Count > 0)
                {
                    for (int j = 0; j < dt1.Rows.Count; j++)
                    {
                        int creativeid = Convert.ToInt32(dt1.Rows[j]["Creative_ID"].ToString());
                      
                        creativids += creativeid + ",";
                        int roadblockid = Convert.ToInt32(dt1.Rows[j]["roadblock_id"].ToString());
                        var r = List1.Find(cid => cid.Creative_ID == creativeid && cid.RoadblockId == roadblockid);
                        if (r == null)
                        {
                            List1.Add(new AdFormatReportHourly()
                            {
                                Campaign_ID =0,
                                Creative_ID = creativeid,
                                RoadblockId = roadblockid,
                                Adv_Imp_Paid = Convert.ToInt64(dt1.Rows[j]["Adv_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Adv_Imp_Paid"] : 0),
                                Pub_Imp_Paid = Convert.ToInt64(dt1.Rows[j]["Pub_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Pub_Imp_Paid"] : 0),
                                Clicks = Convert.ToInt64(dt1.Rows[j]["Clicks"] != DBNull.Value ? dt1.Rows[j]["Clicks"] : 0)
                            });
                        }
                        else
                        {
                            r.Adv_Imp_Paid += Convert.ToInt64(dt1.Rows[j]["Adv_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Adv_Imp_Paid"] : 0);
                            r.Pub_Imp_Paid += Convert.ToInt64(dt1.Rows[j]["Pub_Imp_Paid"] != DBNull.Value ? dt1.Rows[j]["Pub_Imp_Paid"] : 0);
                            r.Clicks += Convert.ToInt64(dt1.Rows[j]["Clicks"] != DBNull.Value ? dt1.Rows[j]["Clicks"] : 0);
                        }
                    }
                }
            }
    
            #region
            if (creativids.Length > 0)
            {
                string sqlNC = @"select id,ad_format,format_name from  (select id,ad_format,ad_size_format_desc as format_name from creative c left join AD_SIZE_FORMAT f on c.ad_format=f.format) c 
    where c.id in ({0}) ";
                sqlNC = string.Format(sqlNC, creativids.TrimEnd(','));
    
                DataSet ordsN2 = OracleHelper.ExecuteDataset(CONNECTION_STRING, CommandType.Text, sqlNC);
                if (ordsN2.Tables[0].Rows.Count > 0)
                {
                    for (int k = 0; k < ordsN2.Tables[0].Rows.Count; k++)
                    {
                        List2.Add(new AdFormatReportHourly()
                        {
                            Creative_ID = Convert.ToInt32(ordsN2.Tables[0].Rows[k]["ID"].ToString()),
                            Format_Name = ordsN2.Tables[0].Rows[k]["Format_Name"].ToString(),
                            AdFormat = Convert.ToInt32(ordsN2.Tables[0].Rows[k]["ad_format"].ToString())
                        });
                    }
                }
            }
            #endregion
    
            foreach (var minfo in List1)
            {
                AdFormatReportHourly r = new AdFormatReportHourly();
                var mymbi = List2.Find(cid => cid.Creative_ID == minfo.Creative_ID);
                r.Campaign_ID =0;
                r.RoadblockId = minfo.RoadblockId;
                r.Format_Name = mymbi != null ? mymbi.Format_Name : "";
                r.AdFormat = mymbi != null ? mymbi.AdFormat : -1;
                r.Adv_Imp_Paid = minfo.Adv_Imp_Paid;
                r.Pub_Imp_Paid = minfo.Pub_Imp_Paid;
                r.Clicks = minfo.Clicks;
                ListA.Add(r);
                ListB.Add(r);
            }
    
            ListA = ListA.FindAll(os => (os.RoadblockId != 0 || os.AdFormat != 6));

    var ListA = ListA.GroupBy(a1 => new { a1.Campaign_ID, a1.Format_Name })
    .Select(a2 => new AdFormatReportHourly
    {
    Clicks=a2.Sum(a3=>a3.Clicks),
    Adv_Imp_Paid=a2.Sum(a3=>a3.Adv_Imp_Paid),
    Pub_Imp_Paid=a2.Sum(a3=>a3.Pub_Imp_Paid),
    Campaign_ID=a2.Key.Campaign_ID,
    Format_Name=a2.Key.Format_Name
    });

    
            ListB = ListB.FindAll(os => os.RoadblockId == 0 && os.AdFormat == 6).ToList();

    var listB = ListB.GroupBy(t1 => new { t1.Campaign_ID, t1.Format_Name })
    .Select(t2 => new AdFormatReportHourly
    {
    Clicks=t2.Sum(t3=>t3.Clicks),
    Adv_Imp_Paid=t2.Sum(t3=>t3.Adv_Imp_Paid),
    Pub_Imp_Paid=t2.Sum(t3=>t3.Pub_Imp_Paid),
    Campaign_ID=t2.Key.Campaign_ID,
    Format_Name=t2.Key.Format_Name
    });

    foreach (var lb in listB)
            {
                var temp = ListA.FindAll(os => os.Format_Name == lb.Format_Name);
                if (temp == null || temp.Count == 0)
                {
                    ListA.Add(lb);
                }
            }
            ListA.ForEach(os =>
            {
                List.Add(new AdFormatReportResultNewHourly()
                {
                    Adv_Imp_Paid = os.Adv_Imp_Paid,
                    Campaign_ID = "AllCampaign",
                    Format_Name = os.Format_Name,
                    Clicks = os.Clicks,
                    Pub_Imp_Paid = os.Pub_Imp_Paid,
                    Ctr = os.Adv_Imp_Paid > 0 ? os.Clicks / os.Adv_Imp_Paid : 0
                });
            });
            return List;
        }
  • 相关阅读:
    小程序锚点使用过程
    小程序的生命周期
    微信小程序npm找不到npm包,没有找到可以构建的NPM包
    初次使用git上传代码
    JSON.parse和JSON.stringify
    vue-router Uncaught (in promise) undefined报错
    moment的安装与使用
    http://m3.codeforces.com/contest/1296/problem/E2
    题解 Codeforces Round #616 (Div. 2) (CF1291)
    codeforces 1257
  • 原文地址:https://www.cnblogs.com/jobs2/p/3493901.html
Copyright © 2020-2023  润新知