从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using YLErp.Modules.DataProviderModule;
|
||||
|
||||
namespace YLErp.Modules.EodModule.SettlementModule
|
||||
{
|
||||
public class EodCheckPriceService : YLBaseService
|
||||
{
|
||||
public EodCheckPriceService(OptUserInfo userInfo) : base(userInfo)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public List<string> GetNoPriceUnderlyings(DateTime date)
|
||||
{
|
||||
if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var positionStatus = ConsTrade.PositionTradeStatusList;
|
||||
var PreSettleDate = BLL.valuedateBLL.GetNonHolidayDefore(date.AddDays(-1));
|
||||
var predicate = PredicateBuilder.Create<trade>(t => t.ClientId > 0
|
||||
&& t.ExerciseDate >= date && t.TradeDate <= date
|
||||
&& (t.TradeType != "结构化交易" && t.IsGroup != 1 || t.IsGroup == 1 && t.TradeType == "结构化交易") && (t.IsGroup != 2 || t.IsGroup == 2 && t.TradeType == "收益互换")
|
||||
&& t.ValidState != "InValid");
|
||||
var query = (from t in DbContext.trade.Where(predicate) select new { t.id, t.UnderlyingCode, t.TradeStatus }).ToArray();
|
||||
var needCashesTradeId = query.Where(o => !positionStatus.Contains(o.TradeStatus)).Select(o => o.id).ToArray();
|
||||
var tradeCashes = DbContext.trade_cash.Where(o => needCashesTradeId.Contains(o.TradeId) && o.ValueDate < date && o.ValidState != "InValid" && o.UnwindType == "全部平仓");
|
||||
var settledTradeIds = tradeCashes.Select(o => o.TradeId);
|
||||
query = query.Where(t => !settledTradeIds.Contains(t.id)).ToArray();
|
||||
var exStatus = new ExchangeStatus(date, PreSettleDate);
|
||||
var eodPriceProvider = new EodPriceProvider(date, isDiviendPrice: false).Initialize();
|
||||
var codeArr = query.Select(o => o.UnderlyingCode).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToArray();
|
||||
var umCodes = codeArr.Where(n => !eodPriceProvider.HasValue(n)).ToList();
|
||||
var hoildayCodes = new List<string>();
|
||||
foreach (var n in umCodes)
|
||||
{
|
||||
var un = DataCacheProvider.GetUnderlyingDataSource().GetData(n);
|
||||
if (exStatus.IsHoliday(un.MarketCode))
|
||||
{
|
||||
hoildayCodes.Add(n);
|
||||
}
|
||||
}
|
||||
if (hoildayCodes != null && hoildayCodes.Count > 0)
|
||||
{
|
||||
foreach (var item in hoildayCodes)
|
||||
{
|
||||
umCodes.Remove(item);
|
||||
}
|
||||
}
|
||||
return umCodes;
|
||||
}
|
||||
|
||||
public Byte[] exportNoPriceUnderlyings(List<KeyValuePair<string, string>> noPriceUnderlyings)
|
||||
{
|
||||
var dc = new List<Commons.ExcelHelper.DataColumnModel>
|
||||
{
|
||||
new Commons.ExcelHelper.DataColumnModel("日期", "Key"),
|
||||
new Commons.ExcelHelper.DataColumnModel("代码", "Value"),
|
||||
|
||||
};
|
||||
new Commons.ExcelHelper().ListToExcel<KeyValuePair<string, string>>(dc.ToArray(), noPriceUnderlyings, "Sheet1", true, out var buffer);
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user