using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using System.Web.Mvc; using System.Web.WebPages; using Abp.Application.Services.Dto; using Abp.Auditing; using Abp.Authorization; using Abp.Domain.Repositories; using Abp.Runtime.Caching; using IwbZero.AppServiceBase; using ContractService.Authorization.Users; using ContractService.BaseInfo; using ContractService.BaseSystem.Query.Dto; using ContractService.BaseSystem.Users.Dto; using ContractService.Client; using ContractService.Client.Staff.Dto; using ContractService.CommonManager.Query; using ContractService.Configuration; using ContractService.LawFirm; using ContractService.LawFirm.Dto; using ContractService.Lawyer; using ContractService.Lawyer.Dto; using ContractService.LegalCase; using ContractService.LegalContract; using IwbZero; namespace ContractService.BaseSystem.Query { [AbpAuthorize, DisableAuditing] public class QueryAppService : IwbAppServiceBase, IQueryAppService { #region 仓储 public QueryAppService( IRepository userRepository, LegalManager legalManager, IRepository serviceTypeRepository, ICacheManager cacheManager, IRepository lawyerRepository, IRepository coRepository, IRepository staffRepository, IRepository lawFirmRepository) { UserRepository = userRepository; LegalManager = legalManager; ServiceTypeRepository = serviceTypeRepository; LawyerRepository = lawyerRepository; CoRepository = coRepository; StaffRepository = staffRepository; LawFirmRepository = lawFirmRepository; CacheManager = cacheManager; AcQuery = NullAcQueryManager.Instance; } protected LegalManager LegalManager { get; } protected IRepository UserRepository { get; } protected IRepository ServiceTypeRepository { get; } protected IRepository LawyerRepository { get; } protected IRepository LawFirmRepository { get; } protected IRepository StaffRepository { get; } protected IRepository CoRepository { get; } public IAcQueryManager AcQuery { get; set; } #endregion #region SELECT #region 用户 [DisableAuditing] public async Task> GetUserSelectList() { var list = await UserRepository.GetAllListAsync(); var sList = new List { new SelectListItem { Text = @"请选择用户...", Value = "", Selected = true } }; foreach (var l in list) { sList.Add(new SelectListItem { Value = l.Id + "", Text = l.Name }); } return sList; } [DisableAuditing] public async Task GetUserSelectStr() { var list = await UserRepository.GetAllListAsync(); var str = ""; foreach (var l in list) { str += $""; } return str; } //[DisableAuditing] //public async Task GetCategorySelectStr() //{ // var list = await CategoryRepository.GetAllListAsync(); // string str = "";//""; // var tempParentNo = list.FirstOrDefault(a => a.ParentNo == null)?.Id ?? ""; // foreach (var l in list) // { // var name = l.CategoryName; // var parentNo = l.ParentNo; // var id = l.Id; // if (l.ParentNo == null) // { // parentNo = "0"; // id = ""; // name = "请选择类别"; // } // else if (l.ParentNo == tempParentNo) // { // parentNo = ""; // } // str += $""; // } // return str; //} #endregion 用户 #region Case Contract #region ServiceType public async Task GetServiceTypeSelectStr(string id) { var list = await ServiceTypeRepository.GetAllListAsync(a => string.IsNullOrEmpty(id) || a.ServiceTypePath.Contains(id)); var str = ""; foreach (var l in list) { str += $""; } return str; } public async Task GetServiceTypeSelectTreeStr() { var list = await ServiceTypeRepository.GetAllListAsync(); string str = "";//""; var tempParentNo = list.FirstOrDefault(a => a.ParentNo == null)?.Id ?? ""; foreach (var l in list) { var name = l.Name; var parentNo = l.ParentNo; var id = l.Id; if (l.ParentNo == null) { parentNo = "0"; id = ""; name = "请选择类别"; } else if (l.ParentNo == tempParentNo) { parentNo = ""; } str += $""; } return str; } #endregion public async Task GetCaseLevelSelectStr() { var str = ""; str += await StatesManager.GetSelectListStrAsync("LegalService", "Level"); return str; } public async Task GetCaseStateSelectStr() { var str = ""; str += await StatesManager.GetSelectListStrAsync("LegalService", "State"); return str; } public async Task GetContractStateSelectStr() { var str = ""; str += await StatesManager.GetSelectListStrAsync("LegalContract", "State"); return str; } public async Task GetKeyPointLevelSelectStr() { var str = ""; str += await StatesManager.GetSelectListStrAsync("KeyPoint", "Level"); return str; } public async Task GetKeyPointStateSelectStr() { var str = ""; str += await StatesManager.GetSelectListStrAsync("KeyPoint", "State"); return str; } #endregion #region Org /// /// 组织结构 /// /// /// /// public async Task GetOrgSelectTreeStr(string no,int type) { var list = type == 1 ? await CoRepository.GetAllListAsync(a => a.CompanyNo == no) : await CoRepository.GetAllListAsync(a => a.LawFirmNo == no); //var tempParentNo = list.FirstOrDefault(a => a.ParentNo == null)?.Id ?? ""; string str = "";//""; foreach (var l in list) { string name = l.Name, parentNo = l.ParentNo, id = l.Id; if (l.ParentNo == null) { parentNo = ""; //id = ""; //name = "请选择组织结构"; } //else if (l.ParentNo == tempParentNo) //{ // parentNo = ""; //} str += $""; } return str; } #endregion #endregion SELECT #region AutoCompleteQuery /// /// 查询自动完成的搜索记录 /// /// /// [DisableAuditing] public async Task> AcInfos(PageAcQueryDto input) { var query = await AcQuery.PageItems(input.TableKey, input.ColumnKey, input.NameKey, input.Skip, input.Take); var list = query.Items.Select(a => new AcQueryDto(a)).ToList(); return new PagedResultDto(query.TotalCount, list); } public async Task AcInfo(CreateAcQueryDto input) { var info = await AcQuery.QueryItem(input.TableKey, input.ColumnKey, input.ValueKey); return new AcQueryDto(info ?? new SysQuery()); } /// /// 增加自动完成搜索记录 /// /// /// [DisableAuditing] public async Task AddAcInfo(CreateAcQueryDto input) { await AcQuery.InsertOrUpdate(input.TableKey, input.ColumnKey, input.ValueKey, input.NameKey); } /// /// 查询未绑定的账号 /// /// /// public async Task> UnBindUserAcInfos(UserAcQueryDto input) { var query = UserRepository.GetAll().Where(a => a.IsActive && a.AccountType == input.AccountType && string.IsNullOrEmpty(a.AccountNo)); var totalCount = await query.CountAsync(); var list = await query.Select(a => new AcQueryDto() { NameKey = a.Name, ValueKey = a.UserName }).ToListAsync(); return new PagedResultDto(totalCount, list); } #endregion /// /// 查询企业律所名称 /// /// public async Task QuerySystemName() { var no = AbpSession.AccountNo; if (no.IsEmpty()) { return await SettingManager.GetSettingValueAsync(IwbSettingNames.AdminSystemName); } return await CacheManager.GetCache(IwbCacheNames.QuerySysName).GetAsync(no, async () => { string systemName ; if (AbpSession.AccountType == AccountTypeDefinition.Client) { systemName = (await StaffRepository.GetAllIncluding(a => a.CompanyInfo).FirstOrDefaultAsync(a => a.Id == no)) ?.CompanyInfo.Name ?? ""; } else if (AbpSession.AccountType == AccountTypeDefinition.Lawyer) { systemName = (await LawyerRepository.GetAllIncluding(a => a.LawFirmInfo).FirstOrDefaultAsync(a => a.Id == no)) ?.LawFirmInfo.Name ?? ""; } else { systemName = await SettingManager.GetSettingValueAsync(IwbSettingNames.AdminSystemName); } return systemName; }); } /// /// 查询用户信息 /// /// /// [DisableAuditing] public async Task> QueryUsers(IwbPagedRequestDto input) { var query = UserRepository.GetAll().Where(a => a.IsActive); query = ApplyFilter(query, input); var totalCount = await query.CountAsync(); query = query.OrderBy(a => a.Id); query = query.Skip(input.SkipCount).Take(input.MaxResultCount); var entities = await query.ToListAsync(); var dtoList = new PagedResultDto(totalCount, ObjectMapper.Map>(entities)); return dtoList; } /// /// 查询用户 /// /// /// public async Task QueryUserDto(long id) { var user = await CacheManager.GetCache(IwbZeroConsts.SystemUserCache) .GetAsync($"{id}", () => UserRepository.FirstOrDefaultAsync(a => a.Id == id)); return ObjectMapper.Map(user); } /// /// 查询用户 /// /// /// public async Task QueryUserDto(string userName) { var user = await CacheManager.GetCache(IwbZeroConsts.SystemUserCache) .GetAsync($"{userName}", () => UserRepository.FirstOrDefaultAsync(a => a.UserName == userName)); return ObjectMapper.Map(user); } /// /// 查询律所信息 /// /// /// [DisableAuditing] public async Task> QueryLawFirm(IwbPagedRequestDto input) { var query = LawFirmRepository.GetAll(); query = ApplyFilter(query, input); var totalCount = await query.CountAsync(); query = query.OrderBy(a => a.Id); query = query.Skip(input.SkipCount).Take(input.MaxResultCount); var entities = await query.ToListAsync(); var dtoList = new PagedResultDto(totalCount, entities.Select(LawFirmMapToEntityDto).ToList()); return dtoList; } private LawFirmDto LawFirmMapToEntityDto(LawFirmInfo entity) { var dto = ObjectMapper.Map(entity); var lawyer = LegalManager.QueryMasterLawyerByLawFirm(dto.Id).FirstOrDefault(); dto.MasterLawyerNo = lawyer?.Id; dto.MasterLawyerCode = lawyer?.Code; dto.MasterLawyerName = lawyer?.Name; return dto; } /// /// 查询律师信息 /// /// /// [DisableAuditing] public async Task> QueryLawyersWithLaw(IwbPagedRequestDto input) { var query = LawyerRepository.GetAllIncluding(a=>a.LawFirmInfo,a=>a.OrganizationInfo); if (input.SearchList?.Count>0) { if (input.SearchList.Any(a => a.KeyField.ToLower() == "lawfirmname")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "lawfirmname"); var name = search?.KeyWords ?? ""; if (search != null) input.SearchList.Remove(search); query = query.Where(a => a.LawFirmInfo.Name.Contains(name) || a.LawFirmInfo.DisplayName.Contains(name)); } if (input.SearchList.Any(a => a.KeyField.ToLower() == "organizationname")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "organizationname"); var name = search?.KeyWords ?? ""; if (search != null) input.SearchList.Remove(search); query = query.Where(a => a.OrganizationInfo.Name.Contains(name)); } } query = ApplyFilter(query, input); var totalCount = await query.CountAsync(); query = query.OrderBy(a => a.Id); query = query.Skip(input.SkipCount).Take(input.MaxResultCount); var entities = await query.ToListAsync(); var dtoList = new PagedResultDto(totalCount, ObjectMapper.Map>(entities)); return dtoList; } /// /// 查询律师信息 /// /// /// [DisableAuditing] public async Task> QueryLawyers(IwbPagedRequestDto input) { IQueryable query = null; if (input.SearchList.Any(a => a.KeyField.ToLower() == "lawfirm")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "lawfirm"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryLawyerByLawFirm(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "lawfirmall")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "lawfirmall"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryLawFirmAllLawyers(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "case")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "case"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryLawyerByCase(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "caseall")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "caseall"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryCaseAllLawyers(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "contract")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "contract"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryLawyerByContract(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "contractall")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "contractall"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryContractAllLawyers(no); } if (input.SearchList.Any(a => a.KeyField.ToLower() == "nonusername")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "nonusername"); if (search != null) input.SearchList.Remove(search); query = query?.Where(a => string.IsNullOrEmpty(a.UserName)); } if (query == null) { return new PagedResultDto(0, new List()); } query = ApplyFilter(query, input); var totalCount = await query.CountAsync(); query = query.OrderBy(a => a.Id); query = query.Skip(input.SkipCount).Take(input.MaxResultCount); var entities = await query.ToListAsync(); var dtoList = new PagedResultDto(totalCount, entities.Select(a=>new LawyerDto(a)).ToList()); return dtoList; } /// /// 查询职员信息 /// /// /// [DisableAuditing] public async Task> QueryStaffs(IwbPagedRequestDto input) { IQueryable query = null; if (input.SearchList.Any(a => a.KeyField.ToLower() == "company")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "company"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryCommonStaffByCompany(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "companyall")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "companyall"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryCompanyAllStaffs(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "case")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "case"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryCommonStaffByCase(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "caseall")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "caseall"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryCaseAllStaffs(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "contract")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "contract"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryCommonStaffByContract(no); } else if (input.SearchList.Any(a => a.KeyField.ToLower() == "contractall")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "contractall"); var no = search?.KeyWords; if (search != null) input.SearchList.Remove(search); query = LegalManager.QueryContractAllStaffs(no); } if (input.SearchList.Any(a => a.KeyField.ToLower() == "nonusername")) { var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "nonusername"); if (search != null) input.SearchList.Remove(search); query = query?.Where(a => string.IsNullOrEmpty(a.UserName)); } if (query == null) { return new PagedResultDto(0, new List()); } query = ApplyFilter(query, input); var totalCount = await query.CountAsync(); query = query.OrderBy(a => a.Id); query = query.Skip(input.SkipCount).Take(input.MaxResultCount); var entities = await query.ToListAsync(); var dtoList = new PagedResultDto(totalCount, entities.Select(a => new ClientStaffDto(a)).ToList()); return dtoList; } /// /// 查询职员信息 /// /// /// [DisableAuditing] public Task QueryStaff(string no) { return CacheManager.GetCache(IwbCacheNames.QueryStaffInfo).GetAsync(no,async () => { return (await LegalManager.QueryAllStaff().Where(a => a.Id == no).ToListAsync()).Select(a => new ClientStaffDto(a)) .FirstOrDefault(); }); } /// /// 查询律师信息 /// /// /// [DisableAuditing] public Task QueryLawyer(string no) { return CacheManager.GetCache(IwbCacheNames.QueryLawyerInfo).GetAsync(no, async () => { return (await LegalManager.QueryAllLawyer().Where(a => a.Id == no).ToListAsync()).Select(a => new LawyerDto(a)) .FirstOrDefault(); }); } } }