예제 #1
0
        /// <summary>
        /// 获取达标率
        /// </summary>
        /// <param name="devicecode">设备编号</param>
        /// <param name="jcys">监测项目</param>
        /// <param name="beginDate">开始日期</param>
        /// <param name="endDate">结束日期</param>
        /// <returns></returns>
        public DataTable GetDabiaolv(string devicecode, string jcys, string beginDate, string endDate)
        {
            try
            {
                #region 拼SQL语句的方法,因为要查询两次数据库,已弃用

                //var strSql = "select a.STDTYPE,b.devicetype from DEVICEATTACH a";
                //strSql += " left join deviceinfo b on a.devicecode=b.devicecode";
                //strSql += " WHERE a.DEVICECODE=:devicecode";
                //OracleParameter[] parameters =
                //{
                //    new OracleParameter(":devicecode", devicecode)
                //};
                //var dbapi = new DbAPI();
                //dbapi.OpenConn("");
                //var rst = dbapi.GetDataTable(strSql, parameters);
                //dbapi.CloseConn();
                //var stdtype = Convert.ToInt32(rst.Rows[0]["STDTYPE"]);
                //var devicetype = Convert.ToInt32(rst.Rows[0]["devicetype"]);

                //// 时间段超过半年的,按照月统计
                //var ts = DateTime.Parse(endDate) - DateTime.Parse(beginDate);
                //if (ts.Days > 182)
                //{
                //    strSql = "SELECT A.SDATE, round(SUM(A.\"" + jcys + "\") / COUNT(A.\"" + jcys + "\") * 100,0) DABIAOLV";
                //    strSql += "  FROM (SELECT t.*, TO_CHAR(t.DATETIME, 'YYYY-MM') AS SDATE";
                //    strSql += "          FROM " +
                //              PingjiaViewConfigs.PingjiaLevelViewDict[
                //                  new PingjiaTab<int, int>(devicetype, stdtype)] + " t";
                //    strSql += "         WHERE DEVICECODE = :devicecode";
                //    strSql += "           AND DATETIME BETWEEN";
                //    strSql += "               to_date(:beginDate, 'yyyy-mm-dd') AND";
                //    strSql += "               to_date(:endDate, 'yyyy-mm-dd')) A";
                //    strSql += " GROUP BY A.SDATE";
                //    strSql += " ORDER BY A.SDATE ASC";
                //}
                //else
                //{
                //    strSql = "SELECT A.SDATE, round(SUM(A.\"" + jcys + "\") / COUNT(A.\"" + jcys + "\") * 100,0) DABIAOLV";
                //    strSql += "  FROM (SELECT t.*, TO_CHAR(t.DATETIME, 'YYYY-MM-DD') AS SDATE";
                //    strSql += "          FROM " +
                //              PingjiaViewConfigs.PingjiaLevelViewDict[
                //                  new PingjiaTab<int, int>(devicetype, stdtype)] + " t";
                //    strSql += "         WHERE DEVICECODE = :devicecode";
                //    strSql += "           AND DATETIME BETWEEN";
                //    strSql += "               to_date(:beginDate, 'yyyy-mm-dd') AND";
                //    strSql += "               to_date(:endDate, 'yyyy-mm-dd')) A";
                //    strSql += " GROUP BY A.SDATE";
                //    strSql += " ORDER BY A.SDATE ASC";
                //}

                //OracleParameter[] parameters2 ={
                //    new OracleParameter(":devicecode", devicecode),
                //    new OracleParameter(":beginDate", beginDate),
                //    new OracleParameter(":endDate",endDate)
                //};

                //dbapi.OpenConn("");
                //rst = dbapi.GetDataTable(strSql, parameters2);
                //dbapi.CloseConn();

                //const string proc = "Getdabiaolv";

                #endregion

                OracleParameter[] parameters =
                {
                    new OracleParameter("p_devicecode", devicecode),
                    new OracleParameter("p_jcys",       jcys),
                    new OracleParameter("p_beginDate",  beginDate),
                    new OracleParameter("p_endDate",    endDate),
                    new OracleParameter("p_refCursor",  OracleType.Cursor)
                    {
                        Direction = ParameterDirection.Output
                    }
                };

                var dbapi = new DbAPI();
                dbapi.OpenConn("");
                var rst = dbapi.GetDataTableFromProcedure("Getdabiaolv", parameters);
                dbapi.CloseConn();

                return(rst);
            }
            catch (Exception ex)
            {
                LogBN.WriteLog(typeof(MonitorLog), "获取达标率GetDabiaolv 程序段的异常" + ex);
                return(null);
            }
        }