/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
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)); }