diff --git a/SolarPower/Controllers/StationReportController.cs b/SolarPower/Controllers/StationReportController.cs index 7819911..331873f 100644 --- a/SolarPower/Controllers/StationReportController.cs +++ b/SolarPower/Controllers/StationReportController.cs @@ -1258,6 +1258,16 @@ namespace SolarPower.Controllers stylein12.WrapText = true; #endregion var Formbody = GetMaxForm(postObject); + Select_table select_Table = new Select_table + { + FormType = postObject.FormType, + SearchType = postObject.SearchType, + Time = postObject.Time, + PowerStation = 1, + Userid = postObject.Userid + }; + var Formhead = GetTableHead(select_Table);//取head + var sheet = workbook.CreateSheet("綜合報表"); int RowPosition = 0; int index = 0; @@ -1302,6 +1312,45 @@ namespace SolarPower.Controllers cell.SetCellValue(Math.Round(form.AvgPR,2)); cell.CellStyle = styleLine12; + + if (Formhead.Result.Data.ShowMoney == 1) + { + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.TodayMoney, 2)); + cell.CellStyle = styleLine12; + + PsIdAndSiteDB psIdAndSiteDB = new PsIdAndSiteDB() + { + PowerstationId = form.PowerstationId, + SiteDB = form.PowerstationDB + }; + var LeaseRate = 0; + if(form.PowerstationType == 1) + { + var Hire = GetHireInfo(psIdAndSiteDB); + + foreach (var a in Hire.Result.Data) + { + LeaseRate += Convert.ToInt32(a.LeaseRate); + } + } + + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.TodayMoney * LeaseRate *0.01, 2)); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.TodayMoney, 2)); + cell.CellStyle = styleLine12; + } + + + + kwp += form.Kwh; kwhkwp += form.AvgKWHKWP; RowPosition++; @@ -1339,6 +1388,12 @@ namespace SolarPower.Controllers "平均日照", "PR" }; + if (Formhead.Result.Data.ShowMoney == 1) + { + lasthead.Add("發電金額"); + lasthead.Add("租金收入"); + lasthead.Add("省電費用"); + } foreach (var head in lasthead) { sheet.SetColumnWidth(index, 4 * 160 * 8); @@ -1480,7 +1535,7 @@ namespace SolarPower.Controllers index ++; cell = row.CreateCell(index); - cell.SetCellValue(Math.Round(kwhkwp, 2)); + cell.SetCellValue(Math.Round(kwhkwp / Formbody.Result.Data.Count, 2)); cell.CellStyle = styleLine12; region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); sheet.AddMergedRegion(region); @@ -1502,7 +1557,354 @@ namespace SolarPower.Controllers return File(ms, "application/vnd.ms-excel", "FIC太陽能監控平台" + "_" + "綜合報表" + "_" + postObject.Userid + Datename + ".xlsx"); } + public string ExportExcelmaxtableBackDownload(string post) + { + var postObject = JsonConvert.DeserializeObject(post); + var workbook = new XSSFWorkbook(); + #region excel設定 + IFont font12 = workbook.CreateFont(); + font12.FontName = "新細明體"; + font12.FontHeightInPoints = 12; + ICellStyle style12 = workbook.CreateCellStyle(); + style12.SetFont(font12); + style12.Alignment = HorizontalAlignment.Center; + style12.VerticalAlignment = VerticalAlignment.Center; + IFont font12Times = workbook.CreateFont(); + font12Times.FontName = "Times New Roman"; + font12Times.FontHeightInPoints = 12; + IFont font18 = workbook.CreateFont(); + font18.FontName = "新細明體"; + font18.FontHeightInPoints = 18; + font18.IsBold = true; + ICellStyle styleTitle18 = workbook.CreateCellStyle(); + styleTitle18.SetFont(font18); + styleTitle18.Alignment = HorizontalAlignment.Center; + styleTitle18.VerticalAlignment = VerticalAlignment.Center; + ICellStyle styleLeft12 = workbook.CreateCellStyle(); + styleLeft12.SetFont(font12); + styleLeft12.Alignment = HorizontalAlignment.Left; + styleLeft12.VerticalAlignment = VerticalAlignment.Center; + ICellStyle styleLine12 = workbook.CreateCellStyle(); + styleLine12.SetFont(font12); + styleLine12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + styleLine12.VerticalAlignment = VerticalAlignment.Center; + styleLine12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + styleLine12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + styleLine12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + styleLine12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + ICellStyle stylein12 = workbook.CreateCellStyle(); + stylein12.SetFont(font12Times); + stylein12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; + stylein12.VerticalAlignment = VerticalAlignment.Center; + stylein12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.WrapText = true; + #endregion + var Formbody = GetMaxForm(postObject); + Select_table select_Table = new Select_table + { + FormType = postObject.FormType, + SearchType = postObject.SearchType, + Time = postObject.Time, + PowerStation = 1, + Userid = postObject.Userid + }; + var Formhead = GetTableHead(select_Table);//取head + var sheet = workbook.CreateSheet("綜合報表"); + int RowPosition = 0; + int index = 0; + var citycount = Formbody.Result.Data.GroupBy(a => a.CityName).Count(); + RowPosition = citycount + 6; + IRow row; + ICell cell; + double kwhkwp = 0; + double kwp = 0; + CellRangeAddress region; + List cityArrays = new List(); + foreach (var form in Formbody.Result.Data) + { + index = 0; + row = sheet.CreateRow(RowPosition); + cell = row.CreateCell(index); + cell.SetCellValue(form.CityName + form.AreaName); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(form.PowerstationName); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.Kwh, 2)); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.SolarHour, 2)); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.AvgIrradiance, 2)); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.AvgPR, 2)); + cell.CellStyle = styleLine12; + + + if (Formhead.Result.Data.ShowMoney == 1) + { + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.TodayMoney, 2)); + cell.CellStyle = styleLine12; + + PsIdAndSiteDB psIdAndSiteDB = new PsIdAndSiteDB() + { + PowerstationId = form.PowerstationId, + SiteDB = form.PowerstationDB + }; + var LeaseRate = 0; + if (form.PowerstationType == 1) + { + var Hire = GetHireInfo(psIdAndSiteDB); + + foreach (var a in Hire.Result.Data) + { + LeaseRate += Convert.ToInt32(a.LeaseRate); + } + } + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.TodayMoney * LeaseRate * 0.01, 2)); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(form.TodayMoney, 2)); + cell.CellStyle = styleLine12; + } + + + + + kwp += form.Kwh; + kwhkwp += form.AvgKWHKWP; + RowPosition++; + CityArray cityinfo = new CityArray + { + City = form.CityName, + Count = 1, + Kwh = form.Kwh, + SolarHour = form.SolarHour + }; + if (cityArrays.Where(a => a.City == form.CityName).Count() > 0) + { + var city = cityArrays.Where(a => a.City == form.CityName).FirstOrDefault(); + city.Count += cityinfo.Count; + city.Kwh += cityinfo.Kwh; + city.SolarHour += cityinfo.SolarHour; + } + else + { + cityArrays.Add(cityinfo); + } + + + } + RowPosition = citycount + 6; + RowPosition--; + row = sheet.CreateRow(RowPosition); + index = 0; + List lasthead = new List() + { + "區域", + "電站名稱", + "發電量", + "發電小時", + "平均日照", + "PR" + }; + if (Formhead.Result.Data.ShowMoney == 1) + { + lasthead.Add("發電金額"); + lasthead.Add("租金收入"); + lasthead.Add("省電費用"); + } + foreach (var head in lasthead) + { + sheet.SetColumnWidth(index, 4 * 160 * 8); + cell = row.CreateCell(index); + cell.SetCellValue(head); + cell.CellStyle = styleLine12; + index++; + } + + RowPosition--; + RowPosition -= citycount; + var cityRowPosition = RowPosition; + index = 0; + foreach (var cityArray in cityArrays) + { + index = 0; + row = sheet.CreateRow(cityRowPosition); + cell = row.CreateCell(index); + cell.SetCellValue(cityArray.City); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(cityRowPosition, cityRowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round((cityArray.Kwh / cityArray.Count), 2)); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(cityRowPosition, cityRowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round((cityArray.SolarHour / cityArray.Count), 2)); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(cityRowPosition, cityRowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + cityRowPosition++; + } + + index = 0; + RowPosition--; + row = sheet.CreateRow(RowPosition); + cell = row.CreateCell(index); + cell.SetCellValue("縣市"); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue("平均發電量(kWp)"); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue("發電時間(小時)"); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + RowPosition = 0; + index = 0; + row = sheet.CreateRow(RowPosition); + cell = row.CreateCell(index); + cell.SetCellValue("時間"); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue("發電量"); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue("有效日照時數"); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + + + + RowPosition++; + row = sheet.CreateRow(RowPosition); + + index = 0; + cell = row.CreateCell(index); + cell.SetCellValue(postObject.Time); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(kwp, 2)); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + index++; + cell = row.CreateCell(index); + cell.SetCellValue(Math.Round(kwhkwp / Formbody.Result.Data.Count, 2)); + cell.CellStyle = styleLine12; + region = new CellRangeAddress(RowPosition, RowPosition, index, index + 1); + sheet.AddMergedRegion(region); + index++; + cell = row.CreateCell(index); + cell.CellStyle = styleLine12; + + + + var Datename = postObject.Time.Replace("-", ""); + if (!Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "report"))) + { + Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "report")); + } + if (!Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "report", Datename))) + { + Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "report", Datename)); + } + var n = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "report", Datename, "FIC太陽能監控平台" + "_" + "綜合報表" + "_" + postObject.Userid + Datename + ".xlsx"); + FileStream FS = new FileStream(n, FileMode.Create, FileAccess.Write); + workbook.Write(FS); + FS.Close(); + + return Path.Combine("\\" + "upload", "report", Datename, "FIC太陽能監控平台" + "_" + "綜合報表" + "_" + postObject.Userid + Datename + ".xlsx"); + } } diff --git a/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs b/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs index 67352f5..dbcc79c 100644 --- a/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs +++ b/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs @@ -46,7 +46,10 @@ namespace SolarPower.Quartz.Jobs continue; } List sentdaypowerstations = powerstations.Where(x => x.EmailDayReport == 1).Select(a => new Excelpowerstation {Name = a.Name,Value = a.PowerStationId.ToString()}).ToList(); + List sentMaxpowerstations = powerstations.Where(x => x.EmailComplexReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList(); + Controllers.StationReportController stationReportController = new Controllers.StationReportController(powerStationRepository, stationReportRepository); + //日報表 if (sentdaypowerstations.Count != 0) { Excel dayexcel = new Excel() @@ -57,7 +60,6 @@ namespace SolarPower.Quartz.Jobs Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"), Userid = user.Id }; - var stationReportName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(dayexcel, Formatting.Indented)); NoticeSchedule DaySchedule = new NoticeSchedule() { @@ -76,7 +78,71 @@ namespace SolarPower.Quartz.Jobs "Type" }; await noticeScheduleRepository.AddOneAsync(DaySchedule, properties); + + } + //綜合報表 每日 + if(sentMaxpowerstations.Count != 0) + { + Select_table2 maxdayexcel = new Select_table2() + { + FormType = 0, + PowerStation = sentMaxpowerstations, + SearchType = 0, + Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"), + Userid = user.Id + }; + var stationMaxReportName = stationReportController.ExportExcelmaxtableBackDownload(JsonConvert.SerializeObject(maxdayexcel, Formatting.Indented)); + NoticeSchedule MaxSchedule = new NoticeSchedule() + { + RecipientEmail = user.Email, + Subject = "綜合報表", + Attachment = stationMaxReportName, + RecipientName = user.Name, + Type = 1 + }; + List properties = new List() + { + "RecipientEmail", + "Subject", + "Attachment", + "RecipientName", + "Type" + }; + await noticeScheduleRepository.AddOneAsync(MaxSchedule, properties); + + if (DateTime.Now.ToString("dd") == "01") + { + Select_table2 maxmonthexcel = new Select_table2() + { + FormType = 0, + PowerStation = sentMaxpowerstations, + SearchType = 0, + Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM"), + Userid = user.Id + }; + var stationReportmaxmonthName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(maxmonthexcel, Formatting.Indented)); + NoticeSchedule MaxmonthSchedule = new NoticeSchedule() + { + RecipientEmail = user.Email, + Subject = "綜合報表", + Attachment = stationReportmaxmonthName, + RecipientName = user.Name, + Type = 1 + }; + List properties2 = new List() + { + "RecipientEmail", + "Subject", + "Attachment", + "RecipientName", + "Type" + }; + await noticeScheduleRepository.AddOneAsync(MaxmonthSchedule, properties2); + } + + } + if(DateTime.Now.ToString("dd")=="01") { List sentmonthpowerstations = powerstations.Where(x => x.EmailMonthReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList(); diff --git a/SolarPower/Repository/Implement/StationReportRepository.cs b/SolarPower/Repository/Implement/StationReportRepository.cs index 16d528d..5e07297 100644 --- a/SolarPower/Repository/Implement/StationReportRepository.cs +++ b/SolarPower/Repository/Implement/StationReportRepository.cs @@ -60,7 +60,7 @@ namespace SolarPower.Repository.Implement GROUP_CONCAT(DISTINCT CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 4), '''') ) INTO @sql - FROM inverter_history_hour; + FROM inverter_history_hour where powerstationId = {post.PowerStation}; SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m-%d %H'') report_date, ', @sql, ', b.KWH hourKWH, round((b.KWH / (SELECT MAX(TODAYKWH) FROM power_station_history_hour WHERE DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}'' and powerstationid = {post.PowerStation}))*100,2) ''hourKWHp'', d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(b.PR, 2) as pr @@ -106,7 +106,7 @@ namespace SolarPower.Repository.Implement GROUP_CONCAT(DISTINCT CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''') ) INTO @sql - FROM inverter_history_hour; + FROM inverter_history_hour where powerstationId = {post.PowerStation}; SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql, ',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR, d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'', @@ -153,7 +153,7 @@ namespace SolarPower.Repository.Implement GROUP_CONCAT(DISTINCT CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''') ) INTO @sql - FROM inverter_history_hour; + FROM inverter_history_hour where powerstationId = {post.PowerStation}; SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql, ',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR, d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'', @@ -261,47 +261,56 @@ namespace SolarPower.Repository.Implement _ => "" }; string sql = @$"SELECT - c.Name AS 'CityName', - a.Name AS 'AreaName', - ps.Name AS 'PowerstationName', - ps.SiteDB AS 'PowerstationDB', - ps.SolarType AS 'PowerstationType', - ps.Id as 'PowerStationId', - n.* - FROM power_station ps - LEFT JOIN city c ON c.Id = ps.CityId - LEFT JOIN area a ON a.Id = ps.AreaId - left JOIN - ( - SELECT SUM(a.SolarHour) SolarHour,SUM(a.Kwh) Kwh,AVG(b.PR) AvgPR,AVG(b.KWHKWP) AvgKWHKWP,AVG(c.Irradiance) AvgIrradiance,SUM(b.TodayMoney) as 'TodayMoney',a.PowerStationId FROM - ( - SELECT Max(ps.SOLARHOUR) AS 'SolarHour',MAX(ps.TODAYKWH) 'Kwh' ,DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d ') AS 'time', ps.PowerStationId - FROM power_station_history_hour ps - WHERE ps.PowerStationId IN @ids {wheretime} - GROUP BY DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d') - ) a - left JOIN - ( - SELECT B.PR ,B.KWHKWP,B.TODAYMONEY AS 'TodayMoney', DATE_FORMAT(A.bb,'%Y-%m-%d') time FROM - ( - SELECT Max(ps.TIMESTAMP) AS bb FROM power_station_history_hour ps - WHERE ps.PowerStationId IN @ids {wheretime} - GROUP BY DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d') - ) A - LEFT JOIN power_station_history_hour B ON A.bb = B.TIMESTAMP - ) b - ON DATE_FORMAT(a.time,'%Y-%m-%d') = DATE_FORMAT(b.time,'%Y-%m-%d') - LEFT JOIN - ( - SELECT SUM(ps.Irradiance) AS Irradiance , DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d') AS TIME - from sensor_history_hour ps - WHERE ps.PowerStationId IN @ids {wheretime} - GROUP BY DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d') - ) c - ON DATE_FORMAT(a.time,'%Y-%m-%d') = DATE_FORMAT(c.time,'%Y-%m-%d') - ) n - ON n.PowerStationId = ps.Id - WHERE ps.Id IN @ids ORDER BY ps.CityId"; + c.Name AS 'CityName', + a.Name AS 'AreaName', + ps.Name AS 'PowerstationName', + ps.SiteDB AS 'PowerstationDB', + ps.SolarType AS 'PowerstationType', + ps.Id as 'PowerStationId', + n.* + FROM power_station ps + LEFT JOIN city c ON c.Id = ps.CityId + LEFT JOIN area a ON a.Id = ps.AreaId + left JOIN + ( + SELECT a.SolarHour ,a.Kwh ,b.PR AvgPR,b.KWHKWP AvgKWHKWP,c.Irradiance AvgIrradiance,b.TodayMoney as 'TodayMoney',a.Id,a.time FROM + ( + SELECT ps.Id,SUM(k.SolarHour) SolarHour,SUM(k.Kwh) Kwh , k.time FROM power_station ps + LEFT JOIN + ( + SELECT Max(ps.SOLARHOUR) AS 'SolarHour',MAX(ps.TODAYKWH) 'Kwh' ,DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d %H:%i') AS 'time', ps.PowerStationId + FROM power_station_history_hour ps + WHERE ps.PowerStationId IN @ids {wheretime} + GROUP BY DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d'),ps.PowerStationId + ) k ON k.PowerStationId = ps.Id WHERE ps.Id IN @ids GROUP BY k.PowerStationId + ) a + LEFT JOIN + ( + SELECT ps.Id,AVG(n.PR) PR,AVG(n.KWHKWP) KWHKWP,SUM(n.TodayMoney) TodayMoney FROM power_station ps + LEFT JOIN + ( + SELECT B.PR ,B.KWHKWP,B.TODAYMONEY AS 'TodayMoney', DATE_FORMAT(A.bb,'%Y-%m-%d') 'time' ,B.PowerStationId FROM + ( + SELECT Max(ps.TIMESTAMP) AS bb FROM power_station_history_hour ps + WHERE ps.PowerStationId IN @ids {wheretime} + GROUP BY DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d'),ps.PowerStationId + ) A + LEFT JOIN power_station_history_hour B ON A.bb = B.TIMESTAMP + GROUP BY B.PowerStationId ,DATE_FORMAT(A.bb,'%Y-%m-%d') + )n ON ps.Id = n.PowerStationId WHERE ps.Id IN @ids GROUP BY n.PowerStationId + ) b + ON a.Id = b.Id + LEFT JOIN + ( + SELECT SUM(ps.Irradiance) AS Irradiance , DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d') AS TIME ,ps.PowerStationId + from sensor_history_hour ps + WHERE ps.PowerStationId IN @ids {wheretime} + GROUP BY DATE_FORMAT(ps.TIMESTAMP,'%Y-%m-%d'),ps.PowerStationId + ) c + ON a.Id = c.PowerStationId + GROUP BY a.Id,a.time + ) n ON n.Id = ps.Id + WHERE ps.Id IN @ids ORDER BY ps.CityId"; result = (await conn.QueryAsync(sql,new { ids = ids})).ToList(); } catch (Exception exception) diff --git a/SolarPower/Views/StationReport/Index.cshtml b/SolarPower/Views/StationReport/Index.cshtml index d8d1c07..1dc76a4 100644 --- a/SolarPower/Views/StationReport/Index.cshtml +++ b/SolarPower/Views/StationReport/Index.cshtml @@ -742,7 +742,7 @@ var url = "/StationReport/GetForm"; $.post(url, send_data, function (rel) { if (rel.code != "0000") { - toast_error(rel.data.msg); + toast_error(rel.msg); return; } var sta = ""; @@ -1092,9 +1092,9 @@ var posturl = "/StationReport/GetHireInfo"; $.ajax({ url: posturl, - type: "POST",//'GET', + type: "POST", dataType: 'json', - data: dataTosent, // 輸入的資料 + data: dataTosent, cache: false, async: false, success: function (response) { @@ -1102,37 +1102,8 @@ hirerate += Number(value.leaseRate); }) } - }); - - - - - - //await $.post(posturl, dataTosent, function (rel) { - - // if (rel.code != "0000") { - // out_reject(); - // toast_error(rel.data.msg); - // return; - // } - - //}).promise(); - + }); return hirerate; - //return new Promise(function (out_resolve, out_reject) { - // $.post(posturl, dataTosent, function (rel) { - - // if (rel.code != "0000") { - // out_reject(); - // toast_error(rel.data.msg); - // return; - // } - // $.each(rel.data, function (index, value) { - // hirerate += Number(value.leaseRate); - // }) - // out_resolve(hirerate); - // }) - //}); }