using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Description;
using ESCG = CommercialApi.GeneralMethod;
using ESCM = CommercialApi.Model;
using Newtonsoft.Json;
using HZQR.Common;
namespace CommercialApi.Controllers
{
///
/// 大数据分析相关接口
///
public class BigDataController : BaseController
{
#region 方法 -> 服务区入区车流分析
///
/// 服务区入区车流分析
///
/// 统计日期,格式yyyy-MM-dd
/// 服务区内码
/// 服务区方位
/// 是否统计累计数据
///
[Route("Revenue/GetBayonetEntryList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetEntryList(string StatisticsDate, int? Serverpart_ID = null,
string Serverpart_Region = "", bool ShowAddUpCount = false)
{
string Parameter = "入参信息:统计日期【" + StatisticsDate + "】," +
"服务区内码【" + Serverpart_ID + "】,服务区方位【" + Serverpart_Region + "】";
try
{
//服务区入区车流分析
List BayonetEntryList = ESCG.BayonetHelper.GetBayonetEntryList(
transaction, StatisticsDate, Serverpart_ID, Serverpart_Region, ShowAddUpCount);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetEntryList, BayonetEntryList.Count, 1, BayonetEntryList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetEntryList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取车辆停留时长分析
///
/// 获取车辆停留时长分析
///
/// 统计日期,格式yyyy-MM-dd
/// 服务区内码
/// 服务区方位
/// 是否显示全服务区数据,即将两个方位的值合计
///
[Route("Revenue/GetBayonetSTAList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetSTAList(string StatisticsDate, int? Serverpart_ID = null,
string Serverpart_Region = "", bool ContainWhole = false)
{
string Parameter = "入参信息:统计日期【" + StatisticsDate + "】,服务区内码【" + Serverpart_ID + "】," +
"服务区方位【" + Serverpart_Region + "】,显示全服务区【" + ContainWhole + "】";
try
{
//获取车辆停留时长分析
List BayonetSTAList = ESCG.BayonetHelper.GetBayonetSTAList(
transaction, StatisticsDate, Serverpart_ID, Serverpart_Region, ContainWhole);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetSTAList, BayonetSTAList.Count, 1, BayonetSTAList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetSTAList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取车辆归属地分析
///
/// 获取车辆归属地分析
///
/// 统计月份,格式yyyyMM
/// 服务区内码
/// 服务区方位
/// 车辆类型
/// 显示车牌归属地数量,默认6
/// 显示车牌所在省份数量,默认4
/// 是否显示全服务区数据,即将两个方位的值合计
///
[Route("Revenue/GetBayonetOAList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetOAList(string StatisticsMonth, int? Serverpart_ID = null, string Serverpart_Region = "",
string VehicleType = "", int OwnerCityLenth = 6, int OwnerProvinceLenth = 4, bool ContainWhole = false)
{
string Parameter = "入参信息:统计月份【" + StatisticsMonth + "】,服务区内码【" + Serverpart_ID + "】," +
"服务区方位【" + Serverpart_Region + "】,车辆类型【" + VehicleType + "】,显示全服务区【" + ContainWhole + "】";
try
{
string[] Vehicle_TypeList = new string[3] { "小型车", "中型车", "大型车" };
//获取车辆归属地分析
List BayonetOAList = ESCG.BayonetHelper.GetBayonetOAList(transaction, ref Vehicle_TypeList,
StatisticsMonth, Serverpart_ID, Serverpart_Region, VehicleType, OwnerCityLenth, OwnerProvinceLenth, ContainWhole);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetOAList, Vehicle_TypeList, BayonetOAList.Count, 1, BayonetOAList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetOAList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
///
/// 获取车辆省份地市归属地分析
///
/// 统计月份,格式yyyyMM
/// 服务区内码
/// 服务区方位
/// 车辆类型
/// 省份名称
/// 显示车牌归属地数量,默认6
/// 是否显示全服务区数据,即将两个方位的值合计
/// 是否统计其他省份
///
[Route("Revenue/GetBayonetProvinceOAList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetProvinceOAList(string StatisticsMonth, int? Serverpart_ID = null, string Serverpart_Region = "",
string VehicleType = "", string ProvinceName = "", int OwnerCityLenth = 6, bool ContainWhole = false, bool isExclude = false)
{
string Parameter = "入参信息:统计月份【" + StatisticsMonth + "】,服务区内码【" + Serverpart_ID + "】," +
"服务区方位【" + Serverpart_Region + "】,车辆类型【" + VehicleType + "】,省份名称【" + ProvinceName + "】," +
"显示车牌归属地数量【" + OwnerCityLenth + "】,显示全服务区【" + ContainWhole + "】,统计其他省份【" + isExclude + "】";
try
{
string[] Vehicle_TypeList = new string[3] { "小型车", "中型车", "大型车" };
//获取车辆归属地分析
List BayonetOAList = ESCG.BayonetHelper.GetBayonetProvinceOAList(transaction, ref Vehicle_TypeList,
StatisticsMonth, Serverpart_ID, Serverpart_Region, VehicleType, ProvinceName, OwnerCityLenth, ContainWhole, isExclude);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetOAList, Vehicle_TypeList, BayonetOAList.Count, 1, BayonetOAList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetProvinceOAList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取服务区车流量分析
///
/// 获取服务区车流量分析
///
/// 统计日期,格式yyyy-MM-dd
/// 省份编码
/// 片区内码
/// 服务区内码
/// 服务区方位
///
/// 统计方式:
/// 1:统计当日
/// 2:统计当月
/// 3:统计当年
///
/// 是否显示增长率,如果不显示增长率,
/// 接口是给驿行畅旅【每日营收推送】展示车流分析数据的,要放上服务区方位
///
[Route("Revenue/GetSPBayonetList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetSPBayonetList(string Statistics_Date, string Province_Code = "", string SPRegionType_ID = "",
string Serverpart_ID = "", string Serverpart_Region = "", int GroupType = 1, bool ShowGrowthRate = false)
{
string Parameter = "入参信息:统计日期【" + Statistics_Date + "】,省份编码【" + Province_Code + "】," +
"片区内码【" + SPRegionType_ID + "】,服务区内码【" + Serverpart_ID + "】,服务区方位【" + Serverpart_Region + "】";
try
{
//获取服务区车流量分析
List SPBayonetList;
if (Province_Code != "340000")
{
SPBayonetList = new List();
}
else
{
string Statistics_StartDate;
switch (GroupType)
{
case 2:
Statistics_StartDate = DateTime.Parse(Statistics_Date).ToString("yyyy-MM-01");
break;
case 3:
Statistics_StartDate = DateTime.Parse(Statistics_Date).ToString("yyyy-01-01");
break;
default:
Statistics_StartDate = Statistics_Date;
break;
}
SPBayonetList = ESCG.BayonetHelper.GetSPBayonetList(transaction, Statistics_StartDate,
Statistics_Date, SPRegionType_ID, Serverpart_ID, Serverpart_Region, ShowGrowthRate);
}
Models.JsonList jsonList = Models.JsonList.Success(
SPBayonetList, SPBayonetList.Count, 1, SPBayonetList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetSPBayonetList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
///
/// 获取服务区车流量排行
///
/// 统计日期,格式yyyy-MM-dd
/// 省份编码
/// 片区内码
/// 服务区内码
/// 服务区方位
///
/// 统计方式:
/// 1:统计当日
/// 2:统计当月
/// 3:统计当年
///
/// 是否显示增长率,如果不显示增长率,
/// 接口是给驿行畅旅【每日营收推送】展示车流分析数据的,要放上服务区方位
///
[Route("Revenue/GetBayonetRankList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg))]
public IHttpActionResult GetBayonetRankList(string Statistics_Date, string Province_Code = "", string SPRegionType_ID = "",
string Serverpart_ID = "", string Serverpart_Region = "", int GroupType = 1, bool ShowGrowthRate = false)
{
string Parameter = "入参信息:统计日期【" + Statistics_Date + "】,省份编码【" + Province_Code + "】," +
"片区内码【" + SPRegionType_ID + "】,服务区内码【" + Serverpart_ID + "】,服务区方位【" + Serverpart_Region + "】";
try
{
if (Province_Code != "340000")
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
else
{
//获取服务区车流量分析
string Statistics_StartDate;
switch (GroupType)
{
case 2:
Statistics_StartDate = DateTime.Parse(Statistics_Date).ToString("yyyy-MM-01");
break;
case 3:
Statistics_StartDate = DateTime.Parse(Statistics_Date).ToString("yyyy-01-01");
break;
default:
Statistics_StartDate = Statistics_Date;
break;
}
List SPBayonetList = ESCG.BayonetHelper.GetSPBayonetList(transaction, Statistics_StartDate,
Statistics_Date, SPRegionType_ID, Serverpart_ID, Serverpart_Region, ShowGrowthRate);
if (SPBayonetList.Count == 0)
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
ESCM.BayonetRankModel bayonetRankModel = new ESCM.BayonetRankModel
{
ServerpartFlowList = SPBayonetList.OrderByDescending(o => o.Vehicle_Count).ToList(),
SectionFlowList = SPBayonetList.OrderByDescending(o => o.SectionFlow_Count).ToList(),
EntryRateList = SPBayonetList.FindAll(o => o.Entry_Rate < 100).OrderByDescending(o => o.Entry_Rate).ToList(),
};
return Ok(Models.JsonMsg.Success(bayonetRankModel, 100, "查询成功"));
}
}
catch (Exception ex)
{
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetRankList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取服务区平均车流量分析
///
/// 获取服务区平均车流量分析
///
/// 统计日期,格式yyyy-MM-dd
/// 省份编码
/// 片区内码
/// 服务区内码
/// 服务区方位
///
[Route("Revenue/GetAvgBayonetAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg))]
public IHttpActionResult GetAvgBayonetAnalysis(string Statistics_Date, string Province_Code = "",
string SPRegionType_ID = "", string Serverpart_ID = "", string Serverpart_Region = "")
{
string Parameter = "入参信息:统计日期【" + Statistics_Date + "】,省份编码【" + Province_Code + "】," +
"片区内码【" + SPRegionType_ID + "】,服务区内码【" + Serverpart_ID + "】,服务区方位【" + Serverpart_Region + "】";
try
{
if (Province_Code != "340000")
{
return Ok(ESCG.Common.ReturnJson(101, "查询失败,无数据返回!"));
}
//获取服务区车流量分析
ESCM.BayonetEntryModel bayonetEntryModel = ESCG.BayonetHelper.GetAvgBayonetAnalysis(
transaction, Statistics_Date, SPRegionType_ID, Serverpart_ID, Serverpart_Region);
if (bayonetEntryModel == null)
{
return Ok(ESCG.Common.ReturnJson(101, "查询失败,无数据返回!"));
}
else
{
return Ok(Models.JsonMsg.Success(bayonetEntryModel, 100, "查询成功"));
}
}
catch (Exception ex)
{
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetAvgBayonetAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取全省平均车流量分析
///
/// 获取全省平均车流量分析
///
/// 省份编码
///
/// 统计日期,格式:yyyy-MM-dd
/// 统计月份,格式:yyyyMM
///
///
[Route("Revenue/GetProvinceAvgBayonetAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetProvinceAvgBayonetAnalysis(string Province_Code, string Statistics_Date)
{
string Parameter = "入参信息:统计日期/月份【" + Statistics_Date + "】";
try
{
if (Province_Code != "340000")
{
return Ok(ESCG.Common.ReturnJson(101, "查询失败,无数据返回!"));
}
//获取服务区车流量分析
List AvgBayonetAnalysis = ESCG.BayonetHelper.GetAvgBayonetAnalysis(transaction, Statistics_Date);
Models.JsonList jsonList = Models.JsonList.Success(AvgBayonetAnalysis);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetAvgBayonetAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取服务区车辆时段停留时长分析
///
/// 获取服务区车辆时段停留时长分析
///
/// 统计开始月份
/// 统计结束月份
/// 省份编码
/// 片区内码
/// 服务区内码
/// 服务区方位
/// 时间间隔,默认4h
///
/// 返参字段:
/// name:车辆类型
/// data:数组[时间段,停留时长]
///
[Route("Revenue/GetBayonetSTAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetSTAnalysis(string StartMonth, string EndMonth, string Province_Code = "",
string SPRegionType_ID = "", string Serverpart_ID = "", string Serverpart_Region = "", int TimeSpan = 4)
{
string Parameter = "入参信息:统计开始月份【" + StartMonth + "】,统计结束月份【" + EndMonth + "】," +
"省份编码【" + Province_Code + "】,片区内码【" + SPRegionType_ID + "】,服务区内码【" + Serverpart_ID + "】," +
"服务区方位【" + Serverpart_Region + "】,时间间隔【" + TimeSpan + "】";
try
{
List SPBayonetList;
if (Province_Code != "340000" || StartMonth.TryParseToInt() <= 202302)
{
//非安徽省的没有车流数据,直接返回空列表
SPBayonetList = new List();
}
else
{
//获取服务区车辆时段停留时长分析
SPBayonetList = ESCG.BayonetHelper.GetBayonetSTAnalysis(transaction, StartMonth,
EndMonth, SPRegionType_ID, Serverpart_ID, Serverpart_Region, TimeSpan);
}
Models.JsonList jsonList = Models.JsonList.Success(
SPBayonetList, SPBayonetList.Count, 1, SPBayonetList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetSTAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取月度车流分析数据
///
/// 获取月度车流分析数据
///
/// 统计日期
格式yyyy-MM-dd
/// 统计开始日期
格式yyyy-MM-dd
/// 统计结束日期
格式yyyy-MM-dd
/// 服务区内码
/// 服务区方位
/// 门店内码集合
///
[Route("BigData/GetMonthAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetMonthAnalysis(string StatisticsDate = "", string StartDate = "", string EndDate = "",
int? Serverpart_ID = null, string Serverpart_Region = "", string ServerpartShopIds = "")
{
string Parameter = "入参信息:统计日期【" + StatisticsDate + "】,统计开始日期【" + StartDate + "】," +
"统计结束日期【" + EndDate + "】,服务区内码【" + Serverpart_ID + "】," +
"服务区方位【" + Serverpart_Region + "】,门店内码【" + ServerpartShopIds + "】";
try
{
if ((string.IsNullOrWhiteSpace(StartDate) || string.IsNullOrWhiteSpace(EndDate)) &&
string.IsNullOrWhiteSpace(StatisticsDate))
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,请传入正确的统计时间!"));
}
//当统计开始日期为空,设置查询开始日期是统计日期所在年份的第一天
if (string.IsNullOrWhiteSpace(StartDate))
{
StartDate = DateTime.Parse(StatisticsDate).ToString("yyyy-01-01");
}
//当统计结束日期为空,设置查询结束日期是统计日期所在年份的第一天
if (string.IsNullOrWhiteSpace(EndDate))
{
EndDate = StatisticsDate;
}
bool showBayonet = false;
//获取营收推送数据表列表
List BayonetEntryList = ESCG.BayonetHelper.GetMonthAnalysis(transaction,
ref showBayonet, StartDate, EndDate, Serverpart_ID, Serverpart_Region, ServerpartShopIds);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetEntryList, showBayonet);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetMonthAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取全省月度车流分析数据
///
/// 获取全省月度车流分析数据
///
/// 统计月份,格式:yyyyMM
/// 片区内码
/// 服务区内码
/// 排序内容
///
[Route("BigData/GetProvinceMonthAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetProvinceMonthAnalysis(string StatisticsMonth,
string SPRegion_ID = "", string Serverpart_ID = "", string SortStr = "")
{
string Parameter = "入参信息:统计月份【" + StatisticsMonth + "】," +
"片区内码【" + SPRegion_ID + "】,服务区内码【" + Serverpart_ID + "】";
try
{
//获取营收推送数据表列表
List BayonetEntryList = ESCG.BayonetHelper.GetProvinceMonthAnalysis(
transaction, StatisticsMonth, SPRegion_ID, Serverpart_ID, SortStr);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(BayonetEntryList);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetProvinceMonthAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取车流预警数据
///
/// 获取车流预警数据
///
/// 统计日期
/// 统计时段
/// 统计方式
/// 1:即时预警数据
/// 2:当日车流排行
///
/// 排行显示行数,默认20
///
[Route("BigData/GetBayonetWarning")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetWarning(string StatisticsDate, int StatisticsHour, int StatisticsType, int ShowCount = 20)
{
string Parameter = "入参信息:统计日期【" + StatisticsDate + "】,统计时段【" + StatisticsHour + "】," +
"统计方式【" + StatisticsType + "】,排行显示行数【" + ShowCount + "】";
try
{
//获取营收推送数据表列表
List BayonetEntryList = ESCG.BayonetHelper.GetBayonetWarning(
transaction, StatisticsDate, StatisticsHour, StatisticsType, ShowCount);
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetEntryList, BayonetEntryList.Count, 1, BayonetEntryList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetWarning");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取当日服务区车流量分析
///
/// 获取当日服务区车流量分析
///
/// 省份编码
/// 统计开始日期
/// 统计结束日期
/// 片区内码
/// 服务区内码
/// 服务区方位
/// 是否显示入区流量增幅
///
[Route("BigData/GetBayonetGrowthAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg))]
public IHttpActionResult GetBayonetGrowthAnalysis(string pushProvinceCode, string StatisticsEndDate,
string StatisticsStartDate = "", string SPRegionType_ID = "", string Serverpart_ID = "",
string Serverpart_Region = "", bool ShowGrowthRate = false)
{
string Parameter = "入参信息:推送省份【" + pushProvinceCode + "】,统计开始日期【" + StatisticsStartDate + "】," +
"统计日期【" + StatisticsEndDate + "】,区域内码【" + SPRegionType_ID + "】,服务区内码【" + Serverpart_ID + "】," +
"统计营收【" + Serverpart_Region + "】,是否计算增幅【" + ShowGrowthRate + "】";
try
{
if (pushProvinceCode != "340000")
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
if (string.IsNullOrWhiteSpace(StatisticsStartDate))
{
StatisticsStartDate = StatisticsEndDate;
}
//获取营收推送数据表列表
ESCM.BayonetGrowthModel bayonetGrowthModel = ESCG.BayonetHelper.GetBayonetGrowthAnalysis(transaction,
StatisticsStartDate, StatisticsEndDate, SPRegionType_ID, Serverpart_ID, Serverpart_Region, ShowGrowthRate);
if (bayonetGrowthModel == null)
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
return Ok(Models.JsonMsg.Success(bayonetGrowthModel, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetGrowthAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取服务区车流量同比分析
///
/// 获取服务区车流量同比分析
///
/// 省份编码
/// 统计开始日期
/// 统计结束日期
/// 同比开始日期
/// 同比结束日期
/// 片区内码
/// 服务区内码
/// 服务区方位
///
[Route("BigData/GetBayonetCompare")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg))]
public IHttpActionResult GetBayonetCompare(string pushProvinceCode, string StatisticsStartDate, string StatisticsEndDate,
string CompareStartDate = "", string CompareEndDate = "", string SPRegionType_ID = "",
string Serverpart_ID = "", string Serverpart_Region = "")
{
string Parameter = "入参信息:推送省份【" + pushProvinceCode + "】,统计开始日期【" + StatisticsStartDate + "】," +
"统计结束日期【" + StatisticsEndDate + "】,区域内码【" + SPRegionType_ID + "】,服务区内码【" + Serverpart_ID + "】," +
"统计营收【" + Serverpart_Region + "】";
try
{
if (pushProvinceCode != "340000")
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
//默认同比开始时间为去年同期开始时间
if (string.IsNullOrWhiteSpace(CompareStartDate))
{
CompareStartDate = DateTime.Parse(StatisticsStartDate).AddYears(-1).ToString("yyyy/MM/dd");
}
//默认同比结束时间为去年同期结束时间
if (string.IsNullOrWhiteSpace(CompareEndDate))
{
CompareEndDate = DateTime.Parse(StatisticsEndDate).AddYears(-1).ToString("yyyy/MM/dd");
}
//获取营收推送数据表列表
ESCM.BayonetCompareModel bayonetGrowthModel = ESCG.BayonetHelper.GetBayonetCompare(transaction,
StatisticsStartDate, StatisticsEndDate, CompareStartDate, CompareEndDate,
SPRegionType_ID, Serverpart_ID, Serverpart_Region);
if (bayonetGrowthModel == null)
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
return Ok(Models.JsonMsg.Success(bayonetGrowthModel, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetCompare");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取节日服务区平均入区流量对比数据
///
/// 获取节日服务区平均入区流量对比数据
///
/// 省份编码
///
/// 节日类型:
/// 1【元旦】
2【春运】
3【清明】
4【五一】
5【端午】
6【暑期】
7【中秋】
8【国庆】
///
/// 当前年份
/// 同比年份
/// 片区内码
/// 服务区内码
/// 服务区方位
///
[Route("BigData/GetHolidayCompare")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg))]
public IHttpActionResult GetHolidayCompare(string pushProvinceCode, int holidayType,
int curYear, int compareYear, string SPRegionType_ID = "", string Serverpart_ID = "", string Serverpart_Region = "")
{
string Parameter = "入参信息:推送省份【" + pushProvinceCode + "】,节日类型【" + holidayType + "】," +
"当前年份【" + curYear + "】,同比年份【" + compareYear + "】,区域内码【" + SPRegionType_ID + "】," +
"服务区内码【" + Serverpart_ID + "】,统计营收【" + Serverpart_Region + "】";
try
{
if (pushProvinceCode != "340000")
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
//获取营收推送数据表列表
ESCM.BayonetCompareModel bayonetGrowthModel = ESCG.BayonetHelper.GetHolidayCompare(transaction,
holidayType, curYear, compareYear, SPRegionType_ID, Serverpart_ID, Serverpart_Region);
if (bayonetGrowthModel == null)
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败,无数据返回!"));
}
return Ok(Models.JsonMsg.Success(bayonetGrowthModel, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetHolidayCompare");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取日均车流归属地数据分析
///
/// 获取日均车流归属地数据分析
///
///
/// 节日类型:
/// 0【全部】
/// 1【节假日】
/// 2【非节假日】
///
/// 服务区内码
/// 服务区类型
/// 统计开始月份,格式yyyyMM
/// 统计结束月份,格式yyyyMM
/// 车辆类型
///
[Route("BigData/GetBayonetOAAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetBayonetOAAnalysis(int HolidayType, string ServerpartId = "", string ServerpartType = "",
string StartMonth = "", string EndMonth = "", string VehicleType = "")
{
string Parameter = "入参信息:节日类型【" + HolidayType + "】,服务区内码【" + ServerpartId + "】," +
"服务区类型【" + ServerpartType + "】,车辆类型【" + VehicleType + "】," +
"统计开始月份【" + StartMonth + "】,统计结束月份【" + EndMonth + "】";
try
{
//获取车辆归属地分析
List BayonetOAList = ESCG.BayonetHelper.GetBayonetOAAnalysis(transaction,
HolidayType, ServerpartId, ServerpartType, ref StartMonth, ref EndMonth, VehicleType);
string[] StatisticsMonth = new string[2] { StartMonth, EndMonth };
//转化json形式
Models.JsonList jsonList = Models.JsonList.Success(
BayonetOAList, StatisticsMonth, BayonetOAList.Count, 1, BayonetOAList.Count);
return Ok(Models.JsonMsg>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetOAAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取日度车流分析数据
///
/// 获取日度车流分析数据
///
/// 统计开始日期
格式yyyy-MM-dd
/// 统计结束日期
格式yyyy-MM-dd
/// 服务区内码
///
[Route("BigData/GetDateAnalysis")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>>))]
public IHttpActionResult GetDateAnalysis(int Serverpart_ID, string StartDate = "", string EndDate = "")
{
string Parameter = "入参信息:统计开始日期【" + StartDate + "】,统计结束日期【" + EndDate + "】"
+ "服务区内码【" + Serverpart_ID + "】";
try
{
List SummaryList = new List();
List BayonetEntryList = ESCG.BayonetHelper.GetDateAnalysis(transaction,
StartDate, EndDate, Serverpart_ID, ref SummaryList);
//转化json形式
Models.JsonList> jsonList = Models.JsonList<
ESCM.BayonetDateModel, List>.Success(BayonetEntryList, SummaryList);
return Ok(Models.JsonMsg>>.Success(jsonList, 100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetMonthAnalysis");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 根据选择的时间范围补充卡口缺失的数据
///
/// 根据选择的时间范围补充卡口缺失的数据
///
/// 服务区内码ID
/// 统计开始日期
/// 统计结束日期
/// 参考数据开始日期
/// 参考数据结束日期
///
[Route("BigData/CorrectBayonet")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult CorrectBayonet(string ServerpartId,
string StartDate, string EndDate, string ReferenceStartDate = "", string ReferenceEndDate = "")
{
string Parameter = "入参信息:服务区内码集合【" + ServerpartId + "】";
try
{
ESCG.BayonetHelper.CorrectBayonet(
transaction, ServerpartId, StartDate, EndDate, ReferenceStartDate, ReferenceEndDate);
return Ok(ESCG.Common.ReturnJson(100, "查询成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetVehicleList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 判断当前月份是否有有效车流数据
///
/// 判断当前月份是否有有效车流数据
///
/// 服务区内码ID
/// 统计开始日期
/// 统计结束日期
///
[Route("BigData/JudgeBayonet")]
[AcceptVerbs("GET")]
[ResponseType(typeof(string))]
public IHttpActionResult JudgeBayonet(string ServerpartId, string StartDate, string EndDate)
{
string Parameter = "入参信息:服务区内码集合【" + ServerpartId + "】";
try
{
string HolidayName = "";
bool BayonetValid = ESCG.BayonetHelper.JudgeBayonet(transaction, ServerpartId, StartDate, EndDate, ref HolidayName);
if (BayonetValid)
{
return Ok(ESCG.Common.ReturnJson(100, "车流数据有效", HolidayName));
}
else
{
return Ok(ESCG.Common.ReturnJson(200, "车流数据有效天数不足10天!"));
}
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBayonetVehicleList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 更新车流模拟值
///
/// 更新车流模拟值
///
/// 更新内容
///
[Route("BigData/CorrectBayonetFlow")]
[AcceptVerbs("POST")]
[ResponseType(typeof(string))]
public IHttpActionResult CorrectBayonetFlow(List sectionFlowList)
{
string Parameter = "入参信息:" + JsonConvert.SerializeObject(sectionFlowList);
try
{
ESCG.BayonetHelper.CorrectBayonetFlow(transaction, sectionFlowList);
return Ok(ESCG.Common.ReturnJson(100, "更新成功"));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_CorrectBayonetFlow");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 多维数据看板车流相关接口
///
/// 获取车辆归属地统计汇总列表(树形)
///
/// 统计类型 0:中心统计 1:服务区统计
/// 服务区内码
/// 开始日期(yyyyMM)
/// 结束日期(yyyyMM)
///
///
/// 省份或城市top
/// 是否异步执行
///
[Route("BigData/GetBayonetOwnerAHTreeList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>>))]
public IHttpActionResult GetBayonetOwnerAHTreeList(int dataType, string serverPartId, int statisticsStartMonth,
int statisticsEndMonth, int? rankNum = null, bool isSync = true, int? pageIndex = 1, int? pageSize = 10)
{
var parameter = $@"入参条件:统计类型【{dataType}】,服务区内码【{serverPartId}】,开始日期【{statisticsStartMonth}】,
结束日期【{statisticsEndMonth}】";
try
{
//获取请求头服务区code,与入参serverPartId取交集,获取对应权限的服务区信息
var treeList = new List>();
if (dataType == 1)
{
if (!string.IsNullOrWhiteSpace(serverPartId))
{
treeList = ESCG.BayonetHelper.GetBayonetOwnerAHTreeDetail(transaction,
serverPartId.Split(",")[0].TryParseToInt(), statisticsStartMonth, statisticsEndMonth, rankNum);
}
else
{
return Ok(ESCG.Common.ReturnJson(200, "查询失败:服务区信息不能为空"));
}
}
else
{
treeList = ESCG.BayonetHelper.GetBayonetOwnerAHTreeList(transaction,
serverPartId, statisticsStartMonth, statisticsEndMonth, rankNum, isSync);
}
var jsonList = Models.JsonList>
.Success(treeList, treeList.Count, pageIndex.Value, pageSize.Value);
return Ok(Models.JsonMsg>>.Success(jsonList));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, $"查询失败!失败原因:{ex.Message } \r\n {parameter},{DateTime.Now:yyyyMMdd}_GetBayonetOwnerAHTreeList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
///
/// 获取各省入区车辆统计表(树形)
///
/// 服务区内码集合
/// 开始日期(yyyyMM)
/// 结束日期(yyyyMM)
/// 城市top
///
///
///
[Route("BigData/GetProvinceVehicleTreeList")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>>))]
public IHttpActionResult GetProvinceVehicleTreeList(string serverPartId, int statisticsStartMonth,
int statisticsEndMonth, int? rankNum = null, int? pageIndex = 1, int? pageSize = 10)
{
var parameter = $@"入参条件:服务区内码【{serverPartId}】,开始日期【{statisticsStartMonth}】,
结束日期【{statisticsEndMonth}】";
try
{
//获取请求头服务区code,与入参serverPartId取交集,获取对应权限的服务区信息
var treeList = ESCG.BayonetHelper.GetProvinceVehicleTreeList(transaction,
serverPartId, statisticsStartMonth, statisticsEndMonth, rankNum);
var jsonList = Models.JsonList>
.Success(treeList, treeList.Count, pageIndex.Value, pageSize.Value);
return Ok(Models.JsonMsg>>.Success(jsonList));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, $"查询失败!失败原因:{ex.Message } \r\n {parameter},{DateTime.Now:yyyyMMdd}_GetProvinceVehicleTreeList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
///
/// 获取各省入区车辆统计表明细
///
/// 省份
/// 服务区内码
/// 城市
/// 开始日期(yyyyMM)
/// 结束日期(yyyyMM)
/// 城市top
///
///
///
[Route("BigData/GetProvinceVehicleDetail")]
[AcceptVerbs("GET")]
[ResponseType(typeof(Models.JsonMsg>))]
public IHttpActionResult GetProvinceVehicleDetail(int statisticsStartMonth, int statisticsEndMonth,
string provinceName, string serverPartId = "", string cityName = "", int? rankNum = null, int? pageIndex = 1, int? pageSize = 10)
{
var parameter = $@"入参条件:省份【{provinceName}】,城市【{cityName}】,开始日期【{statisticsStartMonth}】,
结束日期【{statisticsEndMonth}】";
try
{
var list = ESCG.BayonetHelper.GetProvinceVehicleDetail(transaction, provinceName, serverPartId, cityName, statisticsStartMonth, statisticsEndMonth, rankNum);
var jsonList = Models.JsonList
.Success(list, list.Count, pageIndex.Value, pageSize.Value);
return Ok(Models.JsonMsg>.Success(jsonList));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
LogUtil.WriteLog(null, $"查询失败!失败原因:{ex.Message } \r\n {parameter},{DateTime.Now:yyyyMMdd}_GetProvinceVehicleTreeList");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
#region 方法 -> 获取实况车流信息(百度API)
///
/// 获取实况车流信息(百度API)
///
/// 道路名称
/// 城市名称
///
[Route("BigData/GetBaiDuTrafficInfo")]
[AcceptVerbs("GET")]
[ResponseType(typeof(string))]
public IHttpActionResult GetBaiDuTrafficInfo(string RoadName, string CityName)
{
try
{
string url = "https://api.map.baidu.com/traffic/v1/road?road_name=" + RoadName +
"&city=" + CityName + "&ak=XrQQuNQRGxap9YH2xmvx3dzuJVkXhTzT";
string resultStr = ESCG.HttpUtil.HttpUrlGet(url);
return Ok(ESCG.Common.ReturnJson(100, "查询成功", resultStr));
}
catch (Exception ex)
{
//事务回滚
transaction.Rollback();
string Parameter = "入参信息:道路名称【" + RoadName + "】,城市名称【" + CityName + "】";
LogUtil.WriteLog(null, "查询失败!失败原因:" + ex.Message + "\r\n" + Parameter,
DateTime.Now.ToString("yyyyMMdd") + "_GetBaiDuTrafficInfo");
return Ok(ESCG.Common.ReturnJson(999, "查询失败" + ex.Message));
}
}
#endregion
}
}