using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading.Tasks;
|
using RiskControl.NewService.Entity.RCY;
|
using RiskControl.NewService.Extension;
|
using SqlSugar;
|
|
namespace RiskControl.NewService.Service
|
{
|
/// <summary>
|
/// 仁产研
|
/// </summary>
|
public class RcyService : DbContext
|
{
|
/// <summary>
|
/// 景气矩阵
|
/// </summary>
|
/// <param name="pageIndex"></param>
|
/// <param name="pageSize"></param>
|
/// <param name="orderByFieldName"></param>
|
/// <param name="orderByType"></param>
|
/// <returns></returns>
|
public async Task<Page<RcyJqjz>> GetJqjzPage(int pageIndex, int pageSize, string orderByFieldName,
|
string orderByType)
|
{
|
var res = await RiskControlRRDb.Queryable<RcyJqjz>()
|
.OrderByIF(string.IsNullOrWhiteSpace(orderByFieldName), a => a.Zml, OrderByType.Desc)
|
.OrderByIF(!string.IsNullOrWhiteSpace(orderByFieldName), $"{orderByFieldName} {orderByType}")
|
.ToPageAsync(pageIndex, pageSize);
|
return res;
|
}
|
|
/// <summary>
|
/// 景气矩阵
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<RcyJqjz>> GetJqjzList()
|
{
|
var res = await RiskControlRRDb.Queryable<RcyJqjz>()
|
.ToListAsync();
|
return res;
|
}
|
|
/// <summary>
|
/// 上市地位
|
/// </summary>
|
/// <param name="pageIndex"></param>
|
/// <param name="pageSize"></param>
|
/// <param name="orderByFieldName"></param>
|
/// <param name="orderByType"></param>
|
/// <returns></returns>
|
public async Task<Page<RcySsdw>> GetSsdwPage(int pageIndex, int pageSize, string orderByFieldName,
|
string orderByType)
|
{
|
var res = await RiskControlRRDb.Queryable<RcySsdw>()
|
.OrderByIF(string.IsNullOrWhiteSpace(orderByFieldName), a => a.Jpettm, OrderByType.Desc)
|
.OrderByIF(!string.IsNullOrWhiteSpace(orderByFieldName), $"{orderByFieldName} {orderByType}")
|
.ToPageAsync(pageIndex, pageSize);
|
return res;
|
}
|
|
/// <summary>
|
/// 上市地位
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<RcySsdw>> GetSsdwList()
|
{
|
var res = await RiskControlRRDb.Queryable<RcySsdw>()
|
.ToListAsync();
|
return res;
|
}
|
|
/// <summary>
|
/// 公司详情
|
/// </summary>
|
/// <param name="pageIndex"></param>
|
/// <param name="pageSize"></param>
|
/// <param name="orderByFieldName"></param>
|
/// <param name="orderByType"></param>
|
/// <returns></returns>
|
public async Task<Page<RcyGsxq>> GetGsxqPage(int pageIndex, int pageSize, string orderByFieldName,
|
string orderByType)
|
{
|
var res = await RiskControlRRDb.Queryable<RcyGsxq>()
|
.OrderByIF(string.IsNullOrWhiteSpace(orderByFieldName), a => a.Ygs, OrderByType.Desc)
|
.OrderByIF(!string.IsNullOrWhiteSpace(orderByFieldName), $"{orderByFieldName} {orderByType}")
|
.ToPageAsync(pageIndex, pageSize);
|
return res;
|
}
|
|
/// <summary>
|
/// 公司详情
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<RcyGsxq>> GetGsxqList()
|
{
|
var res = await RiskControlRRDb.Queryable<RcyGsxq>()
|
.ToListAsync();
|
return res;
|
}
|
|
/// <summary>
|
/// 产业地图
|
/// </summary>
|
/// <returns></returns>
|
public async Task<object> GetGsxqMapData()
|
{
|
var res = await RiskControlRRDb.Queryable<RcyGsxq>()
|
.GroupBy(a => a.Sf)
|
.Select(a => new {Name = a.Sf, Value = SqlFunc.AggregateCount(a.Sf)})
|
.ToListAsync();
|
return res;
|
}
|
|
public async Task<Page<ChainIncomeCost>> GetChainIncomeCostPage(int pageIndex, int pageSize,
|
string[] exchangeCodes)
|
{
|
var res = await RiskControlRRDb.Queryable<ChainIncomeCost>()
|
.WhereIF(exchangeCodes.Length > 0, a => exchangeCodes.Contains(a.ExchangeCode))
|
.ToPageAsync(pageIndex, pageSize);
|
|
return res;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="type">income,cost,grossmargin</param>
|
/// <returns></returns>
|
public async Task<object> GetChainIncomeCostChart(string type)
|
{
|
var data = await RiskControlRRDb.Queryable<ChainIncomeCost>()
|
.Where(a => a.CompanyName == "总计")
|
.FirstAsync();
|
var props = typeof(ChainIncomeCost).GetProperties();
|
var dict = new SortedDictionary<int, double>();
|
foreach (var p in props.Where(a=>a.Name.ToLower().StartsWith(type.ToLower())))
|
{
|
var year =int.Parse(p.Name.ToLower().Replace(type.ToLower(), ""));
|
var val = (double?) p.GetValue(data);
|
if(val != null)
|
dict.Add(year,(double)val);
|
}
|
|
var res = new List<object>();
|
var index = 0;
|
foreach (var kv in dict)
|
{
|
var obj = new {year = kv.Key, value = kv.Value, rate = index == 0 ? (double?)null : (kv.Value - dict[kv.Key-1])/ dict[kv.Key - 1] *100};
|
res.Add(obj);
|
index++;
|
}
|
|
return res;
|
}
|
|
}
|
}
|