Files
zszq-trs/YLErpDAL/Modules/ClientModule/CreditFromClientService.cs
T
2024-05-09 14:06:26 +08:00

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;
}
}
}