using BaseOUDAL; using YieldChain.Helpers; namespace YLErp.Modules.ClientModule { /// /// (瑞达)日内授信 /// public class CreditIntradayService : YLBaseService { public CreditIntradayService(OptUserInfo userInfo) : base(userInfo) { } /// /// (瑞达)日内授信保存 /// 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; } /// /// 获取数据 /// 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; } /// /// 删除数据 /// 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; } /// /// 搜索数据 /// public SearchListResult SearchData(ClientCreditReq req) { if (string.IsNullOrEmpty(req.sidx)) { req.sidx = "id"; req.sord = "desc"; } var predicate = PredicateBuilder.True(); 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(); 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; } } }