diff --git a/Framework/YLErp.Core/Configuration/ProjectConfig.cs b/Framework/YLErp.Core/Configuration/ProjectConfig.cs index fce3c578..79d541fe 100644 --- a/Framework/YLErp.Core/Configuration/ProjectConfig.cs +++ b/Framework/YLErp.Core/Configuration/ProjectConfig.cs @@ -220,6 +220,7 @@ namespace YLErp.Configuration public bool Is东莞 => ErpElement.Company == CompanyEnum.东莞; public bool Is山西固收 => ErpElement.Company == CompanyEnum.山西固收; + public bool Is浙商 => ErpElement.Company == CompanyEnum.浙商; /// /// 衡泰内证账号 /// diff --git a/YLErpDAL/Model/KafkaConfig.cs b/YLErpDAL/Model/KafkaConfig.cs index 605688c4..5d144e1e 100644 --- a/YLErpDAL/Model/KafkaConfig.cs +++ b/YLErpDAL/Model/KafkaConfig.cs @@ -42,18 +42,10 @@ namespace YLErp.Model /// public string HedgingAccountTopic { get; set; } /// - /// 账户资金请求topic - /// - public string ReqAccountCapitalTopic { get; set; } - /// /// 账户资金请求返回topic /// public string OnRspAccountCapitalTopic { get; set; } /// - /// 收益互换交易推送请求topic - /// - public string ReqInterestRateSwapInsertTopic { get; set; } - /// /// 互换自动簿记消费者topic /// public string OnRspInterestRateSwapInsertTopic { get; set; } diff --git a/YLErpDAL/Modules/ClientModule/ClientBankCardService.cs b/YLErpDAL/Modules/ClientModule/ClientBankCardService.cs index 07d17076..6f9e3358 100644 --- a/YLErpDAL/Modules/ClientModule/ClientBankCardService.cs +++ b/YLErpDAL/Modules/ClientModule/ClientBankCardService.cs @@ -339,19 +339,6 @@ namespace YLErp.Modules.ClientModule SetDBModelOpt(dbmodel); DbContext.SaveChanges(); - if (client.ProcessStatus == "已开户") - { - var dataType= SwapPushDataEnum.客户资金账户新增; - if (!isAdd) - { - dataType = SwapPushDataEnum.客户资金账户修改; - } - if (doInvalid) - { - dataType = SwapPushDataEnum.客户资金账户删除; - } - new PushLogService(UserInfo).AddLog(dbmodel.ClientId ?? 0, dataType, client.Number); - } return dbmodel; } diff --git a/YLErpDAL/Modules/ClientModule/ClientProcessLogService.cs b/YLErpDAL/Modules/ClientModule/ClientProcessLogService.cs index 92b049bd..d39d0a1e 100644 --- a/YLErpDAL/Modules/ClientModule/ClientProcessLogService.cs +++ b/YLErpDAL/Modules/ClientModule/ClientProcessLogService.cs @@ -416,7 +416,6 @@ namespace YLErp.Modules.ClientModule OptName = UserName, OptDate = OptDate }); - new PushLogService(this.OptUser).AddLog(client.id, SwapPushDataEnum.客户创建, SwapPushDataEnum.客户修改, client.Number); DbContext.SaveChanges(); new EtradingRuleService(this.OptUser).SendEtradingRuleToKafka(client.Number); new ClientKafkaService().Send(client, oldClient); diff --git a/YLErpDAL/Modules/ClientModule/ClientSaveService.cs b/YLErpDAL/Modules/ClientModule/ClientSaveService.cs index 48c316bc..3f50702f 100644 --- a/YLErpDAL/Modules/ClientModule/ClientSaveService.cs +++ b/YLErpDAL/Modules/ClientModule/ClientSaveService.cs @@ -336,10 +336,6 @@ namespace YLErp.Modules.ClientModule //增加评估日志 AddClientAssessmentLog(dbModel, changeStr, isAddNew); SaveClientCustomerManage(dbModel.id,req.CustomerManagerId); - if (dbModel.ProcessStatus=="已开户") - { - new PushLogService(UserInfo).AddLog(dbModel.id, SwapPushDataEnum.客户创建, SwapPushDataEnum.客户修改, dbModel.Number); - } return dbModel; } /// diff --git a/YLErpDAL/Modules/DataCompare/DataCompareService.cs b/YLErpDAL/Modules/DataCompare/DataCompareService.cs deleted file mode 100644 index 9917e51f..00000000 --- a/YLErpDAL/Modules/DataCompare/DataCompareService.cs +++ /dev/null @@ -1,262 +0,0 @@ -using BaseOUDAL; -using OfficeOpenXml; -using Org.BouncyCastle.Ocsp; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Dynamic.Core; -using System.Text; -using System.Threading.Tasks; -using YLErp.BLL; -using YLErp.DBModels; -using YLErp.Model; -using YLErp.Modules.DataCompare.Dto; -using YLErp.Modules.SwapModule; -using YLErp.Office; - -namespace YLErp.Modules.DataCompare -{ - /// - /// 数据比较服务 - /// - public class DataCompareService: YLBaseService - { - public DataCompareService(OptUserInfo userInfo) : base(userInfo) - { - } - - public SearchListResult QueryNeedCompareData(QueryNeedCompareDataRequest req) - { - var predicate = PredicateBuilder.Create(x => true); - if (!string.IsNullOrEmpty(req.TradeNumber)) - { - predicate = predicate.And(x => x.TradeNumber.Contains(req.TradeNumber)); - } - if (req.AssetId!=null&&req.AssetId.Count>0) - { - predicate = predicate.And(p => req.AssetId.Contains(p.AssetId)); - } - - var predicateSwap = PredicateBuilder.Create(d => d.ValueDate == req.ValueDate); - if (req.ShowException) - { - predicateSwap = predicateSwap.And(p => !p.IsSkipEod); - } - - var query = from a in DbContext.trade.Where(predicate) - join b in DbContext.eod_swap.Where(predicateSwap) on a.id equals b.SwapTradeId - where a.TradeDate<=req.ValueDate || (a.TradeStatus==ConsTrade.已平仓&&a.UnWindDate<=req.ValueDate) - select new HengTaiCompareData - { - id=a.id, - ValueDate = req.ValueDate, - TradeNumber = a.TradeNumber, - AssetId = a.AssetId, - StartDate = a.StartDate, - TradeStatus =(b.ValueDate>=a.UnWindDate&& a.TradeStatus == ConsTrade.已平仓) ? ConsTrade.已平仓 : ConsTrade.确认成交, - TradeDate = a.TradeDate, - EndDate = a.ExerciseDate, - StructType = a.TradeType, - QuoteCurrency = a.QuoteCurrency, - ClientName = a.ClientName, - TraderName = a.TraderName, - SwapType = a.StructureType, - StockEqvNotional = b.NotionalValue, - StockEqvNotionalV2 = b.IsSkipEod ? b.NotionalValue : null, - Pv = b.IsSkipEod ? b.HTPostionValue : b.PostionValue, - PvV2 = b.IsSkipEod ? b.HTPostionValue : null, - AssetName = a.AssetBookName, - CheckResult = b.IsSkipEod, - VTradingFee=b.VTradingFee - }; - - if (string.IsNullOrEmpty(req.sidx)) - { - req.sidx = "id"; - req.sord = "desc"; - } - return query.ToSearchList(req); - } - - - public DateTime GetLastCloseDate() - { - var model=DbContext.eodStatus.AsNoTracking().OrderByDescending(p => p.ValueDate).FirstOrDefault(); - if (model != null) - { - return model.ValueDate; - } - return valuedateBLL.SystemDate.ValueDate; - } - - - - public SearchListResult QueryOnlyHengTaiData(QueryNeedCompareDataRequest req) - { - var predicate = PredicateBuilder.Create(x => x.NPV_DATE.Equals(req.ValueDate.ToString("yyyy-MM-dd"))); - if (!string.IsNullOrEmpty(req.TradeNumber)) - { - predicate = predicate.And(x => x.EXT_NO.Contains(req.TradeNumber)); - } - var tradeNumberQuery = from a in DbContext.trade.AsNoTracking() - select a.TradeNumber; - predicate = predicate.And(p => !tradeNumberQuery.Contains(p.EXT_NO)); - - var query = from a in DbContext.reg_valuation_end_of_day.Where(predicate) - select new OnlyHengTaiDataDto - { - id=a.id, - ValueDate=req.ValueDate, - StockEqvNotionalV2=a.ORDCOUNT, - PvV2=a.NPV, - TradeNumber=a.EXT_NO, - EndDateStr=a.SETDATE_TERMINATE, - StartDateStr=a.START_DATE - }; - - if (string.IsNullOrEmpty(req.sidx)) - { - req.sidx = "id"; - req.sord = "desc"; - } - return query.ToSearchList(req); - } - - - public byte[] ExprotExcel(QueryNeedCompareDataRequest req) - { - - - var predicate = PredicateBuilder.Create(x => true); - if (!string.IsNullOrEmpty(req.TradeNumber)) - { - predicate = predicate.And(x => x.TradeNumber.Contains(req.TradeNumber)); - } - if (req.AssetId != null && req.AssetId.Count > 0) - { - predicate = predicate.And(p => req.AssetId.Contains(p.AssetId)); - } - - var predicateSwap = PredicateBuilder.Create(d => d.ValueDate == req.ValueDate); - if (req.ShowException) - { - predicateSwap = predicateSwap.And(p => !p.IsSkipEod); - } - - List dataList = (from a in DbContext.trade.Where(predicate) - join b in DbContext.eod_swap.Where(predicateSwap) on a.id equals b.SwapTradeId - select new HengTaiCompareData - { - id = a.id, - ValueDate = req.ValueDate, - TradeNumber = a.TradeNumber, - AssetId = a.AssetId, - StartDate = a.StartDate, - TradeStatus = a.TradeStatus, - TradeDate = a.TradeDate, - EndDate = a.ExerciseDate, - StructType = a.TradeType, - QuoteCurrency = a.QuoteCurrency, - ClientName = a.ClientName, - TraderName = a.TraderName, - SwapType = a.StructureType, - StockEqvNotional = b.NotionalValue, - StockEqvNotionalV2 = b.IsSkipEod ? b.NotionalValue : null, - Pv = b.IsSkipEod ? b.HTPostionValue : b.PostionValue, - PvV2 = b.IsSkipEod ? b.HTPostionValue : null, - VTradingFee=b.VTradingFee, - AssetName = a.AssetBookName, - CheckResult = b.IsSkipEod - }).OrderByDescending(p=>p.id).ToList(); - - var predicate2 = PredicateBuilder.Create(x => x.NPV_DATE.Equals(req.ValueDate.ToString("yyyy-MM-dd"))); - if (!string.IsNullOrEmpty(req.TradeNumber)) - { - predicate2 = predicate2.And(x => x.EXT_NO.Contains(req.TradeNumber)); - } - var tradeNumberQuery = from a in DbContext.trade.AsNoTracking() - select a.TradeNumber; - predicate2 = predicate2.And(p => !tradeNumberQuery.Contains(p.EXT_NO)); - - var list2 = (from a in DbContext.reg_valuation_end_of_day.Where(predicate2) - select new OnlyHengTaiDataDto - { - id = a.id, - ValueDate = req.ValueDate, - StockEqvNotionalV2 = a.ORDCOUNT, - PvV2 = a.NPV, - TradeNumber = a.EXT_NO, - EndDateStr = a.SETDATE_TERMINATE, - StartDateStr = a.START_DATE - }).OrderByDescending(p => p.id).ToList(); - - - var tplFilePath = OtcAppContext.MapPath("/App_Docs"); - var sourceFileName = Path.Combine(tplFilePath, "导出模板", "与衡泰对账导出模板.xlsx"); - var modelDict = new Dictionary(); - var model = new { list = dataList }; - - var modelDict2 = new Dictionary(); - var model2 = new { list = list2 }; - - modelDict.Add("本系统中的合约", model); - modelDict.Add("仅衡泰中有的合约", model2); - ExcelPackage.LicenseContext = LicenseContext.NonCommercial; - return new ExcelTemplateGenerator().SetTemplateFile(sourceFileName).SetTemplateData(modelDict).Output(); - } - - - /// - /// 获取清算时间 - /// - /// - /// - public LiquidationTimeDto GetLiquidationTime(QueryNeedCompareDataRequest req) - { - var res = new LiquidationTimeDto(); - res.SystemLiquidationTime = "未清算"; - res.HengTaiLiquidationTime = "未同步"; - var model = DbContext.eodStatus.Where(p=>p.ValueDate==req.ValueDate).AsNoTracking().OrderByDescending(p => p.OptDate).FirstOrDefault(); - if(model!=null&&model.OptDate!=null) - { - res.SystemLiquidationTime = model.OptDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); - } - var model2 = DbContext.reg_valuation_end_of_day.Where(p => p.NPV_DATE.Equals(req.ValueDate.ToString("yyyy-MM-dd"))).OrderByDescending(p => p.create_time).FirstOrDefault(); - if (model2 != null) - { - res.HengTaiLiquidationTime = model2.create_time.ToString("yyyy-MM-dd HH:mm:ss"); - } - return res; - } - /// - /// 校验日期区间是否有获取衡泰估值 - /// - /// - /// - /// - public string CheckHTDataByDate(DateTime startDate,DateTime endDate) - { - - var regList = DbContext.reg_valuation_end_of_day.FromSqlRaw($"select * from reg_valuation_end_of_day where NPV_DATE>='{startDate.ToString("yyyy-MM-dd")}' and NPV_DATE<='{endDate.ToString("yyyy-MM-dd")}'").ToList(); - var allDays = (endDate - startDate).Days; - if (regList.Count==0) - { - return $"{startDate.ToString("yyyy-MM-dd")}未获取衡泰估值"; - } - for (int i=0;i< allDays;i++) - { - var valueDate = valuedateBLL.GetNonHoliday(startDate.AddDays(i)); - if (!regList.Any(x=>x.NPV_DATE.Equals(valueDate.ToString("yyyy-MM-dd")))) - { - return $"{valueDate.ToString("yyyy-MM-dd")}未获取衡泰估值"; - } - } - return ""; - } - public string GetHTLastDate() - { - var regValue= DbContext.reg_valuation_end_of_day.OrderByDescending(o=>o.NPV_DATE).FirstOrDefault(); - return regValue == null ? "未获取衡泰估值" : regValue.NPV_DATE; - } - } -} diff --git a/YLErpDAL/Modules/SwapModule/Interface/IPushHTService.cs b/YLErpDAL/Modules/SwapModule/Interface/IPushHTService.cs deleted file mode 100644 index 18540834..00000000 --- a/YLErpDAL/Modules/SwapModule/Interface/IPushHTService.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace YLErp.Modules.SwapModule.Interface -{ - public interface IPushHTService - { - void PushTrade(); - void PushClient(); - - void PushSingle(PushLog pushLog); - } -} diff --git a/YLErpDAL/Modules/SwapModule/PushHTService.cs b/YLErpDAL/Modules/SwapModule/PushHTService.cs deleted file mode 100644 index 885bdcea..00000000 --- a/YLErpDAL/Modules/SwapModule/PushHTService.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using YLErp.Abstract; -using YLErp.Modules.SwapModule.Interface; - -namespace YLErp.Modules.SwapModule -{ - public class PushHTService : IPushHTService - { - private IKafkaProduce kafkaProduceHelper; - public PushHTService(IKafkaProduce kafkaProduce) - { - kafkaProduceHelper = kafkaProduce; - } - /// - /// 推送交易相关 - /// - public void PushTrade() - { - SwapPushService pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - pushService.PushTrade(); - pushService.PushTradeUpdate(); - pushService.PushUnwind(); - pushService.PushRepealUnwind(); - } - /// - /// 推送客户信息相关 - /// - public void PushClient() - { - SwapPushService pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - pushService.PushClient(); - pushService.PushClientBank(); - // pushService.PushClientCash(); - - } - /// - /// 重推 - /// - /// - public void PushSingle(PushLog pushLog) - { - SwapPushService pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - pushService.RePushLog( pushLog); - } - } -} diff --git a/YLErpDAL/Modules/SwapModule/PushLogService.cs b/YLErpDAL/Modules/SwapModule/PushLogService.cs deleted file mode 100644 index 3482f191..00000000 --- a/YLErpDAL/Modules/SwapModule/PushLogService.cs +++ /dev/null @@ -1,296 +0,0 @@ -using BaseOUDAL; -using MoreLinq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using Org.BouncyCastle.Ocsp; -using Snowflake.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; -using YLErp.DBModels; -using YLErp.DBModels.Enums; -using YLErp.Model; - -namespace YLErp.Modules.SwapModule -{ - /// - /// 推送记录服务 - /// - public class PushLogService: YLBaseService - { - public PushLogService(OptUserInfo optUser) : base(optUser) - { - - } - - public PushLog AddLog(long dataId,SwapPushDataEnum dataEnum,string dataNumber) - { - PushLog pushLog= new PushLog(); - pushLog.data_id = dataId; - pushLog.data_type = (int)dataEnum; - pushLog.SetCreator(UserId); - pushLog.data_state = (int)SwapPushDataStateEnum.待推送; - pushLog.data_number = dataNumber; - pushLog.SetUpdator(UserId); - if (pushLog.id==0) - { - var worker = new IdWorker(1, 1); - pushLog.id = worker.NextId(); - DbContext.push_log.Add(pushLog); - } - pushLog.odata_no = pushLog.id.ToString(); - DbContext.SaveChanges(); - return pushLog; - } - /// - /// 添加记录,当该编号下已经产生推送过的记录时 - /// - /// - /// - /// - public void AddLogWithCheck(long dataId, SwapPushDataEnum dataEnum, string dataNumber) - { - var pushLogs = DbContext.push_log.Where(x=>x.data_number.StartsWith(dataNumber) && x.data_state != (int)SwapPushDataStateEnum.待推送).ToList(); - if (!pushLogs.Any()) - { - return; - } - PushLog pushLog = new PushLog(); - pushLog.data_id = dataId; - pushLog.data_type = (int)dataEnum; - pushLog.SetCreator(UserId); - pushLog.data_state = (int)SwapPushDataStateEnum.待推送; - pushLog.data_number = dataNumber; - pushLog.SetUpdator(UserId); - if (pushLog.id == 0) - { - var worker = new IdWorker(1, 1); - pushLog.id = worker.NextId(); - DbContext.push_log.Add(pushLog); - } - pushLog.odata_no = pushLog.id.ToString(); - DbContext.SaveChanges(); - } - public PushLog AddLog(long dataId, SwapPushDataEnum addDataEnum, SwapPushDataEnum upDataEnum, string dataNumber) - { - var pushLogs = DbContext.push_log.Where(x=>x.data_id==dataId).ToList(); - var dataType= (int)addDataEnum; - if (pushLogs.Count>0) - { - var addpushLog= pushLogs.FirstOrDefault(x=>x.data_type==(int)addDataEnum); - if (addpushLog!=null) - { - if (addpushLog.data_state == 0) - { - return addpushLog; - } - dataType= (int)upDataEnum; - } - var uppushLog = pushLogs.FirstOrDefault(x => x.data_state == 0 && x.data_type == (int)upDataEnum); - if (uppushLog!=null) - { - return uppushLog; - } - } - var pushLog=new PushLog(); - pushLog.data_id = dataId; - pushLog.data_type = dataType; - pushLog.SetCreator(UserId); - pushLog.data_state = (int)SwapPushDataStateEnum.待推送; - pushLog.data_number = dataNumber; - pushLog.SetUpdator(UserId); - if (pushLog.id == 0) - { - var worker = new IdWorker(1, 1); - pushLog.id = worker.NextId(); - DbContext.push_log.Add(pushLog); - } - pushLog.odata_no = pushLog.id.ToString(); - DbContext.SaveChanges(); - return pushLog; - } - - /// - /// 重置删除log - /// - /// - public void DeleteLog(string dataNumber) - { - var pushLogs = DbContext.push_log.Where(x=>x.data_number.StartsWith(dataNumber)&&x.data_state== (int)SwapPushDataStateEnum.待推送); - DbContext.push_log.RemoveRange(pushLogs); - DbContext.SaveChanges(); - } - public void DeleteLogWithUnwind(string dataNumber) - { - var pushLogs = DbContext.push_log.Where(x => x.data_number.StartsWith(dataNumber) && x.data_state == (int)SwapPushDataStateEnum.待推送&&x.data_type>=(int)SwapPushDataEnum.合约终止); - DbContext.push_log.RemoveRange(pushLogs); - DbContext.SaveChanges(); - } - /// - /// 保存kafka消费回执记录 - /// - /// - /// - /// - /// - /// - public PushLog SaveConsumerLog(string serial_no,string extNo, SwapPushDataEnum dataEnum, SwapPushDataStateEnum dataStateEnum,string dataReq,string dealResult) - { - if (string.IsNullOrEmpty(serial_no)) - { - return null; - } - var pushLog = GetLogBySerialNo(serial_no, (int)dataEnum); - if (pushLog==null) - { - pushLog = new PushLog(); - } - pushLog.data_type = (int)dataEnum; - pushLog.odata_no = serial_no; - pushLog.data_state = (int)dataStateEnum; - pushLog.data_req = dataReq; - pushLog.data_number = extNo; - pushLog.data_resp = dealResult; - pushLog.SetUpdator(UserId); - if (pushLog.id == 0) - { - var worker = new IdWorker(1, 1); - pushLog.id = worker.NextId(); - pushLog.SetCreator(UserId); - DbContext.push_log.Add(pushLog); - } - DbContext.SaveChanges(); - return pushLog; - } - - public PushLog GetLogBySerialNo(string serial_no,int dataEnum) - { - var pushLog = DbContext.push_log.FirstOrDefault(x=>x.odata_no== serial_no&&x.data_type==dataEnum); - return pushLog; - } - public void DeleteLog(long logId) - { - PushLog pushLog = DbContext.push_log.FirstOrDefault(x => x.id == logId); - if (pushLog == null) - { - return; - } - DbContext.push_log.Remove(pushLog); - DbContext.SaveChanges(); - } - public void DeleteLogs(List logIds) - { - var pushLogs = DbContext.push_log.Where(x => logIds.Contains(x.id)).ToList(); - if (pushLogs.Count() == 0) - { - return; - } - DbContext.push_log.RemoveRange(pushLogs); - DbContext.SaveChanges(); - } - public void UpdateLogReq(long logId,string req) - { - PushLog pushLog = DbContext.push_log.FirstOrDefault(x => x.id==logId); - if (pushLog == null) - { - return; - } - pushLog.data_req = req; - pushLog.data_state = (int)SwapPushDataStateEnum.推送中; - pushLog.SetUpdator(UserId); - DbContext.SaveChanges(); - } - public PushLog UpdateLogResp(long logId, string resp,int dataState) - { - PushLog pushLog = DbContext.push_log.FirstOrDefault(x => x.id == logId); - if (pushLog == null) - { - return null; - } - pushLog.data_resp = resp; - pushLog.data_state = dataState; - pushLog.SetUpdator(UserId); - DbContext.SaveChanges(); - return pushLog; - } - public List GetPushLogs(List dataEnums,List dataStates) - { - var predicate = PredicateBuilder.Create(x => dataEnums.Contains(x.data_type)); - if (dataStates!=null&& dataStates.Any()) - { - predicate = predicate.And(x=> dataStates.Contains(x.data_state)); - } - return GetPushLogs(predicate); - } - public List GetPushLogs(Expression> expression) - { - return DbContext.push_log.Where(expression).ToList(); - } - public SearchListResult SearchList(PushLogQueryRequest req) - { - var predicate = PredicateBuilder.Create(x => true); - if (!string.IsNullOrEmpty(req.data_number)) - { - predicate = predicate.And(x=>x.data_number.Contains(req.data_number)); - } - if (req.data_states!=null&& req.data_states.Count()>0) - { - predicate = predicate.And(x => req.data_states.Contains(x.data_state)); - } - if (req.data_types != null && req.data_types.Count() > 0) - { - predicate = predicate.And(x => req.data_types.Contains(x.data_type)); - } - if (req.OptDateStart.HasValue) - { - predicate = predicate.And(x => x.update_time>= req.OptDateStart); - } - if (req.OptDateEnd.HasValue) - { - req.OptDateEnd= req.OptDateEnd.Value.AddDays(1).AddSeconds(-1); - predicate = predicate.And(x => x.update_time <= req.OptDateEnd); - } - var query = DbContext.push_log.Where(predicate); - if (string.IsNullOrEmpty(req.sidx)) - { - req.sidx = "id"; - req.sord = "desc"; - } - return query.ToSearchList(req); - } - - public PushLog ReSetLog(long logId) - { - PushLog pushLog = DbContext.push_log.FirstOrDefault(x => x.id == logId); - if (pushLog == null) - { - return null; - } - pushLog.data_resp = null; - pushLog.data_req = null; - pushLog.data_state = (int)SwapPushDataStateEnum.待推送; - pushLog.SetUpdator(UserId); - DbContext.SaveChanges(); - return pushLog; - } - - public PushLog GetLogByDataId(long dataId) - { - return DbContext.push_log.FirstOrDefault(x => x.data_id == dataId); - } - - /// - /// 获取日终估值最新同步时间 - /// - /// - /// - public string GetLastSettmentTime(DateTime valuedate) - { - var nextDate = valuedate.AddDays(1); - var lastpushLog = DbContext.push_log.Where(x => x.data_type == (int)SwapPushDataEnum.日终估值获取 && x.data_state == (int)SwapPushDataStateEnum.接收处理成功 && x.create_time > valuedate&&x.create_time< nextDate).OrderByDescending(o => o.create_time).FirstOrDefault(); - return lastpushLog == null ? $"{valuedate:yyyy-MM-dd}数据未同步": lastpushLog.create_time.ToString("yyyy-MM-dd HH:mm:ss"); - } - } -} diff --git a/YLErpDAL/Modules/SwapModule/SwapConsumerService.cs b/YLErpDAL/Modules/SwapModule/SwapConsumerService.cs index aecf6690..a70591ce 100644 --- a/YLErpDAL/Modules/SwapModule/SwapConsumerService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapConsumerService.cs @@ -8,19 +8,9 @@ using Qdp.Foundation.Utilities; using YLErp.Abstract; using YLErp.BLL; using YLErp.BLL.Eod; -using YLErp.Commons; -using YLErp.DBModels; -using YLErp.DBModels.Enums; -using YLErp.Enums; using YLErp.Helpers; -using YLErp.Model; using YLErp.Model.HengTaiModel; -using YLErp.Models; -using YLErp.Modules.AppModule; -using YLErp.Modules.ClientModule; using YLErp.Modules.ExchangeTradeModule; -using YLErp.Modules.TradeModule; -using static YLErp.ConsGlobal; namespace YLErp.Modules.SwapModule { @@ -30,202 +20,15 @@ namespace YLErp.Modules.SwapModule static readonly IYcLogger logger = LogFactory.GetLogger(); private IKafkaProduce kafkaProduceHelper; - private string reqMarginInsert = string.Empty; public SwapConsumerService(OptUserInfo optUser) : base(optUser) { - reqMarginInsert = Environment.GetEnvironmentVariable("KafkaConfig_ReqMarginInsertTopic"); } public void SetKafKaProduce(IKafkaProduce kafkaProduce) { kafkaProduceHelper = kafkaProduce; } - /// - /// 4.8.1. 消费收益互换回执交易接口 - /// - /// - public void ConsumerTradeResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize>(msg); - var pushLogService = new PushLogService(UserInfo); - var serialNo = result.HEADER.SERIAL_NO; - var extNo = result.HEADER.EXT_NO; - var pushLog = pushLogService.GetLogBySerialNo(serialNo, (int)SwapPushDataEnum.收益互换交易回执); - var resultState = SwapPushDataStateEnum.接收处理成功; - if (pushLog != null && pushLog.data_state == (int)resultState) - { - return; - } - string dealResult = ""; - if (result.RECORD == null) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = "收益互换信息不能为空"; - } - else - { - if (string.IsNullOrEmpty(extNo) && result.RECORD.BASEINFO != null) - { - extNo = result.RECORD.BASEINFO.EXT_NO; - } - try - { - var trade = DbContext.trade.FirstOrDefault(x => x.TradeNumber == extNo); - if (trade != null) - { - var HTStatus = TryFormatInt(result.RECORD.BASEINFO.ORDSTATUS); - trade.HTStatus = HTStatus; - DbContext.SaveChanges(); - if (HTStatus != 7) - { - return; - } - DealUpdateConsumerTrade(result.RECORD, trade); - } - else - { - throw new Exception($"交易{extNo}不存在"); - } - - } - catch (Exception e) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = e.Message; - LogFactory.GetLogger("SwapConsumerService").Error("消费收益互换回执交易接口", e); - } - } - pushLogService.SaveConsumerLog(serialNo, extNo, SwapPushDataEnum.收益互换交易回执, resultState, msg, dealResult); - } - }); - } - /// - /// 4.8.2. 消费互换资产交易回执接口 - /// - /// - public void ConsumerTradePosiResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize>(msg); - var pushLogService = new PushLogService(UserInfo); - var serialNo = result.HEADER.SERIAL_NO; - var extNo = result.HEADER.EXT_NO; - var pushLog = pushLogService.GetLogBySerialNo(serialNo, (int)SwapPushDataEnum.互换资产交易回执); - var resultState = SwapPushDataStateEnum.接收处理成功; - string dealResult = ""; - if (pushLog != null && pushLog.data_state == (int)resultState) - { - return; - } - if (result.RECORD == null || result.RECORD.BASEINFO == null) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = "找不到合约编号"; - } - else - { - try - { - var account = result.RECORD.BASEINFO.SECU_INT; - var HTAccounts = DbContext.exchange_account.Where(x => !string.IsNullOrEmpty(x.AccountCode)).Select(s => s.AccountCode).Distinct().ToList(); - if (HTAccounts.Contains(account)) - { - PrepareExchangeTradeData(result.RECORD,"衡泰同步"); - return; - } - if (OtcAppConfigHelper.HTUpdate != 1) - { - return; - } - var tradeNumber = result.RECORD.BASEINFO.TRD_RELATED_NO; - var HTStatus = TryFormatInt(result.RECORD.BASEINFO.ORDSTATUS); - var trade = CheckTradeExist(tradeNumber); - // 衡泰状态不是成交确认或者 当前交易有平仓,不给修改,如日内平仓,或者dma部分平仓 - if (HTStatus != 7) - { - return; - } - if (pushLog == null && !CheckPositionNumber(extNo)) - { - if (long.TryParse(extNo, out long dataId))//平仓 - { - pushLog = pushLogService.GetLogByDataId(dataId); - if (pushLog != null)//我方平仓,不做操作 - { - extNo = pushLog.data_number; - } - } - else //衡泰平仓 - { - var posiGrossPrice = TryFormatDecimal(result.RECORD.TRADEINFO.ORDPRICE) / 100; - var orderDate = TryFormatDate(result.RECORD.BASEINFO.ORDDATE).Date; - dealResult = DealUnwindPosiEvent(posiGrossPrice, trade, orderDate); - } - } - else if (trade.UnWindDate == null) - { - PreparePosiData(result.RECORD, trade, extNo); - } - - } - catch (Exception e) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = e.Message; - LogFactory.GetLogger("SwapConsumerService").Error("消费互换资产交易回执接口", e); - } - } - new PushLogService(UserInfo).SaveConsumerLog(serialNo, extNo, SwapPushDataEnum.互换资产交易回执, resultState, msg, dealResult); - } - }); - } - - /// - /// 对冲交易回执接口 - /// - /// - public void ConsumerExchangeTradeResp(KafkaConsumerHelper _kafkaConsumer,string tradeSource) - { - _kafkaConsumer.Subscribe(msg => - { - var hedgingSource = OtcAppConfigHelper.HedgingSource == 2 || OtcAppConfigHelper.HedgingSource == 0; - if (hedgingSource) - { - return; - } - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize(msg); - if (result == null) - { - return; - } - try - { - var account = result.SECU_INT; - var HTAccounts = DbContext.exchange_account.Where(x => !string.IsNullOrEmpty(x.AccountCode)).Select(s => s.AccountCode).Distinct().ToList(); - if (HTAccounts.Contains(account)) - { - PrepareExchangeTradeData(result, tradeSource); - return; - } - } - catch (Exception e) - { - LogFactory.GetLogger("SwapConsumerService").Error("对冲交易回执接口", e); - } - - } - }); - } /// /// Trs对冲交易接口 /// @@ -268,681 +71,16 @@ namespace YLErp.Modules.SwapModule } }); } - /// - /// 4.8.3. 消费预付金交易回执接口 - /// - /// - public void ConsumerTradeMarginResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize>(msg); - var pushLogService = new PushLogService(UserInfo); - var serialNo = result.HEADER.SERIAL_NO; - var extNo = result.HEADER.EXT_NO; - var pushLog = pushLogService.GetLogBySerialNo(serialNo, (int)SwapPushDataEnum.预付金交易回执); - var resultState = SwapPushDataStateEnum.接收处理成功; - if (pushLog != null && pushLog.data_state == (int)resultState) - { - return; - } - string dealResult = ""; - if (result.RECORD == null || result.RECORD.RESERVE == null) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = "找不到合约编号"; - } - else - { - try - { - if (OtcAppConfigHelper.HTUpdate != 1) - { - return; - } - //处理回执 - var trade = CheckTradeExist(result.RECORD.RESERVE.CONTRACT_CODE); - var HTStatus = TryFormatInt(result.RECORD.BASEINFO.ORDSTATUS); - // 衡泰状态不是成交确认或者 当前交易有平仓,不给修改,如日内平仓,或者dma部分平仓 - if (HTStatus != 7) - { - return; - } - if (pushLog == null && !CheckPositionNumber(extNo))//可能平仓 - { - if (long.TryParse(extNo, out long dataId))//平仓 - { - pushLog = pushLogService.GetLogByDataId(dataId); - if (pushLog != null)// 我方平仓 - { - extNo = pushLog.data_number; - } - } - else //衡泰平仓 - { - PrepareUnwindMarginData(result.RECORD, trade); - } - } - else if (trade.UnWindDate == null) - { - PrepareMarginData(result.RECORD, trade, extNo); - } - } - catch (Exception e) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = e.Message; - LogFactory.GetLogger("SwapConsumerService").Error("消费预付金交易回执接口", e); - } - } - new PushLogService(UserInfo).SaveConsumerLog(serialNo, extNo, SwapPushDataEnum.预付金交易回执, resultState, msg, dealResult); - } - }); - } - /// - /// 4.8.4. 消费合约终止交易回执接口 - /// - /// - public void ConsumerTradeUnwindResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize>(msg); - var pushLogService = new PushLogService(UserInfo); - var serialNo = result.SERIAL_NO; - var pushLog = pushLogService.GetLogBySerialNo(serialNo, (int)SwapPushDataEnum.合约终止交易回执); - var resultState = SwapPushDataStateEnum.接收处理成功; - if (pushLog != null && pushLog.data_state == (int)resultState) - { - return; - } - string dealResult = ""; - string extNo = result.EXT_NO; - try - { - //处理回执 - if (result.RECORD.ACCTSWAP_TERMINATE==null) - { - return; - } - extNo = result.RECORD.ACCTSWAP_TERMINATE.CONTRACT_CODE; - var trade = CheckTradeExist(extNo); - var HTStatus = TryFormatInt(result.RECORD.ACCTSWAP_TERMINATE.ORDSTATUS); - if (HTStatus!=7) - { - return; - } - PrepareUnwindData(result.RECORD, trade); - } - catch (Exception e) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = e.Message; - LogFactory.GetLogger("SwapConsumerService").Error("消费合约终止交易回执接口", e); - } - pushLogService.SaveConsumerLog(serialNo, result.EXT_NO, SwapPushDataEnum.合约终止交易回执, resultState, msg, dealResult); - } - }); - } - /// - /// 4.8.6. 消费收益互换资金流水数据回执接口 - /// - /// - public void ConsumerTradeCashResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize>(msg); - var pushLogService = new PushLogService(UserInfo); - var serialNo = result.HEADER.SERIAL_NO; - var pushLog = pushLogService.GetLogBySerialNo(serialNo, (int)SwapPushDataEnum.收益互换资金流水数据回执); - var resultState = SwapPushDataStateEnum.接收处理成功; - if (pushLog != null && pushLog.data_state == (int)resultState) - { - return; - } - string dealResult = ""; - List clientIds = new List(); - try - { - var extNos = result.RECORD.ACCTSWAP_CASH_LIST.Where(x => !string.IsNullOrEmpty(x.EXT_NO)).Select(s => s.EXT_NO).ToList(); - var trades = CheckTradeExistByList(extNos); - //处理回执 - clientIds = PrepareTradeCashData(result.RECORD, trades); - } - catch (Exception e) - { - resultState = SwapPushDataStateEnum.接收处理失败; - dealResult = e.Message; - LogFactory.GetLogger("SwapConsumerService").Error("消费收益互换资金流水数据回执接口", e); - } - pushLogService.SaveConsumerLog(serialNo, "", SwapPushDataEnum.收益互换资金流水数据回执, resultState, msg, dealResult); - //if (clientIds.Count>0) - //{ - // PushClientCash(clientIds, onRspAccountCapitalTopicTopic); - //} - } - }); - } - public bool CheckPositionNumber(string extNo) - { - return DbContext.swap_position.Any(x => x.PosiNumber == extNo); - } - /// - /// 收盘 收益互换回执查衡泰库返回 - /// - /// - public void ConsumerIRSDb(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize(msg); - var respMappers = GetHTDbRespMapperData(result); - } - }); - } - /// - /// 客户资金推送 - /// - /// - public void ConsumerCashNotice(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize(msg); - if (result!=null) - { - PushCashToHT(result.cashId, null); - } - } - }); - } - /// - /// 对返回数据库数据进行映射 - /// - /// - /// - /// - private List GetHTDbRespMapperData(IRDbRespBase iRDbResp) where T : new() - { - List values = new List(); - string[] fields = iRDbResp.Header.Split(','); - var records = iRDbResp.Records; - for (int j = 0; j < records.Count; j++) - { - string[] recordFields = records[j].Split(','); - T iRSDb = Activator.CreateInstance(); - for (int i = 0; i < fields.Length; i++) - { - string fieldName = fields[i]; - string fieldValue = recordFields[i]; - typeof(T).GetProperty(fieldName)?.SetValue(iRSDb, fieldValue); - values.Add(iRSDb); - } - } - return values; - } - #region 交易回执相关私有方法 - /// - /// 修改交易 - /// - /// - private void DealUpdateConsumerTrade(SwapTradeReq swapTradeReq, trade trade) - { - var HTStatus = trade.HTStatus; - if (OtcAppConfigHelper.HTUpdate != 1) - { - return; - } - //0新建、-4交易执行中、-3风险预审中、7成交确认、9交易撤单、1审批中、5审批通过、4审批拒绝、10交易终止 - if (HTStatus == 9) - { - new SwapTradeService(UserInfo).deleteTrade(trade.id, false); - return; - } - // 衡泰状态不是成交确认或者 当前交易有平仓,不给修改,如日内平仓,或者dma部分平仓 - if (trade.UnWindDate!=null) - { - throw new Exception($"交易{trade.TradeNumber}已经产生平仓信息,不支持再修改"); - } - ValidateTrade(swapTradeReq, trade); - trade.trade_extend = DbContext.trade_extend.FirstOrDefault(x => x.TradeId == trade.id); - PrepareTradeData(swapTradeReq, trade, false); - if (trade.TradeStatus == ConsTrade.确认成交) - { - AfterUpdateDeal(trade, (int)SwapEventTypeEnum.修改交易, "接口修改交易"); - } - } - /// - /// 互换交易数据准备 - /// - /// - /// - private void PrepareTradeData(SwapTradeReq swapTradeReq, trade trade, bool isAdd) - { - var tradeDirection = swapTradeReq.BASEINFO.TRDTYPE == "151" ? (int)SwapDirectionEnum.收取 : (int)SwapDirectionEnum.支付; - var positions = DbContext.swap_position.Where(x => x.SwapTradeId == trade.id && x.IsInitial && !x.Invalid).ToList(); - positions.ForEach(x => - { - x.PosiStartDate = trade.StartDate.Value; - x.PosiMatuirityDate = trade.ExerciseDate.Value; - }); - var interestList = positions.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)).ToList(); - var posiList = positions.Where(x => x.InterestDirection == 0).ToList(); - interestList.ForEach(x => - { - x.PosiStartDate = trade.StartDate.Value; - x.PosiMatuirityDate = trade.ExerciseDate.Value; - }); - var floatRateInterest = positions.FirstOrDefault(x => !string.IsNullOrEmpty(x.FloatRateUnderlyingCode)); - swap_position interest; - if (interestList.Any()) - { - interest = interestList[0]; - } - else - { - throw new Exception($"交易{trade.TradeNumber}找不到固定端信息"); - } - var rate = swapTradeReq.ACCTSWAP.REGULAR_INFO.SPREAD; - - if (!string.IsNullOrEmpty(swapTradeReq.ACCTSWAP.REGULAR_INFO.RATE)) - { - var rated= TryFormatDecimal(rate); - if (rated!=0) - { - rate = swapTradeReq.ACCTSWAP.REGULAR_INFO.RATE; - } - } - interest.InterestRateDefault = TryFormatDecimal(rate); - interest.InterestDirection = tradeDirection; - if (!string.IsNullOrEmpty(swapTradeReq.ACCTSWAP.IR_I_CODE)) - { - interest.FloatRateUnderlyingCode = swapTradeReq.ACCTSWAP.IR_I_CODE; - interest.IsAnnualized = true; - } - else - { - interest.IsAnnualized = interest.InterestRateDefault != 0; - } - interest.InterestType = swapTradeReq.ACCTSWAP.FLOAT_METHOD == "0" ? (int)InterestTypeEnum.单利 : (int)InterestTypeEnum.复利; - if (trade.trade_extend != null) - { - var calcMode = GetInterestRule(swapTradeReq.ACCTSWAP.FIXED_INTEREST_RULE); - TradeExtendJson tradeExtendJson = trade.trade_extend.ExtendObj; - tradeExtendJson.InterestCalcMode = calcMode; - trade.trade_extend.ExtendJson = JsonHelper.Serialize(tradeExtendJson); - if (isAdd) - { - DbContext.trade_extend.Add(trade.trade_extend); - } - } - - var rateDate = TryFormatDate(swapTradeReq.ACCTSWAP.REGULAR_INFO.INTEREST_END_DAY); - - IntervalModel intervalModel = new IntervalModel() - { - Date = rateDate, - Rate = interest.InterestRateDefault, - Settlement = 0 - }; - List intervalModels = new List - { - intervalModel - }; - interest.InterestSwapInterval = JsonHelper.Serialize(intervalModels); - - if (interest.id == 0) - { - DbContext.swap_position.Add(interest); - } - DbContext.SaveChanges(); - var observation = DbContext.trade_obervation.FirstOrDefault(x => x.PositionId == interest.id); - if (observation == null) - { - observation = new TradeObervation() - { - PositionId = interest.id, - IsDeductPrincipal = true, - ObservationAlignEnd = true, - ObservationNum = 1, - ObservationUnit = "D", - ObservationHolidayType = "Following", - ObservationStart = trade.TradeDate - }; - } - observation.ObservationInterval = interest.InterestSwapInterval; - if (observation.id == 0) - { - DbContext.trade_obervation.Add(observation); - } - DbContext.SaveChanges(); - } - /// - /// 校验交易信息 - /// - /// - /// - /// - private Client ValidateTrade(SwapTradeReq swapTradeReq, trade td) - { - //CheckTradeStatus(td); - if (string.IsNullOrEmpty(swapTradeReq.BASEINFO.PARTY_NAME)) - { - throw new ServiceException($"参数PARTY_NAME为空"); - } - Client client = null; - string partyNo = string.Empty; - client = DataCacheProvider.GetClientDataSource().AsQueryable().FirstOrDefault(x => x.Name == swapTradeReq.BASEINFO.PARTY_NAME); - partyNo = swapTradeReq.BASEINFO.PARTY_NAME; - if (client == null) - { - throw new ServiceException($"交易对手方{partyNo}信息不存在"); - } - td.ClientId = client.id; - td.ClientName = client.Name; - td.ClientNumber = client.Number; - var orddDate = TryFormatDate(swapTradeReq.BASEINFO.ORDDATE); - var endDate = TryFormatDate(swapTradeReq.ACCTSWAP.END_DAY); - var stockNotional = TryFormatDouble(swapTradeReq.ACCTSWAP.PRINCIPAL); - td.TradeDate = orddDate.Date; - td.ExerciseDate = endDate.Date; - td.OriginalStockEqvNotional = stockNotional; - td.StockEqvNotional = td.OriginalStockEqvNotional.Value; - return client; - } - /// - /// 创建交易 - /// - /// - private trade CreateTrade(SwapTradeReq swapTradeReq) - { - TradeExtendJson tradeExtendJson = new TradeExtendJson() - { - FlowBookMode = (int)FlowBookModeEnum.重置, - FloatingPnlAnnualized = false, - NeedOpenFee = false, - OpenFeeType = 0, - Direction = 2, - }; - var r = new trade() - { - TradeType = "收益互换", - BuySell = "卖出", - UnderlyingInstrumentType = "Stock", - StartDate = valuedateBLL.ValueDate, - TradeDate = valuedateBLL.ValueDate, - TraderId = UserId, - TraderName = UserName, - MarginTemplateName = "系统默认", - OpponentRole = "乙方", - OriginalStockEqvNotional = 0, - StructureType = "普通债券类收益互换", - InitialMargin = 0, - TradeStatus = "确认成交" - }; - r.ExerciseDate = r.TradeDate.Value.AddDays(7); - r.trade_extend = new trade_extend() - { - ExtendJson = JsonHelper.Serialize(tradeExtendJson) - }; - //山证衡泰互换簿记 - - var client = DataCacheProvider.GetClientDataSource().AsQueryable().FirstOrDefault(x => x.Name == swapTradeReq.BASEINFO.PARTY_NAME); - if (client == null) - { - throw new ServiceException($"找不到名称为{swapTradeReq.BASEINFO.PARTY_NAME}的交易对手方"); - } - var etradeRule = new EtradingRuleService(UserInfo).GetEtradingRuleAccont(client.BoundSide, client.Number); - if (etradeRule == null || string.IsNullOrEmpty(etradeRule.AssetAccount_0)) - { - throw new ServiceException($"{client.Number}未设置TRS对客簿记账户"); - } - string clearingAgency = etradeRule.ClearingAgency_0; - var asset = DataCacheProvider.GetAssetUnitDataSource().AsQueryable(x => x.Name == etradeRule.AssetAccount_0).FirstOrDefault();//取对客簿记账户 - if (asset == null) - { - throw new ServiceException($"找不到名为{etradeRule.AssetAccount_0}的簿记账户信息"); - } - if (asset.TraderIdsInt.Count == 0) - { - throw new ServiceException($"{etradeRule.AssetAccount_0}的簿记账户未设置交易员"); - } - r.AssetBookName = asset.Name; - r.AssetId = asset.id; - r.TraderId = asset.TraderIdsInt.FirstOrDefault(); - r.TraderName = asset.TraderNamesList.FirstOrDefault(); - r.TradeOldStatus = ConsTrade.新增待确认; - r.OptId = UserId; - r.OptName = UserName; - r.OptDate = OptDate; - r.CreateDate = OptDate; - r.ValidState = ConsGlobal.Valid; - r.TradeSource = "系统交易"; - r.TradeNumber = swapTradeReq.BASEINFO.EXT_NO; - return r; - } - private trade CheckTradeExist(string extNo) - { - var trade = DbContext.trade.FirstOrDefault(x => x.TradeNumber == extNo); - if (trade == null) - { - Thread.Sleep(5000); - trade = DbContext.trade.FirstOrDefault(x => x.TradeNumber == extNo); - if (trade == null) - { - throw new ServiceException($"不存在交易编号为{extNo}的交易,无法修改"); - } - } - return trade; - } - - /// - /// 批量校验交易是否存在 - /// - /// - /// - /// - private List CheckTradeExistByList(List extNos) - { - List tradeList = new List(); - var trades = DbContext.trade.Where(x => extNos.Contains(x.TradeNumber)).AsNoTracking(); - foreach (var extNo in extNos) - { - var trade = trades.FirstOrDefault(); - //if (trade==null) - //{ - // throw new ServiceException($"交易编号为{extNo}的交易不存在"); - //} - if (trade != null) - { - tradeList.Add(trade); - } - } - return tradeList; - } - /// - /// 校验交易状态 - /// - /// - /// - private void CheckTradeStatus(trade trade) - { - if (trade.UnWindDate.HasValue) - { - throw new ServiceException($"交易已经产生平仓或收益结算,无法修改"); - } - } - /// - /// 保存交易后需要做的处理 - /// - /// - /// - /// - private void AfterUpdateDeal(trade td, int eventType, string msg) - { - SwapTradeService swapTradeService = new SwapTradeService(this); - swapTradeService.ClearSwapPositions(td); - DbContext.SaveChanges(); - swapTradeService.InitialPosition(td, true); - swapTradeService.AddPositionEvent(td,"衡泰同步"); - DbContext.SaveChanges(); - //new SwapEodPositionService(this).InitSaveEodSwapPosition(td); - var swapEventService = new SwapEventService(this); - swapEventService.AddSwapEventDate(td.TradeDate.Value, td.id, eventType, "", 0, true, msg + "确认"); - swapEventService.AddSwapEventDate(td.TradeDate.Value, td.id, (int)SwapEventTypeEnum.确认交易, "", 0, true, msg + "确认"); - } - - private void DeleteSwapEvent(int tradeId) - { - new SwapEventService(this).DeleteEvent(tradeId); - } - /// - /// 添加交易元数据 - /// - private void AddTradeMeta(bool saveChanges, int tradeId, string metaKey, string metaValue) - { - DbContext.TradeMeta.Add(new TradeMeta - { - TradeId = tradeId, - MetaKey = metaKey, - MetaValue = metaValue, - CreateTime = DateTime.Now - }); - if (saveChanges) - { - DbContext.SaveChanges(); - } - } - #endregion - - #region 互换资产回执相关私有方法 - private void PreparePosiData(SwapPosiReq swapPosiReq, trade td, string extNo) - { - var underlying = CheckUnderlying(swapPosiReq.TRADEINFO.I_CODE, swapPosiReq.TRADEINFO.MARKET); - var positions = DbContext.swap_position.Where(x => x.SwapTradeId == td.id && x.PosiDirection > 0 && !x.Invalid).ToList(); - var position = positions.Where(x => x.PosiNumber == extNo && x.IsInitial).FirstOrDefault(); - var realPosition = positions.Where(x => x.PosiNumber == extNo && !x.IsInitial).FirstOrDefault(); - if (position == null) - { - throw new Exception($"交易{td.TradeNumber}找不到持仓信息"); - } - decimal price = Convert.ToDecimal(underlying.Price ?? 100); - bool init = swapPosiReq.TRADEINFO.OCFLAG == "0"; - if (swapPosiReq.TRADEINFO.OCFLAG == "0") - { - position.UnderlyingCode= underlying.UnderlyingCode; - position.UnderlyingInstrumentType = underlying.UnderlyingInstrumentType; - position.PositionType = swapPosiReq.BASEINFO.TRDTYPE == "10" ? (int)PositionTypeFlag.Long : (int)PositionTypeFlag.Short; - position.PosiQuantity = TryFormatDecimal(swapPosiReq.TRADEINFO.PARVALUE); - position.PosiGrossPrice = TryFormatDecimal(swapPosiReq.TRADEINFO.ORDPRICE) / price; - int tradeSide = position.PositionType == (int)EnumDirection.Long ? 1 : -1; - position.PosiNetPrice = position.PosiQuantity == 0 ? position.PosiGrossPrice : position.PosiGrossPrice + position.PosiTradingFee * tradeSide / position.PosiQuantity; - td.OriginalNotional = Convert.ToDouble(position.PosiQuantity); - td.Notional = td.OriginalNotional ?? 0; - td.UnderlyingCode = underlying.UnderlyingCode; - td.UnderlyingAssetName = underlying.UnderlyingInstrumentTypeCn; - td.UnderlyingName = underlying.UnderlyingName; - td.SpotPrice = Convert.ToDouble(position.PosiNetPrice); - td.TradePrice = Convert.ToDouble(position.PosiTradingFee); - td.UnderlyingInstrumentType = underlying.UnderlyingInstrumentType; - position.PosiNotionalValue = position.PosiQuantity * position.ContractSize; - if (realPosition!=null) - { - realPosition.UnderlyingCode = underlying.UnderlyingCode; - realPosition.UnderlyingInstrumentType= underlying.UnderlyingInstrumentType; - realPosition.PositionType = position.PositionType; - realPosition.PosiQuantity= position.PosiQuantity; - realPosition.PosiGrossPrice = position.PosiGrossPrice; - realPosition.PosiNetPrice = position.PosiNetPrice; - realPosition.PosiNotionalValue = position.PosiNotionalValue; - } - - var flowEvent = DbContext.swap_flow_event.FirstOrDefault(x => x.PositionId == position.id &&x.EventType==(int)SwapFlowEventTypeEnum.开仓 && x.DataState == (int)SwapFlowDateStateEnum.完成); - if (flowEvent!=null) - { - flowEvent.PositionQty = position.PosiQuantity; - flowEvent.UnderlyingCode = position.UnderlyingCode; - flowEvent.UnderlyingInstrumentType= position.UnderlyingInstrumentType; - flowEvent.PositionType= position.PositionType; - flowEvent.Quantity= position.PosiQuantity; - flowEvent.TradingAmount= position.PosiNotionalValue; - } - DbContext.SaveChanges(); - } - } - - /// - /// 修改衡泰平仓明细价格 - /// - /// - /// - /// - private string DealUnwindPosiEvent(decimal price,trade td,DateTime valueDate) - { - var posi = DbContext.swap_position.Where(x=>!x.Invalid&&x.IsInitial&&x.PosiDirection>0).FirstOrDefault(); - if (posi==null) - { - throw new Exception("找不到资产端信息"); - } - var flowEvent = GetSwapFlowEvent(posi.id,valueDate); - if (flowEvent==null) - { - throw new Exception("找不到资产端平仓事件明细信息"); - } - flowEvent.TradingAmountAvg = price; - int tradeSide = posi.PositionType == (int)EnumDirection.Long ? 1 : -1; - flowEvent.TradingAmountFeeAvg = flowEvent.Quantity == 0 ? flowEvent.TradingAmountAvg : flowEvent.TradingAmountAvg + flowEvent.TradingFeePending * tradeSide / flowEvent.Quantity; - flowEvent.TradingAmountNetFeeAvg = flowEvent.Quantity == 0 ? flowEvent.TradingAmountNetAvg : flowEvent.TradingAmountNetAvg + flowEvent.TradingFeePending * tradeSide / flowEvent.Quantity; - DbContext.SaveChanges(); - return ""; - } - /// - /// 获取平仓明细 - /// - /// - /// - /// - /// - /// - private swap_flow_event GetSwapFlowEvent(long posiId,DateTime valueDate,int attempts=0) - { - var flowEvent = DbContext.swap_flow_event.FirstOrDefault(x=>x.PositionId== posiId&&x.EventDate==valueDate&&x.EventReason== "接口合约终止交易"&&x.DataState==(int)SwapFlowDateStateEnum.完成); - if (flowEvent==null) - { - attempts++; - if (attempts>10) - { - return null; - } - Thread.Sleep(1000* attempts); - return GetSwapFlowEvent(posiId, valueDate, attempts); - } - else - { - return flowEvent; - } - } /// /// 接入对冲标的 /// /// - private void PrepareExchangeTradeData(SwapPosiReq swapPosiReq,string tradeSource) + private void PrepareExchangeTradeData(SwapPosiReq swapPosiReq, string tradeSource) { var underlying = CheckUnderlying(swapPosiReq.TRADEINFO.I_CODE, swapPosiReq.TRADEINFO.MARKET); var orddDate = TryFormatDate(swapPosiReq.BASEINFO.ORDDATE); @@ -977,7 +115,7 @@ namespace YLErp.Modules.SwapModule /// 接入对冲标的 /// /// - private void PrepareExchangeTradeData(SwapAsset swapPosiReq,string tradeSource) + private void PrepareExchangeTradeData(SwapAsset swapPosiReq, string tradeSource) { var underlying = CheckUnderlying(swapPosiReq.I_CODE, swapPosiReq.MARKET); var orddDate = TryFormatDate(swapPosiReq.ORD_DATE); @@ -1007,308 +145,6 @@ namespace YLErp.Modules.SwapModule service.Save(req, tradeSource); } - #endregion - #region 预付金交易回执相关私有方法 - private void PrepareMarginData(SwapMarginReq swapMarginReq, trade td, string extNo) - { - var positions = DbContext.swap_position.Where(x => x.SwapTradeId == td.id && x.PosiNumber == extNo).ToList(); - var position = positions.FirstOrDefault(x => x.IsInitial); - var realPosition = positions.FirstOrDefault(x => !x.IsInitial); - if (position == null) - { - throw new Exception($"找不到持仓编码{extNo}的信息"); - } - var marginDirection = swapMarginReq.BASEINFO.TRDTYPE == "128" ? (int)SwapDirectionEnum.收取 : (int)SwapDirectionEnum.支付; - position.InterestDirection = marginDirection; - position.InterestPrincipalFix = TryFormatDecimal(swapMarginReq.TRADEINFO.PARVALUE); - position.InterestRateDefault = TryFormatDecimal(swapMarginReq.RESERVE.RATE); - position.IsAnnualized = position.InterestRateDefault != 0; - position.Currency = swapMarginReq.RESERVE.CURRENCY; - IntervalModel intervalModel = new IntervalModel() - { - Date = td.ExerciseDate.Value, - Rate = position.InterestRateDefault, - Settlement = 0 - }; - List intervalModels = new List - { - intervalModel - }; - var marginDateStr = swapMarginReq.BASEINFO.ORDDATE; - if (!string.IsNullOrEmpty(swapMarginReq.BASEINFO.SETDATE)) - { - marginDateStr = swapMarginReq.BASEINFO.SETDATE; - } - var marginDate = TryFormatDate(marginDateStr); - position.HappenDate=marginDate; - position.InterestSwapInterval = JsonHelper.Serialize(intervalModels); - var observation = DbContext.trade_obervation.FirstOrDefault(x => x.PositionId == position.id); - if (observation == null) - { - observation = new TradeObervation() - { - PositionId = position.id, - IsDeductPrincipal = true, - ObservationAlignEnd = true, - ObservationNum = 1, - ObservationUnit = "D", - ObservationHolidayType = "Following", - ObservationStart = td.TradeDate - }; - } - observation.ObservationInterval = position.InterestSwapInterval; - - if (observation.id == 0) - { - DbContext.trade_obervation.Add(observation); - } - if (realPosition!=null) - { - realPosition.InterestDirection = position.InterestDirection; - realPosition.InterestPrincipalFix = position.InterestPrincipalFix; - realPosition.InterestRateDefault = position.InterestRateDefault; - realPosition.InterestSwapInterval = position.InterestSwapInterval; - realPosition.HappenDate = position.HappenDate; - realPosition.IsAnnualized = position.IsAnnualized; - realPosition.Currency = realPosition.Currency; - } - var flowEvent = DbContext.swap_flow_event.FirstOrDefault(x => x.PositionId == position.id && x.EventType == (int)SwapFlowEventTypeEnum.开仓&&x.DataState==(int)SwapFlowDateStateEnum.完成); - if (flowEvent != null) - { - flowEvent.InterestDirection = position.InterestDirection; - flowEvent.InterestPrincipal = position.InterestPrincipalFix; - flowEvent.InterestRate = position.InterestRateDefault; - flowEvent.InterestSwapInterval = position.InterestSwapInterval; - } - DbContext.SaveChanges(); - // AfterUpdateDeal(td, (int)SwapEventTypeEnum.修改交易, $"接口预付金{msg}交易", true); - AddMarginCash(position, td); - } - private void PrepareUnwindMarginData(SwapMarginReq swapMarginReq, trade td) - { - var posi = DbContext.swap_position.Where(x => !x.Invalid && x.IsInitial && ConsTrade.InterestMarginModels.Contains(x.InterestMode)).FirstOrDefault(); - if (posi == null) - { - throw new Exception($"{td.TradeNumber}找不到持仓信息"); - } - var marginDate = TryFormatDate(swapMarginReq.BASEINFO.ORDDATE); - var flowEvent = GetSwapFlowEvent(posi.id, marginDate); - if (flowEvent == null) - { - throw new Exception($"{posi.PosiNumber}找不到平仓事件"); - } - var swapEvent = DbContext.swap_event.Where(x=>x.id==flowEvent.EventId).FirstOrDefault(); - if (swapEvent==null|| string.IsNullOrEmpty(swapEvent.EventData)) - { - throw new Exception($"{td.TradeNumber}找不到平仓事件"); - } - swapEvent.unwindData = JsonConvert.DeserializeObject(swapEvent.EventData); - decimal unwindMarginMoney = 0; - unwindMarginMoney = TryFormatDecimal(swapMarginReq.TRADEINFO.PARVALUE); - var interestAmount = TryFormatDecimal(swapMarginReq.TRADEINFO.INTEREST_AMOUNT); - var currentMarginMoney = posi.InterestPrincipalFix; - var origamount = currentMarginMoney * swapEvent.unwindData.ClosePercent; - var difMarginMoney = currentMarginMoney- (unwindMarginMoney> origamount? unwindMarginMoney: origamount); - posi.InterestPrincipalFix = difMarginMoney; - flowEvent.InterestPrincipal = unwindMarginMoney; - flowEvent.TdInterestAmount = interestAmount; - flowEvent.InterestAmount = interestAmount; - flowEvent.InterestClosePnL = interestAmount; - DbContext.SaveChanges(); - UpdateUnwindMarginCash(posi, td, -unwindMarginMoney, marginDate, ClientCashInCashOut.系统操作_应付预付金); - new SwapTradeBaseService(this).AddClientCashInCashOut(td, Convert.ToDouble(-interestAmount), ClientCashInCashOut.系统操作_预付金返息, marginDate); - } - /// - /// 添加预付金资金记录 - /// - /// - /// - private void AddMarginCash(swap_position marginPosition, trade td) - { - var cashService = new ClientCashInCashOutService(this); - var marginAmount = marginPosition.InterestPrincipalFix * (marginPosition.InterestDirection == 1 ? -1 : 1); - cashService.SaveSwapTradeClientCash(td, Convert.ToDouble(marginAmount), marginPosition.HappenDate.HasValue ? marginPosition.HappenDate.Value : td.TradeDate.Value, marginPosition.id, ClientCashInCashOut.系统操作_应付预付金); - } - /// - /// 修改预付金返息记录 - /// - /// - /// - /// - /// - private void UpdateUnwindMarginCash(swap_position marginPosition, trade td, decimal marginAmount, DateTime marginDate,string actionName) - { - var cashService = new ClientCashInCashOutService(this); - cashService.SaveSwapTradeClientCash(td, Convert.ToDouble(marginAmount), marginDate, marginPosition.id, actionName); - } - #endregion - #region 合约终止回执相关私有方法 - private void PrepareUnwindData(SwapUnwindReq swapUnwindReq, trade td) - { - var eventIdStr = swapUnwindReq.ACCTSWAP_TERMINATE.EXT_NO; - bool allClose = swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_TYPE == "1"; - var closeQty = TryFormatDecimal(swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_COUNT); - var unwindDate = TryFormatDate(swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_DAY).Date; - var payDate = TryFormatDate(swapUnwindReq.ACCTSWAP_TERMINATE.PAY_DAY).Date; - var markClosePnl = TryFormatDecimal(swapUnwindReq.ACCTSWAP_TERMINATE.ZCD_AMOUNT); - var interestAmount= TryFormatDecimal(swapUnwindReq.ACCTSWAP_TERMINATE.GDD_AMOUNT); - var tradeinfFee = TryFormatDecimal(swapUnwindReq.ACCTSWAP_TERMINATE.ASSET_FEE); - var fixFee = TryFormatDecimal(swapUnwindReq.ACCTSWAP_TERMINATE.FIX_FEE); - interestAmount -= fixFee; - markClosePnl += tradeinfFee; - swap_event swapEvent; - if (!long.TryParse(eventIdStr, out long eventId))//不识别,为衡泰新增的平仓信息 - { - swapEvent = null; - } - else - { - swapEvent = DbContext.swap_event.FirstOrDefault(x => x.id == eventId); - } - // 先不支持衡泰修改平仓信息 - if (swapEvent == null&& OtcAppConfigHelper.HTUpdate == 1&&td.TradeStatus!= ConsTrade.已平仓) - { - new SwapDealService(this).AutoSwapUnwindFromConsumer(td, unwindDate, payDate, markClosePnl, tradeinfFee, interestAmount, fixFee, closeQty, allClose); - } - } - #endregion - #region 互换资金流水回执相关私有方法 - private List PrepareTradeCashData(SwapCashReq swapCashReq, List trades) - { - var tradenumbers = trades.Select(s => s.TradeNumber).ToList(); - List clientIds = new List(); - foreach (var cashItem in swapCashReq.ACCTSWAP_CASH_LIST) - { - var money = cashItem.CASH_AMOUNT; - var backCard = cashItem.BANK_ACC_CODE; - var bankCardInfo = new ClientBankCardService(UserInfo).GetBankCardByBankCode(backCard); - if (bankCardInfo == null) - { - throw new ServiceException("根据银行卡信息找不到对应客户"); - } - var trade = trades.FirstOrDefault(x => x.TradeNumber == cashItem.EXT_NO); - var client = DataCacheProvider.GetClientDataSource().GetData(bankCardInfo.ClientId ?? 0); - var cash = new ClientCashInCashOut(); - cash.ClientId = bankCardInfo.ClientId; - cash.ClientName = client?.Name; - cash.ClientNumber = client?.Number; - cash.Direction = money > 0 ? "入金" : "出金"; - cash.Money = Math.Abs(money); - cash.TradeId = trade?.id; - cash.TradeNumber = trade?.TradeNumber; - cash.HappenDate = TryFormatDate(cashItem.SETDATE_REAL).Date; - cash.OptDate = TryFormatDate(cashItem.SETDATE); - cash.CurrencyCode = "CNY"; - cash.Number = UniqueTimeId.GetStr(); - cash.State = "未确认"; - cash.SetOpt(UserInfo); - cash.Comments = "互换资金流水回执"; - cash.OpenBankCard = backCard; - cash.OpenBankId = bankCardInfo?.id; - DbContext.ClientCashInCashOut.Add(cash); - if (client?.SwapTradeType == 1) - { - clientIds.Add(cash.ClientId ?? 0); - } - } - DbContext.SaveChanges(); - return clientIds.Distinct().ToList(); - } - - /// - /// 推送客户资金信息到客户端 - /// - /// - /// - private void PushClientCash(List clientIds, string onRspAccountCapitalTopicTopic) - { - try - { - var clientSettles = new RealTimeClientBanlanceService(new OptUserInfo(0, "实时客户资金服务", OptUserFrom.Service)).GetBanlances(clientIds, valuedateBLL.ValueDate); - foreach (var cb in clientSettles) - { - Result result = new Result(); - try - { - var obj = new ClientBalanceForTrsResponse - { - TotalAmountTotal = cb.RoundedTotalAmountTotal, - AvailableAmount = Math.Round(cb.AvailableAmount, 2), - PositionPv = cb.RoundedPositionPv, - PositionPnl = cb.RoundedPositionPnl, - DaliyPnl = Math.Round(cb.DaliyPnl, 2), - ClientId = cb.ClientId, - ClientType = cb.ClientType, - Credit = cb.TotalCredit - }; - result.success = true; - result.obj = obj; - } - catch (Exception ex) - { - result.msg = ex.Message; - result.success = false; - } - kafkaProduceHelper.Produce(onRspAccountCapitalTopicTopic, JsonConvert.SerializeObject(result)); - } - } - catch (Exception ex) - { - } - } - #endregion - - #region 出入金相关私有方法 - public void PushCashToHT(int cashId, PushLog pushLog) - { - //var cash= DbContext.ClientCashInCashOut.FirstOrDefault(x=>x.id==cashId); - // if (cash==null) - // { - // return; - // } - // var req = new RequestBase(); - // var pushService = new PushLogService(UserInfo); - // var enumType = cash.Direction=="出金"? SwapPushDataEnum.客户出金新增: SwapPushDataEnum.客户入金新增; - // if (pushLog==null) - // { - // pushLog = pushService.AddLog(cashId, enumType, cash.Number); - // } - // req.RECORD = PrepareTradeMarginReq(cash); - // if (req.RECORD == null) - // { - // return; - // } - // req.EXT_NO = cash.Number; - // req.SERIAL_NO = pushLog.id.ToString(); - // req.ACTION = "2043"; - // var data_req = JsonHelper.Serialize(req); - // pushService.UpdateLogReq(pushLog.id, data_req); - // kafkaProduceHelper.Produce(reqMarginInsert, data_req); - } - /// - /// 互换预付金请求数据组装 - /// - /// - /// - private SwapMarginReq PrepareTradeMarginReq(ClientCashInCashOut model) - { - SwapMarginReq swapMarginReq = new SwapMarginReq(); - var etradeAccount = DbContext.etrade_account.FirstOrDefault(); - #region BASEINFO - swapMarginReq.BASEINFO.ORDDATE = model.HappenDate.Value.ToString("yyyy-MM-dd"); - swapMarginReq.BASEINFO.SETDATE = swapMarginReq.BASEINFO.ORDDATE; - swapMarginReq.BASEINFO.PARTY_NAME = model.ClientName; - swapMarginReq.BASEINFO.ORDSTATUS = "1"; - swapMarginReq.BASEINFO.TRDTYPE = model.Direction == "入金" ? "128" : "127"; - swapMarginReq.BASEINFO.TRADER_ID = etradeAccount?.trader_account; - swapMarginReq.BASEINFO.SECU_INT = etradeAccount?.balance_account_trade; - #endregion - #region TRADEINFO - swapMarginReq.TRADEINFO.PARVALUE = model.Money.OtcFormatMoney(false, 4); - #endregion - return swapMarginReq; - } - #endregion /// /// 校验标的信息 /// @@ -1332,60 +168,5 @@ namespace YLErp.Modules.SwapModule } return formatDate; } - private double TryFormatDouble(string val) - { - if (!double.TryParse(val, out double doubleVal)) - { - throw new ServiceException($"参数{val}不是数字"); - } - return doubleVal; - } - private decimal TryFormatDecimal(string val) - { - if (!decimal.TryParse(val, out decimal decimalVal)) - { - throw new ServiceException($"参数{val}不是数字"); - } - return decimalVal; - } - private int TryFormatInt(string val) - { - if (!int.TryParse(val, out int intVal)) - { - throw new ServiceException($"参数{val}不是数字"); - } - return intVal; - } - private string GetInterestRule(string interestRule) - { - switch (interestRule) - { - case "1": - return "01"; - case "2": - return "11"; - default: - return "10"; - } - } - - private string GetTradeStatus(string orderStatus) - { - switch (orderStatus) - { - //0新建、-4交易执行中、-3风险预审中、7成交确认、9交易撤单、1审批中、5审批通过、4审批拒绝、10交易终止 - case "0": - return ConsTrade.新增待确认; - case "1": - return ConsTrade.审批中; - case "4": - case "9"://撤单 - return ""; - case "10": - return ConsTrade.已平仓; - default: - return ConsTrade.确认成交; - } - } } } diff --git a/YLErpDAL/Modules/SwapModule/SwapDealService.cs b/YLErpDAL/Modules/SwapModule/SwapDealService.cs index f260f384..6d97279d 100644 --- a/YLErpDAL/Modules/SwapModule/SwapDealService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapDealService.cs @@ -757,21 +757,6 @@ namespace YLErp.Modules.SwapModule td.StockEqvNotional -= Convert.ToDouble(unwindData.CloseNotionalValue); td.TradeAmount -= Convert.ToDouble(unwindData.CloseQty); DbContext.SaveChanges(); - new PushLogService(UserInfo).AddLog(eventId, SwapPushDataEnum.合约终止, td.TradeNumber); - var positions = DbContext.swap_position.Where(x => x.IsInitial && x.SwapTradeId == unwindData.SwapTradeId && !x.Invalid); - foreach (var f in flowList) - { - var position = positions.FirstOrDefault(x => x.id == f.PositionId); - if (f.PositionType > 0) - { - new PushLogService(UserInfo).AddLog(f.id, SwapPushDataEnum.互换资产平仓, position.PosiNumber); - } - else if (f.InterestMode == (int)InterestModeEnum.初始预付金 || f.InterestMode == (int)InterestModeEnum.追加预付金) - { - new PushLogService(UserInfo).AddLog(f.id, SwapPushDataEnum.互换预付金平仓, position.PosiNumber); - } - - } trans.Commit(); cofirm = true; } @@ -1058,27 +1043,6 @@ namespace YLErp.Modules.SwapModule td.TradeAmount -= Convert.ToDouble(unwindData.CloseQty); td.Notional = td.TradeAmount; DbContext.SaveChanges(); - if (addLog) - { - new PushLogService(UserInfo).AddLog(eventId, SwapPushDataEnum.合约终止, td.TradeNumber); - var positions = DbContext.swap_position.Where(x => x.IsInitial && x.SwapTradeId == unwindData.SwapTradeId && !x.Invalid); - foreach (var f in flowList) - { - var position = positions.FirstOrDefault(x => x.id == f.PositionId); - if (position != null) - { - if (f.PositionType > 0) - { - new PushLogService(UserInfo).AddLog(f.id, SwapPushDataEnum.互换资产平仓, position.PosiNumber); - } - else if (f.InterestMode == (int)InterestModeEnum.初始预付金 || f.InterestMode == (int)InterestModeEnum.追加预付金) - { - new PushLogService(UserInfo).AddLog(f.id, SwapPushDataEnum.互换预付金平仓, position.PosiNumber); - } - } - - } - } } /// /// 计算平仓总额 @@ -1281,21 +1245,7 @@ namespace YLErp.Modules.SwapModule td.TradeAmount -= Convert.ToDouble(swapEvent.unwindData.CloseQty); } td.StockEqvNotional -= Convert.ToDouble(swapEvent.unwindData.CloseNotionalValue); - new PushLogService(UserInfo).AddLog(swapEvent.id, SwapPushDataEnum.合约终止, td.TradeNumber); - var positions = DbContext.swap_position.Where(x => x.IsInitial && x.SwapTradeId == td.id && !x.Invalid); - foreach (var f in flowList) - { - var position = positions.FirstOrDefault(x => x.id == f.PositionId); - if (f.PositionType > 0) - { - new PushLogService(UserInfo).AddLog(f.id, SwapPushDataEnum.互换资产平仓, position.PosiNumber); - } - else if (f.InterestMode == (int)InterestModeEnum.初始预付金 || f.InterestMode == (int)InterestModeEnum.追加预付金) - { - new PushLogService(UserInfo).AddLog(f.id, SwapPushDataEnum.互换预付金平仓, position.PosiNumber); - } - - } + } td.UnWindDate = swapEvent.unwindData.UnwindDate; UpdateInitalPosition(flowList, swapEvent.unwindData, eventType); diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index 9683da07..117e19c2 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -528,7 +528,7 @@ namespace YLErp.Modules.SwapModule decimal allPosiNotionalValue = 0; decimal longNotionalValue = realPositions.Where(s => s.PositionType == (int)PositionTypeFlag.Long).Sum(s => s.PosiNotionalValue);//剩余多头名义本金规模 decimal shortNotionalValue = realPositions.Where(s => s.PositionType == (int)PositionTypeFlag.Short).Sum(s => s.PosiNotionalValue);//剩余空头名义本金规模 - PushLogService pushService = new PushLogService(UserInfo); + foreach (var eventGroup in eventQuery.GroupBy(g => g.PositionId))//持仓标的腿合成持仓 { var eventList = eventGroup.ToList(); @@ -603,18 +603,6 @@ namespace YLErp.Modules.SwapModule dividendIn = dividendIn + x.DividendIn; x.DataState = (int)SwapFlowDateStateEnum.完成; - if (ratio > 0) - { - if (fposition == null) - { - pushService.AddLog(position.id, swapInsertEnum, position.PosiNumber); - } - pushService.AddLog(position.id, swapPosiEnum, position.PosiNumber + "-01"); - } - else - { - pushService.AddLog(x.id, SwapPushDataEnum.互换资产平仓, position.PosiNumber); - } }); tdCloseQty += closeQty; if (eventFlow.EventType == 1)//最后一条是开仓 diff --git a/YLErpDAL/Modules/SwapModule/SwapPushService.cs b/YLErpDAL/Modules/SwapModule/SwapPushService.cs deleted file mode 100644 index bf65fdd7..00000000 --- a/YLErpDAL/Modules/SwapModule/SwapPushService.cs +++ /dev/null @@ -1,1241 +0,0 @@ -using BaseOUDAL; -using Confluent.Kafka; -using DocumentFormat.OpenXml.Spreadsheet; -using DocumentFormat.OpenXml.VariantTypes; -using Microsoft.Office.Interop.Excel; -using Newtonsoft.Json; -using NPOI.SS.Formula.Functions; -using Qdp.Pricing.Library.Base.Utilities; -using System; -using System.Collections.Generic; -using System.Drawing.Drawing2D; -using System.Linq; -using System.Linq.Dynamic.Core; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; -using YLErp.Abstract; -using YLErp.DBModels; -using YLErp.DBModels.Enums; -using YLErp.Helpers; -using YLErp.Model; -using YLErp.Model.HengTaiModel; -using YLErp.Models; -using YLErp.Modules.AppModule; -using YLErp.Modules.ClientModule; -using YLErp.Modules.FinancialModule; -using YLErp.QdpModule; -using static YLErp.DBModels.ConsTrade; - -namespace YLErp.Modules.SwapModule -{ - public class SwapPushService : YLBaseService - { - // 互换交易kafkaTopic - private string reqInterestRateSwapInsert = string.Empty; - // 资产kafkaTopic - private string reqAssetSwapInsert = string.Empty; - // 预付金kafkaTopic - private string reqMarginInsert = string.Empty; - - //平仓kafkaTopic - private string reqAcctSwapTerminate = string.Empty; - - //交易对手方kafkaTopic - private string reqCounterPartyInfoInsert = string.Empty; - - //交易对手方资金账户 - private string reqCounterPartyCashAccoutInsert = string.Empty; - - List liveLogStates = new List() { (int)SwapPushDataStateEnum.待推送 }; - private IKafkaProduce kafkaProduceHelper; - public SwapPushService(OptUserInfo optUser) : base(optUser) - { - reqInterestRateSwapInsert = Environment.GetEnvironmentVariable("KafkaConfig_ReqInterestRateSwapInsertTopic"); - reqAssetSwapInsert = Environment.GetEnvironmentVariable("KafkaConfig_ReqAssetSwapInsertTopic"); - reqMarginInsert = Environment.GetEnvironmentVariable("KafkaConfig_ReqMarginInsertTopic"); - reqAcctSwapTerminate = Environment.GetEnvironmentVariable("KafkaConfig_ReqAcctSwapTerminateTopic"); - reqCounterPartyInfoInsert = Environment.GetEnvironmentVariable("KafkaConfig_ReqCounterPartyInfoInsertTopic"); - reqCounterPartyCashAccoutInsert = Environment.GetEnvironmentVariable("KafkaConfig_ReqCounterPartyCashAccoutInsertTopic"); - } - public void SetKafKaProduce(IKafkaProduce kafkaProduce) - { - kafkaProduceHelper = kafkaProduce; - } - /// - /// 推送交易 - /// - public void PushTrade() - { - PushData(kafkaProduceHelper, reqInterestRateSwapInsert, SwapPushDataEnum.收益互换交易新增, "2042", PrepareTradeReq); - } - /// - /// 推送交易 - /// - public void PushTradeUpdate() - { - PushData(kafkaProduceHelper, reqInterestRateSwapInsert, SwapPushDataEnum.收益互换交易修改, "3005", PrepareTradeReq); - PushPosition(kafkaProduceHelper, SwapPushDataEnum.互换资产交易修改, "3005"); - PushMargin(kafkaProduceHelper, SwapPushDataEnum.预付金交易修改, "3005"); - } - public void RePushLog(PushLog pushLog) - { - List pushLogs = new List() { pushLog }; - var pushDataType = pushLog.data_type; - if (pushDataType == (int)SwapPushDataEnum.收益互换交易新增) - { - PushData(kafkaProduceHelper, reqInterestRateSwapInsert, pushLogs, "2042", PrepareTradeReq); - } - else if (pushDataType == (int)SwapPushDataEnum.收益互换交易修改) - { - PushData(kafkaProduceHelper, reqInterestRateSwapInsert, pushLogs, "3005", PrepareTradeReq); - } - else if (pushDataType == (int)SwapPushDataEnum.互换资产交易新增) - { - PushPositionData(kafkaProduceHelper, pushLogs, "2041"); - } - else if (pushDataType == (int)SwapPushDataEnum.互换资产交易修改) - { - PushPositionData(kafkaProduceHelper, pushLogs, "3005"); - } - else if (pushDataType == (int)SwapPushDataEnum.互换资产平仓) - { - PushUnwindPositionData(kafkaProduceHelper, pushLogs, true); - } - else if (pushDataType == (int)SwapPushDataEnum.预付金交易新增) - { - PushMarginData(kafkaProduceHelper, pushLogs, "2043"); - } - else if (pushDataType == (int)SwapPushDataEnum.预付金交易修改) - { - PushMarginData(kafkaProduceHelper, pushLogs, "3005"); - } - else if (pushDataType == (int)SwapPushDataEnum.互换预付金平仓) - { - PushUnwindMarginData(kafkaProduceHelper, pushLogs, true); - } - else if (pushDataType == (int)SwapPushDataEnum.客户创建 || pushDataType == (int)SwapPushDataEnum.客户修改) - { - PushClientData(kafkaProduceHelper, pushLogs); - } - else if (pushDataType == (int)SwapPushDataEnum.客户资金账户新增 || pushDataType == (int)SwapPushDataEnum.客户资金账户修改 || pushDataType == (int)SwapPushDataEnum.客户资金账户删除) - { - PushClientBannkData(kafkaProduceHelper, pushLogs); - } - else if (pushDataType == (int)SwapPushDataEnum.合约终止) - { - PushUnwindData(kafkaProduceHelper, pushLogs, "T"); - } - else if (pushDataType == (int)SwapPushDataEnum.合约撤单) - { - PushRepealUnwind(kafkaProduceHelper, pushLogs); - } - //else if (pushDataType == (int)SwapPushDataEnum.客户入金新增) - //{ - // PushRepealCash(kafkaProduceHelper, pushLogs); - //} - //else if (pushDataType == (int)SwapPushDataEnum.客户出金新增) - //{ - // PushRepealCash(kafkaProduceHelper, pushLogs); - //} - } - /// - /// 交易对手方推送 - /// - /// - public void PushClient() - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)SwapPushDataEnum.客户创建, (int)SwapPushDataEnum.客户修改 }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - PushClientData(kafkaProduceHelper, pushLogs); - } - /// - /// 交易对手方银行卡信息推送 - /// - public void PushClientBank() - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)SwapPushDataEnum.客户资金账户修改, (int)SwapPushDataEnum.客户资金账户删除 }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - PushClientBannkData(kafkaProduceHelper, pushLogs); - } - /// - /// 推送客户资金记录 - /// - public void PushClientCash() - { - //var pushService = new PushLogService(UserInfo); - //List dataTypes = new List() { (int)SwapPushDataEnum.客户入金新增, (int)SwapPushDataEnum.客户出金新增 }; - //var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - //PushRepealCash(kafkaProduceHelper, pushLogs); - } - /// - /// 消费推送结果 - /// - public void ConsumerTradeResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize(msg); - var logid = Convert.ToInt64(result.HEADER.SERIAL_NO); - int resultState = (int)SwapPushDataStateEnum.推送失败; - if (result.HEADER.ERRCODE == "0" && result.RECORD.RESULT == "0") - { - resultState = (int)SwapPushDataStateEnum.推送成功; - } - var pushService = new PushLogService(UserInfo); - var pushLog = pushService.UpdateLogResp(logid, msg, resultState); - if (resultState == (int)SwapPushDataStateEnum.推送成功 && pushLog != null) - { - if (pushLog.data_type == (int)SwapPushDataEnum.收益互换交易新增) - { - var posiNumbers = DbContext.swap_position.Where(x => x.SwapTradeId == pushLog.data_id && x.IsInitial && !x.Invalid).Select(s => s.PosiNumber).ToList(); - Expression> expression = n => n.data_type == (int)SwapPushDataEnum.互换资产交易新增 && posiNumbers.Contains(n.data_number); - Expression> expression2 = n => n.data_type == (int)SwapPushDataEnum.预付金交易新增 && posiNumbers.Contains(n.data_number); - var posiPushLogs = pushService.GetPushLogs(expression); - var marginPushLogs = pushService.GetPushLogs(expression2); - PushPositionData(kafkaProduceHelper, posiPushLogs, "2041"); - PushMarginData(kafkaProduceHelper, marginPushLogs, "2043"); - } - } - } - }); - } - /// - /// 消费交易对手方推送结果 - /// - /// - public void ConsumerClientResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize(msg); - var logid = Convert.ToInt64(result.HEADER.SERIAL_NO); - int resultState = (int)SwapPushDataStateEnum.推送失败; - string irPartyId = string.Empty; - if (result.HEADER.ERRCODE == "0") - { - resultState = (int)SwapPushDataStateEnum.推送成功; - if (result.RECORD.PARSEINFO.Count > 0) - { - if (result.RECORD.PARSEINFO.Any(a => a.RESULT != "1")) - { - resultState = (int)SwapPushDataStateEnum.推送失败; - } - else - { - irPartyId = result.RECORD.PARSEINFO[0].XIR_PARTY_ID; - } - } - } - var pushService = new PushLogService(UserInfo); - var pushLog = pushService.UpdateLogResp(logid, msg, resultState); - if (resultState == (int)SwapPushDataStateEnum.推送成功) - { - new ClientSaveService(UserInfo).UpdateClientOutNumber(pushLog.data_number, irPartyId); - if (pushLog.data_type == (int)SwapPushDataEnum.客户创建) - { - Expression> expression = n => n.data_type == (int)SwapPushDataEnum.客户资金账户新增 && n.data_number == pushLog.data_number; - var pushLogs = pushService.GetPushLogs(expression); - PushClientData(kafkaProduceHelper, pushLogs); - } - } - } - }); - } - /// - /// 消费交易对手方推送结果 - /// - /// - public void ConsumerClientBankResp(KafkaConsumerHelper _kafkaConsumer) - { - _kafkaConsumer.Subscribe(msg => - { - if (!string.IsNullOrEmpty(msg)) - { - var result = JsonHelper.Deserialize(msg); - var logid = Convert.ToInt64(result.HEADER.SERIAL_NO); - int resultState = (int)SwapPushDataStateEnum.推送失败; - if (result.HEADER.ERRCODE == "0") - { - resultState = (int)SwapPushDataStateEnum.推送成功; - if (result.RECORD.PARSEINFO.Count > 0) - { - if (result.RECORD.PARSEINFO.Any(a => a.RESULT != "1")) - { - resultState = (int)SwapPushDataStateEnum.推送失败; - } - } - } - new PushLogService(UserInfo).UpdateLogResp(logid, msg, resultState); - } - }); - } - /// - /// 推送平仓 - /// - /// - public void PushUnwind() - { - PushUnwindPosi(kafkaProduceHelper, SwapPushDataEnum.互换资产平仓, PushUnwindPositionData); - PushUnwindPosi(kafkaProduceHelper, SwapPushDataEnum.互换预付金平仓, PushUnwindMarginData); - PushUnwindData(kafkaProduceHelper, SwapPushDataEnum.合约终止, "T"); - } - /// - /// 平仓或回退 - /// - /// - /// - /// - private void PushUnwindData(IKafkaProduce kafkaProduceHelper, SwapPushDataEnum swapPushDataEnum, string operate) - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)swapPushDataEnum }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - PushUnwindData(kafkaProduceHelper, pushLogs, operate); - } - /// - /// 合约平仓推送 - /// - /// - /// - /// - private void PushUnwindData(IKafkaProduce kafkaProduceHelper, List pushLogs, string operate) - { - var pushService = new PushLogService(UserInfo); - var delPushIds = new List(); - foreach (var pushLog in pushLogs) - { - var swapEvent = DbContext.swap_event.FirstOrDefault(x => x.id == pushLog.data_id); - if (swapEvent == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var trade = DbContext.trade.FirstOrDefault(x => x.id == swapEvent.SwapTradeId); - if (trade == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - if (trade.ValidState == ConsGlobal.InValid) - { - var number = trade.TradeNumber.Replace("XX",""); - var tradePushs = pushService.GetPushLogs(x => x.data_number.StartsWith(number)); - if (!tradePushs.Any(x => x.data_state == (int)SwapPushDataStateEnum.推送成功))//已经删除的交易没有推送成功的情况下全部删除记录 - { - delPushIds.AddRange(tradePushs.Select(s => s.id)); - pushService.DeleteLogs(delPushIds); - continue; - } - } - var req = new RequestBase(); - swapEvent.unwindData = JsonConvert.DeserializeObject(swapEvent.EventData); - swapEvent.unwindData.FlowEvents = DbContext.swap_flow_event.Where(x => x.EventId == swapEvent.id).ToList(); - req.RECORD = PrepareUnwindData(swapEvent); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = trade.TradeNumber.Replace("XX", ""); - req.SERIAL_NO = pushLog.id.ToString(); - req.OPERATE = operate; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqAcctSwapTerminate, data_req); - } - } - /// - /// 资产平仓推送 - /// - /// - /// - private void PushUnwindPosi(IKafkaProduce kafkaProduceHelper, SwapPushDataEnum swapPushDataEnum, Action, bool> actionMethod) - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)swapPushDataEnum }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - actionMethod(kafkaProduceHelper, pushLogs, true); - } - /// - /// 资产平仓推送 - /// - /// - /// - private void PushUnwindPositionData(IKafkaProduce kafkaProduceHelper, List pushLogs, bool unwind) - { - var pushService = new PushLogService(UserInfo); - var delPushIds = new List(); - foreach (var pushLog in pushLogs) - { - if (delPushIds.Contains(pushLog.id)) - { - continue; - } - var flowEvent = DbContext.swap_flow_event.FirstOrDefault(x => x.id == pushLog.data_id); - if (flowEvent == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var trade = DbContext.trade.FirstOrDefault(x => x.id == flowEvent.SwapTradeId); - if (trade == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - if (trade.ValidState == ConsGlobal.InValid) - { - var number = trade.TradeNumber.Replace("XX", ""); - var tradePushs = pushService.GetPushLogs(x => x.data_number.StartsWith(number)); - if (!tradePushs.Any(x => x.data_state == (int)SwapPushDataStateEnum.推送成功))//已经删除的交易没有推送成功的情况下全部删除记录 - { - delPushIds.AddRange(tradePushs.Select(s => s.id)); - pushService.DeleteLogs(delPushIds); - continue; - } - } - var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId); - var req = new RequestBase(); - req.RECORD = PrepareTradePosiUnwindReq(trade, flowEvent, pushLog.data_number); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = pushLog.data_id.ToString(); - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = "2041"; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqAssetSwapInsert, data_req); - } - } - - /// - /// 预付金平仓推送 - /// - /// - /// - private void PushUnwindMarginData(IKafkaProduce kafkaProduceHelper, List pushLogs, bool unwind) - { - var pushService = new PushLogService(UserInfo); - foreach (var pushLog in pushLogs) - { - var flowEvent = DbContext.swap_flow_event.FirstOrDefault(x => x.id == pushLog.data_id); - if (flowEvent == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var trade = DbContext.trade.FirstOrDefault(x => x.id == flowEvent.SwapTradeId); - var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId); - var req = new RequestBase(); - req.RECORD = PrepareTradeMarginUnwindReq(client, trade, flowEvent, unwind, pushLog.data_number); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = pushLog.data_id.ToString(); - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = "2043"; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqMarginInsert, data_req); - } - } - - /// - /// 推送回退 - /// - /// - public void PushRepealUnwind() - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)SwapPushDataEnum.合约撤单 }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - PushRepealUnwind(kafkaProduceHelper, pushLogs); - } - private void PushRepealUnwind(IKafkaProduce kafkaProduceHelper, List pushLogs) - { - var pushService = new PushLogService(UserInfo); - foreach (var pushLog in pushLogs) - { - var trade = new trade(); - if (pushLog.data_number.Contains("-")) - { - var position = DbContext.swap_position.FirstOrDefault(x => x.id == pushLog.data_id); - if (position == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var hasInterest = DbContext.swap_position.Any(x => x.SwapTradeId == position.SwapTradeId && x.IsInitial && !x.Invalid && ConsTrade.InterestNotionalModels.Contains(x.InterestMode)); - PushRepealUnwindData(kafkaProduceHelper, position, hasInterest, pushLog, position.PosiNumber, pushService); - } - else - { - trade = DbContext.trade.FirstOrDefault(x => x.id == pushLog.data_id); - if (trade == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var positions = DbContext.swap_position.Where(x => x.SwapTradeId == trade.id && x.IsInitial).ToList(); - var tradeNumber = trade.TradeNumber.Replace("XX", "CW"); - var hasInterest = positions.Any(x => ConsTrade.InterestNotionalModels.Contains(x.InterestMode)); - var posi = positions.Where(x => x.PosiDirection > 0).FirstOrDefault(); - if (posi == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - PushRepealUnwindData(kafkaProduceHelper, posi, hasInterest, pushLog, tradeNumber, pushService); - } - - } - } - private void PushRepealCash(IKafkaProduce kafkaProduceHelper, List pushLogs) - { - var consumerService = new SwapConsumerService(UserInfo); - consumerService.SetKafKaProduce(kafkaProduceHelper); - foreach (var pushLog in pushLogs) - { - //consumerService.PushCashToHT((int)pushLog.data_id,pushLog); - } - } - private void PushRepealUnwindData(IKafkaProduce kafkaProduceHelper, swap_position posi, bool hasInterest, PushLog pushLog, string tradeNumber, PushLogService pushService) - { - var req = new RequestBase(); - req.RECORD = PrepareRepealUnwindData(posi.id.ToString(), posi, hasInterest); - req.EXT_NO = tradeNumber; - req.SERIAL_NO = pushLog.id.ToString(); - req.OPERATE = "D"; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqAcctSwapTerminate, data_req); - } - /// - /// 构建数据 - /// - /// - /// - /// - /// - /// - private void PushData(IKafkaProduce kafkaProduceHelper, string topic, SwapPushDataEnum swapPushDataEnum, string action, Func funcMethod) - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)swapPushDataEnum }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - var delPushIds = new List(); - foreach (var pushLog in pushLogs) - { - if (delPushIds.Contains(pushLog.id)) - { - continue; - } - trade trade = DbContext.trade.FirstOrDefault(x => x.id == pushLog.data_id); - if (trade == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - if (trade.ValidState == ConsGlobal.InValid) - { - var number = trade.TradeNumber.Replace("XX", ""); - var tradePushs = pushService.GetPushLogs(x => x.data_number.StartsWith(number)); - if (!tradePushs.Any(x => x.data_state == (int)SwapPushDataStateEnum.推送成功))//已经删除的交易没有推送成功的情况下全部删除记录 - { - delPushIds.AddRange(tradePushs.Select(s => s.id)); - pushService.DeleteLogs(delPushIds); - continue; - } - } - var tradeExtend = DbContext.trade_extend.FirstOrDefault(x => x.TradeId == trade.id); - List positions = DbContext.swap_position.Where(x => x.SwapTradeId == trade.id && x.IsInitial && !x.Invalid).ToList(); - var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId); - SwapTradePushModel model = new SwapTradePushModel() { trade = trade, positions = positions, tradeExtend = tradeExtend, Client = client }; - var req = new RequestBase(); - req.RECORD = funcMethod(model); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = model.extNo; - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = action; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(topic, data_req); - } - } - - private void PushData(IKafkaProduce kafkaProduceHelper, string topic, List pushLogs, string action, Func funcMethod) - { - var pushService = new PushLogService(UserInfo); - foreach (var pushLog in pushLogs) - { - trade trade = DbContext.trade.FirstOrDefault(x => x.id == pushLog.data_id); - var tradeExtend = DbContext.trade_extend.FirstOrDefault(x => x.TradeId == trade.id); - List positions = positions = DbContext.swap_position.Where(x => x.SwapTradeId == trade.id && x.IsInitial && !x.Invalid).ToList(); - var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId); - SwapTradePushModel model = new SwapTradePushModel() { trade = trade, positions = positions, tradeExtend = tradeExtend, Client = client }; - var req = new RequestBase(); - req.RECORD = funcMethod(model); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = model.extNo; - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = action; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(topic, data_req); - } - } - - /// - /// 预付金推送 - /// - /// - /// - /// - private void PushMargin(IKafkaProduce kafkaProduceHelper, SwapPushDataEnum swapPushDataEnum, string action) - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)swapPushDataEnum }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - PushMarginData(kafkaProduceHelper, pushLogs, action); - } - /// - /// 预付金推送 - /// - /// - /// - /// - private void PushMarginData(IKafkaProduce kafkaProduceHelper, List pushLogs, string action) - { - var pushService = new PushLogService(UserInfo); - foreach (var pushLog in pushLogs) - { - var position = DbContext.swap_position.FirstOrDefault(x => x.id == pushLog.data_id); - if (position == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var trade = DbContext.trade.FirstOrDefault(x => x.id == position.SwapTradeId); - if (trade == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var positions = new List() { position }; - var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId); - SwapTradePushModel model = new SwapTradePushModel() { trade = trade, positions = positions, Client = client }; - var req = new RequestBase(); - req.RECORD = PrepareTradeMarginReq(model); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = position.PosiNumber; - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = action; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqMarginInsert, data_req); - } - } - /// - /// 资产推送 - /// - /// - /// - /// - private void PushPosition(IKafkaProduce kafkaProduceHelper, SwapPushDataEnum swapPushDataEnum, string action) - { - var pushService = new PushLogService(UserInfo); - List dataTypes = new List() { (int)swapPushDataEnum }; - var pushLogs = pushService.GetPushLogs(dataTypes, liveLogStates); - PushPositionData(kafkaProduceHelper, pushLogs, action); - } - - /// - /// 资产推送推送 - /// - /// - /// - /// - private void PushPositionData(IKafkaProduce kafkaProduceHelper, List pushLogs, string action) - { - var pushService = new PushLogService(UserInfo); - foreach (var pushLog in pushLogs) - { - var position = DbContext.swap_position.FirstOrDefault(x => x.id == pushLog.data_id); - if (position == null) - { - var openQuery = from se in DbContext.swap_flow_event - join p in DbContext.swap_position on se.PositionId equals p.PositionId - where se.id == pushLog.data_id - select new { position = p, flowEvent = se }; - var open = openQuery.FirstOrDefault(); - if (open == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - position = open.position; - position.PosiQuantity = open.flowEvent.PositionQty ?? 0; - position.PosiNotionalValue = position.PosiQuantity * position.ContractSize; - } - var trade = DbContext.trade.FirstOrDefault(x => x.id == position.SwapTradeId); - if (trade == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - bool longShort = trade.StructureType == "多空组合"; - var positions = new List() { position }; - var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId); - SwapTradePushModel model = new SwapTradePushModel() { trade = trade, positions = positions, Client = client }; - var req = new RequestBase(); - req.RECORD = PrepareTradePosiReq(model, longShort); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = model.extNo; - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = action; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqAssetSwapInsert, data_req); - } - } - /// - /// 平仓数据构造 - /// - /// - /// - /// - /// 根据平仓详细事件构造数据 - /// - /// - /// - private SwapUnwindReq PrepareUnwindData(swap_event swapEvent) - { - SwapUnwindReq swapUnwindReq = new SwapUnwindReq(); - if (swapEvent == null) - { - return null; - } - var interestPositions = swapEvent.unwindData.FlowEvents.Where(x => x.InterestMode != (int)InterestModeEnum.初始预付金 && x.InterestMode != (int)InterestModeEnum.追加预付金).ToList(); - var floatPositions = swapEvent.unwindData.FlowEvents.Where(x => x.PayDirection > 0).ToList(); - var tradeinfFee = floatPositions.Sum(s => s.TradingFee + s.TradingFeePending); - var markClosePnl = floatPositions.Sum(s => s.MarkClosePnl); - swapUnwindReq.ACCTSWAP_TERMINATE.CUSTORDID = swapEvent.id.ToString(); - swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_TYPE = swapEvent.unwindData.CloseMethod == (int)CloseMethodEnum.全部平仓 ? "1" : "0"; - swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_COUNT = swapEvent.unwindData.CloseQty.OtcFormatMoney(false, 4); - var unwindDate = swapEvent.unwindData.UnwindDate.HasValue ? swapEvent.unwindData.UnwindDate.Value : swapEvent.unwindData.ValueDate; - var payDate = swapEvent.unwindData.PayDate.HasValue ? swapEvent.unwindData.PayDate.Value : swapEvent.unwindData.ValueDate; - var fixFee = interestPositions.Sum(s => s.InterestFee * (s.InterestDirection == (int)SwapDirectionEnum.支付 ? -1 : 1)); - var gddAmount = interestPositions.Sum(s => s.InterestClosePnL) - fixFee; - swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_DAY = unwindDate.ToString("yyyy-MM-dd"); - swapUnwindReq.ACCTSWAP_TERMINATE.PAY_DAY = payDate.ToString("yyyy-MM-dd"); - swapUnwindReq.ACCTSWAP_TERMINATE.ZCD_AMOUNT = (markClosePnl - tradeinfFee).OtcFormatMoney(false, 4); - swapUnwindReq.ACCTSWAP_TERMINATE.GDD_AMOUNT = gddAmount.OtcFormatMoney(false, 4); - swapUnwindReq.ACCTSWAP_TERMINATE.ORDSTATUS = "0"; - swapUnwindReq.ACCTSWAP_TERMINATE.FIX_FEE = fixFee.OtcFormatMoney(false, 4); - swapUnwindReq.ACCTSWAP_TERMINATE.ASSET_FEE = tradeinfFee.OtcFormatMoney(false, 4); - return swapUnwindReq; - } - /// - /// 撤单数据构造 - /// - /// - /// - /// - private SwapUnwindReq PrepareRepealUnwindData(string dataId, swap_position posi, bool hasInterest) - { - decimal notionalValue = posi.PosiNotionalValue; - if (posi.PosiDirection == 0) - { - notionalValue = posi.InterestPrincipalFix; - } - SwapUnwindReq swapUnwindReq = new SwapUnwindReq(); - swapUnwindReq.ACCTSWAP_TERMINATE.CUSTORDID = dataId; - swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_TYPE = "1"; - swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_COUNT = posi.PosiQuantity.OtcFormatMoney(false, 4); - swapUnwindReq.ACCTSWAP_TERMINATE.TERMINATE_DAY = DateTime.Now.ToString("yyyy-MM-dd"); - swapUnwindReq.ACCTSWAP_TERMINATE.ZCD_AMOUNT = notionalValue.OtcFormatMoney(false, 4); - swapUnwindReq.ACCTSWAP_TERMINATE.GDD_AMOUNT = "0"; - swapUnwindReq.ACCTSWAP_TERMINATE.ORDSTATUS = "0"; - if (hasInterest) - { - swapUnwindReq.ACCTSWAP_TERMINATE.GDD_AMOUNT = swapUnwindReq.ACCTSWAP_TERMINATE.ZCD_AMOUNT; - } - return swapUnwindReq; - } - /// - /// 交易请求数据组装 - /// - /// - /// - /// - private SwapTradeReq PrepareTradeReq(SwapTradePushModel model) - { - var td = model.trade; - return PrepareTradeReqSingle(model); - } - /// - /// 非多空组合交易推送 - /// - /// - /// - private SwapTradeReq PrepareTradeReqSingle(SwapTradePushModel model) - { - var td = model.trade; - var tradeExtend = model.tradeExtend; - var positions = model.positions; - var client = model.Client; - SwapTradeReq swapTradeReq = new SwapTradeReq(); - var floatRateInterest = positions.FirstOrDefault(x => !string.IsNullOrEmpty(x.FloatRateUnderlyingCode)); - var interestList = positions.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)).ToList(); - var marginList = positions.Where(x => x.InterestMode == (int)InterestModeEnum.初始预付金).ToList(); - var marginAmount = marginList.Sum(s => s.InterestPrincipalFix * (s.InterestDirection == (int)SwapDirectionEnum.收取 ? 1 : -1)); - var position = positions.FirstOrDefault(x => x.PosiDirection > 0 && x.IsInitial); - if (position == null) - { - return null; - } - var stockEqvNotional = position.PosiNotionalValue; - var marginRate = stockEqvNotional == 0 ? 0 : Math.Abs(marginAmount) / Convert.ToDecimal(stockEqvNotional); - if (interestList.Count == 0) - { - return null; - } - model.extNo = td.TradeNumber.Replace("XX", ""); - var etradeAccount = new EtradeAccountService(UserInfo).GetEtradeAccount(td.AssetBookName); - #region BASEINFO - // swapTradeReq.BASEINFO.PARTY_ID = client?.Number; - swapTradeReq.BASEINFO.PARTY_NAME = td.ClientName; - swapTradeReq.BASEINFO.TRDTYPE = GetTradetype(positions); - swapTradeReq.BASEINFO.ORDDATE = td.TradeDate.Value.ToString("yyyy-MM-dd"); - swapTradeReq.BASEINFO.GROUP_NAME = "TRS推送-"+ td.TradeDate.Value.ToString("yyyyMMdd"); - swapTradeReq.BASEINFO.ORDSTATUS = "0"; - swapTradeReq.BASEINFO.TRADER_ID = etradeAccount?.trader_account; - swapTradeReq.BASEINFO.SECU_INT = etradeAccount?.balance_account_trade; - #endregion - #region ACCTSWAP - swapTradeReq.ACCTSWAP.PRINCIPAL = stockEqvNotional.OtcFormatMoney(false, 4); - swapTradeReq.ACCTSWAP.PRINCIPAL_CNY = swapTradeReq.ACCTSWAP.PRINCIPAL; - swapTradeReq.ACCTSWAP.CURRENCY = "CNY"; - swapTradeReq.ACCTSWAP.DILIVERY_CURRENCY = swapTradeReq.ACCTSWAP.CURRENCY; - swapTradeReq.ACCTSWAP.END_DAY = td.ExerciseDate.Value.ToString("yyyy-MM-dd"); - - //swapTradeReq.ACCTSWAP.CONTRACT_TYPE = "1"; - swapTradeReq.ACCTSWAP.REGULAR_TYPE = "2"; - swapTradeReq.ACCTSWAP.COUPON_TYPE = floatRateInterest != null ? "2" : "1"; - swapTradeReq.ACCTSWAP.INTEREST_BASE = "0"; - swapTradeReq.ACCTSWAP.PAYMENT_CALENDAR = new List() { "CHINA_IB" }; - swapTradeReq.ACCTSWAP.DAY_COUNTER = "Actual/365 (Fixed)"; - swapTradeReq.ACCTSWAP.MARGIN_BEGIN_RATE = marginRate.OtcFormatMoney(false, 4); - swapTradeReq.ACCTSWAP.COUPON_RATE = position.PosiGrossPrice.OtcFormatMoney(false, 10); - swapTradeReq.ACCTSWAP.SETTLE_TYPE = "DIRECT"; - if (td.StructureType == "定义文件型债券收益互换") - { - swapTradeReq.ACCTSWAP.SETTLE_TYPE = "CPAS"; - } - var settleRules = 0; - if (floatRateInterest != null) - { - swapTradeReq.ACCTSWAP.IR_I_CODE = floatRateInterest.FloatRateUnderlyingCode; - swapTradeReq.ACCTSWAP.FLOAT_METHOD = floatRateInterest.InterestType == (int)InterestTypeEnum.单利 ? "0" : "2"; - } - if (tradeExtend != null) - { - swapTradeReq.ACCTSWAP.FIXED_INTEREST_RULE = GetInterestRule(tradeExtend.ExtendObj.InterestCalcMode); - settleRules = tradeExtend.ExtendObj.SettlementRules; - } - swapTradeReq.ACCTSWAP.END_SETTLE_DATE = QdpCalendarHelper.GetNonHoliday(td.ExerciseDate.Value.AddDays(settleRules)).ToString("yyyy-MM-dd"); - #endregion - #region ACCTSWAP.REGULAR_INFO - REGULAR_INFO rEGULAR_INFO = new REGULAR_INFO(); - rEGULAR_INFO.FINAL_STUP_TYPE = "0"; - rEGULAR_INFO.PAY_FREQ = "0D";//到期支付 - rEGULAR_INFO.PAY_ADJUST = "0"; - rEGULAR_INFO.PAY_OFFSET = "1D"; - rEGULAR_INFO.RESET_FREQ = "7D"; - rEGULAR_INFO.RESET_ADJUST = "4"; - rEGULAR_INFO.INTEREST_OFFSET = "-1D"; - rEGULAR_INFO.INTEREST_ADJUST = "2"; - if (interestList.Count > 0) - { - var interest = interestList[0]; - var observation = DbContext.trade_obervation.FirstOrDefault(x => x.PositionId == interest.PositionId); - if (observation != null) - { - rEGULAR_INFO.INTEREST_START_DAY = observation.ObservationStart.Value.ToString("yyyy-MM-dd"); - rEGULAR_INFO.INTEREST_END_DAY = observation.IntervalList.OrderByDescending(o => o.Date).First().Date.ToString("yyyy-MM-dd"); - } - else - { - rEGULAR_INFO.INTEREST_START_DAY = td.StartDate.Value.ToString("yyyy-MM-dd"); - rEGULAR_INFO.INTEREST_END_DAY = td.ExerciseDate.Value.ToString("yyyy-MM-dd"); - } - if (floatRateInterest != null) - { - rEGULAR_INFO.SPREAD = floatRateInterest.InterestRateDefault.ToString(); - } - else - { - rEGULAR_INFO.RATE = interest.InterestRateDefault.ToString(); - } - } - swapTradeReq.ACCTSWAP.REGULAR_INFO = rEGULAR_INFO; - #endregion - return swapTradeReq; - } - - /// - /// 互换资产请求数据组装 - /// - /// - /// - /// - private SwapPosiReq PrepareTradePosiReq(SwapTradePushModel model, bool longShort) - { - var client = model.Client; - model.extNo = ""; - SwapPosiReq swapPosiReq = new SwapPosiReq(); - var td = model.trade; - var position = model.positions.Where(x => x.PosiDirection > 0).FirstOrDefault(); - if (position == null) - { - return null; - } - model.extNo = longShort ? position.PosiNumber + "-01" : position.PosiNumber; - var underlying = DataCacheProvider.GetUnderlyingDataSource().GetData(position.UnderlyingCode); - if (underlying == null) - { - return null; - } - decimal price = Convert.ToDecimal(underlying.Price ?? 100); - var etradeAccount = new EtradeAccountService(UserInfo).GetEtradeAccount(td.AssetBookName); - swapPosiReq.BASEINFO.ORDDATE = td.TradeDate.Value.ToString("yyyy-MM-dd"); - //swapPosiReq.BASEINFO.PARTY_ID = client?.Number; - swapPosiReq.BASEINFO.PARTY_NAME = td.ClientName; - swapPosiReq.BASEINFO.TRD_RELATED_NO = longShort ? position.PosiNumber : td.TradeNumber.Replace("XX", ""); - swapPosiReq.BASEINFO.ORDSTATUS = "0"; - swapPosiReq.BASEINFO.GROUP_NAME = "TRS推送-" + td.TradeDate.Value.ToString("yyyyMMdd"); - swapPosiReq.BASEINFO.TRDTYPE = "10"; - if ((position.PosiDirection == (int)SwapDirectionEnum.支付 && position.PositionType == (int)PositionTypeFlag.Long) || (position.PosiDirection == (int)SwapDirectionEnum.收取 && position.PositionType == (int)PositionTypeFlag.Short)) - { - swapPosiReq.BASEINFO.TRDTYPE = "20"; - } - // swapPosiReq.BASEINFO.SECU_INT = "TRS_YJC_ZC"; - swapPosiReq.BASEINFO.TRADER_ID = etradeAccount?.trader_account; - swapPosiReq.BASEINFO.SECU_INT = etradeAccount?.balance_account_asset; - #region TRADEINFO - var underylingCode = position.UnderlyingCode.Split(".")[0]; - swapPosiReq.TRADEINFO.TRD_FEE = "0"; - swapPosiReq.TRADEINFO.SET_FEE = "0"; - swapPosiReq.TRADEINFO.I_CODE = underylingCode; - swapPosiReq.TRADEINFO.MARKET = underlying.MarketCode; - swapPosiReq.TRADEINFO.A_TYPE = "SPT_BD"; - swapPosiReq.TRADEINFO.PARVALUE = position.PosiQuantity.OtcFormatMoney(false, 4); - swapPosiReq.TRADEINFO.ORDPRICE = (price * position.PosiGrossPrice).OtcFormatMoney(false, 8); - swapPosiReq.TRADEINFO.ORDAMOUNT = (position.PosiQuantity * position.PosiGrossPrice).OtcFormatMoney(false, 4); - swapPosiReq.TRADEINFO.OCFLAG = "0"; - swapPosiReq.TRADEINFO.SETDAYS = "1"; - #endregion - return swapPosiReq; - } - private SwapPosiReq PrepareTradePosiUnwindReq(trade td, swap_flow_event flowEvent, string data_number) - { - SwapPosiReq swapPosiReq = new SwapPosiReq(); - if (flowEvent == null) - { - return null; - } - var underlying = DataCacheProvider.GetUnderlyingDataSource().GetData(flowEvent.UnderlyingCode); - if (underlying == null) - { - return null; - } - decimal price = Convert.ToDecimal(underlying.Price ?? 100); - var etradeAccount = new EtradeAccountService(UserInfo).GetEtradeAccount(td.AssetBookName); - swapPosiReq.BASEINFO.ORDDATE = flowEvent.UnwindDate.Value.ToString("yyyy-MM-dd"); - var payDate = flowEvent.PayDate.HasValue ? flowEvent.PayDate.Value : flowEvent.UnwindDate.Value; - swapPosiReq.BASEINFO.SETDATE = payDate.ToString("yyyy-MM-dd"); - //swapPosiReq.BASEINFO.PARTY_ID = client?.Number; - swapPosiReq.BASEINFO.PARTY_NAME = td.ClientName; - swapPosiReq.BASEINFO.TRD_RELATED_NO = td.TradeNumber.Replace("XX", ""); - swapPosiReq.BASEINFO.ORDSTATUS = "0"; - swapPosiReq.BASEINFO.GROUP_NAME = "TRS推送-" + flowEvent.UnwindDate.Value.ToString("yyyyMMdd"); - swapPosiReq.BASEINFO.TRDTYPE = "20"; - if ((flowEvent.PayDirection == (int)SwapDirectionEnum.支付 && flowEvent.PositionType == (int)PositionTypeFlag.Long) || (flowEvent.PayDirection == (int)SwapDirectionEnum.收取 && flowEvent.PositionType == (int)PositionTypeFlag.Short)) - { - swapPosiReq.BASEINFO.TRDTYPE = "10"; - } - // swapPosiReq.BASEINFO.SECU_INT = "TRS_YJC_ZC"; - swapPosiReq.BASEINFO.TRADER_ID = etradeAccount?.trader_account; - swapPosiReq.BASEINFO.SECU_INT = etradeAccount?.balance_account_asset; - #region TRADEINFO - var underylingCode = flowEvent.UnderlyingCode.Split(".")[0]; - swapPosiReq.TRADEINFO.TRD_FEE = "0"; - swapPosiReq.TRADEINFO.SET_FEE = "0"; - swapPosiReq.TRADEINFO.I_CODE = underylingCode; - swapPosiReq.TRADEINFO.MARKET = underlying.MarketCode; - swapPosiReq.TRADEINFO.A_TYPE = "SPT_BD"; - swapPosiReq.TRADEINFO.PARVALUE = flowEvent.Quantity.OtcFormatMoney(false, 4); - swapPosiReq.TRADEINFO.ORDPRICE = (price * flowEvent.TradingAmountAvg).OtcFormatMoney(false, 8); - swapPosiReq.TRADEINFO.ORDAMOUNT = (flowEvent.Quantity * flowEvent.TradingAmountAvg).OtcFormatMoney(false, 4); - swapPosiReq.TRADEINFO.OCFLAG = "1"; - swapPosiReq.TRADEINFO.SETDAYS = "0"; - #endregion - return swapPosiReq; - } - private SwapMarginReq PrepareTradeMarginUnwindReq(Client client, trade td, swap_flow_event flowEvent, bool unwind, string posiNumer) - { - SwapMarginReq swapMarginReq = new SwapMarginReq(); - if (flowEvent == null) - { - return null; - } - var posi = DbContext.swap_position.FirstOrDefault(x => x.PosiDirection > 0 && x.IsInitial && !x.Invalid); - if (posi == null) - { - return null; - } - var etradeAccount = new EtradeAccountService(UserInfo).GetEtradeAccount(td.AssetBookName); - #region BASEINFO - swapMarginReq.BASEINFO.ORDDATE = flowEvent.UnwindDate.Value.ToString("yyyy-MM-dd"); - var payDate = flowEvent.PayDate.HasValue ? flowEvent.PayDate.Value : flowEvent.UnwindDate.Value; - swapMarginReq.BASEINFO.SETDATE = payDate.ToString("yyyy-MM-dd"); - // swapMarginReq.BASEINFO.PARTY_ID = client?.Number; - swapMarginReq.BASEINFO.PARTY_NAME = td.ClientName; - swapMarginReq.BASEINFO.ORDSTATUS = "0"; - swapMarginReq.BASEINFO.GROUP_NAME = "TRS推送-" + flowEvent.UnwindDate.Value.ToString("yyyyMMdd"); - swapMarginReq.BASEINFO.TRDTYPE = flowEvent.InterestDirection == (int)SwapDirectionEnum.收取 ? "128" : "127"; - swapMarginReq.BASEINFO.TRADER_ID = etradeAccount?.trader_account; - swapMarginReq.BASEINFO.SECU_INT = etradeAccount?.balance_account_trade; - #endregion - #region TRADEINFO - swapMarginReq.TRADEINFO.PARVALUE = flowEvent.InterestPrincipal.OtcFormatMoney(false, 4); - swapMarginReq.TRADEINFO.INTEREST_AMOUNT = "0"; - #endregion - #region RESERVE - if (unwind) - { - swapMarginReq.RESERVE.IN_CUSTORDID = posiNumer; - } - swapMarginReq.RESERVE.CONTRACT_CODE = td.TradeNumber.Replace("XX", ""); - swapMarginReq.RESERVE.RATE = flowEvent.InterestRate.OtcFormatMoney(false, 4); - swapMarginReq.RESERVE.DAY_COUNTER = "Actual/365 (Fixed)"; - swapMarginReq.RESERVE.CURRENCY = "CNY"; - #endregion - return swapMarginReq; - } - /// - /// 互换预付金请求数据组装 - /// - /// - /// - private SwapMarginReq PrepareTradeMarginReq(SwapTradePushModel model) - { - model.extNo = ""; - SwapMarginReq swapMarginReq = new SwapMarginReq(); - var td = model.trade; - var position = model.positions.FirstOrDefault(); - if (position == null) - { - return null; - } - model.extNo = position.PosiNumber; - var etradeAccount = new EtradeAccountService(UserInfo).GetEtradeAccount(td.AssetBookName); - #region BASEINFO - var flowEvent = DbContext.swap_flow_event.Where(x=>x.PositionId== position.id&&x.EventType==(int)SwapFlowEventTypeEnum.开仓&&x.DataState==(int)SwapFlowDateStateEnum.完成).FirstOrDefault(); - var eventDate = td.StartDate.Value; - var payDate = eventDate; - if (flowEvent!=null&& flowEvent.PayDate.HasValue) - { - payDate=flowEvent.PayDate.Value; - } - swapMarginReq.BASEINFO.ORDDATE = eventDate.ToString("yyyy-MM-dd"); - swapMarginReq.BASEINFO.SETDATE = payDate.ToString("yyyy-MM-dd"); - // swapMarginReq.BASEINFO.PARTY_ID = client?.Number; - swapMarginReq.BASEINFO.PARTY_NAME = td.ClientName; - swapMarginReq.BASEINFO.ORDSTATUS = "0"; - swapMarginReq.BASEINFO.GROUP_NAME = "TRS推送-" + td.StartDate.Value.ToString("yyyyMMdd"); - swapMarginReq.BASEINFO.TRDTYPE = position.InterestDirection == (int)SwapDirectionEnum.收取 ? "128" : "127"; - swapMarginReq.BASEINFO.TRADER_ID = etradeAccount?.trader_account; - swapMarginReq.BASEINFO.SECU_INT = etradeAccount?.balance_account_trade; - #endregion - #region TRADEINFO - swapMarginReq.TRADEINFO.PARVALUE = position.InterestPrincipalFix.OtcFormatMoney(false, 4); - swapMarginReq.TRADEINFO.INTEREST_AMOUNT = "0"; - #endregion - #region RESERVE - //swapMarginReq.RESERVE.IN_CUSTORDID = position.PosiNumber; - swapMarginReq.RESERVE.CONTRACT_CODE = td.TradeNumber.Replace("XX", ""); - swapMarginReq.RESERVE.RATE = position.InterestRateDefault.OtcFormatMoney(false, 4); - swapMarginReq.RESERVE.DAY_COUNTER = "Actual/365 (Fixed)"; - swapMarginReq.RESERVE.CURRENCY = position.Currency; - #endregion - return swapMarginReq; - } - - /// - /// 交易对手方请求数据组装 - /// - /// - /// - private ClientPushReq PrepareClientReq(Client client) - { - ClientPushReq clientReq = new ClientPushReq(); - clientReq.CRM_ID = client.Number; - clientReq.COUNTERPARTYINFO.MEMBER_LONGNAME = client.Name; - clientReq.COUNTERPARTYINFO.SOCIAL_CREDIT_CODE = client.UnifiedSocialCreditCode; - clientReq.COUNTERPARTYINFO.MEMBER_NAME = client.Abbreviation; - return clientReq; - } - /// - /// 交易对手方资金账户请求数据组装 - /// - /// - /// - /// - private ClientBankReq PrepareClientBankReq(List bankCards, Client client) - { - ClientBankReq clientBankReq = new ClientBankReq(); - clientBankReq.CRM_ID = client.Number; - clientBankReq.XIR_PARTY_ID = client.OutNumber; - foreach (ClientBankCard bankCard in bankCards) - { - BankInfo bankInfo = new BankInfo(); - bankInfo.ACCID = bankCard.Card; - bankInfo.CASH_ACC_NAME = bankCard.ClientName; - bankInfo.SETTL_BANK_NAME = bankCard.Bank; - bankInfo.PAYMENT_NUMBER = bankCard.Payment; - clientBankReq.COUNTERPARTYTRADELIST.PARTYTRADEINFO.Add(bankInfo); - } - return clientBankReq; - } - - private void PushClientData(IKafkaProduce kafkaProduceHelper, List pushLogs) - { - var pushService = new PushLogService(UserInfo); - using var clientDb = new ClientDBContext(); - foreach (var pushLog in pushLogs) - { - var intId = Convert.ToInt32(pushLog.data_id); - var client = clientDb.client.FirstOrDefault(x => x.id == intId); - if (client == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var req = new RequestBase(); - req.RECORD = PrepareClientReq(client); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = client.Number; - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = "5011"; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqCounterPartyInfoInsert, data_req); - } - } - private void PushClientBannkData(IKafkaProduce kafkaProduceHelper, List pushLogs) - { - var pushService = new PushLogService(UserInfo); - using var clientDb = new ClientDBContext(); - foreach (var pushLog in pushLogs) - { - var intId = Convert.ToInt32(pushLog.data_id); - var client = clientDb.client.FirstOrDefault(x => x.id == intId); - if (client == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - var bankCards = clientDb.bankcard.Where(x => x.ClientId == client.id && x.ValidState != "InValid").ToList(); - var req = new RequestBase(); - req.RECORD = PrepareClientBankReq(bankCards, client); - if (req.RECORD == null) - { - pushService.DeleteLog(pushLog.id); - continue; - } - req.EXT_NO = client.Number; - req.SERIAL_NO = pushLog.id.ToString(); - req.ACTION = "5013"; - var data_req = JsonHelper.Serialize(req); - pushService.UpdateLogReq(pushLog.id, data_req); - kafkaProduceHelper.Produce(reqCounterPartyCashAccoutInsert, data_req); - } - } - /// - /// 获取交易方向 - /// - /// - /// - private string GetTradetype(List positions) - { - string direction = "151"; - var interestList = positions.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)).ToList(); - var posiList = positions.Where(x => x.PosiDirection > 0).ToList(); - if (interestList.Count == 1) - { - direction = interestList[0].InterestDirection == (int)SwapDirectionEnum.收取 ? "151" : "152"; - return direction; - } - if (posiList.Count > 0) - { - direction = posiList[0].PosiDirection == (int)SwapDirectionEnum.支付 ? "151" : "152"; - return direction; - } - return direction; - } - /// - /// 获取结算利息计算方式 - /// - /// - /// - private string GetInterestRule(string interestCalcMode) - { - if (interestCalcMode == "01") - { - return "1"; - } - if (interestCalcMode == "10") - { - return "0"; - } - if (interestCalcMode == "11") - { - return "2"; - } - return ""; - } - } -} diff --git a/YLErpDAL/Modules/SwapModule/SwapTradeService.cs b/YLErpDAL/Modules/SwapModule/SwapTradeService.cs index 8854b1bb..d97c5e82 100644 --- a/YLErpDAL/Modules/SwapModule/SwapTradeService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapTradeService.cs @@ -138,22 +138,6 @@ namespace YLErp.Modules.SwapModule var positions = DbContext.swap_position.Where(x => x.SwapTradeId == td.id && x.IsInitial && !x.Invalid).ToList(); td.swap_positions = positions.Where(x => marginModes.Contains(x.InterestMode)).ToList(); var posiPositions = positions.Where(x => x.PosiDirection > 0).ToList(); - var pushLogService = new PushLogService(UserInfo); - pushLogService.AddLog(td.id, SwapPushDataEnum.收益互换交易新增, SwapPushDataEnum.收益互换交易修改, td.TradeNumber); - if (posiPositions.Any()) - { - foreach (var position in posiPositions) - { - pushLogService.AddLog(position.id, SwapPushDataEnum.互换资产交易新增, SwapPushDataEnum.互换资产交易修改, position.PosiNumber); - } - } - if (td.swap_positions.Any()) - { - foreach (var position in td.swap_positions) - { - pushLogService.AddLog(position.id, SwapPushDataEnum.预付金交易新增, SwapPushDataEnum.预付金交易修改, position.PosiNumber); - } - } } /// /// 校验 定义文件型债券收益互换 持仓标的只能存在一笔 @@ -216,25 +200,7 @@ namespace YLErp.Modules.SwapModule DeleteTradeDetials(id); DeleteTradeCashInCashOut(id); DbContext.SaveChanges(); - if (addLog) - { - var pushService = new PushLogService(UserInfo); - pushService.DeleteLog(tradeNumber); - if (dbTrade.StructureType == "多空组合") - { - var swapPosiList = DbContext.swap_position.Where(x => x.IsInitial && x.SwapTradeId == id && !x.Invalid).AsNoTracking().ToList(); - var posiList = swapPosiList.Where(x => x.PosiDirection > 0 || x.InterestMode == (int)InterestModeEnum.固定值).ToList(); - foreach (var item in posiList) - { - pushService.AddLogWithCheck(item.id, SwapPushDataEnum.合约撤单, item.PosiNumber); - } - } - else - { - pushService.AddLogWithCheck(dbTrade.id, SwapPushDataEnum.合约撤单, tradeNumber); - } - } - // new SwapFlowService(this).DeleteSwapFlow(id, dbTrade.TradeDate.Value, false); + } private void DeleteTradeDetials(int tradeId) { @@ -1648,7 +1614,6 @@ namespace YLErp.Modules.SwapModule { DeleteTradeCashInCashOut(tradeId); DeleteTradeDetials(tradeId); - new PushLogService(UserInfo).DeleteLogWithUnwind(td.TradeNumber); DbContext.SaveChanges(); if (del) { @@ -1661,10 +1626,8 @@ namespace YLErp.Modules.SwapModule var tradeNumber = td.TradeNumber; td.TradeNumber = td.TradeNumber.Insert(0, "XX"); td.OptDate = OptDate; - new PushLogService(UserInfo).DeleteLog(tradeNumber); swapEventService.AddSwapEventDate(valueDate, tradeId, (int)SwapEventTypeEnum.删除, string.Empty, 0, false); DbContext.SaveChanges(); - new PushLogService(UserInfo).AddLogWithCheck(td.id, SwapPushDataEnum.合约撤单, tradeNumber); trans.Commit(); return; } @@ -1772,7 +1735,7 @@ namespace YLErp.Modules.SwapModule var eodSwapPositionList = DbContext.eod_swap_position.Where(x => x.ValueDate == preDay && x.SwapTradeId == td.id).ToList(); var swapFlowEvents = DbContext.swap_flow_event.Where(x => x.SwapTradeId == td.id && x.EventDate >= valueDate && x.DataState > (int)SwapFlowDateStateEnum.废弃).ToList(); var positions = swapPositions.Where(x => x.PosiDirection > 0 && !x.IsInitial).ToList(); - var pushService = new PushLogService(UserInfo); + foreach (var posi in positions) { var eodPosi = eodSwapPositionList.FirstOrDefault(x => x.PositionId == posi.PositionId); @@ -1814,14 +1777,10 @@ namespace YLErp.Modules.SwapModule { var positions = swapPositions.Where(x => !x.IsInitial || x.InterestDirection == 0).ToList(); var orignPositions = swapPositions.Where(x => x.IsInitial && x.InterestDirection > 0).ToList(); - var pushService = new PushLogService(UserInfo); + foreach (var item in positions) { item.Invalid = true; - if ((item.PosiDirection > 0 || item.InterestMode == (int)InterestModeEnum.固定值) && item.IsInitial) - { - pushService.AddLog(item.id, SwapPushDataEnum.合约撤单, item.PosiNumber); - } } //DbContext.swap_position.RemoveRange(positions); foreach (var item in orignPositions) diff --git a/YLErpDAL/Modules/TradeModule/DealModule/TradeConfirmService.cs b/YLErpDAL/Modules/TradeModule/DealModule/TradeConfirmService.cs index 64b2c1dd..23397eda 100644 --- a/YLErpDAL/Modules/TradeModule/DealModule/TradeConfirmService.cs +++ b/YLErpDAL/Modules/TradeModule/DealModule/TradeConfirmService.cs @@ -369,27 +369,9 @@ namespace YLErp.Modules.TradeModule.DealModule swapEventService.AddSwapEventDate(openDate.Value, td.id, (int)SwapEventTypeEnum.确认交易, "", 0, true, history); if (addlog) { - var pushLogService = new PushLogService(UserInfo); var swapInsertEnum = SwapPushDataEnum.收益互换交易新增; var posiInsertEnum = SwapPushDataEnum.互换资产交易新增; var marginInsertEnum = SwapPushDataEnum.预付金交易新增; - pushLogService.AddLog(td.id, swapInsertEnum, td.TradeNumber); - if (posiPositions.Any()) - { - foreach (var position in posiPositions) - { - pushLogService.AddLog(position.id, posiInsertEnum, position.PosiNumber); - } - - } - if (td.swap_positions.Any()) - { - foreach (var position in td.swap_positions) - { - pushLogService.AddLog(position.id, marginInsertEnum, position.PosiNumber); - } - - } } else { diff --git a/YLErpDAL/YLErpDAL.csproj b/YLErpDAL/YLErpDAL.csproj index d4fc0740..e11da768 100644 --- a/YLErpDAL/YLErpDAL.csproj +++ b/YLErpDAL/YLErpDAL.csproj @@ -74,4 +74,8 @@ + + + + \ No newline at end of file diff --git a/YLErpWeb/App/KafkaTask/CashNoticeConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/CashNoticeConsumerKafkaTask.cs index 541525b2..b94cfdfc 100644 --- a/YLErpWeb/App/KafkaTask/CashNoticeConsumerKafkaTask.cs +++ b/YLErpWeb/App/KafkaTask/CashNoticeConsumerKafkaTask.cs @@ -55,7 +55,6 @@ namespace YLErp.Web.App.KafkaTask { var service = new SwapConsumerService(OptUserInfo.SystemUser); service.SetKafKaProduce(kafkaProduceHelper); - service.ConsumerCashNotice(_cashNoticeConsumer); } catch (Exception ex) { diff --git a/YLErpWeb/App/KafkaTask/ClientBankConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/ClientBankConsumerKafkaTask.cs deleted file mode 100644 index 0e67c870..00000000 --- a/YLErpWeb/App/KafkaTask/ClientBankConsumerKafkaTask.cs +++ /dev/null @@ -1,55 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - public class ClientBankConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private string onRspCounterPartyCashAccoutInsertTopic = string.Empty; - private string onRspCounterPartyCashAccoutInsertTopicGroupId = string.Empty; - private KafkaConsumerHelper _rspCounterPartyCashAccoutInsertConsumer; - public ClientBankConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("ClientBankConsumerKafkaTask"); - onRspCounterPartyCashAccoutInsertTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspCounterPartyCashAccoutInsertTopic"); - onRspCounterPartyCashAccoutInsertTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspCounterPartyCashAccoutInsertTopicGroupId"); - _rspCounterPartyCashAccoutInsertConsumer = new KafkaConsumerHelper(onRspCounterPartyCashAccoutInsertTopicGroupId, onRspCounterPartyCashAccoutInsertTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - _logger.Info("ConsumerClientBank started"); - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _logger.Info("ConsumerClientBank stoped"); - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - // 执行任务 - await Task.Run(() => { - new SwapPushService(OptUserInfo.SystemUser).ConsumerClientBankResp(_rspCounterPartyCashAccoutInsertConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerClientBank Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/ClientInfoConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/ClientInfoConsumerKafkaTask.cs deleted file mode 100644 index 2f5717ef..00000000 --- a/YLErpWeb/App/KafkaTask/ClientInfoConsumerKafkaTask.cs +++ /dev/null @@ -1,65 +0,0 @@ -using YLErp.Abstract; -using YLErp.Helpers; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 交易对手方信息推送回应衡泰Kafka - /// - public class ClientInfoConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private string onRspCounterPartyInsertTopic = string.Empty; - private string onRspCounterPartyInsertTopicGroupId = string.Empty; - private KafkaConsumerHelper _rspCounterPartyInsertConsumer; - private IKafkaProduce kafkaProduceHelper; - public ClientInfoConsumerKafkaTask(IKafkaProduce kafkaProduce) - { - _logger = LogFactory.GetLogger("ClientInfoConsumerKafkaTask"); - onRspCounterPartyInsertTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspCounterPartyInsertTopic"); - onRspCounterPartyInsertTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspCounterPartyInsertTopicGroupId"); - - _rspCounterPartyInsertConsumer = new KafkaConsumerHelper(onRspCounterPartyInsertTopicGroupId, onRspCounterPartyInsertTopic); - kafkaProduceHelper = kafkaProduce; - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - _logger.Info("ConsumerClient started"); - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _logger.Info("ConsumerClient stoped"); - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - // 执行任务 - await Task.Run(() => { - new SwapPushService(OptUserInfo.SystemUser).ConsumerClientResp(_rspCounterPartyInsertConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerClient Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/ClientInfoProduceKafkaTask.cs b/YLErpWeb/App/KafkaTask/ClientInfoProduceKafkaTask.cs deleted file mode 100644 index b3c96bb3..00000000 --- a/YLErpWeb/App/KafkaTask/ClientInfoProduceKafkaTask.cs +++ /dev/null @@ -1,61 +0,0 @@ -using YLErp.Abstract; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 交易对手方信息推送衡泰Kafka - /// - public class ClientInfoProduceKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private IKafkaProduce kafkaProduceHelper; - public ClientInfoProduceKafkaTask(IKafkaProduce kafkaProduce) - { - _logger = LogFactory.GetLogger("ClientInfoKafkaTask"); - kafkaProduceHelper = kafkaProduce; - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - _logger.Info("PushClient started"); - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - var pushService= new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - try - { - // 执行任务 - await Task.Run(() => { - pushService.PushClient(); - }, cancellationToken); - await Task.Run(() => - { - pushService.PushClientBank(); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("PushClient Exception", ex); - } - - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/ExchangeTradeConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/ExchangeTradeConsumerKafkaTask.cs deleted file mode 100644 index aabd5d53..00000000 --- a/YLErpWeb/App/KafkaTask/ExchangeTradeConsumerKafkaTask.cs +++ /dev/null @@ -1,57 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - public class ExchangeTradeConsumerKafkaTask : IHostedService, IDisposable - { - - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _exchangeTradeConsumer;//对冲交易消费者 - private string exchangeTradeTopic = string.Empty; - private string exchangeTradeTopicGroupId = string.Empty; - - public ExchangeTradeConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("ExchangeTradeConsumerKafkaTask"); - exchangeTradeTopic = Environment.GetEnvironmentVariable("KafkaConfig_ExchangeTradeConsumerTopic"); - exchangeTradeTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_ExchangeTradeConsumerTopicGroupId"); - _exchangeTradeConsumer = new KafkaConsumerHelper(exchangeTradeTopicGroupId, exchangeTradeTopic); - } - - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - await Task.Run(() => - { - new SwapConsumerService(OptUserInfo.SystemUser).ConsumerExchangeTradeResp(_exchangeTradeConsumer, "衡泰同步"); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradePosiResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/RespIRSDbConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/RespIRSDbConsumerKafkaTask.cs deleted file mode 100644 index bf44d0dc..00000000 --- a/YLErpWeb/App/KafkaTask/RespIRSDbConsumerKafkaTask.cs +++ /dev/null @@ -1,53 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - public class RespIRSDbConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rtnInterestRateSwapConsumer;//衡泰数据库收益互换交易回执消费者 - private string rtnInterestRateSwapTopic = string.Empty; - private string rtnInterestRateSwapTopicGroupId = string.Empty; - public RespIRSDbConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("RespIRSDbConsumerKafkaTask"); - rtnInterestRateSwapTopic = Environment.GetEnvironmentVariable("KafkaConfig_RtnInterestRateSwapTopic"); - rtnInterestRateSwapTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_RtnInterestRateSwapTopicGroupId"); - _rtnInterestRateSwapConsumer = new KafkaConsumerHelper(rtnInterestRateSwapTopicGroupId, rtnInterestRateSwapTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - // 执行任务 - await Task.Run(() => { - new SwapConsumerService(OptUserInfo.SystemUser).ConsumerIRSDb(_rtnInterestRateSwapConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradeResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeCashReceiptConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeCashReceiptConsumerKafkaTask.cs deleted file mode 100644 index 230142df..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeCashReceiptConsumerKafkaTask.cs +++ /dev/null @@ -1,58 +0,0 @@ -using YLErp.Abstract; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 互换交易回执消费任务 - /// - public class SwapTradeCashReceiptConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rtnInterestRateSwapAccountConsumer;//收益互换日终资金流水回执消费者 - private string rtnInterestRateSwapAccountTopic = string.Empty; - private string rtnInterestRateSwapAccountTopicGroupId = string.Empty; - public SwapTradeCashReceiptConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("SwapTradeCashReceiptConsumerKafkaTask"); - rtnInterestRateSwapAccountTopic = Environment.GetEnvironmentVariable("KafkaConfig_RtnInterestRateSwapAccountTopic"); - rtnInterestRateSwapAccountTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_RtnInterestRateSwapAccountTopicGroupId"); - _rtnInterestRateSwapAccountConsumer = new KafkaConsumerHelper(rtnInterestRateSwapAccountTopicGroupId, rtnInterestRateSwapAccountTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var consumerService= new SwapConsumerService(OptUserInfo.SystemUser); - // 执行任务 - await Task.Run(() => { - consumerService.ConsumerTradeCashResp(_rtnInterestRateSwapAccountConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradeCashResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeConsumerKafkaTask.cs deleted file mode 100644 index 84e8f86c..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeConsumerKafkaTask.cs +++ /dev/null @@ -1,60 +0,0 @@ -using YLErp.Abstract; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App -{ - /// - /// 互换簿记kafka推山证回应接收任务 - /// - public class SwapTradeConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rspInterestRateSwapInsertConsumer;//收益互换交易推送请求响应 - private string onRspInterestRateSwapInsertTopic = string.Empty; - private string onRspInterestRateSwapInsertTopicGroupId = string.Empty; - private IKafkaProduce kafkaProduceHelper; - public SwapTradeConsumerKafkaTask(IKafkaProduce kafkaProduce) - { - _logger = LogFactory.GetLogger("SwapTradeCosumerKafkaTask"); - onRspInterestRateSwapInsertTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspInterestRateSwapInsertTopic"); - onRspInterestRateSwapInsertTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspInterestRateSwapInsertTopicGroupId"); - _rspInterestRateSwapInsertConsumer = new KafkaConsumerHelper(onRspInterestRateSwapInsertTopicGroupId, onRspInterestRateSwapInsertTopic); - kafkaProduceHelper = kafkaProduce; - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - // 执行任务 - await Task.Run(() => { - pushService.ConsumerTradeResp(_rspInterestRateSwapInsertConsumer); - }, cancellationToken); - }catch (Exception ex) - { - _logger.Error("ConsumerTradeResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeMarginConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeMarginConsumerKafkaTask.cs deleted file mode 100644 index 4d2f5838..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeMarginConsumerKafkaTask.cs +++ /dev/null @@ -1,61 +0,0 @@ -using YLErp.Abstract; -using YLErp.Helpers; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App -{ - /// - /// 互换簿记kafka推山证回应接收任务 - /// - public class SwapTradeMarginConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rspMarginInsertConsumer;//预付金推送请求响应 - private string onRspMarginInsertTopic = string.Empty; - private string onRspMarginInsertTopicGroupId = string.Empty; - private IKafkaProduce kafkaProduceHelper; - public SwapTradeMarginConsumerKafkaTask(IKafkaProduce kafkaProduce) - { - _logger = LogFactory.GetLogger("SwapTradeMarginConsumerKafkaTask"); - onRspMarginInsertTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspMarginInsertTopic"); - onRspMarginInsertTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspMarginInsertTopicGroupId"); - _rspMarginInsertConsumer= new KafkaConsumerHelper(onRspMarginInsertTopicGroupId, onRspMarginInsertTopic); - kafkaProduceHelper = kafkaProduce; - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - await Task.Run(() => { - new SwapPushService(OptUserInfo.SystemUser).ConsumerTradeResp(_rspMarginInsertConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradeMarginResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeMarginReceiptConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeMarginReceiptConsumerKafkaTask.cs deleted file mode 100644 index f0067105..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeMarginReceiptConsumerKafkaTask.cs +++ /dev/null @@ -1,57 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 互换交易回执消费任务 - /// - public class SwapTradeMarginReceiptConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rtnMarginConsumer;//预付金回执消费者 - private string rtnMarginTopic = string.Empty; - private string rtnMarginTopicGroupId = string.Empty; - public SwapTradeMarginReceiptConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("SwapTradeMarginReceiptConsumerKafkaTask"); - rtnMarginTopic = Environment.GetEnvironmentVariable("KafkaConfig_RtnMarginTopic"); - rtnMarginTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_RtnMarginTopicGroupId"); - _rtnMarginConsumer = new KafkaConsumerHelper(rtnMarginTopicGroupId, rtnMarginTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - // 执行任务 - await Task.Run(() => { - new SwapConsumerService(OptUserInfo.SystemUser).ConsumerTradeMarginResp(_rtnMarginConsumer); - }, cancellationToken); - - } - catch (Exception ex) - { - _logger.Error("ConsumerTradeMarginResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradePosiConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradePosiConsumerKafkaTask.cs deleted file mode 100644 index a3627941..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradePosiConsumerKafkaTask.cs +++ /dev/null @@ -1,61 +0,0 @@ -using YLErp.Abstract; -using YLErp.Helpers; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App -{ - /// - /// 互换簿记kafka推山证回应接收任务 - /// - public class SwapTradePosiConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rspAssetSwapInsertConsumer;//互换资产交易推送请求响应 - private string onRspAssetSwapInsertTopic = string.Empty; - private string onRspAssetSwapInsertTopicGroupId = string.Empty; - private IKafkaProduce kafkaProduceHelper; - public SwapTradePosiConsumerKafkaTask(IKafkaProduce kafkaProduce) - { - _logger = LogFactory.GetLogger("SwapTradePosiConsumerKafkaTask"); - onRspAssetSwapInsertTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspAssetSwapInsertTopic"); - onRspAssetSwapInsertTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspAssetSwapInsertTopicGroupId"); - _rspAssetSwapInsertConsumer = new KafkaConsumerHelper(onRspAssetSwapInsertTopicGroupId, onRspAssetSwapInsertTopic); - kafkaProduceHelper = kafkaProduce; - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - // 执行任务 - await Task.Run(() => { - pushService.ConsumerTradeResp(_rspAssetSwapInsertConsumer); - }, cancellationToken); - }catch (Exception ex) - { - _logger.Error("ConsumerTradePosiResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradePosiReceiptConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradePosiReceiptConsumerKafkaTask.cs deleted file mode 100644 index 1578093a..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradePosiReceiptConsumerKafkaTask.cs +++ /dev/null @@ -1,55 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 互换交易回执消费任务 - /// - public class SwapTradePosiReceiptConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rtnAssetSwapConsumer;//互换资产回执消费者 - private string rtnAssetSwapTopic = string.Empty; - private string rtnAssetSwapTopicGroupId = string.Empty; - public SwapTradePosiReceiptConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("SwapTradePosiReceiptConsumerKafkaTask"); - rtnAssetSwapTopic = Environment.GetEnvironmentVariable("KafkaConfig_RtnAssetSwapTopic"); - rtnAssetSwapTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_RtnAssetSwapTopicGroupId"); - _rtnAssetSwapConsumer = new KafkaConsumerHelper(rtnAssetSwapTopicGroupId, rtnAssetSwapTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - await Task.Run(() => { - new SwapConsumerService(OptUserInfo.SystemUser).ConsumerTradePosiResp(_rtnAssetSwapConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradePosiResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeProduceKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeProduceKafkaTask.cs deleted file mode 100644 index 7a1a1da5..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeProduceKafkaTask.cs +++ /dev/null @@ -1,68 +0,0 @@ -using YLErp.Abstract; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 互换簿记kafka推山证任务 - /// - public class SwapTradeProduceKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private IKafkaProduce kafkaProduceHelper; - public SwapTradeProduceKafkaTask(IKafkaProduce kafkaProduce) - { - _logger = LogFactory.GetLogger("SwapTradeProduceKafkaTask"); - kafkaProduceHelper = kafkaProduce; - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - var pushService = new SwapPushService(OptUserInfo.SystemUser); - pushService.SetKafKaProduce(kafkaProduceHelper); - try - { - // 执行任务 - await Task.Run(() => { - pushService.PushTrade(); - }, cancellationToken); - // 执行任务 - await Task.Run(() => { - pushService.PushTradeUpdate(); - }, cancellationToken); - // 执行任务 - await Task.Run(() => { - pushService.PushUnwind(); - }, cancellationToken); - // 执行任务 - await Task.Run(() => { - pushService.PushRepealUnwind(); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("PushTrade Exception",ex); - } - - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeReceiptConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeReceiptConsumerKafkaTask.cs deleted file mode 100644 index 950a9fbd..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeReceiptConsumerKafkaTask.cs +++ /dev/null @@ -1,56 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 互换交易回执消费任务 - /// - public class SwapTradeReceiptConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rtnInterestRateSwapConsumer;//收益互换交易回执消费者 - private string rtnInterestRateSwapTopic = string.Empty; - private string rtnInterestRateSwapTopicGroupId = string.Empty; - public SwapTradeReceiptConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("SwapTradeReceiptConsumerKafkaTask"); - rtnInterestRateSwapTopic = Environment.GetEnvironmentVariable("KafkaConfig_RtnInterestRateSwapTopic"); - rtnInterestRateSwapTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_RtnInterestRateSwapTopicGroupId"); - _rtnInterestRateSwapConsumer = new KafkaConsumerHelper(rtnInterestRateSwapTopicGroupId, rtnInterestRateSwapTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - // 执行任务 - await Task.Run(() => { - new SwapConsumerService(OptUserInfo.SystemUser).ConsumerTradeResp(_rtnInterestRateSwapConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradeResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeUnwindConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeUnwindConsumerKafkaTask.cs deleted file mode 100644 index aadb020f..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeUnwindConsumerKafkaTask.cs +++ /dev/null @@ -1,54 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App -{ - /// - /// 互换簿记kafka推山证回应接收任务 - /// - public class SwapTradeUnwindConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rspAcctSwapTerminateConsumer;//合约终止请求响应 - private string onRspAcctSwapTerminateTopic = string.Empty; - private string onRspAcctSwapTerminateTopicGroupId = string.Empty; - public SwapTradeUnwindConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("SwapTradeUnwindConsumerKafkaTask"); - onRspAcctSwapTerminateTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspAcctSwapTerminateTopic"); - onRspAcctSwapTerminateTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspAcctSwapTerminateTopicGroupId"); - _rspAcctSwapTerminateConsumer = new KafkaConsumerHelper(onRspAcctSwapTerminateTopicGroupId, onRspAcctSwapTerminateTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - await Task.Run(() => { - new SwapPushService(OptUserInfo.SystemUser).ConsumerTradeResp(_rspAcctSwapTerminateConsumer); - }, cancellationToken); - }catch (Exception ex) - { - _logger.Error("ConsumerTradeUnwindResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/App/KafkaTask/SwapTradeUnwindReceiptConsumerKafkaTask.cs b/YLErpWeb/App/KafkaTask/SwapTradeUnwindReceiptConsumerKafkaTask.cs deleted file mode 100644 index e46a8e2a..00000000 --- a/YLErpWeb/App/KafkaTask/SwapTradeUnwindReceiptConsumerKafkaTask.cs +++ /dev/null @@ -1,56 +0,0 @@ -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.App.KafkaTask -{ - /// - /// 互换交易回执消费任务 - /// - public class SwapTradeUnwindReceiptConsumerKafkaTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - private KafkaConsumerHelper _rtnAcctSwapTerminateConsumer;//合约终止回执消费者 - private string rtnAcctSwapTerminateTopic = string.Empty; - private string rtnAcctSwapTerminateTopicGroupId = string.Empty; - public SwapTradeUnwindReceiptConsumerKafkaTask() - { - _logger = LogFactory.GetLogger("SwapTradeUnwindReceiptConsumerKafkaTask"); - rtnAcctSwapTerminateTopic = Environment.GetEnvironmentVariable("KafkaConfig_RtnAcctSwapTerminateTopic"); - rtnAcctSwapTerminateTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_RtnAcctSwapTerminateTopicGroupId"); - _rtnAcctSwapTerminateConsumer= new KafkaConsumerHelper(rtnAcctSwapTerminateTopicGroupId, rtnAcctSwapTerminateTopic); - } - public void Dispose() - { - _cts.Dispose(); - } - - public Task StartAsync(CancellationToken cancellationToken) - { - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _cts.Cancel(); - await Task.CompletedTask; - } - private async Task ExecuteTask(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - // 执行任务 - await Task.Run(() => { - new SwapConsumerService(OptUserInfo.SystemUser).ConsumerTradeUnwindResp(_rtnAcctSwapTerminateConsumer); - }, cancellationToken); - } - catch (Exception ex) - { - _logger.Error("ConsumerTradeResp Exception", ex); - } - } - } - } -} diff --git a/YLErpWeb/Controllers/AccountOpeningProcessController.cs b/YLErpWeb/Controllers/AccountOpeningProcessController.cs index 0d871316..db9a39aa 100644 --- a/YLErpWeb/Controllers/AccountOpeningProcessController.cs +++ b/YLErpWeb/Controllers/AccountOpeningProcessController.cs @@ -80,13 +80,6 @@ namespace YLErp.Web.Controllers if (client.ProcessStatus=="已开户") { new EtradingRuleService(CurUser).SendEtradingRuleToKafka(client.Number); - new PushLogService(CurUser).AddLog(client.id, SwapPushDataEnum.客户创建, SwapPushDataEnum.客户修改, client.Number); - using ClientDBContext clientDB=new ClientDBContext(); - if (clientDB.bankcard.Any(o => o.ApprovalOrder < 1 && o.ClientId == clientId && o.ValidState != "InValid")) - { - new PushLogService(CurUser).AddLog(client.id, SwapPushDataEnum.客户资金账户新增, client.Number); - } - } return JsonSuccess(message, client); } diff --git a/YLErpWeb/Controllers/DataCompareController.cs b/YLErpWeb/Controllers/DataCompareController.cs deleted file mode 100644 index 398828ae..00000000 --- a/YLErpWeb/Controllers/DataCompareController.cs +++ /dev/null @@ -1,91 +0,0 @@ -using YLErp.Modules.DataCompare; -using YLErp.Modules.DataCompare.Dto; -using YLErp.Modules.EodModule.SettlementModule; -using YLErp.Modules.SwapModule; - -namespace YLErp.Web.Controllers -{ - public class DataCompareController : BaseController - { - [MyAuthorize("结算管理-与衡泰对账")] - public ActionResult Index() - { - var service = new DataCompareService(CurUser); - ViewBag.ValueDate = service.GetLastCloseDate().ToString("yyyy-MM-dd"); - return View(); - } - - /// - /// 查询数据比对列表 - /// - /// - /// - [HttpPost] - public JsonResult QueryNeedCompareData(QueryNeedCompareDataRequest req) - { - var service = new DataCompareService(CurUser); - var sList = service.QueryNeedCompareData(req); - return Json(sList); - } - - /// - /// 查询仅衡泰数据 - /// - /// - /// - [HttpPost] - public JsonResult QueryOnlyHengTaiData(QueryNeedCompareDataRequest req) - { - var service = new DataCompareService(CurUser); - var sList = service.QueryOnlyHengTaiData(req); - return Json(sList); - } - - - /// - /// 导出 - /// - /// - /// - public object ExportData(QueryNeedCompareDataRequest req) - { - var service = new DataCompareService(CurUser); - var bytes = service.ExprotExcel(req); - return File(bytes, xlsxMimeType, $"与衡泰对账_{DateTime.Now:yyyyMMddHHmmss}.xlsx"); - } - - - /// - /// 查询清算时间 - /// - /// - /// - [HttpPost] - public JsonResult GetLiquidationTime(QueryNeedCompareDataRequest req) - { - var service = new DataCompareService(CurUser); - var sList = service.GetLiquidationTime(req); - return Json(sList); - } - /// - /// 检验是日期范围内是否拿到衡泰估值 - /// - /// - public JsonResult CheckHTData(EodTaskSaveReq req) - { - var service = new DataCompareService(CurUser); - var msg= service.CheckHTDataByDate(req.StartDate, req.EndDate); - bool checkSuccess = string.IsNullOrEmpty(msg); - return JsonSuccess("",new { checkSuccess= checkSuccess,msg=msg }); - } - /// - /// 获取衡泰最后一次估值信息 - /// - /// - public JsonResult GetLastSettmentTime() - { - var lastTime = new DataCompareService(CurUser).GetHTLastDate(); - return JsonSuccess("", lastTime); - } - } -} diff --git a/YLErpWeb/Controllers/PushLogController.cs b/YLErpWeb/Controllers/PushLogController.cs deleted file mode 100644 index c886fef4..00000000 --- a/YLErpWeb/Controllers/PushLogController.cs +++ /dev/null @@ -1,96 +0,0 @@ - -using YLErp.Helpers; -using YLErp.Modules.SwapModule; -using YLErp.Modules.SwapModule.Interface; - -namespace YLErp.Web.Controllers -{ - public class PushLogController : BaseController - { - private IPushHTService _pushHTService; - public PushLogController(IPushHTService pushHTService) { - _pushHTService = pushHTService; - } - [MyAuthorize("结算管理-推送衡泰")] - public ActionResult LogList() - { - return View(); - } - /// - /// 推送列表查询json - /// - /// - /// - [HttpPost] - public JsonResult LogQuery(PushLogQueryRequest req) - { - var pushService = new PushLogService(CurUser); - var sList = pushService.SearchList(req); - return Json(sList); - } - - /// - /// 重新推送 - /// - /// - /// - public JsonResult ReSetLog(string enid) - { - var logId=DecryptLong(enid); - var pushLog= new PushLogService(CurUser).ReSetLog(logId); - if (pushLog!=null&& !pushLog.data_stateStr.Contains("成功")) - { - _pushHTService.PushSingle(pushLog); - } - return JsonSuccess(""); - } - /// - /// 删除推送 - /// - /// - /// - public JsonResult DelLog(string enid) - { - var logId = DecryptLong(enid); - new PushLogService(CurUser).DeleteLog(logId); - return JsonSuccess("删除成功"); - } - /// - /// 推送到衡泰 - /// - /// - public async Task SendHT() - { - var tasks = StaticHelper.GetValues(); - foreach (var task in tasks) - { - if (task.Status != TaskStatus.RanToCompletion) - { - return JsonError("仍有推送中的数据,请稍后再试"); - } - } - StaticHelper.DeleteValues(); - var t1= Task.Run(() => - { - _pushHTService.PushClient(); - }); - var t2= Task.Run(() => - { - _pushHTService.PushTrade(); - }); - StaticHelper.SetValues(t1); - StaticHelper.SetValues(t1); - return JsonSuccess(""); - } - /// - /// 获取最后日终估值获取日期 - /// - /// - /// - public JsonResult GetLastSettmentTime() - { - var lastTime = new PushLogService(CurUser).GetLastSettmentTime(valuedateBLL.ValueDate); - return JsonSuccess("",lastTime); - } - } -} diff --git a/YLErpWeb/Program.cs b/YLErpWeb/Program.cs index 6a0c843d..c69cb6a0 100644 --- a/YLErpWeb/Program.cs +++ b/YLErpWeb/Program.cs @@ -14,7 +14,6 @@ using System.Text.Unicode; using YieldChain.Commons; using YLErp.Abstract; using YLErp.Modules.SwapModule; -using YLErp.Modules.SwapModule.Interface; using YLErp.Web.App; using YLErp.Web.App.KafkaTask; using YLErp.Web.Hubs; @@ -51,7 +50,6 @@ try builder.Services.Configure(builder.Configuration.GetSection("KafkaConfig")); builder.Services.AddScoped(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); builder.Services.AddResponseCompression(options => { options.Providers.Add(); @@ -100,28 +98,11 @@ try builder.Services.AddHostedService(); builder.Services.AddHostedService(); - //builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - - //builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); - builder.Services.AddHostedService(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); - builder.Services.AddHostedService(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); diff --git a/YLErpWeb/Views/DataCompare/Index.cshtml b/YLErpWeb/Views/DataCompare/Index.cshtml deleted file mode 100644 index 11f5e0d4..00000000 --- a/YLErpWeb/Views/DataCompare/Index.cshtml +++ /dev/null @@ -1,88 +0,0 @@ -@{ - ViewBag.Title = "与衡泰对账"; - ViewBag.Menu = "结算财务-与衡泰对账"; - Layout = "~/Views/Shared/_MainLayout.cshtml"; -} -@section CSS{ - -} -@section JS{ - - -} -
-
-
- 对账日期 - -
- @Html.MyAceDropdownInput("AssetId", "簿记账户", AssetunitController.GetClientassetunit()) - @Html.ShortInput("TradeNumber", "交易编号") -
- 仅看异常 - -
- - -
- -
- -
- -
- 系统清算时间 - -
-
- 衡泰清算时间 - -
- -
- -
- @Html.Raw(JqGridSimple.OutTable()) -
- -
- @Html.Raw(JqGridSimple.OutTable(1)) -
-
- -
- -
\ No newline at end of file diff --git a/YLErpWeb/Views/PushLog/LogList.cshtml b/YLErpWeb/Views/PushLog/LogList.cshtml deleted file mode 100644 index 5b34e0e7..00000000 --- a/YLErpWeb/Views/PushLog/LogList.cshtml +++ /dev/null @@ -1,62 +0,0 @@ -@{ - ViewBag.Title = "推送衡泰"; - ViewBag.Menu = "结算财务-推送衡泰"; - Layout = "~/Views/Shared/_MainLayout.cshtml"; - var logTypes = JsDataModel.GetPushLogType();//数据类型 - var logStates = JsDataModel.GetPushLogState();//数据状态 -} -@section CSS{ - -} -@section JS{ - - -} -
-
- @Html.MyAceDropdownInput("data_type", "数据类型", logTypes,appendEmptyAll:false,multiple:true) - @Html.MyAceDropdownInput("data_state", "数据状态", logStates,appendEmptyAll:false,multiple:true) - @Html.ShortInput("data_numer", "数据编号") - @Html.SearchDateRange("OptDate", "推送时间") - - @if (CurUser.结算管理_推送衡泰推送) - { - - } - @if (CurUser.结算管理_日终估值获取) - { - - } -
-
- @Html.Raw(JqGridSimple.OutTable()) -
- -
\ No newline at end of file diff --git a/YLErpWeb/Views/SwapTrade2/TradeList.cshtml b/YLErpWeb/Views/SwapTrade2/TradeList.cshtml index cf885914..d016abfe 100644 --- a/YLErpWeb/Views/SwapTrade2/TradeList.cshtml +++ b/YLErpWeb/Views/SwapTrade2/TradeList.cshtml @@ -84,10 +84,6 @@ { } - @if (CurUser.结算管理_推送衡泰推送) - { - - }
diff --git a/YLErpWeb/Views/eod_trade_value/eodExecV2.cshtml b/YLErpWeb/Views/eod_trade_value/eodExecV2.cshtml index 8fb43604..6d5775ae 100644 --- a/YLErpWeb/Views/eod_trade_value/eodExecV2.cshtml +++ b/YLErpWeb/Views/eod_trade_value/eodExecV2.cshtml @@ -8,63 +8,62 @@ minValueDate = valuedateBLL.ValueDate.AddYears(-5).ToString("yyyy-MM-dd"), checkResult = new YLErp.Modules.EodModule.EodCurrencyCheckResult(), isAutoDelaySettlement = PS.Config.IsAutoDelaySettlement, - isShanxigushou = PS.Config.Is山西固收 }; var allVolTypes = SettlementViewModel.GetVolTypes(); var checkedVolTypes = Model.VolTypes.Split(',').Where(n => !string.IsNullOrWhiteSpace(n)).ToArray(); - var dispaly =PS.Config.Is山西固收? "display:none":""; + // var dispaly = PS.Config.Is浙商 ? "display:none" : ""; } -@section CSS{ +@section CSS { } - @section JS{ +@section JS { } -
-
-
异常标的预警: 
-
- -
-
-   - - 上次刷新时间: -
+
+
+
异常标的预警: 
+
+ +
+
+   + + 上次刷新时间:
+
-
-

收盘操作

-

(注:执行历史收盘时请务必按照顺序,连续执行到最近收盘日期,否则报表中数据可能会产生误差!)

-
+
+

收盘操作

+

(注:执行历史收盘时请务必按照顺序,连续执行到最近收盘日期,否则报表中数据可能会产生误差!)

+
-
-
-  开始日期: - - 结束日期: - -
+ +
+  开始日期: + + 结束日期: + +
-
-  价格模式: - - -
+
+  价格模式: + + @* *@ +
-
- 波动率类型: + @*
+ 波动率类型: @foreach (var item in allVolTypes) { var _checked = checkedVolTypes.Contains(item.Value) ? "checked" : ""; } -
+
*@ @if (PS.Config.Company == CompanyEnum.国元固收) {
@@ -94,59 +93,30 @@
} - @if (PS.Config.Is山西固收) - { -
- @if (CurUser.结算管理_日终估值获取) + +
+ + @if (PS.Config.ErpElement.SupportMultiCurrency) + { + + } + @* *@ + @if (System.Diagnostics.Debugger.IsAttached) + { + + } + else + { + if (CurUser.结算管理_收盘操作) { - + } - 衡泰清算时间: -
-
- @if (System.Diagnostics.Debugger.IsAttached) - { - - } - else - { - if (CurUser.结算管理_收盘操作) - { - - } - } -
- } - else - { -
- - @if (PS.Config.ErpElement.SupportMultiCurrency) - { - - } - - @if (System.Diagnostics.Debugger.IsAttached) - { - - } - else - { - if (CurUser.结算管理_收盘操作) - { - - } - } -
- } + } +

- @if (PS.Config.Is山西固收) - { - 衡泰相关 - } 收盘历史 @if (CurUser.结算管理_日终价格查看) { diff --git a/YLErpWeb/appsettings.local.json b/YLErpWeb/appsettings.local.json index 19682449..ba7e8acd 100644 --- a/YLErpWeb/appsettings.local.json +++ b/YLErpWeb/appsettings.local.json @@ -7,11 +7,11 @@ }, "AllowedHosts": "*", "ConnectionStrings": { - "ylcms": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=yltrs_ylcms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", - "yladmin": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=yltrs_admin;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", - "ylclient": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=yltrs_client;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", - "bondoms": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=bond_oms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", - // "apex_oracle": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=122.112.205.57)(PORT=11521)))(CONNECT_DATA=(SERVICE_NAME=xe)));User ID=system;Password=oracle;" + "ylcms": "server=139.196.109.225;uid=root;pooling=true;port=3306;pwd=Midnight001!@#$;database=yltrs_ylcms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", + "yladmin": "server=139.196.109.225;uid=root;pooling=true;port=3306;pwd=Midnight001!@#$;database=yltrs_admin;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", + "ylclient": "server=139.196.109.225;uid=root;pooling=true;port=3306;pwd=Midnight001!@#$;database=yltrs_client;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;", + "bondoms": "server=139.196.109.225;uid=root;pooling=true;port=3306;pwd=Midnight001!@#$;database=bond_oms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;" + // "apex_oracle": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=122.112.205.57)(PORT=11521)))(CONNECT_DATA=(SERVICE_NAME=xe)));User ID=system;Password=oracle;" }, "AppSettings": { "VirtualPathRoot": "", @@ -37,53 +37,20 @@ "MessageTimeoutMs": 3000, // 控制生产者等待消息确认的时间,单位是毫秒 "ClientRateTopic": "ylClientRateTopic", //客户互换费率生产topic "HedgingAccountTopic": "ylHedgingAccountTopic", //对冲账户生产topic + "AccountCapitalTopicGroupId": "YiLian_OnRspAccountCapitalConsumer", //账户资金消费组 "ReqAccountCapitalTopic": "ReqAccountCapital", //账户资金请求topic "OnRspAccountCapitalTopic": "OnRspAccountCapital", //账户资金请求返回topic - "ReqInterestRateSwapInsertTopic": "ReqInterestRateSwapInsert", //收益互换交易推送请求topic - "OnRspInterestRateSwapInsertTopic": "OnRspInterestRateSwapInsert", //收益互换交易推送请求响应topic - "OnRspInterestRateSwapInsertTopicGroupId": "OnRspInterestRateSwapInsertConsumer1", //收益互换交易推送请求响应消费组 - "AccountCapitalTopicGroupId": "YiLian_OnRspAccountCapitalConsumer", //账户资金消费组 - "ReqAssetSwapInsertTopic": "ReqAssetSwapInsert", //互换资产交易推送请求 - "OnRspAssetSwapInsertTopic": "OnRspAssetSwapInsert", //互换资产交易推送请求响应 - "OnRspAssetSwapInsertTopicGroupId": "OnRspAssetSwapInsertConsumer", //互换资产交易推送请求响应消费组 - "ReqMarginInsertTopic": "ReqMarginInsert", //预付金交易推送请求 - "OnRspMarginInsertTopic": "OnRspMarginInsert", //预付金交易推送请求响应 - "OnRspMarginInsertTopicGroupId": "OnRspMarginInsertConsumer", //预付金交易推送请求响应消费组 - "ReqAcctSwapTerminateTopic": "ReqAcctSwapTerminate", //平仓推送请求 - "OnRspAcctSwapTerminateTopic": "OnRspAcctSwapTerminate", //平仓推送请求响应 - "OnRspAcctSwapTerminateTopicGroupId": "OnRspAcctSwapTerminateConsumer", //平仓推送请求响应消费组 - "ReqCalcBondTopic": "ReqCalcBond", //互换成交收益率计算器topic - "OnRspCalcBondTopic": "OnRspCalcBond", //互换成交收益率计算器消费topic - "OnRspCalcBondTopicGroupId": "OnRspCalcBondConsumer", //互换成交收益率计算器消费topic消费组 "AutoOffsetReset": 1, //Latest(0),Earliest(1),Error(2) "EnableCalcBongd": false, //是否启用kafka计算 "ReqClientRiskCheckTopic": "YiLian_ReqClientRiskCheck", //客户风控检查 "ReqClientRiskCheckConsumerTopic": "YiLian_OnRspClientRiskCheck", //客户风控检查消费者 "ReqClientRiskCheckTopicGroupId": "YiLian_ReqClientRiskCheckConsumer1", //客户风控检查消费者 - "ReqCounterPartyInfoInsertTopic": "ReqCounterPartyInfoInsert", //交易对手信息导入请求 - "OnRspCounterPartyInsertTopic": "OnRspCounterPartyInsert", //交易对手信息导入请求响应 - "OnRspCounterPartyInsertTopicGroupId": "OnRspCounterPartyInsertConsumer", //交易对手信息导入请求响应消费组 - "ReqCounterPartyCashAccoutInsertTopic": "ReqCounterPartyCashAccoutInsert", //交易对手资金账户信息导入请求 - "OnRspCounterPartyCashAccoutInsertTopic": "OnRspCounterPartyCashAccoutInsert", //交易对手资金账户信息请求响应 - "OnRspCounterPartyCashAccoutInsertTopicGroupId": "OnRspCounterPartyCashAccoutInsertConsumer", //交易对手资金账户信息请求响应消费组 - "RtnInterestRateSwapTopic": "RtnInterestRateSwap", //收益互换回执消费 - "RtnInterestRateSwapTopicGroupId": "RtnInterestRateSwapConsumer1", //收益互换回执消费组 - "RtnAssetSwapTopic": "RtnAssetSwap", //互换资产交易回执消费 - "RtnAssetSwapTopicGroupId": "RtnAssetSwapConsumer1", //互换资产交易回执消费组 - "RtnMarginTopic": "RtnMargin", //预付金交易回执消费 - "RtnMarginTopicGroupId": "RtnMarginConsumer1", //预付金交易回执消费组 - "RtnAcctSwapTerminateTopic": "RtnAcctSwapTerminate", //合约终止回执消费 - "RtnAcctSwapTerminateTopicGroupId": "RtnAcctSwapTerminateConsumer", //合约终止回执消费组 - "RtnInterestRateSwapAccountTopic": "RtnInterestRateSwapAccount", //收益互换日终资金流水回执消费 - "RtnInterestRateSwapAccountTopicGroupId": "RtnInterestRateSwapAccountConsumer1", //收益互换日终资金流水回执消费组 "ReqClientMonitorTopic": "YiLian_ReqClientMonitor", //客户资金监控 "OnRspClientMonitorConsumerTopic": "YiLian_OnRspClientMonitor", //客户资金监控消费者 "ReqClientMonitorTopicGroupId": "YiLian_ReqClientMonitorConsumer1", //客户资金监控消费组 "ReqClientMonitorSingleTopic": "YiLian_ReqClientMonitorSingle", //单个客户资金监控 "OnRspClientMonitorSingleConsumerTopic": "YiLian_OnRspClientMonitorSingle", //单个客户资金监控 "ReqClientMonitorSingleTopicGroupId": "YiLian_ReqClientMonitorSingleConsumer1", //单个客户资金监控 - "ExchangeTradeConsumerTopic": "RtnAssetSwapDb", //对冲交易消费 topic - "ExchangeTradeConsumerTopicGroupId": "RtnAssetSwapDbGroup1", //对冲交易消费 Group, "TrsExchangeTradeConsumerTopic": "YiLian_HedgingOrder", //TRS对冲交易消费 topic "TrsExchangeTradeConsumerTopicGroupId": "YiLian_HedgingOrderGroup1", //TRS对冲交易消费 Group "YiLian_ReqHedgingOrderCancelTopic": "YiLian_ReqHedgingOrderCancel", //TRS对冲交易撤单请求消费 topic diff --git a/YLErpWeb/wwwroot/Scripts/app/datacompare/list.js b/YLErpWeb/wwwroot/Scripts/app/datacompare/list.js deleted file mode 100644 index 0cd13aaa..00000000 --- a/YLErpWeb/wwwroot/Scripts/app/datacompare/list.js +++ /dev/null @@ -1,328 +0,0 @@ -var g_grid = {}; -var query_data = {}; - -$(function () { - var PostData = {}; - - $(".datepicker").datepicker({ - changeMonth: true, - changeYear: true, - showButtonPanel: true, - showOtherMonths: true, - selectOtherMonths: true - }); - - grid = jQuery('#listGrid').jqGrid({ - cmTemplate: { - width: 80, - align: 'center', - sortable: false - }, - url: '/DataCompare/QueryNeedCompareData', - datatype: 'json', - multiselect: false, - height: '340px', - width: '96%', - autowidth: false, - shrinkToFit: false, - viewrecords: true, - jsonReader: { repeatitems: false }, - caption: '', - mtype: 'POST', - postData: PostData, - colModel: colModelGrid, - pager: jQuery('#pagerGrid'), - pagerpos: 'left', - loadComplete: gridComplete, - rowNum: 20, - rowList: [20, 30, 50, 200, 10000] - }); - - grid2 = jQuery('#listGrid1').jqGrid({ - cmTemplate: { - width: 80, - align: 'center', - sortable: false - }, - url: '/DataCompare/QueryOnlyHengTaiData', - datatype: 'json', - multiselect: false, - height: '340px', - width: '96%', - autowidth: false, - shrinkToFit: false, - viewrecords: true, - jsonReader: { repeatitems: false }, - caption: '', - mtype: 'POST', - postData: PostData, - colModel: colModelGrid2, - pager: jQuery('#pagerGrid1'), - pagerpos: 'left', - rowNum: 20, - rowList: [20, 30, 50, 200, 10000] - }); - - function keyEnter(event) { - try { - var e = event ? event : (window.event ? window.event : null); - if (e.keyCode === 13) { - SearchClick(true); - } - } catch (e) { - // - } - } - - document.onkeydown = keyEnter; -}); - -function gridComplete() { - var jgrid = jQuery('#listGrid'); - main.setcolumnChooser(jgrid, page.configcolumn_data_comparehetai); - -} - - -function showcolumnChooser() { - var jgrid = jQuery('#listGrid'); - main.showcolumnChooser(jgrid, page.configcolumn_data_comparehetai); -} - -var hideObj = { clientWidth: 160 }; - -var i = 0; -var getColModelGrid = function () { - var col = [{ - name: 'id', - hidden: true, - optionHide: true - }, { - name: 'ValueDate', - label: '对账日期', - width: 80, - sortable: true, - align: 'center', - formatter: 'date' - }, { - name: 'AssetName', - label: '簿记账户', - width: 140, - sortable: true, - align: 'center' - }, { - name: 'TradeStatus', - label: '交易状态', - index: "data_type", - width: 90, - align: 'center' - }, { - name: 'TradeNumber', - label: '交易编号', - width: 150, - sortable: false, - align: 'center' - }, { - name: 'TradeDate', - label: '交易日期', - width: 80, - sortable: false, - align: 'center', - formatter: 'date' - }, { - name: 'StartDate', - label: '开始日期', - width: 80, - sortable: false, - align: 'center', - formatter: 'date' - }, { - name: 'EndDate', - label: '到期日期', - width: 80, - sortable: false, - align: 'center', - formatter: 'date' - }, { - name: 'StructType', - label: '结构类型', - width: 90, - sortable: false, - align: 'center' - }, { - name: 'QuoteCurrency', - label: '计价货币', - width: 90, - sortable: false, - align: 'center' - }, { - name: 'ClientName', - label: '交易对手方', - width: 150, - sortable: false, - align: 'center' - }, { - name: 'TraderName', - label: '交易员', - width: 90, - sortable: false, - align: 'center' - }, { - name: 'SwapType', - label: '互换类型', - width: 120, - sortable: false, - align: 'center' - }, { - name: 'StockEqvNotional', - label: '名义本金', - width: 120, - sortable: false, - align: 'center' - }, { - name: 'StockEqvNotionalV2', - label: '衡泰名义本金', - width: 120, - sortable: false, - align: 'center' - }, { - name: 'Pv', - label: '持仓市值', - width: 120, - sortable: false, - align: 'center' - }, { - name: 'PvV2', - label: '衡泰持仓市值', - width: 120, - sortable: false, - align: 'center' - }, { - name: 'CheckResult', - label: '是否一致', - width: 90, - sortable: false, - align: 'center', - formatter: function (cellValue, options, rowObject) { - if (cellValue) { - return "" + rowObject.CheckResultStr + ""; - } - return "异常"; - } - }] - return col; -}; - -var getColModelGrid2 = function () { - var col = [{ - name: 'id', - hidden: true, - optionHide: true - }, { - name: 'ValueDate', - label: '对账日期', - width: 120, - sortable: true, - align: 'center', - formatter: 'date' - }, { - name: 'TradeNumber', - label: '交易编号(外部成交编号)', - width: 200, - sortable: false, - align: 'center' - }, { - name: 'StartDate', - label: '开始日期', - width: 100, - sortable: false, - align: 'center', - formatter: 'date' - }, { - name: 'EndDate', - label: '到期日期', - width: 100, - sortable: false, - align: 'center', - formatter: 'date' - },{ - name: 'StockEqvNotionalV2', - label: '衡泰名义本金', - width: 100, - sortable: false, - align: 'center' - }, { - name: 'PvV2', - label: '衡泰持仓市值', - width: 100, - sortable: false, - align: 'center' - }] - return col; -}; - -var colModelGrid = getColModelGrid(); - -var colModelGrid2 = getColModelGrid2(); - - - - -function reloadRate() { - //重新加载 - SearchClick(); -} - -function SearchClick(isSearchclick) { - var listGrid = $('#listGrid'); - - reloadGridData(listGrid); - - var listGrid1 = $('#listGrid1'); - - reloadGridData(listGrid1); - - - main.post("/DataCompare/GetLiquidationTime", query_data).done(function (res) { - console.log(res); - $("#sysTime").text(res.SystemLiquidationTime); - $("#hengTaiTime").text(res.HengTaiLiquidationTime); - }); - -} - -var query_data = {}; -function reloadGridData(listGrid) { - listGrid.appendPostData({ ValueDate: $("#ValueDate").val() }); - listGrid.appendPostData({ AssetId: $("#AssetId").val() }); - listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() }); - listGrid.appendPostData({ ShowException: $("#ShowException").is(":checked") }); - query_data = listGrid.jqGrid('getPostData'); - if (typeof isSearchclick !== "undefined" && isSearchclick) { - //点击搜索时默认第一页 - listGrid.jqGrid('setGridParam', - { - page: 1 - }); - } - - listGrid.trigger('reloadGrid'); -} - - -function ExportClick() { - var $form = $('#exportForm').html(''); - $form.attr("action", '/DataCompare/ExportData') - _.each(query_data, (val, key) => { - if (!val) { - val = ''; - } else if (_.isArray(val)) { - _.each(val, x => { - $form.append(``); - }); - return; - } - $form.append(``); - }); - $form.submit(); -} diff --git a/YLErpWeb/wwwroot/Scripts/app/eod/eodExecV2.js b/YLErpWeb/wwwroot/Scripts/app/eod/eodExecV2.js index a5c3577e..dc10d035 100644 --- a/YLErpWeb/wwwroot/Scripts/app/eod/eodExecV2.js +++ b/YLErpWeb/wwwroot/Scripts/app/eod/eodExecV2.js @@ -65,9 +65,7 @@ $(function () { checkExerciseTradeUnderly(false); reportMgr.init(); - if (page.isShanxigushou) { - loadSettmentLogTime(); - } + }); //保存收盘任务 @@ -112,20 +110,8 @@ function saveEodTask(isDebug) { } } -function _saveEodTask(data) { - main.post("/DataCompare/CheckHTData", data).done(function (res) { - if (res.obj.checkSuccess) { - eodTask(data); - } else { - main.confirm("检测到" + res.obj.msg + ",是否要继续?", function () { - eodTask(data); - }); - } - }) - -} -function eodTask(data) { +function _saveEodTask(data) { main.post('/eod_trade_value/AjaxSaveEodTask', data).done(function () { main.message('收盘任务已加入到执行计划中'); }).always(function () { @@ -331,20 +317,4 @@ function checkExerciseTradeUnderly(isupdate) { } }); } -//衡泰清算时间 -function loadSettmentLogTime() { - main.post("/DataCompare/GetLastSettmentTime", {}, { waitMe: false, suppressError: true }).done(function (resp) { - $('#lastHTSettmentTime').text(resp.obj); - if (timeoutId && !resp.obj.indexOf($("#endDate").val())) { - clearTimeout(timeoutId); - } - }) -} -let timeoutId = null; -function ComparisonClick() { - main.post("/trs_hub_api/dataVerify/sendRequest", { startDate: $("#startDate").val(), endDate: $("#endDate").val() }).done(function (resp) { - main.message(resp.message); - timeoutId = setInterval(loadSettmentLogTime, 5000); - }) -} diff --git a/YLErpWeb/wwwroot/Scripts/app/pushlog/list.js b/YLErpWeb/wwwroot/Scripts/app/pushlog/list.js deleted file mode 100644 index 312efea2..00000000 --- a/YLErpWeb/wwwroot/Scripts/app/pushlog/list.js +++ /dev/null @@ -1,224 +0,0 @@ -var g_grid = {}; -var query_data = {}; - -$(function () { - var PostData = {}; - - $(".datepicker").datepicker({ - changeMonth: true, - changeYear: true, - showButtonPanel: true, - showOtherMonths: true, - selectOtherMonths: true - }); - - grid = jQuery('#listGrid').jqGrid({ - cmTemplate: { - width: 80, - align: 'center', - sortable: false - }, - url: '/PushLog/LogQuery', - datatype: 'json', - multiselect: false, - height: 'auto', - width: '96%', - autowidth: false, - shrinkToFit: false, - viewrecords: true, - jsonReader: { repeatitems: false }, - caption: '', - mtype: 'POST', - postData: PostData, - afterInsertRow: AfterInsertRow, - onSelectRow: rowclick, - ondblClickRow: rowdblclick, - colModel: colModelGrid, - pager: jQuery('#pagerGrid'), - pagerpos: 'left', - rowNum: 20, - rowList: [20, 30, 50, 200, 10000], - footerrow: false, - loadComplete: gridComplete, - onPaging: onJqgridPaging, - }); - - function keyEnter(event) { - try { - var e = event ? event : (window.event ? window.event : null); - if (e.keyCode === 13) { - SearchClick(true); - } - } catch (e) { - // - } - } - - document.onkeydown = keyEnter; -}); - -var hideObj = { clientWidth: 160 }; - -var i = 0; -var getColModelGrid = function () { - var col = [{ - name: 'EncryptId', - hidden: true, - optionHide: true - }, { - name: 'data_state', - hidden: true, - optionHide: true - }, { - name: '', - label: '操作', - align: 'center', - width: 140, - formatter: showToolName - }, { - name: 'odata_no', - label: 'SERIAL_NO', - width: 160, - sortable: true, - align: 'center' - }, { - name: 'data_number', - label: '数据编号', - width: 160, - sortable: true, - align: 'center' - }, { - name: 'data_typeStr', - label: '推送类型', - index: "data_type", - width: 160, - align: 'center' - }, { - name: 'data_stateStr', - label: '推送状态', - width: 90, - index: "data_state", - sortable: false, - align: 'center' - } - , { - name: 'data_req', - label: '推送请求', - sortable: false, - hidden: true, - optionHide: true - }, { - name: 'data_resp', - label: '请求响应', - sortable: false, - hidden: true, - optionHide: true - }, { - name: 'create_time', - label: '创建时间', - width: 160, - align: 'center', - sortable: true, - formatter: 'datetime' - }, { - name: 'update_time', - label: '更新时间', - width: 160, - align: 'center', - sortable: true, - formatter: 'datetime' - }] - return col; -}; - -var colModelGrid = getColModelGrid(); - -function gridComplete() { - $('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll(); -} - -function rowdblclick(rowid) { - var rowData = $(this).getRowData(rowid); - $("#req_text").val(rowData.data_req); - $("#resp_text").val(rowData.data_resp); - layer.open({ - type: 1, - area: ['60%', '80%'], - fixed: false, //不固定 - maxmin: true, - content: $("#detailForm"), - }); -} - -function reloadRate() { - //重新加载 - SearchClick(); -} - -function showToolName(cellValue, options, rowObject) { - var html = ""; - if (page.canPush=="True") { - if (rowObject.data_stateStr.indexOf("接收") < 0 && rowObject.data_stateStr.indexOf("成功") < 0) { - html = "" - .template(rowObject.EncryptId); - } - } - if (page.canDelete == "True") { - html += - "" - .template(rowObject.EncryptId); - } - return html; -} -function resetLog(id) { - main.confirm("确定要重新推送吗?", function () { - main.post("/PushLog/ReSetLog?enid=" + id).done(function (resp) { - SearchClick(); - layer.closeMe(); - }) - }); -} -function delLog(id) { - main.confirm("确定要删除吗?", function () { - main.post("/PushLog/DelLog?enid=" + id).done(function (resp) { - SearchClick(); - layer.closeMe(); - }) - }); -} -function SearchClick(isSearchclick) { - var listGrid = $('#listGrid'); - - listGrid.appendPostData({ data_types: $("#data_type").val() == null ? "" : $("#data_type").val() }); - listGrid.appendPostData({ data_states: $("#data_state").val() == null ? "" : $("#data_state").val() }); - listGrid.appendPostData({ data_number: $("#data_numer").val() }); - listGrid.appendPostData({ OptDateStart: $("#DateFromOptDate").val() }); - listGrid.appendPostData({ OptDateEnd: $("#DateToOptDate").val() }); - query_data = listGrid.jqGrid('getPostData'); - if (typeof isSearchclick !== "undefined" && isSearchclick) { - //点击搜索时默认第一页 - listGrid.jqGrid('setGridParam', - { - page: 1 - }); - } - - listGrid.trigger('reloadGrid'); -} - -function PushClick() { - main.confirm("确定要推送衡泰吗?", function () { - main.post("/PushLog/SendHT").done(function (resp) { - main.message("推送任务成功"); - SearchClick(); - }) - }); - -} -function ComparisonClick() { - main.post("/trs_hub_api/dataVerify/sendRequest", {}).done(function (resp) { - main.message(resp.message); - SearchClick(); - }) -} - diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeList.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeList.js index 83ccbd3f..a955aed0 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeList.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeList.js @@ -584,13 +584,5 @@ function importEodFile() { function importClose() { layer.closeAll(); } -function PushClick() { - main.confirm("确定要推送衡泰吗?", function () { - main.post("/PushLog/SendHT").done(function (resp) { - main.message("推送任务成功"); - }) - }); - -} window.reloadData = reloadtrade; \ No newline at end of file diff --git a/YLWinSer/RealTimeCalcPositionService/BondCalcKafkTask.cs b/YLWinSer/RealTimeCalcPositionService/BondCalcKafkTask.cs deleted file mode 100644 index 5ac688c0..00000000 --- a/YLWinSer/RealTimeCalcPositionService/BondCalcKafkTask.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using YLErp.BLL.Eod; -using YLErp.Cache; -using YLErp; -using YLErp.Helpers; - -namespace RealTimeCalcPositionService -{ - public class BondCalcKafkTask : IHostedService, IDisposable - { - private readonly IYcLogger _logger; - private KafkaConsumerHelper _rspCalcBondTopicConsumer; - private string onRspCalcBondTopic = string.Empty; - private string onRspCalcBondTopicGroupId = string.Empty; - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - public BondCalcKafkTask() - { - _logger = LogFactory.GetLogger("BondCalcKafkTask"); - onRspCalcBondTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspCalcBondTopic"); - onRspCalcBondTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_OnRspCalcBondTopicGroupId"); - _rspCalcBondTopicConsumer = new KafkaConsumerHelper(onRspCalcBondTopicGroupId, onRspCalcBondTopic); - } - - public void Dispose() - { - _cts.Dispose(); - } - - - public Task StartAsync(CancellationToken cancellationToken) - { - _logger.Info("ClientBalanceTask task is starting."); - Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); - return Task.CompletedTask; - } - - public async Task StopAsync(CancellationToken cancellationToken) - { - _logger.Info("ClientBalanceTask task is stopping."); - _cts.Cancel(); - await Task.CompletedTask; - } - - private void ExecuteTask(CancellationToken stoppingToken) - { - while (!stoppingToken.IsCancellationRequested) - { - try - { - RealtimePnlCalc.ConsumerBondCalcResp(_rspCalcBondTopicConsumer); - - } - catch (Exception ex) - { - _logger.Error(ex, "收益率接收计算结果服务异常:" + ex.Message); - } - - } - } - } -} diff --git a/YLWinSer/RealTimeCalcPositionService/Program.cs b/YLWinSer/RealTimeCalcPositionService/Program.cs index 9ca04523..c5d8e10e 100644 --- a/YLWinSer/RealTimeCalcPositionService/Program.cs +++ b/YLWinSer/RealTimeCalcPositionService/Program.cs @@ -27,7 +27,6 @@ internal class Program services.AddSingleton(); services.AddHostedService(); services.AddHostedService(); - services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); }).ConfigureLogging(logging =>