using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading.Tasks;
|
using CommonHelper;
|
using RiskControl.NewService.Entity;
|
using RiskControl.NewService.Entity.QccDbEntity;
|
using RiskControl.NewService.Extension;
|
using RiskControl.NewService.QiChaCha.QccEntity;
|
using SqlSugar;
|
|
namespace RiskControl.NewService.Service
|
{
|
public partial class QiChaChaService
|
{
|
/// <summary>
|
/// 股权质押核查(普通企业)
|
/// </summary>
|
/// <param name="name">公司名称</param>
|
/// <returns></returns>
|
public async Task<QccMsgData> GetStockRightPledgeCheckList(string name, int pageIndex, int pageSize)
|
{
|
var result = new QccMsgData();
|
var resultPage = new Page<QccStockRightPledgeCheckList>();
|
if (_expiredDays > 0)
|
{
|
// 1.数据库是存在
|
var createTime = await Db.Queryable<QccStockRightPledgeCheckList>().Where(a => a.Name == name).OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.CreateTime)
|
.FirstAsync();
|
if (createTime.AddDays(_expiredDays) >= DateTime.Now)
|
{
|
var query = Db.Queryable<QccStockRightPledgeCheckList>().Where(a => a.Name == name).Where(a =>
|
a.ItemIndex > (pageIndex - 1) * pageSize && a.ItemIndex <= pageIndex * pageSize);
|
var dbcount = await query.CountAsync();
|
var totalcount = await Db.Queryable<QccStockRightPledgeCheckList>().Where(a => a.Name == name)
|
.OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.TotalItems).FirstAsync();
|
|
// 如果条数相同,则取数据库的。如果条数不同,则重新请求
|
// 1. pageSize=5,满足条件的数据库条数dbcount=5,任务数据库包含此次请求的数据,直接取数据库
|
// 2. api接口获取的总条数totalcount=5,数据库满足条件的条数dbcount=5,认为数据库的数据和api一致
|
// 3. 如,totalcount=6,请求第二页pageIndex=2,每页pageSize=5,那么该页只有1条数据,如果和数据库满足的数据条数dbcount一致,认为数据库满足
|
if (dbcount == pageSize || dbcount == totalcount || dbcount == totalcount - pageSize * (pageIndex - 1))
|
{
|
var dbList = await Db.Queryable<QccStockRightPledgeCheckList>().Where(a => a.Name == name).Where(a =>
|
a.ItemIndex > (pageIndex - 1) * pageSize && a.ItemIndex <= pageIndex * pageSize)
|
.OrderBy(a => a.ItemIndex).ToListAsync();
|
|
resultPage.CurrentPage = pageIndex;
|
resultPage.PageSize = pageSize;
|
resultPage.TotalItems = totalcount;
|
resultPage.Items = dbList;
|
|
result.Data = resultPage;
|
return result;
|
}
|
|
// 如果请求页 > 总条数,说明没有数据了
|
var dbTotalPages = totalcount != 0
|
? (totalcount % pageSize) == 0 ? (totalcount / pageSize) : (totalcount / pageSize) + 1
|
: 0;
|
if (dbTotalPages < pageIndex)
|
{
|
result.Message = "查询无结果";
|
return result;
|
}
|
}
|
|
// 2.不存在或过期
|
await Db.Deleteable<QccStockRightPledgeCheckList>().Where(a => a.Name == name).ExecuteCommandAsync();
|
}
|
var qccResult = _api.GetStockRightPledgeCheckList(new StockRightPledgeCheckListQuery() { searchKey = name, pageIndex = pageIndex, pageSize = pageSize });
|
if (qccResult.Status == "200" && qccResult.Result.VerifyResult == 1)
|
{
|
var addList = new List<QccStockRightPledgeCheckList>();
|
for (var i = 0; i < qccResult.Result.Data.Count; i++)
|
{
|
var item = qccResult.Result.Data[i];
|
var dbmodel = item.MapTo<QccStockRightPledgeCheckList>();
|
dbmodel.CreateTime = DateTime.Now;
|
//dbmodel.CompanyName = name;
|
dbmodel.ItemIndex = (pageIndex - 1) * pageSize + i + 1;
|
dbmodel.TotalItems = qccResult.Paging.TotalRecords;
|
|
addList.Add(dbmodel);
|
}
|
|
if (_expiredDays > 0) await Db.Insertable(addList).ExecuteCommandAsync();
|
|
resultPage.CurrentPage = pageIndex;
|
resultPage.PageSize = pageSize;
|
resultPage.TotalItems = qccResult.Paging.TotalRecords;
|
resultPage.Items = addList;
|
|
result.Data = resultPage;
|
return result;
|
}
|
result.Message = qccResult.Message;
|
return result;
|
}
|
|
/// <summary>
|
/// 股权质押详情(普通企业)(配合GetStockRightPledgeCheckList)
|
/// </summary>
|
/// <param name="id">内部id</param>
|
/// <returns></returns>
|
public async Task<QccMsgData> GetStockRightPledgeCheckDetail(string id)
|
{
|
var result = new QccMsgData();
|
if (_expiredDays > 0)
|
{
|
// 1.数据库是存在
|
var createTime = await Db.Queryable<QccStockRightPledgeCheckDetail>().Where(a => a.Id == id).OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.CreateTime)
|
.FirstAsync();
|
if (createTime.AddDays(_expiredDays) >= DateTime.Now)
|
{
|
var dbmodel = await Db.Queryable<QccStockRightPledgeCheckDetail>().Where(a => a.Id == id).FirstAsync();
|
result.Data = dbmodel;
|
return result;
|
}
|
|
// 2.不存在或过期
|
await Db.Deleteable<QccStockRightPledgeCheckDetail>().Where(a => a.Id == id).ExecuteCommandAsync();
|
}
|
var qccResult = _api.GetStockRightPledgeCheckDetail(new StockRightPledgeCheckDetailQuery() { id = id });
|
if (qccResult.Status == "200")
|
{
|
var dbmodel = qccResult.Result.MapTo<QccStockRightPledgeCheckDetail>();
|
dbmodel.CreateTime = DateTime.Now;
|
//dbmodel.CompanyName = name;
|
dbmodel.Id = id;
|
if (_expiredDays > 0) await Db.Insertable(dbmodel).ExecuteCommandAsync();
|
|
result.Data = dbmodel;
|
return result;
|
}
|
result.Message = qccResult.Message;
|
return result;
|
}
|
|
/// <summary>
|
/// 股权质押核查(IPO/新三板)
|
/// </summary>
|
/// <param name="stockCode">股票代码</param>
|
/// <returns></returns>
|
public async Task<QccMsgData> GetSsStockRightPledgeCheckList(string stockCode, int pageIndex, int pageSize,bool isIpo)
|
{
|
var result = new QccMsgData();
|
var resultPage = new Page<QccSsStockRightPledgeCheckList>();
|
if (_expiredDays > 0)
|
{
|
// 1.数据库是存在
|
var createTime = await Db.Queryable<QccSsStockRightPledgeCheckList>().Where(a => a.StockCode == stockCode).OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.CreateTime)
|
.FirstAsync();
|
if (createTime.AddDays(_expiredDays) >= DateTime.Now)
|
{
|
var query = Db.Queryable<QccSsStockRightPledgeCheckList>().Where(a => a.StockCode == stockCode).Where(a =>
|
a.ItemIndex > (pageIndex - 1) * pageSize && a.ItemIndex <= pageIndex * pageSize);
|
var dbcount = await query.CountAsync();
|
var totalcount = await Db.Queryable<QccSsStockRightPledgeCheckList>().Where(a => a.StockCode == stockCode)
|
.OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.TotalItems).FirstAsync();
|
|
if (dbcount == pageSize || dbcount == totalcount || dbcount == totalcount - pageSize * (pageIndex - 1))
|
{
|
var dbList = await Db.Queryable<QccSsStockRightPledgeCheckList>().Where(a => a.StockCode == stockCode).Where(a =>
|
a.ItemIndex > (pageIndex - 1) * pageSize && a.ItemIndex <= pageIndex * pageSize)
|
.OrderBy(a => a.ItemIndex).ToListAsync();
|
|
resultPage.CurrentPage = pageIndex;
|
resultPage.PageSize = pageSize;
|
resultPage.TotalItems = totalcount;
|
resultPage.Items = dbList;
|
|
result.Data = resultPage;
|
return result;
|
}
|
|
// 如果请求页 > 总条数,说明没有数据了
|
var dbTotalPages = totalcount != 0
|
? (totalcount % pageSize) == 0 ? (totalcount / pageSize) : (totalcount / pageSize) + 1
|
: 0;
|
if (dbTotalPages < pageIndex)
|
{
|
result.Message = "查询无结果";
|
return result;
|
}
|
}
|
|
// 2.不存在或过期
|
await Db.Deleteable<QccSsStockRightPledgeCheckList>().Where(a => a.StockCode == stockCode).ExecuteCommandAsync();
|
}
|
var qccResult = _api.GetSsStockRightPledgeCheckList(new SsStockRightPledgeCheckListQuery() { stockCode = stockCode, pageIndex = pageIndex, pageSize = pageSize }, isIpo);
|
if (qccResult.Status == "200" && qccResult.Result.VerifyResult == 1)
|
{
|
var addList = new List<QccSsStockRightPledgeCheckList>();
|
for (var i = 0; i < qccResult.Result.Data.Count; i++)
|
{
|
var item = qccResult.Result.Data[i];
|
var dbmodel = item.MapTo<QccSsStockRightPledgeCheckList>();
|
dbmodel.CreateTime = DateTime.Now;
|
dbmodel.StockCode = stockCode;
|
dbmodel.ItemIndex = (pageIndex - 1) * pageSize + i + 1;
|
dbmodel.TotalItems = qccResult.Paging.TotalRecords;
|
|
addList.Add(dbmodel);
|
}
|
|
if (_expiredDays > 0) await Db.Insertable(addList).ExecuteCommandAsync();
|
|
resultPage.CurrentPage = pageIndex;
|
resultPage.PageSize = pageSize;
|
resultPage.TotalItems = qccResult.Paging.TotalRecords;
|
resultPage.Items = addList;
|
|
result.Data = resultPage;
|
return result;
|
}
|
result.Message = qccResult.Message;
|
return result;
|
}
|
|
/// <summary>
|
/// 股权质押详情(IPO/新三板)(配合GetSsStockRightPledgeCheckList)
|
/// </summary>
|
/// <param name="id">内部id</param>
|
/// <returns></returns>
|
public async Task<QccMsgData> GetSsStockRightPledgeCheckDetail(string id,bool isIpo)
|
{
|
var result = new QccMsgData();
|
if (_expiredDays > 0)
|
{
|
// 1.数据库是存在
|
var createTime = await Db.Queryable<QccSsStockRightPledgeCheckDetail>().Where(a => a.Id == id).OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.CreateTime)
|
.FirstAsync();
|
if (createTime.AddDays(_expiredDays) >= DateTime.Now)
|
{
|
var dbmodel = await Db.Queryable<QccSsStockRightPledgeCheckDetail>().Where(a => a.Id == id).FirstAsync();
|
result.Data = dbmodel;
|
return result;
|
}
|
|
// 2.不存在或过期
|
await Db.Deleteable<QccSsStockRightPledgeCheckDetail>().Where(a => a.Id == id).ExecuteCommandAsync();
|
}
|
var qccResult = _api.GetSsStockRightPledgeCheckDetail(new SsStockRightPledgeCheckDetailQuery() { id = id },isIpo);
|
if (qccResult.Status == "200")
|
{
|
var dbmodel = qccResult.Result.MapTo<QccSsStockRightPledgeCheckDetail>();
|
dbmodel.CreateTime = DateTime.Now;
|
//dbmodel.CompanyName = name;
|
dbmodel.Id = id;
|
if (_expiredDays > 0) await Db.Insertable(dbmodel).ExecuteCommandAsync();
|
|
result.Data = dbmodel;
|
return result;
|
}
|
result.Message = qccResult.Message;
|
return result;
|
}
|
|
/// <summary>
|
/// 股权质押核查(IPO上市公司)-重要股东质押统计
|
/// </summary>
|
/// <param name="stockCode">股票代码</param>
|
/// <returns></returns>
|
public async Task<QccMsgData> GetStockRightPledgeCheckHolderStatistics(string stockCode)
|
{
|
var result = new QccMsgData();
|
if (_expiredDays > 0)
|
{
|
// 1.数据库是存在
|
var createTime = await Db.Queryable<QccIPOStockRightPledgeCheckHolderStatistics>().Where(a => a.StockCode == stockCode).OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.CreateTime)
|
.FirstAsync();
|
if (createTime.AddDays(_expiredDays) >= DateTime.Now)
|
{
|
var dbmodel = await Db.Queryable<QccIPOStockRightPledgeCheckHolderStatistics>().Where(a => a.StockCode == stockCode).ToListAsync();
|
result.Data = dbmodel;
|
return result;
|
}
|
|
// 2.不存在或过期
|
await Db.Deleteable<QccIPOStockRightPledgeCheckHolderStatistics>().Where(a => a.StockCode == stockCode).ExecuteCommandAsync();
|
}
|
var qccResult = _api.GetStockRightPledgeCheckHolderStatistics(new IPOStockRightPledgeCheckHolderStatisticsQuery() { stockCode = stockCode });
|
if (qccResult.Status == "200" && qccResult.Result.VerifyResult==1)
|
{
|
var dbmodel = qccResult.Result.Data.MapToList<QccIPOStockRightPledgeCheckHolderStatistics>();
|
dbmodel.ForEach(a => { a.CreateTime = DateTime.Now;
|
a.StockCode = stockCode;
|
});
|
|
if (_expiredDays > 0) await Db.Insertable(dbmodel).ExecuteCommandAsync();
|
|
result.Data = dbmodel;
|
return result;
|
}
|
result.Message = qccResult.Message;
|
return result;
|
}
|
|
/// <summary>
|
/// 股权质押核查(IPO上市公司)-质押比例信息
|
/// </summary>
|
/// <param name="stockCode">股票代码</param>
|
/// <param name="tradeDate">质押日期,格式为yyyy-MM-dd,默认为最新日期</param>
|
/// <returns></returns>
|
public async Task<QccMsgData> GetIPOStockRightPledgeCheckHolderProportion(string stockCode,string tradeDate)
|
{
|
// tradeDate不填的话,默认为最新日期,最新日期在TradeDateList里,不一定是今天
|
// 所以缓存不好处理,现在采取缓存一天的方式,当天请求过的,采用缓存方式
|
|
var today = DateTime.Today.ToString("yyyy-MM-dd");
|
var result = new QccMsgData();
|
if (_expiredDays > 0)
|
{
|
// 1.数据库是存在
|
var createTime = await Db.Queryable<QccIPOStockRightPledgeCheckHolderProportion>().Where(a => a.StockCode == stockCode && a.TradeDate == today).OrderBy(a => a.CreateTime, OrderByType.Desc).Select(a => a.CreateTime)
|
.FirstAsync();
|
if (createTime.AddDays(_expiredDays) >= DateTime.Now)
|
{
|
var dbmodel = await Db.Queryable<QccIPOStockRightPledgeCheckHolderProportion>().Where(a => a.StockCode == stockCode && a.TradeDate == today).FirstAsync();
|
result.Data = dbmodel;
|
return result;
|
}
|
|
// 2.不存在或过期
|
await Db.Deleteable<QccIPOStockRightPledgeCheckHolderProportion>().Where(a => a.StockCode == stockCode && a.TradeDate == today).ExecuteCommandAsync();
|
}
|
var qccResult = _api.GetIPOStockRightPledgeCheckHolderProportion(new IPOStockRightPledgeCheckHolderProportionQuery() { stockCode = stockCode, tradeDate = tradeDate});
|
if (qccResult.Status == "200" && qccResult.Result.VerifyResult == 1)
|
{
|
var dbmodel = qccResult.Result.Data.MapTo<QccIPOStockRightPledgeCheckHolderProportion>();
|
dbmodel.CreateTime = DateTime.Now;
|
//dbmodel.CompanyName = name;
|
dbmodel.StockCode = stockCode;
|
dbmodel.TradeDate = today;
|
if (_expiredDays > 0) await Db.Insertable(dbmodel).ExecuteCommandAsync();
|
|
result.Data = dbmodel;
|
return result;
|
}
|
result.Message = qccResult.Message;
|
return result;
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
}
|