808 lines
35 KiB
C#
808 lines
35 KiB
C#
|
/***********************************************************
|
|||
|
**项目名称: BZPT.IServices
|
|||
|
**功能描述: CountryServices 的摘要说明
|
|||
|
**作 者: 此代码由CodeSmith生成。
|
|||
|
**版 本 号: 1.0
|
|||
|
**修改历史:
|
|||
|
************************************************************/
|
|||
|
namespace BZPT.Domains.Services.Sys
|
|||
|
{
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Linq.Expressions;
|
|||
|
using System.Net;
|
|||
|
using System.Security.Claims;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Xml.Linq;
|
|||
|
using BZPT.Domains.Entity.Sys;
|
|||
|
using BZPT.Domains.IRepositories;
|
|||
|
using BZPT.Domains.IRepositories.Sys;
|
|||
|
using BZPT.Domains.IService.Sys;
|
|||
|
using BZPT.Dto.Sys;
|
|||
|
using BZPT.Dto.VO;
|
|||
|
using BZPT.DTO.Const;
|
|||
|
using Consul;
|
|||
|
using DevExtreme.AspNet.Data;
|
|||
|
using Dm.util;
|
|||
|
using IdentityServer4.Models;
|
|||
|
using IdentityServer4.Test;
|
|||
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
using Microsoft.Extensions.Caching.Memory;
|
|||
|
using NPlatform;
|
|||
|
using NPlatform.Domains.Entity;
|
|||
|
using NPlatform.Dto;
|
|||
|
using NPlatform.Infrastructure.Redis;
|
|||
|
using NPlatform.Result;
|
|||
|
using NPOI.POIFS.Properties;
|
|||
|
using NPOI.SS.Formula.Functions;
|
|||
|
using ServiceStack;
|
|||
|
using SqlSugar;
|
|||
|
using ZstdSharp.Unsafe;
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// ProjectInfo 业务层
|
|||
|
/// </summary>
|
|||
|
public partial class ProjectInfoService : SugarServiceBase<ProjectInfo, ProjectInfoDto>, IProjectInfoService
|
|||
|
{
|
|||
|
public ILogger<ProjectInfoService> Loger { get; set; }
|
|||
|
[Autowired]
|
|||
|
public IProjectInfoRepository _ProjectInfoRepository { get; set; }
|
|||
|
public IUnitOfWorkSugar unitOfOfWork { get; set; }
|
|||
|
|
|||
|
public Task CacheAllProjects()
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
|
|||
|
public Task<INPResult> GetOrgProjectTree(string setOrg, int leve)
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
|
|||
|
public Task<INPResult> GetProjectTree(string setOrg, int leve = 3)
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
|
|||
|
//public Task<IListResult<UserVO>> GetProUserPage(string proId, DataSourceLoadOptions whereExp)
|
|||
|
//{
|
|||
|
// throw new NotImplementedException();
|
|||
|
//}
|
|||
|
|
|||
|
public Task<INPResult> GetUserProjectTree(string setRole, int leve = 3)
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
|
|||
|
public Task<INPResult> ProjectInfoAdd(ProjectInfoDto addCommand)
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
|
|||
|
public Task<INPResult> ProjectInfoEdit(ProjectInfoDto editCommand)
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
|
|||
|
//public Task<INPResult> ProjectUserAdd(ProjectUserDto proUser)
|
|||
|
//{
|
|||
|
// throw new NotImplementedException();
|
|||
|
//}
|
|||
|
|
|||
|
//public Task<INPResult> UserProjectGrant(GrantProSectionInput grants)
|
|||
|
//{
|
|||
|
// throw new NotImplementedException();
|
|||
|
//}
|
|||
|
|
|||
|
//[Autowired]
|
|||
|
//public IUserService userService { get; set; }
|
|||
|
//[Autowired]
|
|||
|
//public IUserProjectRepository _userProjectRsp{ get; set; }
|
|||
|
//[Autowired]
|
|||
|
//public IOrganizationProjectRepository _OrgProjectRep { get; set; }
|
|||
|
|
|||
|
|
|||
|
//public ProjectInfoService(
|
|||
|
// ILogger<ProjectInfoService> loger, IUnitOfWorkSugar unitOf)
|
|||
|
//{
|
|||
|
// Loger = loger;
|
|||
|
// this.unitOfOfWork = unitOf;
|
|||
|
//}
|
|||
|
|
|||
|
//private static readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
|
|||
|
//[Autowired]
|
|||
|
//private IRedisService _redisService { get; set; }
|
|||
|
|
|||
|
//public async Task CacheAllProjects()
|
|||
|
//{
|
|||
|
// var pros = await Repository.GetAllAsync();
|
|||
|
// pros = pros.Where(t=> !t.IsDeleted);
|
|||
|
// //删除该字典的缓存,让缓存重新加载。
|
|||
|
// await this._redisService.GlobalHashDeleteAsync(CacheKeyBZPT.CACHE_PROJECT_ALL);
|
|||
|
// foreach (var pro in pros)
|
|||
|
// {
|
|||
|
// await semaphore.WaitAsync();
|
|||
|
// try
|
|||
|
// {
|
|||
|
// var dto = MapperService.Map<ProjectInfo, ProjectInfoDto>(pro);
|
|||
|
// // 将查询结果存入缓存
|
|||
|
// await _redisService.GlobalHashSetAsync<ProjectInfoDto>(CacheKeyBZPT.CACHE_PROJECT_ALL, pro.Id, dto);
|
|||
|
// }
|
|||
|
// finally
|
|||
|
// {
|
|||
|
// semaphore.Release();
|
|||
|
// }
|
|||
|
// }
|
|||
|
//}
|
|||
|
|
|||
|
//private string[] hasRight = new string[]{ "1", "2" };
|
|||
|
|
|||
|
//public async new Task<IListResult<ProjectInfoDto>> GetPageAsync(DataSourceLoadOptions dataSourceLoadOptions)
|
|||
|
//{
|
|||
|
// if(dataSourceLoadOptions.Sort==null|| dataSourceLoadOptions.Sort.Length==0)
|
|||
|
// {
|
|||
|
// dataSourceLoadOptions.Sort = new SortingInfo[]
|
|||
|
// {
|
|||
|
// new SortingInfo
|
|||
|
// {
|
|||
|
// Desc=true,
|
|||
|
// Selector="CreateTime"
|
|||
|
// }
|
|||
|
// };
|
|||
|
// }
|
|||
|
|
|||
|
// dataSourceLoadOptions.And(new List<object>() { "IsDeleted", "=", false });
|
|||
|
// var loginUser = this.Context.Account == "admin" ? "admin" : this.Context.UserID;
|
|||
|
// var tmpPro = await _redisService.GlobalHashGetAllAsync<ProjectInfoDto>(CacheKeyBZPT.CACHE_PROJECT_ALL);
|
|||
|
// var allProject = tmpPro.Values.ToList();
|
|||
|
// if (loginUser != "admin")
|
|||
|
// {
|
|||
|
// var showPro = new string[] { "1", "2" };
|
|||
|
// var rolePros = await this._userProjectRsp.GetListByExpAsync(t =>( loginUser== t.UserId&& showPro.Contains(t.Colum2) ));
|
|||
|
// var allAuthIds = rolePros.Select(t => t.PId).ToList();
|
|||
|
// allProject = allProject.Where(t => allAuthIds.Contains(t.Id) || t.CreateUserId == loginUser).ToList();
|
|||
|
|
|||
|
// }
|
|||
|
|
|||
|
// var rst = DataSourceLoader.Load(allProject, dataSourceLoadOptions);
|
|||
|
// return new ListResult<ProjectInfoDto>(rst?.data?.Cast<ProjectInfoDto>(), rst.totalCount);
|
|||
|
//}
|
|||
|
|
|||
|
//public async Task<INPResult> ProjectInfoAdd(ProjectInfoDto addCommand)
|
|||
|
//{
|
|||
|
// var vResult = addCommand.Validates();
|
|||
|
// if (vResult.StatusCode == 200)
|
|||
|
// {
|
|||
|
|
|||
|
// var ASId = StringObjectIdGenerator.Instance.GenerateId().ToString();
|
|||
|
// // 检查是否已有相同名称
|
|||
|
// var existingOrg = await _ProjectInfoRepository.GetByNameAsync(addCommand.AC002, null);
|
|||
|
// if (existingOrg.Count() >= 1)
|
|||
|
// {
|
|||
|
// return Fail("名称已经存在,不能重复添加。", HttpStatusCode.BadRequest); // 返回中文错误信息
|
|||
|
// }
|
|||
|
// try
|
|||
|
// {
|
|||
|
// // 调用仓储的批量添加方法
|
|||
|
// addCommand.Id = ASId;
|
|||
|
// addCommand.CreateUser = Context.UserID;
|
|||
|
// addCommand.CreateTime = DateTime.Now;
|
|||
|
// addCommand.IsDeleted = false;
|
|||
|
// var pro = MapperService.Map<ProjectInfo>(addCommand);
|
|||
|
|
|||
|
// pro.CreateUser = Context.UserID;
|
|||
|
// var userRst = await Repository.AddsAsync(pro);
|
|||
|
// await CacheAllProjects();
|
|||
|
// return Success(userRst);
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// return Fail(ex);
|
|||
|
// }
|
|||
|
|
|||
|
// }
|
|||
|
// return vResult;
|
|||
|
//}
|
|||
|
|
|||
|
//public async Task<INPResult> ProjectInfoEdit(ProjectInfoDto editCommand)
|
|||
|
//{
|
|||
|
// var vResult = editCommand.Validates();
|
|||
|
// if (vResult.StatusCode == 200)
|
|||
|
// {
|
|||
|
// try
|
|||
|
// {
|
|||
|
// // 检查是否已有相同名称
|
|||
|
// var existingOrg = await _ProjectInfoRepository.GetByNameAsync(editCommand.AC002, editCommand.Id);
|
|||
|
// if (existingOrg.Count() >= 1)
|
|||
|
// {
|
|||
|
// return Fail("名称已经存在,不能修改为此项目名称。", HttpStatusCode.BadRequest); // 返回中文错误信息
|
|||
|
// }
|
|||
|
|
|||
|
// try
|
|||
|
// {
|
|||
|
// // 调用仓储的批量修改方法
|
|||
|
// var pro = MapperService.Map<ProjectInfo>(editCommand);
|
|||
|
// var userRst = await Repository.UpdateAsync(pro);
|
|||
|
// await CacheAllProjects();
|
|||
|
// return Success(editCommand);
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// return Fail(ex);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// catch (ArgumentException ex)
|
|||
|
// {
|
|||
|
// return Fail(ex.Message);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// return vResult;
|
|||
|
//}
|
|||
|
|
|||
|
//public async Task<INPResult> Delete(string id)
|
|||
|
//{
|
|||
|
// if (!string.IsNullOrEmpty(id))
|
|||
|
// {
|
|||
|
// var exitOrg=await this._OrgProjectRep.ExistsAsync(t=>t.ProjectID == id);
|
|||
|
// var exitRole=await this._userProjectRsp.ExistsAsync(t=>t.PId == id);
|
|||
|
// if(exitOrg||exitRole)
|
|||
|
// {
|
|||
|
// return Fail($"项目已被关联到相关{(exitOrg?"机构":"")}、{(exitRole ? "用户" : "")},无法禁用。");
|
|||
|
// }
|
|||
|
// var org = await this.Repository.GetFirstOrDefaultAsync(t => t.Id == id);
|
|||
|
// org.IsDeleted = true;
|
|||
|
// var rst = await this.Repository.UpdateAsync(org);
|
|||
|
// await CacheAllProjects();
|
|||
|
// return Success(rst);
|
|||
|
// }
|
|||
|
// return Fail("删除失败。");
|
|||
|
//}
|
|||
|
|
|||
|
//public override string GetDomainShortName()
|
|||
|
//{
|
|||
|
// return "ProjectInfo";
|
|||
|
//}
|
|||
|
//List<SectionDto> allSectionDto = new List<SectionDto>();
|
|||
|
//List<LaborTeamDto> alllaborTeamsDto = new List<LaborTeamDto>();
|
|||
|
//List<WorkerGroupDto> allworkerGroupDtos = new List<WorkerGroupDto>();
|
|||
|
//List<string> canSetPros = new List<string>();
|
|||
|
|
|||
|
//public async Task<INPResult> GetOrgProjectTree(string setOrg, int leve)
|
|||
|
//{
|
|||
|
// var loadAuth = (await this._OrgProjectRep.GetListByExpAsync(t => setOrg == t.OrganizationId)).Select(t => t.ProjectID).ToList();
|
|||
|
|
|||
|
// // 项目---》标段--》劳务队--》班组
|
|||
|
// var tmpPro = await _redisService.GlobalHashGetAllAsync<ProjectInfoDto>(CacheKeyBZPT.CACHE_PROJECT_ALL);
|
|||
|
// var allProject = tmpPro.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// // 标段
|
|||
|
// if (leve >= 1)
|
|||
|
// {
|
|||
|
// var tmp = await _redisService.GlobalHashGetAllAsync<SectionDto>(CacheKeyBZPT.CACHE_SECTION_ALL);
|
|||
|
// allSectionDto = tmp.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// //获取劳务队
|
|||
|
// if (leve >= 2)
|
|||
|
// {
|
|||
|
// var tmpTeam = await _redisService.GlobalHashGetAllAsync<LaborTeamDto>(CacheKeyBZPT.CACHE_LABORTEAM_ALL);
|
|||
|
// alllaborTeamsDto = tmpTeam.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// // 获取班组
|
|||
|
// if (leve >= 3)
|
|||
|
// {
|
|||
|
// var tmpgroups = await _redisService.GlobalHashGetAllAsync<WorkerGroupDto>(CacheKeyBZPT.CACHE_WORKERGROUP_ALL);
|
|||
|
// allworkerGroupDtos = tmpgroups.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
// var loginUser = this.Context.Account == "admin" ? "admin" : this.Context.UserID;
|
|||
|
|
|||
|
// if (loginUser != "admin")
|
|||
|
// {
|
|||
|
// var showPro = loadAuth;
|
|||
|
// allProject = allProject.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// allSectionDto = allSectionDto.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// alllaborTeamsDto = alllaborTeamsDto.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// allworkerGroupDtos = allworkerGroupDtos.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
|
|||
|
// canSetPros = loadAuth;
|
|||
|
// canSetPros.AddRange(allSectionDto.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(alllaborTeamsDto.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allworkerGroupDtos.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// canSetPros.AddRange(allProject.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allSectionDto.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(alllaborTeamsDto.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allworkerGroupDtos.Select(t => t.Id).ToArray());
|
|||
|
// }
|
|||
|
// var listitems = await GetProjectTree(allProject, leve);
|
|||
|
// return Success(new { TreeData = listitems, AuthIds = loadAuth });
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
//public async Task<INPResult> GetUserProjectTree(string setUser, int leve = 3)
|
|||
|
//{
|
|||
|
|
|||
|
// var loadAuth = (await this._userProjectRsp.GetListByExpAsync(t => setUser == t.UserId&& hasRight.Contains(t.Colum2))).Select(t => t.PId).ToList();
|
|||
|
|
|||
|
// // 项目---》标段--》劳务队--》班组
|
|||
|
// var tmpPro = await _redisService.GlobalHashGetAllAsync<ProjectInfoDto>(CacheKeyBZPT.CACHE_PROJECT_ALL);
|
|||
|
// var allProject = tmpPro.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// // 标段
|
|||
|
// if (leve >= 1)
|
|||
|
// {
|
|||
|
// var tmp = await _redisService.GlobalHashGetAllAsync<SectionDto>(CacheKeyBZPT.CACHE_SECTION_ALL);
|
|||
|
// allSectionDto = tmp.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// //获取劳务队
|
|||
|
// if (leve >= 2)
|
|||
|
// {
|
|||
|
// var tmpTeam = await _redisService.GlobalHashGetAllAsync<LaborTeamDto>(CacheKeyBZPT.CACHE_LABORTEAM_ALL);
|
|||
|
// alllaborTeamsDto = tmpTeam.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// // 获取班组
|
|||
|
// if (leve >= 3)
|
|||
|
// {
|
|||
|
// var tmpgroups = await _redisService.GlobalHashGetAllAsync<WorkerGroupDto>(CacheKeyBZPT.CACHE_WORKERGROUP_ALL);
|
|||
|
// allworkerGroupDtos = tmpgroups.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
// var loginUser = this.Context.Account == "admin" ? "admin" : this.Context.UserID;
|
|||
|
|
|||
|
// if (loginUser != "admin")
|
|||
|
// {
|
|||
|
// var showP =await this._userProjectRsp.GetListByExpAsync(t => loginUser == t.UserId);
|
|||
|
// var showPro = showP.Select(t => t.PId).ToList();
|
|||
|
// allProject = allProject.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// allSectionDto = allSectionDto.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// alllaborTeamsDto = alllaborTeamsDto.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// allworkerGroupDtos = allworkerGroupDtos.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
|
|||
|
// var canSetP = showP.Where(t => hasRight.Contains(t.Colum2));
|
|||
|
// canSetPros = canSetP.Select(t => t.PId).ToList();
|
|||
|
// canSetPros.AddRange(allSectionDto.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(alllaborTeamsDto.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allworkerGroupDtos.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// canSetPros.AddRange(allProject.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allSectionDto.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(alllaborTeamsDto.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allworkerGroupDtos.Select(t => t.Id).ToArray());
|
|||
|
// }
|
|||
|
// var listitems = await GetProjectTree(allProject, leve);
|
|||
|
// return Success(new { TreeData = listitems, AuthIds = loadAuth });
|
|||
|
//}
|
|||
|
|
|||
|
////获取用户已授权的树,此树显示某个授权项目树,并返回节点是否有权限。
|
|||
|
//public async Task<INPResult> GetProjectTree(string setUser, int leve)
|
|||
|
//{
|
|||
|
// // 项目---》标段--》劳务队--》班组
|
|||
|
// var tmpPro = await _redisService.GlobalHashGetAllAsync<ProjectInfoDto>(CacheKeyBZPT.CACHE_PROJECT_ALL);
|
|||
|
// var allProject = tmpPro.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// // 标段
|
|||
|
// if (leve >= 1)
|
|||
|
// {
|
|||
|
// var tmp = await _redisService.GlobalHashGetAllAsync<SectionDto>(CacheKeyBZPT.CACHE_SECTION_ALL);
|
|||
|
// allSectionDto = tmp.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// //获取劳务队
|
|||
|
// if (leve >= 2)
|
|||
|
// {
|
|||
|
// var tmpTeam = await _redisService.GlobalHashGetAllAsync<LaborTeamDto>(CacheKeyBZPT.CACHE_LABORTEAM_ALL);
|
|||
|
// alllaborTeamsDto = tmpTeam.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// // 获取班组
|
|||
|
// if (leve >= 3)
|
|||
|
// {
|
|||
|
// var tmpgroups = await _redisService.GlobalHashGetAllAsync<WorkerGroupDto>(CacheKeyBZPT.CACHE_WORKERGROUP_ALL);
|
|||
|
// allworkerGroupDtos = tmpgroups.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
// var loginUser = this.Context.Account == "admin" ? "admin" : this.Context.UserID;
|
|||
|
|
|||
|
// if (loginUser != "admin")
|
|||
|
// {
|
|||
|
// var showP = await this._userProjectRsp.GetListByExpAsync(t => loginUser == t.UserId);
|
|||
|
// var showPro = showP.Select(t => t.PId).ToList();
|
|||
|
// allProject = allProject.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// allSectionDto = allSectionDto.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// alllaborTeamsDto = alllaborTeamsDto.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
// allworkerGroupDtos = allworkerGroupDtos.Where(t => showPro.Contains(t.Id) || t.CreateUser == loginUser).ToList();
|
|||
|
|
|||
|
// var canSetP = showP.Where(t => hasRight.Contains(t.Colum2));
|
|||
|
// canSetPros = canSetP.Select(t => t.PId).ToList();
|
|||
|
// canSetPros.AddRange(allSectionDto.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(alllaborTeamsDto.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allworkerGroupDtos.Where(t => t.CreateUser == loginUser).Select(t => t.Id).ToArray());
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// canSetPros.AddRange(allProject.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allSectionDto.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(alllaborTeamsDto.Select(t => t.Id).ToArray());
|
|||
|
// canSetPros.AddRange(allworkerGroupDtos.Select(t => t.Id).ToArray());
|
|||
|
// }
|
|||
|
|
|||
|
// var listitems= await GetProjectTree(allProject,leve);
|
|||
|
// return Success(new { TreeData = listitems, AuthIds = canSetPros });
|
|||
|
//}
|
|||
|
|
|||
|
///// <summary>
|
|||
|
///// 加载项目树
|
|||
|
///// </summary>
|
|||
|
///// <param name="setRole">授权角色对象</param>
|
|||
|
///// <param name="leve">显示层级,0项目,1标段,2劳务队,3班组</param>
|
|||
|
///// <returns></returns>
|
|||
|
//private async Task<List<TreeItem>> GetProjectTree(List<ProjectInfoDto> allProject,int leve=3)
|
|||
|
//{
|
|||
|
// var userPro = new List<TreeItem>();
|
|||
|
// foreach (var pro in allProject)
|
|||
|
// {
|
|||
|
// var sections = GetSection(pro.Id, true); //显示总包
|
|||
|
// var parentNode = new TreeItem()
|
|||
|
// {
|
|||
|
// Id = pro.Id,
|
|||
|
// Name = pro.AC002,
|
|||
|
// IsLeaf = sections.Count == 0,
|
|||
|
// Children = sections.ToArray(),
|
|||
|
// LevelCode= "0",
|
|||
|
// CreateUser= pro.CreateUser,
|
|||
|
// };
|
|||
|
// userPro.Add(parentNode);
|
|||
|
// SetCheckIds(sections, parentNode);
|
|||
|
|
|||
|
// }
|
|||
|
// return userPro;
|
|||
|
//}
|
|||
|
|
|||
|
//private void SetCheckIds(List<TreeItem> subItem,TreeItem parentNode)
|
|||
|
//{
|
|||
|
// parentNode.Status = canSetPros.Contains(parentNode.Id)? "checked" : "";
|
|||
|
//}
|
|||
|
//private List<TreeItem> GetSection(string proId,bool showZB)
|
|||
|
//{
|
|||
|
// var proSections= allSectionDto.Where(t=>t.AID==proId).ToList();
|
|||
|
|
|||
|
// List<TreeItem> result = new List<TreeItem>();
|
|||
|
// List<string> zbIds = new List<string>();
|
|||
|
// if (showZB)
|
|||
|
// {
|
|||
|
|
|||
|
// var parentSections = proSections.Where(t => !string.IsNullOrEmpty(t.BZID)).GroupBy(t => t.BZID).Select(t => t.Key).ToList();
|
|||
|
// if (parentSections.Count() > 0)// 总包
|
|||
|
// {
|
|||
|
// var parents = proSections.Where(t => parentSections.Contains(t.Id)).ToList();
|
|||
|
// foreach (var section in parents)
|
|||
|
// {
|
|||
|
// var childs = proSections.Where(t => t.BZID == section.Id).ToList();
|
|||
|
// var subSectionItem = new List<TreeItem>();
|
|||
|
// foreach (var subSection in childs)
|
|||
|
// {
|
|||
|
// zbIds.Add(subSection.Id);
|
|||
|
// var teams= GetLaborTeam(subSection.Id);
|
|||
|
// var sctParent = new TreeItem()
|
|||
|
// {
|
|||
|
// Id = subSection.Id,
|
|||
|
// Name = subSection.BC02,
|
|||
|
// IsLeaf = teams.Count == 0,
|
|||
|
// LevelCode = "1",
|
|||
|
// //劳务队
|
|||
|
// Children = teams.ToArray(),
|
|||
|
// CreateUser = subSection.CreateUser,
|
|||
|
// };
|
|||
|
// subSectionItem.Add(sctParent);
|
|||
|
// SetCheckIds(teams, sctParent);
|
|||
|
// }
|
|||
|
// var parentNode = new TreeItem()
|
|||
|
// {
|
|||
|
// Id = section.Id,
|
|||
|
// Name = section.BC02,
|
|||
|
// IsLeaf = subSectionItem.Count() == 0,
|
|||
|
// LevelCode = "1",
|
|||
|
// //分包
|
|||
|
// Children = subSectionItem.ToArray(),
|
|||
|
// CreateUser = section.CreateUser,
|
|||
|
// };
|
|||
|
// result.Add(parentNode);
|
|||
|
// SetCheckIds(subSectionItem, parentNode);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
|
|||
|
// var lastSections=proSections.Where(t=>!zbIds.Contains(t.Id)).ToList();
|
|||
|
|
|||
|
// foreach (var section in lastSections) {
|
|||
|
// var teams = GetLaborTeam(section.Id);
|
|||
|
// var parent = new TreeItem()
|
|||
|
// {
|
|||
|
// Id = section.Id,
|
|||
|
// Name = section.BC02,
|
|||
|
// IsLeaf = teams.Count == 0,
|
|||
|
// Children = teams.ToArray(),
|
|||
|
// LevelCode = "1",
|
|||
|
// CreateUser = section.CreateUser,
|
|||
|
// };
|
|||
|
// result.Add(parent);
|
|||
|
|
|||
|
// SetCheckIds(teams, parent);
|
|||
|
// }
|
|||
|
// return result;
|
|||
|
//}
|
|||
|
//private List<TreeItem> GetLaborTeam(string sectionId)
|
|||
|
//{
|
|||
|
// var laborTeam = alllaborTeamsDto.Where(t => t.BID == sectionId).ToList();
|
|||
|
|
|||
|
// List<TreeItem> result = new List<TreeItem>();
|
|||
|
|
|||
|
// foreach (var section in laborTeam)
|
|||
|
// {
|
|||
|
// var groups = GetGroup(section.Id);
|
|||
|
// var parent = new TreeItem()
|
|||
|
// {
|
|||
|
// Id = section.Id,
|
|||
|
// Name = section.DC01,
|
|||
|
// IsLeaf = groups.Count == 0,
|
|||
|
// LevelCode = "2",
|
|||
|
// //劳务队
|
|||
|
// Children = groups.ToArray(),
|
|||
|
// CreateUser = section.CreateUser,
|
|||
|
// };
|
|||
|
// result.Add(parent);
|
|||
|
|
|||
|
// SetCheckIds(groups, parent);
|
|||
|
// }
|
|||
|
// return result;
|
|||
|
//}
|
|||
|
//private List<TreeItem> GetGroup(string teamId)
|
|||
|
//{
|
|||
|
// var groups = allworkerGroupDtos.Where(t => t.DID == teamId).ToList();
|
|||
|
|
|||
|
// List<TreeItem> result = new List<TreeItem>();
|
|||
|
|
|||
|
// foreach (var group in groups)
|
|||
|
// {
|
|||
|
// var parent = new TreeItem()
|
|||
|
// {
|
|||
|
// Id = group.Id,
|
|||
|
// Name = group.EC01,
|
|||
|
// IsLeaf = true,
|
|||
|
// LevelCode = "3",
|
|||
|
// CreateUser = group.CreateUser,
|
|||
|
// };
|
|||
|
// result.Add(parent);
|
|||
|
// SetCheckIds(new List<TreeItem>(), parent);
|
|||
|
// }
|
|||
|
|
|||
|
// return result;
|
|||
|
//}
|
|||
|
|
|||
|
//public async Task<INPResult> UserProjectGrant(GrantProSectionInput grants)
|
|||
|
//{
|
|||
|
// var listGrants = new List<UserProject>();
|
|||
|
// foreach (var grant in grants.Cheacks)
|
|||
|
// {
|
|||
|
// listGrants.Add(new UserProject()
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// UserId = grants.GrantId,
|
|||
|
// PId = grant.Id,
|
|||
|
// PName=grant.Name,
|
|||
|
// Colum1=grant.ProType,
|
|||
|
// Colum2=grant.ProAuthorized,
|
|||
|
// CreateUser = grant.CreateUser,
|
|||
|
// CreateTime = DateTime.Now,
|
|||
|
// });
|
|||
|
// }
|
|||
|
// //开始授权
|
|||
|
// try
|
|||
|
// {
|
|||
|
// this.unitOfOfWork.BeginTran();
|
|||
|
// var _OrganizationRepository = this.unitOfOfWork.GetRepository<IUserProjectRepository>();
|
|||
|
|
|||
|
// await _OrganizationRepository.RemoveAsync(t => t.UserId == grants.GrantId);
|
|||
|
// if (listGrants.Any())
|
|||
|
// await _OrganizationRepository.AddsAsync(listGrants.ToArray());
|
|||
|
// this.unitOfOfWork.Commit();
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// this.unitOfOfWork.Rollback();
|
|||
|
// return Fail(ex);
|
|||
|
// }
|
|||
|
|
|||
|
// return Success("授权成功!");
|
|||
|
//}
|
|||
|
|
|||
|
//private async Task<List<UserProject>> GetParent(string parentId, int leve)
|
|||
|
//{
|
|||
|
// // 项目---》标段--》劳务队--》班组
|
|||
|
// var tmpPro = await _redisService.GlobalHashGetAllAsync<ProjectInfoDto>(CacheKeyBZPT.CACHE_PROJECT_ALL);
|
|||
|
// var allProject = tmpPro.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// List<SectionDto> allSections = new List<SectionDto>();
|
|||
|
// List<LaborTeamDto> allLaborTeams = new List<LaborTeamDto>();
|
|||
|
|
|||
|
// List<UserProject> allParents = new List<UserProject>();
|
|||
|
// // 标段
|
|||
|
// if (leve >= 1)
|
|||
|
// {
|
|||
|
// var tmp = await _redisService.GlobalHashGetAllAsync<SectionDto>(CacheKeyBZPT.CACHE_SECTION_ALL);
|
|||
|
// allSections = tmp.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
|
|||
|
// //获取劳务队
|
|||
|
// if (leve >= 2)
|
|||
|
// {
|
|||
|
// var tmpTeam = await _redisService.GlobalHashGetAllAsync<LaborTeamDto>(CacheKeyBZPT.CACHE_LABORTEAM_ALL);
|
|||
|
// allLaborTeams = tmpTeam.Values.Where(t => t.IsDeleted == false).ToList();
|
|||
|
// }
|
|||
|
// var laborTeams = allLaborTeams.Where(t => t.Id == parentId).ToList();
|
|||
|
// var sectons = allSections.Where(t => t.Id == parentId).ToList();
|
|||
|
// var projects = allProject.Where(t => t.Id == parentId).ToList();
|
|||
|
|
|||
|
|
|||
|
// if (laborTeams.Count > 0)
|
|||
|
// {
|
|||
|
// var sectionIds = laborTeams.Select(t => t.BID).ToList();
|
|||
|
// var sections = allSections.Where(t => sectionIds.Contains(t.Id));
|
|||
|
|
|||
|
// var zbids = sections.Select(t => t.BZID).ToList();
|
|||
|
// var proids = sections.Select(t => t.AID).ToList();
|
|||
|
// allParents.AddRange(laborTeams.Select(t => new UserProject()//劳务队
|
|||
|
// {
|
|||
|
// Id=StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.Id,
|
|||
|
// PName = t.DC01,
|
|||
|
// Colum1 = "2",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// allParents.AddRange(sections.Select(t => new UserProject()//标段
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.Id,
|
|||
|
// PName = t.BC02,
|
|||
|
// Colum1 = "1",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// allParents.AddRange(sections.Select(t => new UserProject()//总包
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.BZID,
|
|||
|
// PName = t.BC02,
|
|||
|
// Colum1 = "1",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// allParents.AddRange(sections.Select(t => new UserProject()//项目
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.AID,
|
|||
|
// Colum1 = "0",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// }
|
|||
|
// if (sectons.Count > 0)
|
|||
|
// {
|
|||
|
// var zbids = sectons.Select(t => t.BZID).ToList();
|
|||
|
// var proids = sectons.Select(t => t.AID).ToList();
|
|||
|
// allParents.AddRange(sectons.Select(t => new UserProject()//标段
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.Id,
|
|||
|
// PName = t.BC02,
|
|||
|
// Colum1 = "1",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// allParents.AddRange(sectons.Select(t => new UserProject()//总包
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.BZID,
|
|||
|
// PName = t.BC02,
|
|||
|
// Colum1 = "1",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// allParents.AddRange(sectons.Select(t => new UserProject()//项目
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.AID,
|
|||
|
// Colum1 = "0",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// }
|
|||
|
// if (projects.Count > 0)
|
|||
|
// {
|
|||
|
// allParents.AddRange(projects.Select(t => new UserProject()//项目
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = t.Id,
|
|||
|
// Colum1 = "0",
|
|||
|
// Colum2 = "0",
|
|||
|
// }).ToList());
|
|||
|
// }
|
|||
|
|
|||
|
// return allParents;
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
//public async Task<INPResult> ProjectUserAdd(ProjectUserDto puDto)
|
|||
|
//{
|
|||
|
// if (puDto == null) { return Fail("请提交数据"); }
|
|||
|
// if (puDto.ProId.IsNullOrEmpty())
|
|||
|
// {
|
|||
|
// return Fail("缺少项目ID。");
|
|||
|
// }
|
|||
|
// if (puDto.ProLeve == null)
|
|||
|
// {
|
|||
|
// return Fail("缺少项目级别。");
|
|||
|
// }
|
|||
|
// if (puDto.Users == null || puDto.Users.Count() == 0)
|
|||
|
// {
|
|||
|
// return Fail("用户信息缺失。");
|
|||
|
// }
|
|||
|
|
|||
|
// var allParents =await GetParent(puDto.ParentId, puDto.ProLeve.Value);
|
|||
|
|
|||
|
|
|||
|
// foreach (var user in puDto.Users)
|
|||
|
// {
|
|||
|
// var uPro = new UserProject()
|
|||
|
// {
|
|||
|
// Id = StringObjectIdGenerator.Instance.GenerateId().ToString(),
|
|||
|
// PId = puDto.ProId,
|
|||
|
// UserId = user.Id,
|
|||
|
// PName = puDto.ProName,
|
|||
|
// Colum1 = puDto.ProLeve?.ToString(),
|
|||
|
// Colum2 = "2",
|
|||
|
// CreateUser = this.Context.UserID,
|
|||
|
// CreateTime = DateTime.Now,
|
|||
|
// };
|
|||
|
// foreach(var up in allParents)
|
|||
|
// {
|
|||
|
// up.UserId = user.Id;
|
|||
|
// up.CreateUser = this.Context.UserID;
|
|||
|
// up.CreateTime = DateTime.Now;
|
|||
|
// }
|
|||
|
// allParents.Add(uPro);
|
|||
|
// var rst = await userService.Add(user, allParents.ToArray());
|
|||
|
// if (rst == null || !rst.Success)
|
|||
|
// {
|
|||
|
// return Fail($"{user.Name} 新增失败{rst?.Message}");
|
|||
|
// }
|
|||
|
// }
|
|||
|
// return Success("保持成功。");
|
|||
|
|
|||
|
//}
|
|||
|
|
|||
|
///// <summary>
|
|||
|
///// 获取用户列表
|
|||
|
///// </summary>
|
|||
|
///// <param name="whereExp">查询条件</param>
|
|||
|
///// <returns></returns>
|
|||
|
//public async Task<IListResult<UserVO>> GetProUserPage(string proId, DataSourceLoadOptions whereExp)
|
|||
|
//{
|
|||
|
|
|||
|
// var projectUsers = await this._userProjectRsp.GetListByExpAsync(t => t.PId == proId && t.Colum2 == "2");
|
|||
|
// if (!projectUsers.Any())
|
|||
|
// {
|
|||
|
// return ListData<UserVO>(new List<UserVO>(), 0); // 或者您特定的空结果构造方式
|
|||
|
// }
|
|||
|
// var userIds = projectUsers.Select(x => x.UserId).Distinct().ToList();
|
|||
|
|
|||
|
// if (!userIds.Any())
|
|||
|
// {
|
|||
|
// return ListData<UserVO>(new List<UserVO>(), 0);
|
|||
|
// }
|
|||
|
// var idInFilter = new List<object> { "Id", "in", userIds };
|
|||
|
// whereExp.And(idInFilter);
|
|||
|
// var userRst = await this.userService.GetPageAsync<UserVO>(whereExp);
|
|||
|
// return userRst;
|
|||
|
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
|