161 lines
4.8 KiB
C#
161 lines
4.8 KiB
C#
using BaseOUDAL;
|
|
using YieldChain.Helpers;
|
|
|
|
namespace YLErp.Modules.ClientModule
|
|
{
|
|
/// <summary>
|
|
/// (瑞达)日内授信
|
|
/// </summary>
|
|
public class CreditIntradayService : YLBaseService
|
|
{
|
|
public CreditIntradayService(OptUserInfo userInfo) : base(userInfo)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// (瑞达)日内授信保存
|
|
/// </summary>
|
|
public CreditIntraday SaveCreditIntraday(CreditIntraday req)
|
|
{
|
|
if (req.CreditDeadLine < req.CreditStartDate)
|
|
{
|
|
throw new ServiceException("授信起始日不能大于授信到期日");
|
|
}
|
|
|
|
CreditIntraday dbModel;
|
|
var isAddNew = req.id == 0;
|
|
var updateComments = false;
|
|
|
|
if (isAddNew)
|
|
{
|
|
dbModel = new CreditIntraday();
|
|
DbContext.CreditIntraday.Add(dbModel);
|
|
}
|
|
else
|
|
{
|
|
dbModel = DbContext.CreditIntraday.Find(req.id);
|
|
if (dbModel == null)
|
|
{
|
|
throw new ServiceException("数据不存在");
|
|
}
|
|
updateComments = dbModel.Credit == req.Credit
|
|
&& dbModel.CreditDeadLine == req.CreditDeadLine
|
|
&& dbModel.CreditStartDate == req.CreditStartDate;
|
|
}
|
|
|
|
if (updateComments)
|
|
{
|
|
dbModel.Comments = req.Comments;
|
|
DbContext.SaveChanges();
|
|
return dbModel;
|
|
}
|
|
|
|
UpdateChanges(dbModel, req);
|
|
|
|
SetDBModelOpt(dbModel);
|
|
|
|
ClientDataQueryService.CheckClientExists(dbModel.ClientId, true);
|
|
|
|
var query = from credit in DbContext.CreditIntraday
|
|
where credit.ClientId == dbModel.ClientId && credit.id != req.id
|
|
&& (!(req.CreditStartDate > credit.CreditDeadLine || req.CreditDeadLine < credit.CreditStartDate))
|
|
select credit;
|
|
|
|
if (query.Any())
|
|
{
|
|
throw new ServiceException("同一客户授信有效时间不能重合,请检查该客户已存在的授信记录");
|
|
}
|
|
|
|
DbContext.SaveChanges();
|
|
|
|
return dbModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取数据
|
|
/// </summary>
|
|
public CreditIntradayDto GetData(int id)
|
|
{
|
|
var dbModel = DbContext.CreditIntraday.AsNoTracking().FirstOrDefault(n => n.id == id);
|
|
if (dbModel == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var dto = new CreditIntradayDto();
|
|
|
|
ObjectHelper.MapValues(dto, dbModel);
|
|
|
|
var client = ClientDataQueryService.GetClient(dbModel.ClientId, true);
|
|
dto.ClientNumber = client.Number;
|
|
dto.ClientName = client.Name;
|
|
|
|
return dto;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除数据
|
|
/// </summary>
|
|
public CreditIntraday RemoveData(int id)
|
|
{
|
|
var dbModel = DbContext.CreditIntraday.FirstOrDefault(n => n.id == id);
|
|
if (dbModel == null)
|
|
{
|
|
throw new ServiceException("找不到数据");
|
|
}
|
|
DbContext.CreditIntraday.Remove(dbModel);
|
|
DbContext.SaveChanges();
|
|
return dbModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 搜索数据
|
|
/// </summary>
|
|
public SearchListResult<CreditIntradayDto> SearchData(ClientCreditReq req)
|
|
{
|
|
if (string.IsNullOrEmpty(req.sidx))
|
|
{
|
|
req.sidx = "id";
|
|
req.sord = "desc";
|
|
}
|
|
|
|
var predicate = PredicateBuilder.True<CreditIntraday>();
|
|
|
|
if (req != null)
|
|
{
|
|
if (req.ClientId.HasValue && req.ClientId.Value > 0)
|
|
{
|
|
predicate = predicate.And(O => O.ClientId == req.ClientId.Value);
|
|
}
|
|
|
|
if (req.CreditDeadLineStart > default(DateTime))
|
|
{
|
|
predicate = predicate.And(O => O.CreditDeadLine >= req.CreditDeadLineStart);
|
|
}
|
|
|
|
if (req.CreditDeadLineEnd > default(DateTime))
|
|
{
|
|
predicate = predicate.And(O => O.CreditDeadLine <= req.CreditDeadLineEnd);
|
|
}
|
|
}
|
|
|
|
var query = DbContext.CreditIntraday.Where(predicate).ProjectTo<CreditIntradayDto>();
|
|
|
|
var sList = query.ToSearchList(req);
|
|
|
|
foreach (var item in sList.rows)
|
|
{
|
|
var client = ClientDataQueryService.GetClient(item.ClientId);
|
|
if (client != null)
|
|
{
|
|
item.ClientNumber = client.Number;
|
|
item.ClientName = client.Name;
|
|
}
|
|
}
|
|
|
|
return sList;
|
|
}
|
|
}
|
|
}
|