using BaseOUDAL; using YLErp.Model; namespace YLErp.Modules.SuperviseReportModule.XingZhengReport.Service { public abstract class SuperviseReportBaseService : YLBaseService where T : SuperviseReportBaseModel_XingZhengReport { protected SuperviseReportReq RequestInfo { get; private set; } public SuperviseReportBaseService(OptUserInfo userInfo, SuperviseReportReq req) : base(userInfo) { RequestInfo = req; } public abstract SearchListResult SearchReportList(); /// /// 从数据库查询报表 /// /// public virtual SearchListResult SearchReportList_Db() { string valueDate = RequestInfo.ValueDate.ToString("yyyy-MM-dd"); var query = DbContext.Set().Where(O => O.ValueDate.StartsWith(valueDate)).OrderBy(O => O.id); return query.ToSearchList(RequestInfo, false); } /// /// 导入数据到数据库 /// /// public virtual void ImportInfoToDb(List objs) { var db = DbContext.Set(); 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 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; } /// /// 获取对冲类型代码 /// /// /// 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; } /// /// 获取组合代码 /// /// /// 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; } /// /// 获取表弟交易所代码 /// /// /// 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; } } }