184 lines
6.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|