262 lines
9.9 KiB
C#
262 lines
9.9 KiB
C#
using MoreLinq;
|
|
using YLErp.BLL;
|
|
|
|
namespace YLErp.Modules.ClientModule
|
|
{
|
|
/// <summary>
|
|
/// 山证金衍 客户预警
|
|
/// </summary>
|
|
public class ClientWarningService : ClientBaseService
|
|
{
|
|
public ClientWarningService(OptUserInfo userInfo) : base(userInfo)
|
|
{
|
|
|
|
}
|
|
|
|
public ClientWarningService(ClientBaseService baseService) : base(baseService)
|
|
{
|
|
}
|
|
|
|
public string CheckedClient()
|
|
{
|
|
var query = DbContext.client.Where(x => x.ProcessStatus == "已开户" && x.isWarning != true);
|
|
|
|
var clientdutys = (from duty in DbContext.clientduty.Where(x => x.ApprovalOrder < 1)
|
|
join client in query on duty.ClientId equals client.id
|
|
select duty).ToList();
|
|
|
|
var clients = query.ToList();
|
|
|
|
var expireDate = valuedateBLL.ValueDate;
|
|
var dueDate = valuedateBLL.ValueDate.AddMonths(3);
|
|
|
|
if (clients.Where(x => x.LicenseValidTime < expireDate || x.EvaluateExpireDate < expireDate).Any() || clientdutys.Where(x => x.IdCardEffectiveDate < expireDate || x.AuthorizeEffectiveEndDate < expireDate).Any())
|
|
{
|
|
return "已到期";
|
|
}
|
|
else if (clients.Where(x => x.LicenseValidTime <= dueDate || x.EvaluateExpireDate <= dueDate).Any() || clientdutys.Where(x => x.IdCardEffectiveDate <= dueDate || x.AuthorizeEffectiveEndDate <= dueDate).Any())
|
|
{
|
|
return "即将到期";
|
|
}
|
|
else
|
|
{
|
|
return "无异常";
|
|
}
|
|
}
|
|
|
|
public List<ExpireWarning> GetExpiresWarning(ExpireWarningReq req)
|
|
{
|
|
var list = new List<ExpireWarning>();
|
|
|
|
var dueDate = valuedateBLL.ValueDate.AddMonths(3);
|
|
|
|
var query1 = DbContext.client.Where(x => x.ProcessStatus == "已开户");
|
|
if (!string.IsNullOrWhiteSpace(req.Number))
|
|
{
|
|
query1 = query1.Where(x => x.Number.Contains(req.Number));
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(req.Name))
|
|
{
|
|
query1 = query1.Where(x => x.Name.Contains(req.Name));
|
|
}
|
|
|
|
var query2 = from duty in DbContext.clientduty.Where(x => x.ApprovalOrder < 1)
|
|
join client in query1 on duty.ClientId equals client.id
|
|
select duty;
|
|
|
|
var clients = query1.ToList();
|
|
var clientdutys = query2.ToList();
|
|
|
|
var ids1 = clients.Where(x => x.LicenseValidTime <= dueDate || x.EvaluateExpireDate <= dueDate).Select(x => x.id).ToList();
|
|
var ids2 = clientdutys.Where(x => x.IdCardEffectiveDate <= dueDate || x.AuthorizeEffectiveEndDate <= dueDate).Select(x => x.ClientId??0).ToList();
|
|
ids1.AddRange(ids2);
|
|
var ids= ids1.Distinct().ToList();
|
|
clients = clients.Where(x => ids.Contains(x.id)).ToList();
|
|
|
|
var datelast = new DateTime(3000, 12, 31);
|
|
|
|
foreach (var c in clients)
|
|
{
|
|
var e = new ExpireWarning
|
|
{
|
|
LicenseValidTime = c.LicenseValidTime
|
|
};
|
|
e.LicenseValidTimeStr = e.LicenseValidTime == datelast ? "长期有效" : e.LicenseValidTime?.ToString("yyyy-MM-dd");
|
|
e.EvaluateExpireDate = c.EvaluateExpireDate;
|
|
e.EvaluateExpireDateStr = e.EvaluateExpireDate == datelast ? "长期有效" : e.EvaluateExpireDate?.ToString("yyyy-MM-dd");
|
|
var dutys = clientdutys.Where(x => x.ClientId == c.id);
|
|
if (dutys.Any())
|
|
{
|
|
e.IdCardEffectiveDate = dutys.Where(x => x.IdCardEffectiveDate != null).OrderBy(x => x.IdCardEffectiveDate).FirstOrDefault()?.IdCardEffectiveDate;
|
|
e.IdCardEffectiveDateStr = e.IdCardEffectiveDate == datelast ? "长期有效" : e.IdCardEffectiveDate?.ToString("yyyy-MM-dd");
|
|
e.AuthorizeEffectiveEndDate = dutys.Where(x => x.AuthorizeEffectiveEndDate != null).OrderBy(x => x.AuthorizeEffectiveEndDate).FirstOrDefault()?.AuthorizeEffectiveEndDate;
|
|
e.AuthorizeEffectiveEndDateStr = e.AuthorizeEffectiveEndDate == datelast ? "长期有效" : e.AuthorizeEffectiveEndDate?.ToString("yyyy-MM-dd");
|
|
}
|
|
e.EvaluateDate = c.EvaluateDate;
|
|
e.EvaluateDateStr = e.EvaluateDate?.ToString("yyyy-MM-dd");
|
|
e.isWarning = c.isWarning ?? false;
|
|
e.id = c.id;
|
|
e.EncryptId = c.EncryptId;
|
|
e.Number = c.Number;
|
|
e.Name = c.Name;
|
|
list.Add(e);
|
|
}
|
|
|
|
if (ids.Any())
|
|
{
|
|
if (req.StartExpireDate != null && req.EndExpireDate != null)
|
|
{
|
|
list = list.Where(x => (x.LicenseValidTime >= req.StartExpireDate && x.LicenseValidTime <= req.EndExpireDate) || (x.EvaluateExpireDate >= req.StartExpireDate && x.EvaluateExpireDate <= req.EndExpireDate) || (x.IdCardEffectiveDate >= req.StartExpireDate && x.IdCardEffectiveDate <= req.EndExpireDate) || (x.AuthorizeEffectiveEndDate >= req.StartExpireDate && x.AuthorizeEffectiveEndDate <= req.EndExpireDate)).ToList();
|
|
}
|
|
else
|
|
{
|
|
if (req.StartExpireDate != null)
|
|
{
|
|
list = list.Where(x => x.LicenseValidTime >= req.StartExpireDate || x.EvaluateExpireDate >= req.StartExpireDate || x.IdCardEffectiveDate >= req.StartExpireDate || x.AuthorizeEffectiveEndDate >= req.StartExpireDate).ToList();
|
|
}
|
|
if (req.EndExpireDate != null)
|
|
{
|
|
list = list.Where(x => x.LicenseValidTime <= req.EndExpireDate || x.EvaluateExpireDate <= req.EndExpireDate || x.IdCardEffectiveDate <= req.EndExpireDate || x.AuthorizeEffectiveEndDate <= req.EndExpireDate).ToList();
|
|
}
|
|
}
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
public void UpdateWarning(int id)
|
|
{
|
|
var client = DbContext.client.Find(id);
|
|
if (client != null)
|
|
{
|
|
client.isWarning = client.isWarning != true;
|
|
_ = DbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
public ExpireWarningStatus GetExpireStatus()
|
|
{
|
|
var expires = GetExpiresWarning(new ExpireWarningReq());
|
|
var ret = new ExpireWarningStatus
|
|
{
|
|
status = "无异常",
|
|
isExpire = 0,
|
|
isDue = 0,
|
|
isExpire_all = 0,
|
|
isDue_all = 0
|
|
};
|
|
|
|
if (expires.Count() > 0)
|
|
{
|
|
var expirelist = expires.Where(x => x.LicenseValidTime < ret.ExpireDate || x.EvaluateExpireDate < ret.ExpireDate || x.IdCardEffectiveDate < ret.ExpireDate || x.AuthorizeEffectiveEndDate < ret.ExpireDate).ToList();
|
|
var duelist = expires;
|
|
if (expirelist.Count() > 0)
|
|
{
|
|
var expireids = expirelist.Select(x => x.id).ToList();
|
|
duelist = duelist.Where(x => !expireids.Contains(x.id)).ToList();
|
|
ret.status = "已到期";
|
|
ret.isExpire_all = expirelist.Count();
|
|
if (expirelist.Where(x => x.isWarning == true).Count() > 0)
|
|
{
|
|
ret.isExpire = expirelist.Where(x => x.isWarning != true).Count();
|
|
}
|
|
else
|
|
{
|
|
ret.isExpire = ret.isExpire_all;
|
|
}
|
|
}
|
|
if (duelist.Count() > 0)
|
|
{
|
|
ret.status = ret.status == "已到期" ? "已到期" : "即将到期";
|
|
ret.isDue_all = duelist.Count();
|
|
if (duelist.Where(x => x.isWarning == true).Count() > 0)
|
|
{
|
|
ret.isDue = duelist.Where(x => x.isWarning != true).Count();
|
|
}
|
|
else
|
|
{
|
|
ret.isDue = ret.isDue_all;
|
|
}
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
public class ExpireWarning
|
|
{
|
|
public int id { get; set; }
|
|
|
|
/// <summary>
|
|
/// 加密主键
|
|
/// </summary>
|
|
public string? EncryptId { get; set; }
|
|
|
|
public string? Number { get; set; }
|
|
|
|
public string? Name { get; set; }
|
|
|
|
public DateTime? LicenseValidTime { get; set; }
|
|
|
|
public string? LicenseValidTimeStr { get; set; }
|
|
|
|
public DateTime? EvaluateDate { get; set; }
|
|
|
|
public string? EvaluateDateStr { get; set; }
|
|
|
|
public DateTime? EvaluateExpireDate { get; set; }
|
|
|
|
public string? EvaluateExpireDateStr { get; set; }
|
|
|
|
public DateTime? IdCardEffectiveDate { get; set; }
|
|
|
|
public string? IdCardEffectiveDateStr { get; set; }
|
|
|
|
public DateTime? AuthorizeEffectiveEndDate { get; set; }
|
|
|
|
public string? AuthorizeEffectiveEndDateStr { get; set; }
|
|
|
|
public bool isWarning { get; set; }
|
|
}
|
|
|
|
public class ExpireWarningReq
|
|
{
|
|
public string? Number { get; set; }
|
|
|
|
public string? Name { get; set; }
|
|
|
|
public DateTime? StartExpireDate { get; set; }
|
|
|
|
public DateTime? EndExpireDate { get; set; }
|
|
}
|
|
|
|
public class ExpireWarningStatus
|
|
{
|
|
public DateTime ExpireDate
|
|
{
|
|
get
|
|
{
|
|
return valuedateBLL.ValueDate;
|
|
}
|
|
}
|
|
|
|
public DateTime DueDate
|
|
{
|
|
get
|
|
{
|
|
return valuedateBLL.ValueDate.AddMonths(3);
|
|
}
|
|
}
|
|
|
|
public string? status { get; set; }
|
|
|
|
public int? isExpire { get; set; }
|
|
|
|
public int? isDue { get; set; }
|
|
|
|
public int? isExpire_all { get; set; }
|
|
|
|
public int? isDue_all { get; set; }
|
|
}
|
|
}
|