Files
zszq-trs/YLErpDAL/Modules/SuperviseReportModule/XingZhengReport/Service/SuperviseReportBaseService.cs
T
2024-05-09 14:06:26 +08:00

184 lines
6.3 KiB
C#

using BaseOUDAL;
using YLErp.Model;
namespace YLErp.Modules.SuperviseReportModule.XingZhengReport.Service
{
public abstract class SuperviseReportBaseService<T> : YLBaseService where T : SuperviseReportBaseModel_XingZhengReport
{
protected SuperviseReportReq RequestInfo { get; private set; }
public SuperviseReportBaseService(OptUserInfo userInfo, SuperviseReportReq req) : base(userInfo)
{
RequestInfo = req;
}
public abstract SearchListResult<T> SearchReportList();
/// <summary>
/// 从数据库查询报表
/// </summary>
/// <returns></returns>
public virtual SearchListResult<T> SearchReportList_Db()
{
string valueDate = RequestInfo.ValueDate.ToString("yyyy-MM-dd");
var query = DbContext.Set<T>().Where(O => O.ValueDate.StartsWith(valueDate)).OrderBy(O => O.id);
return query.ToSearchList(RequestInfo, false);
}
/// <summary>
/// 导入数据到数据库
/// </summary>
/// <param name="objs"></param>
public virtual void ImportInfoToDb(List<T> objs)
{
var db = DbContext.Set<T>();
var dates = objs.Select(O => O.ValueDate).ToHashSet();
var removeInfos = db.Where(O => dates.Contains(O.ValueDate));
if (removeInfos.Any())
{
db.RemoveRange(removeInfos);
}
db.AddRange(objs);
DbContext.SaveChanges();
}
protected virtual void FormatModel(T model, trade trade, IEnumerable<string> hedgeGroup, string contractCode)
{
var um = DataCacheProvider.GetUnderlyingDataSource().GetData(trade.UnderlyingCode);
model.ValueDate = RequestInfo.ValueDate.ToString("yyyy-MM-dd");
model.GroupCode = "XY010";
model.OrgName = "";
model.AssetCode = "自营投资";
model.PrtflCode = "P03";
model.CmbCode = getCmbCode(trade.AssetBookName);
model.CfrmAchvNo = contractCode;
model.Cutp = trade.ClientName;
model.RelpFlag = (trade.ClientName.Contains("兴证") || trade.ClientName.Contains("兴业证券")) ? "是" : "否";
model.BgnDt = trade.StartDate.GetValueOrDefault().ToString("yyyyMMdd");
model.ExprDt = trade.ExerciseDate.GetValueOrDefault().ToString("yyyyMMdd");
model.ValidHedgFlag = model.CmbCode != "C03" && hedgeGroup.Contains(um.UnderlyingCode) ? "是" : "否";
model.HedgTypeCd = getHedgTypeCd(model);
model.PrtcRate = trade.ParticipationRate ?? 1;
model.TgtBpPrc = trade.SpotPrice;
model.Share = trade.Notional;
model.CrrcCd = "410";
//model.CurCrdtRiskExps = 0;
//model.PotntCrdtRiskExps = 0;
model.RptDt = DateTime.Today.ToString("yyyy-MM-dd");
model.RptPsn = UserName;
}
/// <summary>
/// 获取对冲类型代码
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private string getHedgTypeCd(T obj)
{
string code = "";
switch (obj.CmbCode)
{
case "C01":
code = "01";//撮合
break;
case "C02":
code = "02";//自主
break;
case "C03":
code = "00";//不涉及
break;
default:
code = "03";//混合
break;
}
return code;
}
/// <summary>
/// 获取组合代码
/// </summary>
/// <param name="assetBookName"></param>
/// <returns></returns>
private string getCmbCode(string assetBookName)
{
string code = "";
if (assetBookName.Contains("撮合对冲"))
{
code = "C01";
}
else if (assetBookName.Contains("自主对冲"))
{
code = "C02";
}
else if (assetBookName.Contains("非对冲"))
{
code = "C03";
}
else if (assetBookName.Contains("期现套利"))
{
code = "C04";
}
else if (assetBookName.Contains("盘面套利"))
{
code = "C05";
}
return code;
}
/// <summary>
/// 获取表弟交易所代码
/// </summary>
/// <param name="marketCode"></param>
/// <returns></returns>
protected string getTgtExchCd(string marketName)
{
string code = "999";
switch (marketName)
{
case "上海证券交易所":
code = "101";
break;
case "深圳证券交易所":
code = "105";
break;
case "三板交易市场":
code = "111";
break;
case "全国银行间市场":
code = "113";
break;
case "香港联合交易所":
code = "161";
break;
case "大连商品交易所":
code = "132";
break;
case "郑州商品交易所":
code = "133";
break;
case "上海期货交易所":
code = "131";
break;
case "中国金融期货交易所":
code = "121";
break;
case "上海黄金交易所":
code = "141";
break;
case "北京股权交易中心":
code = "142";
break;
case "全国银行间柜台":
code = "115";
break;
case "其他境外交易所":
code = "901";
break;
case "其它":
default:
code = "999"; break;
}
return code;
}
}
}