excel 日月報完成
This commit is contained in:
parent
2a48cc71c7
commit
75753f21e7
@ -3,21 +3,24 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using NPOI.SS.UserModel;
|
using NPOI.SS.UserModel;
|
||||||
|
using NPOI.SS.Util;
|
||||||
using NPOI.XSSF.UserModel;
|
using NPOI.XSSF.UserModel;
|
||||||
using SolarPower.Models;
|
using SolarPower.Models;
|
||||||
using SolarPower.Models.PowerStation;
|
using SolarPower.Models.PowerStation;
|
||||||
using SolarPower.Repository.Interface;
|
using SolarPower.Repository.Interface;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Data.SqlClient;
|
||||||
|
using System.Dynamic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SolarPower.Controllers
|
namespace SolarPower.Controllers
|
||||||
{
|
{
|
||||||
public class StationReportController : MyBaseController<StationReportController>
|
public class StationReportController : MyBaseController<StationReportController>
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly IPowerStationRepository powerStationRepository;
|
private readonly IPowerStationRepository powerStationRepository;
|
||||||
private readonly IStationReportRepository stationReportRepository;
|
private readonly IStationReportRepository stationReportRepository;
|
||||||
|
|
||||||
@ -165,7 +168,7 @@ namespace SolarPower.Controllers
|
|||||||
stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||||
stylein12.WrapText = true;
|
stylein12.WrapText = true;
|
||||||
#endregion
|
#endregion
|
||||||
foreach(var powerstationid in postObject.PowerStation)
|
foreach (var powerstationid in postObject.PowerStation)
|
||||||
{
|
{
|
||||||
var sheet = workbook.CreateSheet(powerstationid.Name);
|
var sheet = workbook.CreateSheet(powerstationid.Name);
|
||||||
Select_table select_Table = new Select_table
|
Select_table select_Table = new Select_table
|
||||||
@ -175,14 +178,413 @@ namespace SolarPower.Controllers
|
|||||||
Time = postObject.Time,
|
Time = postObject.Time,
|
||||||
PowerStation = Convert.ToInt32(powerstationid.Value)
|
PowerStation = Convert.ToInt32(powerstationid.Value)
|
||||||
};
|
};
|
||||||
var Formbody = GetForm(select_Table);
|
var Formbody = GetForm(select_Table);//取body
|
||||||
var Formhead = GetTableHead(select_Table);
|
var Formhead = GetTableHead(select_Table);//取head
|
||||||
int RowPosition = 0;
|
int RowPosition = 0;
|
||||||
IRow row = sheet.CreateRow(RowPosition);
|
|
||||||
ICell cell = row.CreateCell(0);
|
switch (postObject.FormType)
|
||||||
|
{
|
||||||
|
case 0: //日報表
|
||||||
|
#region 顯示head //RowPosition = 0
|
||||||
|
IRow row = sheet.CreateRow(RowPosition);
|
||||||
|
ICell cell = row.CreateCell(0);
|
||||||
|
int index = 0;
|
||||||
|
cell.SetCellValue("Date");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
sheet.SetColumnWidth(index, 4 * 160 * 8);
|
||||||
|
index++;
|
||||||
|
|
||||||
|
foreach (var head in Formhead.Result.Data)
|
||||||
|
{
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(head);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
sheet.SetColumnWidth(index, 4 * 160 * 6);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] lasthead =
|
||||||
|
{
|
||||||
|
"小時發電量(kWh)",
|
||||||
|
"小時發電量百分比(%)",
|
||||||
|
"小時平均日照度(W/㎡)",
|
||||||
|
"小時平均模組溫度(°C)",
|
||||||
|
"小時售電金額(NTD)",
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var head in lasthead)
|
||||||
|
{
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(head);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
sheet.SetColumnWidth(index, 4 * 160 * 12);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 顯示body //RowPosition = 1
|
||||||
|
RowPosition++;
|
||||||
|
var thour = ""; var tpr = ""; var tkwh = ""; var kWhkwp = ""; var ntd = ""; var ntdone = "";
|
||||||
|
foreach (dynamic body in Formbody.Result.Data)
|
||||||
|
{
|
||||||
|
index = 0;
|
||||||
|
var dbody = body as IDictionary<string, object>;
|
||||||
|
thour = Checknull(Math.Round(Convert.ToDouble(dbody["tothour"]), 2).ToString());
|
||||||
|
tpr = Checknull(Math.Round(Convert.ToDouble(dbody["pr"]), 2).ToString());
|
||||||
|
tkwh = Checknull(Math.Round(Convert.ToDouble(dbody["totKWH"]), 2).ToString());
|
||||||
|
kWhkwp = Checknull(Math.Round(Convert.ToDouble(dbody["totKWHKWP"]), 2).ToString());
|
||||||
|
ntd = Checknull(Math.Round(Convert.ToDouble(dbody["totmoney"]), 2).ToString());
|
||||||
|
|
||||||
|
double onemoney = Convert.ToDouble(ntd) / Convert.ToDouble(tkwh);
|
||||||
|
if (double.IsNaN(onemoney))
|
||||||
|
{
|
||||||
|
onemoney = 0;
|
||||||
|
}
|
||||||
|
ntdone = Checknull(Math.Round(onemoney, 2).ToString());
|
||||||
|
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
var b = dbody["report_date"].ToString();
|
||||||
|
cell.SetCellValue(b);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
foreach (var head in Formhead.Result.Data)
|
||||||
|
{
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(dbody[head] == null ? "0" : dbody[head].ToString());
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
string[] bodynames = {
|
||||||
|
"hourKWH",
|
||||||
|
"hourKWHp",
|
||||||
|
"irradiance",
|
||||||
|
"temperature",
|
||||||
|
"hourmoney",
|
||||||
|
};
|
||||||
|
foreach (var bodyname in bodynames)
|
||||||
|
{
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
if (dbody[bodyname] == null)
|
||||||
|
{
|
||||||
|
cell.SetCellValue("0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var c = dbody[bodyname].ToString();
|
||||||
|
cell.SetCellValue(c);
|
||||||
|
}
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
RowPosition++;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 顯示總量//RowPosition = body + 2
|
||||||
|
RowPosition += 2;//空兩行
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日照小時:");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
cell = row.CreateCell(1);
|
||||||
|
cell.SetCellValue(thour);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
RowPosition++;
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("kWH/kWP:");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
cell = row.CreateCell(1);
|
||||||
|
cell.SetCellValue(kWhkwp);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
RowPosition++;
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("PR%:");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
cell = row.CreateCell(1);
|
||||||
|
cell.SetCellValue(tpr);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
RowPosition++;
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日發電量(kWh):");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
cell = row.CreateCell(1);
|
||||||
|
cell.SetCellValue(tkwh);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
RowPosition++;
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日售電金額(NTD):");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
cell = row.CreateCell(1);
|
||||||
|
cell.SetCellValue(ntd);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
RowPosition++;
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日售電單價(NTD):");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
cell = row.CreateCell(1);
|
||||||
|
cell.SetCellValue(ntdone);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
break;
|
||||||
|
case 1: // 月報表
|
||||||
|
#region 顯示head //RowPosition = 0
|
||||||
|
IRow row2 = sheet.CreateRow(RowPosition);
|
||||||
|
ICell cell2 = row2.CreateCell(0);
|
||||||
|
int index2 = 0;
|
||||||
|
cell2.SetCellValue("Date");
|
||||||
|
cell2.CellStyle = styleLine12;
|
||||||
|
sheet.SetColumnWidth(index2, 4 * 160 * 8);
|
||||||
|
index2++;
|
||||||
|
|
||||||
|
foreach (var head in Formhead.Result.Data)
|
||||||
|
{
|
||||||
|
cell2 = row2.CreateCell(index2);
|
||||||
|
cell2.SetCellValue(head);
|
||||||
|
cell2.CellStyle = styleLine12;
|
||||||
|
sheet.SetColumnWidth(index2, 4 * 160 * 8);
|
||||||
|
index2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] lasthead2 =
|
||||||
|
{
|
||||||
|
"日發電量(kWh)",
|
||||||
|
"日發電量百分比(%)",
|
||||||
|
"日照小時(hr)",
|
||||||
|
"kWH/kWP",
|
||||||
|
"PR%",
|
||||||
|
"日平均日照度(W/㎡)",
|
||||||
|
"日平均模組溫度(°C)",
|
||||||
|
"日售電金額(NTD)"
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var head in lasthead2)
|
||||||
|
{
|
||||||
|
cell2 = row2.CreateCell(index2);
|
||||||
|
cell2.SetCellValue(head);
|
||||||
|
cell2.CellStyle = styleLine12;
|
||||||
|
sheet.SetColumnWidth(index2, 4 * 160 * 12);
|
||||||
|
index2++;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 顯示body //RowPosition = 1
|
||||||
|
RowPosition++;
|
||||||
|
var avghour = "0"; var avgKWHKWP = "0"; var avgdayKWH = "0"; var monthKWH = "0"; var monthmoney = "0"; var monthmoneyone = "0";
|
||||||
|
var check_hire = false;
|
||||||
|
var sitedb = "";
|
||||||
|
foreach (dynamic body in Formbody.Result.Data)
|
||||||
|
{
|
||||||
|
index2 = 0;
|
||||||
|
var dbody = body as IDictionary<string, object>;
|
||||||
|
|
||||||
|
avghour = (Convert.ToDouble(dbody["tothour"].ToString()) + Convert.ToDouble(avghour)).ToString();
|
||||||
|
avgKWHKWP = (Convert.ToDouble(dbody["KWHKWP"].ToString()) + Convert.ToDouble(avgKWHKWP)).ToString();
|
||||||
|
avgdayKWH = (Convert.ToDouble(dbody["dayKWH"].ToString()) + Convert.ToDouble(avgdayKWH)).ToString();
|
||||||
|
monthKWH = dbody["monthKWH"] == null ? "0": dbody["monthKWH"].ToString();
|
||||||
|
monthmoney = dbody["monthmoney"] == null ? "0" : dbody["monthmoney"].ToString();
|
||||||
|
monthmoneyone = (Convert.ToDouble(dbody["monthmoneyone"].ToString()) + Convert.ToDouble(monthmoneyone)).ToString();
|
||||||
|
if (dbody["SolarType"].ToString() == "1")//檢驗是否為租用
|
||||||
|
{
|
||||||
|
check_hire = true;
|
||||||
|
sitedb = dbody["SiteDB"].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
row2 = sheet.CreateRow(RowPosition);
|
||||||
|
cell2 = row2.CreateCell(index2);
|
||||||
|
var b = dbody["report_date"].ToString();
|
||||||
|
cell2.SetCellValue(b);
|
||||||
|
cell2.CellStyle = styleLine12;
|
||||||
|
index2++;
|
||||||
|
foreach (var head in Formhead.Result.Data)
|
||||||
|
{
|
||||||
|
cell2 = row2.CreateCell(index2);
|
||||||
|
cell2.SetCellValue(dbody[head] == null ? "0": dbody[head].ToString());
|
||||||
|
cell2.CellStyle = styleLine12;
|
||||||
|
index2++;
|
||||||
|
}
|
||||||
|
string[] bodynames = {
|
||||||
|
"dayKWH",
|
||||||
|
"dayKWHp",
|
||||||
|
"tothour",
|
||||||
|
"KWHKWP",
|
||||||
|
"PR",
|
||||||
|
"irradiance",
|
||||||
|
"temperature",
|
||||||
|
"soldmoney"
|
||||||
|
};
|
||||||
|
foreach (var bodyname in bodynames)
|
||||||
|
{
|
||||||
|
cell2 = row2.CreateCell(index2);
|
||||||
|
if (dbody[bodyname] == null)
|
||||||
|
{
|
||||||
|
cell2.SetCellValue("0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var c = dbody[bodyname].ToString();
|
||||||
|
cell2.SetCellValue(c);
|
||||||
|
}
|
||||||
|
cell2.CellStyle = styleLine12;
|
||||||
|
index2++;
|
||||||
|
}
|
||||||
|
RowPosition++;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 顯示總量//RowPosition = body + 2
|
||||||
|
RowPosition += 2;//空兩行
|
||||||
|
index = 0;
|
||||||
|
var Useday = Formbody.Result.Data.Count;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日日照小時平均");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日kWH/kWP平均");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("日發電量平均(kWh)");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("月發電量(kWh)");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("月售電金額(NTD)");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("月售電單價(NTD)");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("月售電天數");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
RowPosition++;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Math.Round(Convert.ToDouble(avghour)/Useday,2));
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Math.Round(Convert.ToDouble(avgKWHKWP) / Useday,2));
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Math.Round(Convert.ToDouble(avgdayKWH) / Useday,2));
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(monthKWH);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(monthmoney);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoneyone) / Useday,2));
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Useday);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 顯示租用//RowPosition = 總量 + 2
|
||||||
|
if (check_hire == true)
|
||||||
|
{
|
||||||
|
RowPosition += 2;//空兩行
|
||||||
|
PsIdAndSiteDB set = new PsIdAndSiteDB()
|
||||||
|
{
|
||||||
|
PowerstationId = Convert.ToInt32(powerstationid.Value),
|
||||||
|
SiteDB = sitedb
|
||||||
|
};
|
||||||
|
var info = GetHireInfo(set);
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("出租人");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("租金比例");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("租金金額(未稅)");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue("租金金額(含稅)");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
|
||||||
|
foreach(var a in info.Result.Data)
|
||||||
|
{
|
||||||
|
RowPosition++;
|
||||||
|
index = 0;
|
||||||
|
row = sheet.CreateRow(RowPosition);
|
||||||
|
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(a.Landowner);
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(a.LeaseRate + "%");
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoney) * Convert.ToDouble(a.LeaseRate) /100,2).ToString());
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
cell = row.CreateCell(index);
|
||||||
|
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoney) * Convert.ToDouble(a.LeaseRate) / 100 * 1.05, 2).ToString());
|
||||||
|
cell.CellStyle = styleLine12;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var ms = new NpoiMemoryStream
|
var ms = new NpoiMemoryStream
|
||||||
{
|
{
|
||||||
AllowClose = false
|
AllowClose = false
|
||||||
@ -193,7 +595,35 @@ namespace SolarPower.Controllers
|
|||||||
return File(ms, "application/vnd.ms-excel", "text.xlsx");
|
return File(ms, "application/vnd.ms-excel", "text.xlsx");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string Checknull(string a)
|
||||||
|
{
|
||||||
|
if(a == null)
|
||||||
|
{
|
||||||
|
return "0";
|
||||||
|
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<ApiResult<List<Landinfo>>> GetHireInfo(PsIdAndSiteDB post)
|
||||||
|
{
|
||||||
|
ApiResult<List<Landinfo>> apiResult = new ApiResult<List<Landinfo>>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var a = await stationReportRepository.GetHire(post);
|
||||||
|
apiResult.Code = "0000";
|
||||||
|
apiResult.Data = a;
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
apiResult.Code = "9999";
|
||||||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】");
|
||||||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||||
|
}
|
||||||
|
return apiResult;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,5 +52,14 @@ namespace SolarPower.Models
|
|||||||
base.Close();
|
base.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public class PsIdAndSiteDB
|
||||||
|
{
|
||||||
|
public int PowerstationId { get; set; }
|
||||||
|
public string SiteDB { get; set; }
|
||||||
|
}
|
||||||
|
public class Landinfo
|
||||||
|
{
|
||||||
|
public string LeaseRate { get; set; }
|
||||||
|
public string Landowner { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,7 +110,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
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,
|
',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'',
|
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone''
|
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB
|
||||||
FROM inverter_history_day a left join
|
FROM inverter_history_day a left join
|
||||||
( # 每日加總 inv
|
( # 每日加總 inv
|
||||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, siteid, sitetype, #, round(KWH, 2) KWH,
|
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, siteid, sitetype, #, round(KWH, 2) KWH,
|
||||||
@ -133,7 +133,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = d.report_date
|
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = d.report_date
|
||||||
join
|
join
|
||||||
(
|
(
|
||||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
select id, name stationName, powerRate,SolarType,SiteDB from power_station where id = {post.PowerStation}
|
||||||
)z on a.powerstationid = z.id
|
)z on a.powerstationid = z.id
|
||||||
where DATE_FORMAT(a.TIMESTAMP,''%Y-%m'') = ''{post.Time}''
|
where DATE_FORMAT(a.TIMESTAMP,''%Y-%m'') = ''{post.Time}''
|
||||||
GROUP BY DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'')
|
GROUP BY DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'')
|
||||||
@ -157,7 +157,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
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,
|
',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'',
|
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone''
|
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB
|
||||||
FROM inverter_history_day a left join
|
FROM inverter_history_day a left join
|
||||||
( # 每日加總 inv
|
( # 每日加總 inv
|
||||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, siteid, sitetype, #, round(KWH, 2) KWH,
|
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, siteid, sitetype, #, round(KWH, 2) KWH,
|
||||||
@ -182,7 +182,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = d.report_date
|
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = d.report_date
|
||||||
join
|
join
|
||||||
(
|
(
|
||||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
select id, name stationName, powerRate, SolarType, SiteDB from power_station where id = {post.PowerStation}
|
||||||
)z on a.powerstationid = z.id
|
)z on a.powerstationid = z.id
|
||||||
where DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') BETWEEN ''{times[0]}'' AND ''{times[1]}''
|
where DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') BETWEEN ''{times[0]}'' AND ''{times[1]}''
|
||||||
GROUP BY DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'')
|
GROUP BY DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'')
|
||||||
@ -194,8 +194,6 @@ namespace SolarPower.Repository.Implement
|
|||||||
DEALLOCATE PREPARE stmt;";
|
DEALLOCATE PREPARE stmt;";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
a = await conn.QueryAsync<dynamic>(sql);
|
a = await conn.QueryAsync<dynamic>(sql);
|
||||||
@ -211,5 +209,28 @@ namespace SolarPower.Repository.Implement
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<Landinfo>> GetHire (PsIdAndSiteDB post)
|
||||||
|
{
|
||||||
|
List<Landinfo> result = new List<Landinfo>();
|
||||||
|
using (IDbConnection conn = _databaseHelper.GetConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string sql = @$"SELECT LeaseRate,Landowner from {post.SiteDB}.land_building WHERE PowerStationId = {post.PowerstationId}";
|
||||||
|
result = (await conn.QueryAsync<Landinfo>(sql)).ToList();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Close();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,5 +10,6 @@ namespace SolarPower.Repository.Interface
|
|||||||
{
|
{
|
||||||
Task<List<string>> GetInverterId(string DBname, Select_table post);
|
Task<List<string>> GetInverterId(string DBname, Select_table post);
|
||||||
Task<dynamic> Gettablebody(Select_table post);
|
Task<dynamic> Gettablebody(Select_table post);
|
||||||
|
Task<List<Landinfo>> GetHire(PsIdAndSiteDB post);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -236,6 +236,24 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mb-5">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
<div class="card p-3 w-100 " id="hiretable">
|
||||||
|
<table class="table m-0">
|
||||||
|
<thead id="HireTableHead">
|
||||||
|
<tr>
|
||||||
|
<th>出租人</th>
|
||||||
|
<th>租金比例</th>
|
||||||
|
<th>租金金額(未稅)</th>
|
||||||
|
<th>租金金額(含稅)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="HireTableBody">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row mb-5">
|
<div class="row mb-5">
|
||||||
<div class="col-xl-12">
|
<div class="col-xl-12">
|
||||||
<div class="card p-3 w-100 overflow-auto">
|
<div class="card p-3 w-100 overflow-auto">
|
||||||
@ -248,7 +266,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
|
||||||
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -267,6 +286,7 @@
|
|||||||
var a = $('#collapse').trigger("click");
|
var a = $('#collapse').trigger("click");
|
||||||
//document.getElementById("collapse").click();
|
//document.getElementById("collapse").click();
|
||||||
$('.overflow-auto').hide();
|
$('.overflow-auto').hide();
|
||||||
|
$('#hiretable').hide();
|
||||||
$('#DateGet').val(new Date().toISOString().substring(0, 10));
|
$('#DateGet').val(new Date().toISOString().substring(0, 10));
|
||||||
document.getElementById("DateGettextdiv").style.display = "none";//隱藏
|
document.getElementById("DateGettextdiv").style.display = "none";//隱藏
|
||||||
$('#DateGet').attr('style', 'width:205px');
|
$('#DateGet').attr('style', 'width:205px');
|
||||||
@ -364,6 +384,7 @@
|
|||||||
else {
|
else {
|
||||||
timerange = $('#DateGet').val();
|
timerange = $('#DateGet').val();
|
||||||
}
|
}
|
||||||
|
nowform = null;
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
@ -655,9 +676,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Dateform(form) {
|
function Dateform(form) {
|
||||||
|
$('#hiretable').hide();
|
||||||
tablehand(form);
|
tablehand(form);
|
||||||
nowform = form;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function tablebody(form)
|
function tablebody(form)
|
||||||
@ -736,7 +756,7 @@
|
|||||||
$('#tothead').append(stc);
|
$('#tothead').append(stc);
|
||||||
haveinvertName = [];
|
haveinvertName = [];
|
||||||
}
|
}
|
||||||
else {
|
else {//月報表
|
||||||
var avghour = 0;
|
var avghour = 0;
|
||||||
var avgKWHKWP = 0;
|
var avgKWHKWP = 0;
|
||||||
var avgdayKWH = 0;
|
var avgdayKWH = 0;
|
||||||
@ -744,6 +764,9 @@
|
|||||||
var monthmoney = 0;
|
var monthmoney = 0;
|
||||||
var monthmoneyone = 0;
|
var monthmoneyone = 0;
|
||||||
var monthday = 0;
|
var monthday = 0;
|
||||||
|
|
||||||
|
var check_hire = false;
|
||||||
|
var sitedb = "";
|
||||||
$.each(rel.data, function (index, inverter) {
|
$.each(rel.data, function (index, inverter) {
|
||||||
sta += "<tr>";
|
sta += "<tr>";
|
||||||
sta += "<td>" + inverter.report_date + "</td>";
|
sta += "<td>" + inverter.report_date + "</td>";
|
||||||
@ -769,6 +792,13 @@
|
|||||||
monthKWH = inverter.monthKWH ? inverter.monthKWH : 0;
|
monthKWH = inverter.monthKWH ? inverter.monthKWH : 0;
|
||||||
monthmoney = inverter.monthmoney ? inverter.monthmoney : 0;
|
monthmoney = inverter.monthmoney ? inverter.monthmoney : 0;
|
||||||
monthmoneyone += inverter.monthmoneyone ? inverter.monthmoneyone : 0;
|
monthmoneyone += inverter.monthmoneyone ? inverter.monthmoneyone : 0;
|
||||||
|
|
||||||
|
if (inverter.SolarType == 1)
|
||||||
|
{
|
||||||
|
check_hire = true;
|
||||||
|
sitedb = inverter.SiteDB
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
monthday = rel.data.length;
|
monthday = rel.data.length;
|
||||||
|
|
||||||
@ -793,7 +823,9 @@
|
|||||||
stb += "<td>" + 0 + "</td>";
|
stb += "<td>" + 0 + "</td>";
|
||||||
stb += "<td>" + 0 + "</td>";
|
stb += "<td>" + 0 + "</td>";
|
||||||
stb += "</tr>";
|
stb += "</tr>";
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
stb += "<td>" + (avghour / monthday).toFixed(2) + "</td>";
|
stb += "<td>" + (avghour / monthday).toFixed(2) + "</td>";
|
||||||
stb += "<td>" + (avgKWHKWP / monthday).toFixed(2) + "</td>";
|
stb += "<td>" + (avgKWHKWP / monthday).toFixed(2) + "</td>";
|
||||||
stb += "<td>" + (avgdayKWH / monthday).toFixed(2) + "</td>";
|
stb += "<td>" + (avgdayKWH / monthday).toFixed(2) + "</td>";
|
||||||
@ -803,17 +835,45 @@
|
|||||||
stb += "<td>" + monthday + "</td>";
|
stb += "<td>" + monthday + "</td>";
|
||||||
stb += "</tr>";
|
stb += "</tr>";
|
||||||
}
|
}
|
||||||
|
var std = "";
|
||||||
|
if (check_hire == true)
|
||||||
|
{
|
||||||
|
var dataTosent =
|
||||||
|
{
|
||||||
|
Sitedb: sitedb,
|
||||||
|
PowerstationId: nowpowerstation
|
||||||
|
}
|
||||||
|
$('#HireTableBody').empty();
|
||||||
|
var posturl = "/StationReport/GetHireInfo";
|
||||||
|
$.post(posturl, dataTosent, function (rel) {
|
||||||
|
if (rel.code != "0000") {
|
||||||
|
toast_error(rel.data.msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.each(rel.data, function (index, value) {
|
||||||
|
std += "<tr>";
|
||||||
|
std += "<td>" + value.landowner + "</td>";
|
||||||
|
std += "<td>" + value.leaseRate + "%" + "</td>";
|
||||||
|
std += "<td>" + (monthmoney * value.leaseRate / 100).toFixed(2) + "</td>";
|
||||||
|
std += "<td>" + (monthmoney * value.leaseRate / 100 * 1.05).toFixed(2) + "</td>";
|
||||||
|
std += "</tr>";
|
||||||
|
})
|
||||||
|
$('#HireTableBody').append(std);
|
||||||
|
$('#hiretable').show();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$('#TableBody').append(sta);
|
$('#TableBody').append(sta);
|
||||||
$('#totbody').append(stb);
|
$('#totbody').append(stb);
|
||||||
$('#tothead').append(stc);
|
$('#tothead').append(stc);
|
||||||
|
|
||||||
|
|
||||||
haveinvertName = [];
|
haveinvertName = [];
|
||||||
}
|
}
|
||||||
$('.overflow-auto').show();
|
$('.overflow-auto').show();
|
||||||
|
|
||||||
|
nowform = form;
|
||||||
}, 'json');
|
}, 'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -826,7 +886,11 @@
|
|||||||
FormType: nowform,
|
FormType: nowform,
|
||||||
PowerStation: selecterd_invert
|
PowerStation: selecterd_invert
|
||||||
}
|
}
|
||||||
window.location = "/StationReport/ExportExcel?post=" + JSON.stringify(send_data);
|
if (send_data.FormType != null && send_data.PowerStation.length != 0) {
|
||||||
|
window.location = "/StationReport/ExportExcel?post=" + JSON.stringify(send_data);
|
||||||
|
} else {
|
||||||
|
toast_warning("請先選擇電站及報表類型");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user