86 lines
3.2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|