736 lines
43 KiB
C#
736 lines
43 KiB
C#
using System.Data;
|
|
using YLErp.DBModels.Consts;
|
|
using YLErp.DBModels.Enums;
|
|
using YLErp.Helpers;
|
|
using YLErp.Modules.SuperviseReportModule.SAC.Common;
|
|
using YLErp.Modules.SuperviseReportModule.SAC.Model;
|
|
using static YLErp.DBModels.Consts.ConsReport;
|
|
|
|
namespace YLErp.Modules.SuperviseReportModule.SAC.Service
|
|
{
|
|
class ReportPeriodicReportISDAService : ReportBaseService
|
|
{
|
|
public ReportPeriodicReportISDAService(OptUserInfo optUser) : base(optUser)
|
|
{
|
|
}
|
|
|
|
protected override string _excelDataSourcePath => "定期报告\\";
|
|
|
|
protected override string _excelDataSourceFileName => "import_ISDA_template.xlsx";
|
|
|
|
protected override DataFlagsEnum BusiDataType => DataFlagsEnum.A1013;
|
|
|
|
private List<OptFlagsEnum>? _validOperationType = null;
|
|
public override List<OptFlagsEnum> ValidOperationType
|
|
{
|
|
get
|
|
{
|
|
_validOperationType ??= new List<OptFlagsEnum>() {
|
|
OptFlagsEnum.A,
|
|
OptFlagsEnum.U,
|
|
OptFlagsEnum.D,
|
|
};
|
|
return _validOperationType;
|
|
}
|
|
}
|
|
|
|
DateTime minDate = DateTime.MinValue;
|
|
DateTime maxDate = DateTime.MinValue;
|
|
protected override SuperviseReportTypeEnum ReportType => SuperviseReportTypeEnum.SAC_PeriodicReportISDA;
|
|
|
|
readonly List<SACReportNotes> noteList = new();
|
|
|
|
public override bool CheckRequestParamer(ReportInfo req, out string errMsg)
|
|
{
|
|
if (!base.CheckRequestParamer(req, out errMsg))
|
|
{
|
|
return false;
|
|
}
|
|
if (req.ISDAReportDate == null)
|
|
{
|
|
errMsg = "ISDA定期报告对应的报告月份不应为空";
|
|
return false;
|
|
}
|
|
switch (req.ISDAReportStatus)
|
|
{
|
|
case OptFlagsEnum.U:
|
|
case OptFlagsEnum.D:
|
|
minDate = req.ISDAReportDate.Value.Date.AddDays(-req.ISDAReportDate.Value.Day).AddDays(1);
|
|
maxDate = req.ISDAReportDate.Value.Date.AddMonths(1).AddDays(-req.ISDAReportDate.Value.Day);
|
|
var note = base.GetReportNotes(ReportType, formatInfoTag(req.ISDAReportDate.Value.ToString("yyyy-MM"))).FirstOrDefault();
|
|
if (note == null)
|
|
{
|
|
errMsg = $"{minDate.ToString("yyyy-MM-dd")}~{maxDate.ToString("yyyy-MM-dd")}不存在报送成功的ISDA定期报告记录,请重新选择";
|
|
return false;
|
|
}
|
|
break;
|
|
case OptFlagsEnum.A:
|
|
if (base.GetReportNotes(ReportType, formatInfoTag(req.ISDAReportDate.Value.ToString("yyyy-MM"))).Any())
|
|
{
|
|
minDate = req.ISDAReportDate.Value.Date.AddDays(-req.ISDAReportDate.Value.Day).AddDays(1);
|
|
maxDate = req.ISDAReportDate.Value.Date.AddMonths(1).AddDays(-req.ISDAReportDate.Value.Day);
|
|
errMsg = $"{minDate.ToString("yyyy-MM-dd")}~{maxDate.ToString("yyyy-MM-dd")}最新ISDA定期报告记录已报送成功,请选择补正";
|
|
return false;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
errMsg = "";
|
|
return true;
|
|
}
|
|
|
|
protected override BodyModel GenerateBody(out bool noData, out List<string> fileList)
|
|
{
|
|
fileList = new List<string>();
|
|
noData = true;
|
|
var model = new BodyModel();
|
|
var cacheValue = formatInfoTag(_reqInfo.ISDAReportDate.Value.ToString("yyyy-MM"));
|
|
if (ReportStatus.CheckCacheInfo(CacheKey, cacheValue))
|
|
{
|
|
return model;
|
|
}
|
|
model.PeriodicReportISDA = new PeriodicReportISDAModel
|
|
{
|
|
OperationType = _operationType
|
|
};
|
|
var note = base.GetReportNotes(ReportType, cacheValue).FirstOrDefault();
|
|
if (note == null && _operationType == OptFlagsEnum.A)
|
|
{
|
|
note = new SACReportNotes()
|
|
{
|
|
InfoCache = $"{{\"Tag\":\"{_reqInfo.ISDAReportDate.Value.ToString("yyyy-MM")}\"}}",
|
|
IsValid = true,
|
|
};
|
|
}
|
|
else
|
|
{
|
|
switch (_operationType)
|
|
{
|
|
case OptFlagsEnum.A:
|
|
noData = true;//新增数据已报送,跳过
|
|
return model;
|
|
case OptFlagsEnum.U:
|
|
note.IsValid = true;
|
|
break;
|
|
case OptFlagsEnum.D:
|
|
note.IsValid = false;
|
|
break;
|
|
case OptFlagsEnum.NONE:
|
|
default:
|
|
throw new ServiceException("未知操作类型");
|
|
}
|
|
}
|
|
if (_operationType != OptFlagsEnum.A)
|
|
{
|
|
model.PeriodicReportISDA.BizID = note.BizId;
|
|
}
|
|
if (_excelDataSource != null)
|
|
{
|
|
var dt = _excelDataSource.Tables["业务统计"];
|
|
model.PeriodicReportISDA.Year = _reqInfo.ISDAReportDate.Value.Year.ToString("0000");
|
|
model.PeriodicReportISDA.Month = _reqInfo.ISDAReportDate.Value.Month.ToString("0");
|
|
model.PeriodicReportISDA.OperationType = _operationType;
|
|
GetPotocolInfo(model, dt, 2, 1);
|
|
GetBusinessInfo(model, dt, 12, 2);
|
|
GetClientInfo(model, dt, 22, 2);
|
|
|
|
dt = _excelDataSource.Tables["履约担保情况"];
|
|
GetSwapPerformanceGuaranteeInfo(model, dt, 2, 1);
|
|
GetOptionPerformanceGuaranteeInfo(model, dt, 16, 1);
|
|
GetPerformanceGuaranteeInfo(model, dt, 29, 1);
|
|
|
|
dt = _excelDataSource.Tables["盈亏情况"];
|
|
GetSettleTradeWinlossInfo(model, dt, 2, 2);
|
|
GetWinlossInfo(model, dt, 17, 1);
|
|
|
|
model.PeriodicReportISDA.IncreaseBusinessDetailsThisMonthTuple = GetIncreaseBusinessDetailsThisMonthTuple();
|
|
model.PeriodicReportISDA.InventoryBusinessDetailsAtTheEndOfThisMonthTuple = GetInventoryBusinessDetailsAtTheEndOfThisMonthTuple();
|
|
model.PeriodicReportISDA.TargetCaseAndHedgeTuple = GetTargetCaseAndHedgeTuple();
|
|
|
|
model.PeriodicReportISDA.ExceID = base.formatExceID();
|
|
}
|
|
ReportStatus.AddCacheInfo(CacheKey, cacheValue);
|
|
noData = string.IsNullOrWhiteSpace(model.PeriodicReportISDA?.MainAgreementLastMonthAccumulatedThisYear);
|
|
if (!noData)
|
|
{
|
|
note.id = 0;
|
|
note.ExceId = model.PeriodicReportISDA.ExceID;
|
|
note.CreateTime = DateTime.Now;
|
|
note.FileTag = FileTag;
|
|
note.ReportType = ReportType;
|
|
note.ReportDate = _reqInfo.ReportDate;
|
|
note.InfoTag = formatInfoTag(_reqInfo.ISDAReportDate.Value.ToString("yyyy-MM"), true);
|
|
note.OptTime = note.CreateTime;
|
|
note.RetCode = "";
|
|
note.RetMsg = "";
|
|
note.ReportResponse = false;
|
|
note.BizId = "";
|
|
note.changeStatus = false;
|
|
noteList.Add(note);
|
|
}
|
|
return model;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取签署协议统计
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetPotocolInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.MainAgreementLastMonthAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.MainAgreementAddedThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.MainAgreementAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.MainAgreementValidedAtEndOfThisMonth = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.SupplementalAgreementLastMonthAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SupplementalAgreementAddedThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.SupplementalAgreementAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.SupplementalAgreementValidedAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.PerformanceGuaranteeAgreementLastMonthAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.PerformanceGuaranteeAgreementAddedThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.PerformanceGuaranteeAgreementAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.PerformanceGuaranteeAgreementValidedAtEndOfThisMonth = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
|
|
row = startRow + 3;
|
|
model.PeriodicReportISDA.TransactionConfirmationLastMonthAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TransactionConfirmationAddedThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.TransactionConfirmationBookAccumulatedThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.TransactionConfirmationValidedAtEndOfThisMonth = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取规模统计表
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetBusinessInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.SWAPNominalCapitalStockAtBeginning = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SWAPIncreasedOriginalTransactionNominalCapitalAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.SWAPNotionalPrincipalAmountAllowedToBeTerminatedAtThisMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.SWAPNominalCapitalStockAtEnding = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
model.PeriodicReportISDA.SwapCategoryNominalPrincipalThisYearCumulativeInitialTransaction = GetDataSetValue(dt, row, startCol + 4).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.OptionOfNotionalPrincipalStockAtBeginning = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OptionIncreasedOriginalTransactionNominalCapitalAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.OptionNotionalPrincipalAmountAllowedToBeTerminatedAtThisMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.OptionOfNotionalPrincipalStockAtEnding = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
model.PeriodicReportISDA.NominalPrincipalOfOptionClassHasBeenAddedToInitialTransaction = GetDataSetValue(dt, row, startCol + 4).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.StockOfSwapContractsAtBeginning = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.NumberOfNewSwapInitialTradingContractsAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.NumberOfSwapContractsToTerminateAtThisMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.StockOfSwapContractsAtEnding = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
model.PeriodicReportISDA.NumberOfSwapContractsIncreasedByThisYear = GetDataSetValue(dt, row, startCol + 4).ToString();
|
|
|
|
row = startRow + 3;
|
|
model.PeriodicReportISDA.StockOfOptionContractsAtBeginning = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.NumberOfNewOptionInitialTradingContractsAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.NumberOfOptionContractsToTerminateAtThisMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.StockOfOptionContractsAtEnding = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
model.PeriodicReportISDA.NumberOfOptionContractsHasIncreasedInitialTransaction = GetDataSetValue(dt, row, startCol + 4).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取客户情况表
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetClientInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.SwapSignedWithTheCustomerThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.NumberOfSwapTradingAccountsAtThisPeriodThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.NumberOfSwapTradingClientStockThisMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.SwapSignedWithTheCustomerLastMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.NumberOfSwapTradingAccountsLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.NumberOfSwapTradingClientStockLastMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.OptionSignedWithTheCustomerThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.NumberOfOptionTradingAccountsThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.NumberOfOptionTradingClientStockThisMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
|
|
row = startRow + 3;
|
|
model.PeriodicReportISDA.OptionSignedWithTheCustomerLastMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.NumberOfOptionTradingAccountsLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.NumberOfOptionTradingClientStockLastMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
|
|
row = startRow + 4;
|
|
model.PeriodicReportISDA.SignedTotalCustomer = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TotalNumberOfTradingAccountsAtThisPeriod = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.TotalNumberOfTradingClientAccounts = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
|
|
row = startRow + 5;
|
|
model.PeriodicReportISDA.SignedTotalCustomerLastMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TotalNumberOfTradingAccountsAtThisPeriodLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.TotalNumberOfTradingClientAccountsLastMonth = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取收益互换类交易的履约担保品收取情况固定表格
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetSwapPerformanceGuaranteeInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.TotalNominalPrincipalAmountOfSwapThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TotalNominalPrincipalAmountOfSwapLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.TheValueOfTheStockSwapInTheCorrespondingPerformanceGuaranteeThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TheValueOfTheStockSwapInTheCorrespondingPerformanceGuaranteeLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.SwapCashCollateralValueThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SwapCashCollateralValueLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 3;
|
|
model.PeriodicReportISDA.SwapSecuritiesCollateralValueThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SwapSecuritiesCollateralValueLastMonthThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 4;
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheSwapBusinessThisMonthFull = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheSwapBusinessLastMonthFull = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 5;
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheSwapBusinessThisMonthNet = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheSwapBusinessLastMonthNet = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 6;
|
|
model.PeriodicReportISDA.SwapNumberOfDefaultCustomersAtThisMonthThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SwapNumberOfDefaultCustomersAtThisMonthLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 7;
|
|
model.PeriodicReportISDA.SwapDefaultTransactionNumberAtThisMonthThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SwapDefaultTransactionNumberAtThisMonthLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 8;
|
|
model.PeriodicReportISDA.TotalSwapDefaultCustomerNumberInThisYearThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TotalSwapDefaultCustomerNumberInThisYearLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 9;
|
|
model.PeriodicReportISDA.SwapNumberOfDefaultCustomersInThisYearThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.SwapNumberOfDefaultCustomersInThisYearLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取场外期权类交易的履约担保品收取情况固定表格
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetOptionPerformanceGuaranteeInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.TotalNominalPrincipalAmountOfOTCOptionsThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TotalNominalPrincipalAmountOfOTCOptionsLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.TheValueOfTheStockOTCOptionsCorrespondingPerformanceGuaranteeThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TheValueOfTheStockOTCOptionsCorrespondingPerformanceGuaranteeLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.OTCOptionsCashCollateralValueThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OTCOptionsCashCollateralValueLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 3;
|
|
model.PeriodicReportISDA.OTCOptionsSecuritiesCollateralValueThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OTCOptionsSecuritiesCollateralValueLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 4;
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheOTCOptionsBusinessThisMonthFull = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheOTCOptionsBusinessLastMonthFull = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 5;
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheOTCOptionsBusinessThisMonthNet = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.ProportionOfTheOverallPerformanceOfTheOTCOptionsBusinessLastMonthNet = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 6;
|
|
model.PeriodicReportISDA.OTCOptionsNumberOfDefaultCustomersAtThisMonthThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OTCOptionsNumberOfDefaultCustomersAtThisMonthLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 7;
|
|
model.PeriodicReportISDA.OTCOptionsTransactionNumberAtThisMonthThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OTCOptionsTransactionNumberAtThisMonthLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 8;
|
|
model.PeriodicReportISDA.TotalOTCOptionsDefaultCustomerNumberInThisYearThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.TotalOTCOptionsDefaultCustomerNumberInThisYearLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 9;
|
|
model.PeriodicReportISDA.OTCOptionsNumberOfDefaultCustomersInThisYearThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OTCOptionsNumberOfDefaultCustomersInThisYearLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取收取履约担保品的使用情况固定表格
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetPerformanceGuaranteeInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.StockTradingCorrespondsToValueOfCollateralAtEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.StockTradingCorrespondsToValueOfCollateralAtEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.CashBalanceAtEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.CashBalanceAtEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.HoldStockMarketValueAtEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.HoldStockMarketValueAtEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 3;
|
|
model.PeriodicReportISDA.HoldMarketValueOfBondsAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.HoldMarketValueOfBondsAtTheEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 4;
|
|
model.PeriodicReportISDA.OwnedAssetManagementProductsAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OwnedAssetManagementProductsAtTheEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 5;
|
|
model.PeriodicReportISDA.OwnedBankFinanceAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.OwnedBankFinanceAtTheEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 6;
|
|
model.PeriodicReportISDA.HoldTrustProductAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.HoldTrustProductAtTheEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 7;
|
|
model.PeriodicReportISDA.InsuranceProductsAreHeldAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.InsuranceProductsAreHeldAtTheEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
|
|
row = startRow + 8;
|
|
model.PeriodicReportISDA.HoldOtherProductsAtTheEndOfThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.HoldOtherProductsAtTheEndOfLastMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取本月了结交易盈亏情况统计
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetSettleTradeWinlossInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
model.PeriodicReportISDA.SettledSwapItemsAtThisMonth = GetDataSetValue(dt, startRow + 0, startCol).ToString();
|
|
model.PeriodicReportISDA.SettledSwapTransactionInvolvesNotionalPrincipalAtThisMonth = GetDataSetValue(dt, startRow + 1, startCol).ToString();
|
|
model.PeriodicReportISDA.SwapIncomeCashFlow = GetDataSetValue(dt, startRow + 2, startCol).ToString();
|
|
model.PeriodicReportISDA.SwapExpensesCashFlow = GetDataSetValue(dt, startRow + 3, startCol).ToString();
|
|
model.PeriodicReportISDA.CashFlowCorrespondingToNetIncomeOnSwapMargin = GetDataSetValue(dt, startRow + 4, startCol).ToString();
|
|
model.PeriodicReportISDA.SwapHedgeCost = GetDataSetValue(dt, startRow + 5, startCol).ToString();
|
|
model.PeriodicReportISDA.SettledOptionItemsAtThisMonth = GetDataSetValue(dt, startRow + 6, startCol).ToString();
|
|
model.PeriodicReportISDA.SettledOptionTransactionInvolvesNotionalPrincipalAtThisMonth = GetDataSetValue(dt, startRow + 7, startCol).ToString();
|
|
model.PeriodicReportISDA.OptionPremiumIncome = GetDataSetValue(dt, startRow + 8, startCol).ToString();
|
|
model.PeriodicReportISDA.OptionHedgeCost = GetDataSetValue(dt, startRow + 9, startCol).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取本月会计损益统计
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <param name="dt"></param>
|
|
/// <param name="startRow"></param>
|
|
/// <param name="startCol"></param>
|
|
private void GetWinlossInfo(BodyModel model, DataTable dt, int startRow, int startCol)
|
|
{
|
|
var row = startRow + 0;
|
|
model.PeriodicReportISDA.BalanceOfSwapRealizedGainsAndLossesAtThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.BalanceOfOptionRealizedGainsAndLossesAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.BalanceOfSwapRealizedGainsAndLossesAtThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.BalanceOfOptionRealizedGainsAndLossesAtThisYear = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
|
|
row = startRow + 1;
|
|
model.PeriodicReportISDA.BalanceOfSwapChangedGainsAndLossesInFairValueAtThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.BalanceOfOptionChangedGainsAndLossesInFairValueAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.BalanceOfSwapChangedGainsAndLossesInFairValueAtThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.BalanceOfOptionChangedGainsAndLossesInFairValueAtThisYear = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
|
|
row = startRow + 2;
|
|
model.PeriodicReportISDA.BalanceOfSwapTotalGainsAndLossesAtThisMonth = GetDataSetValue(dt, row, startCol + 0).ToString();
|
|
model.PeriodicReportISDA.BalanceOfOptionTotalGainsAndLossesAtThisMonth = GetDataSetValue(dt, row, startCol + 1).ToString();
|
|
model.PeriodicReportISDA.BalanceOfSwapTotalGainsAndLossesAtThisYear = GetDataSetValue(dt, row, startCol + 2).ToString();
|
|
model.PeriodicReportISDA.BalanceOfOptionTotalGainsAndLossesAtThisYear = GetDataSetValue(dt, row, startCol + 3).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取本月新增业务明细
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private List<ISDAIncreaseBusinessDetailsThisMonthModel> GetIncreaseBusinessDetailsThisMonthTuple()
|
|
{
|
|
var result = new List<ISDAIncreaseBusinessDetailsThisMonthModel>();
|
|
if (_excelDataSource != null && _excelDataSource.Tables.Contains("本月新增业务明细"))
|
|
{
|
|
var dt = _excelDataSource.Tables["本月新增业务明细"];
|
|
for (var i = 1; i < dt.Rows.Count; i++)
|
|
{
|
|
var colHead = dt.Rows[i][0]?.ToString();
|
|
if (string.IsNullOrWhiteSpace(colHead) || colHead.Contains("合计"))
|
|
{
|
|
//第一列空白说明数据结束了;
|
|
break;
|
|
}
|
|
var model = new ISDAIncreaseBusinessDetailsThisMonthModel
|
|
{
|
|
NameOfSecuritiesCompany = GetDataSetValue(dt, i, 1).ToString(),
|
|
NameOfCounterparty = GetDataSetValue(dt, i, 2).ToString(),
|
|
NameOfCounterpartyProduct = GetDataSetValue(dt, i, 3).ToString(),
|
|
TradeConfirmationNumber = GetDataSetValue(dt, i, 4),
|
|
TransactionConfirmationNumber = GetDataSetValue(dt, i, 5)
|
|
};
|
|
if (model.TransactionConfirmationNumber.IsNullOrWhiteSpace())
|
|
{
|
|
model.TransactionConfirmationNumber = base.GetBizIdFromInfoTag(model.TradeConfirmationNumber);
|
|
}
|
|
model.BusinessType = ConsReport.BusinessTypeMap[GetDataSetValue(dt, i, 6).ToString()];
|
|
model.NotionalPrincipalAmountLNotionalPrincipalAmount = GetDataSetValue(dt, i, 7).ToString();
|
|
model.SNotionalPrincipalAmount = GetDataSetValue(dt, i, 8).ToString();
|
|
model.StartDay = GetDataSetValue(dt, i, 9).ToString();
|
|
model.DueDate = GetDataSetValue(dt, i, 10).ToString();
|
|
model.InvestmentTargetType = ConsReport.UndrlygAssetTypeMap[GetDataSetValue(dt, i, 11).ToString()];
|
|
model.UndrlygAssetName = GetDataSetValue(dt, i, 12).ToString();
|
|
model.UndrlygAssetCode = GetDataSetValue(dt, i, 13).ToString();
|
|
model.OptionObjectSecondClass = ConsReport.SwapUndrlygAssetDtldTypeMap[GetDataSetValue(dt, i, 14).ToString()];
|
|
model.SwapObjectSecondClass = ConsReport.SwapUndrlygAssetDtldTypeMap[GetDataSetValue(dt, i, 15).ToString()];
|
|
model.NonAnnualOptionFee = GetDataSetValue(dt, i, 16).ToString();
|
|
model.OptionType = ConsReport.OptionStructureTypeMap[GetDataSetValue(dt, i, 17).ToString()];
|
|
result.Add(model);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取本月末存量业务明细
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private List<ISDAInventoryBusinessDetailsAtTheEndOfThisMonthModel> GetInventoryBusinessDetailsAtTheEndOfThisMonthTuple()
|
|
{
|
|
var result = new List<ISDAInventoryBusinessDetailsAtTheEndOfThisMonthModel>();
|
|
if (_excelDataSource != null && _excelDataSource.Tables.Contains("本月末存量业务明细"))
|
|
{
|
|
var dt = _excelDataSource.Tables["本月末存量业务明细"];
|
|
for (var i = 1; i < dt.Rows.Count; i++)
|
|
{
|
|
var colHead = dt.Rows[i][0]?.ToString();
|
|
if (string.IsNullOrWhiteSpace(colHead) || colHead.Contains("合计"))
|
|
{
|
|
//第一列空白说明数据结束了;
|
|
break;
|
|
}
|
|
var model = new ISDAInventoryBusinessDetailsAtTheEndOfThisMonthModel
|
|
{
|
|
NameOfSecuritiesCompany = GetDataSetValue(dt, i, 1).ToString(),
|
|
NameOfCounterparty = GetDataSetValue(dt, i, 2).ToString(),
|
|
NameOfCounterpartyProduct = GetDataSetValue(dt, i, 3).ToString(),
|
|
TradeConfirmationNumber = GetDataSetValue(dt, i, 4),
|
|
TransactionConfirmationNumber = GetDataSetValue(dt, i, 5)
|
|
};
|
|
if (model.TransactionConfirmationNumber.IsNullOrWhiteSpace())
|
|
{
|
|
model.TransactionConfirmationNumber = base.GetBizIdFromInfoTag(model.TradeConfirmationNumber);
|
|
}
|
|
model.BusinessType = ConsReport.BusinessTypeMap[GetDataSetValue(dt, i, 6).ToString()];
|
|
model.NotionalPrincipalAmountLNotionalPrincipalAmount = GetDataSetValue(dt, i, 7).ToString();
|
|
model.SNotionalPrincipalAmount = GetDataSetValue(dt, i, 8).ToString();
|
|
model.StartDay = GetDataSetValue(dt, i, 9).ToString();
|
|
model.DueDate = GetDataSetValue(dt, i, 10).ToString();
|
|
model.InvestmentTargetType = ConsReport.UndrlygAssetTypeMap[GetDataSetValue(dt, i, 11).ToString()];
|
|
model.UndrlygAssetName = GetDataSetValue(dt, i, 12).ToString();
|
|
model.UndrlygAssetCode = GetDataSetValue(dt, i, 13).ToString();
|
|
model.UndrlygAssetTradgPlc = GetDataSetValue(dt, i, 14).ToString();
|
|
model.OptionObjectSecondClass = ConsReport.SwapUndrlygAssetDtldTypeMap[GetDataSetValue(dt, i, 15).ToString()];
|
|
model.SwapObjectSecondClass = ConsReport.SwapUndrlygAssetDtldTypeMap[GetDataSetValue(dt, i, 16).ToString()];
|
|
model.NonAnnualOptionFee = GetDataSetValue(dt, i, 17).ToString();
|
|
model.OptionType = ConsReport.OptionStructureTypeMap[GetDataSetValue(dt, i, 18).ToString()];
|
|
model.MaitainMarginRation = GetDataSetValue(dt, i, 19).ToString();
|
|
model.CorrelationCoefficient = GetDataSetValue(dt, i, 20).ToString();
|
|
model.LongPositionContractValue = GetDataSetValue(dt, i, 21).ToString();
|
|
model.ShortPositionContractValue = GetDataSetValue(dt, i, 22).ToString();
|
|
result.Add(model);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取标的情况与对冲
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private List<ISDATargetCaseAndHedgeModel> GetTargetCaseAndHedgeTuple()
|
|
{
|
|
var result = new List<ISDATargetCaseAndHedgeModel>();
|
|
if (_excelDataSource != null && _excelDataSource.Tables.Contains("标的情况与对冲"))
|
|
{
|
|
var dt = _excelDataSource.Tables["标的情况与对冲"];
|
|
for (var i = 1; i < dt.Rows.Count; i++)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(dt.Rows[i][0]?.ToString()))
|
|
{
|
|
//第一列空白说明数据结束了;
|
|
break;
|
|
}
|
|
var model = new ISDATargetCaseAndHedgeModel
|
|
{
|
|
NameOfSecuritiesCompany = GetDataSetValue(dt, i, 1).ToString(),
|
|
BusinessType = ConsReport.BusinessTypeMap[GetDataSetValue(dt, i, 2).ToString()],
|
|
InvestmentTargetType = ConsReport.HedgeSACUndrlygAssetDtldTypeMap[GetDataSetValue(dt, i, 3).ToString()],
|
|
InvestmentTarget = GetDataSetValue(dt, i, 4).ToString(),
|
|
UnderlyingCode = GetDataSetValue(dt, i, 5).ToString(),
|
|
UndrlygAssetTradgPlc = GetDataSetValue(dt, i, 6).ToString(),
|
|
BuyingImpulseVolume = GetDataSetValue(dt, i, 7).ToString(),
|
|
SellingImpulseVolume = GetDataSetValue(dt, i, 8).ToString(),
|
|
ImpulseVolume = GetDataSetValue(dt, i, 9).ToString(),
|
|
PositionAtTheEndOfThisMonth = GetDataSetValue(dt, i, 10).ToString(),
|
|
TheNumberOfPositionsHeldAtTheEndOfThisMonth = GetDataSetValue(dt, i, 11).ToString(),
|
|
AveragePriceAtTheEndOfTheMonth = GetDataSetValue(dt, i, 12).ToString()
|
|
};
|
|
|
|
result.Add(model);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
protected override List<SacInfo> CheckBodyValue(BodyModel model, out bool checkStatus)
|
|
{
|
|
var result = new List<SacInfo>();
|
|
if (model?.PeriodicReportISDA != null)
|
|
{
|
|
var listRoot = new List<SacInfo>();
|
|
var helper = new Common.CheckHelper<PeriodicReportISDAModel>();
|
|
var detailHelper = new Common.CheckHelper<ISDAIncreaseBusinessDetailsThisMonthModel>();
|
|
var detail2Helper = new Common.CheckHelper<ISDAInventoryBusinessDetailsAtTheEndOfThisMonthModel>();
|
|
var hedgeHelper = new Common.CheckHelper<ISDATargetCaseAndHedgeModel>();
|
|
helper.ExecuteCheck(model.PeriodicReportISDA, (name, value, msg) =>
|
|
{
|
|
listRoot.Add(new SacInfo(name, value, msg));
|
|
});
|
|
if (model.PeriodicReportISDA.IncreaseBusinessDetailsThisMonthTuple != null)
|
|
{
|
|
for (var i = 0; i < model.PeriodicReportISDA.IncreaseBusinessDetailsThisMonthTuple.Count; i++)
|
|
{
|
|
var listItem = new List<SacInfo>();
|
|
var item = model.PeriodicReportISDA.IncreaseBusinessDetailsThisMonthTuple[i];
|
|
detailHelper.ExecuteCheck(item, (name, value, msg) =>
|
|
{
|
|
listItem.Add(new SacInfo(name, value, msg));
|
|
});
|
|
if (listItem.Count > 0)
|
|
{
|
|
var temp = new SacInfo("IncreaseBusinessDetailsThisMonthTuple", i)
|
|
{
|
|
SubMaps = new List<SacInfo>(listItem)
|
|
};
|
|
listRoot.Add(temp);
|
|
}
|
|
}
|
|
}
|
|
if (model.PeriodicReportISDA.InventoryBusinessDetailsAtTheEndOfThisMonthTuple != null)
|
|
{
|
|
for (var i = 0; i < model.PeriodicReportISDA.InventoryBusinessDetailsAtTheEndOfThisMonthTuple.Count; i++)
|
|
{
|
|
var listItem = new List<SacInfo>();
|
|
var item = model.PeriodicReportISDA.InventoryBusinessDetailsAtTheEndOfThisMonthTuple[i];
|
|
detail2Helper.ExecuteCheck(item, (name, value, msg) =>
|
|
{
|
|
listItem.Add(new SacInfo(name, value, msg));
|
|
});
|
|
if (listItem.Count > 0)
|
|
{
|
|
var temp = new SacInfo("InventoryBusinessDetailsAtTheEndOfThisMonthTuple", i)
|
|
{
|
|
SubMaps = new List<SacInfo>(listItem)
|
|
};
|
|
listRoot.Add(temp);
|
|
}
|
|
}
|
|
}
|
|
if (model.PeriodicReportISDA.TargetCaseAndHedgeTuple != null)
|
|
{
|
|
for (var i = 0; i < model.PeriodicReportISDA.TargetCaseAndHedgeTuple.Count; i++)
|
|
{
|
|
var listItem = new List<SacInfo>();
|
|
var item = model.PeriodicReportISDA.TargetCaseAndHedgeTuple[i];
|
|
hedgeHelper.ExecuteCheck(item, (name, value, msg) =>
|
|
{
|
|
listItem.Add(new SacInfo(name, value, msg));
|
|
});
|
|
if (listItem.Count > 0)
|
|
{
|
|
var temp = new SacInfo("TargetCaseAndHedgeTuple", i)
|
|
{
|
|
SubMaps = new List<SacInfo>(listItem)
|
|
};
|
|
listRoot.Add(temp);
|
|
}
|
|
}
|
|
}
|
|
if (listRoot.Count > 0)
|
|
{
|
|
var errMsg = new SacInfo("PeriodicReportISDA")
|
|
{
|
|
SubMaps = new List<SacInfo>(listRoot)
|
|
};
|
|
result.Add(errMsg);
|
|
}
|
|
}
|
|
checkStatus = result.Count > 0;
|
|
return result;
|
|
}
|
|
|
|
private string formatInfoTag(string tag, bool suffixType = false)
|
|
{
|
|
var result = $"{BusiDataType}_{tag}_";
|
|
if (suffixType)
|
|
{
|
|
result = $"{result}{_operationType}";
|
|
}
|
|
return result;
|
|
}
|
|
|
|
protected override string _changeCodeOfInfoTag(string infoTag, string newCode, out string originalCode)
|
|
{
|
|
//定期报告中不存在编号,也就不存在修改编号的情况;
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override bool BeforeOfGenerated(out string errMsg)
|
|
{
|
|
errMsg = "";
|
|
for (var i = 0; i < noteList.Count; i++)
|
|
{
|
|
base.SaveReportNotes(noteList[i]);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|