1295 lines
55 KiB
C#
1295 lines
55 KiB
C#
using BaseOUDAL;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Reflection;
|
||
using System.Text.RegularExpressions;
|
||
using YieldChain.Helpers;
|
||
using YieldChain.Security;
|
||
using YLErp.Model;
|
||
using YLErp.Modules.ClientModule;
|
||
using YLErp.Office.ExcelModule;
|
||
|
||
namespace YLErp.Modules.TradeModule.QueryModule
|
||
{
|
||
public class DatatraceQueryService : YLBaseService
|
||
{
|
||
public DatatraceQueryService(OptUserInfo userInfo) : base(userInfo)
|
||
{
|
||
}
|
||
public DatatraceQueryService(YLBaseService baseService) : base(baseService)
|
||
{
|
||
}
|
||
|
||
#region 客户信息变更
|
||
|
||
public byte[] ExportClientInfoChange(TradeChangeReq req)
|
||
{
|
||
SearchListResult<ClientInfoChangeRep> searchListResult = GetClientInfoChangeRep(req);
|
||
foreach (var item in searchListResult.rows)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.DataInfo))
|
||
{
|
||
item.DataInfo = item.DataInfo.Substring(0, item.DataInfo.Length - 1).Replace(";", ";\r\n") + ";";
|
||
item.DataInfo = item.DataInfo.Replace("“ ”", "空");
|
||
}
|
||
}
|
||
var templateFile = OtcAppContext.MapPath("~/App_Docs/导出模板/变更记录模板_客户信息变更.xlsx");
|
||
return ExcelGenerator.UseTemplateGenerator(templateFile).AddVariable(new { list = searchListResult.rows }).GenerateBytes();
|
||
|
||
}
|
||
public SearchListResult<ClientInfoChangeRep> GetClientInfoChangeRep(TradeChangeReq req)
|
||
{
|
||
SearchListResult<ClientInfoChangeRep> searchListResult = new SearchListResult<ClientInfoChangeRep>();
|
||
var ClientAuditLogList = new SearchListResult<ClientAuditLog>();
|
||
if (req.Ids == null || req.Ids.Count == 0)
|
||
{
|
||
ClientAuditLogList = GetClientInfoChangeRepList(req);
|
||
}
|
||
else
|
||
{
|
||
ClientAuditLogList = GetClientInfoChangeRepListByIds(req);
|
||
}
|
||
|
||
if (ClientAuditLogList.rows != null && ClientAuditLogList.rows.Count() > 0)
|
||
{
|
||
List<ClientInfoChangeRep> clientInfoChangeReps = new List<ClientInfoChangeRep>();
|
||
foreach (var item in ClientAuditLogList.rows)
|
||
{
|
||
var client = new ClientDataService(OptUser).GetClientById(item.ClientId);
|
||
if (client != null)
|
||
{
|
||
var dataChanges = ReplaceDataChanges(client, item.Changes);
|
||
var newDataChange = new ClientInfoChangeRep
|
||
{
|
||
ClientId = item.ClientId,
|
||
Changes = item.Changes,
|
||
ClientName = client.Name,
|
||
ClientNumber = client.Number,
|
||
DataInfo = dataChanges,
|
||
OptName = item.OptName,
|
||
OptDate = item.OptDate,
|
||
OptType = (item.OptType.Contains("删除人员信息") || item.OptType.Contains("销户")) ? "信息删除" : "信息修改",
|
||
IsClosed = client.ProcessStatus.Contains("已销户"),
|
||
id = item.id
|
||
};
|
||
if (dataChanges != null && !string.IsNullOrEmpty(dataChanges))
|
||
{
|
||
clientInfoChangeReps.Add(newDataChange);
|
||
}
|
||
else
|
||
{
|
||
if (item.OptType.Contains("删除人员信息") || item.OptType.Contains("销户"))
|
||
{
|
||
clientInfoChangeReps.Add(newDataChange);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
searchListResult.rows = clientInfoChangeReps;
|
||
searchListResult.total = ClientAuditLogList.total;
|
||
searchListResult.page = ClientAuditLogList.page;
|
||
searchListResult.Sum = ClientAuditLogList.Sum;
|
||
searchListResult.records = ClientAuditLogList.records;
|
||
}
|
||
|
||
return searchListResult;
|
||
}
|
||
|
||
|
||
public SearchListResult<ClientAuditLog> GetClientInfoChangeRepListByIds(TradeChangeReq req)
|
||
{
|
||
using (var clientDB = new ClientDBContext())
|
||
{
|
||
var query = clientDB.ClientAuditLog.Where(a => req.Ids.Contains(a.id)).OrderByDescending(a => a.OptDate).AsQueryable();
|
||
return query.ToSearchList(req);
|
||
}
|
||
}
|
||
|
||
public SearchListResult<ClientAuditLog> GetClientInfoChangeRepList(TradeChangeReq req)
|
||
{
|
||
using (var clientDB = new ClientDBContext())
|
||
{
|
||
var query = clientDB.ClientAuditLog.Where(a => a.OptType == "编辑客户" || a.OptType == "编辑产品投资人" || a.OptType == "编辑客户人员" || a.OptType == "上传文件" || a.OptType == "修改上传文件" || a.OptType == "删除人员信息" || a.OptType == "销户").AsQueryable();
|
||
|
||
if (req.OptDateStart != default)
|
||
{
|
||
query = query.Where(a => req.OptDateStart <= a.OptDate);
|
||
}
|
||
if (req.OptDateEnd != default)
|
||
{
|
||
var endDay = req.OptDateEnd.AddDays(1);
|
||
query = query.Where(a => endDay > a.OptDate);
|
||
}
|
||
if (req.OptTypes != null && req.OptTypes.Count > 0)
|
||
{
|
||
if (req.OptTypes.Any(a => a == "信息修改"))
|
||
{
|
||
query = query.Where(a => a.OptType == "编辑客户" || a.OptType == "编辑产品投资人" || a.OptType == "编辑客户人员" || a.OptType == "上传文件" || a.OptType == "修改上传文件");
|
||
}
|
||
else if (req.OptTypes.Any(a => a == "信息删除"))
|
||
{
|
||
query = query.Where(a => a.OptType == "删除人员信息" || a.OptType == "销户");
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(req.ClientNumber))
|
||
{
|
||
query = from q in query
|
||
join c in clientDB.client on q.ClientId equals c.id
|
||
where c.Number.Contains(req.ClientNumber)
|
||
select q;
|
||
}
|
||
if (req.ClientIds != null && req.ClientIds.Count > 0)
|
||
{
|
||
query = query.Where(a => req.ClientIds.Any(b => b == a.ClientId));
|
||
}
|
||
if (req.OptNames != null)
|
||
{
|
||
query = query.Where(a => req.OptNames.Any(b => b == a.OptName));
|
||
}
|
||
query = query.OrderByDescending(a => a.OptDate);
|
||
|
||
return query.ToSearchList(req);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 交易信息变更
|
||
|
||
|
||
public SearchListResult<TradeAuditLog> GetTradeInfoChangeRepList(TradeChangeReq req)
|
||
{
|
||
|
||
var query = DbContext.TradeAuditLog.Where(a => a.OptType == "修改交易" || a.OptType == "修改备注").AsQueryable();
|
||
|
||
if (req.OptDateStart != default)
|
||
{
|
||
query = query.Where(a => req.OptDateStart <= a.OptDate);
|
||
}
|
||
if (req.OptDateEnd != default)
|
||
{
|
||
var endDay = req.OptDateEnd.AddDays(1);
|
||
query = query.Where(a => endDay > a.OptDate);
|
||
}
|
||
|
||
if (req.ClientIds != null && req.ClientIds.Count > 0)
|
||
{
|
||
query = from q in query
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where req.ClientIds.Any(a => a == t.ClientId)
|
||
select q;
|
||
}
|
||
if (req.AssetIds != null && req.AssetIds.Count > 0)
|
||
{
|
||
query = from q in query
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where req.AssetIds.Any(a => a == t.AssetId)
|
||
select q;
|
||
}
|
||
if (!string.IsNullOrEmpty(req.TradeNumber))
|
||
{
|
||
query = from q in query
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where t.TradeNumber.Contains(req.TradeNumber)
|
||
select q;
|
||
}
|
||
if (req.OptNames != null)
|
||
{
|
||
query = query.Where(a => req.OptNames.Any(b => b == a.OptName));
|
||
}
|
||
|
||
query = from q in query
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where t.TradeNumber.IndexOf("XX") < 0
|
||
orderby q.OptDate descending
|
||
select q;
|
||
|
||
return query.ToSearchList(req);
|
||
}
|
||
|
||
public SearchListResult<TradeAuditLog> GetTradeInfoChangeRepListByIds(TradeChangeReq req)
|
||
{
|
||
var query = DbContext.TradeAuditLog.Where(a => req.Ids.Any(b => b == a.id)).OrderByDescending(b => b.OptDate).AsQueryable();
|
||
return query.ToSearchList(req);
|
||
}
|
||
|
||
public SearchListResult<TradeInfoChangeRep> GetTradeInfoChangeRep(TradeChangeReq req)
|
||
{
|
||
SearchListResult<TradeInfoChangeRep> searchListResult = new SearchListResult<TradeInfoChangeRep>();
|
||
|
||
var TradeAuditLogList = new SearchListResult<TradeAuditLog>();
|
||
if (req.Ids == null || req.Ids.Count == 0)
|
||
{
|
||
TradeAuditLogList = GetTradeInfoChangeRepList(req);
|
||
}
|
||
else
|
||
{
|
||
TradeAuditLogList = GetTradeInfoChangeRepListByIds(req);
|
||
}
|
||
|
||
if (TradeAuditLogList.rows != null && TradeAuditLogList.rows.Count() > 0)
|
||
{
|
||
List<TradeInfoChangeRep> tradeInfoChangeReps = new List<TradeInfoChangeRep>();
|
||
foreach (var item in TradeAuditLogList.rows)
|
||
{
|
||
var trade = DbContext.trade.Where(a => a.id == item.TradeId).FirstOrDefault();
|
||
if (trade != null)
|
||
{
|
||
//旧值为空的改新值的过滤掉,暂时不考虑分页
|
||
var dataChanges = ReplaceDataChanges(trade, item.Changes);
|
||
var tradeInfoChanges = new TradeInfoChangeRep
|
||
{
|
||
TradeId = item.TradeId,
|
||
Changes = item.Changes,
|
||
TradeNumber = trade.TradeNumber,
|
||
TradeStatus = trade.TradeStatus,
|
||
ClientName = trade.ClientName,
|
||
UserAssetUnitName = trade.AssetBookName,
|
||
DataInfo = dataChanges,
|
||
OptName = item.OptName,
|
||
OptDate = item.OptDate,
|
||
OptType = "信息修改",
|
||
id = item.id
|
||
};
|
||
if (dataChanges != null)
|
||
{
|
||
tradeInfoChangeReps.Add(tradeInfoChanges);
|
||
}
|
||
}
|
||
}
|
||
searchListResult.rows = tradeInfoChangeReps;
|
||
searchListResult.total = TradeAuditLogList.total;
|
||
searchListResult.page = TradeAuditLogList.page;
|
||
searchListResult.Sum = TradeAuditLogList.Sum;
|
||
searchListResult.records = TradeAuditLogList.records;
|
||
}
|
||
|
||
return searchListResult;
|
||
}
|
||
public byte[] ExportTradeInfoChange(TradeChangeReq req)
|
||
{
|
||
SearchListResult<TradeInfoChangeRep> searchListResult = GetTradeInfoChangeRep(req);
|
||
foreach (var item in searchListResult.rows)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.DataInfo))
|
||
{
|
||
item.DataInfo = item.DataInfo.Substring(0, item.DataInfo.Length - 1).Replace(";", ";\r\n") + ";";
|
||
item.DataInfo = item.DataInfo.Replace("“ ”", "空");
|
||
}
|
||
}
|
||
var templateFile = OtcAppContext.MapPath("~/App_Docs/导出模板/变更记录模板_交易信息变更.xlsx");
|
||
return ExcelGenerator.UseTemplateGenerator(templateFile).AddVariable(new { list = searchListResult.rows }).GenerateBytes();
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region 交易删除信息
|
||
|
||
/// <summary>
|
||
/// 查询交易变更记录
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public SearchListResult<TradeChangeList> GetTradeInfoDeleteRepList(TradeChangeReq req)
|
||
{
|
||
var tempQuery = DbContext.TradeAuditLog.Where(a => a.OptType == "删除交易").AsQueryable();
|
||
if (req.Ids == null || req.Ids.Count == 0)
|
||
{
|
||
if (req.OptDateStart != default)
|
||
{
|
||
tempQuery = tempQuery.Where(a => req.OptDateStart <= a.OptDate);
|
||
}
|
||
if (req.OptDateEnd != default)
|
||
{
|
||
var endDay = req.OptDateEnd.AddDays(1);
|
||
tempQuery = tempQuery.Where(a => endDay > a.OptDate);
|
||
}
|
||
|
||
if (req.ClientIds != null && req.ClientIds.Count > 0)
|
||
{
|
||
tempQuery = from q in tempQuery
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where req.ClientIds.Any(a => a == t.ClientId)
|
||
select q;
|
||
}
|
||
if (req.AssetIds != null && req.AssetIds.Count > 0)
|
||
{
|
||
tempQuery = from q in tempQuery
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where req.AssetIds.Any(a => a == t.AssetId)
|
||
select q;
|
||
}
|
||
if (!string.IsNullOrEmpty(req.TradeNumber))
|
||
{
|
||
tempQuery = from q in tempQuery
|
||
join t in DbContext.trade on q.TradeId equals t.id
|
||
where t.TradeNumber.Contains(req.TradeNumber)
|
||
select q;
|
||
}
|
||
if (req.OptNames != null)
|
||
{
|
||
tempQuery = tempQuery.Where(a => req.OptNames.Any(b => b == a.OptName));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
tempQuery = DbContext.TradeAuditLog.Where(a => req.Ids.Any(b => b == a.id));
|
||
}
|
||
var list = new List<TradeChangeList>();
|
||
var query = from t in DbContext.trade
|
||
join ta in tempQuery
|
||
on t.id equals ta.TradeId
|
||
orderby ta.OptDate descending
|
||
select ta;
|
||
var tempList = query.ToSearchList(req);
|
||
foreach (var item in tempList.rows)
|
||
{
|
||
TradeChangeList info = new TradeChangeList();
|
||
|
||
var ta = DbContext.trade.Where(a => a.id == item.TradeId).FirstOrDefault();
|
||
ObjectHelper.MapValues(info, ta);
|
||
|
||
if (ta != null)
|
||
{
|
||
info.OptType = item.OptType;
|
||
info.OptId = item.OptId;
|
||
info.OptName = item.OptName;
|
||
info.OptDate = item.OptDate;
|
||
info.TradeAuditId = (int)item.id;
|
||
}
|
||
list.Add(info);
|
||
}
|
||
return new SearchListResult<TradeChangeList>(tempList, list);
|
||
}
|
||
|
||
public byte[] ExportTradeInfoDelete(TradeChangeReq req)
|
||
{
|
||
SearchListResult<TradeChangeList> searchListResult = GetTradeInfoDeleteRepList(req);
|
||
var templateFile = OtcAppContext.MapPath("~/App_Docs/导出模板/变更记录模板_交易删除.xlsx");
|
||
return ExcelGenerator.UseTemplateGenerator(templateFile).AddVariable(new { list = searchListResult.rows }).GenerateBytes();
|
||
}
|
||
#endregion
|
||
|
||
#region 资金信息删除
|
||
|
||
public byte[] ExportClientCashDelete(TradeChangeReq req)
|
||
{
|
||
SearchListResult<ClientCashInCashOutExtend> searchListResult = GetClientCashDeleteSearch(req);
|
||
var templateFile = OtcAppContext.MapPath("~/App_Docs/导出模板/变更记录模板_资金删除.xlsx");
|
||
return ExcelGenerator.UseTemplateGenerator(templateFile).AddVariable(new { list = searchListResult.rows }).GenerateBytes();
|
||
}
|
||
|
||
public SearchListResult<ClientCashInCashOutExtend> GetClientCashDeleteSearch(TradeChangeReq req)
|
||
{
|
||
var query = from source in DbContext.Clientcashincashout_remove
|
||
join trade in DbContext.trade on source.TradeId equals trade.id into trades
|
||
from trade in trades.DefaultIfEmpty()
|
||
select new ClientCashInCashOutExtend
|
||
{
|
||
id = source.id,
|
||
Direction = source.Direction,
|
||
TradeNumber = trade == null ? "" : trade.TradeNumber,
|
||
TradeType = trade == null ? "" : trade.TradeType,
|
||
Number = source.Number,
|
||
ClientId = source.ClientId,
|
||
Money = source.Direction == "出金" ? -source.Money : source.Money,
|
||
HappenDate = source.HappenDate,
|
||
State = source.State,
|
||
OptId = source.OptId,
|
||
OptName = source.OptName,
|
||
OptDate = source.OptDate,
|
||
ValidState = source.ValidState,
|
||
TradeId = source.TradeId,
|
||
Action = source.Action,
|
||
SerialNumber = source.SerialNumber,
|
||
Comments = source.Comments,
|
||
ClientNumber = source.ClientNumber
|
||
};
|
||
|
||
if (req.Ids == null || req.Ids.Count == 0)
|
||
{
|
||
if (req.OptDateStart != default)
|
||
{
|
||
query = query.Where(a => req.OptDateStart <= a.OptDate);
|
||
}
|
||
|
||
if (req.OptDateEnd != default)
|
||
{
|
||
var endDay = req.OptDateEnd.AddDays(1);
|
||
query = query.Where(a => endDay > a.OptDate);
|
||
}
|
||
|
||
if (req.ClientIds != null && req.ClientIds.Count > 0)
|
||
{
|
||
query = query.Where(a => req.ClientIds.Contains(a.ClientId ?? 0));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.ClientNumber))
|
||
{
|
||
query = query.Where(a => a.ClientNumber.Contains(req.ClientNumber));
|
||
}
|
||
|
||
if (req.OptNames != null)
|
||
{
|
||
query = query.Where(a => req.OptNames.Contains(a.OptName));
|
||
}
|
||
|
||
if (req.HappenDateStart != default)
|
||
{
|
||
query = query.Where(a => req.HappenDateStart <= a.HappenDate);
|
||
}
|
||
|
||
if (req.HappenDateEnd != default)
|
||
{
|
||
var endDay = req.HappenDateEnd.AddDays(1);
|
||
query = query.Where(a => endDay > a.HappenDate);
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.Number))
|
||
{
|
||
query = query.Where(a => a.Number.Contains(req.Number));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.TradeNumber))
|
||
{
|
||
query = query.Where(a => a.TradeNumber.Contains(req.TradeNumber));
|
||
}
|
||
|
||
#region 根据方向类型查询处理,结合Direction,TradeAction,InOut处理
|
||
|
||
//a.Direction != "应收"代表根据direction来做逻辑判断
|
||
if (!string.IsNullOrEmpty(req.DirectionTypes))
|
||
{
|
||
if (req.DirectionTypeList.Contains("收入") && !req.DirectionTypeList.Contains("支出"))
|
||
{
|
||
query = query.Where(a => a.Money > 0);
|
||
}
|
||
else if (req.DirectionTypeList.Contains("支出") && !req.DirectionTypeList.Contains("收入"))
|
||
{
|
||
query = query.Where(a => a.Money < 0);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
query = query.Where(a => req.Ids.Contains(a.id));
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(req.sidx))
|
||
{
|
||
req.sidx = "OptDate,id";
|
||
req.sord = "desc";
|
||
}
|
||
else if (req.sidx == "DirectionType")
|
||
{
|
||
req.sidx = "Direction";
|
||
}
|
||
|
||
var retListResult = query.ToSearchList(req);
|
||
|
||
foreach (var item in retListResult.rows)
|
||
{
|
||
if (item.ClientId > 0)
|
||
{
|
||
item.ClientName = DataCacheProvider.GetClientDataSource().GetData(item.ClientId.Value)?.Name;
|
||
}
|
||
}
|
||
return retListResult;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 资金信息变更
|
||
|
||
private SearchListResult<ClientCashChangeList> GetClientCashChangeRepList(TradeChangeReq req)
|
||
{
|
||
var query = from log in DbContext.clientcash_log.Where(a => a.OptType.Contains("修改"))
|
||
join cash in DbContext.ClientCashInCashOut on log.CashId equals cash.id
|
||
join trade in DbContext.trade on cash.TradeId equals trade.id into trade
|
||
from td in trade.DefaultIfEmpty()
|
||
where cash.ValidState != ConsGlobal.InValid
|
||
select new ClientCashChangeList
|
||
{
|
||
id = log.id,
|
||
OptType = log.OptType,
|
||
OptName = log.OptName,
|
||
OptDate = log.OptDate,
|
||
Changes = log.Changes,
|
||
Explain = log.Explain,
|
||
HappenDateReal = cash.HappenDate,
|
||
Number = cash.Number,
|
||
ClientId = cash.ClientId,
|
||
ClientName = cash.ClientName,
|
||
ClientNumber = cash.ClientNumber,
|
||
Direction = cash.Direction,
|
||
Money = cash.Money.ToString(),
|
||
MoneyReal = cash.Money,
|
||
CurrencyCode = cash.CurrencyCode,
|
||
TradeNumber = td == null ? "" : td.TradeNumber,
|
||
Comments = cash.Comments,
|
||
AssetId = td == null ? 0 : td.AssetId,
|
||
TradeId = td == null ? 0 : td.id,
|
||
Action = cash.Action,
|
||
CashState = cash.State
|
||
};
|
||
|
||
if (req.Ids == null || req.Ids.Count == 0)
|
||
{
|
||
if (req.OptDateStart != default)
|
||
{
|
||
query = query.Where(a => req.OptDateStart <= a.OptDate);
|
||
}
|
||
|
||
if (req.OptDateEnd != default)
|
||
{
|
||
var endDay = req.OptDateEnd.AddDays(1);
|
||
query = query.Where(a => endDay > a.OptDate);
|
||
}
|
||
|
||
if (req.ClientIds != null && req.ClientIds.Count > 0)
|
||
{
|
||
query = query.Where(a => req.ClientIds.Contains(a.ClientId ?? 0));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.ClientNumber))
|
||
{
|
||
query = query.Where(a => a.ClientNumber.Contains(req.ClientNumber));
|
||
}
|
||
|
||
if (req.AssetIds != null && req.AssetIds.Count > 0)
|
||
{
|
||
query = query.Where(a => req.AssetIds.Contains(a.AssetId));
|
||
}
|
||
|
||
if (req.OptNames != null)
|
||
{
|
||
query = query.Where(a => req.OptNames.Contains(a.OptName));
|
||
}
|
||
|
||
if (req.HappenDateStart != default)
|
||
{
|
||
query = query.Where(a => req.HappenDateStart <= a.HappenDateReal);
|
||
}
|
||
|
||
if (req.HappenDateEnd != default)
|
||
{
|
||
var endDay = req.HappenDateEnd.AddDays(1);
|
||
query = query.Where(a => endDay > a.HappenDateReal);
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.Number))
|
||
{
|
||
query = query.Where(a => a.Number.Contains(req.Number));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.TradeNumber))
|
||
{
|
||
query = query.Where(a => a.TradeNumber.Contains(req.TradeNumber));
|
||
}
|
||
|
||
#region 根据方向类型查询处理,结合Direction,TradeAction,InOut处理
|
||
|
||
//Direction和TradeAction是或的关系
|
||
//Direction和InOut是或的关系
|
||
//TradeAction和InOut是与的关系(InTradeAction若有值和In为一组,判断为收取;OutTradeAction若有值和Out为一组,判断为支付)
|
||
if (!string.IsNullOrEmpty(req.Direction) && !string.IsNullOrEmpty(req.TradeAction))
|
||
{
|
||
query = query.Where(a => a.Direction != null && req.Directions.Contains(a.Direction) || a.Action != null && req.TradeActionList.Contains(a.Action));
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(req.Direction))
|
||
{
|
||
query = query.Where(a => a.Direction != null && req.Directions.Contains(a.Direction));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.TradeAction))
|
||
{
|
||
query = query.Where(a => a.Action != null && req.TradeActionList.Contains(a.Action));
|
||
}
|
||
}
|
||
|
||
//a.Direction != "应收"代表根据direction来做逻辑判断
|
||
if (!string.IsNullOrEmpty(req.InOut))
|
||
{
|
||
if (req.InOut.Contains("应收") && !req.InOut.Contains("应付"))
|
||
{
|
||
query = query.Where(a => a.MoneyReal > 0 || a.Direction != "应收");
|
||
}
|
||
else if (!req.InOut.Contains("应收") && req.InOut.Contains("应付"))
|
||
{
|
||
query = query.Where(a => a.MoneyReal < 0 || a.Direction != "应收");
|
||
}
|
||
//当同时有应收和应付字段的时候,需要判断应收有哪些action,应付有哪些action
|
||
else if (req.InOut.Contains("应收") && req.InOut.Contains("应付") && !string.IsNullOrEmpty(req.InTradeAction) && !string.IsNullOrEmpty(req.OutTradeAction))
|
||
{
|
||
query = query.Where(a => a.MoneyReal < 0 && req.OutTradeAction.Contains(a.Action) || a.MoneyReal > 0 && req.InTradeAction.Contains(a.Action) || a.Direction != "应收");
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
query = query.Where(a => req.Ids.Contains(a.id));
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(req.sidx))
|
||
{
|
||
req.sidx = "OptDate,id";
|
||
req.sord = "desc";
|
||
}
|
||
else if (req.sidx == "DirectionType")
|
||
{
|
||
req.sidx = "Direction";
|
||
}
|
||
else if (req.sidx == "HappenDate")
|
||
{
|
||
req.sidx = "HappenDateReal";
|
||
}
|
||
|
||
|
||
return query.ToSearchList(req);
|
||
}
|
||
|
||
|
||
public SearchListResult<ClientCashChangeList> GetClientCashChangeRep(TradeChangeReq req)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(req.DirectionTypes))
|
||
{
|
||
UpdateTradeChangeReq(req);
|
||
}
|
||
|
||
var searchListResult = GetClientCashChangeRepList(req);
|
||
|
||
|
||
var removeListId = new List<int>();
|
||
if (searchListResult.rows != null && searchListResult.rows.Count() > 0)
|
||
{
|
||
foreach (var item in searchListResult.rows)
|
||
{
|
||
item.HappenDate = (item.HappenDateReal ?? DateTime.MinValue).ToString("yyyy-MM-dd hh:mm:ss");
|
||
item.DirectionType = GetDirection(item.Direction, item.Action, item.MoneyReal ?? 0);
|
||
item.EncryptTradeId = item.TradeId > 0 ? DataProtect.Encrypt(item.TradeId.ToString()) : "";
|
||
item.DataInfo = ReplaceDataChanges(item, item.Changes);
|
||
|
||
if (string.IsNullOrEmpty(item.DataInfo))
|
||
{
|
||
removeListId.Add(item.id);
|
||
}
|
||
else
|
||
{
|
||
var cash_update = DbContext.clientcashincashout_update.FirstOrDefault(n => n.ClientcashincashoutId == item.CashId && n.ValidState != "InValid");
|
||
if (cash_update != null)
|
||
{
|
||
item.CashState = cash_update.State;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (removeListId.Count > 0)
|
||
{
|
||
searchListResult.rows = searchListResult.rows.Where(n => !removeListId.Contains(n.id));
|
||
}
|
||
}
|
||
|
||
return searchListResult;
|
||
}
|
||
|
||
public void CoverDataChanges(ClientCashChangeList obj, string dataChanges)
|
||
{
|
||
if (!(string.IsNullOrEmpty(dataChanges) || dataChanges.Equals("[]") || dataChanges.LastIndexOf("]") == -1 || dataChanges.StartsWith("[") && !dataChanges.EndsWith("]")))
|
||
{
|
||
string ARROW = "->";
|
||
object[] dataChangeArr = JsonHelper.Deserialize<object[]>(dataChanges);
|
||
if (dataChangeArr.Length > 0)
|
||
{
|
||
string oldDirection = null;
|
||
double? oldMoney = null;
|
||
foreach (object objArr in dataChangeArr)
|
||
{
|
||
string[] objStrArr = JsonHelper.Deserialize<string[]>(objArr.ToJson());
|
||
string dataStr = string.Empty;
|
||
if (!string.IsNullOrEmpty(objStrArr[0]))
|
||
{
|
||
dataStr = objStrArr[0];
|
||
}
|
||
dataStr = dataStr?.Trim();
|
||
if (objStrArr.Length == 4)
|
||
{
|
||
switch (dataStr)
|
||
{
|
||
case "HappenDate":
|
||
obj.HappenDate = $"{objStrArr[2]}{ARROW}{objStrArr[3]}";
|
||
break;
|
||
case "Direction":
|
||
oldDirection = (string)objStrArr[2].Replace("\"", "");
|
||
break;
|
||
case "Money":
|
||
if (double.TryParse((string)objStrArr[2], out double value))
|
||
{
|
||
oldMoney = value;
|
||
}
|
||
obj.Money = $"{objStrArr[2]}{ARROW}{objStrArr[3]}";
|
||
break;
|
||
case "Comments":
|
||
obj.Comments = $"{objStrArr[2]}{ARROW}{objStrArr[3]}";
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
var DirectionType = GetDirection(oldDirection ?? obj.Direction, obj.Action, oldMoney ?? obj.MoneyReal ?? 0);
|
||
if (DirectionType != obj.DirectionType)
|
||
{
|
||
obj.DirectionType = $"{DirectionType}{ARROW}{obj.DirectionType}";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public string GetDirection(string Direction, string Action, double money)
|
||
{
|
||
string ret = "";
|
||
if (Direction == "出金" || Direction == "入金")
|
||
{
|
||
ret += Direction;
|
||
}
|
||
else if (Direction == "其他收入" || Direction == "其他支出")
|
||
{
|
||
ret += "其他";
|
||
}
|
||
else if (Action == "系统操作-期权费")
|
||
{
|
||
ret += "权利金";
|
||
}
|
||
else if ((Action == "系统操作-平仓费" || Action == "系统操作-行权费"))
|
||
{
|
||
ret += "平仓/行权";
|
||
}
|
||
else if (Action == "系统操作-票息")
|
||
{
|
||
ret += "票息";
|
||
}
|
||
else if (Action == "系统操作-互换")
|
||
{
|
||
ret += "互换";
|
||
}
|
||
|
||
if (Direction == "出金" || Direction == "入金")
|
||
{
|
||
ret += "";
|
||
}
|
||
else if (money > 0)
|
||
{
|
||
ret += "收入";
|
||
}
|
||
else
|
||
{
|
||
ret += "支出";
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
|
||
public byte[] ExportClientCashChange(TradeChangeReq req)
|
||
{
|
||
SearchListResult<ClientCashChangeList> searchListResult = GetClientCashChangeRep(req);
|
||
var templateFile = OtcAppContext.MapPath("~/App_Docs/导出模板/变更记录模板_资金修改.xlsx");
|
||
return ExcelGenerator.UseTemplateGenerator(templateFile).AddVariable(new { list = searchListResult.rows }).GenerateBytes();
|
||
}
|
||
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 页面交易方向查询条件更新
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
public void UpdateTradeChangeReq(TradeChangeReq req)
|
||
{
|
||
var directionList = new List<string>();
|
||
var tradeActionList = new List<string>();
|
||
var inTradeActionList = new List<string>();
|
||
var outTradeActionList = new List<string>();
|
||
var inOutList = new List<string>();
|
||
void addWhenNotContains(List<string> list, string str)
|
||
{
|
||
if (!list.Contains(str))
|
||
{
|
||
list.Add(str);
|
||
}
|
||
}
|
||
|
||
if (req.DirectionTypeList.Contains("出金"))
|
||
{
|
||
addWhenNotContains(directionList, "出金");
|
||
}
|
||
|
||
if (req.DirectionTypeList.Contains("入金"))
|
||
{
|
||
addWhenNotContains(directionList, "入金");
|
||
}
|
||
|
||
if (req.DirectionTypeList.Contains("其他收入"))
|
||
{
|
||
addWhenNotContains(directionList, "其他收入");
|
||
}
|
||
|
||
if (req.DirectionTypeList.Contains("其他支出"))
|
||
{
|
||
addWhenNotContains(directionList, "其他支出");
|
||
}
|
||
|
||
if (req.DirectionTypeList.Contains("权利金支出"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_期权费);
|
||
addWhenNotContains(inOutList, "应付");
|
||
addWhenNotContains(outTradeActionList, ClientCashInCashOut.系统操作_期权费);
|
||
}
|
||
if (req.DirectionTypeList.Contains("权利金收入"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_期权费);
|
||
addWhenNotContains(inOutList, "应收");
|
||
addWhenNotContains(inTradeActionList, ClientCashInCashOut.系统操作_期权费);
|
||
}
|
||
if (req.DirectionTypeList.Contains("平仓/行权收入"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_平仓费);
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_行权费);
|
||
addWhenNotContains(inOutList, "应收");
|
||
addWhenNotContains(inTradeActionList, ClientCashInCashOut.系统操作_平仓费);
|
||
addWhenNotContains(inTradeActionList, ClientCashInCashOut.系统操作_行权费);
|
||
}
|
||
if (req.DirectionTypeList.Contains("平仓/行权支出"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_平仓费);
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_行权费);
|
||
addWhenNotContains(inOutList, "应付");
|
||
addWhenNotContains(outTradeActionList, ClientCashInCashOut.系统操作_平仓费);
|
||
addWhenNotContains(outTradeActionList, ClientCashInCashOut.系统操作_行权费);
|
||
}
|
||
if (req.DirectionTypeList.Contains("票息收入"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_票息);
|
||
addWhenNotContains(inOutList, "应收");
|
||
addWhenNotContains(inTradeActionList, ClientCashInCashOut.系统操作_票息);
|
||
}
|
||
if (req.DirectionTypeList.Contains("票息支出"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_票息);
|
||
addWhenNotContains(inOutList, "应付");
|
||
addWhenNotContains(outTradeActionList, ClientCashInCashOut.系统操作_票息);
|
||
}
|
||
if (req.DirectionTypeList.Contains("互换收入"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_互换);
|
||
addWhenNotContains(inOutList, "应收");
|
||
addWhenNotContains(inTradeActionList, ClientCashInCashOut.系统操作_互换);
|
||
}
|
||
if (req.DirectionTypeList.Contains("互换支出"))
|
||
{
|
||
addWhenNotContains(tradeActionList, ClientCashInCashOut.系统操作_互换);
|
||
addWhenNotContains(inOutList, "应付");
|
||
addWhenNotContains(outTradeActionList, ClientCashInCashOut.系统操作_互换);
|
||
}
|
||
|
||
req.Direction = string.Join(",", directionList);
|
||
req.TradeAction = string.Join(",", tradeActionList);
|
||
req.InTradeAction = string.Join(",", inTradeActionList);
|
||
req.OutTradeAction = string.Join(",", outTradeActionList);
|
||
req.InOut = string.Join(",", inOutList);
|
||
}
|
||
|
||
public string ReplaceDataChanges(object obj, string dataChanges)
|
||
{
|
||
var filesNameList = new List<string> { "TraderId", "AssetId" };
|
||
if (string.IsNullOrEmpty(dataChanges) || dataChanges.Equals("[]") || dataChanges.LastIndexOf("]") == -1 || dataChanges.StartsWith("[") && !dataChanges.EndsWith("]"))
|
||
{
|
||
return null;
|
||
}
|
||
else
|
||
{
|
||
if (dataChanges.Contains("],"))
|
||
{
|
||
object[] dataChangeArr = JsonHelper.Deserialize<object[]>(dataChanges);
|
||
if (dataChangeArr.Length > 0)
|
||
{
|
||
string dataInfo = string.Empty;
|
||
foreach (object objArr in dataChangeArr)
|
||
{
|
||
string[] objStrArr = JsonHelper.Deserialize<string[]>(objArr.ToJson());
|
||
if (!filesNameList.Contains(objStrArr[0]))
|
||
{
|
||
if (objStrArr[1].Contains("补偿支付") || objStrArr[1].Contains("补偿方式"))
|
||
{
|
||
objStrArr[2] = GetFormatValue("补偿支付", objStrArr[2]);
|
||
objStrArr[3] = GetFormatValue("补偿支付", objStrArr[3]);
|
||
}
|
||
else
|
||
{
|
||
objStrArr[2] = GetFormatValue(objStrArr[1], objStrArr[2]);
|
||
objStrArr[3] = GetFormatValue(objStrArr[1], objStrArr[3]);
|
||
}
|
||
dataInfo += SplicingDataChange(objStrArr, obj);
|
||
}
|
||
}
|
||
return dataInfo;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (dataChanges.Contains("\r\n"))
|
||
{
|
||
string[] dataChangeArr = dataChanges.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||
if (dataChangeArr.Length > 0)
|
||
{
|
||
string dataInfo = string.Empty;
|
||
foreach (string item in dataChangeArr)
|
||
{
|
||
object[] objStrArr = JsonHelper.Deserialize<object[]>(item);
|
||
|
||
if (objStrArr[2] != null && objStrArr[2].ToString() != "\"\"" && objStrArr[2].ToString() != "“ ”" && filesNameList.Contains(objStrArr[0].ToString()))
|
||
{
|
||
objStrArr[2] = GetFormatValue(objStrArr[1].ToString(), objStrArr[2].ToString());
|
||
if (objStrArr[3] != null)
|
||
{
|
||
objStrArr[3] = GetFormatValue(objStrArr[1].ToString(), objStrArr[3].ToString());
|
||
}
|
||
var stringArr = objStrArr.Select(a => a == null ? "" : a.ToString()).ToArray();
|
||
dataInfo += SplicingDataChange(stringArr, obj);
|
||
}
|
||
|
||
}
|
||
return dataInfo;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
string[] dataChangeArr = null;
|
||
if (dataChanges.StartsWith("[") && dataChanges.EndsWith("]") && !dataChanges.StartsWith("[["))
|
||
{
|
||
dataChangeArr = JsonHelper.Deserialize<string[]>(dataChanges);
|
||
}
|
||
else
|
||
{
|
||
dataChangeArr = JsonHelper.Deserialize<string[]>(dataChanges.Substring(1, dataChanges.Length - 2));
|
||
}
|
||
|
||
if (dataChangeArr != null && dataChangeArr.Length > 0 && !string.IsNullOrEmpty(dataChangeArr[2]) && dataChangeArr[2] != "\"\"" && dataChangeArr[2] != "“ ”" && !filesNameList.Contains(dataChangeArr[0]))
|
||
{
|
||
dataChangeArr[2] = GetFormatValue(dataChangeArr[1], dataChangeArr[2]);
|
||
if (dataChangeArr[3] != null)
|
||
{
|
||
dataChangeArr[3] = GetFormatValue(dataChangeArr[1], dataChangeArr[3]);
|
||
}
|
||
return SplicingDataChange(dataChangeArr, obj);
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
return null;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据类属性名称获取 DisplayName
|
||
/// </summary>
|
||
/// <param name="instance"></param>
|
||
/// <param name="propertyName"></param>
|
||
/// <returns></returns>
|
||
public string ContainProperty(object instance, string propertyName)
|
||
{
|
||
if (instance != null && !string.IsNullOrEmpty(propertyName))
|
||
{
|
||
PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
|
||
if (_findedPropertyInfo != null)
|
||
if (_findedPropertyInfo.GetCustomAttribute<DisplayNameAttribute>() != null)
|
||
return _findedPropertyInfo.GetCustomAttribute<DisplayNameAttribute>().DisplayName;
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 拼接字符串 (客户编号:01->02)
|
||
/// </summary>
|
||
/// <param name="dataChangeArr"></param>
|
||
/// <param name="obj"></param>
|
||
/// <returns></returns>
|
||
public string SplicingDataChange(string[] dataChangeArr, object obj)
|
||
{
|
||
string ARROW = "->";
|
||
string empty = "“ ”";
|
||
string dataInfo = string.Empty;
|
||
string dataStr = string.Empty;
|
||
if (!string.IsNullOrEmpty(dataChangeArr[1]))
|
||
{
|
||
dataStr = dataChangeArr[1];
|
||
}
|
||
else if (!string.IsNullOrEmpty(dataChangeArr[0]))
|
||
{
|
||
dataStr = ContainProperty(obj, dataChangeArr[0]);
|
||
if (string.IsNullOrEmpty(dataStr))
|
||
{
|
||
dataStr = dataChangeArr[0];
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return string.Empty;
|
||
}
|
||
|
||
dataStr = dataStr?.Trim();
|
||
if (dataStr == "SalesCommission" || dataStr == "提成信息")
|
||
{
|
||
return string.Empty;
|
||
}
|
||
if (dataStr.IndexOf("ExtendInfo") >= 0)
|
||
{
|
||
var extendInfoArr = string.IsNullOrEmpty(dataChangeArr[2]) ? null
|
||
: (dataChangeArr[2].StartsWith("[")
|
||
? JsonHelper.Deserialize<object[]>(dataChangeArr[2])
|
||
: JsonHelper.Deserialize<object[]>(JsonHelper.Deserialize<string>(dataChangeArr[2]))
|
||
);
|
||
|
||
var extendInfoArr1 = string.IsNullOrEmpty(dataChangeArr[3]) ? null
|
||
: (dataChangeArr[3].StartsWith("[")
|
||
? JsonHelper.Deserialize<object[]>(dataChangeArr[3])
|
||
: JsonHelper.Deserialize<object[]>(JsonHelper.Deserialize<string>(dataChangeArr[3]))
|
||
);
|
||
|
||
string itemStr1 = string.Empty;
|
||
if (extendInfoArr != null)
|
||
{
|
||
foreach (var item in extendInfoArr)
|
||
{
|
||
Dictionary<string, string> itemDics = JsonHelper.Deserialize<Dictionary<string, string>>(item.ToJson());
|
||
var secondValue = "";
|
||
foreach (var item2 in extendInfoArr1)
|
||
{
|
||
Dictionary<string, string> itemDics2 = JsonHelper.Deserialize<Dictionary<string, string>>(item2.ToJson());
|
||
if (itemDics2["name"] == itemDics["name"])
|
||
{
|
||
secondValue = itemDics2["value"];
|
||
break;
|
||
}
|
||
}
|
||
itemStr1 += $"{itemDics["name"]}:{itemDics["value"]}{ARROW}{secondValue};";
|
||
}
|
||
if (itemStr1.Length > 0)
|
||
{
|
||
itemStr1 = itemStr1.Substring(0, itemStr1.Length - 1);
|
||
}
|
||
return itemStr1;
|
||
}
|
||
}
|
||
|
||
if (dataStr.IndexOf(".") > 0)
|
||
{
|
||
dataStr = dataStr.Split('.')[1];
|
||
if (Regex.Match(dataStr, @"^[A-Za-z]+$").Success)
|
||
{
|
||
return string.Empty;
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(dataStr))
|
||
{
|
||
if (dataChangeArr.Length > 2)
|
||
{
|
||
var firstValue = dataChangeArr[2] == "true" ? "是" : (dataChangeArr[2] == "false" ? "否" : dataChangeArr[2]);
|
||
var secondValue = dataChangeArr[3] == "true" ? "是" : (dataChangeArr[3] == "false" ? "否" : dataChangeArr[3]);
|
||
if (dataChangeArr[1] == "成交方式")
|
||
{
|
||
if (firstValue == "是")
|
||
{
|
||
firstValue = "名义本金";
|
||
}
|
||
else
|
||
{
|
||
firstValue = "成交数量";
|
||
}
|
||
|
||
if (secondValue == "是")
|
||
{
|
||
secondValue = "名义本金";
|
||
}
|
||
else
|
||
{
|
||
secondValue = "成交数量";
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(firstValue) && !string.IsNullOrEmpty(secondValue))
|
||
{
|
||
if (firstValue.Contains("YLErp") || secondValue.Contains("YLErp"))
|
||
{
|
||
return string.Empty;
|
||
}
|
||
dataInfo += $"{dataStr}:{firstValue}{ARROW}{secondValue};";
|
||
}
|
||
else if (!string.IsNullOrEmpty(firstValue) && string.IsNullOrEmpty(secondValue))
|
||
{
|
||
if (firstValue.Contains("YLErp"))
|
||
{
|
||
return string.Empty;
|
||
}
|
||
dataInfo += $"{dataStr}:{firstValue}{ARROW}{empty};";
|
||
}
|
||
else if (string.IsNullOrEmpty(firstValue) && !string.IsNullOrEmpty(secondValue))
|
||
{
|
||
if (secondValue.Contains("YLErp"))
|
||
{
|
||
return string.Empty;
|
||
}
|
||
dataInfo += $"{dataStr}:{empty}{ARROW}{secondValue};";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(dataChangeArr[1]))
|
||
{
|
||
dataInfo += $"{dataStr}:{dataChangeArr[1]};";
|
||
}
|
||
else
|
||
{
|
||
dataInfo += $"{dataStr}:{empty};";
|
||
}
|
||
}
|
||
}
|
||
|
||
return dataInfo;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 格式化值
|
||
/// </summary>
|
||
/// <param name="value"></param>
|
||
/// <returns></returns>
|
||
public string GetFormatValue(string filesName, string value)
|
||
{
|
||
var returnValue = value;
|
||
double fomartDoubleValue;
|
||
if (!string.IsNullOrEmpty(filesName))
|
||
{
|
||
|
||
switch (filesName)
|
||
{
|
||
case "敲入敲出状态":
|
||
switch (value)
|
||
{
|
||
case "KnockedIn": returnValue = "敲入"; break;
|
||
case "KnockedOut": returnValue = "敲出"; break;
|
||
}
|
||
break;
|
||
case "追保方向":
|
||
switch (value)
|
||
{
|
||
case "0": returnValue = "单向追保"; break;
|
||
case "1": returnValue = "双向追保"; break;
|
||
case "2": returnValue = "对手方单向追保"; break;
|
||
case "3": returnValue = "其他"; break;
|
||
};
|
||
break;
|
||
case "业务类型":
|
||
switch (value)
|
||
{
|
||
case "OP": returnValue = "期权业务"; break;
|
||
case "SW": returnValue = "掉期业务"; break;
|
||
};
|
||
break;
|
||
case "机构类型":
|
||
switch (value)
|
||
{
|
||
case "F": returnValue = "金融机构"; break;
|
||
case "P": returnValue = "产品"; break;
|
||
case "C": returnValue = "一般法人"; break;
|
||
};
|
||
break;
|
||
case "业务部门编号":
|
||
switch (value)
|
||
{
|
||
case "O": returnValue = "做市交易部"; break;
|
||
case "S": returnValue = "衍生品发展部"; break;
|
||
case "C": returnValue = "协同销售部"; break;
|
||
};
|
||
break;
|
||
case "期权费率":
|
||
case "单笔保底收益":
|
||
double.TryParse(value, out fomartDoubleValue);
|
||
returnValue = fomartDoubleValue.OtcFormat(OtcFormatFlag.umprice);
|
||
break;
|
||
case "中央对手方清算":
|
||
case "是否中央对手方清算":
|
||
switch (value)
|
||
{
|
||
case "N":
|
||
case "\"N\"":
|
||
returnValue = "否"; break;
|
||
case "I":
|
||
case "\"I\"":
|
||
returnValue = "计划中央对手方清算"; break;
|
||
case "Y":
|
||
case "\"Y\"":
|
||
returnValue = "是"; break;
|
||
};
|
||
break;
|
||
case "补偿支付":
|
||
switch (value)
|
||
{
|
||
case "AtHit":
|
||
case "\"AtHit\"":
|
||
returnValue = "立即"; break;
|
||
case "AtEnd":
|
||
case "\"AtEnd\"":
|
||
returnValue = "递延"; break;
|
||
|
||
};
|
||
break;
|
||
case "敲入观察周期":
|
||
var valueArr = value.Split("|");
|
||
|
||
if (valueArr[0] != null)
|
||
{
|
||
returnValue = "每" + valueArr[0].Replace("D", "日").Replace("W", "周").Replace("M", "月").Replace("Y", "年");
|
||
}
|
||
break;
|
||
case "行权方式":
|
||
case "ExerciseMode":
|
||
switch (value)
|
||
{
|
||
case "American":
|
||
case "\"American\"":
|
||
returnValue = "美式"; break;
|
||
case "European":
|
||
case "\"European\"":
|
||
returnValue = "欧式"; break;
|
||
}
|
||
break;
|
||
case "客户等级":
|
||
switch (value)
|
||
{
|
||
case "1": returnValue = "重点"; break;
|
||
case "2": returnValue = "主要"; break;
|
||
case "3": returnValue = "一般"; break;
|
||
case "4": returnValue = "不重要"; break;
|
||
case "5": returnValue = "S级"; break;
|
||
}
|
||
break;
|
||
case "证件有效期":
|
||
case "IdCardEffectiveDateStr":
|
||
switch (value)
|
||
{
|
||
case "30001231":
|
||
case "\"30001231\"":
|
||
returnValue = "长期有效"; break;
|
||
}
|
||
break;
|
||
|
||
}
|
||
}
|
||
return returnValue;
|
||
}
|
||
}
|
||
}
|