从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
using YLErp.BLL;
|
||||
|
||||
namespace YLErp.Modules.EodModule.SettlementModule
|
||||
{
|
||||
/// <summary>
|
||||
/// 检查所有已开户的客户资信评级
|
||||
/// </summary>
|
||||
class EodCheckClientRating : ClientBaseService
|
||||
{
|
||||
readonly EodSettlementContextBase _context;
|
||||
|
||||
public EodCheckClientRating(EodSettlementContextBase context) : base(context.UserInfo)
|
||||
{
|
||||
_context = context ?? throw new ArgumentNullException(nameof(context));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查所有已开户的客户资信评级
|
||||
/// </summary>
|
||||
public bool CheckClientRating()
|
||||
{
|
||||
var settleDate = _context.SettleDate;
|
||||
|
||||
//var canSelectCreditVariety = PS.Config.ClientElement.CanSelectCreditVariety;
|
||||
|
||||
//对当前“资信等级”快要到期的客户以某种方式进行提示,要求更新它的“资信等级”,如果逾期没有更新,【收盘操作】中应当可以检查出来,显示收盘不成功。
|
||||
//必须审核通过!
|
||||
|
||||
//1.检查当日
|
||||
var clientNames = CheckDateClientRating(settleDate);
|
||||
|
||||
string CheckMsg;
|
||||
if (!string.IsNullOrWhiteSpace(clientNames))
|
||||
{
|
||||
CheckMsg = $"客户:{clientNames} ,在{settleDate:yyyy-MM-dd} 的资信评级不存在或未审核,请进入资信评级菜单检查 或者将该客户设为休眠状态!";
|
||||
_context.RaiseError(CheckMsg, "");
|
||||
return false;
|
||||
}
|
||||
|
||||
//2.预警下一个交易日
|
||||
var nextWorkDay = QdpModule.QdpCalendarHelper.GetNonHoliday(settleDate.AddDays(1));
|
||||
var clientNamesNextDay = CheckDateClientRating(nextWorkDay);
|
||||
if (!string.IsNullOrWhiteSpace(clientNamesNextDay))
|
||||
{
|
||||
CheckMsg = $"警告:客户:{clientNamesNextDay},在{nextWorkDay:yyyy-MM-dd} 的资信评级不存在或未审核,请提前进入资信评级菜单检查!";
|
||||
_context.RaiseError(CheckMsg, "");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private string CheckDateClientRating(DateTime settleDate)
|
||||
{
|
||||
//历史收盘不验证
|
||||
var nowDate = valuedateBLL.ValueDate;
|
||||
if (nowDate > settleDate.Date)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
//以下客户符合要求:有已审批的评级记录;当前系统日落在该客户已审批的评级记录里。
|
||||
var meetCondition = from client in DbContext.client.Where(x => x.ProcessStatus == "已开户")
|
||||
join clientrating in DbContext.Client_Rating.Where(x => !x.IsDeleted && x.ProcessStatus == "已审批")
|
||||
on client.id equals clientrating.ClientId
|
||||
where (settleDate >= clientrating.RatingStartDate) && (settleDate <= clientrating.RatingDeadLine)
|
||||
select new
|
||||
{
|
||||
clientId = client.id
|
||||
};
|
||||
|
||||
//以下已开户的客户但不在上述名单的会被筛选
|
||||
var queryError = from client in DbContext.client.Where(x => x.ProcessStatus == "已开户")
|
||||
where !meetCondition.Select(x => x.clientId).Contains(client.id)
|
||||
select new
|
||||
{
|
||||
clientId = client.id,
|
||||
clientName = client.Name
|
||||
};
|
||||
|
||||
if (queryError.Any())
|
||||
{
|
||||
var clients = string.Join(" , ", queryError.Select(x => x.clientName).ToArray());
|
||||
return clients;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user