| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610 |
- 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<User, long> userRepository, LegalManager legalManager, IRepository<LegalServiceType, string> serviceTypeRepository, ICacheManager cacheManager, IRepository<LawyerInfo, string> lawyerRepository, IRepository<OrganizationInfo, string> coRepository, IRepository<ClientStaffInfo, string> staffRepository, IRepository<LawFirmInfo, string> 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<User, long> UserRepository { get; }
- protected IRepository<LegalServiceType, string> ServiceTypeRepository { get; }
- protected IRepository<LawyerInfo, string> LawyerRepository { get; }
- protected IRepository<LawFirmInfo, string> LawFirmRepository { get; }
- protected IRepository<ClientStaffInfo, string> StaffRepository { get; }
- protected IRepository<OrganizationInfo, string> CoRepository { get; }
-
- public IAcQueryManager AcQuery { get; set; }
- #endregion
- #region SELECT
- #region 用户
- [DisableAuditing]
- public async Task<List<SelectListItem>> GetUserSelectList()
- {
- var list = await UserRepository.GetAllListAsync();
- var sList = new List<SelectListItem> { 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<string> GetUserSelectStr()
- {
- var list = await UserRepository.GetAllListAsync();
- var str = "<option value=\"\" selected >请选择用户...</option>";
- foreach (var l in list)
- {
- str += $"<option value=\"{l.Id}\" >{l.Name}</option>";
- }
- return str;
- }
-
- //[DisableAuditing]
- //public async Task<string> GetCategorySelectStr()
- //{
- // var list = await CategoryRepository.GetAllListAsync();
- // string str = "";//"<option value=\"\" selected >请选择类别...</option>";
- // 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 += $"<option parent=\"{parentNo}\" value=\"{id}\">{name}</option>";
- // }
- // return str;
- //}
- #endregion 用户
- #region Case Contract
- #region ServiceType
- public async Task<string> GetServiceTypeSelectStr(string id)
- {
- var list = await ServiceTypeRepository.GetAllListAsync(a =>
- string.IsNullOrEmpty(id) || a.ServiceTypePath.Contains(id));
- var str = "<option value=\"\" selected >请选择服务类型...</option>";
- foreach (var l in list)
- {
- str += $"<option value=\"{l.Id}\" >{l.Name}</option>";
- }
- return str;
- }
- public async Task<string> GetServiceTypeSelectTreeStr()
- {
- var list = await ServiceTypeRepository.GetAllListAsync();
- string str = "";//"<option value=\"\" selected >请选择类别...</option>";
- 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 += $"<option parent=\"{parentNo}\" value=\"{id}\">{name}</option>";
- }
- return str;
- }
- #endregion
- public async Task<string> GetCaseLevelSelectStr()
- {
- var str = "<option value=\"\" selected >请选择项目等级...</option>";
- str += await StatesManager.GetSelectListStrAsync("LegalService", "Level");
- return str;
- }
- public async Task<string> GetCaseStateSelectStr()
- {
- var str = "<option value=\"\" selected >请选择项目状态...</option>";
- str += await StatesManager.GetSelectListStrAsync("LegalService", "State");
- return str;
- }
- public async Task<string> GetContractStateSelectStr()
- {
- var str = "<option value=\"\" selected >请选择合同状态...</option>";
- str += await StatesManager.GetSelectListStrAsync("LegalContract", "State");
- return str;
- }
- public async Task<string> GetKeyPointLevelSelectStr()
- {
- var str = "<option value=\"\" selected >请选择关键点级别...</option>";
- str += await StatesManager.GetSelectListStrAsync("KeyPoint", "Level");
- return str;
- }
- public async Task<string> GetKeyPointStateSelectStr()
- {
- var str = "<option value=\"\" selected >请选择关键点状态...</option>";
- str += await StatesManager.GetSelectListStrAsync("KeyPoint", "State");
- return str;
- }
- #endregion
- #region Org
- /// <summary>
- /// 组织结构
- /// </summary>
- /// <param name="no"></param>
- /// <param name="type"></param>
- /// <returns></returns>
- public async Task<string> 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 = "";//"<option value=\"\" selected >请选择职务...</option>";
- 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 += $"<option parent=\"{parentNo}\" value=\"{id}\">{name}</option>";
- }
- return str;
- }
- #endregion
- #endregion SELECT
- #region AutoCompleteQuery
- /// <summary>
- /// 查询自动完成的搜索记录
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task<PagedResultDto<AcQueryDto>> 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<AcQueryDto>(query.TotalCount, list);
- }
- public async Task<AcQueryDto> AcInfo(CreateAcQueryDto input)
- {
- var info = await AcQuery.QueryItem(input.TableKey, input.ColumnKey, input.ValueKey);
- return new AcQueryDto(info ?? new SysQuery());
- }
- /// <summary>
- /// 增加自动完成搜索记录
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task AddAcInfo(CreateAcQueryDto input)
- {
- await AcQuery.InsertOrUpdate(input.TableKey, input.ColumnKey, input.ValueKey, input.NameKey);
- }
- /// <summary>
- /// 查询未绑定的账号
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public async Task<PagedResultDto<AcQueryDto>> 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<AcQueryDto>(totalCount, list);
- }
- #endregion
- /// <summary>
- /// 查询企业律所名称
- /// </summary>
- /// <returns></returns>
- public async Task<string> 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;
- });
- }
- /// <summary>
- /// 查询用户信息
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task<PagedResultDto<UserDto>> 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<UserDto>(totalCount, ObjectMapper.Map<List<UserDto>>(entities));
- return dtoList;
- }
- /// <summary>
- /// 查询用户
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- public async Task<UserDto> QueryUserDto(long id)
- {
- var user = await CacheManager.GetCache(IwbZeroConsts.SystemUserCache)
- .GetAsync($"{id}", () => UserRepository.FirstOrDefaultAsync(a => a.Id == id));
- return ObjectMapper.Map<UserDto>(user);
- }
- /// <summary>
- /// 查询用户
- /// </summary>
- /// <param name="userName"></param>
- /// <returns></returns>
- public async Task<UserDto> QueryUserDto(string userName)
- {
- var user = await CacheManager.GetCache(IwbZeroConsts.SystemUserCache)
- .GetAsync($"{userName}", () => UserRepository.FirstOrDefaultAsync(a => a.UserName == userName));
- return ObjectMapper.Map<UserDto>(user);
- }
- /// <summary>
- /// 查询律所信息
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task<PagedResultDto<LawFirmDto>> 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<LawFirmDto>(totalCount, entities.Select(LawFirmMapToEntityDto).ToList());
- return dtoList;
- }
- private LawFirmDto LawFirmMapToEntityDto(LawFirmInfo entity)
- {
- var dto = ObjectMapper.Map<LawFirmDto>(entity);
- var lawyer = LegalManager.QueryMasterLawyerByLawFirm(dto.Id).FirstOrDefault();
- dto.MasterLawyerNo = lawyer?.Id;
- dto.MasterLawyerCode = lawyer?.Code;
- dto.MasterLawyerName = lawyer?.Name;
- return dto;
- }
- /// <summary>
- /// 查询律师信息
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task<PagedResultDto<LawyerDto>> 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<LawyerDto>(totalCount, ObjectMapper.Map<List<LawyerDto>>(entities));
- return dtoList;
- }
- /// <summary>
- /// 查询律师信息
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task<PagedResultDto<LawyerDto>> QueryLawyers(IwbPagedRequestDto input)
- {
- IQueryable<LawyerInfoClone> 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<LawyerDto>(0, new List<LawyerDto>());
- }
-
- 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<LawyerDto>(totalCount, entities.Select(a=>new LawyerDto(a)).ToList());
- return dtoList;
- }
- /// <summary>
- /// 查询职员信息
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- [DisableAuditing]
- public async Task<PagedResultDto<ClientStaffDto>> QueryStaffs(IwbPagedRequestDto input)
- {
- IQueryable<ClientStaffInfoClone> 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<ClientStaffDto>(0, new List<ClientStaffDto>());
- }
-
- 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<ClientStaffDto>(totalCount, entities.Select(a => new ClientStaffDto(a)).ToList());
- return dtoList;
- }
- /// <summary>
- /// 查询职员信息
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- [DisableAuditing]
- public Task<ClientStaffDto> 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();
- });
- }
- /// <summary>
- /// 查询律师信息
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- [DisableAuditing]
- public Task<LawyerDto> 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();
- });
- }
- }
- }
|