从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
using BaseOUDAL;
|
||||
|
||||
namespace YLErp.Modules.BasicDataModule
|
||||
{
|
||||
/// <summary>
|
||||
/// 审批分级数据服务
|
||||
/// </summary>
|
||||
public class ApprovalGradeDataService : YLBaseService
|
||||
{
|
||||
public ApprovalGradeDataService(OptUserInfo userInfo) : base(userInfo)
|
||||
{
|
||||
}
|
||||
|
||||
public ApprovalGrade SaveApprovalGrade(ApprovalGrade req)
|
||||
{
|
||||
if (req is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(req));
|
||||
}
|
||||
|
||||
if (req.AssetId == 0)
|
||||
{
|
||||
throw new ServiceException("簿记账户名称 必须填写");
|
||||
}
|
||||
|
||||
ApprovalGrade dbModel;
|
||||
if (req.id == 0)
|
||||
{
|
||||
if (DbContext.approvalGrade.Any(o => o.AssetId == req.AssetId && o.Rule == req.Rule && o.RoleId == req.RoleId) && req.id == 0)
|
||||
{
|
||||
throw new ServiceException("数据内容不能重复,已存在相同记录");
|
||||
}
|
||||
DbContext.approvalGrade.Add(dbModel = req);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbModel = DbContext.approvalGrade.Find(req.id);
|
||||
|
||||
if (dbModel == null)
|
||||
{
|
||||
throw new ServiceException("要更新的数据已不存在");
|
||||
}
|
||||
|
||||
UpdateChanges(dbModel, req);
|
||||
}
|
||||
|
||||
|
||||
SetDBModelOpt(dbModel);
|
||||
|
||||
DbContext.SaveChanges();
|
||||
|
||||
return dbModel;
|
||||
}
|
||||
|
||||
public void deleteApprovalGrade(int id)
|
||||
{
|
||||
if (DbContext.approvalGrade.Find(id) == null)
|
||||
{
|
||||
throw new ServiceException("未找到记录");
|
||||
}
|
||||
else
|
||||
{
|
||||
var grade = DbContext.approvalGrade.Find(id);
|
||||
DbContext.approvalGrade.Remove(grade);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
public SearchListResult<ApprovalGrade> SearchList(AssetUnitRequest req)
|
||||
{
|
||||
var predicate = PredicateBuilder.True<AssetUnit>();
|
||||
|
||||
if (!string.IsNullOrEmpty(req.Name))
|
||||
{
|
||||
predicate = predicate.And(d => d.Name.Contains(req.Name));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(req.UserGroup))
|
||||
{
|
||||
predicate = predicate.And(d => d.UserGroup.Contains(req.UserGroup));
|
||||
}
|
||||
|
||||
if (req.TraderIds != null && req.TraderIds.Any(n => n > 0))
|
||||
{
|
||||
//predicate = predicate.And(d => req.TraderIds.Any(tId => ("," + d.TraderIds + ",").Contains("," + tId + ",")));
|
||||
var traderIdPre = PredicateBuilder.False<AssetUnit>();
|
||||
req.TraderIds.Where(p => p > 0).ToList().ForEach(p =>
|
||||
{
|
||||
traderIdPre = traderIdPre.Or(d => (!string.IsNullOrEmpty(d.TraderIds) && (d.TraderIds.StartsWith(p + ",") || d.TraderIds.EndsWith("," + p) || d.TraderIds.Contains("," + p + ","))));
|
||||
|
||||
});
|
||||
predicate = predicate.And(traderIdPre);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(req.sidx))
|
||||
{
|
||||
req.sidx = "id";
|
||||
req.sord = "desc";
|
||||
}
|
||||
var query = (from a in DbContext.assetunit.Where(predicate)
|
||||
join g in DbContext.assetunitgroup on a.GroupId equals g.id into g_t
|
||||
from g in g_t.DefaultIfEmpty()
|
||||
select a.id).ToList();
|
||||
|
||||
var dataQyery = from grade in DbContext.approvalGrade
|
||||
join unit in DbContext.assetunit
|
||||
on grade.AssetId equals unit.id
|
||||
into gp
|
||||
from g in gp.DefaultIfEmpty()
|
||||
select new
|
||||
{
|
||||
grade = grade,
|
||||
unit = g
|
||||
};
|
||||
|
||||
if (query != null && query.Count() > 0)
|
||||
{
|
||||
dataQyery = dataQyery.Where(o => query.Contains(o.grade.AssetId));
|
||||
}
|
||||
|
||||
List<ApprovalGrade> retData = new List<ApprovalGrade>();
|
||||
|
||||
foreach (var item in dataQyery)
|
||||
{
|
||||
var approvalGrade = item.grade;
|
||||
approvalGrade.AssetName = item.unit.Name;
|
||||
approvalGrade.TraderIds = item.unit.TraderIds;
|
||||
|
||||
var names = DataConvert.ConvertCommaValuesToInt32Array(approvalGrade.TraderIds).Where(n => n > 0).Select(n => UserBLL.GetNameById(n));
|
||||
|
||||
approvalGrade.TraderNames = string.Join(",", names);
|
||||
|
||||
using (var dbContext = new ErpBaseContext())
|
||||
{
|
||||
approvalGrade.RoleName = dbContext.Roles.FirstOrDefault(o => o.Id == approvalGrade.RoleId).Name;
|
||||
}
|
||||
|
||||
|
||||
retData.Add(approvalGrade);
|
||||
}
|
||||
|
||||
var result = retData.AsQueryable().ToSearchList(req);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<Role> getAllRoles()
|
||||
{
|
||||
using (var dbContext = new ErpBaseContext())
|
||||
{
|
||||
var roles = dbContext.Roles.ToList();
|
||||
return roles;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user