[FE API] 更新查詢上月上年比較差異
This commit is contained in:
parent
b479e1d5c5
commit
d70320b27e
@ -16,6 +16,7 @@ using Ionic.Zip;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
using iTextSharp.text;
|
||||
using System.Collections;
|
||||
|
||||
namespace FrontendWebApi.ApiControllers
|
||||
{
|
||||
@ -999,20 +1000,6 @@ namespace FrontendWebApi.ApiControllers
|
||||
[Route("api/ElectricListEachTotal")]
|
||||
public async Task<ActionResult<ApiResult<List<HydroMeterOutput>>>> ElectricListEachTotal([FromBody] HydroMeterInput input)
|
||||
{
|
||||
|
||||
//switch (input.Mode)
|
||||
//{
|
||||
// case HydroMeterInputSearchMode.All:
|
||||
// break;
|
||||
|
||||
// case HydroMeterInputSearchMode.Custom: break;
|
||||
|
||||
// default:
|
||||
|
||||
// break;
|
||||
|
||||
//}
|
||||
|
||||
ApiResult<List<HydroMeterOutput>> apiResult = new ApiResult<List<HydroMeterOutput>>(jwt_str);
|
||||
if (!jwtlife)
|
||||
{
|
||||
@ -1120,7 +1107,7 @@ left join (
|
||||
{sqlWhere} {sqlGroup}
|
||||
) aemm on aemm.start_timestamp >= {aemmStaDate} and aemm.end_timestamp < {aemmEndDate} and aemm.device_number = fd.device_number
|
||||
where DATE_FORMAT(fd.date, '%Y-%m') = '{searchTime}' or DATE_FORMAT(fd.date, '%Y-%m') = '{lastMonth}' or DATE_FORMAT(fd.date, '%Y-%m') = '{lastYear}'
|
||||
order by fd.device_number, fd.date";
|
||||
order by fd.device_number, fd.date desc";
|
||||
Logger.LogInformation("SQL = " + sql + " startTime=" + startTime + " endTime=" + endTime + " building=" + input.building_tag + " floor_tag = " + input.floor_tag);
|
||||
var rawData = await backendRepository.GetAllAsync<HydroMeterRawDataOutput>(sql,
|
||||
new { startTime = startTime, endtime = endTime, building_tag = input.building_tag, dateFormat = dateFormat });
|
||||
@ -1157,6 +1144,47 @@ order by fd.device_number, fd.date";
|
||||
rawData.Where(x => x.device_number.Split("_")[1] == l.building_tag && x.device_number.Split("_")[4] == l.floor_tag && x.device_number.Split("_")[5] == l.device_master && x.device_number.Split("_")[7] == l.device_serial_tag)
|
||||
);
|
||||
}
|
||||
|
||||
//var lastYear = previousYear.ToString("yyyy-MM");
|
||||
//var lastMonth = previousMonth.ToString("yyyy-MM");
|
||||
//var searchTime = input.startTime; // 欲查詢的月份
|
||||
|
||||
// 找到符合 searchTime 和 lastMonth 條件的資料
|
||||
var searchTimeData = l.rawData.FirstOrDefault(x => x.timeStamp == searchTime);
|
||||
var lastMonthData = l.rawData.FirstOrDefault(x => x.timeStamp == lastMonth);
|
||||
var lastYearData = l.rawData.FirstOrDefault(x => x.timeStamp == lastYear);
|
||||
|
||||
if (searchTimeData != null && lastMonthData != null && lastYearData != null)
|
||||
{
|
||||
// 將 avg_rawdata 字串轉換為 double 型別
|
||||
double searchTimeValue = Convert.ToDouble(searchTimeData.avg_rawdata);
|
||||
double lastMonthValue = Convert.ToDouble(lastMonthData.avg_rawdata);
|
||||
double lastYearValue = Convert.ToDouble(lastYearData.avg_rawdata);
|
||||
|
||||
// 計算差值
|
||||
double month_diff = searchTimeValue - lastMonthValue;
|
||||
double year_diff = searchTimeValue - lastYearValue;
|
||||
|
||||
// 創建新的 HydroMeterRawDataOutput
|
||||
HydroMeterRawDataOutput newData1 = new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = "last month different",
|
||||
device_number = searchTimeData.device_number,
|
||||
avg_rawdata = month_diff.ToString()
|
||||
};
|
||||
|
||||
HydroMeterRawDataOutput newData2 = new HydroMeterRawDataOutput
|
||||
{
|
||||
timeStamp = "last year different",
|
||||
device_number = searchTimeData.device_number,
|
||||
avg_rawdata = year_diff.ToString()
|
||||
};
|
||||
|
||||
// 將新資料加入到 l.rawData 中
|
||||
l.rawData.Add(newData1);
|
||||
l.rawData.Add(newData2);
|
||||
}
|
||||
|
||||
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();
|
||||
|
Loading…
Reference in New Issue
Block a user