You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
9.1 KiB
354 lines
9.1 KiB
using EC.App.AutoWeight.MonthPlan;
|
|
using EC.App.AutoWeight.Report;
|
|
using EC.App.AutoWeight.TransportBill;
|
|
using learun.util;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace EC.Web.Areas.AutoWeight.Controllers
|
|
{
|
|
[Area("AutoWeight")]
|
|
public class ReportController : MvcControllerBase
|
|
{
|
|
private readonly ReportIBll _bll;
|
|
|
|
public ReportController(ReportIBll bll)
|
|
{
|
|
_bll = bll;
|
|
}
|
|
|
|
#region 视图功能
|
|
|
|
public IActionResult StatisticsSheetByDay()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult StatisticsSheetByMonth()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult StatisticsSheetByYear()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult BillVolumeScatterChartByDay()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult BillVolumeLineChartByMonth()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult BillRateScatterChartByDay()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult BillRateScatterChartByMonth()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public IActionResult TruckGradeSheetByMonth()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
#endregion 视图功能
|
|
|
|
#region 获取数据
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetPlanInfoList(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
var monthPlanList = (!queryParam["CompanyId"].IsEmpty()) ? (await _bll.GetMonthPlanList(queryParam)).ToList() : new List<MonthPlanEntity>();
|
|
var planInfoList = new List<object>();
|
|
|
|
foreach (var plan in monthPlanList)
|
|
{
|
|
queryParam["PlanSerialNumber"] = plan.SerialNumber;
|
|
var planInfo = (!queryParam["CompanyId"].IsEmpty()) ? (await _bll.GetMonthPlanInfo(queryParam)) : new MonthPlanInfoDto();
|
|
if (plan?.PlanQty != null) planInfo.PlanQty = (decimal)plan?.PlanQty;
|
|
if (plan?.ActQty != null) planInfo.ActQty = (decimal)plan?.ActQty;
|
|
planInfo.CreateTime = plan.CreateTime;
|
|
planInfoList.Add(planInfo);
|
|
}
|
|
|
|
var jsonData = new
|
|
{
|
|
planInfoList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetStatisticsDataByDay(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var billList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetStatisticsBillListByDay(queryParam) : new List<TransportBillEntity>();
|
|
|
|
var jsonData = new
|
|
{
|
|
billList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetStatisticsDataByMonth(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var dayDtoList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetStatisticsDataListByMonth(queryParam) : new List<DayStatisticsDto>();
|
|
|
|
var jsonData = new
|
|
{
|
|
dayDtoList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetStatisticsDataByYear(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var monthDtoList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetStatisticsDataListByYear(queryParam) : new List<MonthStatisticsDto>();
|
|
|
|
var jsonData = new
|
|
{
|
|
monthDtoList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetBillVolumeListByDay(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var billList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetBillVolumeListByDay(queryParam) : new List<TransportBillEntity>();
|
|
var volumeList = new List<List<object>>();
|
|
foreach (var bill in billList)
|
|
{
|
|
var time = bill.InStartTime;
|
|
var volume = bill?.NetWeight;
|
|
volumeList.Add(new List<object> { time, volume });
|
|
}
|
|
|
|
var jsonData = new
|
|
{
|
|
volumeList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetBillVolumeListByMonth(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var dtoList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetStatisticsDataListByMonth(queryParam) : new List<DayStatisticsDto>();
|
|
|
|
var date = !queryParam["StartTime"].IsEmpty() ? queryParam["StartTime"].ToDate() : new DateTime();
|
|
var days = DateTime.DaysInMonth(date.Year, date.Month);
|
|
var volumeList = new List<List<object>>();
|
|
for (var day = 1; day <= days; day++)
|
|
{
|
|
var time = new DateTime(date.Year, date.Month, day).ToString("yyyy-MM-dd");
|
|
volumeList.Add(new List<object> { time, 0 });
|
|
}
|
|
foreach (var dto in dtoList)
|
|
{
|
|
//var time = new DateTime(dto.Year, dto.Month, dto.Day).ToString("yyyy-MM-dd");
|
|
var volume = dto.NetWeightSum;
|
|
volumeList[dto.Day][1] = volume;
|
|
}
|
|
|
|
var jsonData = new
|
|
{
|
|
volumeList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetBillRateListByMonth(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var billList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetBillStandardRateListByMonth(queryParam) : new List<TransportBillEntity>();
|
|
var rateList = new List<List<object>>();
|
|
foreach (var bill in billList)
|
|
{
|
|
var time = bill.InStartTime?.Day;
|
|
var rate = bill?.StandardRate;
|
|
rateList.Add(new List<object> { time, rate });
|
|
}
|
|
|
|
var jsonData = new
|
|
{
|
|
rateList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetBillRateListByDay(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
|
|
var billList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? await _bll.GetBillStandardRateListByDay(queryParam) : new List<TransportBillEntity>();
|
|
var rateList = new List<List<object>>();
|
|
foreach (var bill in billList)
|
|
{
|
|
var time = bill.InStartTime;
|
|
var rate = bill?.StandardRate;
|
|
rateList.Add(new List<object> { time, rate });
|
|
}
|
|
|
|
var jsonData = new
|
|
{
|
|
rateList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CompanyId,SupplierId,StartTime,EndTime,State
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[AjaxOnly]
|
|
public async Task<IActionResult> GetTruckGradeByMonth(string queryJson)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
var originBillList = (!queryParam["CompanyId"].IsEmpty()) && !queryParam["SupplierId"].IsEmpty() ? (await _bll.GetTruckGradeListByMonth(queryParam)).ToList() : new List<TransportBillEntity>();
|
|
|
|
List<TransportBillEntity> billList = new();
|
|
int count = originBillList.Count;
|
|
if (count <= 0)
|
|
return Success(new { billList });
|
|
|
|
string logPlate = string.Empty;
|
|
int logStart = 0, logEnd = 0;
|
|
decimal diffWeightStandard = 0.07m;
|
|
int diffWeightLen = 3;
|
|
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
var bill = originBillList[i];
|
|
var plateEqual = i != 0 ? bill.LicensePlate.Equals(logPlate) : true;
|
|
var diffWeightOut = (decimal)(bill.BillWeight - bill.NetWeight) >= diffWeightStandard;
|
|
if (diffWeightOut) {
|
|
billList.Add(originBillList[i]);
|
|
}
|
|
//if (plateEqual)
|
|
//{
|
|
// if (diffWeightOut)
|
|
// {
|
|
// logEnd = i;
|
|
// }
|
|
// else
|
|
// {
|
|
// if ((logEnd - logStart + 1) >= diffWeightLen)
|
|
// {
|
|
// //if (billList.Count > 0)
|
|
// // billList.Add(new());
|
|
|
|
// for (int j = logStart; j <= logEnd; j++)
|
|
// {
|
|
// billList.Add(originBillList[j]);
|
|
// }
|
|
// }
|
|
// logStart = i + 1;
|
|
// logEnd = i + 1;
|
|
// }
|
|
//}
|
|
//else
|
|
//{
|
|
// if ((logEnd - logStart + 1) >= diffWeightLen)
|
|
// {
|
|
// //if (billList.Count > 0)
|
|
// // billList.Add(new());
|
|
|
|
// for (int j = logStart; j <= logEnd; j++)
|
|
// {
|
|
// billList.Add(originBillList[j]);
|
|
// }
|
|
// }
|
|
// logPlate = bill.LicensePlate;
|
|
// logStart = i;
|
|
// logEnd = i;
|
|
//}
|
|
}
|
|
|
|
var jsonData = new
|
|
{
|
|
billList
|
|
};
|
|
return Success(jsonData);
|
|
}
|
|
|
|
#endregion 获取数据
|
|
}
|
|
}
|