Example #1
0
        /// <summary>
        /// 单元下多个汇流箱日总电流对比
        /// </summary>
        /// <param name="uId"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="intervalMins"></param>
        /// <returns></returns>
        public ActionResult CompareDayCurrentChartByUnit(int uId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, int intervalMins)
        {
            string         reportCode = string.Empty;
            PlantUnit      unit       = PlantUnitService.GetInstance().GetPlantUnitById(uId);
            IList <Device> deviceList = unit.typeDevices(DeviceData.HUILIUXIANG_CODE, false);
            MonitorType    mt         = MonitorType.getMonitorTypeByCode(MonitorType.MIC_BUSBAR_TOTALCURRENT);

            if (deviceList != null && deviceList.Count > 0)
            {
                IList <DeviceStuct> devices = new List <DeviceStuct>();
                foreach (Device device in deviceList)
                {
                    float rate = 1.0F;
                    devices.Add(new DeviceStuct()
                    {
                        deviceId = device.id.ToString(), rate = rate, name = device.fullName, unit = mt.unit, chartType = chartType, monitorType = mt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = intervalMins
                    });
                }

                string chartName = LanguageUtil.getDesc("DEVICE_DAY_TOTALCURRENT_COMPARE");
                //取得用户年度发电量图表数据
                ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, ComputeType.Avg);
                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            else
            {
                reportCode = "error:" + Resources.SunResource.NODATA;
            }
            return(Content(reportCode));
        }
Example #2
0
        /// <summary>
        /// 单元下多个逆变器年kwp发电量对比
        /// </summary>
        /// <param name="uId"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="intervalMins"></param>
        /// <returns></returns>
        public ActionResult CompareYearkWpChartByUnit(int uId, string startYYYYMM, string endYYYYMM, string chartType)
        {
            string         reportCode = string.Empty;
            PlantUnit      unit       = PlantUnitService.GetInstance().GetPlantUnitById(uId);
            IList <Device> deviceList = unit.displayDevices;

            if (deviceList != null && deviceList.Count > 0)
            {
                IList <DeviceStuct> devices = new List <DeviceStuct>();
                foreach (Device device in deviceList)
                {
                    if (device.deviceTypeCode != DeviceData.INVERTER_CODE)
                    {
                        continue;
                    }
                    float rate = 1 / device.chartPower;
                    devices.Add(new DeviceStuct()
                    {
                        deviceId = device.id.ToString(), rate = rate, name = device.fullName, unit = "kWh/kWp", chartType = chartType, monitorType = MonitorType.getMonitorTypeByCode(MonitorType.MIC_INVERTER_TODAYENERGY), cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE
                    });
                }

                string chartName = LanguageUtil.getDesc("YEARLY_INVEST_INCOME_COMPARE_CHART_NAME");
                //取得用户年度发电量图表数据
                ChartData chartData = CompareChartService.GetInstance().compareYearMMMultiDeviceMultiMonitor(chartName, devices, startYYYYMM, endYYYYMM, ComputeType.Avg);
                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            else
            {
                reportCode = "error:" + Resources.SunResource.NODATA;
            }
            return(Content(reportCode));
        }
Example #3
0
        /// <summary>
        /// 比较一个设备的多个测点的日数据
        /// </summary>
        /// <param name="dId"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="monitorCodes">多个测点之间用逗号分隔</param>
        /// <returns></returns>
        public ActionResult CompareDayByMonitor(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string monitorCodes, int intervalMins)
        {
            string reportCode = string.Empty;
            Device device     = DeviceService.GetInstance().get(dId);

            IList <MonitorType> monitorTypes = new List <MonitorType>();

            string[]            monitorArr = monitorCodes.Split(',');
            IList <DeviceStuct> devices    = new List <DeviceStuct>();

            string[] chartTypes = chartType.Split(',');
            string   chartName  = string.Empty;

            for (int i = 0; i < monitorArr.Length; i++)
            {
                MonitorType monitorType = MonitorType.getMonitorTypeByCode(int.Parse(monitorArr[i]));
                devices.Add(new DeviceStuct()
                {
                    deviceId = dId.ToString(), rate = 1.0F, comareObj = device.fullName, chartType = chartTypes[i], monitorType = monitorType, cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = intervalMins
                });
                chartName += monitorType.name + "&";
            }
            chartName = chartName.Length > 1 ? chartName.Substring(0, chartName.Length - 1) : chartName;

            if (device != null)
            {
                // string chartName = LanguageUtil.getDesc("CHART_DAY_CHART");
                ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins);
                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            return(Content(reportCode));
        }
Example #4
0
        /// <summary>
        /// 电站日功率和关照对比
        /// </summary>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="intervalMins"></param>
        /// <returns></returns>
        private ActionResult CompareDayChartWithSun(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string intervalMins)
        {
            string reportCode = string.Empty;
            Device device     = DeviceService.GetInstance().get(dId);

            if (device != null)
            {
                string[]            intervals  = intervalMins.Split(',');
                string[]            chartTypes = chartType.Split(',');
                IList <DeviceStuct> devices    = new List <DeviceStuct>();
                float       rate = 1.0F;
                MonitorType mt   = MonitorType.getMonitorTypeByCode(MonitorType.MIC_INVERTER_TOTALYGPOWER);
                devices.Add(new DeviceStuct()
                {
                    deviceId = device.id.ToString(), rate = rate, comareObj = device.fullName, name = "", unit = "", chartType = chartTypes[0], monitorType = mt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = int.Parse(intervals[0])
                });
                //判断该测点是否有数据,有数据则增加关照对比
                Hashtable dataHash = DeviceDayDataService.GetInstance().GetDaydataList(device, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]), mt.code);

                string chartName = LanguageUtil.getDesc("DAY_COMPARE_CHART_NAME_POWER");
                if (dataHash.Count > 0)
                {
                    //Collector collector = CollectorInfoService.GetInstance().Get(device.collectorID);
                    PlantUnit pu        = PlantUnitService.GetInstance().GetPlantUnitByCollectorId(device.collectorID);
                    Plant     plant     = PlantService.GetInstance().GetPlantInfoById(pu.plantID);
                    Device    sundevice = plant.getFirstDetector();
                    if (sundevice != null)
                    {
                        dataHash = DeviceDayDataService.GetInstance().GetDaydataList(null, sundevice, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[1]), MonitorType.MIC_DETECTOR_SUNLINGHT);
                        if (dataHash.Keys.Count > 0)    //有日照数据
                        {
                            chartName = LanguageUtil.getDesc("DAY_COMPARE_CHART_NAME");
                            rate      = 1F;
                            MonitorType smt = MonitorType.getMonitorTypeByCode(MonitorType.MIC_DETECTOR_SUNLINGHT);
                            devices.Add(new DeviceStuct()
                            {
                                deviceId = sundevice.id.ToString(), rate = rate, comareObj = device.fullName, name = smt.name, unit = "", chartType = chartTypes[1], monitorType = smt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = int.Parse(intervals[1])
                            });
                        }
                    }
                }
                else
                {
                    return(Content("error:" + Resources.SunResource.NODATA));
                }


                //取得用户年度发电量图表数据
                ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]));
                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            return(Content(reportCode));
        }
Example #5
0
        /// <summary>
        /// 电站日kwp发电量对比
        /// </summary>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="intervalMins"></param>
        /// <returns></returns>
        public ActionResult CompareDaykWpChart(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string intervalMins)
        {
            string reportCode = string.Empty;
            Device device     = DeviceService.GetInstance().get(dId);

            if (device != null)
            {
                string[]            intervals  = intervalMins.Split(',');
                string[]            chartTypes = chartType.Split(',');
                IList <DeviceStuct> devices    = new List <DeviceStuct>();
                float       rate = 1 / device.chartPower;
                MonitorType mt   = MonitorType.getMonitorTypeByCode(MonitorType.MIC_INVERTER_TODAYENERGY);
                devices.Add(new DeviceStuct()
                {
                    deviceId = device.id.ToString(), rate = rate, comareObj = device.fullName, name = "kWp" + mt.name, unit = "kWh/kWp", chartType = chartTypes[0], monitorType = mt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = int.Parse(intervals[0])
                });
                //判断改测点是否有数据
                Hashtable dataHash = DeviceDayDataService.GetInstance().GetDaydataList(device, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]), mt.code);
                if (dataHash.Count > 0)
                {
                    rate = 1F;
                    MonitorType smt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_LINGT_CODE);
                    devices.Add(new DeviceStuct()
                    {
                        deviceId = device.collectorID.ToString(), rate = rate, comareObj = device.fullName, name = smt.name, unit = "", chartType = chartTypes[1], monitorType = smt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.COLLECTOR, intervalMins = int.Parse(intervals[1])
                    });
                }
                else
                {
                    return(Content("error:" + Resources.SunResource.NODATA));
                }

                string chartName = LanguageUtil.getDesc("INVEST_INCOME_COMPARE_CHART");
                //取得用户年度发电量图表数据
                ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]));
                //add by hbqian in 20130418 for过滤大于1的值
                //又出现大于1的没有过滤
                foreach (YData ydata in chartData.series)
                {
                    for (int i = 0; i < ydata.data.Length; i++)
                    {
                        if (ydata.data[i] >= 1)
                        {
                            ydata.data[i] = null;
                        }
                    }
                }
                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            return(Content(reportCode));
        }
Example #6
0
        /// <summary>
        /// 单元下多个逆变器日kwp发电量对比
        /// </summary>
        /// <param name="uId"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="intervalMins"></param>
        /// <returns></returns>
        public ActionResult CompareDaykWpChartByUnit(int uId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, int intervalMins)
        {
            string         reportCode = string.Empty;
            PlantUnit      unit       = PlantUnitService.GetInstance().GetPlantUnitById(uId);
            IList <Device> deviceList = unit.displayDevices;

            if (deviceList != null && deviceList.Count > 0)
            {
                IList <DeviceStuct> devices = new List <DeviceStuct>();
                foreach (Device device in deviceList)
                {
                    if (device.deviceTypeCode != DeviceData.INVERTER_CODE)
                    {
                        continue;
                    }
                    float rate = 1 / device.chartPower;
                    devices.Add(new DeviceStuct()
                    {
                        deviceId = device.id.ToString(), rate = rate, name = device.fullName, unit = "kWh/kWp", chartType = chartType, monitorType = MonitorType.getMonitorTypeByCode(MonitorType.MIC_INVERTER_TODAYENERGY), cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = intervalMins
                    });
                }

                string chartName = LanguageUtil.getDesc("MONTHLY_INVEST_INCOME_COMPARE_CHART_NAME");
                //取得用户年度发电量图表数据
                ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, ComputeType.Avg);
                //add by hbqian in 20130418 for过滤大于1的值
                //又出现大于1的没有过滤
                foreach (YData ydata in chartData.series)
                {
                    for (int i = 0; i < ydata.data.Length; i++)
                    {
                        if (ydata.data[i] >= 1)
                        {
                            ydata.data[i] = null;
                        }
                    }
                }

                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            else
            {
                reportCode = "error:" + Resources.SunResource.NODATA;
            }
            return(Content(reportCode));
        }
Example #7
0
        /// <summary>
        /// 取得电站的日图表数据
        /// </summary>
        /// <param name="pId">电站id</param>
        /// <param name="startTime">开始时间,格式:yyyyMMddhh 2011111105</param>
        /// <param name="endTime">截止时间,格式:yyyyMMddhh 2011111223</param>
        /// <param name="app_key">第三方应用唯一key</param>
        /// <param name="call_id">请求序号</param>
        /// <param name="sig">签名</param>
        /// <param name="v">api版本</param>
        /// <param name="format">返回结果格式,暂时值支持json</param>
        /// <param name="lan">语言环境,暂时只支持中英文</param>
        /// <returns>图表封装的数据</returns>
        public ActionResult plantDayChartData(int pId, string startDate, string endDate, string app_key, string call_id, string sig, string v, string format, string lan)
        {
            setlan(lan);

            string chartType = ChartType.column;

            string reportCode   = string.Empty;
            Plant  plant        = PlantService.GetInstance().GetPlantInfoById(pId);
            string intervalMins = "5,5";

            string[] intervals = intervalMins.Split(',');
            if (plant != null && plant.plantUnits.Count > 0)
            {
                IList <DeviceStuct> devices = new List <DeviceStuct>();
                string   deviceId           = plant.id.ToString();
                string[] chartTypes         = chartType.Split(',');
                devices.Add(new DeviceStuct()
                {
                    deviceId = deviceId, rate = 1.0F, comareObj = plant.name, chartType = chartTypes[0], monitorType = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_POWER_CODE), cVal = ComputeType.Avg, deviceType = ChartDeviceType.PLANT, intervalMins = int.Parse(intervals[0])
                });

                //判断该测点是否有数据,有数据则增加关照对比
                Hashtable dataHash = CollectorDayDataService.GetInstance().GetUnitDaydataList(plant.plantUnits, startDate, endDate, int.Parse(intervals[0]), MonitorType.PLANT_MONITORITEM_POWER_CODE);
                if (dataHash.Count > 0)
                {
                    float       rate = 1F;
                    MonitorType mt   = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_LINGT_CODE);
                    devices.Add(new DeviceStuct()
                    {
                        deviceId = plant.id.ToString(), rate = rate, comareObj = plant.name, name = mt.name, unit = "", chartType = chartTypes[0], monitorType = mt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.PLANT, intervalMins = int.Parse(intervals[1])
                    });
                }
                else
                {
                    return(Content("error:" + Resources.SunResource.NODATA));
                }

                string chartName = LanguageUtil.getDesc("PLANT_CHART_DAY_POWER_SUNLIGHT_COMPARE_CHART");
                //取得用户年度发电量图表数据
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startDate, endDate, int.Parse(intervals[0]));
                reportCode = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            return(Content(reportCode));
        }
Example #8
0
        /// <summary>
        /// 取得自定义图表的数据
        /// </summary>
        /// <param name="crt"></param>
        /// <returns></returns>
        private string GetCustomReport(CustomChart crt)
        {
            User     user = UserUtil.getCurUser();
            DateTime dt   = CalenderUtil.curDateWithTimeZone(user.timezone);

            string ret = "sorry:" + Resources.SunResource.NODATA;

            if (crt != null)
            {
                Analysis(ref crt);
                ///多设备多测点单时间报表
                List <DeviceStuct> list = new List <DeviceStuct>();
                list = GetDeviceStucts(crt);
                string reportName = crt.reportName;
                switch (crt.timeInterval.Trim().ToUpper())
                {
                case "YEAR":

                    //if (crt.timeSlot.Trim().ToUpper().Equals("YEAR"))
                    //{
                    ChartData chartData = CompareChartService.GetInstance().compareYearsMultiDeviceMultiMonitor(crt.reportName, list, getWorkYears(list));
                    ret = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    //}
                    break;

                case "MONTH":
                    //if (crt.timeSlot.Trim().ToUpper().Equals("YEAR"))
                    //{
                    //dtstart = dt.AddYears(-crt.tcounter.Value);
                    //}
                    //else if (crt.timeSlot.Trim().ToUpper().Equals("MONTH"))
                    // {
                    //dtstart = dt.AddMonths(-crt.tcounter.Value);
                    //}

                    chartData = CompareChartService.GetInstance().compareYearMMMultiDeviceMultiMonitor(crt.reportName, GetDeviceStucts(crt), crt.startTime, crt.endTime);
                    ret       = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    break;

                case "DAY":
                    //if (crt.timeSlot.Trim().ToUpper().Equals("DAY"))
                    //{
                    //dtstart = dt.AddDays(-crt.tcounter.Value);
                    // }
                    //else if (crt.timeSlot.Trim().ToUpper().Equals("MONTH"))
                    //{
                    //dtstart = dt.AddMonths(-crt.tcounter.Value);
                    // }
                    chartData = CompareChartService.GetInstance().compareMMDDMultiDeviceMultiMonitor(crt.reportName, GetDeviceStucts(crt), crt.startTime, crt.endTime);
                    ret       = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    break;

                case "HOUR":
                    //if (crt.timeSlot.Trim().ToUpper().Equals("DAY"))
                    //{
                    //    dtstart = dt.AddDays(-crt.tcounter.Value);
                    //}
                    //else if (crt.timeSlot.Trim().ToUpper().Equals("HOUR"))
                    //{
                    //    dtstart = dt.AddHours(-crt.tcounter.Value);
                    //}
                    int intervalMins = 5;
                    chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(crt.reportName, GetDeviceStucts(crt), crt.startTime, crt.endTime, intervalMins);
                    ret       = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    break;

                default:
                    break;
                }
            }
            return(ret);
        }
Example #9
0
        public ActionResult PlantDayChart(int pid, int intervalMins, int curUserId)
        {
            string chartType  = "area";
            string reportCode = string.Empty;
            Plant  plant      = PlantService.GetInstance().GetPlantInfoById(pid);

            if (plant != null && plant.allFactUnits.Count > 0)
            {
                //找出电站的创建者,用当前操作用户而不是电站创建者的规矩
                User user = null;
                if (curUserId > 0)
                {
                    user = UserService.GetInstance().Get(curUserId);
                }
                string startYYYYMMDDHH = DateTime.Now.AddDays(-1).ToString("yyyyMMdd00");
                string endYYYYMMDDHH   = DateTime.Now.ToString("yyyyMMdd23");
                if (user != null && user.FullscreenChartDays > 0)
                {
                    startYYYYMMDDHH = DateTime.Now.AddDays(-1 * (user.FullscreenChartDays - 1)).ToString("yyyyMMdd00");
                    endYYYYMMDDHH   = DateTime.Now.ToString("yyyyMMdd23");
                }
                IList <DeviceStuct> devices = new List <DeviceStuct>();
                string   deviceId           = plant.id.ToString();
                string[] chartTypes         = chartType.Split(',');
                devices.Add(new DeviceStuct()
                {
                    deviceId = deviceId, rate = 1.0F, comareObj = plant.name, chartType = ChartType.area, monitorType = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_POWER_CODE), cVal = ComputeType.Avg, deviceType = ChartDeviceType.PLANT, intervalMins = intervalMins
                });
                //判断该测点是否有数据,有数据则增加关照对比
                //Hashtable dataHash = CollectorDayDataService.GetInstance().GetUnitDaydataList(plant.allFactUnits, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, MonitorType.PLANT_MONITORITEM_POWER_CODE);
                string chartName = LanguageUtil.getDesc("PLANT_CHART_DAY_CHART_POWER");
                //if (dataHash.Count > 0)
                //{
                Device device = plant.getFirstDetector();
                if (device != null)
                {
                    //dataHash = DeviceDayDataService.GetInstance().GetDaydataList(null, device, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, MonitorType.MIC_DETECTOR_SUNLINGHT);
                    //if (dataHash.Keys.Count > 0)//有日照数据
                    //{
                    chartName = LanguageUtil.getDesc("PLANT_CHART_DAY_CHART");
                    float       rate = 1F;
                    MonitorType mt   = MonitorType.getMonitorTypeByCode(MonitorType.MIC_DETECTOR_SUNLINGHT);
                    devices.Add(new DeviceStuct()
                    {
                        deviceId = device.id.ToString(), rate = rate, comareObj = plant.name, name = mt.name, unit = "", chartType = ChartType.line, monitorType = mt, cVal = ComputeType.Avg, deviceType = ChartDeviceType.DEVICE, intervalMins = intervalMins
                    });
                    //}
                }
                //}
                //else
                //{
                //return Content("error:" + Resources.SunResource.NODATA);
                //}
                //取得用户年度发电量图表数据
                ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, ComputeType.None, false);
                // ChartData chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins);
                //ChartData chartData_large = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(chartName, devices, startYYYYMMDDHH, endYYYYMMDDHH, 60);

                foreach (YData yd in chartData.series)
                {
                    if (yd.max == 0)
                    {
                        yd.max = 10;
                    }
                }
                reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
            }
            else
            {
                return(Content("error:" + Resources.SunResource.NODATA));
            }
            return(Content(reportCode));
        }