176 lines
5.6 KiB
C#
176 lines
5.6 KiB
C#
using BaseOUDAL;
|
|
using YieldChain.Helpers;
|
|
|
|
namespace YLErp.Modules.ClientModule
|
|
{
|
|
/// <summary>
|
|
/// 客户给予子公司的授信额度
|
|
/// </summary>
|
|
public class CreditFromClientService : YLBaseService
|
|
{
|
|
public CreditFromClientService(OptUserInfo userInfo) : base(userInfo)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存客户给予子公司的授信额度
|
|
/// </summary>
|
|
public CreditFromClient SaveCreditFromClient(CreditFromClient req)
|
|
{
|
|
if (req.CreditDeadLine < req.CreditStartDate)
|
|
{
|
|
throw new ServiceException("授信起始日不能大于授信到期日");
|
|
}
|
|
|
|
CreditFromClient dbModel;
|
|
var isAddNew = req.id == 0;
|
|
var updateComments = false;
|
|
DateTime? createDate = DateTime.Now;
|
|
int? creatorId = UserInfo.UserId;
|
|
var creatorName = UserInfo.UserName;
|
|
|
|
if (isAddNew)
|
|
{
|
|
dbModel = new CreditFromClient();
|
|
DbContext.CreditFromClient.Add(dbModel);
|
|
}
|
|
else
|
|
{
|
|
dbModel = DbContext.CreditFromClient.Find(req.id);
|
|
if (dbModel == null)
|
|
{
|
|
throw new ServiceException("数据不存在");
|
|
}
|
|
updateComments = dbModel.Credit == req.Credit
|
|
&& dbModel.CreditDeadLine == req.CreditDeadLine
|
|
&& dbModel.CreditStartDate == req.CreditStartDate;
|
|
|
|
createDate = dbModel.CreateDate;
|
|
creatorId = dbModel.CreatorId;
|
|
creatorName = dbModel.CreatorName;
|
|
}
|
|
|
|
if (updateComments)
|
|
{
|
|
dbModel.Comments = req.Comments;
|
|
DbContext.SaveChanges();
|
|
return dbModel;
|
|
}
|
|
|
|
UpdateChanges(dbModel, req);
|
|
|
|
SetDBModelOpt(dbModel);
|
|
dbModel.CreatorName = creatorName;
|
|
dbModel.CreatorId = creatorId;
|
|
dbModel.CreateDate = createDate;
|
|
|
|
//设置客户编号
|
|
var client = ClientDataQueryService.GetClient(dbModel.ClientId, true);
|
|
dbModel.ClientNumber = client.Number;
|
|
dbModel.ClientName = client.Name;
|
|
|
|
var query = from credit in DbContext.CreditFromClient
|
|
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 CreditFromClient GetData(int id)
|
|
{
|
|
var dbModel = DbContext.CreditFromClient.AsNoTracking().FirstOrDefault(n => n.id == id);
|
|
if (dbModel == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var dto = new CreditFromClient();
|
|
|
|
ObjectHelper.MapValues(dto, dbModel);
|
|
|
|
var client = ClientDataQueryService.GetClient(dbModel.ClientId, true);
|
|
dto.ClientNumber = client.Number;
|
|
dto.ClientName = client.Name;
|
|
|
|
return dto;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除数据
|
|
/// </summary>
|
|
public CreditFromClient RemoveData(int id)
|
|
{
|
|
var dbModel = DbContext.CreditFromClient.FirstOrDefault(n => n.id == id);
|
|
if (dbModel == null)
|
|
{
|
|
throw new ServiceException("找不到数据");
|
|
}
|
|
DbContext.CreditFromClient.Remove(dbModel);
|
|
DbContext.SaveChanges();
|
|
return dbModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 搜索数据
|
|
/// </summary>
|
|
public SearchListResult<CreditFromClient> SearchData(ClientCreditReq req)
|
|
{
|
|
if (string.IsNullOrEmpty(req.sidx))
|
|
{
|
|
req.sidx = "id";
|
|
req.sord = "desc";
|
|
}
|
|
|
|
var predicate = PredicateBuilder.True<CreditFromClient>();
|
|
|
|
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 clientIds = new ClientDataService(OptUser).GetClientIds();
|
|
if (clientIds.Any())
|
|
{
|
|
predicate = predicate.And(a => clientIds.Contains(a.ClientId));
|
|
}
|
|
var sList = DbContext.CreditFromClient.Where(predicate).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;
|
|
}
|
|
}
|
|
}
|