[FE API] 更新各分盤總盤查詢功能,回傳之前的 json 格式
This commit is contained in:
parent
69d564c167
commit
0cecb31e6d
@ -826,8 +826,8 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Route("api/ExportElectricEachCompareList")]
|
[Route("api/ExportElectricEachTotalCompareList")]
|
||||||
public FileResult OpeExportEachCompareExcelElec([FromBody] HydroMeterInput input)
|
public FileResult OpeExportEachTotalCompareExcelElec([FromBody] HydroMeterInput input)
|
||||||
{
|
{
|
||||||
List<List<HydroMeterOutput>> result = new List<List<HydroMeterOutput>>();
|
List<List<HydroMeterOutput>> result = new List<List<HydroMeterOutput>>();
|
||||||
var building = backendRepository.GetAllAsync<HydroBuildList>("select * from building where deleted = 0").Result;
|
var building = backendRepository.GetAllAsync<HydroBuildList>("select * from building where deleted = 0").Result;
|
||||||
@ -999,9 +999,9 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Route("api/ElectricListEachTotal")]
|
[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)
|
if (!jwtlife)
|
||||||
{
|
{
|
||||||
apiResult.Code = "5000";
|
apiResult.Code = "5000";
|
||||||
@ -1053,7 +1053,7 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
if (string.IsNullOrEmpty(isTable)) //check for has table or not
|
if (string.IsNullOrEmpty(isTable)) //check for has table or not
|
||||||
{
|
{
|
||||||
apiResult.Code = "0000";
|
apiResult.Code = "0000";
|
||||||
apiResult.Data = new List<HydroMeterRawDataEachTotalOutput>() { };
|
apiResult.Data = new List<HydroMeterEachTotalOutput>() { };
|
||||||
return Ok(apiResult);
|
return Ok(apiResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1062,59 +1062,118 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
string header_lastY = last_year + "_" + start_month;
|
string header_lastY = last_year + "_" + start_month;
|
||||||
|
|
||||||
var sql = $@"
|
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
|
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) 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) {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) 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) {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) = {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
|
join building e on a.device_building_tag = e.building_tag
|
||||||
where {sqlWhere}
|
where {sqlWhere}
|
||||||
order by a.priority";
|
order by a.priority";
|
||||||
Logger.LogInformation("SQL = " + sql + " building=" + input.building_tag + " floor_tag = " + input.floor_tag);
|
Logger.LogInformation("SQL = " + sql + " building=" + input.building_tag + " floor_tag = " + input.floor_tag);
|
||||||
var rawData = await backendRepository.GetAllAsync<HydroMeterRawDataEachTotalOutput>(sql);
|
var rawData = await backendRepository.GetAllAsync<HydroMeterRawDataEachTotalOutput>(sql);
|
||||||
|
|
||||||
List<HydroMeterRawDataEachTotalOutput> ResultData = new List<HydroMeterRawDataEachTotalOutput>();
|
List<HydroMeterEachTotalOutput> ResultData = new List<HydroMeterEachTotalOutput>();
|
||||||
|
|
||||||
//if (tag_quantity == "5")
|
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 })
|
||||||
// Result = rawData
|
.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 })
|
||||||
// .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 })
|
.ToList();
|
||||||
// .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();
|
|
||||||
//}
|
|
||||||
|
|
||||||
foreach (var l in rawData)
|
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.
|
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.building_name = l.building_name;
|
//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();
|
//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
|
//HydroMeterRawDataEachTotalOutput newData1 = new HydroMeterRawDataEachTotalOutput
|
||||||
{
|
//{
|
||||||
building_name = l.building_name,
|
// building_name = l.building_name,
|
||||||
device_number = l.device_number,
|
// device_number = l.device_number,
|
||||||
searchMT = header_now,
|
// searchMT = header_now,
|
||||||
searchM = l.searchM,
|
// searchM = l.searchM,
|
||||||
lastM = l.lastM,
|
// lastM = l.lastM,
|
||||||
lastY = l.lastY,
|
// lastY = l.lastY,
|
||||||
lastMT= header_lastM,
|
// lastMT= header_lastM,
|
||||||
lastYT = header_lastY
|
// lastYT = header_lastY
|
||||||
};
|
//};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ResultData.Add(newData1);
|
//ResultData.Add(newData1);
|
||||||
//var lastYear = previousYear.ToString("yyyy-MM");
|
//var lastYear = previousYear.ToString("yyyy-MM");
|
||||||
//var lastMonth = previousMonth.ToString("yyyy-MM");
|
//var lastMonth = previousMonth.ToString("yyyy-MM");
|
||||||
//var searchTime = input.startTime; // 欲查詢的月份
|
//var searchTime = input.startTime; // 欲查詢的月份
|
||||||
|
@ -61,7 +61,7 @@ namespace FrontendWebApi.Models
|
|||||||
public string total { get; set; }
|
public string total { get; set; }
|
||||||
public string price { get; set; }
|
public string price { get; set; }
|
||||||
public string total_price { get; set; }
|
public string total_price { get; set; }
|
||||||
public List<HydroMeterRawDataEachTotalOutput> rawData { get; set; }
|
public List<HydroMeterRawDataOutput> rawData { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class HydroMeterRawDataEachTotalOutput
|
public class HydroMeterRawDataEachTotalOutput
|
||||||
@ -71,8 +71,8 @@ namespace FrontendWebApi.Models
|
|||||||
public string searchMT { get; set; }
|
public string searchMT { get; set; }
|
||||||
public string searchM { get; set; }
|
public string searchM { get; set; }
|
||||||
public string lastM { get; set; }
|
public string lastM { get; set; }
|
||||||
public string lastY { get; set; }
|
|
||||||
public string lastMT { get; set; }
|
public string lastMT { get; set; }
|
||||||
|
public string lastY { get; set; }
|
||||||
public string lastYT { get; set; }
|
public string lastYT { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user