Example #1
0
        /// <summary>
        /// 取得某个设备跨小时的某测点图表
        /// </summary>
        /// <param name="pid"></param>
        /// <param name="startYYYYMMDD"></param>
        /// <param name="endYYYYMMDD"></param>
        /// <returns></returns>
        public ActionResult MonitorDayChart(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, int monitorCode, string lan)
        {
            setlan(lan);

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            Device device = DeviceService.GetInstance().get(dId);
            //获得报表js代码
            MonitorType energyMt   = MonitorType.getMonitorTypeByCode(monitorCode);
            string      unit       = energyMt.unit;
            string      chartName  = device.fullName + " " + LanguageUtil.getDesc("CHART_DAY_CHART");
            string      reportData = string.Empty;

            if (device != null)
            {
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = DeviceChartService.GetInstance().DayChart(device, chartName, startYYYYMMDDHH, endYYYYMMDDHH, chartType, unit, monitorCode, intervalTime);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.devicenoexist, Resources.SunResource.CHART_DEVICE_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #2
0
        /// <summary>
        /// 设备的年月统计图表
        /// </summary>
        /// <param name="device"></param>
        /// <param name="rate"></param>
        /// <param name="chartname"></param>
        /// <param name="startYearMM"></param>
        /// <param name="endYearMM"></param>
        /// <param name="chartType"></param>
        /// <param name="unit"></param>
        /// <returns></returns>
        public ChartData YearMMChartByDevice(Device device, float rate, string chartname, string startYearMM, string endYearMM, string chartType, string unit)
        {
            if (device == null)
            {
                return(new ChartData());
            }
            string name = LanguageUtil.getDesc("CHART_TITLE_YEAR_ENERGY");

            int       startYear       = int.Parse(startYearMM.Substring(0, 4));
            int       endYear         = int.Parse(endYearMM.Substring(0, 4));
            Hashtable yearMonthEnergy = DeviceYearMonthDataService.GetInstance().GetDeviceBetweenYearData(device, startYear, endYear);

            string[] ic = base.getXseriesFromYYYYMM(startYearMM, endYearMM).ToArray();

            string[] xAxis = formatXaxis(ic, ChartTimeType.YearMonth);

            string yname = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE).name;

            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (yearMonthEnergy.Count > 0)
            {
                data = GenerateChartData(yname, ic, yearMonthEnergy, rate);
            }
            return(ReportBuilder.createJsonChartXY(name, xAxis, data, "", unit, chartType, fromApp));
        }
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="userId">用户id</param>
        /// <param name="startYM">开始年月</param>
        /// <param name="endYM">截止年月</param>
        /// <param name="chartType">图表类型</param>
        /// <returns></returns>
        public ActionResult DeviceYearMMChart(int dId, string startYM, string endYM, string chartType, string lan)
        {
            setlan(lan);

            string reportData = string.Empty;

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            Device device = DeviceService.GetInstance().get(dId);

            if (device != null)
            {
                MonitorType energyMt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
                string      unit     = energyMt.unit;
                //取得用户年度发电量图表数据
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = DeviceChartService.GetInstance().YearMMChartByDevice(device, 1.0F, string.Format(LanguageUtil.getDesc("DEVICEYEAR_CHART_NAME"), device.fullName), startYM, endYM, chartType, unit);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.devicenoexist, Resources.SunResource.CHART_DEVICE_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #5
0
        public ActionResult PlantData(int plantId)
        {
            Plant plant = PlantService.GetInstance().GetPlantInfoById(plantId);

            Cn.Loosoft.Zhisou.SunPower.Common.vo.PlantVO plantVO = new Cn.Loosoft.Zhisou.SunPower.Common.vo.PlantVO();

            User user = UserService.GetInstance().Get((int)plant.userID);

            plantVO.plantName          = plant.name;
            plantVO.CQ2reduce          = plant.Reductiong.ToString();
            plantVO.CQ2reduceUnit      = plant.ReductiongUnit;
            plantVO.curPower           = plant.DisplayTodayTotalPower;
            plantVO.curPowerUnit       = plant.TodayTotalPowerUnit;
            plantVO.dayEnergy          = plant.DisplayTotalDayEnergy;
            plantVO.dayEnergyUnit      = plant.TotalDayEnergyUnit;
            plantVO.solarIntensity     = plant.Sunstrength == null ? "" : plant.Sunstrength.ToString();
            plantVO.solarIntensityUnit = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_LINGT_CODE).unit;
            //add by qhb in 20120106 for 增加逆变器数量
            IList <Device> inverterDevices = plant.typeDevices(DeviceData.INVERTER_CODE);

            plantVO.inverterCount   = inverterDevices.Count.ToString();
            plantVO.inverterTypeStr = getMainType(inverterDevices, 3);
            plantVO.installDate     = plant.installdate.ToString("yyyy-MM-dd");
            plantVO.DesignPower     = plant.design_power + " kWp";
            plantVO.Country         = plant.country;
            plantVO.City            = plant.city;
            plantVO.organize        = user.organize;
            plantVO.totalEnergy     = plant.DisplayTotalEnergy;
            plantVO.totalEnergyUnit = plant.TotalEnergyUnit;
            plantVO.imageArray      = "http://" + Request.Url.Authority + (string.IsNullOrEmpty(plant.onePic) ? "/bigscreen/images/plant_img.jpg":"/ufile/" + plant.onePic);
            plantVO.temprature      = getPlantTemp(plant).ToString();
            plantVO.tempratureUnit  = user.TemperatureType.ToUpper();
            return(Json(plantVO, JsonRequestBehavior.AllowGet));
        }
Example #6
0
        /// <summary>
        /// 取得汇流箱传感器路数
        /// </summary>
        /// <param name="rundatas"></param>
        /// <returns></returns>
        public int getHlxroute(string[] rundatas)
        {
            string[] datas           = null;
            int      displayHxlroute = 0;

            foreach (string data in rundatas)
            {
                datas = data.Split(':');
                int         monitorCode = int.Parse(datas[0]);
                MonitorType mt          = MonitorType.getMonitorTypeByCode(monitorCode);
                if (mt == null)
                {
                    continue;
                }
                //判断是否接入路数测点
                if (monitorCode == MonitorType.MIC_BUSBAR_MAXLINE)
                {
                    try
                    {
                        int value = int.Parse(datas[1]);
                        if (value == 0)
                        {
                            value = 16;
                        }
                        displayHxlroute = DeviceData.HUILIUXIANG_CODE * 100 + value;
                    }
                    catch (Exception e)
                    {
                        break;
                    }
                    break;
                }
            }
            return(displayHxlroute);
        }
Example #7
0
        /// <summary>
        /// 逆变器设备的月天数据
        /// </summary>
        /// <param name="pid"></param>
        /// <param name="startYYYYMMDD"></param>
        /// <param name="endYYYYMMDD"></param>
        /// <param name="chartType"></param>
        /// <returns></returns>
        public ActionResult DeviceMonthDayChart(int dId, string startYYYYMMDD, string endYYYYMMDD, string chartType, string lan)
        {
            setlan(lan);

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            Device device     = DeviceService.GetInstance().get(dId);
            string reportData = string.Empty;

            if (device != null)
            {
                MonitorType energyMt = MonitorType.getMonitorTypeByCode(MonitorType.MIC_INVERTER_TODAYENERGY);
                string      unit     = energyMt.unit;
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = DeviceChartService.GetInstance().MonthDDChartByDevice(device, 1.0F, string.Format(LanguageUtil.getDesc("DEVICEMONTHCHART_NAME"), device.fullName), startYYYYMMDD, endYYYYMMDD, chartType, unit);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.devicenoexist, Resources.SunResource.CHART_DEVICE_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #8
0
        /// <summary>
        /// 设备的月天统计图表
        /// </summary>
        /// <param name="device"></param>
        /// <param name="rate"></param>
        /// <param name="chartname"></param>
        /// <param name="startYearMMDD"></param>
        /// <param name="endYearMMDD"></param>
        /// <param name="chartType"></param>
        /// <param name="unit"></param>
        /// <returns></returns>
        public ChartData MonthDDChartByDevice(Device device, float rate, string chartname, string startYearMMDD, string endYearMMDD, string chartType, string unit)
        {
            if (device == null)
            {
                return(new ChartData());
            }
            string name = LanguageUtil.getDesc("CHART_TITLE_MONTH_ENERGY");

            string    startYearMM   = startYearMMDD.Substring(0, 6);
            string    endYearMM     = endYearMMDD.Substring(0, 6);
            Hashtable monthDDEnergy = DeviceMonthDayDataService.GetInstance().DeviceYearMMDDList(device, startYearMM, endYearMM);

            string[] ic = base.getXseriesFromYYYYMMDD(startYearMMDD, endYearMMDD).ToArray();

            string[] xAxis = formatXaxis(ic, ChartTimeType.MonthDay);
            string   xname = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE).name;

            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (monthDDEnergy.Count > 0)
            {
                data = GenerateChartData(xname, ic, monthDDEnergy, rate);
            }
            return(ReportBuilder.createJsonChartXY(name, xAxis, data, "", unit, chartType, fromApp));
        }
Example #9
0
        /// <summary>
        /// 作者:鄢睿
        /// 功能:通过电站列表获得跨月度图表数据
        /// 创建时间:2011年02月25日
        /// 修改:胡圣忠
        /// </summary>
        /// <param name="plantList">电站列表</param>
        /// <param name="rate">数据换算系数</param>
        /// <returns></returns>
        public ChartData YearMMChartBypList(IList <Plant> plantList, float rate, string chartname, string newserieKey, string startYearMM, string endYearMM, string chartType, string unit)
        {
            if (plantList == null)
            {
                return(new ChartData());
            }
            ///所有子站累加
            IList <PlantUnit> units = this.getUnitsByPlantList(plantList);

            int startYear = int.Parse(startYearMM.Substring(0, 4));
            int endYear   = int.Parse(endYearMM.Substring(0, 4));

            Hashtable yearMonthEnergy = CollectorYearMonthDataService.GetInstance().GetUnitBetweenYearData(units, startYear, endYear);

            string[] ic = base.getXseriesFromYYYYMM(startYearMM, endYearMM).ToArray();

            string[]    xAxis = formatXaxis(ic, ChartTimeType.YearMonth);
            MonitorType mt    = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (yearMonthEnergy.Count > 0)
            {
                if (newserieKey == null)
                {
                    data = GenerateChartData(mt.name, ic, yearMonthEnergy, rate);
                }
                else
                {
                    data = GenerateChartData(newserieKey, ic, yearMonthEnergy, rate);
                }
            }
            string comobj = "";//plantList.Count > 1 ? "" : plantList[0].name;

            return(ReportBuilder.createJsonChartXY(chartname, xAxis, data, "", unit, chartType, comobj, fromApp));
        }
Example #10
0
        /// <summary>
        /// 作者:鄢睿
        /// 功能:通过电站列表获得电站总量图表数据
        /// 创建时间:2011年02月25日
        /// 修改:胡圣忠
        /// </summary>
        /// <param name="plantList">电站列表</param>
        /// <param name="rate">数据换算系数</param>
        /// <returns></returns>
        public ChartData YearChartBypList(IList <Plant> plantList, float rate, string chartname, string newserieKey, string chartType, string unit)
        {
            if (plantList == null)
            {
                return(new ChartData());
            }

            //所有子站累加
            Hashtable yearEnergy = CollectorYearDataService.GetInstance().GetYearDatasByUnits(this.getUnitsByPlantList(plantList));

            string[] ic    = sortCollection(yearEnergy.Keys);
            string[] newic = null;
            int      len   = 5;
            int      skip  = len - ic.Length;
            int      left  = (int)skip / 2;
            int      right = 5 - ic.Length - left;

            if (ic.Length < len)
            {
                newic = new string[len];
                len   = 0;
                int startYear = ic.Length == 0 ? DateTime.Now.Year : int.Parse(ic[0]);
                int endYear   = ic.Length == 0 ? DateTime.Now.Year : int.Parse(ic[ic.Length - 1]);
                while (left > 0)
                {
                    newic[len++] = (startYear - (left--)).ToString();
                }
                foreach (string s in ic)
                {
                    newic[len++] = s;
                }
                for (int i = 1; i <= right; i++)
                {
                    newic[len++] = (endYear + (i)).ToString();
                }
            }
            else
            {
                newic = ic;
            }
            string[]    xAxis = formatXaxis(newic, ChartTimeType.Year);
            MonitorType mt    = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (yearEnergy.Count > 0)
            {
                if (newserieKey == null)
                {
                    data = GenerateChartData(mt.name, newic, yearEnergy, rate);
                }
                else
                {
                    data = GenerateChartData(newserieKey, newic, yearEnergy, rate);
                }
            }

            string comobj = "";//plantList.Count > 1 ? "" : plantList[0].name;

            return(ReportBuilder.createJsonChartXY(chartname, xAxis, data, "", unit, chartType, comobj, fromApp));
        }
Example #11
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 #12
0
        /// <summary>
        /// 取得用户所有电站跨小时的功率图表
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <returns></returns>
        public ActionResult AllPlantDayChart(int userId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string lan)
        {
            setlan(lan);

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            User user = UserService.GetInstance().Get(userId);

            //获得报表业务逻辑类
            PlantChartService reportService = PlantChartService.GetInstance();
            //获得报表js代码
            int         monitorCode = MonitorType.PLANT_MONITORITEM_POWER_CODE;//发电量测点
            MonitorType Mt          = MonitorType.getMonitorTypeByCode(monitorCode);
            string      unit        = Mt.unit;
            string      chartName   = LanguageUtil.getDesc("CHART_DAY_POWER_CHART");
            string      reportData  = string.Empty;

            if (user != null && user.plants != null)
            {
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = reportService.PlantDayChart(user.plants, chartName, startYYYYMMDDHH, endYYYYMMDDHH, chartType, unit, monitorCode, intervalTime);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.useridnoexist, Resources.SunResource.CHART_USER_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #13
0
        /// <summary>
        /// 电站的月天数据
        /// </summary>
        /// <param name="pid"></param>
        /// <param name="startYYYYMMDD"></param>
        /// <param name="endYYYYMMDD"></param>
        /// <param name="chartType"></param>
        /// <returns></returns>
        public ActionResult PlantMonthDayChart(int pid, string startYYYYMMDD, string endYYYYMMDD, string chartType, string lan)
        {
            setlan(lan);

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            Plant  plant      = PlantService.GetInstance().GetPlantInfoById(pid);
            string reportData = string.Empty;

            if (plant != null)
            {
                MonitorType energyMt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
                string      unit     = energyMt.unit;
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = PlantChartService.GetInstance().MMDDChartBypList(new List <Plant> {
                    plant
                }, startYYYYMMDD, endYYYYMMDD, chartType, unit);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.plantnoexist, Resources.SunResource.CHART_PLANT_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #14
0
        /// <summary>
        /// 用户所有电站的年度发电量图表数据
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="chartType"></param>
        /// <returns></returns>
        public ActionResult AllPlantYearChart(int userId, string chartType, string lan)
        {
            setlan(lan);

            string reportData = string.Empty;

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            User user = UserService.GetInstance().Get(userId);

            if (user != null && user.plants != null)
            {
                MonitorType energyMt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
                string      unit     = energyMt.unit;
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = PlantChartService.GetInstance().YearChartBypList(user.plants, chartType, unit);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.useridnoexist, Resources.SunResource.CHART_USER_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #15
0
        /// <summary>
        /// 取得电站详细信息
        /// </summary>
        /// <param name="pid"></param>
        /// <returns></returns>
        public ActionResult Plantinfo(int pid, string lan)
        {
            setlan(lan);

            string data;
            Plant  plant = PlantService.GetInstance().GetPlantInfoById(pid);

            if (plant == null)
            {
                AppError appError = new AppError(AppError.plantnoexist, Resources.SunResource.CHART_PLANT_DONT_EXISTED);
                data = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            else
            {
                User        user     = UserService.GetInstance().Get((int)plant.userID);
                MonitorType energyMt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
                MonitorType powerMt  = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_POWER_CODE);
                PlantInfoVO plantvo  = new PlantInfoVO();

                plantvo.totalEnergy      = plant.upTotalEnergy;
                plantvo.todayEnergy      = plant.upTotalDayEnergy;
                plantvo.pId              = plant.id;
                plantvo.name             = plant.name;
                plantvo.co2Reduction     = plant.Reductiong;
                plantvo.revenue          = user.revenue * plantvo.totalEnergy;
                plantvo.designPower      = Math.Round(plant.design_power, 2);
                plantvo.powerUnit        = "KWp";
                plantvo.revenueUnit      = plant.currencies;
                plantvo.totalEnergyUnit  = plant.TotalEnergyUnit;
                plantvo.todayEnergyUnit  = plant.TotalDayEnergyUnit;
                plantvo.co2ReductionUnit = plant.ReductiongUnit;
                plantvo.pic              = base.getCurWebContext() + "/ufile/small/" + plant.onePic;
                plantvo.country          = plant.country;
                plantvo.city             = plant.city;
                plantvo.direction        = plant.direction;
                plantvo.installdate      = plant.installdate.ToString("yyyy-MM-dd");
                plantvo.angle            = plant.angle;
                plantvo.latitude         = plant.latitudeString;
                plantvo.location         = plant.location;
                plantvo.longitude        = plant.longitudeString;
                plantvo.street           = plant.street;
                plantvo.sunlight         = plant.Sunstrength.ToString();
                plantvo.temperature      = plant.Temperature.ToString();
                plantvo.weather          = "Sundy";
                plantvo.moduleType       = plant.module_type;
                plantvo.email            = plant.email;

                plantvo.manufacturer   = plant.manufacturer;
                plantvo.operatorPerson = plant.operater;
                plantvo.phone          = plant.phone;
                plantvo.revenueRate    = Math.Round(plant.revenueRate, 2).ToString();

                plantvo.timeZone = Cn.Loosoft.Zhisou.SunPower.Common.TimeZone.GetText(plant.timezone);
                plantvo.zipCode  = plant.postcode;

                data = JsonUtil.convertToJson(plantvo, typeof(PlantInfoVO));
            }
            return(Content(data));
        }
Example #16
0
        /// <summary>
        /// 取得多个电站的pr性能图表数据
        /// </summary>
        /// <param name="plantList"></param>
        /// <param name="chartname"></param>
        /// <param name="newseriekey"></param>
        /// <param name="startYearMMDD"></param>
        /// <param name="endYearMMDD"></param>
        /// <param name="chartType"></param>
        /// <param name="unit"></param>
        /// <returns></returns>
        public ChartData MonthDDRPChartBypList(Device invertDevice, Device detectorDevice, string chartName, string startYearMMDD, string endYearMMDD, string chartType)
        {
            if (invertDevice == null)
            {
                return(new ChartData());
            }

            MonitorType    mt         = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
            IList <string> chartTypes = new List <string>(); //图表类型
            IList <string> units      = new List <string>(); //单位
            IList <string> ynames     = new List <string>(); //y轴名称

            //IList<string> compareObjs = null;            //图例比较对象,因为是同一个电站,不追加
            chartTypes.Add(chartType);
            chartTypes.Add(chartType);
            ynames.Add(mt.name);
            ynames.Add(mt.name);

            //产生坐标
            string[] ic = base.getXseriesFromYYYYMMDD(startYearMMDD, endYearMMDD).ToArray();

            string[] xAxis = formatXaxis(ic, ChartTimeType.MonthDay);
            float    rate  = 1.0F;
            string   newseriekey;
            //取得多个采集器的实际发电量
            Hashtable monthDDEnergy = DeviceMonthDayDataService.GetInstance().DeviceYearMMDDList(invertDevice, startYearMMDD, endYearMMDD);

            units.Add(mt.unit);
            units.Add(mt.unit);

            IList <KeyValuePair <string, float?[]> > datas = new List <KeyValuePair <string, float?[]> >();
            KeyValuePair <string, float?[]>          data  = new KeyValuePair <string, float?[]>();

            if (monthDDEnergy.Count > 0)
            {
                newseriekey = LanguageUtil.getDesc("ACTUALENERGY");
                data        = GenerateChartData(newseriekey, ic, monthDDEnergy, rate);
            }
            //string comobj = "";//plantList.Count > 1 ? "" : plantList[0].name;
            datas.Add(data);
            //取得日照增量强度,并依次计算理论发电量
            rate = this.getEnergyRate(invertDevice.designPower);

            monthDDEnergy = DeviceMonthDayDataService.GetInstance().DeviceYearMMDDList(detectorDevice, startYearMMDD, endYearMMDD);
            newseriekey   = LanguageUtil.getDesc("THEORYENERGY");
            data          = GenerateChartData(newseriekey, ic, monthDDEnergy, rate);
            datas.Add(data);

            float?[] newDataArr = computeByType(xAxis.ToArray(), datas, ComputeType.Ratio);
            KeyValuePair <string, float?[]> newdata = new KeyValuePair <string, float?[]>("PR", newDataArr);

            datas.Add(newdata);
            chartTypes.Add(ChartType.line);
            units.Add("%");
            ynames.Add("PR");

            return(ReportBuilder.createMultiJsonChartXY(chartName, xAxis, datas, ynames.ToArray(), chartTypes.ToArray(), units.ToArray(), fromApp));
        }
Example #17
0
        /// <summary>
        /// 设备年度统计图表
        /// </summary>
        /// <param name="device"></param>
        /// <param name="rate"></param>
        /// <param name="chartname"></param>
        /// <param name="chartType"></param>
        /// <param name="unit"></param>
        /// <returns></returns>
        public ChartData YearChartByDevice(Device device, float rate, string chartname, string chartType, string unit)
        {
            if (device == null)
            {
                return(new ChartData());
            }

            string chartName = LanguageUtil.getDesc("CHART_TITLE_TOTAL_ENERGY");

            ///所有子站累加
            Hashtable yearEnergy = DeviceYearDataService.GetInstance().GetTotalDatasByDevice(device);

            string[] ic    = sortCollection(yearEnergy.Keys);
            string[] newic = null;
            int      len   = 5;
            int      skip  = len - ic.Length;
            int      left  = (int)skip / 2;
            int      right = 5 - ic.Length - left;

            if (ic.Length < len)
            {
                newic = new string[len];
                len   = 0;
                int startYear = ic.Length == 0 ? DateTime.Now.Year : int.Parse(ic[0]);
                int endYear   = ic.Length == 0 ? DateTime.Now.Year : int.Parse(ic[ic.Length - 1]);
                while (left > 0)
                {
                    newic[len++] = (startYear - (left--)).ToString();
                }
                foreach (string s in ic)
                {
                    newic[len++] = s;
                }
                for (int i = 1; i <= right; i++)
                {
                    newic[len++] = (endYear + (i)).ToString();
                }
            }
            else
            {
                newic = ic;
            }
            string[] xAxis = formatXaxis(newic, ChartTimeType.Year);

            string yname = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE).name;
            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (yearEnergy.Count > 0)
            {
                data = GenerateChartData(yname, newic, yearEnergy, rate);
            }

            return(ReportBuilder.createJsonChartXY(chartName, xAxis, data, "", unit, chartType, fromApp));
        }
Example #18
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 #19
0
        /// <summary>
        /// 取得某个设备跨小时的功率图表
        /// </summary>
        /// <param name="pid"></param>
        /// <param name="startYYYYMMDD"></param>
        /// <param name="endYYYYMMDD"></param>
        /// <returns></returns>
        public ActionResult DeviceDayChart(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string lan)
        {
            setlan(lan);

            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            Device device      = DeviceService.GetInstance().get(dId);
            int    monitorCode = MonitorType.MIC_INVERTER_TOTALYGPOWER;//功率

            switch (device.deviceTypeCode)
            {
            case DeviceData.HUILIUXIANG_CODE:
                monitorCode = MonitorType.MIC_BUSBAR_TOTALCURRENT;
                break;

            case DeviceData.CABINET_CODE:
                monitorCode = MonitorType.MIC_BUSBAR_TOTALCURRENT;
                break;

            case DeviceData.ENVRIOMENTMONITOR_CODE:
                monitorCode = MonitorType.MIC_DETECTOR_SUNLINGHT;
                break;

            case DeviceData.AMMETER_CODE:
                monitorCode = MonitorType.MIC_AMMETER_POSITIVEACTIVEPOWERDEGREE;
                break;

            default:
                monitorCode = MonitorType.MIC_INVERTER_TOTALYGPOWER;    //功率
                break;
            }

            MonitorType Mt         = MonitorType.getMonitorTypeByCode(monitorCode);
            string      unit       = Mt.unit;
            string      chartName  = device.fullName + " " + LanguageUtil.getDesc("CHART_DAY_CHART");
            string      reportData = string.Empty;

            if (device != null)
            {
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = DeviceChartService.GetInstance().DayChart(device, chartName, startYYYYMMDDHH, endYYYYMMDDHH, chartType, unit, monitorCode, intervalTime);
                reportData = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            else
            {
                AppError appError = new AppError(AppError.devicenoexist, Resources.SunResource.CHART_DEVICE_DONT_EXISTED);
                reportData = JsonUtil.convertToJson(appError, typeof(AppError));
            }
            return(Content(reportData));
        }
Example #20
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 #21
0
        /// <summary>
        /// 日功率和日照散列图
        /// 此类型图表和其他取数方式有点不一样,其他都是多位测点数据公用一个时间坐标
        /// 这个是两个测点先按照同样的时间间隔取得数据后(同样的时间间隔取数是为了保证取得数据数组长度一致,能最终合并成对应的散列点)
        /// 将日照作为x轴,功率作为y轴数据,生成散列图表数据
        /// add by hbqian in 2013-03-23 for 生成设备功率和日照散列图
        /// </summary>
        /// <param name="pid"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType">只能有一个,其实是固定为scatter类型的</param>
        /// <param name="intervalMins">只能有一个</param>
        /// <returns></returns>
        public ActionResult PowerSunScatterCompare(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string intervalMins)
        {
            string reportCode = string.Empty;
            Device device     = DeviceService.GetInstance().get(dId);

            string[] intervals = intervalMins.Split(',');
            if (device != null)
            {
                //判断该测点是否有数据,有数据则增加关照对比
                Hashtable powerDataHash = DeviceDayDataService.GetInstance().GetDaydataList(device, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]), MonitorType.MIC_INVERTER_TOTALYGPOWER);
                if (powerDataHash.Count > 0 && device.plantUnit != null)
                {
                    string chartName = LanguageUtil.getDesc("PLANT_CHART_DAY_POWER_SUNLIGHT_COMPARE_CHART") + "(" + LanguageUtil.getDesc("CUSTOM_CHART_MONTH") + ")";

                    Plant  plant     = PlantService.GetInstance().GetPlantInfoById(device.plantUnit.plantID);
                    Device sundevice = plant.getFirstDetector();
                    //设备所属电站是否有环境检测仪
                    if (sundevice != null)
                    {
                        //取得日照数据
                        Hashtable sunDataHash = DeviceDayDataService.GetInstance().GetDaydataList(null, sundevice, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]), MonitorType.MIC_DETECTOR_SUNLINGHT);
                        if (sunDataHash.Keys.Count > 0)//有日照数据,则合并数据,将日照作为x,功率作为y,形成新的x.y散列点
                        {
                            MonitorType smt       = MonitorType.getMonitorTypeByCode(MonitorType.MIC_DETECTOR_SUNLINGHT);
                            MonitorType pmt       = MonitorType.getMonitorTypeByCode(MonitorType.MIC_INVERTER_TOTALYGPOWER);
                            ChartData   chartData = DeviceChartService.GetInstance().genNewScatter(smt, pmt, chartName, startYYYYMMDDHH, endYYYYMMDDHH, int.Parse(intervals[0]), sunDataHash, powerDataHash, "kW", chartType);
                            reportCode = JsonUtil.convertToJson(chartData, typeof(ChartData));
                        }
                        else
                        { //没有日照无法生成散列点则,返回无数据提示
                            return(Content("error:" + Resources.SunResource.NODATA));
                        }
                    }
                    else
                    {
                        return(Content("error:" + Resources.SunResource.NODATA));
                    }
                }
                else
                {
                    return(Content("error:" + Resources.SunResource.NODATA));
                }
            }
            else
            {
                return(Content("error:" + Resources.SunResource.NODATA));
            }
            return(Content(reportCode));
        }
Example #22
0
        /// <summary>
        /// 作者:鄢睿
        /// 功能:通过电站列表获得跨天度图表数据
        /// 创建时间:2011年02月25日
        /// 修改:胡圣忠
        /// </summary>
        /// <param name="plantList"></param>
        /// <param name="rate"></param>
        /// <param name="chartname"></param>
        /// <param name="startYearMM"></param>
        /// <param name="endYearMM"></param>
        /// <returns></returns>
        public ChartData MonthDDChartBypList(IList <Plant> plantList, float rate, string chartname, string newseriekey, string startYearMMDD, string endYearMMDD, string chartType, string unit)
        {
            if (plantList == null)
            {
                return(new ChartData());
            }

            ///所有子站累加
            IList <PlantUnit> units = this.getUnitsByPlantList(plantList);

            Hashtable monthDDEnergy = CollectorMonthDayDataService.GetInstance().GetUnitBetweenMonthData(units, startYearMMDD, endYearMMDD);

            string[] ic = base.getXseriesFromYYYYMMDD(startYearMMDD, endYearMMDD).ToArray();

            string[] xAxis;
            string[] years = getYearMonths(startYearMMDD, endYearMMDD);
            if (years.Length > 1)
            {
                //chartname = "from " + years[0] + " to " + years[1] + " " + chartname;
                xAxis = formatXaxis(ic, ChartTimeType.YearMonthDay);
            }
            else
            {
                //chartname = years[0] + " " + chartname;
                xAxis = formatXaxis(ic, ChartTimeType.MonthDay);
            }

            MonitorType mt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (monthDDEnergy.Count > 0)
            {
                if (newseriekey == null)
                {
                    data = GenerateChartData(mt.name, ic, monthDDEnergy, rate);
                }
                else
                {
                    data = GenerateChartData(newseriekey, ic, monthDDEnergy, rate);
                }
            }
            string comobj = "";//plantList.Count > 1 ? "" : plantList[0].name;

            return(ReportBuilder.createJsonChartXY(chartname, xAxis, data, "", unit, chartType, comobj, fromApp));
        }
Example #23
0
        /// <summary>
        /// 取得测点值和单位串,无测点数据为--
        /// </summary>
        /// <param name="mtcode"></param>
        /// <returns></returns>
        public string getMonitor(int mtcode)
        {
            if (runData == null)
            {
                return("-");
            }
            string value = runData.getMonitorValueWithStatus(mtcode);

            if (!runData.hasMonitor(mtcode))
            {
                value = "-";
            }
            if (value.Equals("-"))
            {
                return(value);
            }
            return(value + " " + MonitorType.getMonitorTypeByCode(mtcode).unit);
        }
Example #24
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 #25
0
        /// <summary>
        /// 取得设备某个测点的日变化曲线
        /// </summary>
        /// <param name="dId"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="monitorCode"></param>
        /// <returns></returns>
        public ActionResult MonitorDayChart(int dId, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, int monitorCode, int intervalMins)
        {
            if (string.IsNullOrEmpty(chartType))
            {
                chartType = ChartType.column;
            }
            Device device = DeviceService.GetInstance().get(dId);
            //获得报表js代码
            MonitorType mt         = MonitorType.getMonitorTypeByCode(monitorCode);
            string      unit       = mt.getMonitorFirstUnitByCode();
            string      chartName  = string.Format(LanguageUtil.getDesc("MONITOR_DAY_CHAR_NAME"), mt.name);
            string      reportCode = string.Empty;

            if (device != null)
            {
                Cn.Loosoft.Zhisou.SunPower.Common.ChartData chartData = DeviceChartService.GetInstance().DayChart(device, chartName, startYYYYMMDDHH, endYYYYMMDDHH, chartType, unit, monitorCode, intervalMins);
                reportCode = JsonUtil.convertToJson(chartData, typeof(Cn.Loosoft.Zhisou.SunPower.Common.ChartData));
            }
            return(Content(reportCode));
        }
Example #26
0
        /// <summary>
        /// 设备单个测点的日图表
        /// </summary>
        /// <param name="device"></param>
        /// <param name="chartName"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <param name="unit"></param>
        /// <param name="monitorCode"></param>
        /// <returns></returns>
        public ChartData DayChart(Device device, string chartName, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string unit, int monitorCode, int intervalMins)
        {
            //将整天的数据截断头尾
            string[] ic = base.getXseriesFromYYYYMMDDHH(startYYYYMMDDHH, endYYYYMMDDHH, intervalMins).ToArray();

            ///结果需要按时间先后排序
            Hashtable powerHash = DeviceDayDataService.GetInstance().GetDaydataList(ic, device, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, monitorCode);

            string[]    xAxis       = formatXaxis(ic, this.fromApp ? ChartTimeType.Hour : ChartTimeType.Day);
            MonitorType monitorType = MonitorType.getMonitorTypeByCode(monitorCode);

            KeyValuePair <string, float?[]> data = new KeyValuePair <string, float?[]>();

            if (powerHash.Count > 0)
            {
                //先屏蔽了,因为两天跨度的中间部分平滑有问题,但不是对原来是否有影响测试后才知道
                //this.FirstHandleChartData(ic, powerHash);
                data = GenerateChartData(monitorType.name, ic, powerHash, 1.0F);
            }

            return(ReportBuilder.createJsonChartXY(chartName, xAxis, data, "", unit, chartType, fromApp));
        }
Example #27
0
        /// <summary>
        /// 取得多个电站跨小时的功率图表
        /// </summary>
        /// <param name="plants"></param>
        /// <param name="startYYYYMMDDHH"></param>
        /// <param name="endYYYYMMDDHH"></param>
        /// <param name="chartType"></param>
        /// <returns></returns>
        public ChartData PlantDayChart(IList <Plant> plants, string chartname, string startYYYYMMDDHH, string endYYYYMMDDHH, string chartType, string unit, int monitorCode, int intervalMins)
        {
            //将整天的数据截断头尾
            string      head = startYYYYMMDDHH.Substring(6, 4);
            string      foot = endYYYYMMDDHH.Substring(6, 4);
            MonitorType mt   = MonitorType.getMonitorTypeByCode(monitorCode);

            string[] ic = base.getXseriesFromYYYYMMDDHH(startYYYYMMDDHH, endYYYYMMDDHH, intervalMins).ToArray();//cutXAxisData(sortCollection(powerHash.Keys), head, foot);

            string[] xAxis = formatXaxis(ic, this.fromApp ? ChartTimeType.Hour : ChartTimeType.Day);
            //string name = (plants.Count > 1 ? LanguageUtil.getDesc("CHART_TITLE_ALL_PLANTS") : plants[0].name) + " " + LanguageUtil.getDesc("CHART_TITLE_DAY_CHART");
            string name = mt.name;
            KeyValuePair <string, float?[]> alldata = new KeyValuePair <string, float?[]>();

            foreach (Plant plant in plants)
            {
                IList <PlantUnit> units = plant.plantUnits;

                ///结果需要按时间先后排序
                Hashtable powerHash = CollectorDayDataService.GetInstance().GetUnitDaydataList(units, startYYYYMMDDHH, endYYYYMMDDHH, intervalMins, monitorCode);

                if (powerHash.Count > 0)
                {
                    KeyValuePair <string, float?[]> data = GenerateChartData(name, ic, powerHash, 1.0F);
                    if (alldata.Key == null)
                    {
                        alldata = data;
                    }
                    else
                    {
                        alldata = new KeyValuePair <string, float?[]>(alldata.Key, mergeHash(alldata.Value, data.Value));
                    }
                }
            }

            //MonitorType mt = MonitorType.getMonitorTypeByCode(monitorCode);
            return(ReportBuilder.createJsonChartXY(chartname, xAxis, alldata, mt.name, unit, chartType, fromApp));
        }
Example #28
0
        /// <summary>
        /// 将实时数据串转换成键值对象,待状态
        /// </summary>
        /// <param name="deviceRunData">实时数据对象</param>
        /// <returns>值对列表</returns>
        public string getMonitorValueWithStatus(int code)
        {
            IList <KeyValuePair <MonitorType, string> > kvpList = new List <KeyValuePair <MonitorType, string> >();
            string rundatastr = this.rundatastr;

            string[] rundatas = rundatastr.Split('#');
            string[] datas    = null;
            foreach (string data in rundatas)
            {
                datas = data.Split(':');
                if (code == int.Parse(datas[0]))
                {
                    string v = this.getStatusValue(code, datas[1]);
                    if ("0".Equals(v) && MonitorType.getMonitorTypeByCode(code).zerotoline)
                    {
                        return("-");
                    }
                    return(v);
                }
            }
            //没有该测点的值则返回-
            return("-");
        }
Example #29
0
        public ActionResult DropDownList(string lang)
        {
            Session["Culture"] = new CultureInfo(lang);
            string        customType   = Request.Form["customType"];
            string        valuetype    = Request.Form["selectvalue"];
            string        type         = Request.Form["selecttype"];
            string        timeInterval = Request.Form["timeInterval"];//报表时间类型
            StringBuilder sb           = new StringBuilder();

            //单位
            if (type.Trim().Equals("ValueType"))
            {
                if (!string.IsNullOrEmpty(valuetype) && !valuetype.Trim().ToLower().Equals("null"))
                {
                    try
                    {
                        int imi = int.Parse(valuetype.Trim());

                        MonitorType mm = MonitorType.getMonitorTypeByCode(imi);
                        if (mm != null && !string.IsNullOrEmpty(mm.unit))
                        {
                            string[] sunit = mm.units();
                            foreach (string ss in sunit)
                            {
                                sb.Append("<option value=\"" + ss + "\">" + ss + "</option>");
                            }
                        }
                    }
                    catch
                    { }
                }
            }
            else if (type.Trim().Equals("TimeSlot"))//时间大类
            {
                sb.Append("  <select id=\"timeInterval\" name=\"timeInterval\" class = \"subselect02\">");

                if (valuetype.ToLower().Trim().Equals(ComConst.Time_YEAR.ToLower().Trim()))
                {
                    sb.Append(" <option title=\"YEAR\" value=\"YEAR\">YEAR</option>");

                    sb.Append(" <option title=\"MONTH\" value=\"MONTH\">MONTH</option>");
                }
                else if (valuetype.ToLower().Trim().Equals(ComConst.Time_MONTH.ToLower().Trim()))
                {
                    sb.Append(" <option title=\"MONTH\" value=\"MONTH\">MONTH</option>");

                    sb.Append("  <option title=\"DAY\" value=\"DAY\">DAY</option>");
                }
                else if (valuetype.ToLower().Trim().Equals(ComConst.Time_DAY.ToLower().Trim()))
                {
                    sb.Append("  <option title=\"DAY\" value=\"DAY\">DAY</option>");

                    sb.Append("  <option title=\"HOUR\" value=\"HOUR\">HOUR</option>");
                }
                sb.Append("  </select>");
            }
            else if (type.Trim().Equals("IdType"))
            {
                string[] strvalue = valuetype.Split('&');
                if (strvalue != null && strvalue.Length == 2)
                {
                    int deviceTypeCode      = int.Parse(strvalue[1].Trim());
                    IList <MonitorType> mts = MonitorType.getFilterMonitorTypesByTypeCode(deviceTypeCode);

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

                    string[]      items  = new string[] { };
                    MonitorConfig config = MonitorConfigService.GetInstance().Get(deviceTypeCode);
                    if (config != null)
                    {
                        items = config.items.Split(',');
                    }

                    foreach (MonitorType monitor in mts)
                    {
                        foreach (string s in items)
                        {
                            if (s.Equals(monitor.code.ToString()))
                            {
                                temp.Add(monitor);
                                break;
                            }
                        }
                    }



                    if (temp != null)
                    {
                        if (deviceTypeCode == DeviceData.INVERTER_CODE && !timeInterval.Equals("Hour"))
                        {
                            MonitorType mt = MonitorType.getMonitorTypeByCode(MonitorType.PLANT_MONITORITEM_ENERGY_CODE);
                            sb.Append(" <option value=\"" + mt.code + "\">" + mt.name + "</option>");
                        }
                        else
                        {
                            foreach (MonitorType item in temp)
                            {
                                //if (item.code == MonitorType.MIC_DETECTOR_ADR || item.code == MonitorType.MIC_DETECTOR_SOI || item.code == MonitorType.MIC_DETECTOR_WINDDIRECTION || item.code == MonitorType.MIC_BUSBAR_MAXLINE || item.code == MonitorType.MIC_BUSBAR_COMMUNICATION || item.code == MonitorType.MIC_BUSBAR_DIGITALINPUT || item.code == MonitorType.MIC_BUSBAR_JDQOUT || item.code == MonitorType.MIC_BUSBAR_MAXLINE || item.code == MonitorType.MIC_INVERTER_STATUSTIME || item.code == MonitorType.MIC_INVERTER_DEVICESTATUS || item.code == MonitorType.MIC_INVERTER_OUTTYPE || item.code == MonitorType.MIC_INVERTER_POWER || item.code == MonitorType.MIC_INVERTER_RUNTIME || item.code == MonitorType.MIC_INVERTER_STATUSDATA1 || item.code == MonitorType.MIC_INVERTER_STATUSDATA2 || item.code == MonitorType.MIC_INVERTER_STATUSDATA3 || item.code == MonitorType.MIC_INVERTER_TODAYENERGY)
                                //    continue;
                                sb.Append(" <option value=\"" + item.code + "\">" + item.name + "</option>");
                            }
                        }
                    }
                }
            }

            return(Content(sb.ToString()));
        }
Example #30
0
        /// <summary>
        /// 根据自定义图表,构造设备比较结构
        /// </summary>
        /// <param name="crt"></param>
        /// <returns></returns>
        private List <DeviceStuct> GetDeviceStucts(CustomChart crt)
        {
            List <DeviceStuct> list = new List <DeviceStuct>();

            string[] ss = crt.product.Split(';');

            foreach (string ssssss in ss)
            {
                if (string.IsNullOrEmpty(ssssss))
                {
                    continue;
                }
                string[]    ssa = ssssss.Split(',');
                DeviceStuct dev = new DeviceStuct();
                dev.chartType    = crt.subType;
                dev.intervalMins = 5;
                dev.rate         = 1F;

                foreach (string s in ssa)
                {
                    string[] ss0 = s.Split('&');
                    if (ss0.Length == 2)
                    {
                        switch (ss0[1])
                        {
                        case "subType":
                            dev.chartType = ss0[0];
                            break;

                        case "cVal":
                            dev.cVal = int.Parse(ss0[0]);
                            break;

                        case "Unit":
                            dev.unit = ss0[0];
                            break;

                        case "valueType":
                            dev.monitorType = MonitorType.getMonitorTypeByCode(int.Parse(ss0[0]));
                            break;

                        case "0":    ///DeviceData.PLANT_CODE.ToString()
                            dev.deviceType = ChartDeviceType.PLANT;
                            dev.deviceId   = ss0[0];
                            Plant plant = PlantService.GetInstance().GetPlantInfoById(int.Parse(dev.deviceId));
                            dev.comareObj = plant.name;
                            break;

                        default:
                            dev.deviceType = ChartDeviceType.DEVICE;
                            dev.deviceId   = ss0[0];
                            Device device = DeviceService.GetInstance().get(int.Parse(dev.deviceId));
                            dev.comareObj = device.fullName;
                            break;
                        }
                    }
                }
                if (!(dev.monitorType.code != MonitorType.PLANT_MONITORITEM_ENERGY_CODE && !crt.timeInterval.Equals("Hour")))
                {
                    list.Add(dev);
                }
            }
            return(list);
        }