从山证v2.3.0拷贝
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user