192 lines
8.1 KiB
C#
192 lines
8.1 KiB
C#
using BaseOUDAL;
|
|
using Org.BouncyCastle.Ocsp;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using YLErp.DBModels;
|
|
using YLErp.Model;
|
|
using YLErp.Modules.EodModule.QueryModule;
|
|
using YLErp.Modules.SwapModule.Dto;
|
|
|
|
namespace YLErp.Modules.SwapModule
|
|
{
|
|
public class TrsAccountManageService : YLBaseService
|
|
{
|
|
public TrsAccountManageService(OptUserInfo optUser) : base(optUser)
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// 分页查询
|
|
/// </summary>
|
|
/// <param name="req"></param>
|
|
/// <returns></returns>
|
|
public SearchListResult<TrsAccountManageDto> SearchList(TrsAccountManageRequest req)
|
|
{
|
|
var predicate = PredicateBuilder.Create<TrsAcountManage>(x => !x.del_flag);
|
|
var detailPredicate = PredicateBuilder.Create<TrsAccountManageDetail>(x => true);
|
|
if (!string.IsNullOrEmpty(req.Account))
|
|
{
|
|
predicate = predicate.And(x => x.account.Contains(req.Account));
|
|
}
|
|
if (!string.IsNullOrEmpty(req.AccountName))
|
|
{
|
|
predicate = predicate.And(x => x.account_name.Contains(req.AccountName));
|
|
}
|
|
if (req.ClientIds != null && req.ClientIds.Count() > 0)
|
|
{
|
|
detailPredicate = detailPredicate.And(x => req.ClientIds.Contains(x.client_id??0));
|
|
}
|
|
|
|
var query = DbContext.trs_account_manage.Where(predicate);
|
|
var detailQuery = DbContext.trs_account_manage_detail.Where(detailPredicate);
|
|
|
|
if (string.IsNullOrEmpty(req.sidx))
|
|
{
|
|
req.sidx = "id";
|
|
req.sord = "desc";
|
|
}
|
|
var mainQuery=from tm in query
|
|
where detailQuery.Any(tmd =>tmd.account_id == tm.id)
|
|
select tm;
|
|
var pageResult= mainQuery.ToSearchList(req);
|
|
SearchListResult<TrsAccountManageDto> pageNewResult = new SearchListResult<TrsAccountManageDto>()
|
|
{
|
|
page = pageResult.page,
|
|
records = pageResult.records,
|
|
Sum = pageResult.Sum,
|
|
total = pageResult.total,
|
|
rows=new List<TrsAccountManageDto>()
|
|
};
|
|
var list= new List<TrsAccountManageDto>();
|
|
foreach (var record in pageResult.rows)
|
|
{
|
|
TrsAccountManageDto trsAccountManageDto = new TrsAccountManageDto() {
|
|
id= record.id,
|
|
trader_id=record.trader_id,
|
|
account= record.account,
|
|
account_name= record.account_name,
|
|
OptDate=record.OptDate,
|
|
OptId=record.OptId,
|
|
OptName=record.OptName,
|
|
remark=record.remark,
|
|
};
|
|
trsAccountManageDto.TrsAccountManageDetails = detailQuery.Where(x=>x.account_id==record.id).ToList();
|
|
list.Add(trsAccountManageDto);
|
|
}
|
|
pageNewResult.rows= list;
|
|
return pageNewResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存
|
|
/// </summary>
|
|
/// <param name="req"></param>
|
|
/// <exception cref="Exception"></exception>
|
|
public void SaveAccountManage(TrsAccountManageSaveRequest req)
|
|
{
|
|
TrsAcountManage trsAcountManage= new TrsAcountManage();
|
|
if (req.id > 0)
|
|
{
|
|
trsAcountManage = DbContext.trs_account_manage.FirstOrDefault(x=>x.id== req.id && !x.del_flag);
|
|
if (trsAcountManage==null)
|
|
{
|
|
throw new Exception("修改失败,原数据不存在");
|
|
}
|
|
}
|
|
CheckClient(req.id,req.ClientIds);
|
|
trsAcountManage.trader_id = req.TraderId;
|
|
trsAcountManage.account=req.Account;
|
|
trsAcountManage.remark=req.Remark;
|
|
trsAcountManage.account_name = req.AccountName;
|
|
trsAcountManage.SetOpt(UserInfo);
|
|
if (req.id == 0)
|
|
{
|
|
DbContext.trs_account_manage.Add(trsAcountManage);
|
|
}
|
|
DbContext.SaveChanges();
|
|
var details = DbContext.trs_account_manage_detail.Where(x=>x.account_id== trsAcountManage.id);
|
|
DbContext.trs_account_manage_detail.RemoveRange(details);
|
|
if (req.ClientIds!=null)
|
|
{
|
|
List<TrsAccountManageDetail> trsAccountManageDetails = new List<TrsAccountManageDetail>();
|
|
foreach (var clientId in req.ClientIds)
|
|
{
|
|
TrsAccountManageDetail trsAccountManageDetail = new TrsAccountManageDetail();
|
|
trsAccountManageDetail.account_id = trsAcountManage.id;
|
|
trsAccountManageDetail.client_name = DataCacheProvider.GetClientDataSource().GetData(clientId)?.Name;
|
|
trsAccountManageDetail.client_id = clientId;
|
|
trsAccountManageDetail.SetOpt(UserInfo);
|
|
trsAccountManageDetails.Add(trsAccountManageDetail);
|
|
}
|
|
DbContext.trs_account_manage_detail.AddRange(trsAccountManageDetails);
|
|
}
|
|
else
|
|
{
|
|
TrsAccountManageDetail trsAccountManageDetail = new TrsAccountManageDetail();
|
|
trsAccountManageDetail.account_id = trsAcountManage.id;
|
|
trsAccountManageDetail.SetOpt(UserInfo);
|
|
DbContext.trs_account_manage_detail.Add(trsAccountManageDetail);
|
|
}
|
|
DbContext.SaveChanges();
|
|
}
|
|
|
|
private void CheckClient(int id,List<int> clientIds)
|
|
{
|
|
if (clientIds==null|| clientIds.Count==0)
|
|
{
|
|
var details = from tm in DbContext.trs_account_manage.Where(x => x.id != id&&!x.del_flag)
|
|
join tmd in DbContext.trs_account_manage_detail.Where(x => x.account_id != id) on tm.id equals tmd.account_id into tmtemp
|
|
from t in tmtemp.DefaultIfEmpty()
|
|
where t == null
|
|
select tm;
|
|
if (details.ToList().Count>0)
|
|
{
|
|
throw new Exception($"已有账户未设置客户");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var details = DbContext.trs_account_manage_detail.Where(x => x.account_id != id && clientIds.Contains(x.client_id??0)).Select(s => s.client_name).ToList();
|
|
if (details.Any())
|
|
{
|
|
throw new Exception($"客户 {string.Join(",", details)} 已配置");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void DeleteAccountManage(int id)
|
|
{
|
|
var trsAcountManage = DbContext.trs_account_manage.FirstOrDefault(x => x.id == id&&!x.del_flag);
|
|
if (trsAcountManage==null)
|
|
{
|
|
throw new Exception("删除失败,原数据不存在");
|
|
}
|
|
trsAcountManage.del_flag = true;
|
|
var details = DbContext.trs_account_manage_detail.Where(x => x.account_id == trsAcountManage.id);
|
|
DbContext.trs_account_manage_detail.RemoveRange(details);
|
|
DbContext.SaveChanges();
|
|
}
|
|
|
|
public TrsAccountManageDto GetDetial(int id)
|
|
{
|
|
TrsAccountManageDto trsAccountManageDto = new TrsAccountManageDto();
|
|
var trsAcountManage = DbContext.trs_account_manage.FirstOrDefault(x => x.id == id && !x.del_flag);
|
|
if (trsAcountManage == null)
|
|
{
|
|
throw new Exception("原数据不存在");
|
|
}
|
|
trsAccountManageDto.id = trsAcountManage.id;
|
|
trsAccountManageDto.account=trsAcountManage.account;
|
|
trsAccountManageDto.account_name = trsAcountManage.account_name;
|
|
trsAccountManageDto.remark= trsAcountManage.remark;
|
|
trsAccountManageDto.trader_id=trsAcountManage.trader_id;
|
|
trsAccountManageDto.TrsAccountManageDetails = DbContext.trs_account_manage_detail.Where(x=>x.account_id==id).ToList();
|
|
return trsAccountManageDto;
|
|
}
|
|
}
|
|
}
|