[FE API] 更新各分盤總盤查詢功能,回傳之前的 json 格式
This commit is contained in:
parent
69d564c167
commit
0cecb31e6d
@ -826,8 +826,8 @@ namespace FrontendWebApi.ApiControllers
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("api/ExportElectricEachCompareList")]
|
||||
public FileResult OpeExportEachCompareExcelElec([FromBody] HydroMeterInput input)
|
||||
[Route("api/ExportElectricEachTotalCompareList")]
|
||||
public FileResult OpeExportEachTotalCompareExcelElec([FromBody] HydroMeterInput input)
|
||||
{
|
||||
List<List<HydroMeterOutput>> result = new List<List<HydroMeterOutput>>();
|
||||
var building = backendRepository.GetAllAsync<HydroBuildList>("select * from building where deleted = 0").Result;
|
||||
@ -999,9 +999,9 @@ namespace FrontendWebApi.ApiControllers
|
||||
|
||||
[HttpPost]
|
||||
[Route("api/ElectricListEachTotal")]
|
||||
public async Task<ActionResult<ApiResult<List<HydroMeterRawDataEachTotalOutput>>>> ElectricListEachTotal([FromBody] HydroMeterInput input)
|
||||
public async Task<ActionResult<ApiResult<List<HydroMeterEachTotalOutput>>>> ElectricListEachTotal([FromBody] HydroMeterInput input)
|
||||
{
|
||||
ApiResult<List<HydroMeterRawDataEachTotalOutput>> apiResult = new ApiResult<List<HydroMeterRawDataEachTotalOutput>>(jwt_str);
|
||||
ApiResult<List<HydroMeterEachTotalOutput>> apiResult = new ApiResult<List<HydroMeterEachTotalOutput>>(jwt_str);
|
||||
if (!jwtlife)
|
||||
{
|
||||
apiResult.Code = "5000";
|
||||
@ -1053,7 +1053,7 @@ namespace FrontendWebApi.ApiControllers
|
||||
if (string.IsNullOrEmpty(isTable)) //check for has table or not
|
||||
{
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = new List<HydroMeterRawDataEachTotalOutput>() { };
|
||||
apiResult.Data = new List<HydroMeterEachTotalOutput>() { };
|
||||
return Ok(apiResult);
|
||||
}
|
||||
|
||||
@ -1062,59 +1062,118 @@ namespace FrontendWebApi.ApiControllers
|
||||
string header_lastY = last_year + "_" + start_month;
|
||||
|
||||
var sql = $@"
|
||||
select e.full_name building_name, a.device_number, {header_now} searchMT, ifnull(b.{header_now}, 0) searchM, {header_lastM} lastMT, ifnull(c.{header_lastM}, 0) lastM, {header_lastY} lastYT, ifnull(d.{header_lastY}, 0) lastY
|
||||
select e.full_name building_name, a.device_number, '{header_now}' searchMT, ifnull(b.kwh_sum, 0) searchM, '{header_lastM}' lastMT, ifnull(c.kwh_sum, 0) lastM, '{header_lastY}' lastYT, ifnull(d.kwh_sum, 0) lastY
|
||||
from device a
|
||||
left join (select device_number, sum(kwh_result) {header_now} from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {start_month} group by device_number) b on a.device_number COLLATE utf8mb4_0900_ai_ci = b.device_number -- month1
|
||||
left join (select device_number, sum(kwh_result) {header_lastM} from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {last_month} group by device_number) c on a.device_number COLLATE utf8mb4_0900_ai_ci = c.device_number -- month2
|
||||
left join (select device_number, sum(kwh_result) {header_lastY} from archive_electric_meter_month where year(start_timestamp) = {last_year} and month(start_timestamp) = {start_month} group by device_number) d on a.device_number COLLATE utf8mb4_0900_ai_ci = d.device_number -- last Month
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {start_month} group by device_number) b on a.device_number COLLATE utf8mb4_0900_ai_ci = b.device_number -- month1
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {last_month} group by device_number) c on a.device_number COLLATE utf8mb4_0900_ai_ci = c.device_number -- month2
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {last_year} and month(start_timestamp) = {start_month} group by device_number) d on a.device_number COLLATE utf8mb4_0900_ai_ci = d.device_number -- last Month
|
||||
join building e on a.device_building_tag = e.building_tag
|
||||
where {sqlWhere}
|
||||
order by a.priority";
|
||||
Logger.LogInformation("SQL = " + sql + " building=" + input.building_tag + " floor_tag = " + input.floor_tag);
|
||||
var rawData = await backendRepository.GetAllAsync<HydroMeterRawDataEachTotalOutput>(sql);
|
||||
|
||||
List<HydroMeterRawDataEachTotalOutput> ResultData = new List<HydroMeterRawDataEachTotalOutput>();
|
||||
|
||||
//if (tag_quantity == "5")
|
||||
//{
|
||||
// Result = rawData
|
||||
// .GroupBy(x => new { building_tag = x.device_number.Split("_")[0], floor_tag = x.device_number.Split("_")[2], device_serial_tag = x.device_number.Split("_")[4], device_number = x.device_number })
|
||||
// .Select(x => new HydroMeterOutput { building_tag = x.Key.building_tag, floor_tag = x.Key.floor_tag, device_serial_tag = x.Key.device_serial_tag, device_number = x.Key.device_number })
|
||||
// .ToList();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Result = rawData
|
||||
// .GroupBy(x => new { building_tag = x.device_number.Split("_")[1], floor_tag = x.device_number.Split("_")[4], device_master = x.device_number.Split("_")[5], device_serial_tag = x.device_number.Split("_")[7], device_number = x.device_number })
|
||||
// .Select(x => new HydroMeterOutput { building_tag = x.Key.building_tag, floor_tag = x.Key.floor_tag, device_serial_tag = x.Key.device_serial_tag, device_master = x.Key.device_master, device_number = x.Key.device_number })
|
||||
// .ToList();
|
||||
//}
|
||||
List<HydroMeterEachTotalOutput> ResultData = new List<HydroMeterEachTotalOutput>();
|
||||
|
||||
foreach (var l in rawData)
|
||||
ResultData = rawData
|
||||
.GroupBy(x => new { building_tag = x.device_number.Split("_")[1], floor_tag = x.device_number.Split("_")[4], device_master = x.device_number.Split("_")[5], device_serial_tag = x.device_number.Split("_")[7], device_number = x.device_number })
|
||||
.Select(x => new HydroMeterEachTotalOutput { building_tag = x.Key.building_tag, floor_tag = x.Key.floor_tag, device_serial_tag = x.Key.device_serial_tag, device_master = x.Key.device_master, device_number = x.Key.device_number })
|
||||
.ToList();
|
||||
|
||||
foreach (var l in ResultData)
|
||||
{
|
||||
//l.rawData = new List<HydroMeterRawDataOutput>();
|
||||
//l.device_full_name = await backendRepository.GetOneAsync<string>($"select full_name from device where device_number = '{l.device_number}'");
|
||||
|
||||
l.rawData = new List<HydroMeterRawDataOutput>();
|
||||
|
||||
l.rawData.AddRange(
|
||||
rawData
|
||||
.Where(x => x.device_number == l.device_number)
|
||||
.Select(x => new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = x.searchMT, // 或者是您所需的日期格式
|
||||
device_number = x.device_number,
|
||||
avg_rawdata = x.searchM
|
||||
})
|
||||
);
|
||||
l.rawData.AddRange(
|
||||
rawData
|
||||
.Where(x => x.device_number == l.device_number)
|
||||
.Select(x => new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = x.lastMT, // 或者是您所需的日期格式
|
||||
device_number = x.device_number,
|
||||
avg_rawdata = x.lastM
|
||||
})
|
||||
);
|
||||
l.rawData.AddRange(
|
||||
rawData
|
||||
.Where(x => x.device_number == l.device_number)
|
||||
.Select(x => new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = "last month different", // 或者是您所需的日期格式
|
||||
device_number = x.device_number,
|
||||
avg_rawdata = (double.Parse(x.searchM) - double.Parse(x.lastM)).ToString()
|
||||
})
|
||||
);
|
||||
l.rawData.AddRange(
|
||||
rawData
|
||||
.Where(x => x.device_number == l.device_number)
|
||||
.Select(x => new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = x.lastYT, // 或者是您所需的日期格式
|
||||
device_number = x.device_number,
|
||||
avg_rawdata = x.lastY
|
||||
})
|
||||
);
|
||||
l.rawData.AddRange(
|
||||
rawData
|
||||
.Where(x => x.device_number == l.device_number)
|
||||
.Select(x => new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = "last year different", // 或者是您所需的日期格式
|
||||
device_number = x.device_number,
|
||||
avg_rawdata = (double.Parse(x.searchM) - double.Parse(x.lastY)).ToString()
|
||||
})
|
||||
);
|
||||
//HydroMeterRawDataOutput newData1 = new HydroMeterRawDataOutput
|
||||
//{
|
||||
// timeStamp = rawData.FirstOrDefault(x => x.timeStamp == searchTime),
|
||||
// device_number = l.device_number,
|
||||
// avg_rawdata
|
||||
//};
|
||||
|
||||
l.device_full_name = await backendRepository.GetOneAsync<string>($"select full_name from device where device_number = '{l.device_number}'");
|
||||
l.building_name = await backendRepository.GetOneAsync<string>("select full_name from building where building_tag = @building_tag and deleted = 0",
|
||||
new { building_tag = l.building_tag });
|
||||
l.total = l.rawData.Where(x => x.avg_rawdata != "NaN").Sum(x => decimal.Parse(x.avg_rawdata ?? "0", System.Globalization.NumberStyles.Float)).ToString();
|
||||
l.price = input.price.HasValue
|
||||
? (Math.Round(input.price.Value, 2)).ToString()
|
||||
: Math.Round((await backendRepository.GetOneAsync<decimal>("select system_value from variable where system_type = 'ElectricPrice' and deleted = 0")), 2).ToString();
|
||||
l.total_price = Math.Round((Decimal.Parse(l.total) * Decimal.Parse(l.price)), 2).ToString();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//l.
|
||||
|
||||
//l.building_name = l.building_name;
|
||||
//l.total = l.rawData.Where(x => x.avg_rawdata != "NaN").Sum(x => decimal.Parse(x.avg_rawdata ?? "0", System.Globalization.NumberStyles.Float)).ToString();
|
||||
|
||||
HydroMeterRawDataEachTotalOutput newData1 = new HydroMeterRawDataEachTotalOutput
|
||||
{
|
||||
building_name = l.building_name,
|
||||
device_number = l.device_number,
|
||||
searchMT = header_now,
|
||||
searchM = l.searchM,
|
||||
lastM = l.lastM,
|
||||
lastY = l.lastY,
|
||||
lastMT= header_lastM,
|
||||
lastYT = header_lastY
|
||||
};
|
||||
//HydroMeterRawDataEachTotalOutput newData1 = new HydroMeterRawDataEachTotalOutput
|
||||
//{
|
||||
// building_name = l.building_name,
|
||||
// device_number = l.device_number,
|
||||
// searchMT = header_now,
|
||||
// searchM = l.searchM,
|
||||
// lastM = l.lastM,
|
||||
// lastY = l.lastY,
|
||||
// lastMT= header_lastM,
|
||||
// lastYT = header_lastY
|
||||
//};
|
||||
|
||||
|
||||
|
||||
ResultData.Add(newData1);
|
||||
|
||||
//ResultData.Add(newData1);
|
||||
//var lastYear = previousYear.ToString("yyyy-MM");
|
||||
//var lastMonth = previousMonth.ToString("yyyy-MM");
|
||||
//var searchTime = input.startTime; // 欲查詢的月份
|
||||
|
@ -61,7 +61,7 @@ namespace FrontendWebApi.Models
|
||||
public string total { get; set; }
|
||||
public string price { get; set; }
|
||||
public string total_price { get; set; }
|
||||
public List<HydroMeterRawDataEachTotalOutput> rawData { get; set; }
|
||||
public List<HydroMeterRawDataOutput> rawData { get; set; }
|
||||
}
|
||||
|
||||
public class HydroMeterRawDataEachTotalOutput
|
||||
@ -71,8 +71,8 @@ namespace FrontendWebApi.Models
|
||||
public string searchMT { get; set; }
|
||||
public string searchM { get; set; }
|
||||
public string lastM { get; set; }
|
||||
public string lastY { get; set; }
|
||||
public string lastMT { get; set; }
|
||||
public string lastY { get; set; }
|
||||
public string lastYT { get; set; }
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user