从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
using YLErp.Model;
|
||||
using YLErp.Modules.TradeModule.QueryModule;
|
||||
|
||||
namespace YLErp.Modules.TradeModule.ApiModule
|
||||
{
|
||||
/// <summary>
|
||||
/// 场外期权交易导出服务
|
||||
/// </summary>
|
||||
public class OtcOptionTradeExportService
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public byte[] ExportToExcel(OtcOptionTradeExportRequest queryModel)
|
||||
{
|
||||
var req = new TradeReq
|
||||
{
|
||||
TradeTypesList = queryModel.TradeTypes?.ToList(),
|
||||
TradeStatusList = queryModel.TradeStatus?.ToList(),
|
||||
TradeNumber = queryModel.TradeNumber,
|
||||
UnderlyingCodeList = queryModel.UnderlyingCodes?.ToList(),
|
||||
BuySell = queryModel.BuySell,
|
||||
OptionType = queryModel.OptionType,
|
||||
ExerciseMode = queryModel.ExerciseMode,
|
||||
TradeDateEnd = queryModel.TradeDateEnd ?? default,
|
||||
TradeDateStart = queryModel.TradeDateStart ?? default
|
||||
};
|
||||
|
||||
//簿记账户名称
|
||||
req.AssetIdList = GetAssetIds(queryModel.AssetBookNames);
|
||||
|
||||
//交易员名称
|
||||
req.TraderNamesList = GetTraderId(queryModel.TraderNames);
|
||||
|
||||
//客户 优先使用客户编号
|
||||
req.ClientIdsInt = GetClientIds(queryModel.ClientNumbers, queryModel.ClientNames);
|
||||
|
||||
return new OtcTradeListExportService(OptUserInfo.SystemUser).ExportOptionTradeListToExcel(req, new TradeQueryRequest
|
||||
{
|
||||
ShowAllTrades = true,
|
||||
UserAssetUnits = null,
|
||||
VolType = "持仓"
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取簿记账户id
|
||||
/// </summary>
|
||||
private List<int> GetAssetIds(IEnumerable<string> assetBookNames)
|
||||
{
|
||||
if (assetBookNames == null || !assetBookNames.HasNonEmptyItem())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var list = DataCacheProvider.GetAssetUnitDataSource().AsQueryable()
|
||||
.Where(x => assetBookNames.Contains(x.Name)).Select(x => x.id).ToList();
|
||||
|
||||
if (!list.Any())
|
||||
{
|
||||
list.Add(-1);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回交易员ID
|
||||
/// </summary>
|
||||
private List<int> GetTraderId(IEnumerable<string> traderNames)
|
||||
{
|
||||
if (traderNames == null || !traderNames.HasNonEmptyItem())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
using (var sysdb = DbContextFactory.GetErpBaseContext())
|
||||
{
|
||||
var list = sysdb.SystemUsers.Where(su => traderNames.Contains(su.LoginName)).Select(n => n.Id).ToList();
|
||||
|
||||
if (!list.Any())
|
||||
{
|
||||
list.Add(-1);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据交易对手方编号或名称返回交易对手方ID
|
||||
/// </summary>
|
||||
private List<int> GetClientIds(IEnumerable<string> clientNumbers, IEnumerable<string> clientNames)
|
||||
{
|
||||
List<int> list = null;
|
||||
|
||||
//编号优先,有编号则不使用客户名称匹配
|
||||
if (clientNumbers != null && clientNumbers.HasNonEmptyItem())
|
||||
{
|
||||
list = DataCacheProvider.GetClientDataSource().AsQueryable()
|
||||
.Where(x => clientNumbers.Contains(x.Number)).Select(x => x.id).ToList();
|
||||
}
|
||||
else if (clientNames != null && clientNames.HasNonEmptyItem())
|
||||
{
|
||||
list = DataCacheProvider.GetClientDataSource().AsQueryable()
|
||||
.Where(x => clientNames.Contains(x.Name)).Select(x => x.id).ToList();
|
||||
}
|
||||
|
||||
if (list == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!list.Any())
|
||||
{
|
||||
list.Add(-1);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user