| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305 |
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data.Entity;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Web.WebPages;
- using Abp.Authorization;
- using Abp.Domain.Repositories;
- using Abp.Domain.Services;
- using Abp.Runtime.Caching;
- using Abp.UI;
- using ContractService.Authorization;
- using ContractService.Authorization.Users;
- using ContractService.Client;
- using ContractService.CommonManager.AppGuids;
- using ContractService.CommonManager.AttachFiles;
- using ContractService.CommonManager.States;
- using ContractService.Configuration;
- using ContractService.LawFirm;
- using ContractService.Lawyer;
- using ContractService.LegalCase;
- using IwbZero.Authorization.Base.Users;
- using IwbZero.IdentityFramework;
- using IwbZero.Runtime.Session;
- using IwbZero.ToolCommon.StringModel;
- using Microsoft.AspNet.Identity;
- namespace ContractService.LegalContract
- {
- public class LegalManager : DomainService
- {
- public LegalManager(IRepository<LegalCaseInfo, string> lsRepository, IRepository<LegalContractInfo, string> lcRepository, IRepository<LegalContractNoteInfo, long> lCnRepository, IRepository<LegalContractSupplementInfo, string> lCsRepository, IRepository<LegalContractKeyPointInfo, string> lCkpRepository, IRepository<LawyerInfo, string> lawyerRepository, IRepository<LawyerRelatedInfo> lawyerRelatedRepository, IRepository<LegalCaseNoteInfo, long> lSnRepository, ICacheManager cacheManager, IRepository<LawFirmInfo, string> lfRepository, IRepository<LegalContractContentInfo, long> lCcRepository, IRepository<User, long> userRepository, IRepository<StaffRelatedInfo> staffRelatedRepository, IRepository<ClientStaffInfo, string> staffRepository, IRepository<ClientCompanyInfo, string> ccRepository, IRepository<OrganizationInfo, string> coRepository, IRepository<ClientStaffInfo, string> csRepository, UserManager userManager)
- {
- AbpSession = NullIwbSession.Instance;
- PermissionChecker = NullPermissionChecker.Instance;
- StatesManager = NullStatesManager.Instance;
- AppGuidManager = NullAppGuidManager.Instance;
- AttachManager = NullAttachFileManager.Instance;
- LsRepository = lsRepository;
- LcRepository = lcRepository;
- LCnRepository = lCnRepository;
- LCsRepository = lCsRepository;
- LCkpRepository = lCkpRepository;
- LawyerRepository = lawyerRepository;
- LawyerRelatedRepository = lawyerRelatedRepository;
- LSnRepository = lSnRepository;
- CacheManager = cacheManager;
- LfRepository = lfRepository;
- LCcRepository = lCcRepository;
- UserRepository = userRepository;
- StaffRelatedRepository = staffRelatedRepository;
- StaffRepository = staffRepository;
- CcRepository = ccRepository;
- CoRepository = coRepository;
- CsRepository = csRepository;
- UserManager = userManager;
- }
- private const int STEP = 1000;
- public IIwbSession AbpSession { get; set; }
- public IPermissionChecker PermissionChecker { get; set; }
- public IStatesManager StatesManager { get; set; }
- public IAttachFileManager AttachManager { get; set; }
- public IAppGuidManager AppGuidManager { get; set; }
- public ICacheManager CacheManager { get; }
- public IRepository<LawFirmInfo, string> LfRepository { get; }
- public IRepository<LegalCaseInfo, string> LsRepository { get; }
- public IRepository<LegalContractInfo,string> LcRepository { get; }
- public IRepository<LegalCaseNoteInfo,long> LSnRepository { get; }
- public IRepository<LegalContractNoteInfo,long> LCnRepository { get; }
- public IRepository<LegalContractSupplementInfo,string> LCsRepository { get; }
- public IRepository<LegalContractContentInfo,long> LCcRepository { get; }
- public IRepository<LegalContractKeyPointInfo,string> LCkpRepository { get; }
- public IRepository<LawyerInfo,string> LawyerRepository { get; }
- public IRepository<LawyerRelatedInfo> LawyerRelatedRepository { get; }
- public IRepository<ClientStaffInfo,string> StaffRepository { get; }
- public IRepository<StaffRelatedInfo> StaffRelatedRepository { get; }
- public IRepository<ClientCompanyInfo,string> CcRepository { get; }
- public IRepository<OrganizationInfo,string> CoRepository { get; }
- public IRepository<ClientStaffInfo,string> CsRepository { get; }
- public IRepository<User, long> UserRepository { get; }
- public UserManager UserManager { get; }
- #region CURD
- #region Company
- public async Task CreateCompany(ClientCompanyInfo entity, ClientStaffInfo staff)
- {
- CheckSysAccount();
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.Company);
- var id = await CcRepository.InsertAndGetIdAsync(entity);
- var orgId= await CreateOrg(new OrganizationInfo()
- {
- ParentNo = null,
- CompanyNo = id,
- LawFirmNo = null,
- Name = entity.Name,
- Description = $"{entity.Name}的组织结构根节点。"
- }, false);
- if (staff!=null)
- {
- staff.OrganizationNo = orgId;
- staff.CompanyNo = id;
- staff = await CreateStaff(staff, id, false);
- var staffDefaultMasterRole = ConfigurationManager.AppSettings["MasterRole.Default.Company"];
- await UserManager.CreateUser(new User()
- {
- Name = staff.Name,
- EmailAddress = staff.Email,
- UserType = UsersAndRolesTypeDefinition.Advanced,
- AccountType = AccountTypeDefinition.Client,
- AccountNo = staff.Id,
- IsActive = true,
- }, staffDefaultMasterRole);
- await SetCompanyMasterStaff(id, staff.Id);
- }
- }
- public async Task UpdateCompany(ClientCompanyInfo entity)
- {
- await CcRepository.UpdateAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteCompany(string no)
- {
- CheckSysAccount();
- if ((await StaffRelatedRepository.CountAsync(a => a.CompanyNo == no && a.RelatedType == StaffRelatedDefinition.LegalCase)) > 0)
- {
- CheckError("公司还有关联项目,请先删除关联项目!");
- }
- var entity = await CcRepository.FirstOrDefaultAsync(a => a.Id == no);
- await CcRepository.DeleteAsync(entity);
- var list = await CsRepository.GetAllListAsync(a => a.CompanyNo == no);
- foreach (var staff in list)
- {
- await UnBindStaffAccount(staff,false);
- await CsRepository.DeleteAsync(staff);
- }
- var list2= await StaffRelatedRepository.GetAllListAsync(a => a.CompanyNo == no);
- foreach (var info in list2)
- {
- info.RelatedType = info.RelatedType + STEP;
- await StaffRelatedRepository.UpdateAsync(info);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- #endregion
- #region Org
- public async Task<string> CreateOrg(OrganizationInfo entity,bool isCheck =true)
- {
- if (isCheck)
- {
- CheckAccount(AccountTypeDefinition.Lawyer, AccountTypeDefinition.Client);
- }
- OrganizationInfo parent = entity.ParentNo.IsEmpty()
- ? null
- : await CoRepository.FirstOrDefaultAsync(a => a.Id == entity.ParentNo);
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.Organization);
- entity.Path = parent == null ? entity.Id : $"{parent.Path},{entity.Id}";
- var id= await CoRepository.InsertAndGetIdAsync(entity);
- return id;
- }
- public async Task UpdateOrg(OrganizationInfo entity)
- {
- CheckAccount(AccountTypeDefinition.Lawyer, AccountTypeDefinition.Client);
- await CoRepository.UpdateAsync(entity);
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteOrg(string no)
- {
- CheckAccount(AccountTypeDefinition.Lawyer, AccountTypeDefinition.Client);
- var entity = await CoRepository.FirstOrDefaultAsync(a => a.Id == no);
- if (entity == null)
- {
- CheckError("未查询到组织结构!");
- }
-
- if ((await CoRepository.CountAsync(a => a.ParentNo == entity.Id)) > 0)
- {
- CheckError("请先删除子节点!");
- }
- await CoRepository.DeleteAsync(entity);
- }
- #endregion
- #region Staff
- public async Task<ClientStaffInfo> CreateStaff(ClientStaffInfo entity, string companyNo = null, bool isCheck = true)
- {
- if (isCheck)
- {
- CheckClientAccount();
- }
- entity.CompanyNo = companyNo.Empty() ? entity.CompanyNo : companyNo ?? "";
- if ((await StaffRepository.FirstOrDefaultAsync(a => a.Code == entity.Code && a.CompanyNo == entity.CompanyNo)) != null)
- {
- CheckError($"员工编号[{entity.Code}]已存在,请检查后再试!");
- }
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.Staff);
- var id = await StaffRepository.InsertAndGetIdAsync(entity);
- if (entity.CompanyNo == null)
- {
- CheckError("未查询到企业,请检查后再试!");
- }
- if (entity.CompanyNo.NotEmpty())
- {
- await SetStaffCompany(id, entity.CompanyNo);
- }
-
- await CurrentUnitOfWork.SaveChangesAsync();
- return entity;
- }
- public async Task UpdateStaff(ClientStaffInfo entity)
- {
- CheckClientAccount();
- if (!IsCompanyMaster(AbpSession.AccountNo) && AbpSession.AccountNo != entity.Id)
- {
- CheckError("账号权限不够,不能修改企业负责人信息!");
- }
- var old = await StaffRepository.FirstOrDefaultAsync(a => a.Code == entity.Code && a.CompanyNo==entity.CompanyNo);
- if (old != null && old.Id != entity.Id)
- {
- CheckError($"员工编号[{entity.Code}]已存在,请检查后再试!");
- }
- if (old != null && old.UserName.NotEmpty())
- {
- var user = await UserRepository.FirstOrDefaultAsync(a =>
- a.UserName == old.UserName && a.IsActive && a.AccountType == AccountTypeDefinition.Client && a.AccountNo == old.Id);
- if (user != null)
- {
- user.Name = entity.Name;
- user.PhoneNumber = entity.PhoneNumber;
- if (user.EmailAddress != entity.Email)
- {
- CheckError(await UserManager.CheckDuplicateUsernameOrEmailAddressAsync(user.Id, "", entity.Email));
- user.EmailAddress = entity.Email;
- user.SetNormalizedNames();
- user.IsEmailConfirmed = false;
- }
- }
- }
- if (entity.UserName.NotEmpty())
- {
- await CacheManager.GetCache(IwbCacheNames.QueryStaffInfo).SetAsync(entity.UserName, entity);
- }
- await StaffRepository.UpdateAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteStaff(string no)
- {
- CheckClientAccount();
- var entity = await StaffRepository.FirstOrDefaultAsync(a => a.Id == no);
- if (entity == null)
- {
- CheckError("未查询到员工!");
- return;
- }
- if ((await StaffRelatedRepository.CountAsync(a => a.StaffNo == no && a.RelatedType!=StaffRelatedDefinition.Company)) > 0)
- {
- CheckError("员工还有关联项目或合同,不能删除");
- }
- if (entity.UserName.NotEmpty())
- {
- CheckError("请先解绑员工账号后再删除!");
- }
- await StaffRepository.DeleteAsync(entity);
- await StaffRelatedRepository.DeleteAsync(a => a.StaffNo == no);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- #endregion
- #region LawFirm
- public async Task CreateLawFirm(LawFirmInfo entity, LawyerInfo lawyer)
- {
- CheckSysAccount();
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.LawFirm);
- var id = await LfRepository.InsertAndGetIdAsync(entity);
- var orgId = await CreateOrg(new OrganizationInfo()
- {
- ParentNo = null,
- CompanyNo = null,
- LawFirmNo = id,
- Name = entity.Name,
- Description = $"{entity.Name}的组织结构根节点。"
- }, false);
- if (lawyer!=null)
- {
- lawyer.OrganizationNo = orgId;
- lawyer.LawFirmNo = id;
- lawyer = await CreateLawyer(lawyer, id,false);
- var lawyerMasterRole = ConfigurationManager.AppSettings["MasterRole.Default.LawFirm"];
- await UserManager.CreateUser(new User()
- {
- Name = lawyer.Name,
- EmailAddress = lawyer.Email,
- UserType = UsersAndRolesTypeDefinition.Advanced,
- AccountType = AccountTypeDefinition.Lawyer,
- AccountNo = lawyer.Id,
- IsActive = true,
- }, lawyerMasterRole);
- await SetLawFirmMasterLawyer(id, lawyer.Id);
- }
- }
- public async Task UpdateLawFirm(LawFirmInfo entity)
- {
- await LfRepository.UpdateAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteLawFirm(string no)
- {
- CheckSysAccount();
- if ((await LawyerRelatedRepository.CountAsync(a => a.LawFirmNo == no && a.RelatedType == LawyerRelatedDefinition.LegalContract && a.MasterType != LawyerMasterDefinition.LawFirmContract)) > 0)
- {
- CheckError("律所还有关联合同,请先解除关联合同!");
- }
- var entity = await LfRepository.FirstOrDefaultAsync(a => a.Id == no);
- await LfRepository.DeleteAsync(entity);
- var list = await LawyerRepository.GetAllListAsync(a => a.LawFirmNo == no);
- foreach (var lawyer in list)
- {
- await UnBindLawyerAccount(lawyer,false);
- await LawyerRepository.DeleteAsync(lawyer);
- }
- var list2 = await LawyerRelatedRepository.GetAllListAsync(a => a.LawFirmNo == no);
- foreach (var info in list2)
- {
- info.RelatedType = info.RelatedType + STEP;
- await LawyerRelatedRepository.UpdateAsync(info);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- #endregion
- #region Lawyer
- public async Task<LawyerInfo> CreateLawyer(LawyerInfo entity, string lawFirmNo=null,bool isCheck=true)
- {
- if (isCheck)
- {
- CheckLawyerAccount();
- }
- entity.LawFirmNo = lawFirmNo.Empty() ? entity.LawFirmNo : lawFirmNo;
- if ((await LawyerRepository.FirstOrDefaultAsync(a => a.Code == entity.Code&& a.LawFirmNo==entity.LawFirmNo)) != null)
- {
- CheckError($"律师编号[{entity.Code}]已存在,请检查后再试!");
- }
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.Lawyer);
- var id = await LawyerRepository.InsertAndGetIdAsync(entity);
- if (entity.LawFirmNo == null)
- {
- CheckError("未查询到律所,请检查后再试!");
- }
- if (entity.LawFirmNo.NotEmpty())
- {
- await SetLawyerLawFirm(id, entity.LawFirmNo);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- return entity;
- }
- public async Task UpdateLawyer(LawyerInfo entity)
- {
- CheckLawyerAccount();
- if (!IsLawFirmMaster(AbpSession.AccountNo) && AbpSession.AccountNo != entity.Id)
- {
- CheckError($"账号权限不够,不能修改律师负责人信息!");
- }
- var old = await LawyerRepository.FirstOrDefaultAsync(a => a.Code == entity.Code);
- if (old != null && old.Id != entity.Id)
- {
- CheckError($"律师编号[{entity.Code}]已存在,请检查后再试!");
- }
- if (old != null && old.UserName.NotEmpty())
- {
- var user = await UserRepository.FirstOrDefaultAsync(a =>
- a.UserName == old.UserName && a.IsActive && a.AccountType == AccountTypeDefinition.Lawyer && a.AccountNo==old.Id);
- if (user != null)
- {
- user.Name = entity.Name;
- user.PhoneNumber = entity.PhoneNumber;
- if (user.EmailAddress != entity.Email)
- {
- CheckError(await UserManager.CheckDuplicateUsernameOrEmailAddressAsync(user.Id, "", entity.Email));
- user.EmailAddress = entity.Email;
- user.SetNormalizedNames();
- user.IsEmailConfirmed = false;
- }
- }
- }
- if (entity.UserName.NotEmpty())
- {
- await CacheManager.GetCache(IwbCacheNames.QueryLawyerInfo).SetAsync(entity.UserName, entity);
- }
- await LawyerRepository.UpdateAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteLawyer(string no)
- {
- CheckLawyerAccount();
- var entity = await LawyerRepository.FirstOrDefaultAsync(a => a.Id == no);
- if (entity == null)
- {
- CheckError("未查询到律师!");
- return;
- }
- if ((await LawyerRelatedRepository.CountAsync(a => a.LawyerNo == no && a.RelatedType != LawyerRelatedDefinition.LawFirm)) > 0)
- {
- CheckError("律师还有关联项目或合同,不能删除");
- }
- if (entity.UserName.NotEmpty())
- {
- CheckError("请先解绑律师账号后再删除!");
- }
- await LawyerRepository.DeleteAsync(entity);
- await LawyerRelatedRepository.DeleteAsync(a => a.LawyerNo == no);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- #endregion
- #region Case
- public async Task CreateCase(LegalCaseInfo entity, string masterStaffNo = null)
- {
- CheckClientAccount();
- if (entity.CompanyNo.IsEmpty() || (await CcRepository.FirstOrDefaultAsync(a => a.Id == entity.CompanyNo)) == null)
- {
- CheckError("未查询到企业,请检查后再试!");
- }
- masterStaffNo = masterStaffNo ?? AbpSession.AccountNo;
- if (masterStaffNo.IsEmpty())
- {
- CheckError("当前账号未绑定职员,请检查后再试!");
- }
- if ((await LsRepository.FirstOrDefaultAsync(a => a.Code == entity.Code)) != null)
- {
- CheckError($"项目编码[{entity.Code}]已存在,请检查后再试!");
- }
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.LegalCase);
- entity.CaseState = LegalCaseStateDefinition.New;
- var id = await LsRepository.InsertAndGetIdAsync(entity);
- await SetCaseMasterStaff(id, masterStaffNo, entity.CompanyNo);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- public async Task UpdateCase(LegalCaseInfo entity)
- {
- CheckLawyerAccount();
- if (entity.CaseState != LegalCaseStateDefinition.New)
- {
- CheckError("项目不能被修改!");
- }
- var old = await LsRepository.FirstOrDefaultAsync(a => a.Code == entity.Code);
- if (old != null && old.Id != entity.Id)
- {
- CheckError($"项目编码[{entity.Code}]已存在,请检查后再试!");
- }
- await LsRepository.UpdateAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteCase(string no)
- {
- CheckLawyerAccount();
- var entity = await LsRepository.FirstOrDefaultAsync(a => a.Id == no);
- if (entity == null)
- {
- CheckError("未查询到项目!");
- }
- if (entity?.CaseState != LegalCaseStateDefinition.New)
- {
- CheckError("项目不能被删除!");
- }
- if ((await LcRepository.CountAsync(a => a.CaseNo == no)) > 0)
- {
- CheckError("项目中还有关联合同,请先删除合同!");
- }
- await LsRepository.DeleteAsync(entity);
- await LawyerRelatedRepository.DeleteAsync(a => a.CaseNo == no);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- public async Task CreateCaseNote(LegalCaseNoteInfo entity)
- {
- await LSnRepository.InsertAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- #endregion
- #region Contract
- public async Task CreateContract(LegalContractInfo entity, List<AttachFileCreateDto> attachFiles = null, string masterStaffNo = null)
- {
- CheckClientAccount();
- if (entity.CaseNo.IsEmpty() || (await LsRepository.FirstOrDefaultAsync(a => a.Id == entity.CaseNo)) == null)
- {
- CheckError("未查询到项目,请检查后再试!");
- }
- masterStaffNo = masterStaffNo ?? AbpSession.AccountNo;
- if (masterStaffNo.IsEmpty())
- {
- CheckError("当前账号未绑定职员,请检查后再试!");
- }
- if ((await LcRepository.FirstOrDefaultAsync(a => a.Code == entity.Code)) != null)
- {
- CheckError($"合同编码[{entity.Code}]已存在,请检查后再试!");
- }
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.LegalContract);
- entity.ContractState = LegalContractStateDefinition.New;
- var id = await LcRepository.InsertAndGetIdAsync(entity);
- await SetContractMasterStaff(id, masterStaffNo, entity.CaseNo);
- if (entity.ContentInfo.NotEmpty())
- {
- await LCcRepository.InsertAsync(new LegalContractContentInfo()
- {
- No = entity.Id,
- ContentInfo = entity.ContentInfo
- });
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- if (attachFiles?.Count > 0)
- {
- foreach (var attachFile in attachFiles)
- {
- attachFile.TableName = "Contract";
- attachFile.ColumnName = "Contract";
- attachFile.SourceKey = entity.Id;
- attachFile.AllowExt = "pdf,doc,xls,xlsx,docx,jpg,png";
- await AttachManager.FileUpload(attachFile);
- }
- }
- }
- public async Task UpdateContract(LegalContractInfo entity, List<AttachFileCreateDto> attachFiles = null)
- {
- CheckClientAccount();
- if (entity.ContractState != LegalContractStateDefinition.New)
- {
- CheckError("合同不能被修改!");
- }
- var old = await LcRepository.FirstOrDefaultAsync(a => a.Code == entity.Code);
- if (old != null && old.Id != entity.Id)
- {
- CheckError($"合同编码[{entity.Code}]已存在,请检查后再试!");
- }
- await LcRepository.UpdateAsync(entity);
- if (entity.ContentInfo.NotEmpty())
- {
- await LCcRepository.InsertAsync(new LegalContractContentInfo()
- {
- No = entity.Id,
- ContentInfo = entity.ContentInfo
- });
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- if (attachFiles?.Count > 0)
- {
- foreach (var attachFile in attachFiles)
- {
- attachFile.TableName = "Contract";
- attachFile.ColumnName = "Contract";
- attachFile.SourceKey = entity.Id;
- attachFile.AllowExt = "pdf,doc,xls,xlsx,docx,jpg,png";
- await AttachManager.FileUpload(attachFile);
- }
- }
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteContract(string no)
- {
- CheckClientAccount();
- var entity = await LcRepository.FirstOrDefaultAsync(a => a.Id == no);
- if (entity == null)
- {
- CheckError("未查询到合同!");
- }
- if (entity?.ContractState != LegalContractStateDefinition.New)
- {
- CheckError("合同不能被删除!");
- }
- //if((await LCkpRepository.CountAsync(a => a.ContractNo == no)) > 0)
- //{
- // CheckError("合同中还有关联关键点,请先删除关键点!");
- //}
- await LcRepository.DeleteAsync(entity);
- await LawyerRelatedRepository.DeleteAsync(a => a.ContractNo == no);
- //await LCsRepository.DeleteAsync(a => a.ContractNo == no);
- //await LCcRepository.DeleteAsync(a => a.No == no);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- public async Task ContractNote(LegalContractNoteInfo entity)
- {
- await LCnRepository.InsertAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 合同补充内容
- /// </summary>
- /// <param name="entity"></param>
- /// <param name="attachFiles"></param>
- /// <returns></returns>
- public async Task ContractSupplement(LegalContractSupplementInfo entity, List<AttachFileCreateDto> attachFiles = null)
- {
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.LegalContractSupplement);
- await LCsRepository.InsertAsync(entity);
- if (entity.ContentInfo.NotEmpty())
- {
- await LCcRepository.InsertAsync(new LegalContractContentInfo()
- {
- No = entity.Id,
- ContentInfo = entity.ContentInfo
- });
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- if (attachFiles?.Count > 0)
- {
- foreach (var attachFile in attachFiles)
- {
- attachFile.TableName = entity.KeyPointNo.IsEmpty()?"Contract": "KeyPoint";
- attachFile.ColumnName = "Supplement";
- attachFile.SourceKey = entity.Id;
- attachFile.AllowExt = "pdf,doc,xls,xlsx,docx,jpg,png";
- await AttachManager.FileUpload(attachFile);
- }
- }
- }
- #endregion
- #region KeyPoint
- public async Task<LegalContractKeyPointInfo> CreateKeyPoint(LegalContractKeyPointInfo entity)
- {
- CheckAccount(AccountTypeDefinition.Lawyer,AccountTypeDefinition.Client);
- LegalContractKeyPointInfo parent = entity.ParentNo.IsEmpty()
- ? null
- : await LCkpRepository.FirstOrDefaultAsync(a => a.Id == entity.ParentNo);
- entity.ParentNo = entity.ParentNo.Empty() ? null : entity.ParentNo;
- entity.Id = await AppGuidManager.GetNextRecordIdAsync(DataLibType.LegalContractKeyPoint);
- entity.KeyPointPath = parent == null ? entity.Id : $"{parent.KeyPointPath},{entity.Id}";
- entity.KeyPointState = LegalKeyPointStateDefinition.New;
- entity.AlarmDay = entity.AlarmDate == null ? entity.AlarmDay : 0;
- entity.ExpireDay = entity.ExpireDate == null ? entity.ExpireDay : 0;
- await LCkpRepository.InsertAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- return entity;
- }
- public async Task UpdateKeyPoint(LegalContractKeyPointInfo entity)
- {
- CheckAccount(AccountTypeDefinition.Lawyer,AccountTypeDefinition.Client);
- entity.ParentNo = entity.ParentNo.Empty() ? null : entity.ParentNo;
- if (entity.KeyPointState != LegalKeyPointStateDefinition.New)
- {
- await ContractNote(new LegalContractNoteInfo()
- {
- KeyPointNo = entity.Id,
- ContractNo = entity.ContractNo,
- NoteType = NoteTypeDefinition.ContentChange,
- NoteContent = $"<strong class=\"pr-2\">变更关键点</strong><br/><strong class=\"pr-2\">详情</strong> [<i class=\"pl-1 pr-1\">{entity.Description}</i>]<br/><strong class=\"pr-2\">提醒日期</strong> [<i class=\"pl-1 pr-1\">{(entity.AlarmDate != null ? entity.AlarmDate?.ToString("yyyy-MM-dd") : $"{entity.AlarmDay}天")}</i>] <span> </span> <strong class=\"pl-4 pr-2\">过期日期</strong> [<i class=\"pl-1 pr-1\">{(entity.ExpireDate != null ? entity.ExpireDate?.ToString("yyyy-MM-dd") : $"{entity.ExpireDay}天")}</i>]"
- });
- //CheckError("关键点不能被修改!");
- }
- await LCkpRepository.UpdateAsync(entity);
- await SetCacheName(entity.Id, entity.Name);
- }
- public async Task DeleteKeyPoint(string no)
- {
- CheckAccount(AccountTypeDefinition.Lawyer,AccountTypeDefinition.Client);
- var entity = await LCkpRepository.FirstOrDefaultAsync(a => a.Id == no);
- if (entity == null)
- {
- CheckError("未查询到关键点!");
- }
- if (entity?.KeyPointState != LegalKeyPointStateDefinition.New)
- {
- CheckError("关键点不能被删除!");
- }
- if ((await LCkpRepository.CountAsync(a => a.ParentNo == entity.Id)) > 0)
- {
- CheckError("请先删除子关键点!");
- }
- await LCkpRepository.DeleteAsync(entity);
- }
- public async Task KeyPointNote(LegalContractNoteInfo entity)
- {
- await LCnRepository.InsertAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- public async Task SetKeyPointOrg(string staffNo,string kpNo)
- {
- var reKp = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.KeyPointNo == kpNo && a.RelatedType == StaffRelatedDefinition.KeyPoint);
- if (reKp == null)
- {
- var kp = await LCkpRepository.GetAllIncluding(a=>a.ContractInfo,a=>a.ContractInfo.CaseInfo).FirstOrDefaultAsync(a => a.Id == kpNo);
- if (kp == null)
- {
- CheckError("未查询到关键点!");
- return;
- }
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- CompanyNo = kp.ContractInfo?.CaseInfo?.CompanyNo??"",
- CaseNo = kp.ContractInfo?.CaseNo,
- ContractNo = kp.ContractNo,
- KeyPointNo = kpNo,
- StaffNo = staffNo,
- RelatedType = StaffRelatedDefinition.KeyPoint,
- MasterType = StaffMasterDefinition.CommonStaff
- });
- }
- else
- {
- reKp.StaffNo = staffNo;
- await StaffRelatedRepository.UpdateAsync(reKp);
- }
- await CacheManager.GetCache(IwbCacheNames.QueryKeyPointStaffInfo).RemoveAsync(kpNo);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- public ClientStaffInfoClone GetKeyPointOrgStaff(string no)
- {
- return CacheManager.GetCache(IwbCacheNames.QueryKeyPointStaffInfo).Get(no, () =>
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo, a => a.StaffInfo.CompanyInfo).Where(
- a =>
- a.KeyPointNo == no && a.RelatedType == StaffRelatedDefinition.KeyPoint);
- var staff = QueryCloneStaff(query).FirstOrDefault();
- return staff;
- });
- }
- #endregion
- #endregion
- #region 状态
- /// <summary>
- /// 状态变更
- /// </summary>
- /// <param name="id"></param>
- /// <param name="state"></param>
- /// <param name="reason"></param>
- /// <param name="type"></param>
- /// <returns></returns>
- public async Task ChangeState(string id, int state, string reason, ServiceType type)
- {
- var date = DateTime.Now;
- switch (type)
- {
- case ServiceType.Case:
- {
- var entity = await LsRepository.FirstOrDefaultAsync(a => a.Id == id);
- if (entity == null)
- {
- throw new UserFriendlyException("未查询到项目,请检测后再试。");
- }
- string oldName = LegalCaseStateDefinition.GetName(entity.CaseState, StatesManager),
- newName = LegalCaseStateDefinition.GetName(state, StatesManager);
- if (entity.CaseState == state)
- {
- throw new UserFriendlyException($"需变更的与原状态[{oldName}]相同,不能操作!");
- }
- if (state == LegalCaseStateDefinition.New)
- {
- throw new UserFriendlyException("不能变更为新建状态!");
- }
- if (entity.CaseState == LegalCaseStateDefinition.End && !(await PermissionChecker.IsGrantedAsync(PermissionNames.PagesCaseContractMgCaseMgRestart)))
- {
- throw new UserFriendlyException("项目已结束,不能操作!");
- }
-
- await LSnRepository.InsertAsync(new LegalCaseNoteInfo()
- {
- CaseNo = id,
- NoteType = NoteTypeDefinition.StateChange,
- NoteContent = $"状态由{oldName}变更为{newName}{(reason.Empty() ? "" : $",原因:<i class=\"text-iwb\">{reason}</i>")}"
- });
- if (entity.CaseState == LegalCaseStateDefinition.New && state== LegalCaseStateDefinition.Running)
- {
- entity.StartDateTime = date;
- }else if (state == LegalCaseStateDefinition.End)
- {
- entity.EndDateTime = date;
- }
- entity.CaseState = state;
- entity.StateLastChangeTime = date;
- entity.StateLastChangeCause = reason;
- await LsRepository.UpdateAsync(entity);
- break;
- }
- case ServiceType.Contract:
- {
- var entity = await LcRepository.GetAllIncluding(a=>a.CaseInfo).FirstOrDefaultAsync(a => a.Id == id);
- if (entity == null)
- {
- throw new UserFriendlyException("未查询到合同,请检测后再试。");
- }
- if (entity.CaseInfo.CaseState != LegalCaseStateDefinition.Running)
- {
- throw new UserFriendlyException("合同所在项目未启动,不能操作,请检测后再试。");
- }
- string oldName = LegalContractStateDefinition.GetName(entity.ContractState, StatesManager),
- newName = LegalContractStateDefinition.GetName(state, StatesManager);
- if (entity.ContractState == state)
- {
- throw new UserFriendlyException($"需变更的与原状态[{oldName}]相同,不能操作!");
- }
- if (state == LegalContractStateDefinition.New)
- {
- throw new UserFriendlyException("不能变更为新建状态!");
- }
- if (entity.ContractState == LegalContractStateDefinition.End && !(await PermissionChecker.IsGrantedAsync(PermissionNames.PagesCaseContractMgContractMgRestart)))
- {
- throw new UserFriendlyException("合同已结束,不能操作!");
- }
- await LCnRepository.InsertAsync(new LegalContractNoteInfo()
- {
- ContractNo = id,
- NoteType = NoteTypeDefinition.StateChange,
- NoteContent = $"状态由{oldName}变更为{newName}{(reason.Empty() ? "" : $",原因:<i class=\"text-iwb\">{reason}</i>")}"
- });
- if (entity.ContractState == LegalContractStateDefinition.New && state == LegalContractStateDefinition.Running)
- {
- entity.StartDateTime = date;
- }
- else if (state == LegalContractStateDefinition.End)
- {
- entity.EndDateTime = date;
- }
- entity.ContractState = state;
- entity.StateLastChangeTime = date;
- entity.StateLastChangeCause = reason;
- await LcRepository.UpdateAsync(entity);
- break;
- }
- case ServiceType.KeyPoint:
- {
- var entity = await LCkpRepository.GetAllIncluding(a=>a.ContractInfo).FirstOrDefaultAsync(a => a.Id == id);
- if (entity == null)
- {
- throw new UserFriendlyException("未查询到关键点,请检测后再试。");
- }
- if (entity.ContractInfo.ContractState != LegalContractStateDefinition.Running)
- {
- throw new UserFriendlyException("关键点所在合同未启动,不能操作,请检测后再试。");
- }
- await ChangeKpState(entity, state, reason);
- break;
- }
- }
- }
-
- /// <summary>
- /// 关键点状态
- /// </summary>
- /// <param name="entity"></param>
- /// <param name="state"></param>
- /// <param name="reason"></param>
- /// <returns></returns>
- private async Task ChangeKpState(LegalContractKeyPointInfo entity, int state, string reason)
- {
- string oldName = LegalKeyPointStateDefinition.GetName(entity.KeyPointState, StatesManager),
- newName = LegalKeyPointStateDefinition.GetName(state, StatesManager);
- if (entity.KeyPointState == state)
- {
- throw new UserFriendlyException($"需变更的与原状态[{oldName}]相同,不能操作!");
- }
- if (entity.KeyPointState == LegalKeyPointStateDefinition.Executed)
- {
- throw new UserFriendlyException("关键点已执行,不能操作!");
- }
- if (entity.KeyPointState == LegalKeyPointStateDefinition.End && state != LegalKeyPointStateDefinition.Run)
- {
- throw new UserFriendlyException("关键点已结束,不能操作!");
- }
- if (state == LegalKeyPointStateDefinition.New)
- {
- throw new UserFriendlyException("不能变更为新建状态!");
- }
- if (state == LegalKeyPointStateDefinition.Executed &&
- entity.KeyPointState != LegalKeyPointStateDefinition.Run)
- {
- throw new UserFriendlyException($"只有[{LegalKeyPointStateDefinition.GetName(LegalKeyPointStateDefinition.Run, StatesManager)}]的关键点可以变更为[{newName}],请检查后再试!");
- }
- if (entity.KeyPointState == LegalKeyPointStateDefinition.New)
- {
- await ContractNote(new LegalContractNoteInfo()
- {
- KeyPointNo = entity.Id,
- ContractNo = entity.ContractNo,
- NoteType = NoteTypeDefinition.StateChange,
- NoteContent = $"<strong class=\"pr-2\">启动关键点</strong><br/><strong class=\"pr-2\">详情</strong> [<i class=\"pl-1 pr-1\">{entity.Description}</i>]<br/><strong class=\"pr-2\">提醒日期</strong> [<i class=\"pl-1 pr-1\">{(entity.AlarmDate != null ? entity.AlarmDate?.ToString("yyyy-MM-dd") : $"{entity.AlarmDay}天")}</i>] <span> </span> <strong class=\"pl-4 pr-2\">过期日期</strong> [<i class=\"pl-1 pr-1\">{(entity.ExpireDate != null ? entity.ExpireDate?.ToString("yyyy-MM-dd") : $"{entity.ExpireDay}天")}</i>]"
- });
- }
- else
- {
- await ContractNote(new LegalContractNoteInfo()
- {
- ContractNo = entity.ContractNo,
- KeyPointNo = entity.Id,
- NoteType = NoteTypeDefinition.StateChange,
- NoteContent = $"状态由{oldName}变更为{newName}{(reason.Empty() ? "" : $",原因:<i class=\"text-iwb\">{reason}</i>")}"
- });
- }
- //if (entity.KeyPointState == LegalKeyPointStateDefinition.New && state == LegalKeyPointStateDefinition.Runned)
- //{
- // entity.StartDateTime = date;
- //}
- //else if (state == LegalKeyPointStateDefinition.End)
- //{
- // entity.EndDateTime = date;
- //}
- entity.KeyPointState = state;
- if (state == LegalKeyPointStateDefinition.Executed)
- {
- await StartChildKp(entity);
- }
- await LCkpRepository.UpdateAsync(entity);
- }
- /// <summary>
- /// 启动子关键点
- /// </summary>
- /// <param name="entity"></param>
- /// <returns></returns>
- private async Task StartChildKp(LegalContractKeyPointInfo entity)
- {
- var child = await LCkpRepository.FirstOrDefaultAsync(a => a.ParentNo == entity.Id);
- if (child != null)
- {
- if (child.ExpireDate == null)
- {
- child.ExpireDate = DateTime.Today.AddDays(child.ExpireDay+child.AlarmDay);
- }
- if (child.AlarmDate == null)
- {
- child.AlarmDate = DateTime.Today.AddDays(child.AlarmDay);
- }
- await LCkpRepository.UpdateAsync(child);
- await ChangeKpState(child, LegalKeyPointStateDefinition.Run, "");
- }
- }
- #endregion
- #region 律师 Lawyers
- /// <summary>
- /// 获取未绑定的律师账号
- /// </summary>
- /// <returns></returns>
- public async Task<List<User>> GetLawyerAccount()
- {
- var list = await UserRepository.GetAll()
- .Where(a => a.IsActive && a.AccountType == AccountTypeDefinition.Lawyer &&
- string.IsNullOrEmpty(a.AccountNo)).OrderByDescending(a => a.UserName).Select(a => new User
- {
- UserName = a.UserName,
- Name = a.Name
- }).ToListAsync();
- return list;
- }
- /// <summary>
- /// 绑定律师账号
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <param name="userName"></param>
- /// <returns></returns>
- public async Task BindLawyerAccount(string lawyerNo, string userName)
- {
- var user = await UserRepository.FirstOrDefaultAsync(a =>
- a.UserName == userName && a.IsActive && a.AccountType == AccountTypeDefinition.Lawyer &&
- string.IsNullOrEmpty(a.AccountNo));
- if (user == null)
- {
- CheckError("账号不存或已被锁定,请检查后再试!");
- return;
- }
- var lawyer = await LawyerRepository.FirstOrDefaultAsync(a => a.Id == lawyerNo);
- if (lawyer == null)
- {
- CheckError("未查询到律师,请检查后再试!");
- return;
- }
- CheckError(await UserManager.CheckDuplicateUsernameOrEmailAddressAsync(user.Id, "", lawyer.Email));
- lawyer.UserName = userName;
- await LawyerRepository.UpdateAsync(lawyer);
- user.AccountNo = lawyerNo;
- user.Name = lawyer.Name;
- user.PhoneNumber = lawyer.PhoneNumber;
- user.EmailAddress = lawyer.Email;
- user.SetNormalizedNames();
- user.IsEmailConfirmed = false;
- await UserRepository.UpdateAsync(user);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 解绑律师账号
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <returns></returns>
- public async Task UnBindLawyerAccount(string lawyerNo)
- {
- var lawyer = await LawyerRepository.FirstOrDefaultAsync(a => a.Id == lawyerNo);
- if (lawyer == null)
- {
- CheckError("未查询到律师,请检查后再试!");
- return;
- }
- if (lawyer.UserName.IsEmpty())
- {
- CheckError("律师未绑定账号,请检查后再试!");
- }
- await UnBindLawyerAccount(lawyer);
- }
- /// <summary>
- /// 解绑律师账号
- /// </summary>
- /// <returns></returns>
- public async Task UnBindLawyerAccount(LawyerInfo lawyer, bool checkUser = true)
- {
- var user = await UserRepository.FirstOrDefaultAsync(a =>
- a.UserName == lawyer.UserName && a.IsActive && a.AccountType == AccountTypeDefinition.Lawyer &&
- !string.IsNullOrEmpty(a.AccountNo));
- lawyer.UserName = "";
- await LawyerRepository.UpdateAsync(lawyer);
- if (user == null)
- {
- if (checkUser)
- {
- CheckError("律师绑定的账号不存或已被锁定,请检查后再试!");
- }
- return;
- }
- user.AccountNo = "";
- user.Name = user.UserName;
- user.PhoneNumber = "";
- user.EmailAddress = "";
- user.SetNormalizedNames();
- user.IsEmailConfirmed = false;
- user.IsActive = false;
- await UserRepository.UpdateAsync(user);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
-
- /// <summary>
- /// 设置律所的负责人
- /// </summary>
- /// <param name="lawFirmNo"></param>
- /// <param name="lawyerNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- public async Task SetLawFirmMasterLawyer(string lawFirmNo, string lawyerNo, bool oldDelete = false)
- {
- CheckSysAccount();
- var old = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LawFirm && a.LawFirmNo == lawFirmNo &&
- a.MasterType == LawyerMasterDefinition.LawFirmMaster);
- if (old != null)
- {
- if (old.LawyerNo == lawyerNo)
- {
- CheckError("当前律师已是负责人!");
- return;
- }
- if (oldDelete)
- {
- await LawyerRelatedRepository.DeleteAsync(old);
- }
- else
- {
- old.MasterType = LawyerMasterDefinition.CommonLawyer;
- await LawyerRelatedRepository.UpdateAsync(old);
- }
- }
- var newEntity = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LawFirm && a.LawFirmNo == lawFirmNo &&
- a.LawyerNo == lawyerNo);
- if (newEntity == null)
- {
- await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- {
- LawyerNo = lawyerNo,
- LawFirmNo = lawFirmNo,
- RelatedType = LawyerRelatedDefinition.LawFirm,
- MasterType = LawyerMasterDefinition.LawFirmMaster
- });
- }
- else
- {
- newEntity.MasterType = LawyerMasterDefinition.LawFirmMaster;
- await LawyerRelatedRepository.UpdateAsync(newEntity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置律师的律所
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <param name="lawFirmNo"></param>
- /// <returns></returns>
- public async Task SetLawyerLawFirm(string lawyerNo, string lawFirmNo)
- {
- CheckAccount(AccountTypeDefinition.System, AccountTypeDefinition.Lawyer);
- var entity = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LawFirm &&
- a.LawyerNo == lawyerNo &&
- a.MasterType == LawyerMasterDefinition.CommonLawyer);
- if (entity == null)
- {
- await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- {
- LawyerNo = lawyerNo,
- LawFirmNo = lawFirmNo,
- RelatedType = LawyerRelatedDefinition.LawFirm,
- MasterType = LawyerMasterDefinition.CommonLawyer
- });
- }
- else
- {
- entity.LawFirmNo = lawFirmNo;
- await LawyerRelatedRepository.UpdateAsync(entity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- ///// <summary>
- ///// 设置项目的负责人
- ///// </summary>
- ///// <param name="caseNo"></param>
- ///// <param name="lawyerNo"></param>
- ///// <param name="oldDelete"></param>
- ///// <returns></returns>
- //public async Task SetCaseMasterLawyer(string caseNo, string lawyerNo, bool oldDelete = false)
- //{
- // if (lawyerNo.IsEmpty())
- // {
- // CheckError("请设置一名负责人!");
- // }
- // CheckLawyerAccount();
- // var legalCase = await LsRepository.FirstOrDefaultAsync(a => a.Id == caseNo);
- // if (legalCase == null)
- // {
- // CheckError("未查询到项目,请检查后再试!");
- // return;
- // }
- // var isLawFirmMaster = IsLawFirmMaster(AbpSession.AccountNo, out var lawFirmNo);
- // if (!isLawFirmMaster)
- // {
- // CheckError("没有权限操作!");
- // }
- // await SetCaseMasterLawyer(caseNo, lawyerNo, lawFirmNo, oldDelete);
- //}
- ///// <summary>
- ///// 设置项目的负责人
- ///// </summary>
- ///// <param name="caseNo"></param>
- ///// <param name="lawyerNo"></param>
- ///// <param name="lawFirmNo"></param>
- ///// <param name="oldDelete"></param>
- ///// <returns></returns>
- //private async Task SetCaseMasterLawyer(string caseNo, string lawyerNo,string lawFirmNo, bool oldDelete = false)
- //{
- // var old = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- // a.RelatedType == LawyerRelatedDefinition.LegalCase && a.CaseNo == caseNo &&
- // a.MasterType == LawyerMasterDefinition.MasterLawyer);
- // if (old != null)
- // {
- // if (old.LawyerNo == lawyerNo)
- // {
- // CheckError("当前律师已是负责人!");
- // return;
- // }
- // if (oldDelete)
- // {
- // await LawyerRelatedRepository.DeleteAsync(old);
- // }
- // else
- // {
- // old.MasterType = LawyerMasterDefinition.CommonLawyer;
- // await LawyerRelatedRepository.UpdateAsync(old);
- // }
- // }
- // var newEntity = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- // a.RelatedType == LawyerRelatedDefinition.LegalCase && a.CaseNo == caseNo &&
- // a.LawyerNo == lawyerNo);
- // if (newEntity == null)
- // {
- // lawFirmNo = lawFirmNo.NotEmpty() ? lawFirmNo : await QueryLawFirmNoByCase(caseNo);
- // await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- // {
- // LawyerNo = lawyerNo,
- // LawFirmNo = lawFirmNo,
- // CaseNo = caseNo,
- // RelatedType = LawyerRelatedDefinition.LegalCase,
- // MasterType = LawyerMasterDefinition.MasterLawyer
- // });
- // }
- // else
- // {
- // newEntity.MasterType = LawyerMasterDefinition.MasterLawyer;
- // await LawyerRelatedRepository.UpdateAsync(newEntity);
- // }
- // await CurrentUnitOfWork.SaveChangesAsync();
- //}
- ///// <summary>
- ///// 设置项目的职员
- ///// </summary>
- ///// <param name="caseNo"></param>
- ///// <param name="lawyerNos"></param>
- ///// <returns></returns>
- //public async Task SetCaseLawyers(string caseNo, string lawyerNos)
- //{
- // await SetCaseLawyers(caseNo, lawyerNos.Split(',').ToList());
- //}
- ///// <summary>
- ///// 设置项目的职员
- ///// </summary>
- ///// <param name="caseNo"></param>
- ///// <param name="lawyerNos"></param>
- ///// <returns></returns>
- //public async Task SetCaseLawyers(string caseNo, List<string> lawyerNos)
- //{
- // CheckLawyerAccount();
- // var legalCase = await LsRepository.FirstOrDefaultAsync(a => a.Id == caseNo);
- // if (legalCase == null)
- // {
- // CheckError("未查询到项目,请检查后再试!");
- // return;
- // }
- // var isMaster = IsLawFirmCaseMaster(AbpSession.AccountNo, caseNo);
- // string lawFirmNo = null;
- // if (!isMaster)
- // {
- // var isLawFirmMaster = IsLawFirmMaster(AbpSession.AccountNo, out lawFirmNo);
- // if (!isLawFirmMaster)
- // {
- // CheckError("没有权限操作!");
- // }
- // }
- // //lawFirmNo = lawFirmNo.IsEmpty() ? lawFirmNo : await QueryLawFirmNoByCase(caseNo);
- // var oldNos = await LawyerRelatedRepository.GetAll()
- // .Where(a => a.RelatedType == LawyerRelatedDefinition.LegalCase && a.CaseNo == caseNo && a.MasterType == LawyerMasterDefinition.CommonLawyer)
- // .Select(a => a.LawyerNo).ToListAsync();
- // lawyerNos = lawyerNos.Distinct().ToList();
- // foreach (var no in lawyerNos)
- // {
- // if (oldNos.Contains(no))
- // {
- // oldNos.Remove(no);
- // }
- // else
- // {
- // await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- // {
- // LawyerNo = no,
- // LawFirmNo = lawFirmNo,
- // CaseNo = caseNo,
- // RelatedType = LawyerRelatedDefinition.LegalCase,
- // MasterType = LawyerMasterDefinition.CommonLawyer
- // });
- // }
- // }
- // if (oldNos.Any())
- // {
- // await LawyerRelatedRepository.DeleteAsync(a =>
- // a.RelatedType == LawyerRelatedDefinition.LegalCase && a.CaseNo == caseNo &&
- // a.MasterType == LawyerMasterDefinition.CommonLawyer && oldNos.Contains(a.LawyerNo));
- // }
- // await CurrentUnitOfWork.SaveChangesAsync();
- //}
- /// <summary>
- /// 设置合同的负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="lawyerNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- public async Task SetContractMasterLawyer(string contractNo, string lawyerNo, bool oldDelete = true)
- {
- //CheckSysAccount();
- CheckLawyerAccount();
- if (lawyerNo.IsEmpty())
- {
- CheckError("请设置一名负责人!");
- }
- var contract = await LcRepository.FirstOrDefaultAsync(a => a.Id == contractNo);
- if (contract == null)
- {
- CheckError("未查询到合同,请检查后再试!");
- return;
- }
- var isMaster = IsLawFirmMaster(AbpSession.AccountNo);
- if (!isMaster)
- {
- CheckError("您不是律所负责人,没有权限操作!");
- }
- await SetContractMasterLawyer(contractNo, lawyerNo, contract.CaseNo, oldDelete);
- }
- /// <summary>
- /// 设置合同的负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="lawyerNo"></param>
- /// <param name="caseNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- private async Task SetContractMasterLawyer(string contractNo, string lawyerNo, string caseNo, bool oldDelete = true)
- {
- var old = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.MasterType == LawyerMasterDefinition.MasterLawyer);
- if (old != null)
- {
- if (old.LawyerNo == lawyerNo)
- {
- //CheckError("当前律师已是负责人!");
- return;
- }
- if (oldDelete)
- {
- await LawyerRelatedRepository.DeleteAsync(old);
- }
- else
- {
- old.MasterType = LawyerMasterDefinition.CommonLawyer;
- await LawyerRelatedRepository.UpdateAsync(old);
- }
- }
-
- var newEntity = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.LawyerNo == lawyerNo);
- var cLawFirmNo= (await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.MasterType == LawyerMasterDefinition.LawFirmContract))?.LawFirmNo;
- if (newEntity == null)
- {
- caseNo = caseNo.Empty() ? await QueryCaseNoByContract(contractNo) : caseNo;
- var lawFirmNo = await QueryLawFirmNoByLawyerAsync(lawyerNo);
- if (lawFirmNo != cLawFirmNo)
- {
- CheckError("请分配当前律所的律师!");
- }
- await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- {
- LawyerNo = lawyerNo,
- LawFirmNo = lawFirmNo,
- CaseNo = caseNo,
- ContractNo = contractNo,
- RelatedType = LawyerRelatedDefinition.LegalContract,
- MasterType = LawyerMasterDefinition.MasterLawyer
- });
- }
- else
- {
- newEntity.MasterType = LawyerMasterDefinition.MasterLawyer;
- await LawyerRelatedRepository.UpdateAsync(newEntity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置合同的职员
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="lawyerNos"></param>
- /// <returns></returns>
- public async Task SetContractLawyers(string contractNo, string lawyerNos)
- {
- await SetContractLawyers(contractNo, lawyerNos.Split(',').ToList());
- }
- /// <summary>
- /// 设置合同的职员
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="lawyerNos"></param>
- /// <returns></returns>
- public async Task SetContractLawyers(string contractNo, List<string> lawyerNos)
- {
- //CheckSysAccount();
- CheckLawyerAccount();
- var contract = await LcRepository.FirstOrDefaultAsync(a => a.Id == contractNo);
- if (contract == null)
- {
- CheckError("未查询到合同,请检查后再试!");
- return;
- }
- var isContractMaster = IsLawyerContractMaster(AbpSession.AccountNo, contractNo);
- if (!isContractMaster)
- {
- var isLawFirmMaster = IsLawFirmMaster(AbpSession.AccountNo);
- if (!isLawFirmMaster)
- {
- CheckError("没有权限操作!");
- }
- }
- var oldNos = await LawyerRelatedRepository.GetAll()
- .Where(a => a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo && a.MasterType == LawyerMasterDefinition.CommonLawyer)
- .Select(a => a.LawyerNo).ToListAsync();
- lawyerNos = lawyerNos.Distinct().ToList();
- var cLawFirmNo = (await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo))?.LawFirmNo;
- foreach (var no in lawyerNos)
- {
- if (oldNos.Contains(no))
- {
- oldNos.Remove(no);
- }
- else
- {
- var lawFirmNo = await QueryLawFirmNoByLawyerAsync(no);
- if (lawFirmNo != cLawFirmNo)
- {
- CheckError("请分配当前律所的律师!");
- }
- await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- {
- LawyerNo = no,
- LawFirmNo = lawFirmNo,
- CaseNo = contract.CaseNo,
- ContractNo = contractNo,
- RelatedType = LawyerRelatedDefinition.LegalContract,
- MasterType = LawyerMasterDefinition.CommonLawyer
- });
- }
- }
- if (oldNos.Any())
- {
- await LawyerRelatedRepository.DeleteAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.MasterType == LawyerMasterDefinition.CommonLawyer && oldNos.Contains(a.LawyerNo));
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 分配合同律所
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="lawFirmNo"></param>
- /// <returns></returns>
- public async Task SetContractLawFirm(string contractNo,string lawFirmNo)
- {
- CheckSysAccount();
- var contract = await LcRepository.FirstOrDefaultAsync(a => a.Id == contractNo);
- if (contract == null)
- {
- CheckError("未查询到合同,请检查后再试!");
- return;
- }
- if (await CheckContractHasLawFirm(contractNo))
- {
- CheckError("合同已被分配,请检查后再试!");
- return;
- }
- var lawyerNo = (await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.LawFirmNo == lawFirmNo && a.RelatedType == LawyerRelatedDefinition.LawFirm &&
- a.MasterType == LawyerMasterDefinition.LawFirmMaster))?.LawyerNo;
- if (lawyerNo.Empty())
- {
- CheckError("律所暂未指定负责人,请检查后再试!");
- return;
- }
- await LawyerRelatedRepository.InsertAsync(new LawyerRelatedInfo()
- {
- ContractNo = contractNo,
- LawFirmNo = lawFirmNo,
- CaseNo = contract.CaseNo,
- LawyerNo = lawyerNo,
- RelatedType = LawyerRelatedDefinition.LegalContract,
- MasterType = LawyerMasterDefinition.LawFirmContract
- });
- }
- /// <summary>
- /// 检查合同是否被分配律所
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public async Task<bool> CheckContractHasLawFirm(string contractNo)
- {
- var old = await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.MasterType == LawyerMasterDefinition.LawFirmContract);
- return old != null;
- }
- #endregion
- #region 员工 Staff
- /// <summary>
- /// 获取未绑定的客户账号
- /// </summary>
- /// <returns></returns>
- public async Task<List<User>> GetStaffAccount()
- {
- var list = await UserRepository.GetAll()
- .Where(a => a.IsActive && a.AccountType == AccountTypeDefinition.Client &&
- string.IsNullOrEmpty(a.AccountNo)).OrderByDescending(a => a.UserName).Select(a => new User
- {
- UserName = a.UserName,
- Name = a.Name
- }).ToListAsync();
- return list;
- }
- /// <summary>
- /// 绑定员工账号
- /// </summary>
- /// <param name="staffNo"></param>
- /// <param name="userName"></param>
- /// <returns></returns>
- public async Task BindStaffAccount(string staffNo, string userName)
- {
- var user = await UserRepository.FirstOrDefaultAsync(a =>
- a.UserName == userName && a.IsActive && a.AccountType == AccountTypeDefinition.Client &&
- string.IsNullOrEmpty(a.AccountNo));
- if (user == null)
- {
- CheckError("账号不存或已被锁定,请检查后再试!");
- return;
- }
- var staff = await StaffRepository.FirstOrDefaultAsync(a => a.Id == staffNo);
- if (staff == null)
- {
- CheckError("未查询到员工,请检查后再试!");
- return;
- }
- CheckError(await UserManager.CheckDuplicateUsernameOrEmailAddressAsync(user.Id, "", staff.Email));
- staff.UserName = userName;
- await StaffRepository.UpdateAsync(staff);
- user.AccountNo = staffNo;
- user.Name = staff.Name;
- user.PhoneNumber = staff.PhoneNumber;
- user.EmailAddress = staff.Email;
- user.SetNormalizedNames();
- user.IsEmailConfirmed = false;
- await UserRepository.UpdateAsync(user);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 解绑员工账号
- /// </summary>
- /// <param name="staffNo"></param>
- /// <returns></returns>
- public async Task UnBindStaffAccount(string staffNo)
- {
- var staff = await StaffRepository.FirstOrDefaultAsync(a => a.Id == staffNo);
- if (staff == null)
- {
- CheckError("未查询到员工,请检查后再试!");
- return;
- }
- if (staff.UserName.IsEmpty())
- {
- CheckError("员工未绑定账号,请检查后再试!");
- }
- await UnBindStaffAccount(staff);
- }
- /// <summary>
- /// 解绑员工账号
- /// </summary>
- /// <param name="staff"></param>
- /// <param name="checkUser"></param>
- /// <returns></returns>
- private async Task UnBindStaffAccount(ClientStaffInfo staff, bool checkUser = true)
- {
- var user = await UserRepository.FirstOrDefaultAsync(a =>
- a.UserName == staff.UserName && a.IsActive && a.AccountType == AccountTypeDefinition.Client &&
- !string.IsNullOrEmpty(a.AccountNo));
- staff.UserName = "";
- await StaffRepository.UpdateAsync(staff);
- if (user == null)
- {
- if (checkUser)
- {
- CheckError("员工绑定的账号不存或已被锁定,请检查后再试!");
- }
- return;
- }
- user.AccountNo = "";
- user.Name = user.UserName;
- user.PhoneNumber = "";
- user.EmailAddress = "";
- user.SetNormalizedNames();
- user.IsEmailConfirmed = false;
- user.IsActive = false;
- await UserRepository.UpdateAsync(user);
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置公司的负责人
- /// </summary>
- /// <param name="companyNo"></param>
- /// <param name="staffNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- public async Task SetCompanyMasterStaff(string companyNo, string staffNo, bool oldDelete = false)
- {
- var old = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.Company && a.CompanyNo == companyNo &&
- a.MasterType == StaffMasterDefinition.CompanyMaster);
- if (old != null)
- {
- if (old.StaffNo == staffNo)
- {
- CheckError("当前员工已是负责人!");
- return;
- }
- if (oldDelete)
- {
- await StaffRelatedRepository.DeleteAsync(old);
- }
- else
- {
- old.MasterType = StaffMasterDefinition.CommonStaff;
- await StaffRelatedRepository.UpdateAsync(old);
- }
- }
- var newEntity = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.Company && a.CompanyNo == companyNo &&
- a.StaffNo == staffNo);
- if (newEntity == null)
- {
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- StaffNo = staffNo,
- CompanyNo = companyNo,
- RelatedType = StaffRelatedDefinition.Company,
- MasterType = StaffMasterDefinition.CompanyMaster
- });
- }
- else
- {
- newEntity.MasterType = StaffMasterDefinition.CompanyMaster;
- await StaffRelatedRepository.UpdateAsync(newEntity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置员工的公司
- /// </summary>
- /// <param name="staffNo"></param>
- /// <param name="companyNo"></param>
- /// <returns></returns>
- public async Task SetStaffCompany(string staffNo, string companyNo)
- {
- var entity = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.Company &&
- a.StaffNo == staffNo &&
- a.MasterType == StaffMasterDefinition.CommonStaff);
- if (entity == null)
- {
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- StaffNo = staffNo,
- CompanyNo = companyNo,
- RelatedType = StaffRelatedDefinition.Company,
- MasterType = StaffMasterDefinition.CommonStaff
- });
- }
- else
- {
- entity.CompanyNo = companyNo;
- await StaffRelatedRepository.UpdateAsync(entity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置项目的负责人
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="staffNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- public async Task SetCaseMasterStaff(string caseNo, string staffNo, bool oldDelete = false)
- {
- if (staffNo.IsEmpty())
- {
- CheckError("请设置一名负责人!");
- }
- CheckClientAccount();
- var legalCase = await LsRepository.FirstOrDefaultAsync(a => a.Id == caseNo);
- if (legalCase == null)
- {
- CheckError("未查询到项目,请检查后再试!");
- return;
- }
- var isCompanyMaster = IsCompanyMaster(AbpSession.AccountNo, out var companyNo);
- if (!isCompanyMaster)
- {
- CheckError("没有权限变更项目负责人,请联系企业负责人!");
- }
- await SetCaseMasterStaff(caseNo, staffNo, companyNo, oldDelete);
- }
- /// <summary>
- /// 设置项目的负责人
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="staffNo"></param>
- /// <param name="companyNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- private async Task SetCaseMasterStaff(string caseNo, string staffNo,string companyNo, bool oldDelete = false)
- {
- var old = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.LegalCase && a.CaseNo == caseNo &&
- a.MasterType == StaffMasterDefinition.MasterStaff);
- if (old != null)
- {
- if (old.StaffNo == staffNo)
- {
- //CheckError("当前员工已是负责人!");
- return;
- }
- if (oldDelete)
- {
- await StaffRelatedRepository.DeleteAsync(old);
- }
- else
- {
- old.MasterType = StaffMasterDefinition.CommonStaff;
- await StaffRelatedRepository.UpdateAsync(old);
- }
- }
- var newEntity = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.LegalCase && a.CaseNo == caseNo &&
- a.StaffNo == staffNo);
- if (newEntity == null)
- {
- companyNo = companyNo.Empty() ? await QueryCompanyNoByCase(caseNo) : companyNo;
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- StaffNo = staffNo,
- CompanyNo = companyNo,
- CaseNo = caseNo,
- RelatedType = StaffRelatedDefinition.LegalCase,
- MasterType = StaffMasterDefinition.MasterStaff
- });
- }
- else
- {
- newEntity.MasterType = StaffMasterDefinition.MasterStaff;
- await StaffRelatedRepository.UpdateAsync(newEntity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置项目的职员
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="staffNos"></param>
- /// <returns></returns>
- public async Task SetCaseStaffs(string caseNo, string staffNos)
- {
- await SetCaseStaffs(caseNo, staffNos.Split(',').ToList());
- }
- /// <summary>
- /// 设置项目的职员
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="staffNos"></param>
- /// <returns></returns>
- public async Task SetCaseStaffs(string caseNo, List<string> staffNos)
- {
- CheckClientAccount();
- var legalCase = await LsRepository.FirstOrDefaultAsync(a => a.Id == caseNo);
- if (legalCase == null)
- {
- CheckError("未查询到项目,请检查后再试!");
- return;
- }
- var isMaster = IsClientCaseMaster(AbpSession.AccountNo, caseNo);
- string companyNo = null;
- if (!isMaster)
- {
- var isCompanyMaster = IsCompanyMaster(AbpSession.AccountNo, out companyNo);
- if (!isCompanyMaster)
- {
- CheckError("没有权限操作!");
- }
- }
- companyNo = companyNo.Empty() ? await QueryCompanyNoByCase(caseNo): companyNo ;
- var oldNos = await StaffRelatedRepository.GetAll()
- .Where(a => a.RelatedType == StaffRelatedDefinition.LegalCase && a.CaseNo == caseNo && a.MasterType == StaffMasterDefinition.CommonStaff)
- .Select(a => a.StaffNo).ToListAsync();
- staffNos = staffNos.Distinct().ToList();
- foreach (var no in staffNos)
- {
- if (oldNos.Contains(no))
- {
- oldNos.Remove(no);
- }
- else
- {
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- StaffNo = no,
- CompanyNo = companyNo,
- CaseNo = caseNo,
- RelatedType = StaffRelatedDefinition.LegalCase,
- MasterType = StaffMasterDefinition.CommonStaff
- });
- }
- }
- if (oldNos.Any())
- {
- await StaffRelatedRepository.DeleteAsync(a =>
- a.RelatedType == StaffRelatedDefinition.LegalCase && a.CaseNo == caseNo &&
- a.MasterType == StaffMasterDefinition.CommonStaff && oldNos.Contains(a.StaffNo));
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置合同的负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="staffNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- public async Task SetContractMasterStaff(string contractNo, string staffNo, bool oldDelete = false)
- {
- if (staffNo.IsEmpty())
- {
- CheckError("请设置一名负责人!");
- }
- var contract = await LcRepository.FirstOrDefaultAsync(a => a.Id == contractNo);
- if (contract == null)
- {
- CheckError("未查询到合同,请检查后再试!");
- return;
- }
-
- var isMaster = IsClientCaseMaster(AbpSession.AccountNo, contract.CaseNo);
- string companyNo = null;
- if (!isMaster)
- {
- var isCompanyMaster = IsCompanyMaster(AbpSession.AccountNo, out companyNo);
- if (!isCompanyMaster)
- {
- CheckError("没有权限操作!");
- }
- }
- await SetContractMasterStaff(contractNo, staffNo, contract.CaseNo, companyNo, oldDelete);
- }
- /// <summary>
- /// 设置合同的负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="staffNo"></param>
- /// <param name="caseNo"></param>
- /// <param name="companyNo"></param>
- /// <param name="oldDelete"></param>
- /// <returns></returns>
- private async Task SetContractMasterStaff(string contractNo, string staffNo, string caseNo, string companyNo=null, bool oldDelete = false)
- {
- var old = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.MasterType == StaffMasterDefinition.MasterStaff);
- if (old != null)
- {
- if (old.StaffNo == staffNo)
- {
- //CheckError("当前员工已是负责人!");
- return;
- }
- if (oldDelete)
- {
- await StaffRelatedRepository.DeleteAsync(old);
- }
- else
- {
- old.MasterType = StaffMasterDefinition.CommonStaff;
- await StaffRelatedRepository.UpdateAsync(old);
- }
- }
-
- var newEntity = await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.StaffNo == staffNo);
- if (newEntity == null)
- {
- caseNo = caseNo.Empty() ? await QueryCaseNoByContract(contractNo): caseNo ;
- companyNo = companyNo.Empty() ? await QueryCompanyNoByContract(contractNo) : companyNo;
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- StaffNo = staffNo,
- CompanyNo = companyNo,
- CaseNo = caseNo,
- ContractNo = contractNo,
- RelatedType = StaffRelatedDefinition.LegalContract,
- MasterType = StaffMasterDefinition.MasterStaff
- });
- }
- else
- {
- newEntity.MasterType = StaffMasterDefinition.MasterStaff;
- await StaffRelatedRepository.UpdateAsync(newEntity);
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- /// <summary>
- /// 设置合同的职员
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="staffNos"></param>
- /// <returns></returns>
- public async Task SetContractStaffs(string contractNo, string staffNos)
- {
- await SetContractStaffs(contractNo, staffNos.Split(',').ToList());
- }
- /// <summary>
- /// 设置合同的职员
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="staffNos"></param>
- /// <returns></returns>
- public async Task SetContractStaffs(string contractNo, List<string> staffNos)
- {
- CheckClientAccount();
- var contract = await LcRepository.FirstOrDefaultAsync(a => a.Id == contractNo);
- if (contract == null)
- {
- CheckError("未查询到合同,请检查后再试!");
- return;
- }
- string companyNo = null;
- var isContractMaster = await IsClientContractMaster(contractNo);
- if (!isContractMaster)
- {
- CheckError("没有权限操作!");
- //var isCaseMaster = IsClientCaseMaster(AbpSession.AccountNo, contract.CaseNo);
- //if (!isCaseMaster)
- //{
- // var isCompanyMaster = IsCompanyMaster(AbpSession.AccountNo, out companyNo);
- // if (!isCompanyMaster)
- // {
-
- // }
- //}
- }
- var oldNos = await StaffRelatedRepository.GetAll()
- .Where(a => a.RelatedType == StaffRelatedDefinition.LegalContract && a.ContractNo == contractNo && a.MasterType == StaffMasterDefinition.CommonStaff)
- .Select(a => a.StaffNo).ToListAsync();
- //companyNo = companyNo.Empty() ? await QueryCompanyNoByContract(contractNo) : companyNo;
- companyNo = await QueryCompanyNoByContract(contractNo);
- staffNos = staffNos.Distinct().ToList();
- foreach (var no in staffNos)
- {
- if (oldNos.Contains(no))
- {
- oldNos.Remove(no);
- }
- else
- {
- await StaffRelatedRepository.InsertAsync(new StaffRelatedInfo()
- {
- StaffNo = no,
- CompanyNo = companyNo,
- CaseNo = contract.CaseNo,
- ContractNo = contractNo,
- RelatedType = StaffRelatedDefinition.LegalContract,
- MasterType = StaffMasterDefinition.CommonStaff
- });
- }
- }
- if (oldNos.Any())
- {
- await StaffRelatedRepository.DeleteAsync(a =>
- a.RelatedType == StaffRelatedDefinition.LegalContract && a.ContractNo == contractNo &&
- a.MasterType == StaffMasterDefinition.CommonStaff && oldNos.Contains(a.StaffNo));
- }
- await CurrentUnitOfWork.SaveChangesAsync();
- }
- #endregion
- #region 查询
- #region IQueryable
- /// <summary>
- /// 查询项目
- /// </summary>
- /// <returns></returns>
- public IQueryable<LegalCaseInfo> QueryCase()
- {
- IQueryable<LegalCaseInfo> query = AbpSession.AccountType == AccountTypeDefinition.Lawyer
- ? QueryLawyerCase()
- : AbpSession.AccountType == AccountTypeDefinition.Client
- ? QueryStaffCase()
- : LsRepository.GetAll();//系统账号可以看到全部
- return query;
- }
-
- /// <summary>
- /// 查询合同
- /// </summary>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryContract()
- {
- IQueryable<LegalContractInfo> query = AbpSession.AccountType == AccountTypeDefinition.Lawyer
- ? QueryLawyerContract()
- : AbpSession.AccountType == AccountTypeDefinition.Client
- ? QueryStaffContract()
- : LcRepository.GetAllIncluding(a=>a.CaseInfo,a=>a.CaseInfo.CompanyInfo);//系统账号可以看到全部
- return query;
- }
- #region Lawyer
- public IQueryable<LawyerInfoClone> QueryAllLawyer()
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo, a => a.LawyerInfo.LawFirmInfo,
- a => a.LawyerInfo.OrganizationInfo)
- .Where(a => a.RelatedType == LawyerRelatedDefinition.LawFirm);
- return QueryCloneLawyer(query, true, LawyerMasterDefinition.LawFirmMaster);
- //return LawyerRepository.GetAllIncluding(a => a.LawFirmInfo, a => a.OrganizationInfo).Select(a =>
- // new LawyerInfoClone()
- // {
- // Id = a.Id,
- // Code = a.Code,
- // Name = a.Name,
- // IdCard = a.IdCard,
- // PhoneNumber = a.PhoneNumber,
- // Birthday = a.Birthday,
- // UserName = a.UserName,
- // LawFirmNo = a.LawFirmNo,
- // Email = a.Email,
- // OrganizationNo = a.OrganizationNo,
- // LawFirmName = a.LawFirmInfo.Name,
- // OrganizationName = a.OrganizationInfo.Name,
- // CreationTime = a.CreationTime
- // });
- }
- /// <summary>
- /// 查询律所的所有律师
- /// </summary>
- /// <param name="no"></param>
- /// <param name="withEx"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryLawFirmAllLawyers(string no, bool withEx = true)
- {
- var query = (withEx
- ? LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo, a => a.LawyerInfo.LawFirmInfo,
- a => a.LawyerInfo.OrganizationInfo)
- : LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo))
- .Where(a => a.LawFirmNo == no && a.RelatedType == LawyerRelatedDefinition.LawFirm);
- return QueryCloneLawyer(query, withEx, LawyerMasterDefinition.LawFirmMaster);
- }
- /// <summary>
- /// 查询律所的负责人
- /// </summary>
- /// <param name="lawFirmNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryMasterLawyerByLawFirm(string lawFirmNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.LawFirmNo == lawFirmNo && a.RelatedType == LawyerRelatedDefinition.LawFirm &&
- a.MasterType == LawyerMasterDefinition.LawFirmMaster);
- return QueryCloneLawyer(query, false);
- }
- /// <summary>
- /// 查询律所的律师
- /// </summary>
- /// <param name="lawFirmNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryLawyerByLawFirm(string lawFirmNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.LawFirmNo == lawFirmNo && a.RelatedType == LawyerRelatedDefinition.LawFirm &&
- a.MasterType == LawyerMasterDefinition.CommonLawyer && a.MasterType != LawyerMasterDefinition.LawFirmContract);
- return QueryCloneLawyer(query, false);
- }
- /// <summary>
- /// 查询项目的全部律师
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryCaseAllLawyers(string caseNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.CaseNo == caseNo && a.RelatedType == LawyerRelatedDefinition.LegalContract && a.MasterType != LawyerMasterDefinition.LawFirmContract);
- return QueryCloneLawyer(query, false);
- }
- ///// <summary>
- ///// 查询项目的负责人
- ///// </summary>
- ///// <param name="caseNo"></param>
- ///// <returns></returns>
- //public IQueryable<LawyerInfoClone> QueryMasterLawyerByCase(string caseNo)
- //{
- // return LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- // .Where(a => a.CaseNo == caseNo && a.RelatedType == LawyerRelatedDefinition.LegalCase &&
- // a.MasterType == LawyerMasterDefinition.MasterLawyer)
- // .Select(a => a.LawyerInfo).Distinct();
- //}
- /// <summary>
- /// 查询项目律师
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryLawyerByCase(string caseNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.CaseNo == caseNo && a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.CommonLawyer );
- return QueryCloneLawyer(query, false);
- }
- /// <summary>
- /// 查询合同的全部律师
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryContractAllLawyers(string contractNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.ContractNo == contractNo && a.RelatedType == LawyerRelatedDefinition.LegalContract && a.MasterType != LawyerMasterDefinition.LawFirmContract);
- return QueryCloneLawyer(query, false);
- }
- /// <summary>
- /// 查询合同的负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryMasterLawyerByContract(string contractNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.ContractNo == contractNo && a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.MasterLawyer);
- return QueryCloneLawyer(query, false);
- }
- /// <summary>
- /// 查询合同律师
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<LawyerInfoClone> QueryLawyerByContract(string contractNo)
- {
- var query = LawyerRelatedRepository.GetAllIncluding(a => a.LawyerInfo)
- .Where(a => a.ContractNo == contractNo && a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.CommonLawyer);
- return QueryCloneLawyer(query, false);
- }
- private IQueryable<LawyerInfoClone> QueryCloneLawyer(IQueryable<LawyerRelatedInfo> query, bool withEx = true, int masterType = LawyerMasterDefinition.MasterLawyer)
- {
- if (withEx)
- {
- return query.Select(a => new LawyerInfoClone()
- {
- Id = a.LawyerInfo.Id,
- Code = a.LawyerInfo.Code,
- Name = a.LawyerInfo.Name,
- IdCard = a.LawyerInfo.IdCard,
- PhoneNumber = a.LawyerInfo.PhoneNumber,
- PhoneNumber2 = a.LawyerInfo.PhoneNumber2,
- Birthday = a.LawyerInfo.Birthday,
- UserName = a.LawyerInfo.UserName,
- Email = a.LawyerInfo.Email,
- LawFirmNo = a.LawFirmNo,
- OrganizationNo = a.LawyerInfo.OrganizationNo,
- LawFirmName = a.LawyerInfo.LawFirmInfo.Name,
- OrganizationName = a.LawyerInfo.OrganizationInfo.Name,
- IsMaster = a.MasterType == masterType,
- CreationTime = a.LawyerInfo.CreationTime
- }).Distinct();
- }
- return query.Select(a => new LawyerInfoClone()
- {
- Id = a.LawyerInfo.Id,
- Code = a.LawyerInfo.Code,
- Name = a.LawyerInfo.Name,
- IdCard = a.LawyerInfo.IdCard,
- PhoneNumber = a.LawyerInfo.PhoneNumber,
- Birthday = a.LawyerInfo.Birthday,
- UserName = a.LawyerInfo.UserName,
- Email = a.LawyerInfo.Email,
- LawFirmNo = a.LawFirmNo,
- OrganizationNo = a.LawyerInfo.OrganizationNo,
- IsMaster = a.MasterType == masterType,
- CreationTime = a.LawyerInfo.CreationTime
- }).Distinct();
- }
- #endregion
- #region LawFirm
- /// <summary>
- /// 查询律所的项目
- /// </summary>
- /// <param name="lawFirmNo"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseInfo> QueryCaseByLawFirm(string lawFirmNo)
- {
- //lawyerNo= lawyerNo??AbpSession.
- return LawyerRelatedRepository.GetAllIncluding(a => a.CaseInfo).Where(a => a.LawFirmNo == lawFirmNo && a.RelatedType == LawyerRelatedDefinition.LegalContract)
- .Select(a => a.CaseInfo).Distinct();
- }
- /// <summary>
- /// 查询律所的合同
- /// </summary>
- /// <param name="lawFirmNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryContractByLawFirm(string lawFirmNo)
- {
- return LawyerRelatedRepository.GetAllIncluding(a => a.ContractInfo).Where(a => a.LawFirmNo == lawFirmNo && a.RelatedType == LawyerRelatedDefinition.LegalContract)
- .Select(a => a.ContractInfo).Distinct();
- }
- /// <summary>
- /// 查询律师的项目
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseInfo> QueryLawyerCase(string lawyerNo = null)
- {
- if (lawyerNo == null)
- {
- CheckLawyerAccount();
- lawyerNo = AbpSession.AccountNo;
- }
- var isLawFirmMaster = IsLawFirmMaster(lawyerNo);
- var lawFirmNo = QueryLawFirmNoByLawyer(lawyerNo);
- return LawyerRelatedRepository.GetAllIncluding(a => a.CaseInfo,a=>a.CaseInfo.CompanyInfo).Where(a =>
- (a.LawyerNo == lawyerNo || isLawFirmMaster && a.LawFirmNo == lawFirmNo) && a.RelatedType == LawyerRelatedDefinition.LegalContract)
- .Select(a => a.CaseInfo).Distinct();
- }
- /// <summary>
- /// 查询律师的合同
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryLawyerContract(string lawyerNo = null)
- {
- if (lawyerNo == null)
- {
- CheckLawyerAccount();
- lawyerNo = AbpSession.AccountNo;
- }
- var isLawFirmMaster = IsLawFirmMaster(lawyerNo);
- var lawFirmNo = QueryLawFirmNoByLawyer(lawyerNo);
- return LawyerRelatedRepository.GetAllIncluding(a => a.ContractInfo,a=>a.ContractInfo.CaseInfo,a=>a.ContractInfo.CaseInfo.CompanyInfo).Where(a =>
- (a.LawyerNo == lawyerNo || isLawFirmMaster && a.LawFirmNo == lawFirmNo) && a.RelatedType == LawyerRelatedDefinition.LegalContract)
- .Select(a => a.ContractInfo).Distinct();
- }
- /// <summary>
- /// 查询律所项目的合同
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryLawFirmContractByCase(string caseNo)
- {
- CheckLawyerAccount();
- return LawyerRelatedRepository.GetAllIncluding(a => a.ContractInfo).Where(a =>
- (a.CaseNo == caseNo) && a.RelatedType == LawyerRelatedDefinition.LegalContract)
- .Select(a => a.ContractInfo).Distinct();
- }
- public IQueryable<LegalContractInfo> QueryContractByHasLawFirm(IQueryable<LegalContractInfo> query,
- string hasLawFirm)
- {
- if (hasLawFirm=="1")
- {
- query = from l in query
- join r in LawyerRelatedRepository.GetAll().Where(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.LawFirmContract) on l.Id equals r.ContractNo
- into lr
- from i in lr.DefaultIfEmpty()
- where i.ContractNo != null
- select l;
- }
- else if (hasLawFirm == "0")
- {
- query = from l in query
- join r in LawyerRelatedRepository.GetAll().Where(a =>
- a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.LawFirmContract) on l.Id equals r.ContractNo
- into lr
- from i in lr.DefaultIfEmpty()
- where i.ContractNo == null
- select l;
- }
- return query;
- }
- #endregion
- #region Staff
- public IQueryable<ClientStaffInfoClone> QueryAllStaff()
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo, a => a.StaffInfo.CompanyInfo,
- a => a.StaffInfo.OrganizationInfo).Where(a=>a.RelatedType == StaffRelatedDefinition.Company);
- return QueryCloneStaff(query, true, StaffMasterDefinition.CompanyMaster);
- //return StaffRepository.GetAllIncluding(a => a.CompanyInfo, a => a.OrganizationInfo).Select(a =>
- // new ClientStaffInfoClone()
- // {
- // Id = a.Id,
- // Code = a.Code,
- // Name = a.Name,
- // IdCard = a.IdCard,
- // PhoneNumber = a.PhoneNumber,
- // Birthday = a.Birthday,
- // UserName = a.UserName,
- // CompanyNo = a.CompanyNo,
- // Email = a.Email,
- // OrganizationNo = a.OrganizationNo,
- // CompanyName = a.CompanyInfo.Name,
- // OrganizationName = a.OrganizationInfo.Name,
- // CreationTime = a.CreationTime
- // });
- }
- /// <summary>
- /// 查询企业的所有员工
- /// </summary>
- /// <param name="no"></param>
- /// <param name="withEx"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryCompanyAllStaffs(string no,bool withEx=true)
- {
- var query = (withEx
- ? StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo, a => a.StaffInfo.CompanyInfo,
- a => a.StaffInfo.OrganizationInfo)
- : StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo))
- .Where(a => a.CompanyNo == no && a.RelatedType == StaffRelatedDefinition.Company);
- return QueryCloneStaff(query, withEx, StaffMasterDefinition.CompanyMaster);
- }
- /// <summary>
- /// 查询律所的负责人
- /// </summary>
- /// <param name="companyNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryMasterStaffByCompany(string companyNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.CompanyNo == companyNo && a.RelatedType == StaffRelatedDefinition.Company &&
- a.MasterType == StaffMasterDefinition.CompanyMaster);
- return QueryCloneStaff(query, false, StaffMasterDefinition.CompanyMaster);
- }
- /// <summary>
- /// 查询企业的员工
- /// </summary>
- /// <param name="companyNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryCommonStaffByCompany(string companyNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.CompanyNo == companyNo && a.RelatedType == StaffRelatedDefinition.Company &&
- a.MasterType == StaffMasterDefinition.CommonStaff);
- return QueryCloneStaff(query, true, StaffMasterDefinition.CompanyMaster);
- }
- public IQueryable<ClientStaffInfoClone> QueryCaseStaffs(string caseNo)
- {
- var isMaster = IsCompanyMaster(AbpSession.AccountNo);
- return isMaster ? QueryCaseAllStaffs(caseNo) : QueryCommonStaffByCase(caseNo);
- }
- /// <summary>
- /// 查询项目的全部员工
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryCaseAllStaffs(string caseNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.CaseNo == caseNo && a.RelatedType == StaffRelatedDefinition.LegalCase);
- return QueryCloneStaff(query);
- }
- /// <summary>
- /// 查询项目的负责人
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryMasterStaffByCase(string caseNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.CaseNo == caseNo && a.RelatedType == StaffRelatedDefinition.LegalCase &&
- a.MasterType == StaffMasterDefinition.MasterStaff);
- return QueryCloneStaff(query);
- }
- /// <summary>
- /// 查询项目员工(普通)
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryCommonStaffByCase(string caseNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.CaseNo == caseNo && a.RelatedType == StaffRelatedDefinition.LegalCase &&
- a.MasterType == StaffMasterDefinition.CommonStaff);
- return QueryCloneStaff(query);
- }
- /// <summary>
- /// 查询合同的员工
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryContractStaffs(string contractNo)
- {
- var isMaster = IsCompanyMaster(AbpSession.AccountNo);
- return isMaster ? QueryContractAllStaffs(contractNo) : QueryCommonStaffByContract(contractNo);
- }
- /// <summary>
- /// 查询合同的全部员工
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryContractAllStaffs(string contractNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.ContractNo == contractNo && a.RelatedType == StaffRelatedDefinition.LegalContract);
- return QueryCloneStaff(query);
- }
- /// <summary>
- /// 查询合同的负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryMasterStaffByContract(string contractNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.ContractNo == contractNo && a.RelatedType == StaffRelatedDefinition.LegalContract &&
- a.MasterType == StaffMasterDefinition.MasterStaff);
- return QueryCloneStaff(query);
- }
- /// <summary>
- /// 查询合同律师
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<ClientStaffInfoClone> QueryCommonStaffByContract(string contractNo)
- {
- var query = StaffRelatedRepository.GetAllIncluding(a => a.StaffInfo)
- .Where(a => a.ContractNo == contractNo && a.RelatedType == StaffRelatedDefinition.LegalContract &&
- a.MasterType == StaffMasterDefinition.CommonStaff);
- return QueryCloneStaff(query);
- }
- #endregion
- #region Company
- /// <summary>
- /// 查询公司的项目
- /// </summary>
- /// <param name="companyNo"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseInfo> QueryCaseByCompany(string companyNo)
- {
- return StaffRelatedRepository.GetAllIncluding(a => a.CaseInfo).Where(a => a.CompanyNo == companyNo && a.RelatedType == StaffRelatedDefinition.LegalCase)
- .Select(a => a.CaseInfo).Distinct();
- }
- /// <summary>
- /// 查询公司的合同
- /// </summary>
- /// <param name="companyNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryContractByCompany(string companyNo)
- {
- return StaffRelatedRepository.GetAllIncluding(a => a.ContractInfo).Where(a => a.CompanyNo == companyNo && a.RelatedType == StaffRelatedDefinition.LegalCase)
- .Select(a => a.ContractInfo).Distinct();
- }
- /// <summary>
- /// 查询员工的项目
- /// </summary>
- /// <param name="staffNo"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseInfo> QueryStaffCase(string staffNo=null)
- {
- if (staffNo == null)
- {
- CheckClientAccount();
- staffNo = AbpSession.AccountNo;
- }
- var isMaster = IsCompanyMaster(staffNo, out var companyNo);
- return StaffRelatedRepository.GetAllIncluding(a => a.CaseInfo,a=>a.CaseInfo.CompanyInfo).Where(a =>
- (a.StaffNo == staffNo || isMaster && a.CompanyNo == companyNo) && a.RelatedType == StaffRelatedDefinition.LegalCase)
- .Select(a => a.CaseInfo).Distinct();
- }
- /// <summary>
- /// 查询员工的合同
- /// </summary>
- /// <param name="staffNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryStaffContract(string staffNo=null)
- {
- if (staffNo == null)
- {
- CheckClientAccount();
- staffNo = AbpSession.AccountNo;
- }
- var isMaster = IsCompanyMaster(staffNo, out var companyNo);
- return StaffRelatedRepository
- .GetAllIncluding(a => a.ContractInfo, a => a.ContractInfo.CaseInfo, a => a.ContractInfo.CaseInfo.CompanyInfo).Where(a =>
- (a.StaffNo == staffNo || isMaster && a.CompanyNo == companyNo) &&
- a.RelatedType == StaffRelatedDefinition.LegalContract).Select(a => a.ContractInfo).Distinct();
- //.Select(a => new LegalContractInfoClone()
- //{
- // Id = a.ContractInfo.Id,
- // Code = a.ContractInfo.Code,
- // Name = a.ContractInfo.Name,
- // Tags = a.ContractInfo.Tags,
- // ContractState = a.ContractInfo.ContractState,
- // StartDateTime = a.ContractInfo.StartDateTime,
- // EndDateTime = a.ContractInfo.EndDateTime,
- // StateLastChangeTime = a.ContractInfo.StateLastChangeTime,
- // StateLastChangeCause = a.ContractInfo.StateLastChangeCause,
- // CaseNo = a.ContractInfo.CaseNo,
- // CaseInfo = a.CaseInfo,
- // CaseName = a.CaseInfo.Name,
- // CompanyName = a.CaseInfo.CompanyInfo.Name,
- // CompanyInfo = a.CaseInfo.CompanyInfo
- //}).Distinct();
- }
- /// <summary>
- /// 查询公司项目的合同
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractInfo> QueryCompanyContractByCase(string caseNo)
- {
- CheckLawyerAccount();
- return StaffRelatedRepository.GetAllIncluding(a => a.ContractInfo).Where(a =>
- (a.CaseNo == caseNo) && a.RelatedType == StaffRelatedDefinition.LegalContract)
- .Select(a => a.ContractInfo).Distinct();
- }
- #endregion
- /// <summary>
- /// 查询合同关键点
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public IQueryable<LegalContractKeyPointInfo> QueryKeyPointByContract(string contractNo = null)
- {
- //lawyerNo= lawyerNo??AbpSession.
- //var cNos= LawyerRelatedRepository.GetAll().Where(a => a.LawyerNo == lawyerNo)
- // .Select(a => a.ContractNo);
- return LCkpRepository.GetAll().Where(a => a.ContractNo == contractNo);
- }
- /// <summary>
- /// 查询关键点
- /// </summary>
- /// <returns></returns>
- public IQueryable<LegalContractKeyPointInfo> QueryRunKeyPointByUser()
- {
- var kpQuery = LCkpRepository.GetAll();
- IQueryable<LegalContractInfo> contractQuery;
- if (AbpSession.AccountType == AccountTypeDefinition.Client)
- {
- var staffNo = AbpSession.AccountNo;
- var isMaster = IsCompanyMaster(staffNo, out var companyNo);
- contractQuery = StaffRelatedRepository
- .GetAllIncluding(a => a.ContractInfo, a => a.ContractInfo.CaseInfo).Where(a =>
- (a.StaffNo == staffNo || isMaster && a.CompanyNo == companyNo) &&
- a.RelatedType == StaffRelatedDefinition.LegalContract &&
- a.ContractInfo.ContractState == LegalContractStateDefinition.Running &&
- a.ContractInfo.CaseInfo.CaseState == LegalCaseStateDefinition.Running)
- .Select(a => a.ContractInfo).Distinct();
- }
- else if (AbpSession.AccountType == AccountTypeDefinition.Lawyer)
- {
- var lawyerNo = AbpSession.AccountNo;
- var isMaster = IsLawFirmMaster(lawyerNo);
- var lawFirmNo = QueryLawFirmNoByLawyer(lawyerNo);
- contractQuery = LawyerRelatedRepository
- .GetAllIncluding(a => a.ContractInfo, a => a.ContractInfo.CaseInfo).Where(a =>
- (a.LawyerNo == lawyerNo || isMaster && a.LawFirmNo == lawFirmNo) &&
- a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.ContractInfo.ContractState == LegalContractStateDefinition.Running &&
- a.ContractInfo.CaseInfo.CaseState == LegalCaseStateDefinition.Running)
- .Select(a => a.ContractInfo).Distinct();
- }
- else
- {
- contractQuery = null;
- }
- if (contractQuery != null)
- {
- kpQuery = from kp in kpQuery
- join cq in contractQuery on kp.ContractNo equals cq.Id
- where kp.KeyPointState == LegalKeyPointStateDefinition.Run
- select kp;
- }
- else
- {
- kpQuery = kpQuery.Where(a => false);
- }
- return kpQuery;
- }
- /// <summary>
- /// 查询项目备注
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="withCase"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseNoteInfo> QueryCaseNoteInfos(string caseNo,bool withCase=false)
- {
- return (withCase
- ? LSnRepository.GetAllIncluding(a => a.CaseInfo, a => a.CreatorUser)
- : LSnRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.CaseNo == caseNo).Distinct();
- }
- /// <summary>
- /// 查询项目备注
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="withCase"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseNoteInfo> QueryLawyerCaseNoteInfos(string caseNo, bool withCase = false)
- {
- return (withCase
- ? LSnRepository.GetAllIncluding(a => a.CaseInfo, a => a.CreatorUser)
- : LSnRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.CaseNo == caseNo && a.NoteType != NoteTypeDefinition.Note).Distinct();
- }
- /// <summary>
- /// 查询项目备注
- /// </summary>
- /// <param name="caseNo"></param>
- /// <param name="withCase"></param>
- /// <returns></returns>
- public IQueryable<LegalCaseNoteInfo> QueryStaffCaseNoteInfos(string caseNo,bool withCase=false)
- {
- return (withCase
- ? LSnRepository.GetAllIncluding(a => a.CaseInfo, a => a.CreatorUser)
- : LSnRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.CaseNo == caseNo && a.NoteType != NoteTypeDefinition.LawyerNote).Distinct();
- }
-
- /// <summary>
- /// 查询合同备注
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="withContract"></param>
- /// <returns></returns>
- public IQueryable<LegalContractNoteInfo> QueryContractNoteInfos(string contractNo,bool withContract=false)
- {
- return (withContract
- ? LCnRepository.GetAllIncluding(a => a.ContractInfo, a => a.CreatorUser,a=>a.KeyPointInfo)
- : LCnRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.ContractNo == contractNo).Distinct();
- }
- /// <summary>
- /// 查询员工合同备注
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="withContract"></param>
- /// <returns></returns>
- public IQueryable<LegalContractNoteInfo> QueryStaffContractNoteInfos(string contractNo,bool withContract=false)
- {
- return (withContract
- ? LCnRepository.GetAllIncluding(a => a.ContractInfo, a => a.CreatorUser,a=>a.KeyPointInfo)
- : LCnRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.ContractNo == contractNo && a.NoteType != NoteTypeDefinition.LawyerNote).Distinct();
- }
- /// <summary>
- /// 查询律师合同备注
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="withContract"></param>
- /// <returns></returns>
- public IQueryable<LegalContractNoteInfo> QueryLawyerContractNoteInfos(string contractNo,bool withContract=false)
- {
- return (withContract
- ? LCnRepository.GetAllIncluding(a => a.ContractInfo, a => a.CreatorUser,a=>a.KeyPointInfo)
- : LCnRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.ContractNo == contractNo && a.NoteType != NoteTypeDefinition.Note).Distinct();
- }
- /// <summary>
- /// 查询补充合同
- /// </summary>
- /// <param name="contractNo"></param>
- /// <param name="withContract"></param>
- /// <returns></returns>
- public IQueryable<LegalContractSupplementInfo> QueryContractSupplementInfos(string contractNo,bool withContract=false)
- {
- return (withContract
- ? LCsRepository.GetAllIncluding(a => a.ContractInfo, a => a.CreatorUser)
- : LCsRepository.GetAllIncluding(a => a.CreatorUser)).Where(a =>
- a.ContractNo == contractNo).Distinct();
- }
- private IQueryable<ClientStaffInfoClone> QueryCloneStaff(IQueryable<StaffRelatedInfo> query, bool withEx = true,int masterType = StaffMasterDefinition.MasterStaff)
- {
- if (withEx)
- {
- return query.Select(a => new ClientStaffInfoClone()
- {
- Id = a.StaffInfo.Id,
- Code = a.StaffInfo.Code,
- Name = a.StaffInfo.Name,
- IdCard = a.StaffInfo.IdCard,
- PhoneNumber = a.StaffInfo.PhoneNumber,
- Birthday = a.StaffInfo.Birthday,
- UserName = a.StaffInfo.UserName,
- Email = a.StaffInfo.Email,
- CompanyNo = a.CompanyNo,
- OrganizationNo = a.StaffInfo.OrganizationNo,
- CompanyName = a.StaffInfo.CompanyInfo.Name,
- OrganizationName = a.StaffInfo.OrganizationInfo.Name,
- IsMaster = a.MasterType == masterType,
- CreationTime = a.StaffInfo.CreationTime
- }).Distinct();
- }
- return query.Select(a => new ClientStaffInfoClone()
- {
- Id = a.StaffInfo.Id,
- Code = a.StaffInfo.Code,
- Name = a.StaffInfo.Name,
- IdCard = a.StaffInfo.IdCard,
- PhoneNumber = a.StaffInfo.PhoneNumber,
- Birthday = a.StaffInfo.Birthday,
- UserName = a.StaffInfo.UserName,
- Email = a.StaffInfo.Email,
- CompanyNo = a.CompanyNo,
- OrganizationNo = a.StaffInfo.OrganizationNo,
- IsMaster = a.MasterType == masterType,
- CreationTime = a.StaffInfo.CreationTime
- }).Distinct();
- }
- #endregion
- /// <summary>
- /// 查询律师
- /// </summary>
- /// <param name="userName"></param>
- /// <returns></returns>
- public async Task<LawyerInfo> QueryLawyerByUserNameAsync(string userName)
- {
- var lawyer = await CacheManager.GetCache(IwbCacheNames.QueryLawyerInfo)
- .GetAsync($"{userName}", () => LawyerRepository.FirstOrDefaultAsync(a => a.UserName == userName));
- return lawyer;
- }
- /// <summary>
- /// 查询律师
- /// </summary>
- /// <param name="userName"></param>
- /// <returns></returns>
- public LawyerInfo QueryLawyerByUserName(string userName)
- {
- return CacheManager.GetCache(IwbCacheNames.QueryLawyerInfo)
- .Get($"{userName}", () => LawyerRepository.FirstOrDefault(a => a.UserName == userName));
- }
- /// <summary>
- /// 查询员工
- /// </summary>
- /// <param name="userName"></param>
- /// <returns></returns>
- public Task<ClientStaffInfo> QueryStaffByUserNameAsync(string userName)
- {
- return CacheManager.GetCache(IwbCacheNames.QueryStaffInfo)
- .GetAsync($"{userName}", () => StaffRepository.FirstOrDefaultAsync(a => a.UserName == userName));
- }
- /// <summary>
- /// 查询员工
- /// </summary>
- /// <param name="userName"></param>
- /// <returns></returns>
- public ClientStaffInfo QueryStaffByUserName(string userName)
- {
- return CacheManager.GetCache(IwbCacheNames.QueryStaffInfo)
- .Get($"{userName}", () => StaffRepository.FirstOrDefault(a => a.UserName == userName));
- }
- ///// <summary>
- ///// 查询项目所在律所
- ///// </summary>
- ///// <param name="no"></param>
- ///// <returns></returns>
- //private async Task<string> QueryLawFirmNoByCase(string no)
- //{
- // return await CacheManager.GetCache(IwbCacheNames.QueryLawFirmNo).GetAsync(no, async () =>
- // {
- // var legalCase = await LsRepository.FirstOrDefaultAsync(a => a.Id == no);
- // return legalCase?.CompanyNo;
- // });
- //}
- ///// <summary>
- ///// 查询合同所在律所
- ///// </summary>
- ///// <param name="no"></param>
- ///// <returns></returns>
- //private async Task<string> QueryLawFirmNoByContract(string no)
- //{
- // return await CacheManager.GetCache(IwbCacheNames.QueryLawFirmNo).GetAsync(no, async () =>
- // {
- // var contract = await LcRepository.GetAllIncluding(a => a.CaseInfo).FirstOrDefaultAsync(a => a.Id == no);
- // return contract?.CaseInfo?.CompanyNo;
- // });
- //}
- /// <summary>
- /// 查询项目所在公司
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- private async Task<string> QueryCompanyNoByCase(string no)
- {
- return await CacheManager.GetCache(IwbCacheNames.QueryCompanyNo).GetAsync(no, async () =>
- {
- var service = await LsRepository.FirstOrDefaultAsync(a => a.Id == no);
- return service?.CompanyNo;
- });
- }
- /// <summary>
- /// 查询合同所在公司
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- private async Task<string> QueryCompanyNoByContract(string no)
- {
- return await CacheManager.GetCache(IwbCacheNames.QueryCompanyNo).GetAsync(no, async () =>
- {
- var contract = await LcRepository.GetAllIncluding(a => a.CaseInfo).FirstOrDefaultAsync(a => a.Id == no);
- return contract?.CaseInfo?.CompanyNo;
- });
- }
- /// <summary>
- /// 查询合同所在项目
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- public async Task<string> QueryCaseNoByContract(string no)
- {
- return await CacheManager.GetCache(IwbCacheNames.QueryCaseNo).GetAsync(no, async () =>
- {
- var contract = await LcRepository.FirstOrDefaultAsync(a => a.Id == no);
- return contract?.CaseNo;
- });
- }
- /// <summary>
- /// 查询律师所在律所
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- public async Task<string> QueryLawFirmNoByLawyerAsync(string no)
- {
- return await CacheManager.GetCache(IwbCacheNames.QueryLawFirmNo).GetAsync($"lawyer-{no}", async () => (await LawyerRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == LawyerRelatedDefinition.LawFirm && a.LawyerNo == no))?.LawFirmNo);
- }
- /// <summary>
- /// 查询律师所在律所
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- public string QueryLawFirmNoByLawyer(string no)
- {
- return CacheManager.GetCache(IwbCacheNames.QueryLawFirmNo).Get($"lawyer-{no}", () =>
- LawyerRelatedRepository.FirstOrDefault(a =>
- a.RelatedType == LawyerRelatedDefinition.LawFirm && a.LawyerNo == no)?.LawFirmNo);
- }
- /// <summary>
- /// 查询员工所在公司
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- public async Task<string> QueryCompanyNoByStaffAsync(string no)
- {
- return await CacheManager.GetCache(IwbCacheNames.QueryCompanyNo).GetAsync($"staff-{no}",async () =>
- (await StaffRelatedRepository.FirstOrDefaultAsync(a =>
- a.RelatedType == StaffRelatedDefinition.Company && a.StaffNo == no))?.ContractNo);
- }
- /// <summary>
- /// 查询员工所在公司
- /// </summary>
- /// <param name="no"></param>
- /// <returns></returns>
- public string QueryCompanyNoByStaff(string no)
- {
- return CacheManager.GetCache(IwbCacheNames.QueryCompanyNo).Get($"staff-{no}", () =>
- StaffRelatedRepository.FirstOrDefault(a =>
- a.RelatedType == StaffRelatedDefinition.Company && a.StaffNo == no)?.ContractNo);
- }
- #endregion
- #region 账号检验 是否是负责人 Check IsMaster
- /// <summary>
- /// 是否是律所负责人
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <returns></returns>
- public bool IsLawFirmMaster(string lawyerNo)
- {
- return LawyerRelatedRepository.FirstOrDefault(a =>
- a.LawyerNo == lawyerNo && a.RelatedType == LawyerRelatedDefinition.LawFirm &&
- a.MasterType == LawyerMasterDefinition.LawFirmMaster)!=null;
- }
- /// <summary>
- /// 是否是合同负责律师
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public bool IsLawyerContractMaster(string contractNo)
- {
- return IsLawFirmMaster(AbpSession.AccountNo) || IsLawyerContractMaster(AbpSession.AccountNo, contractNo);
- }
- ///// <summary>
- ///// 是否是项目负责人
- ///// </summary>
- ///// <param name="lawyerNo"></param>
- ///// <param name="caseNo"></param>
- ///// <returns></returns>
- //private bool IsLawFirmCaseMaster(string lawyerNo, string caseNo)
- //{
- // CheckLawyerAccount();
- // return LawyerRelatedRepository.FirstOrDefault(a =>
- // a.LawyerNo == lawyerNo && a.CaseNo == caseNo &&
- // a.RelatedType == LawyerRelatedDefinition.LegalCase &&
- // a.MasterType == LawyerMasterDefinition.MasterLawyer) != null;
- //}
- /// <summary>
- /// 是否是合同负责律师
- /// </summary>
- /// <param name="lawyerNo"></param>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- private bool IsLawyerContractMaster(string lawyerNo, string contractNo)
- {
- return LawyerRelatedRepository.FirstOrDefault(a =>
- a.LawyerNo == lawyerNo && a.ContractNo == contractNo &&
- a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.MasterLawyer) != null;
- }
- /// <summary>
- /// 是否是企业负责人
- /// </summary>
- /// <param name="staffNo"></param>
- /// <param name="no"></param>
- /// <returns></returns>
- public bool IsCompanyMaster(string staffNo,out string no)
- {
- no = StaffRelatedRepository.FirstOrDefault(a =>
- a.StaffNo == staffNo && a.RelatedType == StaffRelatedDefinition.Company &&
- a.MasterType == StaffMasterDefinition.CompanyMaster)?.CompanyNo;
- return !string.IsNullOrEmpty(no);
- }
- /// <summary>
- /// 是否是企业负责人
- /// </summary>
- /// <param name="staffNo"></param>
- /// <returns></returns>
- public bool IsCompanyMaster(string staffNo)
- {
- string no = StaffRelatedRepository.FirstOrDefault(a =>
- a.StaffNo == staffNo && a.RelatedType == StaffRelatedDefinition.Company &&
- a.MasterType == StaffMasterDefinition.CompanyMaster)?.CompanyNo;
- return !string.IsNullOrEmpty(no);
- }
- /// <summary>
- /// 是否是公司负责人
- /// </summary>
- /// <returns></returns>
- public Task<bool> IsCompanyMaster()
- {
- var result = AbpSession.AccountType == AccountTypeDefinition.Client &&
- (IsCompanyMaster(AbpSession.AccountNo) );
- return Task.FromResult(result);
- }
- /// <summary>
- /// 是否是项目负责人
- /// </summary>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- public Task<bool> IsClientCaseMaster(string caseNo)
- {
- var result = AbpSession.AccountType == AccountTypeDefinition.Client &&
- (IsCompanyMaster(AbpSession.AccountNo) ||
- IsClientCaseMaster(AbpSession.AccountNo, caseNo));
- return Task.FromResult(result);
- }
- /// <summary>
- /// 是否是项目负责人
- /// </summary>
- /// <param name="staffNo"></param>
- /// <param name="caseNo"></param>
- /// <returns></returns>
- private bool IsClientCaseMaster(string staffNo, string caseNo)
- {
- return StaffRelatedRepository.FirstOrDefault(a =>
- a.StaffNo == staffNo && a.CaseNo == caseNo &&
- a.RelatedType == StaffRelatedDefinition.LegalCase &&
- a.MasterType == StaffMasterDefinition.MasterStaff) != null;
- }
- /// <summary>
- /// 是否是合同负责人
- /// </summary>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- public async Task<bool> IsClientContractMaster(string contractNo)
- {
- return AbpSession.AccountType == AccountTypeDefinition.Client &&
- (IsCompanyMaster(AbpSession.AccountNo) || IsClientContractMaster(AbpSession.AccountNo, contractNo) ||
- IsClientCaseMaster(AbpSession.AccountNo,await QueryCaseNoByContract(contractNo)));
- }
- /// <summary>
- /// 是否是合同负责人
- /// </summary>
- /// <param name="staffNo"></param>
- /// <param name="contractNo"></param>
- /// <returns></returns>
- private bool IsClientContractMaster(string staffNo, string contractNo)
- {
- return StaffRelatedRepository.FirstOrDefault(a =>
- a.StaffNo == staffNo && a.ContractNo == contractNo &&
- a.RelatedType == StaffRelatedDefinition.LegalContract &&
- a.MasterType == StaffMasterDefinition.MasterStaff) != null;
- }
- /// <summary>
- /// 检查是否是系统用户
- /// </summary>
- private void CheckSysAccount()
- {
- CheckAccount(AccountTypeDefinition.System);
- }
- /// <summary>
- /// 检查是否是律师用户
- /// </summary>
- private void CheckLawyerAccount()
- {
- CheckAccount(AccountTypeDefinition.Lawyer);
- }
- /// <summary>
- /// 检查是否是客户用户
- /// </summary>
- private void CheckClientAccount()
- {
- CheckAccount(AccountTypeDefinition.Client);
- }
- /// <summary>
- /// 检查是否是系统用户
- /// </summary>
- public bool CheckAccount(params int[] accountTypes)
- {
- if (AbpSession.UserName == UserBase.AdminUserName)
- {
- return true;
- }
- if (AbpSession.AccountType != null && accountTypes.ToList().Contains((int)AbpSession.AccountType) )
- {
- return true;
- }
- CheckError("非法账号,不能操作");
- return false;
- }
- #endregion
- private void CheckError(string msg)
- {
- throw new UserFriendlyException(msg);
- }
- protected virtual void CheckError(IdentityResult identityResult)
- {
- identityResult.CheckErrors(LocalizationManager);
- }
- public async Task<string> GetCacheNameAsync(string no)
- {
- return await CacheManager.GetCache(IwbCacheNames.EntityCacheName).GetAsync(no,
- async () =>
- {
- var type = AppGuidManager.GetRecordIdType(no);
- switch (type)
- {
- case DataLibType.LegalCase:
- return (await LsRepository.FirstOrDefaultAsync(a => a.Id == no))?.Name;
- case DataLibType.LegalContract:
- return (await LcRepository.FirstOrDefaultAsync(a => a.Id == no))?.Name;
- case DataLibType.LegalContractKeyPoint:
- return (await LCkpRepository.FirstOrDefaultAsync(a => a.Id == no))?.Name;
- case DataLibType.Company:
- return (await CcRepository.FirstOrDefaultAsync(a => a.Id == no))?.Name;
- case DataLibType.LawFirm:
- return (await LfRepository.FirstOrDefaultAsync(a => a.Id == no))?.Name;
- default:
- return "";
- }
- });
- }
- public string GetCacheName(string no)
- {
- return CacheManager.GetCache(IwbCacheNames.EntityCacheName).Get(no,
- () =>
- {
- var type = AppGuidManager.GetRecordIdType(no);
- switch (type)
- {
- case DataLibType.LegalCase:
- return (LsRepository.FirstOrDefault(a => a.Id == no))?.Name;
- case DataLibType.LegalContract:
- return (LcRepository.FirstOrDefault(a => a.Id == no))?.Name;
- case DataLibType.LegalContractKeyPoint:
- return (LCkpRepository.FirstOrDefault(a => a.Id == no))?.Name;
- case DataLibType.Company:
- return (CcRepository.FirstOrDefault(a => a.Id == no))?.Name;
- case DataLibType.LawFirm:
- return (LfRepository.FirstOrDefault(a => a.Id == no))?.Name;
- default:
- return "";
- }
- });
- }
- public string GetCompanyNameByCase(string no)
- {
- return CacheManager.GetCache(IwbCacheNames.EntityCacheName).Get($"CaseCompany-{no}",
- () =>
- {
- var legalCase = LsRepository.FirstOrDefault(a => a.Id == no);
- return legalCase == null ? null : GetCacheName(legalCase.CompanyNo);
- });
- }
- public string GetLawFirmNameByContract(string no)
- {
- return CacheManager.GetCache(IwbCacheNames.EntityCacheName).Get($"ContractLawFirm-{no}",
- () =>
- {
- var lawFirm = LawyerRelatedRepository.FirstOrDefault(a =>
- a.ContractNo == no && a.RelatedType == LawyerRelatedDefinition.LegalContract &&
- a.MasterType == LawyerMasterDefinition.LawFirmContract);
- return lawFirm == null ? null : GetCacheName(lawFirm.LawFirmNo);
- });
- }
- private async Task SetCacheName(string no,string name)
- {
- await CacheManager.GetCache(IwbCacheNames.EntityCacheName).SetAsync(no,name);
- }
- }
- public enum ServiceType
- {
- Case,
- Contract,
- ContractNote,
- ContractSupplement,
- KeyPoint,
- }
- }
|