从山证v2.3.0拷贝

This commit is contained in:
吴方海
2024-05-09 14:06:26 +08:00
parent 566ff33259
commit f9d8a256a6
4471 changed files with 1203456 additions and 9 deletions
@@ -0,0 +1,332 @@
using SocialExplorer.IO.FastDBF;
using YLErp.Modules.TradeMsgOutputModule.Dto;
namespace YLErp.Modules.TradeMsgOutputModule.Company
{
public class DongWanCashLogFileGenerateService : BaseDongWanFileGenerateService
{
private readonly string _fileNamePrefix = "GXGTSC";
public override GenerateDbfFileResult GenerateDbfFile(DateTime valueDate)
{
var result = new GenerateDbfFileResult();
var tradeCashOutputService = new TradeCashOutputService();
var list = tradeCashOutputService.GetCashLog(valueDate);
if (list == null || list.Count == 0)
{
return result;
}
var dbffile = CreateFile(_fileNamePrefix, valueDate, out var filePath);
list.ForEach(p =>
{
var rows = WriteData(dbffile, p, valueDate);
if (rows != null && rows.Count > 0)
{
rows.ForEach(orec =>
{
dbffile.Write(orec);
});
}
});
dbffile.Close();
var fileName = GetFileName(_fileNamePrefix, valueDate);
result.FileName = fileName;
//上传Ftp
result.FilePath = UploadFile(filePath, fileName);
return result;
}
protected override List<DbfColumn> GetDbfFileColumns()
{
return new List<DbfColumn> {
new DbfColumn("cjrq", DbfColumn.DbfColumnType.Date),
new DbfColumn("htxh", DbfColumn.DbfColumnType.Character,50,0),
new DbfColumn("hydqr", DbfColumn.DbfColumnType.Date),
new DbfColumn("Ywlb", DbfColumn.DbfColumnType.Character,6,0),
new DbfColumn("ywdm", DbfColumn.DbfColumnType.Character,10,0),
new DbfColumn("Je", DbfColumn.DbfColumnType.Number,19,4),
new DbfColumn("Dqje", DbfColumn.DbfColumnType.Number,19,4),
new DbfColumn("Lx", DbfColumn.DbfColumnType.Number,19,4),
new DbfColumn("Bdzq", DbfColumn.DbfColumnType.Character,30,0),
new DbfColumn("ZJZH", DbfColumn.DbfColumnType.Character,30,0),
new DbfColumn("Gdll", DbfColumn.DbfColumnType.Number,12,8),
new DbfColumn("Njxts", DbfColumn.DbfColumnType.Number,4,0),
new DbfColumn("Bmdm", DbfColumn.DbfColumnType.Character,10,0),
new DbfColumn("Sypzlb", DbfColumn.DbfColumnType.Character,1,0),
};
}
/// <summary>
/// 写数据
/// </summary>
/// <param name="orec"></param>
/// <param name="cashLog"></param>
private List<DbfRecord> WriteData(DbfFile dbfFile, CashLogOutputDto cashLog, DateTime valueDate)
{
var ywlb = GetYWLBByTradeType(cashLog.TradeType);
if ("QYHH".Equals(ywlb))
{
return WriteDataForQYHH(dbfFile, cashLog, valueDate);
}
else
{
return WriteDataForCWQQ(dbfFile, cashLog, valueDate);
}
}
/// <summary>
/// 互换交易赋值
/// </summary>
/// <param name="orec"></param>
/// <param name="cashLog"></param>
private List<DbfRecord> WriteDataForQYHH(DbfFile dbfFile, CashLogOutputDto cashLog, DateTime valueDate)
{
var result = new List<DbfRecord>();
switch (cashLog.CashAction)
{
case ClientCashInCashOut._期权费:
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "HHKS"; //互换首期
orec["Je"] = cashLog.OriginalStockEqvNotional != null ? cashLog.OriginalStockEqvNotional.ToString() : "0";
orec["Dqje"] = "0";
orec["hydqr"] = cashLog.ExerciseDate != null ? ((DateTime)cashLog.ExerciseDate).ToString("yyyy-MM-dd") : "";
result.Add(orec);
}
break;
case ClientCashInCashOut._互换:
{
if (valueDate == cashLog.ValueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "DQJSJE"; //期间收益收支
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
if (cashLog.HappenedDate != null && cashLog.HappenedDate == valueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "QJSYDZ"; //期间收益到账
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
}
break;
case ClientCashInCashOut._行权费:
{
if (valueDate == cashLog.ValueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "HHJS"; //互换到期
orec["Je"] = cashLog.OriginalStockEqvNotional != null ? cashLog.OriginalStockEqvNotional.ToString() : "0";
orec["Dqje"] = cashLog.Amount.ToString();
result.Add(orec);
}
if (cashLog.HappenedDate != null && cashLog.HappenedDate == valueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "JSJEDZ"; //结算金额到账
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
}
break;
case ClientCashInCashOut._平仓费:
{
if (valueDate == cashLog.ValueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "HHJS"; //互换到期
orec["Je"] = cashLog.OriginalStockEqvNotional != null ? cashLog.OriginalStockEqvNotional.ToString() : "0";
orec["Dqje"] = cashLog.Amount.ToString();
result.Add(orec);
}
if (cashLog.HappenedDate != null && cashLog.HappenedDate == valueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
orec["ywdm"] = "JSJEDZ"; //结算金额到账
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
}
break;
}
//orec["ywdm"] = "A00";
//orec["Je"] = "10000000.1112";
//orec["Dqje"] = "1111";
return result;
}
/// <summary>
/// 场外期权交易赋值
/// </summary>
/// <param name="orec"></param>
/// <param name="cashLog"></param>
private List<DbfRecord> WriteDataForCWQQ(DbfFile dbfFile, CashLogOutputDto cashLog, DateTime valueDate)
{
var result = new List<DbfRecord>();
switch (cashLog.CashAction)
{
case ClientCashInCashOut._期权费:
{
if (valueDate == cashLog.ValueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
if (cashLog.Amount > 0) //应收
{
if (cashLog.PremiumPayDate == cashLog.TradeDate) //前付费方式
{
orec["ywdm"] = "YSQQF"; //应收前付费
}
else
{
orec["ywdm"] = "YSQQF_HFF"; //应收后付费
}
}
else //应付
{
if (cashLog.PremiumPayDate == cashLog.TradeDate) //前付费方式
{
orec["ywdm"] = "YFQQF"; // 应付 前付费到账
}
else
{
orec["ywdm"] = "YFQQF_HFF"; // 应付 后付费到账
}
}
orec["hydqr"] = cashLog.ExerciseDate != null ? ((DateTime)cashLog.ExerciseDate).ToString("yyyy-MM-dd") : "";
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
if (cashLog.HappenedDate != null && cashLog.HappenedDate == valueDate)
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
if (cashLog.Amount > 0) //应收
{
if (cashLog.PremiumPayDate == cashLog.TradeDate) //前付费方式
{
orec["ywdm"] = "QQFDZ"; //应收前付费到账
}
else
{
orec["ywdm"] = "QQFDZ_HFF"; //应收后付费到账
}
}
else //应付
{
if (cashLog.PremiumPayDate == cashLog.TradeDate) //前付费方式
{
orec["ywdm"] = "QQFZF"; // 应付 前付费到账
}
else
{
orec["ywdm"] = "QQFZF_HFF"; // 应付 后付费到账
}
}
orec["hydqr"] = "";
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
}
break;
case ClientCashInCashOut._票息:
case ClientCashInCashOut._行权费:
case ClientCashInCashOut._平仓费:
{
if (valueDate == cashLog.ValueDate) //应收
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
if (cashLog.Amount > 0)
{
orec["ywdm"] = "DQSQSY"; //收取收益
}
else
{
orec["ywdm"] = "DQZFSY"; //支付收益
}
orec["Je"] = (cashLog.TradePrice*(cashLog.OriginalNotional>0?(cashLog.Notional/cashLog.OriginalNotional):1)).ToString();
orec["Dqje"] = cashLog.Amount.ToString();
result.Add(orec);
}
if (cashLog.HappenedDate != null && cashLog.HappenedDate == valueDate) //到账
{
var orec = GetDefaultRecord(dbfFile, cashLog, valueDate);
if (cashLog.Amount > 0)
{
if (cashLog.HappenedDate > cashLog.ExerciseDate)
{
orec["ywdm"] = "DQSYDZ_HFF"; //应收后付费到账
}
else
{
orec["ywdm"] = "DQSYDZ"; //应收前付费到账
}
}
else
{
if (cashLog.HappenedDate > cashLog.ExerciseDate)
{
orec["ywdm"] = "DQSYZF_HFF"; //应付后付费到账
}
else
{
orec["ywdm"] = "DQSYZF"; //应付前付费到账
}
}
orec["Je"] = cashLog.Amount.ToString();
orec["Dqje"] = "0";
result.Add(orec);
}
}
break;
}
return result;
}
private DbfRecord GetDefaultRecord(DbfFile dbfFile, CashLogOutputDto cashLog, DateTime valueDate)
{
var orec = new DbfRecord(dbfFile.Header) { AllowDecimalTruncate = true };
orec["cjrq"] = (valueDate == cashLog.ValueDate) ? cashLog.ValueDate.ToString("yyyy-MM-dd") : ((DateTime)cashLog.HappenedDate).ToString("yyyy-MM-dd");
orec["htxh"] = cashLog.TradeNumber;
orec["hydqr"] = "";
var ywlb = GetYWLBByTradeType(cashLog.TradeType);
orec["Ywlb"] = ywlb;
orec["Lx"] = "0";
orec["Bdzq"] = cashLog.UnderlyingCode;
orec["ZJZH"] = cashLog.ExChangeAccount;
orec["Gdll"] = "0";
orec["Njxts"] = "0";
orec["Bmdm"] = GetBmdmByAssetGroupName(cashLog.AssetUnitGroupName);
orec["Sypzlb"] = "1";
return orec;
}
}
}