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<object>> GetChainIncomeCostPage(int pageIndex,int pageSize,string exchangeCode)
|
{
|
var pageCompany = await RiskControlRRDb.Queryable<ChainIncomeCost>()
|
.Select(a => a.CompanyName)
|
.Distinct()
|
.ToPageAsync(pageIndex, pageSize);
|
|
var reportTypes = await RiskControlRRDb.Queryable<ChainIncomeCost>()
|
.Select(a => a.ReportType)
|
.Distinct()
|
.ToListAsync();
|
|
var colSql = string.Empty;
|
foreach (var reportType in reportTypes.OrderByDescending(a=>a))
|
{
|
colSql += $@"
|
MAX(CASE WHEN ReportType = '{reportType}' THEN Income ELSE 0 END) AS Income{reportType},
|
MAX(CASE WHEN ReportType = '{reportType}' THEN Cost ELSE 0 END) AS Cost{reportType},
|
MAX(CASE WHEN ReportType = '{reportType}' THEN GrossMargin ELSE 0 END) AS GrossMargin{reportType},";
|
}
|
var sql = $@"SELECT
|
CompanyName,
|
ExchangeCode,
|
ExchangeName,{colSql.TrimEnd(',')}
|
FROM ChainIncomeCost
|
Where CompanyName in ('{string.Join("','", pageCompany.Items)}')
|
{(string.IsNullOrWhiteSpace(exchangeCode)?"": $"And ExchangeCode='{exchangeCode}'")}
|
GROUP BY CompanyName, ExchangeCode, ExchangeName;";
|
|
var data = RiskControlRRDb.Ado.SqlQuery<object>(sql);
|
|
|
var res = new Page<object>()
|
{
|
CurrentPage = pageCompany.CurrentPage,
|
PageSize = pageCompany.PageSize,
|
TotalItems = pageCompany.TotalItems,
|
Items = data
|
};
|
return res;
|
}
|
|
}
|
}
|