Files
zszq-trs/Tools/YLTestTool/Tests/InitTianFengExchangeTrades.cs
T
2024-05-09 14:06:26 +08:00

86 lines
3.2 KiB
C#

using Microsoft.EntityFrameworkCore;
using YLErp.DBModels;
using YLErp.Modules;
namespace YLErp.Tests
{
class InitTianFengExchangeTrades
{
public void Execute()
{
var valueDate = new DateTime(2021, 5, 31);
var db = DbContextFactory.GetYLDbContext();
var unDic = db.underlying_manager.Select(n => new { n.id, n.UnderlyingCode })
.ToDictionary(n => n.UnderlyingCode, n => n.id, StringComparer.OrdinalIgnoreCase);
var exchangeAccountDic = db.exchange_account.Select(n => new { n.AccountCode, n.id })
.ToDictionary(n => n.AccountCode, m => m.id, StringComparer.OrdinalIgnoreCase);
var eodPosList = db.eod_trade_position_static2.AsNoTracking()
.Where(n => n.ValueDate == valueDate && n.Volume > 0).ToArray();
foreach (var ep in eodPosList)
{
var accCodeArr = ep.AccountCode.Split('/');
if (accCodeArr.Length != 3) continue;
var accountCode = $"{accCodeArr[0]}#{accCodeArr[2]}";
if (!exchangeAccountDic.TryGetValue(accountCode, out var accId)) continue;
if (ep.TradeType == "场内期权")
{
if (ep.UnderlyingCode == ep.OptionCode && ep.UnderlyingCode.Length == 9
&& (ep.UnderlyingCode.EndsWith("SH") || ep.UnderlyingCode.EndsWith("SZ")))
{
ep.TradeType = "股票";
}
else
{
continue;
}
}
if (!unDic.TryGetValue(ep.UnderlyingCode, out var unId)) continue;
var trade = new ExchangeTrade
{
AssetBookId = 4,
Comments = "",
Commission = 0,
CommissionType = DBModels.Enums.CommissionType.不收取,
CreateTime = DateTime.Now,
ExchangeAccountCode = accountCode,
ExchangeAccountId = accId,
ExerciseMode = string.Empty,
InstrumentType = string.Empty,
IsValid = true,
MaturityDate = null,
Notional = ep.Volume,
OptDate = DateTime.Now,
OptId = 0,
OptionCode = null,
OptionStrike = null,
OptionType = null,
OptName = "系统",
TradeAmount = ep.Volume,
TradeDate = valueDate,
TradeLots = ep.Volume / 100,
TradeNumber = string.Empty,
TraderId = 7,
TraderName = "高宇辰",
TradeSide = ConsGlobal.TradeSide.多头开仓,
TradeSinglePrice = ep.PositionPrice,
TradeSource = "系统",
TradeType = ep.TradeType,
UnderlyingCode = ep.UnderlyingCode,
UnderlyingId = unId
};
db.ExchangeTrade.Add(trade);
}
db.SaveChanges();
}
}
}