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 { /// /// 仁产研 /// public class RcyService : DbContext { /// /// 景气矩阵 /// /// /// /// /// /// public async Task> GetJqjzPage(int pageIndex, int pageSize, string orderByFieldName, string orderByType) { var res = await RiskControlRRDb.Queryable() .OrderByIF(string.IsNullOrWhiteSpace(orderByFieldName), a => a.Zml, OrderByType.Desc) .OrderByIF(!string.IsNullOrWhiteSpace(orderByFieldName), $"{orderByFieldName} {orderByType}") .ToPageAsync(pageIndex, pageSize); return res; } /// /// 景气矩阵 /// /// public async Task> GetJqjzList() { var res = await RiskControlRRDb.Queryable() .ToListAsync(); return res; } /// /// 上市地位 /// /// /// /// /// /// public async Task> GetSsdwPage(int pageIndex, int pageSize, string orderByFieldName, string orderByType) { var res = await RiskControlRRDb.Queryable() .OrderByIF(string.IsNullOrWhiteSpace(orderByFieldName), a => a.Jpettm, OrderByType.Desc) .OrderByIF(!string.IsNullOrWhiteSpace(orderByFieldName), $"{orderByFieldName} {orderByType}") .ToPageAsync(pageIndex, pageSize); return res; } /// /// 上市地位 /// /// public async Task> GetSsdwList() { var res = await RiskControlRRDb.Queryable() .ToListAsync(); return res; } /// /// 公司详情 /// /// /// /// /// /// public async Task> GetGsxqPage(int pageIndex, int pageSize, string orderByFieldName, string orderByType) { var res = await RiskControlRRDb.Queryable() .OrderByIF(string.IsNullOrWhiteSpace(orderByFieldName), a => a.Ygs, OrderByType.Desc) .OrderByIF(!string.IsNullOrWhiteSpace(orderByFieldName), $"{orderByFieldName} {orderByType}") .ToPageAsync(pageIndex, pageSize); return res; } /// /// 公司详情 /// /// public async Task> GetGsxqList() { var res = await RiskControlRRDb.Queryable() .ToListAsync(); return res; } /// /// 产业地图 /// /// public async Task GetGsxqMapData() { var res = await RiskControlRRDb.Queryable() .GroupBy(a => a.Sf) .Select(a => new {Name = a.Sf, Value = SqlFunc.AggregateCount(a.Sf)}) .ToListAsync(); return res; } public async Task> GetChainIncomeCostPage(int pageIndex, int pageSize, string[] exchangeCodes) { var res = await RiskControlRRDb.Queryable() .WhereIF(exchangeCodes.Length > 0, a => exchangeCodes.Contains(a.ExchangeCode)) .ToPageAsync(pageIndex, pageSize); return res; } /// /// /// /// income,cost,grossmargin /// public async Task GetChainIncomeCostChart(string type) { var data = await RiskControlRRDb.Queryable() .Where(a => a.CompanyName == "总计") .FirstAsync(); var props = typeof(ChainIncomeCost).GetProperties(); var dict = new SortedDictionary(); 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(); 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; } } }