From e479795f8fa4b527d5435ab7bea48f09ef310225 Mon Sep 17 00:00:00 2001 From: Chunkit Yeung Date: Sat, 28 Jan 2023 21:18:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1=E3=80=81=E6=9B=B4=E6=96=B0V2.0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E3=80=82=202=E3=80=81=E7=A7=BB=E9=99=A4=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=80=BB=E8=BE=91=E5=B1=82=EF=BC=8C=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E8=B0=83=E7=94=A8WebApi=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...=> EOM.Client.TopSkyHotelManagerSystem.sln | 10 +- SYS.Application/.gitignore | 365 - SYS.Application/Business/Cash/CashService.cs | 75 - SYS.Application/Business/Cash/ICashService.cs | 47 - .../Business/Customer/CustoService.cs | 254 - .../Business/Customer/ICustoService.cs | 85 - .../Business/Fonts/FontsService.cs | 51 - .../Business/Fonts/IFontsService.cs | 40 - .../Business/Reser/IReserService.cs | 64 - .../Business/Reser/ReserService.cs | 101 - SYS.Application/Business/Room/IRoomService.cs | 206 - .../Business/Room/IRoomTypeService.cs | 51 - SYS.Application/Business/Room/RoomService.cs | 391 - .../Business/Room/RoomTypeService.cs | 65 - .../Business/Sellthing/ISellService.cs | 97 - .../Business/Sellthing/SellService.cs | 180 - .../Business/Spend/ISpendService.cs | 124 - .../Business/Spend/SpendService.cs | 249 - SYS.Application/Business/Wti/IWtiService.cs | 117 - SYS.Application/Business/Wti/WtiService.cs | 188 - SYS.Application/Properties/AssemblyInfo.cs | 36 - SYS.Application/SYS.Application.csproj | 158 - SYS.Application/Worker/IWorkerCheckService.cs | 64 - .../Worker/IWorkerGoodBadService.cs | 48 - .../Worker/IWorkerHistoryService.cs | 48 - SYS.Application/Worker/IWorkerPicService.cs | 40 - SYS.Application/Worker/IWorkerService.cs | 102 - SYS.Application/Worker/WorkerCheckService.cs | 89 - .../Worker/WorkerGoodBadService.cs | 77 - .../Worker/WorkerHistoryService.cs | 59 - SYS.Application/Worker/WorkerPicService.cs | 75 - SYS.Application/Worker/WorkerService.cs | 276 - .../Zero/AdminModuleZeroService.cs | 138 - SYS.Application/Zero/AdminService.cs | 183 - SYS.Application/Zero/BaseService.cs | 685 - SYS.Application/Zero/CheckInfoService.cs | 49 - .../Zero/IAdminModuleZeroService.cs | 43 - SYS.Application/Zero/IAdminService.cs | 100 - SYS.Application/Zero/IBaseService.cs | 369 - SYS.Application/Zero/INoticeService.cs | 53 - SYS.Application/Zero/NoticeService.cs | 97 - SYS.Application/Zero/OperationService.cs | 23 - SYS.Application/Zero/Operationlog.cs | 30 - .../Zero/VipRule/IVipRuleAppService.cs | 73 - .../Zero/VipRule/VipRuleAppService.cs | 109 - SYS.Application/app.config | 23 - SYS.Application/bitbug_favicon (1).ico | Bin 16958 -> 0 bytes SYS.Application/packages.config | 11 - ...0\345\205\250\345\271\263\345\217\260).md" | 122 - SYS.Common/{RecordHelper => }/AdminInfo.cs | 2 +- SYS.Common/{RecordHelper => }/LoginInfo.cs | 2 +- SYS.Common/{RecordHelper => }/OperationLog.cs | 17 +- SYS.Common/{RecordHelper => }/RecordHelper.cs | 10 +- .../RecordHelper/IOperationlogService.cs | 46 - .../RecordHelper/OperationlogService.cs | 65 - SYS.Common/Repository/MysqlRepository.cs | 33 - SYS.Common/Repository/Repository.cs | 43 - SYS.Common/ResponseMsg.cs | 20 + SYS.Common/SYS.Common.csproj | 35 +- SYS.Common/Util/Util.cs | 132 + SYS.Common/packages.config | 7 +- SYS.Core/App.config | 4 + SYS.Core/Business/Cash/Cash.cs | 2 +- SYS.Core/Business/Customer/Custo.cs | 8 +- SYS.Core/Business/Customer/CustoType.cs | 4 +- .../Business/Customer/OSelectCustoAllDto.cs | 20 +- SYS.Core/Business/Customer/PassPortType.cs | 4 +- SYS.Core/Business/Customer/SexType.cs | 4 +- SYS.Core/Business/Reser/Reser.cs | 8 +- SYS.Core/Business/Room/Room.cs | 4 +- SYS.Core/Business/Room/RoomState.cs | 4 +- SYS.Core/Business/Room/RoomType.cs | 4 +- SYS.Core/Business/Sellthing/SellThing.cs | 4 +- SYS.Core/Business/Spend/Spend.cs | 6 +- SYS.Core/Business/Wti/Wti.cs | 8 +- SYS.Core/SYS.Core.csproj | 12 +- SYS.Core/Sys/NavBar/NavBar.cs | 4 +- .../Util/ApplicationVersion.cs | 25 +- SYS.Core/Util/ApplicationVersionUtil.cs | 65 - SYS.Core/Util/{IDCardUtil.cs => Cardcodes.cs} | 62 +- SYS.Core/Util/CounterHelper.cs | 145 - SYS.Core/Util/CounterRuleConsts.cs | 69 - SYS.Core/Worker/Worker.cs | 4 +- SYS.Core/Worker/WorkerCheck.cs | 6 +- SYS.Core/Worker/WorkerGoodBad.cs | 6 +- SYS.Core/Worker/WorkerHistory.cs | 8 +- SYS.Core/Zero/AdminType.cs | 4 +- SYS.Core/Zero/CheckInfo.cs | 4 +- SYS.Core/Zero/Dept.cs | 6 +- SYS.Core/Zero/Education.cs | 4 +- SYS.Core/Zero/Module.cs | 4 +- SYS.Core/Zero/Notice.cs | 6 +- SYS.Core/Zero/VipRule.cs | 4 +- SYS.Core/Zero/position.cs | 4 +- SYS.Core/packages.config | 1 - SYS.FormUI/App.config | 2 +- SYS.FormUI/AppFunction/FrmAddAdmin.cs | 35 +- SYS.FormUI/AppFunction/FrmAddRoom.cs | 57 +- .../AppFunction/FrmAddWorker.Designer.cs | 4 - SYS.FormUI/AppFunction/FrmAddWorker.cs | 221 +- SYS.FormUI/AppFunction/FrmAdminManager.cs | 24 +- SYS.FormUI/AppFunction/FrmAuthority.cs | 83 +- SYS.FormUI/AppFunction/FrmCash.cs | 53 +- SYS.FormUI/AppFunction/FrmChangeAdminPwd.cs | 24 +- SYS.FormUI/AppFunction/FrmChangePosition.cs | 38 +- SYS.FormUI/AppFunction/FrmChangeRoom.cs | 107 +- SYS.FormUI/AppFunction/FrmChangeWorker.cs | 19 +- SYS.FormUI/AppFunction/FrmChart.cs | 11 +- SYS.FormUI/AppFunction/FrmCheckIn.cs | 91 +- SYS.FormUI/AppFunction/FrmCheckList.cs | 12 +- SYS.FormUI/AppFunction/FrmCheckOutForm.cs | 187 +- .../AppFunction/FrmCustoManager.Designer.cs | 64 +- SYS.FormUI/AppFunction/FrmCustoManager.cs | 88 +- SYS.FormUI/AppFunction/FrmCustoManager.resx | 3 + SYS.FormUI/AppFunction/FrmCustoSpend.cs | 11 +- .../FrmCustomerManager.Designer.cs | 90 +- SYS.FormUI/AppFunction/FrmCustomerManager.cs | 90 +- .../AppFunction/FrmCustomerManager.resx | 3 + SYS.FormUI/AppFunction/FrmDepartment.cs | 64 +- SYS.FormUI/AppFunction/FrmEditInputs.cs | 105 +- .../AppFunction/FrmEducation.Designer.cs | 342 +- SYS.FormUI/AppFunction/FrmEducation.cs | 179 +- SYS.FormUI/AppFunction/FrmEducation.resx | 21 + SYS.FormUI/AppFunction/FrmGoodOrBad.cs | 50 +- SYS.FormUI/AppFunction/FrmMySpace.cs | 123 +- SYS.FormUI/AppFunction/FrmNation.Designer.cs | 340 +- SYS.FormUI/AppFunction/FrmNation.cs | 179 +- SYS.FormUI/AppFunction/FrmNation.resx | 21 + SYS.FormUI/AppFunction/FrmNotice.cs | 24 +- SYS.FormUI/AppFunction/FrmOperation.cs | 13 +- .../AppFunction/FrmPosition.Designer.cs | 339 +- SYS.FormUI/AppFunction/FrmPosition.cs | 177 +- SYS.FormUI/AppFunction/FrmPosition.resx | 21 + .../AppFunction/FrmReserList.Designer.cs | 2 +- SYS.FormUI/AppFunction/FrmReserList.cs | 132 +- SYS.FormUI/AppFunction/FrmReserManager.cs | 41 +- SYS.FormUI/AppFunction/FrmRoomManager.cs | 106 +- SYS.FormUI/AppFunction/FrmRoomMap.cs | 10 +- SYS.FormUI/AppFunction/FrmRoomStateManager.cs | 26 +- SYS.FormUI/AppFunction/FrmSelectCustoInfo.cs | 42 +- SYS.FormUI/AppFunction/FrmSellThing.cs | 193 +- SYS.FormUI/AppFunction/FrmSellThingManager.cs | 90 +- SYS.FormUI/AppFunction/FrmUnLockSystem.cs | 18 +- SYS.FormUI/AppFunction/FrmUpLoadNotice.cs | 42 +- SYS.FormUI/AppFunction/FrmVipRule.cs | 33 +- SYS.FormUI/AppFunction/FrmWorkerCheckInfo.cs | 20 +- SYS.FormUI/AppFunction/FrmWorkerManager.cs | 12 +- SYS.FormUI/AppFunction/FrmWtiInfo.cs | 23 +- SYS.FormUI/AppInterface/FrmAdminEnter.cs | 16 +- SYS.FormUI/AppInterface/FrmLoading.cs | 11 +- SYS.FormUI/AppInterface/FrmLogin.Designer.cs | 2 + SYS.FormUI/AppInterface/FrmLogin.cs | 21 +- SYS.FormUI/AppMain/FrmBackgroundSystem.cs | 16 +- SYS.FormUI/AppMain/FrmMain.cs | 156 +- .../ucBaseInformation.Designer.cs | 113 - .../AppUserControls/ucBaseInformation.cs | 111 - .../AppUserControls/ucBaseInformation.resx | 141 - .../ucEducationInformation.Designer.cs | 113 - .../AppUserControls/ucEducationInformation.cs | 112 - .../ucEducationInformation.resx | 141 - .../ucPositionInformation.Designer.cs | 113 - .../AppUserControls/ucPositionInformation.cs | 120 - .../ucPositionInformation.resx | 141 - SYS.FormUI/AppUserControls/ucRoom.cs | 40 +- SYS.FormUI/AppUserControls/ucRoomList.cs | 37 +- SYS.FormUI/Font/UI-FontUtil.cs | 55 - SYS.FormUI/Properties/AssemblyInfo.cs | 4 +- SYS.FormUI/Properties/Resources.Designer.cs | 10 + SYS.FormUI/Properties/Resources.resx | 99 +- SYS.FormUI/SYS.FormUI.csproj | 57 +- SYS.FormUI/packages.config | 3 +- SYS.Library/MySql.Data.EntityFramework.dll | Bin 301056 -> 0 bytes SYS.Library/MySql.Data.dll | Bin 1734656 -> 0 bytes SYS.Library/MySql.Web.dll | Bin 162304 -> 0 bytes SYS.Library/Newtonsoft.Json.dll | Bin 701992 -> 0 bytes SYS.Library/Newtonsoft.Json.xml | 11305 ---------------- SYS.Library/RequestHelper.dll | Bin 9728 -> 0 bytes SYS.Library/SYS.Library.csproj | 6 - 178 files changed, 3600 insertions(+), 20327 deletions(-) rename TSHotelManagerSystem.sln => EOM.Client.TopSkyHotelManagerSystem.sln (81%) delete mode 100644 SYS.Application/.gitignore delete mode 100644 SYS.Application/Business/Cash/CashService.cs delete mode 100644 SYS.Application/Business/Cash/ICashService.cs delete mode 100644 SYS.Application/Business/Customer/CustoService.cs delete mode 100644 SYS.Application/Business/Customer/ICustoService.cs delete mode 100644 SYS.Application/Business/Fonts/FontsService.cs delete mode 100644 SYS.Application/Business/Fonts/IFontsService.cs delete mode 100644 SYS.Application/Business/Reser/IReserService.cs delete mode 100644 SYS.Application/Business/Reser/ReserService.cs delete mode 100644 SYS.Application/Business/Room/IRoomService.cs delete mode 100644 SYS.Application/Business/Room/IRoomTypeService.cs delete mode 100644 SYS.Application/Business/Room/RoomService.cs delete mode 100644 SYS.Application/Business/Room/RoomTypeService.cs delete mode 100644 SYS.Application/Business/Sellthing/ISellService.cs delete mode 100644 SYS.Application/Business/Sellthing/SellService.cs delete mode 100644 SYS.Application/Business/Spend/ISpendService.cs delete mode 100644 SYS.Application/Business/Spend/SpendService.cs delete mode 100644 SYS.Application/Business/Wti/IWtiService.cs delete mode 100644 SYS.Application/Business/Wti/WtiService.cs delete mode 100644 SYS.Application/Properties/AssemblyInfo.cs delete mode 100644 SYS.Application/SYS.Application.csproj delete mode 100644 SYS.Application/Worker/IWorkerCheckService.cs delete mode 100644 SYS.Application/Worker/IWorkerGoodBadService.cs delete mode 100644 SYS.Application/Worker/IWorkerHistoryService.cs delete mode 100644 SYS.Application/Worker/IWorkerPicService.cs delete mode 100644 SYS.Application/Worker/IWorkerService.cs delete mode 100644 SYS.Application/Worker/WorkerCheckService.cs delete mode 100644 SYS.Application/Worker/WorkerGoodBadService.cs delete mode 100644 SYS.Application/Worker/WorkerHistoryService.cs delete mode 100644 SYS.Application/Worker/WorkerPicService.cs delete mode 100644 SYS.Application/Worker/WorkerService.cs delete mode 100644 SYS.Application/Zero/AdminModuleZeroService.cs delete mode 100644 SYS.Application/Zero/AdminService.cs delete mode 100644 SYS.Application/Zero/BaseService.cs delete mode 100644 SYS.Application/Zero/CheckInfoService.cs delete mode 100644 SYS.Application/Zero/IAdminModuleZeroService.cs delete mode 100644 SYS.Application/Zero/IAdminService.cs delete mode 100644 SYS.Application/Zero/IBaseService.cs delete mode 100644 SYS.Application/Zero/INoticeService.cs delete mode 100644 SYS.Application/Zero/NoticeService.cs delete mode 100644 SYS.Application/Zero/OperationService.cs delete mode 100644 SYS.Application/Zero/Operationlog.cs delete mode 100644 SYS.Application/Zero/VipRule/IVipRuleAppService.cs delete mode 100644 SYS.Application/Zero/VipRule/VipRuleAppService.cs delete mode 100644 SYS.Application/app.config delete mode 100644 SYS.Application/bitbug_favicon (1).ico delete mode 100644 SYS.Application/packages.config delete mode 100644 "SYS.Application/\345\237\272\347\241\200\346\240\270\345\277\203\347\261\273\345\272\223jvncorelib(\351\200\202\347\224\250\345\205\250\345\271\263\345\217\260).md" rename SYS.Common/{RecordHelper => }/AdminInfo.cs (97%) rename SYS.Common/{RecordHelper => }/LoginInfo.cs (97%) rename SYS.Common/{RecordHelper => }/OperationLog.cs (80%) rename SYS.Common/{RecordHelper => }/RecordHelper.cs (79%) delete mode 100644 SYS.Common/RecordHelper/IOperationlogService.cs delete mode 100644 SYS.Common/RecordHelper/OperationlogService.cs delete mode 100644 SYS.Common/Repository/MysqlRepository.cs delete mode 100644 SYS.Common/Repository/Repository.cs create mode 100644 SYS.Common/ResponseMsg.cs create mode 100644 SYS.Common/Util/Util.cs rename SYS.Application/Zero/ICheckInfoService.cs => SYS.Core/Business/Customer/OSelectCustoAllDto.cs (78%) rename SYS.Application/Sys/NavBar/NavBarService.cs => SYS.Core/Util/ApplicationVersion.cs (30%) delete mode 100644 SYS.Core/Util/ApplicationVersionUtil.cs rename SYS.Core/Util/{IDCardUtil.cs => Cardcodes.cs} (37%) delete mode 100644 SYS.Core/Util/CounterHelper.cs delete mode 100644 SYS.Core/Util/CounterRuleConsts.cs delete mode 100644 SYS.FormUI/AppUserControls/ucBaseInformation.Designer.cs delete mode 100644 SYS.FormUI/AppUserControls/ucBaseInformation.cs delete mode 100644 SYS.FormUI/AppUserControls/ucBaseInformation.resx delete mode 100644 SYS.FormUI/AppUserControls/ucEducationInformation.Designer.cs delete mode 100644 SYS.FormUI/AppUserControls/ucEducationInformation.cs delete mode 100644 SYS.FormUI/AppUserControls/ucEducationInformation.resx delete mode 100644 SYS.FormUI/AppUserControls/ucPositionInformation.Designer.cs delete mode 100644 SYS.FormUI/AppUserControls/ucPositionInformation.cs delete mode 100644 SYS.FormUI/AppUserControls/ucPositionInformation.resx delete mode 100644 SYS.FormUI/Font/UI-FontUtil.cs delete mode 100644 SYS.Library/MySql.Data.EntityFramework.dll delete mode 100644 SYS.Library/MySql.Data.dll delete mode 100644 SYS.Library/MySql.Web.dll delete mode 100644 SYS.Library/Newtonsoft.Json.dll delete mode 100644 SYS.Library/Newtonsoft.Json.xml delete mode 100644 SYS.Library/RequestHelper.dll diff --git a/TSHotelManagerSystem.sln b/EOM.Client.TopSkyHotelManagerSystem.sln similarity index 81% rename from TSHotelManagerSystem.sln rename to EOM.Client.TopSkyHotelManagerSystem.sln index 127d7f7..b84723a 100644 --- a/TSHotelManagerSystem.sln +++ b/EOM.Client.TopSkyHotelManagerSystem.sln @@ -1,14 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31205.134 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33213.308 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SYS.FormUI", "SYS.FormUI\SYS.FormUI.csproj", "{8854DCB7-F2D7-4276-8D10-C7A124436145}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SYS.Core", "SYS.Core\SYS.Core.csproj", "{CD039D0F-BD50-4FBF-B9CD-CDFAB25C7DFA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SYS.Application", "SYS.Application\SYS.Application.csproj", "{600F4CC8-4323-4237-A55C-BFEF4B67D57C}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SYS.Library", "SYS.Library\SYS.Library.csproj", "{BCEA3E3C-E6D2-4210-95DD-42B461D5F22A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SYS.Common", "SYS.Common\SYS.Common.csproj", "{65501AF6-C629-448A-847E-1BCD60665865}" @@ -27,10 +25,6 @@ Global {CD039D0F-BD50-4FBF-B9CD-CDFAB25C7DFA}.Debug|Any CPU.Build.0 = Debug|Any CPU {CD039D0F-BD50-4FBF-B9CD-CDFAB25C7DFA}.Release|Any CPU.ActiveCfg = Release|Any CPU {CD039D0F-BD50-4FBF-B9CD-CDFAB25C7DFA}.Release|Any CPU.Build.0 = Release|Any CPU - {600F4CC8-4323-4237-A55C-BFEF4B67D57C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {600F4CC8-4323-4237-A55C-BFEF4B67D57C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {600F4CC8-4323-4237-A55C-BFEF4B67D57C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {600F4CC8-4323-4237-A55C-BFEF4B67D57C}.Release|Any CPU.Build.0 = Release|Any CPU {BCEA3E3C-E6D2-4210-95DD-42B461D5F22A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BCEA3E3C-E6D2-4210-95DD-42B461D5F22A}.Debug|Any CPU.Build.0 = Debug|Any CPU {BCEA3E3C-E6D2-4210-95DD-42B461D5F22A}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/SYS.Application/.gitignore b/SYS.Application/.gitignore deleted file mode 100644 index 6d5679c..0000000 --- a/SYS.Application/.gitignore +++ /dev/null @@ -1,365 +0,0 @@ -.vs -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates -*.cache - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -packages/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/SYS.Application/Business/Cash/CashService.cs b/SYS.Application/Business/Cash/CashService.cs deleted file mode 100644 index 4c689ea..0000000 --- a/SYS.Application/Business/Cash/CashService.cs +++ /dev/null @@ -1,75 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Linq; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 资产信息接口实现类 - /// - public class CashService:Repository, ICashService - { - /// - /// 添加资产信息 - /// - /// - /// - public bool AddCashInfo(Cash cash) - { - return base.Insert(cash); - } - - /// - /// 查询资产信息 - /// - /// - public List SelectCashInfoAll() - { - //查询所有部门信息 - List depts = new List(); - depts = base.Change().GetList(a => a.delete_mk != 1); - //查询所有员工信息 - List workers = new List(); - workers = base.Change().GetList(a => a.delete_mk != 1); - List cs = new List(); - cs = base.GetList(a => a.delete_mk != 1); - cs.ForEach(source => - { - var dept = depts.FirstOrDefault(a => a.dept_no.Equals(source.CashClub)); - source.DeptName = dept == null ? "" : dept.dept_name; - var worker = workers.FirstOrDefault(a => a.WorkerId.Equals(source.CashPerson)); - source.PersonName = worker == null ? "" : worker.WorkerName; - - source.CashPriceStr = source.CashPrice == 0 ? "" : Decimal.Parse(source.CashPrice.ToString()).ToString("#,##0.00").ToString(); - - }); - return cs; - } - } -} diff --git a/SYS.Application/Business/Cash/ICashService.cs b/SYS.Application/Business/Cash/ICashService.cs deleted file mode 100644 index 8720e5e..0000000 --- a/SYS.Application/Business/Cash/ICashService.cs +++ /dev/null @@ -1,47 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 资产信息接口 - /// - public interface ICashService - { - /// - /// 添加资产信息 - /// - /// - /// - bool AddCashInfo(Cash cash); - - /// - /// 查询资产信息 - /// - /// - List SelectCashInfoAll(); - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Customer/CustoService.cs b/SYS.Application/Business/Customer/CustoService.cs deleted file mode 100644 index dca18a4..0000000 --- a/SYS.Application/Business/Customer/CustoService.cs +++ /dev/null @@ -1,254 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using jvncorelib_fr.EncryptorLib; -using jvncorelib_fr.EntityLib; -using MySql.Data.MySqlClient; -using Npgsql; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 客户信息接口实现类 - /// - public class CustoService:Repository, ICustoService - { - EncryptLib encryptLib = new EncryptLib(); - - #region 添加客户信息 - /// - /// 添加客户信息 - /// - /// - /// - public bool InsertCustomerInfo(Custo custo) - { - string NewID = encryptLib.Encryption(custo.CustoID); - string NewTel = encryptLib.Encryption(custo.CustoTel); - custo.CustoID = NewID; - custo.CustoTel = NewTel; - return base.Insert(custo); - } - #endregion - - /// - /// 更新客户信息 - /// - /// - /// - public bool UpdCustomerInfoByCustoNo(Custo custo) - { - string NewID = encryptLib.Encryption(custo.CustoID); - string NewTel = encryptLib.Encryption(custo.CustoTel); - custo.CustoID = NewID; - custo.CustoTel = NewTel; - return base.Update(a => new Custo() - { - CustoName = custo.CustoName, - CustoSex = custo.CustoSex, - CustoType = custo.CustoType, - CustoBirth = custo.CustoBirth, - CustoAdress = custo.CustoAdress, - CustoID = custo.CustoID, - CustoTel = custo.CustoTel, - PassportType = custo.PassportType, - datachg_usr = custo.datachg_usr, - datachg_date = DateTime.Now - },a => a.CustoNo == custo.CustoNo); - } - - /// - /// 更新客户类型(即会员等级) - /// - /// - /// - /// - public bool UpdCustomerTypeByCustoNo(string custoNo,int userType) - { - return base.Update(a => new Custo() - { - CustoType = userType - }, a => a.CustoNo.Equals(custoNo)); - } - - /// - /// 查询酒店盈利情况 - /// - /// - public List SelectAllMoney() - { - List custoSpends = new List(); - var listSource = base.Change().GetList(a => a.MoneyState.Equals(SpendConsts.Settled)).OrderBy(a => a.SpendTime).ToList(); - var listDates = new List(); - listSource.ForEach(source => - { - var year = source.SpendTime.ToString("yyyy"); - if (!custoSpends.Select(a => a.Years).ToList().Contains(year)) - { - var startDate = new DateTime(source.SpendTime.Year, 1, 1, 0, 0, 0); - var endDate = new DateTime(source.SpendTime.Year, 12, 31, 23, 59, 59); - custoSpends.Add(new CustoSpend - { - Years = year, - Money = listSource.Where(a => a.SpendTime >= startDate && a.SpendTime <= endDate).Sum(a => a.SpendMoney) - }); - } - }); - - custoSpends = custoSpends.OrderBy(a => a.Years).ToList(); - return custoSpends; - } - - /// - /// 查询所有客户信息 - /// - /// - public List SelectCustoAll(ref int count,int? pageIndex,int? pageSize) - { - - //查询出所有性别类型 - List sexTypes = new List(); - sexTypes = base.Change().GetList(); - //查询出所有证件类型 - List passPortTypes = new List(); - passPortTypes = base.Change().GetList(); - //查询出所有客户类型 - List custoTypes = new List(); - custoTypes = base.Change().GetList(); - //查询出所有客户信息 - List custos = new List(); - - if (!pageIndex.IsNullOrEmpty() && !pageSize.IsNullOrEmpty()) - { - custos = base.AsQueryable().ToPageList((int)pageIndex, (int)pageSize, ref count).OrderBy(a => a.CustoNo).ToList(); - } - else - { - custos = base.AsQueryable().OrderBy(a => a.CustoNo).ToList(); - } - - custos.ForEach(source => - { - //解密身份证号码 - var sourceStr = source.CustoID.Contains("·") ? encryptLib.Decryption(source.CustoID) : source.CustoID; - source.CustoID = sourceStr; - //解密联系方式 - var sourceTelStr = source.CustoTel.Contains("·") ? encryptLib.Decryption(source.CustoTel) : source.CustoTel; - source.CustoTel = sourceTelStr; - //性别类型 - var sexType = sexTypes.FirstOrDefault(a => a.sexId == source.CustoSex); - source.SexName = string.IsNullOrEmpty(sexType.sexName) ? "" : sexType.sexName; - //证件类型 - var passPortType = passPortTypes.FirstOrDefault(a => a.PassportId == source.PassportType); - source.PassportName = string.IsNullOrEmpty(passPortType.PassportName) ? "" : passPortType.PassportName; - //客户类型 - var custoType = custoTypes.FirstOrDefault(a => a.UserType == source.CustoType); - source.typeName = string.IsNullOrEmpty(custoType.TypeName) ? "" : custoType.TypeName; - }); - return custos; - } - - /// - /// 查询指定客户信息 - /// - /// - public List SelectCustoByInfo(Custo custo) - { - //查询出所有性别类型 - List sexTypes = new List(); - sexTypes = base.Change().GetList(); - //查询出所有证件类型 - List passPortTypes = new List(); - passPortTypes = base.Change().GetList(); - //查询出所有客户类型 - List custoTypes = new List(); - custoTypes = base.Change().GetList(); - //查询出所有客户信息 - List custos = new List(); - if (!custo.CustoNo.IsNullOrEmpty()) - { - custos = base.GetList(a => a.CustoNo.Contains(custo.CustoNo)).OrderBy(a => a.CustoNo).ToList(); - } - if (!custo.CustoName.IsNullOrEmpty()) - { - custos = base.GetList(a => a.CustoName.Contains(custo.CustoName)).OrderBy(a => a.CustoNo).ToList(); - } - custos.ForEach(source => - { - //解密身份证号码 - var sourceStr = source.CustoID.Contains("·") ? encryptLib.Decryption(source.CustoID) : source.CustoID; - source.CustoID = sourceStr; - //解密联系方式 - var sourceTelStr = source.CustoTel.Contains("·") ? encryptLib.Decryption(source.CustoTel) : source.CustoTel; - source.CustoTel = sourceTelStr; - //性别类型 - var sexType = sexTypes.FirstOrDefault(a => a.sexId == source.CustoSex); - source.SexName = string.IsNullOrEmpty(sexType.sexName) ? "" : sexType.sexName; - //证件类型 - var passPortType = passPortTypes.FirstOrDefault(a => a.PassportId == source.PassportType); - source.PassportName = string.IsNullOrEmpty(passPortType.PassportName) ? "" : passPortType.PassportName; - //客户类型 - var custoType = custoTypes.FirstOrDefault(a => a.UserType == source.CustoType); - source.typeName = string.IsNullOrEmpty(custoType.TypeName) ? "" : custoType.TypeName; - }); - return custos; - } - - /// - /// 根据客户编号查询客户信息 - /// - /// - /// - public Custo SelectCardInfoByCustoNo(string CustoNo) - { - Custo c = base.GetSingle(a => a.CustoNo.Contains(CustoNo)); - if (c.IsNullOrEmpty()) - { - return null; - } - //性别类型 - var sexType = base.Change().GetSingle(a => a.sexId == c.CustoSex); - c.SexName = string.IsNullOrEmpty(sexType.sexName) ? "" : sexType.sexName; - //证件类型 - var passPortType = base.Change().GetSingle(a => a.PassportId == c.PassportType); - c.PassportName = string.IsNullOrEmpty(passPortType.PassportName) ? "" : passPortType.PassportName; - //客户类型 - var custoType = base.Change().GetSingle(a => a.UserType == c.CustoType); - c.typeName = string.IsNullOrEmpty(custoType.TypeName) ? "" : custoType.TypeName; - //解密身份证号码 - var sourceStr = c.CustoID.Contains("·") ? encryptLib.Decryption(c.CustoID) : c.CustoID; - c.CustoID = sourceStr; - //解密联系方式 - var sourceTelStr = c.CustoTel.Contains("·") ? encryptLib.Decryption(c.CustoTel) : c.CustoTel; - c.CustoTel = sourceTelStr; - return c; - } - - } -} diff --git a/SYS.Application/Business/Customer/ICustoService.cs b/SYS.Application/Business/Customer/ICustoService.cs deleted file mode 100644 index 6affffa..0000000 --- a/SYS.Application/Business/Customer/ICustoService.cs +++ /dev/null @@ -1,85 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 客户信息接口 - /// - public interface ICustoService - { - #region 添加客户信息 - /// - /// 添加客户信息 - /// - /// - /// - bool InsertCustomerInfo(Custo custo); - #endregion - - /// - /// 更新客户信息 - /// - /// - /// - bool UpdCustomerInfoByCustoNo(Custo custo); - - /// - /// 更新客户类型(即会员等级) - /// - /// - /// - /// - bool UpdCustomerTypeByCustoNo(string custoNo, int userType); - - /// - /// 查询酒店盈利情况 - /// - /// - List SelectAllMoney(); - - /// - /// 查询所有客户信息 - /// - /// - List SelectCustoAll(ref int count, int? pageIndex, int? pageSize); - - /// - /// 查询指定客户信息 - /// - /// - List SelectCustoByInfo(Custo custo); - - /// - /// 根据客户编号查询客户信息 - /// - /// - /// - Custo SelectCardInfoByCustoNo(string CustoNo); - - - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Fonts/FontsService.cs b/SYS.Application/Business/Fonts/FontsService.cs deleted file mode 100644 index 7a46f19..0000000 --- a/SYS.Application/Business/Fonts/FontsService.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 酒店宣传联动内容接口实现类 - /// - public class FontsService:Repository,IFontsService - { - /// - /// 查询所有宣传联动内容(跑马灯) - /// - /// - public List SelectFontAll() - { - List fonts = new List(); - fonts = base.GetList(); - return fonts; - } - } -} diff --git a/SYS.Application/Business/Fonts/IFontsService.cs b/SYS.Application/Business/Fonts/IFontsService.cs deleted file mode 100644 index badc195..0000000 --- a/SYS.Application/Business/Fonts/IFontsService.cs +++ /dev/null @@ -1,40 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 酒店宣传联动内容接口 - /// - public interface IFontsService - { - /// - /// 查询所有宣传联动内容(跑马灯) - /// - /// - List SelectFontAll(); - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Reser/IReserService.cs b/SYS.Application/Business/Reser/IReserService.cs deleted file mode 100644 index 6a246ed..0000000 --- a/SYS.Application/Business/Reser/IReserService.cs +++ /dev/null @@ -1,64 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 预约信息接口 - /// - public interface IReserService - { - - /// - /// 获取所有预约信息 - /// - /// - List SelectReserAll(); - - /// - /// 根据房间编号获取预约信息 - /// - /// - /// - Reser SelectReserInfoByRoomNo(string no); - - /// - /// 删除预约信息 - /// - /// - /// - bool DeleteReserInfo(string rid); - - /// - /// 添加预约信息 - /// - /// - /// - bool InserReserInfo(Reser r); - - - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Reser/ReserService.cs b/SYS.Application/Business/Reser/ReserService.cs deleted file mode 100644 index ec8598e..0000000 --- a/SYS.Application/Business/Reser/ReserService.cs +++ /dev/null @@ -1,101 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using jvncorelib_fr.EncryptorLib; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 预约信息接口实现类 - /// - public class ReserService:Repository,IReserService - { - EncryptLib encryptLib = new EncryptLib(); - /// - /// 获取所有预约信息 - /// - /// - public List SelectReserAll() - { - List rss = new List(); - rss = base.GetList(a => a.delete_mk == 0); - rss.ForEach(source => - { - //解密联系方式 - var sourceTelStr = source.CustoTel.Contains("·") ? encryptLib.Decryption(source.CustoTel) : source.CustoTel; - source.CustoTel = sourceTelStr; - }); - return rss; - } - - /// - /// 根据房间编号获取预约信息 - /// - /// - /// - public Reser SelectReserInfoByRoomNo(string no) - { - Reser res = null; - res = base.GetSingle(a => a.ReserRoom == no && a.delete_mk != 1); - //解密联系方式 - var sourceTelStr = res.CustoTel.Contains("·") ? encryptLib.Decryption(res.CustoTel) : res.CustoTel; - res.CustoTel = sourceTelStr; - return res; - } - - /// - /// 删除预约信息 - /// - /// - /// - public bool DeleteReserInfo(string rid) - { - return base.Update(a => new Reser() - { - delete_mk = 1, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.ReserId == rid); - - } - - /// - /// 添加预约信息 - /// - /// - /// - public bool InserReserInfo(Reser r) - { - var cryStr = encryptLib.Encryption(r.CustoTel); - r.CustoTel = cryStr; - return base.Insert(r); - } - - - } -} diff --git a/SYS.Application/Business/Room/IRoomService.cs b/SYS.Application/Business/Room/IRoomService.cs deleted file mode 100644 index 773a724..0000000 --- a/SYS.Application/Business/Room/IRoomService.cs +++ /dev/null @@ -1,206 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 房间信息接口 - /// - public interface IRoomService - { - #region 根据房间状态获取相应状态的房间信息 - /// - /// 根据房间状态获取相应状态的房间信息 - /// - /// - /// - List SelectRoomByRoomState(int stateid); - #endregion - - - #region 根据房间状态来查询可使用的房间 - /// - /// 根据房间状态来查询可使用的房间 - /// - /// - List SelectCanUseRoomAll(); - #endregion - - - #region 获取所有房间信息 - /// - /// 获取所有房间信息 - /// - /// - List SelectRoomAll(); - #endregion - - #region 获取房间分区的信息 - /// - /// 获取房间分区的信息 - /// - /// - List SelectRoomByTypeName(string TypeName); - #endregion - - #region 根据房间编号查询房间信息 - /// - /// 根据房间编号查询房间信息 - /// - /// - /// - Room SelectRoomByRoomNo(string no); - #endregion - - #region 根据房间编号退房(退房) - /// - /// 根据房间编号退房(退房) - /// - /// - /// - bool UpdateRoomByRoomNo(string room); - #endregion - - #region 根据房间编号查询截止到今天住了多少天 - /// - /// 根据房间编号查询截止到今天住了多少天 - /// - /// - /// - object DayByRoomNo(string roomno); - #endregion - - #region 根据房间编号修改房间信息(入住) - /// - /// 根据房间编号修改房间信息(入住) - /// - /// - /// - bool UpdateRoomInfo(Room r); - #endregion - - #region 根据房间编号修改房间信息(预约) - /// - /// 根据房间编号修改房间信息(预约) - /// - /// - /// - bool UpdateRoomInfoWithReser(Room r); - #endregion - - #region 查询可入住房间数量 - /// - /// 查询可入住房间数量 - /// - /// - object SelectCanUseRoomAllByRoomState(); - #endregion - - #region 查询已入住房间数量 - /// - /// 查询已入住房间数量 - /// - /// - object SelectNotUseRoomAllByRoomState(); - #endregion - - #region 根据房间编号查询房间价格 - /// - /// 根据房间编号查询房间价格 - /// - /// - object SelectRoomByRoomPrice(string r); - #endregion - - #region 查询脏房数量 - /// - /// 查询脏房数量 - /// - /// - object SelectNotClearRoomAllByRoomState(); - #endregion - - #region 查询维修房数量 - /// - /// 查询维修房数量 - /// - /// - object SelectFixingRoomAllByRoomState(); - #endregion - - #region 查询预约房数量 - /// - /// 查询预约房数量 - /// - /// - object SelectReseredRoomAllByRoomState(); - #endregion - - #region 根据房间编号更改房间状态 - /// - /// 根据房间编号更改房间状态 - /// - /// - /// - /// - bool UpdateRoomStateByRoomNo(string roomno, int stateid); - #endregion - - #region 添加房间 - /// - /// 添加房间 - /// - /// - /// - bool InsertRoom(Room rn); - #endregion - - #region 查询所有可消费(已住)房间 - /// - /// 查询所有可消费(已住)房间 - /// - /// - List SelectRoomByStateAll(); - #endregion - - #region 获取所有房间状态 - /// - /// 获取所有房间状态 - /// - /// - List SelectRoomStateAll(); - #endregion - - #region 根据房间编号查询房间状态编号 - /// - /// 根据房间编号查询房间状态编号 - /// - /// - /// - object SelectRoomStateIdByRoomNo(string roomno); - #endregion - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Room/IRoomTypeService.cs b/SYS.Application/Business/Room/IRoomTypeService.cs deleted file mode 100644 index a82497e..0000000 --- a/SYS.Application/Business/Room/IRoomTypeService.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 客房信息接口 - /// - public interface IRoomTypeService - { - #region 获取所有房间类型 - /// - /// 获取所有房间类型 - /// - /// - List SelectRoomTypesAll(); - #endregion - - #region 根据房间编号查询房间类型名称 - /// - /// 根据房间编号查询房间类型名称 - /// - /// - /// - RoomType SelectRoomTypeByRoomNo(string no); - #endregion - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Room/RoomService.cs b/SYS.Application/Business/Room/RoomService.cs deleted file mode 100644 index 701051e..0000000 --- a/SYS.Application/Business/Room/RoomService.cs +++ /dev/null @@ -1,391 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Linq; -using jvncorelib_fr.EntityLib; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 客房信息接口实现类 - /// - public class RoomService:Repository, IRoomService - { - #region 根据房间状态获取相应状态的房间信息 - /// - /// 根据房间状态获取相应状态的房间信息 - /// - /// - /// - public List SelectRoomByRoomState(int stateid) - { - List roomStates = new List(); - roomStates = base.Change().GetList(a => a.delete_mk != 1); - List roomTypes = new List(); - roomTypes = base.Change().GetList(a => a.delete_mk != 1); - List rooms = new List(); - rooms = base.GetList(a => a.delete_mk != 1 && a.RoomStateId == stateid).OrderBy(a => a.RoomNo).ToList(); - rooms.ForEach(source => - { - var roomState = roomStates.FirstOrDefault(a => a.RoomStateId == source.RoomStateId); - source.RoomState = string.IsNullOrEmpty(roomState.RoomStateName) ? "" : roomState.RoomStateName; - var roomType = roomTypes.FirstOrDefault(a => a.Roomtype == source.RoomType); - source.RoomName = string.IsNullOrEmpty(roomType.RoomName) ? "" : roomType.RoomName; - }); - return rooms; - } - #endregion - - - #region 根据房间状态来查询可使用的房间 - /// - /// 根据房间状态来查询可使用的房间 - /// - /// - public List SelectCanUseRoomAll() - { - List roomStates = new List(); - roomStates = base.Change().GetList(a => a.delete_mk != 1); - List roomTypes = new List(); - roomTypes = base.Change().GetList(a => a.delete_mk != 1); - List rooms = new List(); - rooms = base.GetList(a => a.delete_mk != 1 && a.RoomStateId == 0).OrderBy(a => a.RoomNo).ToList(); - rooms.ForEach(source => - { - var roomState = roomStates.FirstOrDefault(a => a.RoomStateId == source.RoomStateId); - source.RoomState = string.IsNullOrEmpty(roomState.RoomStateName) ? "" : roomState.RoomStateName; - var roomType = roomTypes.FirstOrDefault(a => a.Roomtype == source.RoomType); - source.RoomName = string.IsNullOrEmpty(roomType.RoomName) ? "" : roomType.RoomName; - }); - return rooms; - } - #endregion - - - #region 获取所有房间信息 - /// - /// 获取所有房间信息 - /// - /// - public List SelectRoomAll() - { - List roomStates = new List(); - roomStates = base.Change().GetList(a => a.delete_mk != 1); - List roomTypes = new List(); - roomTypes = base.Change().GetList(a => a.delete_mk != 1); - List rooms = new List(); - rooms = base.GetList(a => a.delete_mk != 1).OrderBy(a => a.RoomNo).ToList(); - var listCustoNo = rooms.Select(a => a.CustoNo).Distinct().ToList(); - List custos = new List(); - custos = base.Change().GetList(a => listCustoNo.Contains(a.CustoNo)); - rooms.ForEach(source => - { - var roomState = roomStates.FirstOrDefault(a => a.RoomStateId == source.RoomStateId); - source.RoomState = string.IsNullOrEmpty(roomState.RoomStateName) ? "" : roomState.RoomStateName; - var roomType = roomTypes.FirstOrDefault(a => a.Roomtype == source.RoomType); - source.RoomName = string.IsNullOrEmpty(roomType.RoomName) ? "" : roomType.RoomName; - - var custo = custos.FirstOrDefault(a => a.CustoNo.Equals(source.CustoNo)); - source.CustoName = custo.IsNullOrEmpty() ? "" : custo.CustoName; - - //把入住时间格式化 - source.CheckTimeFormat = string.IsNullOrEmpty(source.CheckTime + "") ? "" - : Convert.ToDateTime(source.CheckTime).ToString("yyyy-MM-dd HH:mm"); - - }); - return rooms; - } - #endregion - - #region 获取房间分区的信息 - /// - /// 获取房间分区的信息 - /// - /// - public List SelectRoomByTypeName(string TypeName) - { - List roomStates = new List(); - roomStates = base.Change().GetList(a => a.delete_mk != 1); - List roomTypes = new List(); - roomTypes = base.Change().GetList(a => a.delete_mk != 1 && a.RoomName == TypeName); - var listTypes = roomTypes.Select(a => a.Roomtype).Distinct().ToList(); - List rooms = new List(); - rooms = base.GetList(a => a.delete_mk != 1 && listTypes.Contains(a.RoomType)).OrderBy(a => a.RoomNo).ToList(); - var listCustoNo = rooms.Select(a => a.CustoNo).Distinct().ToList(); - List custos = new List(); - custos = base.Change().GetList(a => listCustoNo.Contains(a.CustoNo)); - rooms.ForEach(source => - { - var roomState = roomStates.FirstOrDefault(a => a.RoomStateId == source.RoomStateId); - source.RoomState = string.IsNullOrEmpty(roomState.RoomStateName) ? "" : roomState.RoomStateName; - var roomType = roomTypes.FirstOrDefault(a => a.Roomtype == source.RoomType); - source.RoomName = string.IsNullOrEmpty(roomType.RoomName) ? "" : roomType.RoomName; - - var custo = custos.FirstOrDefault(a => a.CustoNo.Equals(source.CustoNo)); - source.CustoName = custo.IsNullOrEmpty() ? "" : custo.CustoName; - - }); - return rooms; - } - #endregion - - #region 根据房间编号查询房间信息 - /// - /// 根据房间编号查询房间信息 - /// - /// - /// - public Room SelectRoomByRoomNo(string no) - { - List roomStates = new List(); - roomStates = base.Change().GetList(a => a.delete_mk != 1); - Room room = new Room(); - room = base.GetSingle(a => a.delete_mk != 1 && a.RoomNo == no); - var roomSate = roomStates.FirstOrDefault(a => a.RoomStateId == room.RoomStateId); - room.RoomState = string.IsNullOrEmpty(roomSate.RoomStateName) ? "" : roomSate.RoomStateName; - return room; - } - #endregion - - #region 根据房间编号退房(退房) - /// - /// 根据房间编号退房(退房) - /// - /// - /// - public bool UpdateRoomByRoomNo(string room) - { - return base.Update(a => new Room() - { - CustoNo = null, - CheckTime = null, - CheckOutTime = DateTime.Now, - RoomStateId = 3 - },a => a.RoomNo == room); - } - #endregion - - #region 根据房间编号查询截止到今天住了多少天 - /// - /// 根据房间编号查询截止到今天住了多少天 - /// - /// - /// - public object DayByRoomNo(string roomno) - { - return Math.Abs(((TimeSpan)(base.GetSingle(a => a.RoomNo == roomno).CheckTime - DateTime.Now)).Days); - } - #endregion - - #region 根据房间编号修改房间信息(入住) - /// - /// 根据房间编号修改房间信息(入住) - /// - /// - /// - public bool UpdateRoomInfo(Room r) - { - return base.Update(a => new Room() - { - CheckTime = r.CheckTime, - RoomStateId = r.RoomStateId, - CustoNo = r.CustoNo - },a => a.RoomNo == r.RoomNo); - } - #endregion - - #region 根据房间编号修改房间信息(预约) - /// - /// 根据房间编号修改房间信息(预约) - /// - /// - /// - public bool UpdateRoomInfoWithReser(Room r) - { - return base.Update(a => new Room() - { - RoomStateId = r.RoomStateId, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.RoomNo == r.RoomNo); - } - #endregion - - #region 查询可入住房间数量 - /// - /// 查询可入住房间数量 - /// - /// - public object SelectCanUseRoomAllByRoomState() - { - return base.GetList(a => a.RoomStateId == 0 && a.delete_mk != 1).OrderBy(a => a.RoomNo).Count(); - } - #endregion - - #region 查询已入住房间数量 - /// - /// 查询已入住房间数量 - /// - /// - public object SelectNotUseRoomAllByRoomState() - { - return base.GetList(a => a.RoomStateId == 1 && a.delete_mk != 1).OrderBy(a => a.RoomNo).Count(); - } - #endregion - - #region 根据房间编号查询房间价格 - /// - /// 根据房间编号查询房间价格 - /// - /// - public object SelectRoomByRoomPrice(string r) - { - return base.GetSingle(a => a.RoomNo == r).RoomMoney; - } - #endregion - - #region 查询脏房数量 - /// - /// 查询脏房数量 - /// - /// - public object SelectNotClearRoomAllByRoomState() - { - return base.GetList(a => a.RoomStateId == 3 && a.delete_mk != 1).OrderBy(a => a.RoomNo).Count(); - } - #endregion - - #region 查询维修房数量 - /// - /// 查询维修房数量 - /// - /// - public object SelectFixingRoomAllByRoomState() - { - return base.GetList(a => a.RoomStateId == 2 && a.delete_mk != 1).OrderBy(a => a.RoomNo).Count(); - } - #endregion - - #region 查询预约房数量 - /// - /// 查询预约房数量 - /// - /// - public object SelectReseredRoomAllByRoomState() - { - return base.GetList(a => a.RoomStateId == 4 && a.delete_mk != 1).OrderBy(a => a.RoomNo).Count(); - } - #endregion - - #region 根据房间编号更改房间状态 - /// - /// 根据房间编号更改房间状态 - /// - /// - /// - /// - public bool UpdateRoomStateByRoomNo(string roomno, int stateid) - { - return base.Update(a => new Room() - { - RoomStateId = stateid, - datains_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.RoomNo == roomno); - } - #endregion - - #region 添加房间 - /// - /// 添加房间 - /// - /// - /// - public bool InsertRoom(Room rn) - { - try - { - return base.Insert(rn); - } - catch (Exception) - { - return false; - } - } - #endregion - - #region 查询所有可消费(已住)房间 - /// - /// 查询所有可消费(已住)房间 - /// - /// - public List SelectRoomByStateAll() - { - List roomStates = new List(); - roomStates = base.Change().GetList(a => a.delete_mk != 1); - List roomTypes = new List(); - roomTypes = base.Change().GetList(a => a.delete_mk != 1); - List rooms = new List(); - rooms = base.GetList(a => a.delete_mk != 1 && a.RoomStateId == 1).OrderBy(a => a.RoomNo).ToList(); - rooms.ForEach(source => - { - var roomState = roomStates.FirstOrDefault(a => a.RoomStateId == source.RoomStateId); - source.RoomState = string.IsNullOrEmpty(roomState.RoomStateName) ? "" : roomState.RoomStateName; - var roomType = roomTypes.FirstOrDefault(a => a.Roomtype == source.RoomType); - source.RoomName = string.IsNullOrEmpty(roomType.RoomName) ? "" : roomType.RoomName; - }); - return rooms; - } - #endregion - - #region 获取所有房间状态 - /// - /// 获取所有房间状态 - /// - /// - public List SelectRoomStateAll() - { - List rs = new List(); - rs = base.Change().GetList(a => a.delete_mk != 1); - return rs; - } - #endregion - - #region 根据房间编号查询房间状态编号 - /// - /// 根据房间编号查询房间状态编号 - /// - /// - /// - public object SelectRoomStateIdByRoomNo(string roomno) - { - return base.GetSingle(a => a.RoomNo == roomno).RoomStateId; - } - #endregion - } -} diff --git a/SYS.Application/Business/Room/RoomTypeService.cs b/SYS.Application/Business/Room/RoomTypeService.cs deleted file mode 100644 index f51711e..0000000 --- a/SYS.Application/Business/Room/RoomTypeService.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System.Collections.Generic; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 房间类型接口实现类 - /// - public class RoomTypeService:Repository, IRoomTypeService - { - #region 获取所有房间类型 - /// - /// 获取所有房间类型 - /// - /// - public List SelectRoomTypesAll() - { - List types = new List(); - types = base.GetList(a => a.delete_mk != 1); - return types; - } - #endregion - - #region 根据房间编号查询房间类型名称 - /// - /// 根据房间编号查询房间类型名称 - /// - /// - /// - public RoomType SelectRoomTypeByRoomNo(string no) - { - RoomType roomtype = new RoomType(); - Room room = new Room(); - room = base.Change().GetSingle(a => a.RoomNo == no && a.delete_mk != 1); - roomtype.RoomName = base.GetSingle(a => a.Roomtype == room.RoomStateId).RoomName; - return roomtype; - } - #endregion - } -} diff --git a/SYS.Application/Business/Sellthing/ISellService.cs b/SYS.Application/Business/Sellthing/ISellService.cs deleted file mode 100644 index ee032dd..0000000 --- a/SYS.Application/Business/Sellthing/ISellService.cs +++ /dev/null @@ -1,97 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 商品接口 - /// - public interface ISellService - { - /// - /// 查询所有商品 - /// - /// - List SelectSellThingAll(SellThing sellThing = null); - - /// - /// 修改商品 - /// - /// - /// - /// - bool UpdateSellThing(string stock, string sellNo); - - /// - /// 修改商品信息 - /// - /// - /// - bool UpdateSellthingInfo(SellThing sellThing); - - /// - /// 撤回客户消费信息 - /// - /// - /// - /// - /// - bool DeleteSellThing(string roomNo, string custoNo, string sellName); - - /// - /// 根据商品编号删除商品信息 - /// - /// - /// - bool DeleteSellThingBySellNo(string sellNo); - - /// - /// 根据商品名称和价格查询商品编号 - /// - /// - /// - /// - SellThing SelectSellThingByNameAndPrice(string name, string price); - - - /// - /// 根据商品编号查询商品信息 - /// - /// - /// - SellThing SelectSellInfoBySellNo(string SellNo); - - #region 添加商品 - /// - /// 添加商品 - /// - /// - /// - bool InsertSellThing(SellThing st); - #endregion - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Sellthing/SellService.cs b/SYS.Application/Business/Sellthing/SellService.cs deleted file mode 100644 index d22cd24..0000000 --- a/SYS.Application/Business/Sellthing/SellService.cs +++ /dev/null @@ -1,180 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using jvncorelib_fr.EntityLib; -using MySql.Data.MySqlClient; -using SqlSugar; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 商品信息接口实现类 - /// - public class SellService:Repository,ISellService - { - /// - /// 查询所有商品 - /// - /// - public List SelectSellThingAll(SellThing sellThing = null) - { - List sellThings = new List(); - var exp = Expressionable.Create().And(a => a.delete_mk == 0); - if (sellThing.IsNullOrEmpty()) - { - sellThings = base.GetList(exp.ToExpression()); - sellThings.ForEach(_sellThing => - { - _sellThing.SellPriceStr = Decimal.Parse(_sellThing.SellPrice.ToString()).ToString("#,##0.00").ToString(); - }); - } - else - { - //商品编号 - if (!sellThing.SellNo.IsNullOrEmpty()) - { - exp = exp.And(a => a.SellNo.Contains(sellThing.SellNo)); - } - //商品名称 - if (!sellThing.SellName.IsNullOrEmpty()) - { - exp = exp.Or(a => a.SellName.Contains(sellThing.SellName)); - } - sellThings = base.GetList(exp.ToExpression()); - sellThings.ForEach(_sellThing => - { - _sellThing.SellPriceStr = Decimal.Parse(_sellThing.SellPrice.ToString()).ToString("#,##0.00").ToString(); - }); - } - return sellThings; - } - - /// - /// 更新商品数量 - /// - /// - /// - /// - public bool UpdateSellThing(string stock, string sellNo) - { - return base.Update(a => new SellThing() - { - Stock = Convert.ToInt32(stock), - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.SellNo == sellNo); - } - - /// - /// 修改商品信息 - /// - /// - /// - public bool UpdateSellthingInfo(SellThing sellThing) - { - return base.Update(a => new SellThing() - { - SellName = sellThing.SellName, - SellPrice = sellThing.SellPrice, - Stock = sellThing.Stock, - format = sellThing.format, - },a => a.SellNo == sellThing.SellNo); - } - - /// - /// 撤回客户消费信息 - /// - /// - /// - /// - /// - public bool DeleteSellThing(string roomNo, string custoNo, string sellName) - { - return base.Change().Update(a => new Spend() - { - delete_mk = 1, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.MoneyState.Equals(SpendConsts.UnSettle) && a.RoomNo == roomNo && a.CustoNo == custoNo - && a.SpendName == sellName); - - } - - /// - /// 根据商品编号删除商品信息 - /// - /// - /// - public bool DeleteSellThingBySellNo(string sellNo) - { - return base.Update(a => new SellThing() - { - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.SellNo == sellNo); - } - - /// - /// 根据商品名称和价格查询商品编号 - /// - /// - /// - /// - public SellThing SelectSellThingByNameAndPrice(string name,string price) - { - SellThing sellThing = null; - sellThing = base.GetSingle(a => a.SellName == name && a.SellPrice == Convert.ToDecimal(price)); - return sellThing; - } - - - /// - /// 根据商品编号查询商品信息 - /// - /// - /// - public SellThing SelectSellInfoBySellNo(string SellNo) - { - SellThing st = null; - st = base.GetSingle(a => a.SellNo == SellNo && a.delete_mk != 1); - return st; - } - - #region 添加商品 - /// - /// 添加商品 - /// - /// - /// - public bool InsertSellThing(SellThing st) - { - return base.Insert(st); - } - #endregion - } -} diff --git a/SYS.Application/Business/Spend/ISpendService.cs b/SYS.Application/Business/Spend/ISpendService.cs deleted file mode 100644 index 9368d7d..0000000 --- a/SYS.Application/Business/Spend/ISpendService.cs +++ /dev/null @@ -1,124 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 消费信息接口 - /// - public interface ISpendService - { - #region 添加消费信息 - /// - /// 添加消费信息 - /// - /// - /// - bool InsertSpendInfo(Spend s); - #endregion - - #region 根据客户编号查询消费信息 - /// - /// 根据客户编号查询消费信息 - /// - /// - /// - List SelectSpendByCustoNo(string No); - #endregion - - #region 根据房间编号查询消费信息 - /// - /// 根据房间编号查询消费信息 - /// - /// - /// - List SelectSpendByRoomNo(string No); - #endregion - - #region 根据客户编号查询历史消费信息 - /// - /// 根据客户编号查询历史消费信息 - /// - /// - /// - List SeletHistorySpendInfoAll(string custoNo); - #endregion - - #region 查询消费的所有信息 - /// - /// 查询消费的所有信息 - /// - /// - List SelectSpendInfoAll(); - #endregion - - #region 根据房间号查询消费的所有信息 - /// - /// 根据房间号查询消费的所有信息 - /// - /// - List SelectSpendInfoRoomNo(string RoomNo); - #endregion - - #region 根据房间编号、入住时间到当前时间查询消费总金额 - /// - /// 根据房间编号、入住时间到当前时间查询消费总金额 - /// - /// - /// - /// - object SelectMoneyByRoomNoAndTime(string roomno, string custono); - #endregion - - #region 根据房间编号、入住时间和当前时间修改结算状态 - /// - /// 根据房间编号、入住时间和当前时间修改结算状态 - /// - /// - /// - /// - bool UpdateMoneyState(string roomno, string checktime); - #endregion - - #region 将转房前的未结算记录一同转移到新房间 - /// - /// 将转房前的未结算记录一同转移到新房间 - /// - /// - /// - /// - /// - bool UpdateSpendInfoByRoomNo(List spends, string newRoom, string custoNo); - #endregion - - /// - /// 更新消费信息 - /// - /// - /// - bool UpdSpenInfo(Spend spend); - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Spend/SpendService.cs b/SYS.Application/Business/Spend/SpendService.cs deleted file mode 100644 index 5996ec0..0000000 --- a/SYS.Application/Business/Spend/SpendService.cs +++ /dev/null @@ -1,249 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Linq; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 商品消费接口实现类 - /// - public class SpendService:Repository, ISpendService - { - #region 添加消费信息 - /// - /// 添加消费信息 - /// - /// - /// - public bool InsertSpendInfo(Spend s) - { - return base.Insert(s); - } - #endregion - - #region 根据客户编号查询消费信息 - /// - /// 根据客户编号查询消费信息 - /// - /// - /// - public List SelectSpendByCustoNo(string No) - { - List ls = new List(); - ls = base.GetList(a => a.CustoNo == No && a.MoneyState.Equals(SpendConsts.UnSettle) && a.delete_mk != 1); - ls.ForEach(source => - { - source.SpendStateNm = string.IsNullOrEmpty(source.MoneyState) ? "" - : source.MoneyState.Equals(SpendConsts.Settled) ? "已结算" : "未结算"; - - source.SpendPriceStr = string.IsNullOrEmpty(source.SpendPrice + "") ? "" - : Decimal.Parse(source.SpendPrice.ToString()).ToString("#,##0.00").ToString(); - - source.SpendMoneyStr = string.IsNullOrEmpty(source.SpendMoney + "") ? "" - : Decimal.Parse(source.SpendMoney.ToString()).ToString("#,##0.00").ToString(); - }); - return ls; - } - #endregion - - #region 根据客户编号查询历史消费信息 - /// - /// 根据客户编号查询历史消费信息 - /// - /// - /// - public List SeletHistorySpendInfoAll(string custoNo) - { - List ls = new List(); - ls = base.GetList(a => a.CustoNo == custoNo && a.MoneyState.Equals(SpendConsts.Settled) && a.delete_mk != 1); - ls.ForEach(source => - { - source.SpendStateNm = string.IsNullOrEmpty(source.MoneyState) ? "" - : source.MoneyState.Equals(SpendConsts.Settled) ? "已结算" : "未结算"; - - source.SpendPriceStr = string.IsNullOrEmpty(source.SpendPrice + "") ? "" - : Decimal.Parse(source.SpendPrice.ToString()).ToString("#,##0.00").ToString(); - - source.SpendMoneyStr = string.IsNullOrEmpty(source.SpendMoney + "") ? "" - : Decimal.Parse(source.SpendMoney.ToString()).ToString("#,##0.00").ToString(); - }); - return ls; - } - #endregion - - #region 根据房间编号查询消费信息 - /// - /// 根据房间编号查询消费信息 - /// - /// - /// - public List SelectSpendByRoomNo(string No) - { - List ls = new List(); - ls = base.GetList(a => a.RoomNo == No && a.MoneyState.Equals(SpendConsts.UnSettle) && a.delete_mk != 1); - ls.ForEach(source => - { - source.SpendStateNm = string.IsNullOrEmpty(source.MoneyState) ? "" - : source.MoneyState.Equals(SpendConsts.Settled) ? "已结算" : "未结算"; - - source.SpendPriceStr = string.IsNullOrEmpty(source.SpendPrice + "") ? "" - : Decimal.Parse(source.SpendPrice.ToString()).ToString("#,##0.00").ToString(); - - source.SpendMoneyStr = string.IsNullOrEmpty(source.SpendMoney + "") ? "" - : Decimal.Parse(source.SpendMoney.ToString()).ToString("#,##0.00").ToString(); - }); - return ls; - } - #endregion - - #region 查询消费的所有信息 - /// - /// 查询消费的所有信息 - /// - /// - public List SelectSpendInfoAll() - { - List ls = new List(); - ls = base.GetList(a => a.delete_mk != 1).OrderByDescending(a => a.SpendTime).ToList(); - ls.ForEach(source => - { - source.SpendStateNm = string.IsNullOrEmpty(source.MoneyState) ? "" - : source.MoneyState.Equals(SpendConsts.Settled) ? "已结算" : "未结算"; - - source.SpendPriceStr = string.IsNullOrEmpty(source.SpendPrice + "") ? "" - : Decimal.Parse(source.SpendPrice.ToString()).ToString("#,##0.00").ToString(); - - source.SpendMoneyStr = string.IsNullOrEmpty(source.SpendMoney + "") ? "" - : Decimal.Parse(source.SpendMoney.ToString()).ToString("#,##0.00").ToString(); - }); - return ls; - } - #endregion - - - - #region 根据房间号查询消费的所有信息 - /// - /// 根据房间号查询消费的所有信息 - /// - /// - public List SelectSpendInfoRoomNo(string RoomNo) - { - List ls = new List(); - ls = base.GetList(a => a.RoomNo == RoomNo && a.delete_mk != 1 && a.MoneyState.Equals(SpendConsts.UnSettle)); - ls.ForEach(source => - { - source.SpendStateNm = string.IsNullOrEmpty(source.MoneyState) ? "" - : source.MoneyState.Equals(SpendConsts.Settled) ? "已结算" : "未结算"; - - source.SpendPriceStr = string.IsNullOrEmpty(source.SpendPrice + "") ? "" - : Decimal.Parse(source.SpendPrice.ToString()).ToString("#,##0.00").ToString(); - - source.SpendMoneyStr = string.IsNullOrEmpty(source.SpendMoney + "") ? "" - : Decimal.Parse(source.SpendMoney.ToString()).ToString("#,##0.00").ToString(); - }); - return ls; - } - #endregion - - #region 根据房间编号、入住时间到当前时间查询消费总金额 - /// - /// 根据房间编号、入住时间到当前时间查询消费总金额 - /// - /// - /// - /// - public object SelectMoneyByRoomNoAndTime(string roomno,string custono) - { - return base.GetList(a => a.RoomNo == roomno && a.CustoNo == custono && a.MoneyState.Equals(SpendConsts.UnSettle)).Sum(a => a.SpendMoney); - } - #endregion - - #region 根据房间编号、入住时间和当前时间修改结算状态 - /// - /// 根据房间编号、入住时间和当前时间修改结算状态 - /// - /// - /// - /// - public bool UpdateMoneyState(string roomno, string checktime) - { - return base.Update(a => new Spend() - { - MoneyState = SpendConsts.Settled, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.RoomNo == roomno && a.SpendTime >= Convert.ToDateTime(checktime) && a.SpendTime <= DateTime.Now); - } - #endregion - - #region 将转房前的未结算记录一同转移到新房间 - /// - /// 将转房前的未结算记录一同转移到新房间 - /// - /// - /// - /// - /// - public bool UpdateSpendInfoByRoomNo(List spends, string newRoom, string custoNo) - { - var listSpendId = spends.Select(a => a.SpendName).Distinct().ToList(); - - return base.Update(a => new Spend() - { - RoomNo = newRoom, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => listSpendId.Contains(a.RoomNo) && a.CustoNo == custoNo && a.MoneyState.Equals(SpendConsts.UnSettle) && a.SpendTime >= DateTime.Now - && a.SpendTime <= DateTime.Now); - - - } - #endregion - - /// - /// 更新消费信息 - /// - /// - /// - public bool UpdSpenInfo(Spend spend) - { - return base.Update(a => new Spend() - { - SpendAmount = spend.SpendAmount, - SpendMoney = spend.SpendMoney, - - }, a => a.MoneyState.Equals(SpendConsts.UnSettle) - && a.RoomNo.Equals(spend.RoomNo) - && a.CustoNo.Equals(spend.CustoNo) - && a.SpendName.Equals(spend.SpendName)); - } - - } -} diff --git a/SYS.Application/Business/Wti/IWtiService.cs b/SYS.Application/Business/Wti/IWtiService.cs deleted file mode 100644 index 83b2729..0000000 --- a/SYS.Application/Business/Wti/IWtiService.cs +++ /dev/null @@ -1,117 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 水电信息接口 - /// - public interface IWtiService - { - #region 根据房间编号查询水电费信息 - /// - /// 根据房间编号查询水电费信息 - /// - /// - /// - Wti SelectWtiInfoByRoomNo(string roomNo); - #endregion - - #region 根据房间编号、使用时间查询水电费信息 - /// - /// 根据房间编号、使用时间查询水电费信息 - /// - /// - /// - /// - /// - Wti SelectWtiInfoByRoomNoAndTime(string roomno, string usedate, string enddate); - #endregion - - #region 获取所有水电费信息 - /// - /// 获取所有水电费信息 - /// - /// - List SelectWtiInfoAll(); - #endregion - - #region 添加水电费信息 - /// - /// 添加水电费信息 - /// - /// - /// - bool InsertWtiInfo(Wti w); - #endregion - - #region 修改水电费信息(根据房间编号) - /// - /// 修改水电费信息(根据房间编号) - /// - /// - /// - bool UpdateWtiInfo(Wti w); - #endregion - - #region 根据房间信息、使用时间修改水电费 - /// - /// 根据房间信息、使用时间修改水电费 - /// - /// - /// - bool UpdateWtiInfoByRoomNoAndDateTime(Wti w); - #endregion - - #region 删除水电费信息:根据房间编号 - /// - /// 删除水电费信息:根据房间编号 - /// - /// - /// - //bool DeleteWtiInfo(string roomno); - #endregion - - #region 根据房间编号、使用时间删除水电费信息 - /// - /// 根据房间编号、使用时间删除水电费信息 - /// - /// - /// - /// - /// - bool DeleteWtiInfoByRoomNoAndDateTime(string roomno, string usedate, string enddate); - #endregion - - #region 根据房间编号获取该房间所有水电费信息 - /// - /// 获取所有水电费信息 - /// - /// - List ListWtiInfoByRoomNo(string roomno); - #endregion - } -} \ No newline at end of file diff --git a/SYS.Application/Business/Wti/WtiService.cs b/SYS.Application/Business/Wti/WtiService.cs deleted file mode 100644 index eec4cdf..0000000 --- a/SYS.Application/Business/Wti/WtiService.cs +++ /dev/null @@ -1,188 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 水电信息接口实现类 - /// - public class WtiService:Repository, IWtiService - { - #region 根据房间编号查询水电费信息 - /// - /// 根据房间编号查询水电费信息 - /// - /// - /// - public Wti SelectWtiInfoByRoomNo(string roomNo) - { - Wti w = new Wti(); - w = base.GetSingle(a => a.RoomNo.Contains(roomNo) && a.delete_mk != 1); - return w; - } - #endregion - - #region 根据房间编号、使用时间查询水电费信息 - /// - /// 根据房间编号、使用时间查询水电费信息 - /// - /// - /// - /// - /// - public Wti SelectWtiInfoByRoomNoAndTime(string roomno, string usedate, string enddate) - { - Wti w = null; - string sql = "select * from WTINFO where RoomNo='" + roomno + - "' and UseDate='" + usedate + "' and EndDate='" + enddate + "'"; - w = base.GetSingle(a => a.RoomNo == roomno && a.UseDate >= Convert.ToDateTime(usedate) && a.EndDate >= Convert.ToDateTime(enddate)); - return w; - } - #endregion - - #region 获取所有水电费信息 - /// - /// 获取所有水电费信息 - /// - /// - public List SelectWtiInfoAll() - { - List wti = new List(); - wti = base.GetList(a => a.delete_mk != 1); - return wti; - } - #endregion - - - #region 根据房间编号获取该房间所有水电费信息 - /// - /// 获取所有水电费信息 - /// - /// - public List ListWtiInfoByRoomNo(string roomno) - { - List wti = new List(); - wti = base.GetList(a => a.delete_mk != 1 && a.RoomNo.Equals(roomno)); - return wti; - } - #endregion - - #region 添加水电费信息 - /// - /// 添加水电费信息 - /// - /// - /// - public bool InsertWtiInfo(Wti w) - { - return base.Insert(w); - } - #endregion - - #region 修改水电费信息(根据房间编号) - /// - /// 修改水电费信息(根据房间编号) - /// - /// - /// - public bool UpdateWtiInfo(Wti w) - { - return base.Update(a => new Wti() - { - UseDate = w.UseDate, - EndDate = w.EndDate, - WaterUse = w.WaterUse, - PowerUse = w.PowerUse, - Record = w.Record, - CustoNo = w.CustoNo, - datachg_usr = w.datachg_usr, - datachg_date = w.datachg_date, - RoomNo = w.RoomNo - },a => a.WtiNo == w.WtiNo); - - } - #endregion - - #region 根据房间信息、使用时间修改水电费 - /// - /// 根据房间信息、使用时间修改水电费 - /// - /// - /// - public bool UpdateWtiInfoByRoomNoAndDateTime(Wti w) - { - return base.Update(a => new Wti() - { - WaterUse = w.WaterUse, - PowerUse = w.PowerUse, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now, - },a => a.RoomNo == w.RoomNo && a.UseDate >= w.UseDate && a.EndDate >= w.EndDate); - } - #endregion - - #region 删除水电费信息:根据房间编号 - /// - /// 删除水电费信息:根据房间编号 - /// - /// - /// - //public bool DeleteWtiInfo(string roomno) - //{ - // return base.Update(a => new Wti() - // { - // delete_mk = 1, - // datachg_usr = LoginInfo.WorkerNo, - // datachg_date = DateTime.Now - // }, a => a.WtiNo == roomno); - //} - #endregion - - #region 根据房间编号、使用时间删除水电费信息 - /// - /// 根据房间编号、使用时间删除水电费信息 - /// - /// - /// - /// - /// - public bool DeleteWtiInfoByRoomNoAndDateTime(string roomno, string usedate, string enddate) - { - string sql = "delete from WTINFO where RoomNo='{0}' and UseDate='{1}' and EndDate='{2}'"; - sql = string.Format(sql, roomno, usedate, enddate); - return base.Update(a => new Wti() - { - delete_mk = 1, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.RoomNo == roomno && a.UseDate >= Convert.ToDateTime(usedate) && a.EndDate >= Convert.ToDateTime(enddate)); - } - #endregion - } -} diff --git a/SYS.Application/Properties/AssemblyInfo.cs b/SYS.Application/Properties/AssemblyInfo.cs deleted file mode 100644 index b8374f0..0000000 --- a/SYS.Application/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// 有关程序集的一般信息由以下 -// 控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("SYS.Application")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("java-and-net")] -[assembly: AssemblyProduct("SYS.Application")] -[assembly: AssemblyCopyright("Copyright © 2020 java-and-net")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 会使此程序集中的类型 -//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 -//请将此类型的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("600f4cc8-4323-4237-a55c-bfef4b67d57c")] - -// 程序集的版本信息由下列四个值组成: -// -// 主版本 -// 次版本 -// 生成号 -// 修订号 -// -// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 -//通过使用 "*",如下所示: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.4.0.0")] -[assembly: AssemblyFileVersion("1.4.0.0")] diff --git a/SYS.Application/SYS.Application.csproj b/SYS.Application/SYS.Application.csproj deleted file mode 100644 index e57f2f1..0000000 --- a/SYS.Application/SYS.Application.csproj +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Debug - AnyCPU - {600F4CC8-4323-4237-A55C-BFEF4B67D57C} - Library - Properties - SYS.Application - SYS.Application - v4.7.1 - 512 - true - SAK - SAK - SAK - SAK - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x64 - bin\Debug\SYS.Application.xml - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - bitbug_favicon %281%29.ico - - - - ..\packages\jvncorelib.1.0.1.7\lib\net461\jvncorelib-fr.dll - - - False - ..\SYS.Library\MySql.Data.dll - - - False - ..\SYS.Library\MySql.Data.EntityFramework.dll - - - False - ..\SYS.Library\MySql.Web.dll - - - ..\packages\Npgsql.4.0.10\lib\net451\Npgsql.dll - - - ..\packages\SqlSugar.5.0.2\lib\SqlSugar.dll - - - - ..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll - - - - - ..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll - - - - ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll - - - ..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll - - - ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {65501af6-c629-448a-847e-1bcd60665865} - SYS.Common - - - {cd039d0f-bd50-4fbf-b9cd-cdfab25c7dfa} - SYS.Core - False - - - - - - - - - - - - \ No newline at end of file diff --git a/SYS.Application/Worker/IWorkerCheckService.cs b/SYS.Application/Worker/IWorkerCheckService.cs deleted file mode 100644 index a67ac0d..0000000 --- a/SYS.Application/Worker/IWorkerCheckService.cs +++ /dev/null @@ -1,64 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 员工打卡接口 - /// - public interface IWorkerCheckService - { - /// - /// 根据员工编号查询其所有的打卡记录 - /// - /// - /// - List SelectCheckInfoByWorkerNo(string wid); - - - /// - /// 查询员工签到天数 - /// - /// - /// - object SelectWorkerCheckDaySumByWorkerNo(string wkn); - - - /// - /// 查询今天员工是否已签到 - /// - /// - /// - object SelectToDayCheckInfoByWorkerNo(string wkn); - - /// - /// 添加员工打卡数据 - /// - /// - /// - bool AddCheckInfo(WorkerCheck workerCheck); - } -} \ No newline at end of file diff --git a/SYS.Application/Worker/IWorkerGoodBadService.cs b/SYS.Application/Worker/IWorkerGoodBadService.cs deleted file mode 100644 index d709da1..0000000 --- a/SYS.Application/Worker/IWorkerGoodBadService.cs +++ /dev/null @@ -1,48 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 员工奖惩信息接口 - /// - public interface IWorkerGoodBadService - { - /// - /// 添加员工奖惩记录 - /// - /// - /// - bool AddGoodBad(WorkerGoodBad goodBad); - - /// - /// 根据工号查找所有的奖惩记录信息 - /// - /// - /// - List SelectAllGoodBadByWorkNo(string wn); - } -} \ No newline at end of file diff --git a/SYS.Application/Worker/IWorkerHistoryService.cs b/SYS.Application/Worker/IWorkerHistoryService.cs deleted file mode 100644 index 55f84e6..0000000 --- a/SYS.Application/Worker/IWorkerHistoryService.cs +++ /dev/null @@ -1,48 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 员工履历信息接口 - /// - public interface IWorkerHistoryService - { - /// - /// 根据工号添加员工履历 - /// - /// - /// - bool AddHistoryByWorkerId(WorkerHistory workerHistory); - - /// - /// 根据工号查询履历信息 - /// - /// - /// - List SelectHistoryByWorkerId(string wid); - } -} \ No newline at end of file diff --git a/SYS.Application/Worker/IWorkerPicService.cs b/SYS.Application/Worker/IWorkerPicService.cs deleted file mode 100644 index 0738f6b..0000000 --- a/SYS.Application/Worker/IWorkerPicService.cs +++ /dev/null @@ -1,40 +0,0 @@ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 员工照片模块接口 - /// - public interface IWorkerPicService - { - /// - /// 查询员工照片 - /// - /// - /// - WorkerPic WorkerPic(WorkerPic workerPic); - /// - /// 添加员工照片 - /// - /// - /// - bool InsertWorkerPic(WorkerPic workerPic); - /// - /// 删除员工照片 - /// - /// - /// - bool DeleteWorkerPic(WorkerPic workerPic); - /// - /// 更新员工照片 - /// - /// - /// - bool UpdateWorkerPic(WorkerPic workerPic); - } -} diff --git a/SYS.Application/Worker/IWorkerService.cs b/SYS.Application/Worker/IWorkerService.cs deleted file mode 100644 index 1a3acae..0000000 --- a/SYS.Application/Worker/IWorkerService.cs +++ /dev/null @@ -1,102 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 员工信息接口 - /// - public interface IWorkerService - { - #region 修改员工信息 - /// - /// 修改员工信息 - /// - /// - /// - bool UpdateWorker(Worker worker); - #endregion - - /// - /// 员工账号禁/启用 - /// - /// - /// - bool ManagerWorkerAccount(Worker worker); - - /// - /// 更新员工职位和部门 - /// - /// - /// - - bool UpdateWorkerPositionAndClub(Worker worker); - - #region 添加员工信息 - /// - /// 添加员工信息 - /// - /// - /// - bool AddWorker(Worker worker); - #endregion - - #region 获取所有工作人员信息 - /// - /// 获取所有工作人员信息 - /// - /// - List SelectWorkerAll(); - #endregion - - #region 根据登录名称查询员工信息 - /// - /// 根据登录名称查询员工信息 - /// - /// - /// - Worker SelectWorkerInfoByWorkerId(string workerId); - #endregion - - #region 根据登录名称、密码查询员工信息 - /// - /// 根据登录名称、密码查询员工信息 - /// - /// - /// - Worker SelectWorkerInfoByWorkerIdAndWorkerPwd(Worker worker); - #endregion - - - /// - /// 根据员工编号和密码修改密码 - /// - /// - /// - /// - bool UpdWorkerPwdByWorkNo(string workId, string workPwd); - } -} \ No newline at end of file diff --git a/SYS.Application/Worker/WorkerCheckService.cs b/SYS.Application/Worker/WorkerCheckService.cs deleted file mode 100644 index 9aad694..0000000 --- a/SYS.Application/Worker/WorkerCheckService.cs +++ /dev/null @@ -1,89 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Linq; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 员工打卡接口实现类 - /// - public class WorkerCheckService:Repository, IWorkerCheckService - { - /// - /// 根据员工编号查询其所有的打卡记录 - /// - /// - /// - public List SelectCheckInfoByWorkerNo(string wid) - { - List workerChecks = new List(); - workerChecks = base.GetList(a => a.WorkerNo == wid && a.delete_mk != 1); - workerChecks.ForEach(source => - { - source.CheckStateNm = source.CheckState == 0 ? "打卡成功" : "打卡失败"; - }); - return workerChecks; - } - - - /// - /// 查询员工签到天数 - /// - /// - /// - public object SelectWorkerCheckDaySumByWorkerNo(string wkn) - { - return base.GetList(a => a.WorkerNo == wkn && a.delete_mk != 1).Count; - } - - - /// - /// 查询今天员工是否已签到 - /// - /// - /// - public object SelectToDayCheckInfoByWorkerNo(string wkn) - { - //string sql = "select Count(*) from WORKERCHECK where WorkerNo = '"+wkn+ "' and DATEDIFF(CURRENT_DATE(),workercheck.CheckTime)"; - var listCheckInfo = base.GetList(a => a.WorkerNo == wkn && a.delete_mk != 1); - var count = listCheckInfo.Where(a => a.CheckTime.ToShortDateString() == DateTime.Now.ToShortDateString()).Count() > 0 ? 1:0; - return count; - } - - /// - /// 添加员工打卡数据 - /// - /// - /// - public bool AddCheckInfo(WorkerCheck workerCheck) - { - return base.Insert(workerCheck); - } - } -} diff --git a/SYS.Application/Worker/WorkerGoodBadService.cs b/SYS.Application/Worker/WorkerGoodBadService.cs deleted file mode 100644 index 13797d2..0000000 --- a/SYS.Application/Worker/WorkerGoodBadService.cs +++ /dev/null @@ -1,77 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using MySql.Data.MySqlClient; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using SYS.Core; -using SYS.Common; - -namespace SYS.Application -{ - /// - /// 员工奖惩记录接口实现类 - /// - public class WorkerGoodBadService:Repository, IWorkerGoodBadService - { - /// - /// 添加员工奖惩记录 - /// - /// - /// - public bool AddGoodBad(WorkerGoodBad goodBad) - { - return base.Insert(goodBad); - } - - /// - /// 根据工号查找所有的奖惩记录信息 - /// - /// - /// - public List SelectAllGoodBadByWorkNo(string wn) - { - //查询所有超级管理员 - List admins = new List(); - admins = base.Change().GetList(a => a.DeleteMk != 1); - List gBTypes = new List(); - gBTypes = base.Change().GetList(a => a.delete_mk != 1); - List gb = new List(); - gb = base.GetList(a => a.WorkNo == wn); - gb.ForEach(source => - { - //奖惩类型 - var gbType = gBTypes.FirstOrDefault(a => a.GBTypeId == source.GBType); - source.TypeName = string.IsNullOrEmpty(gbType.GBName) ? "" : gbType.GBName; - - //操作人 - var admin = admins.FirstOrDefault(a => a.AdminAccount == source.GBOperation); - source.OperationName = string.IsNullOrEmpty(admin.AdminName) ? "" : admin.AdminName; - }); - return gb; - } - } -} diff --git a/SYS.Application/Worker/WorkerHistoryService.cs b/SYS.Application/Worker/WorkerHistoryService.cs deleted file mode 100644 index 617ede6..0000000 --- a/SYS.Application/Worker/WorkerHistoryService.cs +++ /dev/null @@ -1,59 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 员工履历接口实现类 - /// - public class WorkerHistoryService:Repository, IWorkerHistoryService - { - /// - /// 根据工号添加员工履历 - /// - /// - /// - public bool AddHistoryByWorkerId(WorkerHistory workerHistory) - { - return base.Insert(workerHistory); - } - - /// - /// 根据工号查询履历信息 - /// - /// - /// - public List SelectHistoryByWorkerId(string wid) - { - List why = new List(); - why = base.GetList(a => a.delete_mk != 1 && a.WorkerId == wid); - return why; - } - } -} diff --git a/SYS.Application/Worker/WorkerPicService.cs b/SYS.Application/Worker/WorkerPicService.cs deleted file mode 100644 index 22fb49c..0000000 --- a/SYS.Application/Worker/WorkerPicService.cs +++ /dev/null @@ -1,75 +0,0 @@ -using jvncorelib_fr.EncryptorLib; -using SYS.Common; -using SYS.Core; -using SYS.Core.Util; -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 员工照片接口实现类 - /// - public class WorkerPicService:Repository,IWorkerPicService - { - EncryptLib encryptLib = new EncryptLib(); - /// - /// 查询员工照片 - /// - /// - /// - public WorkerPic WorkerPic(WorkerPic workerPic) - { - var workerPicSource = new WorkerPic(); - - workerPicSource = base.GetSingle(a => a.WorkerId.Equals(workerPic.WorkerId)); - - if (workerPicSource != null) - { - workerPicSource.Pic = workerPicSource == null || string.IsNullOrEmpty(workerPicSource.Pic) ? "" : encryptLib.Decryption(HttpHelper.baseUrl) + workerPicSource.Pic; - } - - return workerPicSource; - } - /// - /// 添加员工照片 - /// - /// - /// - public bool InsertWorkerPic(WorkerPic workerPic) - { - return base.Insert(new WorkerPic - { - WorkerId = workerPic.WorkerId, - Pic = workerPic.Pic - }); - } - - /// - /// 删除员工照片 - /// - /// - /// - public bool DeleteWorkerPic(WorkerPic workerPic) - { - return base.Delete(a => a.WorkerId.Equals(workerPic.WorkerId)); - } - - /// - /// 更新员工照片 - /// - /// - /// - public bool UpdateWorkerPic(WorkerPic workerPic) - { - return base.Update(a=> new WorkerPic - { - Pic = workerPic.Pic - },a => a.WorkerId.Equals(workerPic.WorkerId)); - } - } -} diff --git a/SYS.Application/Worker/WorkerService.cs b/SYS.Application/Worker/WorkerService.cs deleted file mode 100644 index 476e564..0000000 --- a/SYS.Application/Worker/WorkerService.cs +++ /dev/null @@ -1,276 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Linq; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; -using jvncorelib_fr.EncryptorLib; - -namespace SYS.Application -{ - /// - /// 员工信息接口实现类 - /// - public class WorkerService:Repository,IWorkerService - { - /// - /// 实例化信息加密插件 - /// - EncryptLib encryptLib = new EncryptLib(); - - #region 修改员工信息 - /// - /// 修改员工信息 - /// - /// - /// - public bool UpdateWorker(Worker worker) - { - //加密联系方式 - var sourceTelStr = string.Empty; - if (!string.IsNullOrEmpty(worker.WorkerTel)) - { - sourceTelStr = encryptLib.Encryption(worker.WorkerTel); - } - //加密身份证 - var sourceIdStr = string.Empty; - if (!string.IsNullOrEmpty(worker.CardId)) - { - sourceIdStr = encryptLib.Encryption(worker.CardId); - } - worker.WorkerTel = sourceTelStr; - worker.CardId = sourceIdStr; - return base.Update(a => new Worker() - { - WorkerName = worker.WorkerName, - WorkerTel = worker.WorkerTel, - WorkerAddress = worker.WorkerAddress, - WorkerFace = worker.WorkerFace, - WorkerEducation = worker.WorkerEducation, - WorkerNation = worker.WorkerNation, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - },a => a.WorkerId.Equals(worker.WorkerId)); - - } - #endregion - - /// - /// 员工账号禁/启用 - /// - /// - /// - public bool ManagerWorkerAccount(Worker worker) - { - return new WorkerService().Update(a => new Worker() - { - delete_mk = worker.delete_mk - }, a => a.WorkerId == worker.WorkerId); - } - - /// - /// 更新员工职位和部门 - /// - /// - /// - - public bool UpdateWorkerPositionAndClub(Worker worker) - { - return base.Update(a => new Worker() - { - WorkerClub = worker.WorkerClub, - WorkerPosition = worker.WorkerPosition, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.WorkerId == worker.WorkerId); - } - - #region 添加员工信息 - /// - /// 添加员工信息 - /// - /// - /// - public bool AddWorker(Worker worker) - { - string NewID = encryptLib.Encryption(worker.CardId); - string NewTel = encryptLib.Encryption(worker.WorkerTel); - worker.CardId = NewID; - worker.WorkerTel = NewTel; - return base.Insert(worker); - } - #endregion - - #region 获取所有工作人员信息 - /// - /// 获取所有工作人员信息 - /// - /// - public List SelectWorkerAll() - { - //查询所有教育程度信息 - List educations = new List(); - educations = base.Change().GetList(a => a.delete_mk != 1); - //查询所有性别类型信息 - List sexTypes = new List(); - sexTypes = base.Change().GetList(a => a.delete_mk != 1); - //查询所有民族类型信息 - List nations = new List(); - nations = base.Change().GetList(a => a.delete_mk != 1); - //查询所有部门信息 - List depts = new List(); - depts = base.Change().GetList(a => a.delete_mk != 1); - //查询所有职位信息 - List positions = new List(); - positions = base.Change().GetList(a => a.delete_mk != 1); - //查询所有员工信息 - List workers = new List(); - workers = base.Change().GetList(); - workers.ForEach(source => - { - //解密身份证号码 - var sourceStr = source.CardId.Contains("·") ? encryptLib.Decryption(source.CardId) : source.CardId; - source.CardId = sourceStr; - //解密联系方式 - var sourceTelStr = source.WorkerTel.Contains("·") ? encryptLib.Decryption(source.WorkerTel) : source.WorkerTel; - source.WorkerTel = sourceTelStr; - //性别类型 - var sexType = sexTypes.FirstOrDefault(a => a.sexId == source.WorkerSex); - source.WorkerSexName = string.IsNullOrEmpty(sexType.sexName) ? "" : sexType.sexName; - //教育程度 - var eduction = educations.FirstOrDefault(a => a.education_no == source.WorkerEducation); - source.EducationName = string.IsNullOrEmpty(eduction.education_name) ? "" : eduction.education_name; - //民族类型 - var nation = nations.FirstOrDefault(a => a.nation_no == source.WorkerNation); - source.NationName = string.IsNullOrEmpty(nation.nation_name) ? "" : nation.nation_name; - //部门 - var dept = depts.FirstOrDefault(a => a.dept_no == source.WorkerClub); - source.ClubName = string.IsNullOrEmpty(dept.dept_name) ? "" : dept.dept_name; - //职位 - var position = positions.FirstOrDefault(a => a.position_no == source.WorkerPosition); - source.PositionName = string.IsNullOrEmpty(position.position_name) ? "" : position.position_name; - }); - - return workers; - } - #endregion - - #region 根据登录名称查询员工信息 - /// - /// 根据登录名称查询员工信息 - /// - /// - /// - public Worker SelectWorkerInfoByWorkerId(string workerId) - { - Worker w = new Worker(); - w = base.Change().GetSingle(a => a.WorkerId == workerId); - //解密身份证号码 - var sourceStr = w.CardId.Contains("·") ? encryptLib.Decryption(w.CardId) : w.CardId; - w.CardId = sourceStr; - //解密联系方式 - var sourceTelStr = w.WorkerTel.Contains("·") ? encryptLib.Decryption(w.WorkerTel) : w.WorkerTel; - w.WorkerTel = sourceTelStr; - //性别类型 - var sexType = base.Change().GetSingle(a => a.sexId == w.WorkerSex); - w.WorkerSexName = string.IsNullOrEmpty(sexType.sexName) ? "" : sexType.sexName; - //教育程度 - var eduction = base.Change().GetSingle(a => a.education_no == w.WorkerEducation); - w.EducationName = string.IsNullOrEmpty(eduction.education_name) ? "" : eduction.education_name; - //民族类型 - var nation = base.Change().GetSingle(a => a.nation_no == w.WorkerNation); - w.NationName = string.IsNullOrEmpty(nation.nation_name) ? "" : nation.nation_name; - //部门 - var dept = base.Change().GetSingle(a => a.dept_no == w.WorkerClub); - w.ClubName = string.IsNullOrEmpty(dept.dept_name) ? "" : dept.dept_name; - //职位 - var position = base.Change().GetSingle(a => a.position_no == w.WorkerPosition); - w.PositionName = string.IsNullOrEmpty(position.position_name) ? "" : position.position_name; - return w; - } - #endregion - - #region 根据登录名称、密码查询员工信息 - /// - /// 根据登录名称、密码查询员工信息 - /// - /// - /// - public Worker SelectWorkerInfoByWorkerIdAndWorkerPwd(Worker worker) - { - Worker w = new Worker(); - w = base.GetSingle(a => a.WorkerId == worker.WorkerId); - if (w == null) - { - w = null; - return w; - } - - var sourceStr = w.WorkerPwd.Contains("·") ? encryptLib.Decryption(w.WorkerPwd) : w.WorkerPwd; - if (sourceStr != worker.WorkerPwd) - { - w = null; - return w; - } - - //性别类型 - var sexType = base.Change().GetSingle(a => a.sexId == w.WorkerSex); - w.WorkerSexName = string.IsNullOrEmpty(sexType.sexName) ? "" : sexType.sexName; - //教育程度 - var eduction = base.Change().GetSingle(a => a.education_no == w.WorkerEducation); - w.EducationName = string.IsNullOrEmpty(eduction.education_name) ? "" : eduction.education_name; - //民族类型 - var nation = base.Change().GetSingle(a => a.nation_no == w.WorkerNation); - w.NationName = string.IsNullOrEmpty(nation.nation_name) ? "" : nation.nation_name; - //部门 - var dept = base.Change().GetSingle(a => a.dept_no == w.WorkerClub); - w.ClubName = string.IsNullOrEmpty(dept.dept_name) ? "" : dept.dept_name; - //职位 - var position = base.Change().GetSingle(a => a.position_no == w.WorkerPosition); - w.PositionName = string.IsNullOrEmpty(position.position_name) ? "" : position.position_name; - return w; - } - #endregion - - /// - /// 根据员工编号和密码修改密码 - /// - /// - /// - /// - public bool UpdWorkerPwdByWorkNo(string workId,string workPwd) - { - string NewPwd = encryptLib.Decryption(workPwd); - return base.Update(a => new Worker() - { - WorkerPwd = NewPwd, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.WorkerId == workId); - } - - } -} diff --git a/SYS.Application/Zero/AdminModuleZeroService.cs b/SYS.Application/Zero/AdminModuleZeroService.cs deleted file mode 100644 index 7565cf9..0000000 --- a/SYS.Application/Zero/AdminModuleZeroService.cs +++ /dev/null @@ -1,138 +0,0 @@ -using SYS.Common; -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 管理员模块权限管理接口实现类 - /// - public class AdminModuleZeroService:Repository, IAdminModuleZeroService - { - /// - /// 获取所有模块 - /// - /// - public List GetAllModule() - { - List modules = base.Change().GetList(); - modules.ForEach(source => - { - switch (source.module_name) - { - case ModuleConsts.BaseInfo: - source.module_name = ModuleConsts.BaseInfo + "||" + "基础信息"; - break; - case ModuleConsts.CashInfo: - source.module_name = ModuleConsts.CashInfo + "||" + "财务信息"; - break; - case ModuleConsts.WtiInfo: - source.module_name = ModuleConsts.WtiInfo + "||" + "水电管理"; - break; - case ModuleConsts.CheckInfo: - source.module_name = ModuleConsts.CheckInfo + "||" + "监管统计"; - break; - case ModuleConsts.RoomManager: - source.module_name = ModuleConsts.RoomManager + "||" + "客房管理"; - break; - case ModuleConsts.CustomerManager: - source.module_name = ModuleConsts.CustomerManager + "||" + "客户管理"; - break; - case ModuleConsts.HumanResourcesManager: - source.module_name = ModuleConsts.HumanResourcesManager + "||" + "人事管理"; - break; - case ModuleConsts.MaterialManager: - source.module_name = ModuleConsts.MaterialManager + "||" + "物资管理"; - break; - case ModuleConsts.OperationLogManager: - source.module_name = ModuleConsts.OperationLogManager + "||" + "员工操作日志"; - break; - case ModuleConsts.AdminManager: - source.module_name = ModuleConsts.AdminManager + "||" + "系统管理"; - break; - } - }); - return modules; - } - - /// - /// 根据账号获取对应模块 - /// - /// - /// - public List GetAllModuleByAdmin(Admin admin) - { - List moduleZeros = base.GetList(a => a.admin_account.Equals(admin.AdminAccount) - && a.module_enable == 1); - moduleZeros.ForEach(source => - { - switch (source.module_name) - { - case ModuleConsts.BaseInfo: - source.module_name = ModuleConsts.BaseInfo + "||" + "基础信息"; - break; - case ModuleConsts.CashInfo: - source.module_name = ModuleConsts.CashInfo + "||" + "财务信息"; - break; - case ModuleConsts.WtiInfo: - source.module_name = ModuleConsts.WtiInfo + "||" + "水电管理"; - break; - case ModuleConsts.CheckInfo: - source.module_name = ModuleConsts.CheckInfo + "||" + "监管统计"; - break; - case ModuleConsts.RoomManager: - source.module_name = ModuleConsts.RoomManager + "||" + "客房管理"; - break; - case ModuleConsts.CustomerManager: - source.module_name = ModuleConsts.CustomerManager + "||" + "客户管理"; - break; - case ModuleConsts.HumanResourcesManager: - source.module_name = ModuleConsts.HumanResourcesManager + "||" + "人事管理"; - break; - case ModuleConsts.MaterialManager: - source.module_name = ModuleConsts.MaterialManager + "||" + "物资管理"; - break; - case ModuleConsts.OperationLogManager: - source.module_name = ModuleConsts.OperationLogManager + "||" + "员工操作日志"; - break; - case ModuleConsts.AdminManager: - source.module_name = ModuleConsts.AdminManager + "||" + "系统管理"; - break; - } - }); - return moduleZeros; - } - - /// - /// 批量添加模块 - /// - /// - /// - public bool AddModuleZeroList(List moduleZeros) - { - moduleZeros.ForEach(moduleZero => - { - moduleZero.module_name = moduleZero.module_name.Split('|','|').FirstOrDefault().ToString(); - }); - var result = base.InsertRange(moduleZeros); - return result; - } - - /// - /// 批量删除模块 - /// - /// - /// - public bool DelModuleZeroList(ModuleZero moduleZero) - { - var result = base.Delete(a => a.admin_account.Equals(moduleZero.admin_account)); - return result; - } - - - } -} diff --git a/SYS.Application/Zero/AdminService.cs b/SYS.Application/Zero/AdminService.cs deleted file mode 100644 index d4da24d..0000000 --- a/SYS.Application/Zero/AdminService.cs +++ /dev/null @@ -1,183 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using jvncorelib_fr.EncryptorLib; -using SYS.Common; -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace SYS.Application -{ - /// - /// 管理员数据访问层 - /// - public class AdminService:Repository, IAdminService - { - EncryptLib encryptLib = new EncryptLib(); - - #region 根据超管密码查询员工类型和权限 - /// - /// 根据超管密码查询员工类型和权限 - /// - /// - /// - public Admin SelectMangerByPass(Admin admin) - { - Admin admins = new Admin(); - admins = base.GetSingle(a => a.AdminAccount == admin.AdminAccount && a.AdminPassword == admin.AdminPassword); - //admin.AdminPassword = admin.AdminPassword.Contains(":") ? encrypt.DeEncryptStr(admin.AdminPassword) : admin.AdminPassword; - return admins; - } - #endregion - - #region 根据超管账号查询对应的密码 - /// - /// 根据超管账号查询对应的密码 - /// - /// - /// - public Admin SelectAdminPwdByAccount(string account) - { - Admin admin = new Admin(); - admin = base.GetSingle(a => a.AdminAccount == account); - //admin.AdminPassword = admin.AdminPassword.Contains(":") ? encrypt.DeEncryptStr(admin.AdminPassword) : admin.AdminPassword; - return admin; - } - #endregion - - /// - /// 获取所有管理员列表 - /// - /// - public List GetAllAdminList() - { - var listAdmins = base.GetList(); - var listAdminType = base.Change().GetList(a => a.delete_mk != 1); - listAdmins.ForEach(admins => - { - var isAdminType = admins.IsAdmin == 1 ? "是" : "否"; - admins.IsAdminNm = isAdminType; - - var adminType = listAdminType.FirstOrDefault(a => a.type_id.Equals(admins.AdminType)); - admins.TypeName = adminType == null ? "" : adminType.type_name; - - var adminDelete = admins.DeleteMk == 1 ? "是" : "否"; - admins.DeleteNm = adminDelete; - - }); - - return listAdmins; - } - - /// - /// 修改密码 - /// - /// - /// - public bool UpdateNewPwdByOldPwd(Admin admin) - { - //admin.AdminPassword = encrypt.EncryptStr(admin.AdminPassword); - return base.Update(a => new Admin() - { - AdminPassword = admin.AdminPassword, - datachg_usr = AdminInfo.Account, - datachg_time = DateTime.Now - },a => a.AdminAccount == admin.AdminAccount); - } - - /// - /// 获取管理员列表(已启用) - /// - /// - public List GetAllAdmin() - { - var listAdmin = base.GetList(a => a.DeleteMk != 1); - var listAdminType = base.Change().GetList(a => a.delete_mk != 1); - listAdmin.ForEach(admin => - { - var isAdminType = admin.IsAdmin == 1 ? "是" : "否"; - admin.IsAdminNm = isAdminType; - - var adminType = listAdminType.FirstOrDefault(a => a.type_id.Equals(admin.AdminType)); - admin.TypeName = adminType == null ? "" : adminType.type_name; - }); - return listAdmin; - } - - /// - /// 添加管理员 - /// - /// - /// - public bool AddAdmin(Admin admin) - { - //admin.AdminPassword = encrypt.EncryptStr(admin.AdminPassword); - bool result = base.Insert(admin); - return result; - } - - /// - /// 获取管理员信息 - /// - /// - /// - public Admin GetAdminInfoByAdminAccount(Admin admin) - { - var adminInfo = base.GetSingle(a => a.AdminAccount.Equals(admin.AdminAccount)); - if (adminInfo != null) - { - var adminType = base.Change().GetSingle(a => a.type_id.Equals(adminInfo.AdminType)); - adminInfo.TypeName = adminType.type_name; - } - return adminInfo; - } - - /// - /// 获取所有管理员类型 - /// - /// - public List GetAllAdminTypes() - { - var listAdminTypes = base.Change().GetList(a => a.delete_mk != 1); - return listAdminTypes; - } - - /// - /// 更新管理员账户 - /// - /// - /// - public bool UpdAccount(Admin admins) - { - admins.DeleteMk = admins.DeleteMk == 0 ? 1 : 0; - return base.Update(a => new Admin() - { - DeleteMk = admins.DeleteMk - },a => a.Id == admins.Id); - } - - - } -} diff --git a/SYS.Application/Zero/BaseService.cs b/SYS.Application/Zero/BaseService.cs deleted file mode 100644 index 3c01f2f..0000000 --- a/SYS.Application/Zero/BaseService.cs +++ /dev/null @@ -1,685 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using jvncorelib_fr.EntityLib; -using MySql.Data.MySqlClient; -using SqlSugar; -using SYS.Common; -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 基础信息接口实现类 - /// - public class BaseService: Repository,IBaseService - { - - #region 性别模块 - - /// - /// 查询所有性别类型 - /// - /// - public List SelectSexTypeAll(SexType sexType = null) - { - var where = Expressionable.Create(); - if (sexType != null && sexType.sexName.IsNullOrEmpty()) - { - where = where.And(a => a.delete_mk == sexType.delete_mk); - } - if (sexType != null && !sexType.sexName.IsNullOrEmpty()) - { - where = where.And(a => a.sexName.Contains(sexType.sexName)); - } - return base.Change().GetList(where.ToExpression()); - } - - /// - /// 查询性别类型 - /// - /// - public SexType SelectSexType(SexType sexType) - { - SexType sexTypes = new SexType(); - sexTypes = base.GetSingle(a => a.sexId == sexType.sexId); - return sexTypes; - } - - /// - /// 添加性别类型 - /// - /// - /// - public bool AddSexType(SexType sexType) - { - return base.Insert(sexType); - } - - /// - /// 删除性别类型 - /// - /// - /// - public bool DelSexType(SexType sexType) - { - return base.Update(a => new SexType() - { - delete_mk = sexType.delete_mk, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.sexId == sexType.sexId); - } - - /// - /// 更新性别类型 - /// - /// - /// - public bool UpdSexType(SexType sexType) - { - return base.Update(a => new SexType() - { - sexName = sexType.sexName, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.sexId == sexType.sexId); - } - - #endregion - - #region 职位模块 - - /// - /// 查询所有职位类型 - /// - /// - public List SelectPositionAll(Position position = null) - { - var where = Expressionable.Create(); - if (position != null && position.position_name.IsNullOrEmpty()) - { - where = where.And(a => a.delete_mk == position.delete_mk); - } - if (position != null && !position.position_name.IsNullOrEmpty()) - { - where = where.And(a => a.position_name.Contains(position.position_name)); - } - return base.Change().GetList(where.ToExpression()); - } - - /// - /// 查询职位类型 - /// - /// - public Position SelectPosition(Position position) - { - Position position1 = new Position(); - position1 = base.Change().GetSingle(a => a.position_no == position.position_no); - return position1; - } - - /// - /// 添加职位类型 - /// - /// - /// - public bool AddPosition(Position position) - { - return base.Change().Insert(position); - } - - /// - /// 删除职位类型 - /// - /// - /// - public bool DelPosition(Position position) - { - return base.Change().Update(a => new Position() - { - delete_mk = position.delete_mk, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.position_no == position.position_no); - } - - /// - /// 更新职位类型 - /// - /// - /// - public bool UpdPosition(Position position) - { - return base.Change().Update(a => new Position() - { - position_name = position.position_name, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.position_no == position.position_no); - } - - #endregion - - #region 民族模块 - - /// - /// 查询所有民族类型 - /// - /// - public List SelectNationAll(Nation nation = null) - { - var where = Expressionable.Create(); - if (nation != null && nation.nation_name.IsNullOrEmpty()) - { - where = where.And(a => a.delete_mk == nation.delete_mk); - } - if (nation != null && !nation.nation_name.IsNullOrEmpty()) - { - where = where.And(a => a.nation_name.Contains(nation.nation_name)); - } - return base.Change().GetList(where.ToExpression()); - } - - /// - /// 查询民族类型 - /// - /// - public Nation SelectNation(Nation nation) - { - Nation nation1 = new Nation(); - nation1 = base.Change().GetSingle(a => a.nation_no.Equals(nation.nation_no)); - return nation1; - } - - /// - /// 添加民族类型 - /// - /// - /// - public bool AddNation(Nation nation) - { - return base.Change().Insert(nation); - } - - /// - /// 删除民族类型 - /// - /// - /// - public bool DelNation(Nation nation) - { - return base.Change().Update(a => new Nation() - { - delete_mk = nation.delete_mk, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.nation_no.Equals(nation.nation_no)); - - } - - /// - /// 更新民族类型 - /// - /// - /// - public bool UpdNation(Nation nation) - { - return base.Change().Update(a => new Nation() - { - nation_name = nation.nation_name, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.nation_no.Equals(nation.nation_no)); - } - - #endregion - - #region 学历模块 - - /// - /// 查询所有学历类型 - /// - /// - public List SelectEducationAll(Education education = null) - { - var where = Expressionable.Create(); - if (education != null && education.education_name.IsNullOrEmpty()) - { - where = where.And(a => a.delete_mk == education.delete_mk); - } - if (education != null && !education.education_name.IsNullOrEmpty()) - { - where = where.And(a => a.education_name.Contains(education.education_name)); - } - return base.Change().GetList(where.ToExpression()); - } - - /// - /// 查询学历类型 - /// - /// - public Education SelectEducation(Education education) - { - Education education1 = new Education(); - education1 = base.Change().GetSingle(a => a.education_no == education.education_no); - return education1; - } - - /// - /// 添加学历类型 - /// - /// - /// - public bool AddEducation(Education education) - { - return base.Change().Insert(education); - } - - /// - /// 删除学历类型 - /// - /// - /// - public bool DelEducation(Education education) - { - return base.Change().Update(a => new Education() - { - delete_mk = education.delete_mk, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.education_no == education.education_no); - } - - /// - /// 更新学历类型 - /// - /// - /// - public bool UpdEducation(Education education) - { - return base.Change().Update(a => new Education() - { - education_name = education.education_name, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - }, a => a.education_no == education.education_no); - } - - #endregion - - #region 部门模块 - - /// - /// 查询所有部门类型(可用) - /// - /// - public List SelectDeptAllCanUse() - { - List workers = new List(); - workers = base.Change().GetList(a => a.delete_mk != 1); - List depts = new List(); - depts = base.Change().GetList(a => a.delete_mk != 1); - depts.ForEach(source => - { - var dept = depts.FirstOrDefault(a => a.dept_no == source.dept_parent); - source.parent_name = dept == null || string.IsNullOrEmpty(dept.dept_name) ? "无" : dept.dept_name; - var leader = workers.FirstOrDefault(a => source.dept_leader != null && a.WorkerId == source.dept_leader); - source.leader_name = leader == null || string.IsNullOrEmpty(leader.WorkerName) ? "无" : leader.WorkerName; - - }); - return depts; - } - - /// - /// 查询所有部门类型 - /// - /// - public List SelectDeptAll() - { - List workers = new List(); - workers = base.Change().GetList(a => a.delete_mk != 1); - List depts = new List(); - depts = base.Change().GetList(a => a.delete_mk != 1); - depts.ForEach(source => - { - var dept = depts.FirstOrDefault(a => a.dept_no == source.dept_parent); - source.parent_name = dept == null ? "" : dept.dept_name; - var leader = workers.FirstOrDefault(a => source.dept_leader != null && a.WorkerId == source.dept_leader); - source.leader_name = leader == null ? "" : leader.WorkerName; - }); - return depts; - } - - /// - /// 查询部门类型 - /// - /// - public Dept SelectDept(Dept dept) - { - Dept dept1 = new Dept(); - dept1 = base.Change().GetSingle(a => a.dept_no.Equals(dept.dept_no)); - return dept1; - } - - /// - /// 添加部门类型 - /// - /// - /// - public bool AddDept(Dept dept) - { - return base.Change().Insert(dept); - } - - /// - /// 删除部门类型 - /// - /// - /// - public bool DelDept(Dept dept) - { - return base.Change().Update(a => new Dept() - { - delete_mk = 1, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.dept_no == dept.dept_no); - } - - /// - /// 更新部门类型 - /// - /// - /// - public bool UpdDept(Dept dept) - { - return base.Change().Update(a => new Dept() - { - dept_name = dept.dept_name, - dept_desc = dept.dept_desc, - dept_leader = dept.dept_leader, - dept_parent = dept.dept_parent, - datachg_usr = LoginInfo.WorkerNo, - datachg_date = DateTime.Now - },a => a.dept_no == dept.dept_no); - } - - #endregion - - #region 客户类型模块 - - /// - /// 查询所有客户类型(可用) - /// - /// - public List SelectCustoTypeAllCanUse() - { - List custoTypes = new List(); - custoTypes = base.Change().GetList(a => a.delete_mk != 1); - return custoTypes; - } - - /// - /// 查询所有客户类型 - /// - /// - public List SelectCustoTypeAll() - { - List custoTypes = new List(); - custoTypes = base.Change().GetList(); - return custoTypes; - } - - /// - /// 根据客户类型ID查询类型名称 - /// - /// - /// - public CustoType SelectCustoTypeByTypeId(CustoType custoType) - { - CustoType custoTypes = new CustoType(); - custoType = base.Change().GetSingle(a => a.UserType == custoType.UserType && a.delete_mk != 1); - return custoTypes; - } - - /// - /// 添加客户类型 - /// - /// - /// - public bool InsertCustoType(CustoType custoType) - { - return base.Change().Insert(custoType); - } - - /// - /// 删除客户类型 - /// - /// - /// - public bool DeleteCustoType(CustoType custoType) - { - return base.Change().Update(a => new CustoType() - { - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - },a => a.UserType == custoType.UserType); - } - - /// - /// 更新客户类型 - /// - /// - /// - public bool UpdateCustoType(CustoType custoType) - { - return base.Change().Update(a => new CustoType() - { - TypeName = custoType.TypeName, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - },a => a.UserType == custoType.UserType); - } - - #endregion - - #region 证件类型模块 - - /// - /// 查询所有证件类型(可用) - /// - /// - public List SelectPassPortTypeAllCanUse() - { - List passPortTypes = new List(); - passPortTypes = base.Change().GetList(a => a.delete_mk != 1); - return passPortTypes; - } - - /// - /// 查询所有证件类型 - /// - /// - public List SelectPassPortTypeAll() - { - List passPortTypes = new List(); - passPortTypes = base.Change().GetList(); - return passPortTypes; - } - - /// - /// 根据证件类型ID查询类型名称 - /// - /// - /// - public PassPortType SelectPassPortTypeByTypeId(PassPortType passPortType) - { - PassPortType passPortType1 = new PassPortType(); - passPortType1 = base.Change().GetSingle(a => a.PassportId == passPortType.PassportId && a.delete_mk != 1); - return passPortType1; - } - - /// - /// 添加证件类型 - /// - /// - /// - public bool InsertPassPortType(PassPortType passPortType) - { - return base.Change().Insert(passPortType); - } - - /// - /// 删除证件类型 - /// - /// - /// - public bool DeletePassPortType(PassPortType portType) - { - return base.Change().Update(a => new PassPortType() - { - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.PassportId == portType.PassportId); - } - - /// - /// 更新证件类型 - /// - /// - /// - public bool UpdatePassPortType(PassPortType portType) - { - return base.Change().Update(a => new PassPortType() - { - PassportName = portType.PassportName, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.PassportId == portType.PassportId); - } - - #endregion - - #region 奖惩类型模块 - - /// - /// 查询所有奖惩类型(可用) - /// - /// - public List SelectGBTypeAllCanUse() - { - List gBTypes = new List(); - gBTypes = base.Change().GetList(a => a.delete_mk != 1); - return gBTypes; - } - - /// - /// 查询所有奖惩类型 - /// - /// - public List SelectGBTypeAll() - { - List gBTypes = new List(); - gBTypes = base.Change().GetList(); - return gBTypes; - } - - /// - /// 根据奖惩类型ID查询类型名称 - /// - /// - /// - public GBType SelectGBTypeByTypeId(GBType gBType) - { - GBType gBType1 = new GBType(); - gBType1 = base.Change().GetSingle(a => a.GBTypeId == gBType.GBTypeId && a.delete_mk != 1); - return gBType1; - } - - /// - /// 添加奖惩类型 - /// - /// - /// - public bool InsertGBType(GBType gBType) - { - return base.Change().Insert(gBType); - } - - /// - /// 删除奖惩类型 - /// - /// - /// - public bool DeleteGBType(GBType gBType) - { - return base.Change().Update(a => new GBType() - { - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.GBTypeId == gBType.GBTypeId); - } - - /// - /// 更新奖惩类型 - /// - /// - /// - public bool UpdateGBType(GBType gBType) - { - return base.Change().Update(a => new GBType() - { - GBName = gBType.GBName, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.GBTypeId == gBType.GBTypeId); - } - - #endregion - - #region URL模块 - /// - /// 基础URL - /// - /// - public Base GetBase() - { - var baseTemp = new Base(); - - baseTemp = base.Change().GetSingle(a => a.url_no == 1); - - return baseTemp; - } - #endregion - } -} diff --git a/SYS.Application/Zero/CheckInfoService.cs b/SYS.Application/Zero/CheckInfoService.cs deleted file mode 100644 index 34e406f..0000000 --- a/SYS.Application/Zero/CheckInfoService.cs +++ /dev/null @@ -1,49 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Data.SqlClient; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 监管统计接口实现类 - /// - public class CheckInfoService:Repository, ICheckInfoService - { - /// - /// 查询所有监管统计信息 - /// - /// - public List SelectCheckInfoAll() - { - List cif = new List(); - cif = base.GetList(a => a.delete_mk != 1); - return cif; - } - } -} diff --git a/SYS.Application/Zero/IAdminModuleZeroService.cs b/SYS.Application/Zero/IAdminModuleZeroService.cs deleted file mode 100644 index 4db8592..0000000 --- a/SYS.Application/Zero/IAdminModuleZeroService.cs +++ /dev/null @@ -1,43 +0,0 @@ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 管理员模块权限管理接口 - /// - public interface IAdminModuleZeroService - { - /// - /// 获取所有模块 - /// - /// - List GetAllModule(); - - /// - /// 根据账号获取对应模块 - /// - /// - /// - List GetAllModuleByAdmin(Admin admin); - - /// - /// 批量添加模块 - /// - /// - /// - bool AddModuleZeroList(List moduleZeros); - - /// - /// 批量删除模块 - /// - /// - /// - bool DelModuleZeroList(ModuleZero moduleZero); - - } -} diff --git a/SYS.Application/Zero/IAdminService.cs b/SYS.Application/Zero/IAdminService.cs deleted file mode 100644 index 4e62b3f..0000000 --- a/SYS.Application/Zero/IAdminService.cs +++ /dev/null @@ -1,100 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 管理员数据访问接口 - /// - public interface IAdminService - { - - #region 根据超管密码查询员工类型和权限 - /// - /// 根据超管密码查询员工类型和权限 - /// - /// - /// - Admin SelectMangerByPass(Admin admin); - #endregion - - - #region 根据超管账号查询对应的密码 - /// - /// 根据超管账号查询对应的密码 - /// - /// - /// - Admin SelectAdminPwdByAccount(string account); - #endregion - - /// - /// 获取所有管理员列表 - /// - /// - List GetAllAdminList(); - - /// - /// 修改密码 - /// - /// - /// - bool UpdateNewPwdByOldPwd(Admin admin); - - /// - /// 获取管理员列表 - /// - /// - List GetAllAdmin(); - - /// - /// 添加管理员 - /// - /// - /// - bool AddAdmin(Admin admin); - - /// - /// 获取管理员信息 - /// - /// - /// - Admin GetAdminInfoByAdminAccount(Admin admin); - - /// - /// 获取所有管理员类型 - /// - /// - List GetAllAdminTypes(); - - /// - /// 批量更新管理员账户 - /// - /// - /// - bool UpdAccount(Admin admins); - } -} \ No newline at end of file diff --git a/SYS.Application/Zero/IBaseService.cs b/SYS.Application/Zero/IBaseService.cs deleted file mode 100644 index 02bb56a..0000000 --- a/SYS.Application/Zero/IBaseService.cs +++ /dev/null @@ -1,369 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application -{ - /// - /// 基础信息接口 - /// - public interface IBaseService - { - #region 性别模块 - - /// - /// 查询所有性别类型 - /// - /// - List SelectSexTypeAll(SexType sexType = null); - - /// - /// 查询性别类型 - /// - /// - SexType SelectSexType(SexType sexType); - - /// - /// 添加性别类型 - /// - /// - /// - bool AddSexType(SexType sexType); - - /// - /// 删除性别类型 - /// - /// - /// - bool DelSexType(SexType sexType); - - /// - /// 更新性别类型 - /// - /// - /// - bool UpdSexType(SexType sexType); - - #endregion - - #region 职位模块 - - /// - /// 查询所有职位类型 - /// - /// - List SelectPositionAll(Position position = null); - - /// - /// 查询职位类型 - /// - /// - Position SelectPosition(Position position); - - /// - /// 添加职位类型 - /// - /// - /// - bool AddPosition(Position position); - - /// - /// 删除职位类型 - /// - /// - /// - bool DelPosition(Position position); - - /// - /// 更新职位类型 - /// - /// - /// - bool UpdPosition(Position position); - - #endregion - - #region 民族模块 - - /// - /// 查询所有民族类型 - /// - /// - List SelectNationAll(Nation nation = null); - - /// - /// 查询民族类型 - /// - /// - Nation SelectNation(Nation nation); - - /// - /// 添加民族类型 - /// - /// - /// - bool AddNation(Nation nation); - - /// - /// 删除民族类型 - /// - /// - /// - bool DelNation(Nation nation); - - /// - /// 更新民族类型 - /// - /// - /// - bool UpdNation(Nation nation); - - #endregion - - #region 学历模块 - - /// - /// 查询所有学历类型 - /// - /// - List SelectEducationAll(Education education = null); - - /// - /// 查询学历类型 - /// - /// - Education SelectEducation(Education education); - - /// - /// 添加学历类型 - /// - /// - /// - bool AddEducation(Education education); - - /// - /// 删除学历类型 - /// - /// - /// - bool DelEducation(Education education); - - /// - /// 更新学历类型 - /// - /// - /// - bool UpdEducation(Education education); - - #endregion - - #region 部门模块 - - /// - /// 查询所有部门类型(可用) - /// - /// - List SelectDeptAllCanUse(); - - /// - /// 查询所有部门类型 - /// - /// - List SelectDeptAll(); - - /// - /// 查询部门类型 - /// - /// - Dept SelectDept(Dept dept); - - /// - /// 添加部门类型 - /// - /// - /// - bool AddDept(Dept dept); - - /// - /// 删除部门类型 - /// - /// - /// - bool DelDept(Dept dept); - - /// - /// 更新部门类型 - /// - /// - /// - bool UpdDept(Dept dept); - - #endregion - - #region 客户类型模块 - - /// - /// 查询所有客户类型(可用) - /// - /// - List SelectCustoTypeAllCanUse(); - - /// - /// 查询所有客户类型 - /// - /// - List SelectCustoTypeAll(); - - /// - /// 根据客户类型ID查询类型名称 - /// - /// - /// - CustoType SelectCustoTypeByTypeId(CustoType custoType); - - /// - /// 添加客户类型 - /// - /// - /// - bool InsertCustoType(CustoType custoType); - - /// - /// 删除客户类型 - /// - /// - /// - bool DeleteCustoType(CustoType custoType); - - /// - /// 更新客户类型 - /// - /// - /// - bool UpdateCustoType(CustoType custoType); - - #endregion - - #region 证件类型模块 - - /// - /// 查询所有证件类型(可用) - /// - /// - List SelectPassPortTypeAllCanUse(); - - /// - /// 查询所有证件类型 - /// - /// - List SelectPassPortTypeAll(); - - /// - /// 根据证件类型ID查询类型名称 - /// - /// - /// - PassPortType SelectPassPortTypeByTypeId(PassPortType passPortType); - - /// - /// 添加证件类型 - /// - /// - /// - bool InsertPassPortType(PassPortType passPortType); - - /// - /// 删除证件类型 - /// - /// - /// - bool DeletePassPortType(PassPortType portType); - - /// - /// 更新证件类型 - /// - /// - /// - bool UpdatePassPortType(PassPortType portType); - - #endregion - - #region 奖惩类型模块 - - /// - /// 查询所有证件类型(可用) - /// - /// - List SelectGBTypeAllCanUse(); - - /// - /// 查询所有奖惩类型 - /// - /// - List SelectGBTypeAll(); - - /// - /// 根据奖惩类型ID查询类型名称 - /// - /// - /// - GBType SelectGBTypeByTypeId(GBType gBType); - - /// - /// 添加奖惩类型 - /// - /// - /// - bool InsertGBType(GBType gBType); - - /// - /// 删除奖惩类型 - /// - /// - /// - bool DeleteGBType(GBType gBType); - - /// - /// 更新奖惩类型 - /// - /// - /// - bool UpdateGBType(GBType gBType); - - #endregion - - #region URL模块 - /// - /// 基础URL - /// - /// - Base GetBase(); - #endregion - } -} diff --git a/SYS.Application/Zero/INoticeService.cs b/SYS.Application/Zero/INoticeService.cs deleted file mode 100644 index f176329..0000000 --- a/SYS.Application/Zero/INoticeService.cs +++ /dev/null @@ -1,53 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System.Collections.Generic; - -namespace SYS.Application -{ - /// - /// 公告接口 - /// - public interface INoticeService - { - #region 获取所有公告信息 - /// - /// 获取所有公告信息 - /// - /// - List SelectNoticeAll(); - #endregion - - - #region 上传公告信息 - /// - /// 上传公告信息 - /// - /// - /// - bool InsertNotice(Notice notice); - - #endregion - } -} \ No newline at end of file diff --git a/SYS.Application/Zero/NoticeService.cs b/SYS.Application/Zero/NoticeService.cs deleted file mode 100644 index b0802e0..0000000 --- a/SYS.Application/Zero/NoticeService.cs +++ /dev/null @@ -1,97 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using MySql.Data.MySqlClient; -using SYS.Common; -using SYS.Core; - -namespace SYS.Application -{ - /// - /// 公告信息接口实现类 - /// - public class NoticeService:Repository, INoticeService - { - #region 获取所有公告信息 - /// - /// 获取所有公告信息 - /// - /// - public List SelectNoticeAll() - { - List ntc = new List(); - ntc = base.GetList(a => a.delete_mk != 1); - ntc.ForEach(source => - { - switch (source.NoticeType) - { - case "PersonnelChanges": - source.NoticeTypeName = "人事变动"; - break; - case "GeneralNotice": - source.NoticeTypeName = "普通公告"; - break; - } - }); - return ntc; - } - #endregion - - /// - /// 根据公告编号查找公告信息 - /// - /// - /// - public Notice SelectNoticeByNoticeNo(string NoticeNo) - { - Notice notice = new Notice(); - notice = base.GetSingle(a => a.NoticeNo == NoticeNo); - switch (notice.NoticeType) - { - case "PersonnelChanges": - notice.NoticeTypeName = "人事变动"; - break; - case "GeneralNotice": - notice.NoticeTypeName = "普通公告"; - break; - } - return notice; - } - - #region 上传公告信息 - /// - /// 上传公告信息 - /// - /// - /// - public bool InsertNotice(Notice notice) - { - return base.Insert(notice); - } - - #endregion - - } -} diff --git a/SYS.Application/Zero/OperationService.cs b/SYS.Application/Zero/OperationService.cs deleted file mode 100644 index 9d9feb8..0000000 --- a/SYS.Application/Zero/OperationService.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Data; -using MySql.Data.MySqlClient; -using SYS.Core; - -namespace SYS.Application -{ - public class OperationService - { - public static int InsertOperationLog(Operation opr) - { - int n = 0; - string sql = "insert OPERATIONLOG(OperationTime,OperationLog,OperationAccount) values(@OperationTime," + - "@OperationLog,@OperationAccount)"; - n = DBHelper.ExecuteNonQuery(sql, CommandType.Text, - new MySqlParameter[] { - new MySqlParameter("@OperationTime",opr.OperationTime), - new MySqlParameter("@OperationLog",opr.Operationlog), - new MySqlParameter("@OperationAccount",opr.OperationAccount), - }); - return n; - } - } -} diff --git a/SYS.Application/Zero/Operationlog.cs b/SYS.Application/Zero/Operationlog.cs deleted file mode 100644 index db8a08c..0000000 --- a/SYS.Application/Zero/Operationlog.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using MySql.Data.MySqlClient; -using SYS.Core; - -namespace SYS.Application -{ - public class Operationlog - { - public static List SelectOperationlogAll() - { - List custos = new List(); - string sql = "select * from operationlog order by OperationTime desc"; - MySqlDataReader dr = DBHelper.ExecuteReader(sql); - while (dr.Read()) - { - OperationLog cso = new OperationLog(); - cso.OperationTime = DateTime.Parse(dr["OperationTime"].ToString()); - cso.Operationlog = dr["Operationlog"].ToString(); - cso.OperationAccount = (string)dr["OperationAccount"]; - custos.Add(cso); - } - dr.Close(); - DBHelper.Closecon(); - return custos; - } - - - } -} diff --git a/SYS.Application/Zero/VipRule/IVipRuleAppService.cs b/SYS.Application/Zero/VipRule/IVipRuleAppService.cs deleted file mode 100644 index e375476..0000000 --- a/SYS.Application/Zero/VipRule/IVipRuleAppService.cs +++ /dev/null @@ -1,73 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - *模块说明:会员等级规则功能模块接口 - */ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application.Zero -{ - /// - /// 会员等级规则功能模块接口 - /// - public interface IVipRuleAppService - { - /// - /// 查询会员等级规则列表 - /// - /// - List SelectVipRuleList(); - - /// - /// 查询会员等级规则 - /// - /// - /// - VipRule SelectVipRule(VipRule vipRule); - - /// - /// 添加会员等级规则 - /// - /// - /// - bool AddVipRule(VipRule vipRule); - - /// - /// 删除会员等级规则 - /// - /// - /// - bool DelVipRule(VipRule vipRule); - - /// - /// 更新会员等级规则 - /// - /// - /// - bool UpdVipRule(VipRule vipRule); - } -} diff --git a/SYS.Application/Zero/VipRule/VipRuleAppService.cs b/SYS.Application/Zero/VipRule/VipRuleAppService.cs deleted file mode 100644 index 77ba716..0000000 --- a/SYS.Application/Zero/VipRule/VipRuleAppService.cs +++ /dev/null @@ -1,109 +0,0 @@ -using SYS.Common; -using SYS.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Application.Zero -{ - /// - /// 会员等级规则功能模块接口实现类 - /// - public class VipRuleAppService:Repository, IVipRuleAppService - { - /// - /// 查询会员等级规则列表 - /// - /// - public List SelectVipRuleList() - { - List vipRules = new List(); - - var listSource = base.GetList(a => a.delete_mk != 1); - - var listUserType = base.Change().GetList(a => a.delete_mk != 1); - - listSource.ForEach(source => - { - var userType = listUserType.FirstOrDefault(a => a.UserType == source.type_id); - source.type_name = userType == null ? "" : userType.TypeName; - }); - - vipRules = listSource; - - return vipRules; - } - - /// - /// 查询会员等级规则 - /// - /// - /// - public VipRule SelectVipRule(VipRule vipRule) - { - VipRule vipRule1 = new VipRule(); - - var source = base.GetSingle(a => a.rule_id.Equals(vipRule.rule_id)); - - var userType = base.Change().GetSingle(a => a.UserType == source.type_id); - source.type_name = userType == null ? "" : userType.TypeName; - - vipRule1 = source; - - return vipRule1; - } - - /// - /// 添加会员等级规则 - /// - /// - /// - public bool AddVipRule(VipRule vipRule) - { - return base.Insert(new VipRule() - { - rule_id = vipRule.rule_id, - rule_name = vipRule.rule_name, - rule_value = vipRule.rule_value, - type_id = vipRule.type_id, - delete_mk = 0, - datains_usr = AdminInfo.Account, - datains_date = DateTime.Now - }); - } - - /// - /// 删除会员等级规则 - /// - /// - /// - public bool DelVipRule(VipRule vipRule) - { - return base.Update(a => new VipRule - { - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - },a => a.rule_id == vipRule.rule_id); - } - - /// - /// 更新会员等级规则 - /// - /// - /// - public bool UpdVipRule(VipRule vipRule) - { - return base.Update(a => new VipRule - { - rule_name = vipRule.rule_name, - rule_value = vipRule.rule_value, - delete_mk = vipRule.delete_mk, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }, a => a.rule_id == vipRule.rule_id); - } - } -} diff --git a/SYS.Application/app.config b/SYS.Application/app.config deleted file mode 100644 index 98950b2..0000000 --- a/SYS.Application/app.config +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SYS.Application/bitbug_favicon (1).ico b/SYS.Application/bitbug_favicon (1).ico deleted file mode 100644 index deaead31de45df54f39388e2b4727a00a4f99eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 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 - - - - - - - - - - \ No newline at end of file diff --git "a/SYS.Application/\345\237\272\347\241\200\346\240\270\345\277\203\347\261\273\345\272\223jvncorelib(\351\200\202\347\224\250\345\205\250\345\271\263\345\217\260).md" "b/SYS.Application/\345\237\272\347\241\200\346\240\270\345\277\203\347\261\273\345\272\223jvncorelib(\351\200\202\347\224\250\345\205\250\345\271\263\345\217\260).md" deleted file mode 100644 index 7626161..0000000 --- "a/SYS.Application/\345\237\272\347\241\200\346\240\270\345\277\203\347\261\273\345\272\223jvncorelib(\351\200\202\347\224\250\345\205\250\345\271\263\345\217\260).md" +++ /dev/null @@ -1,122 +0,0 @@ -## 基础核心类库jvncorelib(适用全平台) - -### 一、安装部署 - -#### 1、打开管理Nu-get包命令行,输入如下代码: - -```C# -Install-Package jvncorelib -Version 1.0.1.7 -``` - -#### 2、安装完成后,在需要用到的地方写上如下代码: - -```C# -using jvncorelib; //.Net Core3.1+/.Net 5引用,默认加载所有类库,按需引入请查看“引用参照表” -using jvncorelib_fr; //.Net Framework 4.6+引用,默认加载所有类库,按需引入请查看“引用参照表” - -static void Main(string[] args) -{ - #region 加/解密 - EncryptLib encryptLib= new EncryptLib(); - var str = "需要加密的字符串!"; - //获得加密后的字符串 - var encryptedStr = encryptLib.Encryption(str); - Console.WriteLine(encryptedStr); - //解密加密后的字符串 - var deEncryptStr = encryptLib.Decryption(encryptedStr); - //对比密文 - var str1 = "需要加密的字符串!"; - var encryptedSt1r = encryptLib.Encryption(str1); - var result = encryptLib.Compare(encryptedStr,encryptedSt1r); - Console.WriteLine(deEncryptStr); - #endregion - - #region 流水号生成 - UniqueCode uniqueCode= new UniqueCode(); - //生成不带业务前缀的普通流水号 - List result = uniqueCode.GetListNewId(10); - //生成带业务前缀的业务流水号(多条) - result = uniqueCode.GetListNewId("JVN",10); - //生成带业务前缀的业务流水号(单条) - string _result = uniqueCode.GetNewId("JVN"); - Console.WriteLine(string.Join("\n",result)); - Console.WriteLine(result); - #endregion - - #region 实体扩展类库 - var value = string.Empty; - var result = value.IsNullOrEmpty() ? false : true; - #endregion - - #region 时间类库 - var result = "2021-5-6 12:00:59"; - var newResult = TimeExtend.StringFormat(result); - var result = DateTime.Now; - var newResult = TimeExtend.DateTimeFormat(result,TimeType); - Console.WriteLine(newResult); - var result1 = TimeExtend.GetFirstAndLastDate(DateClass.Month,new DateTime(2021,4,15)); - Console.WriteLine(result1.StartDate + "-" + result1.EndDate); - var listDateTime = TimeExtend.GetDateRange(startDate,endDate,RangeType.Month); - #endregion - - #region GUID扩展类库 - var result = new List(); - for (int i = 0; i < 2000; i++) - { - result.Add(new GuidExtend().GetGUID(Word.UpperCase,true)); - result.Add(new GuidExtend().GetGUID(Word.LowCase,"AA-")); - } - Console.WriteLine(string.Join("\n",result)); - #endregion -} - -#region Http请求工具类 -RequestUtil util = new RequestUtil(); -Dictionary keyValuePairs = new Dictionary(); -keyValuePairs.Add("id", "1"); -var checkInfo = new CheckInfo -{ - WorkerNo = "WK010", - CheckTime = DateTime.Now.ToLocalTime(), - CheckWay = "系统界面2333333333333333", - CheckState = 0 -}; -var finalJSON = util.ObjectToJson(checkInfo); -var result = util.DoGet("http://localhost:33610/api/Base/Base", keyValuePairs); -var postResult = util.DoPost("http://localhost:36101/api/WorkerCheck/AddCheckInfo", finalJSON); -Console.WriteLine(string.Join("\n",result)); -#endregion -``` - -### 二、引用参照表(仅针对1.0.1.1之后版本) - -| 类库名称 | 命名空间(.Net Core 3.1+/.Net 5) | 命名空间(.Net Framework 4.6+) | -| :------------: | :-----------------------------: | :-------------------------------: | -| 流水号生成类库 | using jvncorelib.CodeLib; | using jvncorelib_fr.CodeLib; | -| 信息加密类库 | using jvncorelib. EncryptorLib; | using jvncorelib_fr.EncryptorLib; | -| 实体扩展类库 | using jvncorelib. EntityLib; | using jvncorelib_fr.EntityLib; | -| 时间类库 | using jvncorelib. TimeLib; | using jvncorelib_fr.TimeLib; | -| GUID扩展类库 | using jvncorelib. GuidLib; | using jvncorelib_fr.GuidLib; | -| Http请求工具类 | using jvncorelib.HttpLib; | using jvncorelib_fr.HttpLib; | - -### 三、历史版本参照表(倒序) - -| 包名 | 版本号 | 更新日志 | 命令行 | -| :--------: | :-----: | :------------------------------------------------: | :-----------------------------------------: | -| jvncorelib | 1.0.1.7 | 加密类库新增加密级别枚举,新增“增强”加密级别的加密 | Install-Package jvncorelib -Version 1.0.1.7 | -| jvncorelib | 1.0.1.6 | 加密类库新增密文对比方法 | Install-Package jvncorelib -Version 1.0.1.6 | -| jvncorelib | 1.0.1.5 | 新增Http请求工具类;时间类库优化扩展; | Install-Package jvncorelib -Version 1.0.1.5 | -| jvncorelib | 1.0.1.4 | 新增实体扩展类库、时间类库;新增GUID扩展类库; | Install-Package jvncorelib -Version 1.0.1.4 | -| jvncorelib | 1.0.1.2 | 类库支持按需引入 | Install-Package jvncorelib -Version 1.0.1.2 | -| jvncorelib | 1.0.1.1 | 整合加密类库;完善优化流水号类库; | Install-Package jvncorelib -Version 1.0.1.1 | -| jvncorelib | 1.0.0.1 | 初始化项目;新增流水号类库; | Install-Package jvncorelib -Version 1.0.0.1 | -| jvncorelib | 1.0.0 | 初始化项目; | Install-Package jvncorelib -Version 1.0.0 | - - - -### 四、说明: - -### 1、如有任何疑问,请点击右侧链接【[Contact owners](https://www.nuget.org/packages/jvncorelib/1.0.1.7/ContactOwners)】联系作者! - -### 2、想查看更详细的更新内容,请浏览[CHANGELOG.md](https://gitee.com/java-and-net/encrypt-tools/blob/master/CHANGELOG.md)! - diff --git a/SYS.Common/RecordHelper/AdminInfo.cs b/SYS.Common/AdminInfo.cs similarity index 97% rename from SYS.Common/RecordHelper/AdminInfo.cs rename to SYS.Common/AdminInfo.cs index 82ca19f..cb06f69 100644 --- a/SYS.Common/RecordHelper/AdminInfo.cs +++ b/SYS.Common/AdminInfo.cs @@ -1,6 +1,6 @@ /* * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) + *Copyright (c) 2021 易开元(Easy-Open-Meta) *Permission is hereby granted, free of charge, to any person obtaining a copy *of this software and associated documentation files (the "Software"), to deal diff --git a/SYS.Common/RecordHelper/LoginInfo.cs b/SYS.Common/LoginInfo.cs similarity index 97% rename from SYS.Common/RecordHelper/LoginInfo.cs rename to SYS.Common/LoginInfo.cs index 4a5559c..4487755 100644 --- a/SYS.Common/RecordHelper/LoginInfo.cs +++ b/SYS.Common/LoginInfo.cs @@ -1,6 +1,6 @@ /* * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) + *Copyright (c) 2021 易开元(Easy-Open-Meta) *Permission is hereby granted, free of charge, to any person obtaining a copy *of this software and associated documentation files (the "Software"), to deal diff --git a/SYS.Common/RecordHelper/OperationLog.cs b/SYS.Common/OperationLog.cs similarity index 80% rename from SYS.Common/RecordHelper/OperationLog.cs rename to SYS.Common/OperationLog.cs index c4418f5..bfd7c18 100644 --- a/SYS.Common/RecordHelper/OperationLog.cs +++ b/SYS.Common/OperationLog.cs @@ -1,6 +1,6 @@ /* * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) + *Copyright (c) 2021 易开元(Easy-Open-Meta) *Permission is hereby granted, free of charge, to any person obtaining a copy *of this software and associated documentation files (the "Software"), to deal @@ -50,43 +50,35 @@ namespace SYS.Common /// /// 操作日志 /// - [SqlSugar.SugarTable("operationlog")] public class OperationLog { /// /// 操作时间 /// - [SqlSugar.SugarColumn(ColumnName = "OperationTime")] - public DateTime OperationTime { get; set; } + public DateTime? OperationTime { get; set; } /// /// 操作信息 /// - [SqlSugar.SugarColumn(ColumnName = "LogContent")] public string LogContent { get; set; } /// /// 操作账号 /// - [SqlSugar.SugarColumn(ColumnName = "OperationAccount")] public string OperationAccount { get; set; } /// /// 日志等级 /// - [SqlSugar.SugarColumn(ColumnName = "OperationLevel")] public RecordLevel OperationLevel { get; set; } /// /// 删除标记 /// - [SqlSugar.SugarColumn(ColumnName = "delete_mk")] public int delete_mk { get; set; } /// /// 软件版本 /// - [SqlSugar.SugarColumn(ColumnName = "SoftwareVersion")] public string SoftwareVersion { get; set; } /// /// 登录IP /// - [SqlSugar.SugarColumn(ColumnName = "login_ip")] public string login_ip { get; set; } /// 资料创建人 /// @@ -94,7 +86,7 @@ namespace SYS.Common /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -102,12 +94,11 @@ namespace SYS.Common /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } /// /// 日志等级 /// - [SqlSugar.SugarColumn(IsIgnore = true)] public string OperationLevelNm { get; set; } } diff --git a/SYS.Common/RecordHelper/RecordHelper.cs b/SYS.Common/RecordHelper.cs similarity index 79% rename from SYS.Common/RecordHelper/RecordHelper.cs rename to SYS.Common/RecordHelper.cs index 27fb291..88cdffe 100644 --- a/SYS.Common/RecordHelper/RecordHelper.cs +++ b/SYS.Common/RecordHelper.cs @@ -10,20 +10,20 @@ namespace SYS.Common /// /// 日志记录助手 /// - public static class RecordHelper + public class RecordHelper { - /// /// 记录信息集合 /// /// /// - public static void Record(string OperationLog, int level) + public static void Record(string operationLog, int level) { + string api = "App/AddLog"; var logDetail = new OperationLog { OperationTime = DateTime.Now, - LogContent = OperationLog, + LogContent = operationLog, OperationAccount = LoginInfo.WorkerNo + AdminInfo.Account, OperationLevel = level == 1 ? RecordLevel.Normal : level == 2 ? RecordLevel.Warning : RecordLevel.Danger, SoftwareVersion = AdminInfo.SoftwareVersion + LoginInfo.SoftwareVersion, @@ -31,7 +31,7 @@ namespace SYS.Common datains_usr = AdminInfo.Account + LoginInfo.WorkerNo, datains_date = DateTime.Now }; - new OperationlogService().InsertOperationLog(logDetail); + HttpHelper.Request(api, HttpHelper.ModelToJson(logDetail)); } } diff --git a/SYS.Common/RecordHelper/IOperationlogService.cs b/SYS.Common/RecordHelper/IOperationlogService.cs deleted file mode 100644 index fc16935..0000000 --- a/SYS.Common/RecordHelper/IOperationlogService.cs +++ /dev/null @@ -1,46 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System.Collections.Generic; - -namespace SYS.Common -{ - /// - /// 操作日志数据访问层 - /// - public interface IOperationlogService - { - /// - /// 添加操作日志 - /// - /// - /// - bool InsertOperationLog(OperationLog opr); - - /// - /// 查询所有操作日志 - /// - /// - List SelectOperationlogAll(); - } -} \ No newline at end of file diff --git a/SYS.Common/RecordHelper/OperationlogService.cs b/SYS.Common/RecordHelper/OperationlogService.cs deleted file mode 100644 index 3126cfe..0000000 --- a/SYS.Common/RecordHelper/OperationlogService.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Net; -using SYS.Common; - -namespace SYS.Common -{ - /// - /// 操作日志数据访问层 - /// - public class OperationlogService:Repository, IOperationlogService - { - /// - /// 添加操作日志 - /// - /// - /// - public bool InsertOperationLog(OperationLog opr) - { - return base.Insert(opr); - } - - /// - /// 查询所有操作日志 - /// - /// - public List SelectOperationlogAll() - { - List operationLogs = new List(); - operationLogs = base.GetList(a => a.delete_mk != 1).OrderByDescending(a => a.OperationTime).ToList(); - operationLogs.ForEach(source => - { - source.OperationLevelNm = source.OperationLevel == RecordLevel.Normal ? "常规操作" : source.OperationLevel == RecordLevel.Warning ? "敏感操作" : "严重操作"; - }); - return operationLogs; - } - - - } -} diff --git a/SYS.Common/Repository/MysqlRepository.cs b/SYS.Common/Repository/MysqlRepository.cs deleted file mode 100644 index e56d3b6..0000000 --- a/SYS.Common/Repository/MysqlRepository.cs +++ /dev/null @@ -1,33 +0,0 @@ -using SqlSugar; -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Common -{ - public class MysqlRepository : SimpleClient where T : class, new() - { - public MysqlRepository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null - { - if (context == null) - { - base.Context = new SqlSugarClient(new ConnectionConfig() - { - DbType = SqlSugar.DbType.MySql, - InitKeyType = InitKeyType.Attribute, - IsAutoCloseConnection = true, - ConnectionString = HttpHelper.mysqlString - }); - - base.Context.Aop.OnError = (ex) => - { - RecordHelper.Record(ex.ToString(), 3); - }; - } - } - - } -} diff --git a/SYS.Common/Repository/Repository.cs b/SYS.Common/Repository/Repository.cs deleted file mode 100644 index 4d00113..0000000 --- a/SYS.Common/Repository/Repository.cs +++ /dev/null @@ -1,43 +0,0 @@ -using jvncorelib_fr.EncryptorLib; -using SqlSugar; -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Common -{ - public class Repository : SimpleClient where T : class, new() - { - public Repository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null - { - /// - /// 实例化信息加密插件 - /// - EncryptLib encryptLib = new EncryptLib(); - - if (context == null) - { - base.Context = new SqlSugarClient(new ConnectionConfig() - { - DbType = SqlSugar.DbType.PostgreSQL, - InitKeyType = InitKeyType.Attribute, - IsAutoCloseConnection = true, - MoreSettings = new ConnMoreSettings() - { - PgSqlIsAutoToLower = false //数据库存在大写字段的 ,需要把这个设为false ,并且实体和字段名称要一样 - }, - ConnectionString = encryptLib.Decryption(HttpHelper.pgsqlString) - }); - - base.Context.Aop.OnError = (ex) => - { - RecordHelper.Record(ex.ToString(), 3); - }; - } - } - - } -} diff --git a/SYS.Common/ResponseMsg.cs b/SYS.Common/ResponseMsg.cs new file mode 100644 index 0000000..c0827f8 --- /dev/null +++ b/SYS.Common/ResponseMsg.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SYS.Common +{ + public class ResponseMsg + { + /// + /// 状态码 + /// + public int statusCode { get; set; } + /// + /// 错误信息 + /// + public string message { get; set; } + } +} diff --git a/SYS.Common/SYS.Common.csproj b/SYS.Common/SYS.Common.csproj index 7d65e24..5a01803 100644 --- a/SYS.Common/SYS.Common.csproj +++ b/SYS.Common/SYS.Common.csproj @@ -1,6 +1,5 @@  - Debug @@ -43,20 +42,12 @@ bitbug_favicon %281%29.ico - - ..\packages\EntityFramework.6.3.0\lib\net45\EntityFramework.dll - - - ..\packages\GeoAPI.Core.1.7.5\lib\net45\GeoAPI.dll - ..\packages\jvncorelib.1.0.1.7\lib\net461\jvncorelib-fr.dll - - ..\packages\Npgsql.4.0.10\lib\net451\Npgsql.dll - - - ..\packages\SqlSugar.5.0.3.5\lib\SqlSugar.dll + + False + ..\SYS.Library\Newtonsoft.Json.dll @@ -75,12 +66,15 @@ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll + ..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll + + @@ -89,16 +83,14 @@ + + + - - - - - - - - + + + @@ -113,8 +105,5 @@ 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 - - - \ No newline at end of file diff --git a/SYS.Common/Util/Util.cs b/SYS.Common/Util/Util.cs new file mode 100644 index 0000000..157ddcb --- /dev/null +++ b/SYS.Common/Util/Util.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SYS.Common +{ + /// + /// 静态工具 + /// + public static class Util + { + //锁对象 + private static readonly object lockTimeCode = new object(); + + private static Dictionary dic = new Dictionary(); + + public static card searchCode(string code) + { + Dictionary dic = new Dictionary(); + dic.Add("identityCard", code.Substring(0,6)); + ResponseMsg result = HttpHelper.Request("App/SelectCardCode", null, dic); + if (result.statusCode != 200) + { + return new card { message = "SelectCardCode+接口服务异常,请提交Issue!" }; + } + var addrResult = result.message; + var address = addrResult.Replace(",", "").ToString(); + var birthday = code.Substring(6, 4) + "-" + code.Substring(10, 2) + "-" + code.Substring(12, 2); + var sex = code.Substring(14, 3); + //性别代码为偶数是女性奇数为男性 + if (int.Parse(sex) % 2 == 0) + { + sex = "女"; + } + else + { + sex = "男"; + } + return new card { message = string.Empty, sex = sex, address = address, birthday = birthday }; + } + + /// + /// 批量获取流水号 + /// + /// 流水号前缀 + /// 填充位数,e.g 3为 000 + /// 流水号数量 + /// 分隔符 + /// 流水号集合 + public static List GetListNewId(string preCode = null, int fillCount = 0, int pCount = 1, string separatorChar = null) + { + List list = new List(); + int num = 1; + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < pCount; i++) + { + sb.Clear(); + sb.Append(preCode); + DateTime now = DateTime.Now; + string text = now.ToString("yyyyMMdd"); + sb.Append(text); + sb.Append(separatorChar); + lock (lockTimeCode) + { + if (!dic.ContainsKey(text)) + { + if (dic.Count > 10) + { + dic.Clear(); + } + num++; + dic.Add(text, 1); + } + else + { + if (dic[text] > 8998) + { + while (true) + { + string a = text; + now = DateTime.Now; + if (a == now.ToString("yyyyMMdd")) + { + Thread.Sleep(0); + continue; + } + break; + } + goto end_IL_004e; + } + Dictionary dictionary = dic; + string key = text; + dictionary[key]++; + num = dic[text]; + } + string value = num.ToString().PadLeft(fillCount, '0'); + sb.Append(value); + list.Add(sb.ToString()); + end_IL_004e:; + } + } + return list; + } + + } + + /// + /// 身份证实体类 + /// + public class card + { + /// + /// 消息 + /// + public string message { get; set; } + /// + /// 性别 + /// + public string sex { get; set; } + /// + /// 出生日期 + /// + public string birthday { get; set; } + /// + /// 地址 + /// + public string address { get; set; } + } +} diff --git a/SYS.Common/packages.config b/SYS.Common/packages.config index fdd9dd8..f1e0447 100644 --- a/SYS.Common/packages.config +++ b/SYS.Common/packages.config @@ -1,6 +1,6 @@  - + + + + \ No newline at end of file diff --git a/SYS.Core/App.config b/SYS.Core/App.config index e92ec79..e00ad39 100644 --- a/SYS.Core/App.config +++ b/SYS.Core/App.config @@ -32,6 +32,10 @@ + + + + \ No newline at end of file diff --git a/SYS.Core/Business/Cash/Cash.cs b/SYS.Core/Business/Cash/Cash.cs index 434ceee..fd41f55 100644 --- a/SYS.Core/Business/Cash/Cash.cs +++ b/SYS.Core/Business/Cash/Cash.cs @@ -60,7 +60,7 @@ namespace SYS.Core /// /// 入库时间 /// - public DateTime CashTime { get; set; } + public DateTime? CashTime { get; set; } /// /// 资产来源 /// diff --git a/SYS.Core/Business/Customer/Custo.cs b/SYS.Core/Business/Customer/Custo.cs index 25ae389..11f6d0c 100644 --- a/SYS.Core/Business/Customer/Custo.cs +++ b/SYS.Core/Business/Customer/Custo.cs @@ -35,7 +35,7 @@ namespace SYS.Core /// /// 客户编号 /// - [SqlSugar.SugarColumn(ColumnName = "custo_no",IsPrimaryKey = true)] + [SqlSugar.SugarColumn(ColumnName = "custo_no", IsPrimaryKey = true)] public string CustoNo { get; set; } /// /// 客户名称 @@ -71,7 +71,7 @@ namespace SYS.Core /// 出生日期 /// [SqlSugar.SugarColumn(ColumnName = "custo_birth", IsNullable = true)] - public DateTime CustoBirth { get; set; } + public DateTime? CustoBirth { get; set; } /// /// 客户类型 /// @@ -103,7 +103,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -111,7 +111,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Customer/CustoType.cs b/SYS.Core/Business/Customer/CustoType.cs index d8cc1fb..1fe44e3 100644 --- a/SYS.Core/Business/Customer/CustoType.cs +++ b/SYS.Core/Business/Customer/CustoType.cs @@ -51,7 +51,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -59,6 +59,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Application/Zero/ICheckInfoService.cs b/SYS.Core/Business/Customer/OSelectCustoAllDto.cs similarity index 78% rename from SYS.Application/Zero/ICheckInfoService.cs rename to SYS.Core/Business/Customer/OSelectCustoAllDto.cs index d59f118..ba2d410 100644 --- a/SYS.Application/Zero/ICheckInfoService.cs +++ b/SYS.Core/Business/Customer/OSelectCustoAllDto.cs @@ -1,6 +1,6 @@ /* * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) + *Copyright (c) 2021 易开元(Easy-Open-Meta) *Permission is hereby granted, free of charge, to any person obtaining a copy *of this software and associated documentation files (the "Software"), to deal @@ -21,20 +21,24 @@ *SOFTWARE. * */ -using SYS.Core; using System.Collections.Generic; -namespace SYS.Application +namespace SYS.Core { /// - /// 监管统计接口 + /// 查询所有客户信息 + /// 输出DTO /// - public interface ICheckInfoService + public class OSelectCustoAllDto { /// - /// 查询所有监管统计信息 + /// 数据源 /// - /// - List SelectCheckInfoAll(); + public List listSource { get; set; } + + /// + /// 总数 + /// + public int total { get; set; } } } \ No newline at end of file diff --git a/SYS.Core/Business/Customer/PassPortType.cs b/SYS.Core/Business/Customer/PassPortType.cs index d30d2c6..3ba5679 100644 --- a/SYS.Core/Business/Customer/PassPortType.cs +++ b/SYS.Core/Business/Customer/PassPortType.cs @@ -56,7 +56,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -64,6 +64,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Customer/SexType.cs b/SYS.Core/Business/Customer/SexType.cs index c85e89b..2fc2e72 100644 --- a/SYS.Core/Business/Customer/SexType.cs +++ b/SYS.Core/Business/Customer/SexType.cs @@ -57,7 +57,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -65,6 +65,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Reser/Reser.cs b/SYS.Core/Business/Reser/Reser.cs index be7b5f2..02cc7bd 100644 --- a/SYS.Core/Business/Reser/Reser.cs +++ b/SYS.Core/Business/Reser/Reser.cs @@ -55,11 +55,11 @@ namespace SYS.Core /// /// 预约起始 /// - public DateTime ReserDate { get; set; } + public DateTime? ReserDate { get; set; } /// /// 预约止日 /// - public DateTime ReserEndDay { get; set; } + public DateTime? ReserEndDay { get; set; } /// /// 删除标记 /// @@ -71,7 +71,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -79,7 +79,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Room/Room.cs b/SYS.Core/Business/Room/Room.cs index 9939b7b..1fc34d2 100644 --- a/SYS.Core/Business/Room/Room.cs +++ b/SYS.Core/Business/Room/Room.cs @@ -114,7 +114,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -122,7 +122,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Room/RoomState.cs b/SYS.Core/Business/Room/RoomState.cs index 52d0771..7592829 100644 --- a/SYS.Core/Business/Room/RoomState.cs +++ b/SYS.Core/Business/Room/RoomState.cs @@ -52,7 +52,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -60,6 +60,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Room/RoomType.cs b/SYS.Core/Business/Room/RoomType.cs index f8f7aeb..ca7ed2b 100644 --- a/SYS.Core/Business/Room/RoomType.cs +++ b/SYS.Core/Business/Room/RoomType.cs @@ -53,7 +53,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -61,6 +61,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Sellthing/SellThing.cs b/SYS.Core/Business/Sellthing/SellThing.cs index be11449..d354cb4 100644 --- a/SYS.Core/Business/Sellthing/SellThing.cs +++ b/SYS.Core/Business/Sellthing/SellThing.cs @@ -69,7 +69,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -77,6 +77,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Business/Spend/Spend.cs b/SYS.Core/Business/Spend/Spend.cs index 2b79e73..1bcf30a 100644 --- a/SYS.Core/Business/Spend/Spend.cs +++ b/SYS.Core/Business/Spend/Spend.cs @@ -69,7 +69,7 @@ namespace SYS.Core /// /// 消费时间 /// - public DateTime SpendTime { get; set; } + public DateTime? SpendTime { get; set; } /// /// 结算状态 /// @@ -85,7 +85,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -93,7 +93,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } /// /// 结算状态描述 diff --git a/SYS.Core/Business/Wti/Wti.cs b/SYS.Core/Business/Wti/Wti.cs index 92a851d..a6a4767 100644 --- a/SYS.Core/Business/Wti/Wti.cs +++ b/SYS.Core/Business/Wti/Wti.cs @@ -46,12 +46,12 @@ namespace SYS.Core /// 开始使用时间 /// [SqlSugar.SugarColumn(ColumnName = "UseDate")] - public DateTime UseDate { get; set; } + public DateTime? UseDate { get; set; } /// /// 结束使用时间 /// [SqlSugar.SugarColumn(ColumnName = "EndDate")] - public DateTime EndDate { get; set; } + public DateTime? EndDate { get; set; } /// /// 水费 /// @@ -84,7 +84,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -92,7 +92,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } diff --git a/SYS.Core/SYS.Core.csproj b/SYS.Core/SYS.Core.csproj index d20226e..acaa36f 100644 --- a/SYS.Core/SYS.Core.csproj +++ b/SYS.Core/SYS.Core.csproj @@ -51,9 +51,6 @@ False ..\..\..\..\JVN.TopSkyHotelManagerSystem\SYS.Library\MySql.Data.dll - - ..\packages\Npgsql.4.0.10\lib\net451\Npgsql.dll - False ..\packages\SqlSugar.5.0.2\lib\SqlSugar.dll @@ -90,16 +87,13 @@ + - - - - - Always - + + diff --git a/SYS.Core/Sys/NavBar/NavBar.cs b/SYS.Core/Sys/NavBar/NavBar.cs index ba568b8..89b9f0f 100644 --- a/SYS.Core/Sys/NavBar/NavBar.cs +++ b/SYS.Core/Sys/NavBar/NavBar.cs @@ -48,7 +48,7 @@ namespace SYS.Core /// /// 新增时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 修改人 /// @@ -56,6 +56,6 @@ namespace SYS.Core /// /// 修改时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Application/Sys/NavBar/NavBarService.cs b/SYS.Core/Util/ApplicationVersion.cs similarity index 30% rename from SYS.Application/Sys/NavBar/NavBarService.cs rename to SYS.Core/Util/ApplicationVersion.cs index a88b018..28146d3 100644 --- a/SYS.Application/Sys/NavBar/NavBarService.cs +++ b/SYS.Core/Util/ApplicationVersion.cs @@ -1,27 +1,28 @@ -using SYS.Common; -using SYS.Core; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SYS.Application +namespace SYS.Core { /// - /// 导航控件模块 + /// 应用版本 /// - public class NavBarService:Repository + [SqlSugar.SugarTable("applicationversion")] + public class Applicationversion { /// - /// 导航控件列表 + /// 流水号 /// - /// - public List NavBarList() - { - var navBarList = base.GetList(a => a.delete_mk != 1); + [SugarColumn(ColumnName = "base_versionId")]//数据库是自增才配自增 + public int base_versionId { get; set; } - return navBarList; - } + /// + /// 版本号 + /// + [SugarColumn(ColumnName = "base_version")]//数据库是自增才配自增 + public string base_version { get; set; } } } diff --git a/SYS.Core/Util/ApplicationVersionUtil.cs b/SYS.Core/Util/ApplicationVersionUtil.cs deleted file mode 100644 index e3da9bd..0000000 --- a/SYS.Core/Util/ApplicationVersionUtil.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - *模块说明:检测软件版本 - */ -using SqlSugar; -using SYS.Common; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Core -{ - /// - /// 程序版本号检测 - /// - public class ApplicationVersionUtil:Repository - { - /// - /// 检测版本号 - /// - /// - public applicationversion CheckBaseVersion() - { - return base.GetSingle(a => a.base_versionId == 1); - } - } - - [SqlSugar.SugarTable("applicationversion")] - public class applicationversion - { - /// - /// 流水号 - /// - [SugarColumn(ColumnName = "base_versionId")]//数据库是自增才配自增 - public int base_versionId { get; set; } - - /// - /// 版本号 - /// - [SugarColumn(ColumnName = "base_version")]//数据库是自增才配自增 - public string base_version { get; set; } - } -} diff --git a/SYS.Core/Util/IDCardUtil.cs b/SYS.Core/Util/Cardcodes.cs similarity index 37% rename from SYS.Core/Util/IDCardUtil.cs rename to SYS.Core/Util/Cardcodes.cs index 80007cf..5807138 100644 --- a/SYS.Core/Util/IDCardUtil.cs +++ b/SYS.Core/Util/Cardcodes.cs @@ -1,67 +1,21 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - *模块说明:身份证号码工具类 - */ -using SYS.Common; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SYS.Core.Util +namespace SYS.Core { /// - /// 身份证号码工具类 + /// 卡片代码 /// - public class IDCardUtil:Repository + [SqlSugar.SugarTable("cardcodes")] + public class Cardcodes { /// - /// 查询地区码 + /// 卡片代码 /// - /// - /// - public string SelectCardCode(string identityCard) - { - var cardid = identityCard.Substring(0, 6).ToString(); - cardcodes cardcodes = new cardcodes(); - var pcd = string.Empty; - cardcodes = base.GetSingle(a => a.bm == cardid); - pcd = cardcodes == null ? "" : string.Join(",", cardcodes.Province + cardcodes.City + cardcodes.District); - return pcd; - } - - } - - /// - /// - /// - public class cardcodes - { - /// - /// - /// - public cardcodes() + public Cardcodes() { } @@ -94,7 +48,5 @@ namespace SYS.Core.Util /// 地区识别码 /// public System.String bm { get { return this._bm; } set { this._bm = value; } } - } - } diff --git a/SYS.Core/Util/CounterHelper.cs b/SYS.Core/Util/CounterHelper.cs deleted file mode 100644 index 988efa2..0000000 --- a/SYS.Core/Util/CounterHelper.cs +++ /dev/null @@ -1,145 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - *模块说明:流水号规则 - */ -using SYS.Common; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Core -{ - /// - /// 流水号规则 - /// - public class CounterHelper:Repository - { - /// - /// 获取生成编号 - /// - /// - /// - public string GetNewId(string str) - { - var count = 0; - var Str = string.Empty; - counterrule counterrule = new counterrule(); - counterrule = base.GetSingle(a => a.rule_name == str); - Str = counterrule.prefix_name + counterrule.separating_char + DateTime.Now.ToString(counterrule.custo_format) - + counterrule.number_format + counterrule.now_id; - count++; - var exe2 = base.Update(a => new counterrule() - { - now_id = counterrule.now_id + count - },a => a.rule_name == str); - return Str; - } - } - - /// - /// - /// - public class counterrule - { - /// - /// - /// - public counterrule() - { - } - - private System.Int32 _rule_id; - /// - /// 规则编号 - /// - public System.Int32 rule_id { get { return this._rule_id; } set { this._rule_id = value; } } - - private System.String _rule_name; - /// - /// 规格名称 - /// - public System.String rule_name { get { return this._rule_name; } set { this._rule_name = value; } } - - private System.String _rule_desc; - /// - /// 规则描述 - /// - public System.String rule_desc { get { return this._rule_desc; } set { this._rule_desc = value; } } - - private System.Int32? _now_id; - /// - /// 当前ID - /// - public System.Int32? now_id { get { return this._now_id; } set { this._now_id = value; } } - - private System.String _prefix_name; - /// - /// 规则简写 - /// - public System.String prefix_name { get { return this._prefix_name; } set { this._prefix_name = value; } } - - private System.String _custo_format; - /// - /// 规则格式 - /// - public System.String custo_format { get { return this._custo_format; } set { this._custo_format = value; } } - - private System.String _number_format; - /// - /// 编号前缀 - /// - public System.String number_format { get { return this._number_format; } set { this._number_format = value; } } - - private System.String _separating_char; - /// - /// 规则分割符 - /// - public System.String separating_char { get { return this._separating_char; } set { this._separating_char = value; } } - - private System.String _datains_usrid; - /// - /// 资料新增人 - /// - public System.String datains_usrid { get { return this._datains_usrid; } set { this._datains_usrid = value; } } - - private System.DateTime? _datains_time; - /// - /// 资料新增时间 - /// - public System.DateTime? datains_time { get { return this._datains_time; } set { this._datains_time = value; } } - - private System.String _datachg_usrid; - /// - /// 资料更新人 - /// - public System.String datachg_usrid { get { return this._datachg_usrid; } set { this._datachg_usrid = value; } } - - private System.DateTime? _datachg_time; - /// - /// 资料更新时间 - /// - public System.DateTime? datachg_time { get { return this._datachg_time; } set { this._datachg_time = value; } } - } -} diff --git a/SYS.Core/Util/CounterRuleConsts.cs b/SYS.Core/Util/CounterRuleConsts.cs deleted file mode 100644 index 71297aa..0000000 --- a/SYS.Core/Util/CounterRuleConsts.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.Core -{ - /// - /// 流水号规则常量 - /// - public class CounterRuleConsts - { - /// - /// 员工工号流水号规则 - /// - public const string WorkerId = "WorkerId"; - - /// - /// 民族类型编号 - /// - public const string NationId = "NationId"; - - /// - /// 客户类型编号 - /// - public const string CustoId = "CustoId"; - - /// - /// 预约编号 - /// - public const string ReserId = "ReserId"; - - /// - /// 商品编号 - /// - public const string SellId = "SellId"; - - /// - /// 公告编号 - /// - public const string NoticeId = "NoticeId"; - - /// - /// 资产编号 - /// - public const string CashInfo = "CashInfo"; - - /// - /// 部门编号 - /// - public const string DeptInfo = "DeptInfo"; - - /// - /// 学历编号 - /// - public const string EducationId = "EducationId"; - - /// - /// 职位编号 - /// - public const string PositionId = "PositionId"; - - /// - /// 会员等级类型编号 - /// - public const string VipRuleId = "VipRuleId"; - } -} diff --git a/SYS.Core/Worker/Worker.cs b/SYS.Core/Worker/Worker.cs index f5e16d5..2977c57 100644 --- a/SYS.Core/Worker/Worker.cs +++ b/SYS.Core/Worker/Worker.cs @@ -46,7 +46,7 @@ namespace SYS.Core /// 出生日期 /// [SqlSugar.SugarColumn(ColumnName = "WorkerBirthday")] - public DateTime WorkerBirthday { get; set; } + public DateTime? WorkerBirthday { get; set; } /// /// 员工性别 /// @@ -110,7 +110,7 @@ namespace SYS.Core /// /// 员工入职时间 /// - public DateTime WorkerTime { get; set; } + public DateTime? WorkerTime { get; set; } /// /// 员工面貌 /// diff --git a/SYS.Core/Worker/WorkerCheck.cs b/SYS.Core/Worker/WorkerCheck.cs index 6d34d14..4654d48 100644 --- a/SYS.Core/Worker/WorkerCheck.cs +++ b/SYS.Core/Worker/WorkerCheck.cs @@ -44,7 +44,7 @@ namespace SYS.Core /// /// 打卡时间 /// - public DateTime CheckTime { get; set; } + public DateTime? CheckTime { get; set; } /// /// 打卡方式 /// @@ -70,7 +70,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -78,7 +78,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Worker/WorkerGoodBad.cs b/SYS.Core/Worker/WorkerGoodBad.cs index 6dd6f2d..1199a2b 100644 --- a/SYS.Core/Worker/WorkerGoodBad.cs +++ b/SYS.Core/Worker/WorkerGoodBad.cs @@ -65,7 +65,7 @@ namespace SYS.Core /// /// 奖惩时间 /// - public DateTime GBTime { get; set; } + public DateTime? GBTime { get; set; } /// /// 类型名称 /// @@ -82,7 +82,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -90,6 +90,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Worker/WorkerHistory.cs b/SYS.Core/Worker/WorkerHistory.cs index c925d09..d978bfc 100644 --- a/SYS.Core/Worker/WorkerHistory.cs +++ b/SYS.Core/Worker/WorkerHistory.cs @@ -44,11 +44,11 @@ namespace SYS.Core /// /// 开始时间 /// - public DateTime StartDate { get; set; } + public DateTime? StartDate { get; set; } /// /// 结束时间 /// - public DateTime EndDate { get; set; } + public DateTime? EndDate { get; set; } /// /// 职位 /// @@ -68,7 +68,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -76,6 +76,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Zero/AdminType.cs b/SYS.Core/Zero/AdminType.cs index 7d99082..0671254 100644 --- a/SYS.Core/Zero/AdminType.cs +++ b/SYS.Core/Zero/AdminType.cs @@ -63,7 +63,7 @@ namespace SYS.Core /// /// 新增时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 修改人 /// @@ -71,6 +71,6 @@ namespace SYS.Core /// /// 修改时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Zero/CheckInfo.cs b/SYS.Core/Zero/CheckInfo.cs index ccb6029..1972e3b 100644 --- a/SYS.Core/Zero/CheckInfo.cs +++ b/SYS.Core/Zero/CheckInfo.cs @@ -72,7 +72,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -80,6 +80,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Zero/Dept.cs b/SYS.Core/Zero/Dept.cs index db3682c..80a12e5 100644 --- a/SYS.Core/Zero/Dept.cs +++ b/SYS.Core/Zero/Dept.cs @@ -51,7 +51,7 @@ namespace SYS.Core /// /// 创建时间(部门) /// - public DateTime dept_date { get; set; } + public DateTime? dept_date { get; set; } /// /// 部门主管 /// @@ -81,7 +81,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -89,7 +89,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Zero/Education.cs b/SYS.Core/Zero/Education.cs index 783b74d..80c34d9 100644 --- a/SYS.Core/Zero/Education.cs +++ b/SYS.Core/Zero/Education.cs @@ -55,7 +55,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -63,7 +63,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Zero/Module.cs b/SYS.Core/Zero/Module.cs index adb3655..e7cb194 100644 --- a/SYS.Core/Zero/Module.cs +++ b/SYS.Core/Zero/Module.cs @@ -40,7 +40,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_time { get; set; } + public DateTime? datains_time { get; set; } /// /// 资料更新人 @@ -50,6 +50,6 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_time { get; set; } + public DateTime? datachg_time { get; set; } } } diff --git a/SYS.Core/Zero/Notice.cs b/SYS.Core/Zero/Notice.cs index 3524c02..032a8ea 100644 --- a/SYS.Core/Zero/Notice.cs +++ b/SYS.Core/Zero/Notice.cs @@ -56,7 +56,7 @@ namespace SYS.Core /// 公告时间 /// [SqlSugar.SugarColumn(ColumnName = "NoticeTime")] - public DateTime NoticeTime { get; set; } + public DateTime? NoticeTime { get; set; } /// /// 公告正文 /// @@ -79,7 +79,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -87,7 +87,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/Zero/VipRule.cs b/SYS.Core/Zero/VipRule.cs index 6b31a95..d97b673 100644 --- a/SYS.Core/Zero/VipRule.cs +++ b/SYS.Core/Zero/VipRule.cs @@ -73,7 +73,7 @@ namespace SYS.Core /// /// 新增时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 修改人 /// @@ -81,7 +81,7 @@ namespace SYS.Core /// /// 修改时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } /// /// 会员等级描述 diff --git a/SYS.Core/Zero/position.cs b/SYS.Core/Zero/position.cs index 8f40af4..e9d0b04 100644 --- a/SYS.Core/Zero/position.cs +++ b/SYS.Core/Zero/position.cs @@ -55,7 +55,7 @@ namespace SYS.Core /// /// 资料创建时间 /// - public DateTime datains_date { get; set; } + public DateTime? datains_date { get; set; } /// /// 资料更新人 /// @@ -63,7 +63,7 @@ namespace SYS.Core /// /// 资料更新时间 /// - public DateTime datachg_date { get; set; } + public DateTime? datachg_date { get; set; } } } diff --git a/SYS.Core/packages.config b/SYS.Core/packages.config index 8b39cf6..1da35bd 100644 --- a/SYS.Core/packages.config +++ b/SYS.Core/packages.config @@ -1,6 +1,5 @@  - diff --git a/SYS.FormUI/App.config b/SYS.FormUI/App.config index 152fadb..d1d1b29 100644 --- a/SYS.FormUI/App.config +++ b/SYS.FormUI/App.config @@ -25,7 +25,7 @@ - + diff --git a/SYS.FormUI/AppFunction/FrmAddAdmin.cs b/SYS.FormUI/AppFunction/FrmAddAdmin.cs index 2ec60cf..cba01a8 100644 --- a/SYS.FormUI/AppFunction/FrmAddAdmin.cs +++ b/SYS.FormUI/AppFunction/FrmAddAdmin.cs @@ -21,6 +21,9 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + Dictionary dic = null; + private void FrmAddAdmin_Load(object sender, EventArgs e) { LoadAdminType(); @@ -28,10 +31,16 @@ namespace SYS.FormUI LoadAdminList(); } - public void LoadAdminList() + public void LoadAdminList() { + result = HttpHelper.Request("Admin/GetAllAdmin"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAllAdmin+接口服务异常,请提交Issue!"); + return; + } dgvAdminList.AutoGenerateColumns = false; - dgvAdminList.DataSource = new AdminService().GetAllAdmin(); + dgvAdminList.DataSource = HttpHelper.JsonToList(result.message); } private void btnAdd_Click(object sender, EventArgs e) @@ -47,23 +56,33 @@ namespace SYS.FormUI datains_usr = AdminInfo.Account, datains_time = DateTime.Now }; - if (CheckInputs(admin) == true) + if (CheckInputs(admin)) { - bool result = new AdminService().AddAdmin(admin); - if (result == true) + result = HttpHelper.Request("Admin​/AddAdmin", HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("AddAdmin+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (tf) { UIMessageBox.ShowSuccess("添加管理员成功!"); LoadAdminList(); return; - - } } } public void LoadAdminType() { - cbAccountType.DataSource = new AdminService().GetAllAdminTypes(); + result = HttpHelper.Request("Admin/GetAllAdminTypes"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAllAdminTypes+接口服务异常,请提交Issue!"); + return; + } + cbAccountType.DataSource = HttpHelper.JsonToList(result.message); cbAccountType.ValueMember = "type_id"; cbAccountType.DisplayMember = "type_name"; } diff --git a/SYS.FormUI/AppFunction/FrmAddRoom.cs b/SYS.FormUI/AppFunction/FrmAddRoom.cs index 252556b..b0b0b3e 100644 --- a/SYS.FormUI/AppFunction/FrmAddRoom.cs +++ b/SYS.FormUI/AppFunction/FrmAddRoom.cs @@ -23,7 +23,7 @@ */ using System; using System.Data; -using MySql.Data.MySqlClient; + using System.Windows.Forms; using SYS.Core; using SYS.Application; @@ -42,6 +42,9 @@ namespace SYS.FormUI Room rn; + ResponseMsg result = null; + Dictionary dic = null; + private void btnAddRoom_Click(object sender, EventArgs e) { if (!string.IsNullOrWhiteSpace(txtRoomNo.Text)) @@ -57,18 +60,27 @@ namespace SYS.FormUI datains_usr = AdminInfo.Account, datains_date = DateTime.Now }; - new RoomService().InsertRoom(rn); - UIMessageBox.Show("添加房间成功!"); - LoadRoom(); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + AdminInfo.Name + "于" + DateTime.Now + "新增了房间,房间号为:" + txtRoomNo.Text + ",房间类型为:" + cboRoomType.Text, 2); - #endregion + result = HttpHelper.Request("Room​/InsertRoom", HttpHelper.ModelToJson(rn)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertRoom+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (tf) + { + UIMessageBox.Show("添加房间成功!"); + LoadRoom(); + #region 获取添加操作日志所需的信息 + RecordHelper.Record(AdminInfo.Account + AdminInfo.Name + "于" + DateTime.Now + "新增了房间,房间号为:" + txtRoomNo.Text + ",房间类型为:" + cboRoomType.Text, 2); + #endregion + return; + } } else { UIMessageBox.Show("房间信息不完整,请重试!"); } - } @@ -76,7 +88,13 @@ namespace SYS.FormUI private void FrmAddRoom_Load(object sender, EventArgs e) { LoadRoom(); - cboRoomType.DataSource = new RoomTypeService().SelectRoomTypesAll(); + result = HttpHelper.Request("RoomType/SelectRoomTypesAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomTypesAll+接口服务异常,请提交Issue!"); + return; + } + cboRoomType.DataSource = HttpHelper.JsonToList(result.message); cboRoomType.DisplayMember = "RoomName"; cboRoomType.ValueMember = "RoomType"; cboRoomType.SelectedIndex = 0; @@ -84,7 +102,13 @@ namespace SYS.FormUI public void LoadRoom() { - List rooms = new RoomService().SelectCanUseRoomAll(); + result = HttpHelper.Request("Room/SelectCanUseRoomAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCanUseRoomAll+接口服务异常,请提交Issue!"); + return; + } + List rooms = HttpHelper.JsonToList(result.message); flpRoom.Controls.Clear(); for (int i = 0; i < rooms.Count; i++) { @@ -144,8 +168,17 @@ namespace SYS.FormUI private bool CheckRoomExists(string RoomNo) { bool ret = false; - Room room = new Room(); - room = new RoomService().SelectRoomByRoomNo(RoomNo); + dic = new Dictionary + { + { "no", RoomNo } + }; + result = HttpHelper.Request("Room/SelectRoomByRoomNo",null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByRoomNo+接口服务异常,请提交Issue!"); + return ret; + } + var room = HttpHelper.JsonToModel(result.message); if (room != null) { ret = true; diff --git a/SYS.FormUI/AppFunction/FrmAddWorker.Designer.cs b/SYS.FormUI/AppFunction/FrmAddWorker.Designer.cs index d941806..9f1b6c8 100644 --- a/SYS.FormUI/AppFunction/FrmAddWorker.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmAddWorker.Designer.cs @@ -426,10 +426,6 @@ this.cboWorkerFace.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList; this.cboWorkerFace.FillColor = System.Drawing.Color.White; this.cboWorkerFace.Font = new System.Drawing.Font("微软雅黑", 15.75F); - this.cboWorkerFace.Items.AddRange(new object[] { - "群众", - "团员", - "党员"}); this.cboWorkerFace.Location = new System.Drawing.Point(433, 98); this.cboWorkerFace.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.cboWorkerFace.MinimumSize = new System.Drawing.Size(63, 0); diff --git a/SYS.FormUI/AppFunction/FrmAddWorker.cs b/SYS.FormUI/AppFunction/FrmAddWorker.cs index 876fe29..0e0550d 100644 --- a/SYS.FormUI/AppFunction/FrmAddWorker.cs +++ b/SYS.FormUI/AppFunction/FrmAddWorker.cs @@ -23,18 +23,18 @@ */ using System; using System.Collections.Generic; -using MySql.Data.MySqlClient; + using System.Drawing; using System.Windows.Forms; using SYS.Core; using Sunny.UI; using SYS.Application; -using SYS.Core.Util; using System.Net; using System.Configuration; using System.IO; using System.Text; using SYS.Common; +using System.Linq; using jvncorelib_fr.EncryptorLib; namespace SYS.FormUI @@ -58,26 +58,67 @@ namespace SYS.FormUI ucHistory ucHistory = null; private void FrmAddWorker_Load(object sender, EventArgs e) { + var result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } //加载部门信息 - cboClub.DataSource = new BaseService().SelectDeptAllCanUse(); + cboClub.DataSource = HttpHelper.JsonToList(result.message); cboClub.DisplayMember = "dept_name"; cboClub.ValueMember = "dept_no"; //加载民族信息 - cbWorkerNation.DataSource = new BaseService().SelectNationAll(new Nation { delete_mk = 0 }); + Dictionary dic = new Dictionary(); + dic.Add("delete_mk","0"); + result = HttpHelper.Request("Base/SelectNationAll",null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectNationAll+接口服务异常,请提交Issue!"); + return; + } + cbWorkerNation.DataSource = HttpHelper.JsonToList(result.message); cbWorkerNation.DisplayMember = "nation_name"; cbWorkerNation.ValueMember = "nation_no"; //加载职位信息 - cboWorkerPosition.DataSource = new BaseService().SelectPositionAll(new Position { delete_mk = 0 }); + dic = new Dictionary(); + dic.Add("delete_mk", "0"); + result = HttpHelper.Request("Base/SelectPositionAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPositionAll+接口服务异常,请提交Issue!"); + return; + } + cboWorkerPosition.DataSource = HttpHelper.JsonToList(result.message); cboWorkerPosition.DisplayMember = "position_name"; cboWorkerPosition.ValueMember = "position_no"; //加载性别信息 - cboSex.DataSource = new BaseService().SelectSexTypeAll(new SexType {delete_mk = 0 }); + dic = new Dictionary(); + dic.Add("delete_mk", "0"); + result = HttpHelper.Request("Base/SelectSexTypeAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSexTypeAll+接口服务异常,请提交Issue!"); + return; + } + cboSex.DataSource = HttpHelper.JsonToList(result.message); cboSex.DisplayMember = "sexName"; cboSex.ValueMember = "sexId"; //加载学历信息 - cboEducation.DataSource = new BaseService().SelectEducationAll(new Education { delete_mk = 0 }); + dic = new Dictionary(); + dic.Add("delete_mk", "0"); + result = HttpHelper.Request("Base/SelectEducationAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectEducationAll+接口服务异常,请提交Issue!"); + return; + } + cboEducation.DataSource = HttpHelper.JsonToList(result.message); cboEducation.DisplayMember = "education_name"; cboEducation.ValueMember = "education_no"; + //加载面貌信息 + cboWorkerFace.DataSource = new List() { "群众", "团员", "党员" }; + if (this.Text == "员工信息查看页") { @@ -112,23 +153,40 @@ namespace SYS.FormUI WorkerTel.Text = FrmChangeWorker.wk_WorkerTel; cboEducation.Text = FrmChangeWorker.wk_WorkerEducation; cboClub.Text = FrmChangeWorker.wk_WorkerClub; - var workerPicSource = new WorkerPicService().WorkerPic(new WorkerPic + + dic = new Dictionary { - WorkerId = WorkerNo.Text.Trim() - }); + { "WorkerId", WorkerNo.Text.Trim() } + }; + result = HttpHelper.Request("WorkerPicture/WorkerPic", null, dic); + //if (result.statusCode != 200) + //{ + // UIMessageBox.ShowError("WorkerPic+接口服务异常,请提交Issue!"); + // return; + //} + var workerPicSource = HttpHelper.JsonToModel(result.message); if (workerPicSource != null && !string.IsNullOrEmpty(workerPicSource.Pic)) { + EncryptLib encryptLib = new EncryptLib(); picWorkerPic.Enabled = false; picWorkerPic.BackgroundImage = null; - picWorkerPic.LoadAsync(workerPicSource.Pic); + picWorkerPic.LoadAsync(encryptLib.Decryption(HttpHelper.baseUrl) + workerPicSource.Pic); } this.WorkerID.Validated -= new EventHandler(WorkerID_Validated); - List workerHistories = new WorkerHistoryService().SelectHistoryByWorkerId(WorkerNo.Text); + dic = new Dictionary(); + dic.Add("wid", WorkerNo.Text.Trim()); + result = HttpHelper.Request("WorkerHistory/SelectHistoryByWorkerId", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectHistoryByWorkerId+接口服务异常,请提交Issue!"); + return; + } + List workerHistories = HttpHelper.JsonToList(result.message); for (int i = 0; i < workerHistories.Count; i++) { ucHistory = new ucHistory(); - ucHistory.dtpStartDate.Value = workerHistories[i].StartDate; - ucHistory.dtpEndDate.Value = workerHistories[i].EndDate; + ucHistory.dtpStartDate.Value = Convert.ToDateTime(workerHistories[i].StartDate); + ucHistory.dtpEndDate.Value = Convert.ToDateTime(workerHistories[i].EndDate); ucHistory.txtPosition.Text = workerHistories[i].Position; ucHistory.txtCompany.Text = workerHistories[i].Company; ucHistory.dtpStartDate.ReadOnly = true; @@ -140,23 +198,23 @@ namespace SYS.FormUI } else if (this.Text == "添加员工") { - WorkerNo.Text = new CounterHelper().GetNewId(CounterRuleConsts.WorkerId); + WorkerNo.Text = Util.GetListNewId("WK", 3, 1, "-").FirstOrDefault(); ucHistory = new ucHistory(); ucHistory.dtpStartDate.Enabled = true; ucHistory.dtpEndDate.Enabled = true; ucHistory.txtCompany.Enabled = true; ucHistory.txtPosition.Enabled = true; flpHistory.Controls.Add(ucHistory); - cboClub.SelectedIndex = 0; - cboEducation.SelectedIndex = 0; - cboSex.SelectedIndex = 0; - cboWorkerFace.SelectedIndex = 0; - cboWorkerPosition.SelectedIndex = 0; + //cboClub.SelectedIndex = 0; + //cboEducation.SelectedIndex = 0; + //cboSex.SelectedIndex = 0; + //cboWorkerFace.SelectedIndex = 0; + //cboWorkerPosition.SelectedIndex = 0; } else { bool dr = UIMessageBox.Show("修改操作仅能修改姓名、性别、电话号码、联系地址、民族、面貌以及最高学历,以上是否知晓?点击确定继续进行修改!", "修改提醒",UIStyle.Orange, UIMessageBoxButtons.OKCancel); - if (dr == true) + if (dr) { WorkerNo.Text = FrmChangeWorker.wk_WorkerNo; WorkerName.Text = FrmChangeWorker.wk_WorkerName; @@ -172,55 +230,81 @@ namespace SYS.FormUI cboEducation.Text = FrmChangeWorker.wk_WorkerEducation; cboClub.Text = FrmChangeWorker.wk_WorkerClub; - var workerPicSource = new WorkerPicService().WorkerPic(new WorkerPic + dic = new Dictionary(); + dic.Add("WorkerId", WorkerNo.Text.Trim()); + result = HttpHelper.Request("WorkerPicture/WorkerPic", null, dic); + if (result.statusCode != 200) { - WorkerId = WorkerNo.Text.Trim() - }); + UIMessageBox.ShowError("WorkerPic+接口服务异常,请提交Issue!"); + return; + } + var workerPicSource = HttpHelper.JsonToModel(result.message); if (workerPicSource!=null &&!string.IsNullOrEmpty(workerPicSource.Pic)) { picWorkerPic.BackgroundImage = null; picWorkerPic.LoadAsync(workerPicSource.Pic); } - this.WorkerID.Validated -= new EventHandler(WorkerID_Validated); + //this.WorkerID.Validated -= new EventHandler(WorkerID_Validated); btnOK.Text = "修改"; this.ButtonOkClick -= new EventHandler(FrmAddWorker_ButtonOkClick); this.ButtonOkClick += new EventHandler(btnUpd_Click); WorkerTel.ReadOnly = false; txtAddress.ReadOnly = false; - List workerHistories = new WorkerHistoryService().SelectHistoryByWorkerId(WorkerNo.Text); + cboWorkerFace.ReadOnly = false; + dic = new Dictionary(); + dic.Add("wid", WorkerNo.Text.Trim()); + result = HttpHelper.Request("WorkerHistory/SelectHistoryByWorkerId", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectHistoryByWorkerId+接口服务异常,请提交Issue!"); + return; + } + List workerHistories = HttpHelper.JsonToList(result.message); for (int i = 0; i < workerHistories.Count; i++) { ucHistory = new ucHistory(); - ucHistory.dtpStartDate.Value = workerHistories[i].StartDate; - ucHistory.dtpEndDate.Value = workerHistories[i].EndDate; + ucHistory.dtpStartDate.Value = Convert.ToDateTime(workerHistories[i].StartDate); + ucHistory.dtpEndDate.Value = Convert.ToDateTime(workerHistories[i].EndDate); ucHistory.txtPosition.Text = workerHistories[i].Position; ucHistory.txtCompany.Text = workerHistories[i].Company; flpHistory.Controls.Add(ucHistory); } } + else + { + return; + } } } private void btnUpd_Click(object sender, EventArgs e) { bool dr = UIMessageBox.Show("是否确认修改员工信息?", "修改提醒", UIStyle.Green,UIMessageBoxButtons.OKCancel); - if (dr == true) + if (dr) { #region 员工信息代码块 Worker worker = new Worker { WorkerId = WorkerNo.Text.Trim(), WorkerName = WorkerName.Text.Trim(), - WorkerNation = cbWorkerNation.SelectedValue == null ? "N-00001" : cbWorkerNation.SelectedValue.ToString(), + WorkerNation = cbWorkerNation.SelectedValue.ToString(), WorkerTel = WorkerTel.Text.Trim(), + CardId = WorkerID.Text.Trim(), WorkerAddress = txtAddress.Text.Trim(), - WorkerFace = cboWorkerFace.Text.Trim(), - WorkerEducation = cboEducation.SelectedValue.ToString() == null ? "E-00001" : cboEducation.SelectedValue.ToString(), + WorkerFace = cboWorkerFace.SelectedValue.ToString(), + WorkerEducation = cboEducation.SelectedValue.ToString(), + WorkerBirthday = dtpBirthday.Value, datachg_usr = AdminInfo.Account, datachg_date = DateTime.Now }; - bool i = new WorkerService().UpdateWorker(worker); - if (i == true) + var result = HttpHelper.Request("Worker/UpdateWorker", HttpHelper.ModelToJson(worker)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateWorker+接口服务异常,请提交Issue!"); + return; + } + bool i = result.message.ToString().Equals("true") ? true:false; /*new WorkerService().UpdateWorker(worker);*/ + if (i) { UIMessageBox.ShowSuccess("信息修改成功!"); #region 获取添加操作日志所需的信息 @@ -249,14 +333,14 @@ namespace SYS.FormUI { //获取得到输入的身份证号码 string identityCard = WorkerID.Text.Trim(); + if (string.IsNullOrEmpty(identityCard)) { //身份证号码不能为空,如果为空返回 - UIMessageBox.ShowWarning("身份证号码不能为空!"); + UIMessageBox.ShowError("身份证号码不能为空!"); if (WorkerID.CanFocus) { WorkerID.Focus();//设置当前输入焦点为txtCardID_identityCard - } return; } @@ -269,42 +353,34 @@ namespace SYS.FormUI if (WorkerID.CanFocus) { WorkerID.Focus(); - } return; } } - string birthday = ""; - string sex = ""; + if (identityCard.Length == 18) { - var result = new IDCardUtil().SelectCardCode(identityCard); - var address = result.Replace(",", "").ToString(); - birthday = identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2); - sex = identityCard.Substring(14, 3); - txtAddress.Text = address; - //性别代码为偶数是女性奇数为男性 - if (int.Parse(sex) % 2 == 0) + var result = Util.searchCode(identityCard); + if (result.message.IsNullOrEmpty()) //如果没有错误消息输出,则代表成功 { - cboSex.SelectedIndex = 0; + try + { + cboSex.Text = result.sex; + txtAddress.Text = result.address; + dtpBirthday.Value = Convert.ToDateTime(result.birthday); + } + catch + { + UIMessageBox.ShowError("请正确输入证件号码!"); + return; + } } else { - cboSex.SelectedIndex = 1; + UIMessageBox.ShowError(result.message); + return; } } - try - { - dtpBirthday.Value = Convert.ToDateTime(birthday); - } - catch - { - UIMessageBox.ShowError("请正确输入证件号码!"); - return; - } - - dtpBirthday.Value = Convert.ToDateTime(birthday); - return; } @@ -323,7 +399,13 @@ namespace SYS.FormUI WorkerId = WorkerNo.Text.Trim(), Pic = result.Trim(), }; - new WorkerPicService().InsertWorkerPic(workerPic); + + var response = HttpHelper.Request("WorkerPicture/InsertWorkerPic", HttpHelper.ModelToJson(workerPic)); + if (response.statusCode != 200) + { + UIMessageBox.ShowError("InsertWorkerPic+接口服务异常,请提交Issue!"); + return; + } picWorkerPic.BackgroundImage = null; @@ -353,7 +435,13 @@ namespace SYS.FormUI try { #region 员工信息添加代码块 - bool n = new WorkerService().AddWorker(worker); + var response = HttpHelper.Request("Worker/AddWorker", HttpHelper.ModelToJson(worker)); + if (response.statusCode != 200) + { + UIMessageBox.ShowError("AddWorker+接口服务异常,请提交Issue!"); + return; + } + bool n = response.message.ToString().Equals("true")?true:false; #endregion if (ucHistory.txtCompany != null && ucHistory.txtPosition != null && ucHistory.dtpStartDate.Value != null && ucHistory.dtpEndDate.Value != null) @@ -367,7 +455,14 @@ namespace SYS.FormUI Company = ucHistory.txtCompany.Text, WorkerId = WorkerNo.Text.Trim() }; - bool j = new WorkerHistoryService().AddHistoryByWorkerId(workerHistory); + + response = HttpHelper.Request("WorkerHistory/AddHistoryByWorkerId", HttpHelper.ModelToJson(workerHistory)); + if (response.statusCode != 200) + { + UIMessageBox.ShowError("AddHistoryByWorkerId+接口服务异常,请提交Issue!"); + return; + } + bool j = response.message.ToString().Equals("true") ? true : false; #endregion #region 判断履历和信息代码块 diff --git a/SYS.FormUI/AppFunction/FrmAdminManager.cs b/SYS.FormUI/AppFunction/FrmAdminManager.cs index 44bfc1a..fa5501e 100644 --- a/SYS.FormUI/AppFunction/FrmAdminManager.cs +++ b/SYS.FormUI/AppFunction/FrmAdminManager.cs @@ -1,4 +1,5 @@ -using Sunny.UI; + +using Sunny.UI; using SYS.Application; using SYS.Common; using SYS.Core; @@ -21,6 +22,9 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + Dictionary dic = null; + private void FrmAdminManager_Load(object sender, EventArgs e) { LoadAdminList(); @@ -28,8 +32,14 @@ namespace SYS.FormUI public void LoadAdminList() { - dgvAdminList.DataSource = new AdminService().GetAllAdminList(); + result = HttpHelper.Request("Admin/GetAllAdminList"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAllAdminList+接口服务异常,请提交Issue!"); + return; + } dgvAdminList.AutoGenerateColumns = false; + dgvAdminList.DataSource =HttpHelper.JsonToList(result.message); } private void btnAuthority_Click(object sender, EventArgs e) @@ -41,8 +51,14 @@ namespace SYS.FormUI Id = Convert.ToInt32(dgvAdminList.SelectedRows[0].Cells["clId"].Value), DeleteMk = Convert.ToInt32(dgvAdminList.SelectedRows[0].Cells["Column1"].Value) }; - bool result = new AdminService().UpdAccount(admin); - if (result == true) + result = HttpHelper.Request("Admin/UpdAccount",HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdAccount+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (tf) { UIMessageBox.ShowSuccess("操作成功!"); #region 获取添加操作日志所需的信息 diff --git a/SYS.FormUI/AppFunction/FrmAuthority.cs b/SYS.FormUI/AppFunction/FrmAuthority.cs index bc8485c..386f9f0 100644 --- a/SYS.FormUI/AppFunction/FrmAuthority.cs +++ b/SYS.FormUI/AppFunction/FrmAuthority.cs @@ -1,5 +1,7 @@ -using Sunny.UI; +using jvncorelib_fr.EntityLib; +using Sunny.UI; using SYS.Application; +using SYS.Common; using SYS.Core; using System; using System.Collections.Generic; @@ -20,6 +22,9 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + Dictionary dic = null; + private void FrmAuthority_Load(object sender, EventArgs e) { @@ -27,9 +32,18 @@ namespace SYS.FormUI public void LoadAdminInfo() { - Admin admin = new Admin() { AdminAccount = txtAccount.Text.Trim() }; - var adminInfo = new AdminService().GetAdminInfoByAdminAccount(admin); - if (adminInfo == null) + dic = new Dictionary() + { + { "AdminAccount",txtAccount.Text.Trim() } + }; + result = HttpHelper.Request("Admin/GetAdminInfoByAdminAccount", null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAdminInfoByAdminAccount+接口服务异常,请提交Issue!"); + return; + } + var adminInfo = HttpHelper.JsonToModel(result.message); + if (adminInfo.IsNullOrEmpty()) { UIMessageTip.ShowError("找不到对应的管理员,请检查是否输入有误!"); cbAccountType.Text = ""; @@ -45,13 +59,29 @@ namespace SYS.FormUI public void LoadAllMyModule() { tfModuleZero.ItemsLeft.Clear(); - Admin admin = new Admin() { AdminAccount = txtAccount.Text.Trim() }; - var listMyModule = new AdminModuleZeroService().GetAllModuleByAdmin(admin); + var admin = new Admin + { + AdminAccount = txtAccount.Text.Trim(), + }; + + result = HttpHelper.Request("Module/GetAllModuleByAdmin", HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAllModuleByAdmin+接口服务异常,请提交Issue!"); + return; + } + var listMyModule = HttpHelper.JsonToList(result.message); listMyModule.ForEach(myModule => { tfModuleZero.ItemsRight.Add(myModule.module_name); }); - var listModules = new AdminModuleZeroService().GetAllModule(); + result = HttpHelper.Request("Module/GetAllModule"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAllModule+接口服务异常,请提交Issue!"); + return; + } + var listModules = HttpHelper.JsonToList(result.message); listModules.ForEach(module => { var myModule = listMyModule.FirstOrDefault(a => a.module_name.Equals(module.module_name)); @@ -76,27 +106,48 @@ namespace SYS.FormUI UIMessageTip.ShowError("账号不能为空,请检查!"); return; } - Admin admin = new Admin() { AdminAccount = txtAccount.Text.Trim() }; - var listExsitModule = new AdminModuleZeroService().GetAllModuleByAdmin(admin); + dic = new Dictionary() + { + { "AdminAccount",txtAccount.Text.Trim() } + }; + result = HttpHelper.Request("Module/GetAllModuleByAdmin", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("GetAllModuleByAdmin+接口服务异常,请提交Issue!"); + return; + } + var listExsitModule = HttpHelper.JsonToList(result.message); var listAddModule = new List(); if (listExsitModule != null) { ModuleZero moduleZero = new ModuleZero() { admin_account = txtAccount.Text.Trim() }; - new AdminModuleZeroService().DelModuleZeroList(moduleZero); + result = HttpHelper.Request("Module/DelModuleZeroList", HttpHelper.ModelToJson(moduleZero)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DelModuleZeroList+接口服务异常,请提交Issue!"); + return; + } for (int i = 0; i < tfModuleZero.ItemsRight.Count; i++) { var newModule = tfModuleZero.ItemsRight[i].ToString(); listAddModule.Add(new ModuleZero() { admin_account = txtAccount.Text.Trim(), module_name = newModule, module_enable = 1 }); } } - - bool result = new AdminModuleZeroService().AddModuleZeroList(listAddModule); - if (result == true) + if (!listAddModule.IsNullOrEmpty()) { - UIMessageBox.ShowSuccess("批量授权成功!"); - return; + result = HttpHelper.Request("Module/AddModuleZeroList", HttpHelper.ModelToJson(listAddModule)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("AddModuleZeroList+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (tf) + { + UIMessageBox.ShowSuccess("批量授权成功!"); + return; + } } - } } } diff --git a/SYS.FormUI/AppFunction/FrmCash.cs b/SYS.FormUI/AppFunction/FrmCash.cs index 51b62d5..e202edf 100644 --- a/SYS.FormUI/AppFunction/FrmCash.cs +++ b/SYS.FormUI/AppFunction/FrmCash.cs @@ -22,6 +22,7 @@ * */ using System; +using System.Linq; using System.Windows.Forms; using Sunny.UI; using SYS.Application; @@ -37,22 +38,34 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = new ResponseMsg(); private void FrmCash_Load(object sender, EventArgs e) { //获取所有部门信息 - cboClub.DataSource = new BaseService().SelectDeptAll(); + result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } + cboClub.DataSource = HttpHelper.JsonToList(result.message); cboClub.DisplayMember = "dept_name"; cboClub.ValueMember = "dept_no"; //获取所有员工信息 - cboCashPerson.DataSource = new WorkerService().SelectWorkerAll(); + result = HttpHelper.Request("Worker/SelectWorkerAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectWorkerAll+接口服务异常,请提交Issue!"); + return; + } + cboCashPerson.DataSource = HttpHelper.JsonToList(result.message); cboCashPerson.DisplayMember = "WorkerName"; cboCashPerson.ValueMember = "WorkerId"; - dgvCashList.AutoGenerateColumns = false; - dgvCashList.DataSource = new CashService().SelectCashInfoAll(); - txtCashNo.Text = new CounterHelper().GetNewId(CounterRuleConsts.CashInfo); + LoadCashInfo(); + txtCashNo.Text = Util.GetListNewId("CN",3,1,"-").FirstOrDefault(); if (AdminInfo.Type != "GeneralManager" && AdminInfo.Type != "FinanceManager" && AdminInfo.isAdmin == false) { btnOK.Enabled = false; @@ -61,6 +74,18 @@ namespace SYS.FormUI } + private void LoadCashInfo() + { + dgvCashList.AutoGenerateColumns = false; + result = HttpHelper.Request("Cash/SelectCashInfoAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCashInfoAll+接口服务异常,请提交Issue!"); + return; + } + dgvCashList.DataSource = HttpHelper.JsonToList(result.message); + } + public bool CheckInput(Cash cash) { if (string.IsNullOrWhiteSpace(cash.CashNo)) @@ -109,16 +134,20 @@ namespace SYS.FormUI bool dr = UIMessageBox.Show("请确认信息没有错误,一旦录入则无法修改!", "警告提醒",UIStyle.Orange, UIMessageBoxButtons.OKCancel); if (dr == true) { - - bool n = new CashService().AddCashInfo(cash); - if (n == true) + result = HttpHelper.Request("Cash/AddCashInfo",HttpHelper.ModelToJson(cash)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("AddCashInfo+接口服务异常,请提交Issue!"); + return; + } + bool n = result.message.ToString().Equals("true")?true:false; + if (n) { - UIMessageBox.Show("录入成功!","系统提示",UIStyle.Green,UIMessageBoxButtons.OKCancel); - dgvCashList.AutoGenerateColumns = false; - dgvCashList.DataSource = new CashService().SelectCashInfoAll(); + UIMessageBox.Show("录入成功!","系统提示",UIStyle.Green,UIMessageBoxButtons.OK); + LoadCashInfo(); #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + AdminInfo.Name + "于" + DateTime.Now + "进行资产录入,资产编号为:" + txtCashNo.Text.Trim(), 3); - txtCashNo.Text = new CounterHelper().GetNewId("CashInfo"); + txtCashNo.Text = Util.GetListNewId("CN", 3, 1, "-").FirstOrDefault(); #endregion } else diff --git a/SYS.FormUI/AppFunction/FrmChangeAdminPwd.cs b/SYS.FormUI/AppFunction/FrmChangeAdminPwd.cs index 0343959..689463c 100644 --- a/SYS.FormUI/AppFunction/FrmChangeAdminPwd.cs +++ b/SYS.FormUI/AppFunction/FrmChangeAdminPwd.cs @@ -21,6 +21,7 @@ *SOFTWARE. * */ +using jvncorelib_fr.EntityLib; using Sunny.UI; using SYS.Application; using SYS.Common; @@ -45,6 +46,9 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + Dictionary dic = null; + private void FrmChangeAdminPwd_Load(object sender, EventArgs e) { @@ -53,8 +57,14 @@ namespace SYS.FormUI private void btnUpdPwd_Click(object sender, EventArgs e) { Admin admin = new Admin() { AdminAccount = AdminInfo.Account, AdminPassword = txtNewPwd.Text.Trim() }; - bool tf = new AdminService().UpdateNewPwdByOldPwd(admin); - if (tf == false) + result = HttpHelper.Request("Admin​/UpdateNewPwdByOldPwd", HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateNewPwdByOldPwd+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (!tf) { UIMessageBox.Show("服务器繁忙,修改失败!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; @@ -78,8 +88,14 @@ namespace SYS.FormUI { //校验旧密码是否正确 Admin admin = new Admin() { AdminAccount = AdminInfo.Account, AdminPassword = txtOldPwd.Text.Trim() }; - var result = new AdminService().SelectMangerByPass(admin); - if (result != null) + result = HttpHelper.Request("Admin​/SelectMangerByPass", HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectMangerByPass+接口服务异常,请提交Issue!"); + return; + } + var source = HttpHelper.JsonToModel(result.message); + if (!source.IsNullOrEmpty()) { lgCheckOldPwd.Visible = true; lgCheckOldPwd.OnColor = Color.Green; diff --git a/SYS.FormUI/AppFunction/FrmChangePosition.cs b/SYS.FormUI/AppFunction/FrmChangePosition.cs index 87d4044..3a8df18 100644 --- a/SYS.FormUI/AppFunction/FrmChangePosition.cs +++ b/SYS.FormUI/AppFunction/FrmChangePosition.cs @@ -22,12 +22,13 @@ * */ using System; -using MySql.Data.MySqlClient; + using System.Windows.Forms; using SYS.Core; using Sunny.UI; using SYS.Application; using SYS.Common; +using System.Collections.Generic; namespace SYS.FormUI { @@ -42,6 +43,9 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + Dictionary dic = null; + private void FrmChangePosition_Load(object sender, EventArgs e) { txtworkerId.Text = FrmChangeWorker.wk_WorkerNo; @@ -49,11 +53,27 @@ namespace SYS.FormUI txtClub.Text = FrmChangeWorker.wk_WorkerClub; txtPosition.Text = FrmChangeWorker.wk_WorkerPosition; //获取所有职位信息 - cboNewPosition.DataSource = new BaseService().SelectPositionAll(new Position { delete_mk = 0 }); + dic= new Dictionary() + { + { "delete_mk","0"} + }; + result = HttpHelper.Request("Base/SelectPositionAll",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPositionAll+接口服务异常,请提交Issue!"); + return; + } + cboNewPosition.DataSource = HttpHelper.JsonToList(result.message); cboNewPosition.DisplayMember = "position_name"; cboNewPosition.ValueMember = "position_no"; //获取所有部门信息 - cboNewClub.DataSource = new BaseService().SelectDeptAllCanUse(); + result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } + cboNewClub.DataSource = HttpHelper.JsonToList(result.message); cboNewClub.DisplayMember = "dept_name"; cboNewClub.ValueMember = "dept_no"; } @@ -77,8 +97,14 @@ namespace SYS.FormUI WorkerPosition = cboNewPosition.SelectedValue.ToString(), WorkerId = txtworkerId.Text }; - bool n = new WorkerService().UpdateWorkerPositionAndClub(worker); - if (n == true) + result = HttpHelper.Request("Worker​/UpdateWorkerPositionAndClub", HttpHelper.ModelToJson(worker)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateWorkerPositionAndClub+接口服务异常,请提交Issue!"); + return; + } + bool n = result.message.ToString().Equals("true"); + if (n) { UIMessageBox.ShowSuccess("任命已生效!"); #region 获取添加操作日志所需的信息 @@ -87,8 +113,6 @@ namespace SYS.FormUI FrmWorkerManager.Reload(); this.Close(); } - - } } diff --git a/SYS.FormUI/AppFunction/FrmChangeRoom.cs b/SYS.FormUI/AppFunction/FrmChangeRoom.cs index d3079b5..c2b6a42 100644 --- a/SYS.FormUI/AppFunction/FrmChangeRoom.cs +++ b/SYS.FormUI/AppFunction/FrmChangeRoom.cs @@ -39,14 +39,21 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + Dictionary dic = null; + private void FrmChangeRoom_Load(object sender, EventArgs e) { - string rno = cboRoomList.Text; - cboRoomList.DataSource = new RoomService().SelectCanUseRoomAll(); + //string rno = cboRoomList.Text; + result = HttpHelper.Request("Room/SelectCanUseRoomAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCanUseRoomAll+接口服务异常,请提交Issue!"); + return; + } + cboRoomList.DataSource = HttpHelper.JsonToList(result.message); cboRoomList.ValueMember = "RoomNo"; cboRoomList.DisplayMember = "RoomNo"; - - } private void btnChangeRoom_Click(object sender, EventArgs e) @@ -66,54 +73,102 @@ namespace SYS.FormUI datains_usr = LoginInfo.WorkerNo, datains_date = DateTime.Now }; - - if (rno.Contains("BD")) + dic = new Dictionary() + { + { "roomno",rno} + }; + result = HttpHelper.Request("Room/DayByRoomNo",null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DayByRoomNo+接口服务异常,请提交Issue!"); + return; + } + if (rno.StartsWith("BD")) { - sum = Convert.ToDouble(Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) * 300); + sum = Convert.ToDouble(Convert.ToInt32(result.message) * 300); } - if (rno.Contains("BS")) + if (rno.StartsWith("BS")) { - sum = Convert.ToDouble(Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) * 425); + sum = Convert.ToDouble(Convert.ToInt32(result.message) * 425); } - if (rno.Contains("HD")) + if (rno.StartsWith("HD")) { - sum = Convert.ToDouble(Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) * 625); + sum = Convert.ToDouble(Convert.ToInt32(result.message) * 625); } - if (rno.Contains("HS")) + if (rno.StartsWith("HS")) { - sum = Convert.ToDouble(Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) * 660); + sum = Convert.ToDouble(Convert.ToInt32(result.message) * 660); } - if (rno.Contains("QL")) + if (rno.StartsWith("QL")) { - sum = Convert.ToDouble(Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) * 845); + sum = Convert.ToDouble(Convert.ToInt32(result.message) * 845); } - if (rno.Contains("ZT")) + if (rno.StartsWith("ZT")) { - sum = Convert.ToDouble(Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) * 1080); + sum = Convert.ToDouble(Convert.ToInt32(result.message) * 1080); } Spend s = new Spend() { RoomNo = cboRoomList.Text, - SpendName = "居住" + rno + "共" + Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()) + "天", - SpendAmount = Convert.ToInt32(new RoomService().DayByRoomNo(rno).ToString()), + SpendName = "居住" + rno + "共" + Convert.ToInt32(result.message) + "天", + SpendAmount = Convert.ToInt32(result.message), CustoNo = ucRoomList.CustoNo, SpendPrice = Convert.ToDecimal(sum), SpendMoney = Convert.ToDecimal(sum), SpendTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), - MoneyState = "未结算", + MoneyState = SpendConsts.UnSettle, }; - bool result1 = new RoomService().UpdateRoomInfo(checkInRoom); - bool result2 = new RoomService().UpdateRoomByRoomNo(rno); - var result3 = new SpendService().SelectSpendByCustoNo(rno); + result = HttpHelper.Request("Room​/UpdateRoomInfo",HttpHelper.ModelToJson(checkInRoom), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateRoomInfo+接口服务异常,请提交Issue!"); + return; + } + bool result1 = result.message.ToString().Equals("true"); + dic = new Dictionary() + { + { "room",rno} + }; + result = HttpHelper.Request("Room​/UpdateRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateRoomByRoomNo+接口服务异常,请提交Issue!"); + return; + } + bool result2 = result.message.ToString().Equals("true"); + dic = new Dictionary() + { + { "No",rno} + }; + result = HttpHelper.Request("Spend​/SelectSpendByCustoNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSpendByCustoNo+接口服务异常,请提交Issue!"); + return; + } + var result3 = HttpHelper.JsonToList(result.message); if (result3.Count != 0) { - bool result4 = new SpendService().UpdateSpendInfoByRoomNo(result3, nrno, ucRoomList.CustoNo); + Spend spend = new Spend() { RoomNo = nrno, CustoNo = ucRoomList.CustoNo }; + result = HttpHelper.Request("Spend​/UpdateSpendInfoByRoomNo", HttpHelper.ModelToJson(spend)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateSpendInfoByRoomNo+接口服务异常,请提交Issue!"); + return; + } + bool result4 = result.message.ToString().Equals("true"); } - if (result1 == true && result2 == true) + if (result1&& result2) { UIMessageBox.ShowSuccess("转房成功"); - bool m = new SpendService().InsertSpendInfo(s); + result = HttpHelper.Request("Spend​/InsertSpendInfo", HttpHelper.ModelToJson(s)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertSpendInfo+接口服务异常,请提交Issue!"); + return; + } + bool m = result.message.ToString().Equals("true"); FrmRoomManager.Reload(""); #region 获取添加操作日志所需的信息 RecordHelper.Record(LoginInfo.WorkerNo + "-" + LoginInfo.WorkerName + "在" + DateTime.Now + "位于" + LoginInfo.SoftwareVersion + "执行:" +ucRoomList.CustoNo + "于" + DateTime.Now + "进行了换房!", 2); diff --git a/SYS.FormUI/AppFunction/FrmChangeWorker.cs b/SYS.FormUI/AppFunction/FrmChangeWorker.cs index 6bef312..156fa05 100644 --- a/SYS.FormUI/AppFunction/FrmChangeWorker.cs +++ b/SYS.FormUI/AppFunction/FrmChangeWorker.cs @@ -22,6 +22,7 @@ * */ using System; +using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Sunny.UI; @@ -57,6 +58,10 @@ namespace SYS.FormUI { InitializeComponent(); } + + ResponseMsg result = null; + Dictionary dic = null; + private void FrmChangeWorker_Load(object sender, EventArgs e) { if (AdminInfo.isAdmin == false && AdminInfo.Type != "GeneralManager" && AdminInfo.Type != "HRManager") @@ -260,7 +265,12 @@ namespace SYS.FormUI WorkerId = wk_WorkerNo, delete_mk = 0 }; - new WorkerService().ManagerWorkerAccount(worker); + result = HttpHelper.Request("Worker​/ManagerWorkerAccount", HttpHelper.ModelToJson(worker)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("ManagerWorkerAccount+接口服务异常,请提交Issue!"); + return; + } #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "启用员工账号操作!新增值为:" + worker.WorkerId, 2); #endregion @@ -274,7 +284,12 @@ namespace SYS.FormUI WorkerId = wk_WorkerNo, delete_mk = 1 }; - new WorkerService().ManagerWorkerAccount(worker); + result = HttpHelper.Request("Worker​/ManagerWorkerAccount", HttpHelper.ModelToJson(worker)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("ManagerWorkerAccount+接口服务异常,请提交Issue!"); + return; + } #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "禁用员工账号操作!新增值为:" + worker.WorkerId, 2); #endregion diff --git a/SYS.FormUI/AppFunction/FrmChart.cs b/SYS.FormUI/AppFunction/FrmChart.cs index 0238790..b2af470 100644 --- a/SYS.FormUI/AppFunction/FrmChart.cs +++ b/SYS.FormUI/AppFunction/FrmChart.cs @@ -27,6 +27,7 @@ using System.Drawing; using System.Windows.Forms; using Sunny.UI; using SYS.Application; +using SYS.Common; using SYS.Core; namespace SYS.FormUI @@ -38,13 +39,21 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = null; + private void FrmChart_Load(object sender, EventArgs e) { System.Windows.Forms.DataVisualization.Charting.Series series = new System.Windows.Forms.DataVisualization.Charting.Series("商品销售额(/元)"); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; //series.BorderWidth = 2; series.IsValueShownAsLabel = true; - var listHotelMoney = new CustoService().SelectAllMoney(); + result = HttpHelper.Request("Custo/SelectAllMoney"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectAllMoney+接口服务异常,请提交Issue!"); + return; + } + var listHotelMoney = HttpHelper.JsonToList(result.message); listHotelMoney.ForEach(source => { series.Points.AddXY(Convert.ToDouble(source.Years.ToString()), Convert.ToDouble(Convert.ToDouble(source.Money.ToString()))); diff --git a/SYS.FormUI/AppFunction/FrmCheckIn.cs b/SYS.FormUI/AppFunction/FrmCheckIn.cs index 34df48e..ce020ea 100644 --- a/SYS.FormUI/AppFunction/FrmCheckIn.cs +++ b/SYS.FormUI/AppFunction/FrmCheckIn.cs @@ -28,7 +28,6 @@ using SYS.Core; using Sunny.UI; using SYS.Application; using System.Transactions; -using SYS.Application.Zero; using System.Linq; using SYS.Common; @@ -48,21 +47,44 @@ namespace SYS.FormUI && CheckEmpty(txtCustoTel, "输入11位手机号码"); } int count = 0; + + ResponseMsg result = new ResponseMsg(); + #region 窗体加载事件方法 private void FrmCheckIn_Load(object sender, EventArgs e) { txtRoomNo.Text = ucRoomList.rm_RoomNo; - Room r = new RoomService().SelectRoomByRoomNo(txtRoomNo.Text); - RoomType t = new RoomTypeService().SelectRoomTypeByRoomNo(txtRoomNo.Text); + Dictionary pairs = new Dictionary(); + pairs.Add("no", txtRoomNo.Text.Trim()); + result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, pairs); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectRoomByRoomNo+接口服务异常,请提交issue"); + return; + } + Room r = HttpHelper.JsonToModel(result.message); + result = HttpHelper.Request("RoomType/SelectRoomTypeByRoomNo", null, pairs); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectRoomTypeByRoomNo+接口服务异常,请提交issue"); + return; + } + RoomType t = HttpHelper.JsonToModel(result.message); txtType.Text = t.RoomName; txtMoney.Text = r.RoomMoney.ToString(); txtRoomPosition.Text = r.RoomPosition; txtState.Text = r.RoomState; txtDeposit.Text = r.RoomDeposit.ToString(); - List ctos = new CustoService().SelectCustoAll(ref count, null,null); + result = HttpHelper.Request("Custo/SelectCustoAll", null, null); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectCustoAll+接口服务异常,请提交issue"); + return; + } + var ctos = HttpHelper.JsonToList(result.message).Select(a => a.CustoNo).ToArray(); //List roms = new RoomService().SelectCanUseRoomAll(); - txtCustoNo.AutoCompleteCustomSource.AddRange(ctos.Select(a => a.CustoNo).ToArray()); + txtCustoNo.AutoCompleteCustomSource.AddRange(ctos); try { txtCustoNo.Text = ""; @@ -98,11 +120,25 @@ namespace SYS.FormUI private void txtCustoNo_Validated(object sender, EventArgs e) { + result = HttpHelper.Request("VipRule/SelectVipRuleList", null, null); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectVipRuleList+接口服务异常,请提交issue"); + return; + } //在每次完成输入验证之后,对该用户的会员等级进行初始化或升级以及降级操作 - var listVipRule = new VipRuleAppService().SelectVipRuleList().OrderBy(a => a.rule_value).Distinct().ToList(); + var listVipRule = HttpHelper.JsonToList(result.message).OrderBy(a => a.rule_value).Distinct().ToList(); var new_type = 0; //查询该用户以往的消费记录总额是否达到指定金额,不为空则为老客户 - var listCustoSpend = new SpendService().SeletHistorySpendInfoAll(txtCustoNo.Text.Trim()); + Dictionary user = new Dictionary(); + user.Add("custoNo", txtCustoNo.Text.Trim()); + result = HttpHelper.Request("Spend/SeletHistorySpendInfoAll", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SeletHistorySpendInfoAll+接口服务异常,请提交issue"); + return; + } + var listCustoSpend = HttpHelper.JsonToList(result.message); if (!listCustoSpend.IsNullOrEmpty()) { var spendAmount = listCustoSpend.Sum(a => a.SpendMoney); @@ -117,19 +153,35 @@ namespace SYS.FormUI //不等于0即会员等级有变,需进行及时会员等级 if (new_type != 0) { - new CustoService().UpdCustomerTypeByCustoNo(txtCustoNo.Text.Trim(), new_type); + user = new Dictionary(); + user.Add("custoNo", txtCustoNo.Text.Trim()); + user.Add("userType", new_type.ToString()); + result = HttpHelper.Request("Custo/UpdCustomerTypeByCustoNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("UpdCustomerTypeByCustoNo+接口服务异常,请提交issue"); + return; + } } } - try { if (string.IsNullOrEmpty(txtCustoNo.Text)) { return; } - Custo c = new CustoService().SelectCardInfoByCustoNo(txtCustoNo.Text); + user = new Dictionary(); + user.Add("CustoNo", txtCustoNo.Text.Trim()); + result = HttpHelper.Request("Custo/SelectCardInfoByCustoNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectCardInfoByCustoNo+接口服务异常,请提交issue"); + return; + } + + Custo c = HttpHelper.JsonToModel(result.message); txtCustoName.Text = c.CustoName; txtCustoTel.Text = c.CustoTel; txtCustoType.Text = c.typeName; @@ -144,7 +196,15 @@ namespace SYS.FormUI private void FrmCheckIn_ButtonOkClick(object sender, EventArgs e) { - if (new CustoService().SelectCardInfoByCustoNo(txtCustoNo.Text) != null) + Dictionary user = new Dictionary(); + user.Add("CustoNo", txtCustoNo.Text.Trim()); + result = HttpHelper.Request("Custo/SelectCardInfoByCustoNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectCardInfoByCustoNo+接口服务异常,请提交issue"); + return; + } + if (!result.message.IsNullOrEmpty()) { using (TransactionScope scope = new TransactionScope()) { @@ -157,8 +217,13 @@ namespace SYS.FormUI datachg_usr = LoginInfo.WorkerNo, datachg_date = DateTime.Now, }; - - bool n = new RoomService().UpdateRoomInfo(r); + result = HttpHelper.Request("Room/UpdateRoomInfo", HttpHelper.ModelToJson(r), null); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("UpdateRoomInfo+接口服务异常,请提交issue"); + return; + } + bool n = result.message.Equals("true") ? true : false; if (n) { UIMessageBox.Show("登记入住成功!", "登记提示", UIStyle.Green); diff --git a/SYS.FormUI/AppFunction/FrmCheckList.cs b/SYS.FormUI/AppFunction/FrmCheckList.cs index 0da5640..ee96a09 100644 --- a/SYS.FormUI/AppFunction/FrmCheckList.cs +++ b/SYS.FormUI/AppFunction/FrmCheckList.cs @@ -21,8 +21,11 @@ *SOFTWARE. * */ + using Sunny.UI; using SYS.Application; +using SYS.Common; +using SYS.Core; using System; using System.Windows.Forms; @@ -38,9 +41,14 @@ namespace SYS.FormUI private void FrmCashList_Load(object sender, EventArgs e) { - + var result = HttpHelper.Request("CheckInfo/SelectCheckInfoAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCheckInfoAll+接口服务异常,请提交Issue!"); + return; + } dgvCheckInfo.AutoGenerateColumns = false; - dgvCheckInfo.DataSource = new CheckInfoService().SelectCheckInfoAll(); + dgvCheckInfo.DataSource = HttpHelper.JsonToList(result.message); } } } diff --git a/SYS.FormUI/AppFunction/FrmCheckOutForm.cs b/SYS.FormUI/AppFunction/FrmCheckOutForm.cs index 74876f2..7026a34 100644 --- a/SYS.FormUI/AppFunction/FrmCheckOutForm.cs +++ b/SYS.FormUI/AppFunction/FrmCheckOutForm.cs @@ -53,7 +53,8 @@ namespace SYS.FormUI InitializeComponent(); } - + ResponseMsg result = null; + Dictionary dic = null; #region 记录鼠标和窗体坐标的方法 private Point mouseOld;//鼠标旧坐标 @@ -85,7 +86,13 @@ namespace SYS.FormUI private void FrmCheckOutForm_Load(object sender, EventArgs e) { #region 加载客户类型信息 - List lstSourceGrid = new BaseService().SelectCustoTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectCustoTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List lstSourceGrid = HttpHelper.JsonToList(result.message); this.cboCustoType.DataSource = lstSourceGrid; this.cboCustoType.DisplayMember = "TypeName"; this.cboCustoType.ValueMember = "UserType"; @@ -94,7 +101,13 @@ namespace SYS.FormUI #endregion #region 加载证件类型信息 - List passPorts = new BaseService().SelectPassPortTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectPassPortTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPassPortTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List passPorts = HttpHelper.JsonToList(result.message); this.cboPassportType.DataSource = passPorts; this.cboPassportType.DisplayMember = "PassportName"; this.cboPassportType.ValueMember = "PassportId"; @@ -102,7 +115,13 @@ namespace SYS.FormUI #endregion #region 加载性别信息 - List listSexType = new BaseService().SelectSexTypeAll(new SexType { delete_mk = 0 }); + result = HttpHelper.Request("Base/SelectSexTypeAll?delete_mk=0"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSexTypeAll+接口服务异常,请提交Issue!"); + return; + } + List listSexType = HttpHelper.JsonToList(result.message); this.cboCustoSex.DataSource = listSexType; this.cboCustoSex.DisplayMember = "sexName"; this.cboCustoSex.ValueMember = "sexId"; @@ -124,44 +143,64 @@ namespace SYS.FormUI { dtpCheckTime.Text = Convert.ToDateTime(ucRoomList.co_CheckTime).ToString("yyyy年MM月dd日"); } + dic = new Dictionary() + { + { "roomno",txtRoomNo.Text} + }; + result = HttpHelper.Request("Room/DayByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DayByRoomNo+接口服务异常,请提交Issue!"); + return; + } if (rs == "BD") { - sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 300)); + sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(result.message) * 300)); } if (rs == "BS") { - sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 425)); + sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(result.message) * 425)); } if (rs == "HD") { - sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 625)); + sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(result.message) * 625)); } if (rs == "HS") { - sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 660)); + sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(result.message) * 660)); } if (rs == "QL") { - sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 845)); + sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(result.message) * 845)); } if (rs == "ZT") { - sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 1080)); + sum = Convert.ToDouble(Convert.ToString(Convert.ToInt32(result.message) * 1080)); } - lblDay.Text = Convert.ToString(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString())); + lblDay.Text = Convert.ToString(Convert.ToInt32(result.message)); w = new Wti() { CustoNo = txtCustoNo.Text, EndDate = Convert.ToDateTime(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))), - PowerUse = Convert.ToDecimal(Convert.ToInt32(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 3 * 1), - WaterUse = Convert.ToDecimal(Convert.ToDouble(new RoomService().DayByRoomNo(txtRoomNo.Text).ToString()) * 80 * 0.002), + PowerUse = Convert.ToDecimal(Convert.ToInt32(result.message) * 3 * 1), + WaterUse = Convert.ToDecimal(Convert.ToDouble(result.message) * 80 * 0.002), RoomNo = txtRoomNo.Text, Record = "admin", UseDate = Convert.ToDateTime(DateTime.Parse(dtpCheckTime.Text)), }; #region 加载客户信息 - Custo cto = new CustoService().SelectCardInfoByCustoNo(CustoNo.Text.ToString()); + dic = new Dictionary() + { + { "CustoNo",CustoNo.Text.ToString()} + }; + result = HttpHelper.Request("Custo​/SelectCardInfoByCustoNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCardInfoByCustoNo+接口服务异常,请提交Issue!"); + return; + } + Custo cto = HttpHelper.JsonToModel(result.message); try { CustoName.Text = cto.CustoName; @@ -170,7 +209,7 @@ namespace SYS.FormUI cboCustoSex.SelectedIndex = cto.CustoSex; cboCustoType.SelectedIndex = cto.CustoType; cboPassportType.SelectedIndex = cto.PassportType; - dtpBirth.Value = cto.CustoBirth; + dtpBirth.Value = Convert.ToDateTime(cto.CustoBirth); txtPassportNum.Text = cto.CustoID; } catch @@ -184,29 +223,60 @@ namespace SYS.FormUI #region 加载消费信息 string RoomNo = txtRoomNo.Text; + dic = new Dictionary() + { + { "RoomNo",RoomNo} + }; + result = HttpHelper.Request("Spend/SelectSpendInfoRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSpendInfoRoomNo+接口服务异常,请提交Issue!"); + return; + } dgvSpendList.AutoGenerateColumns = false; - dgvSpendList.DataSource = new SpendService().SelectSpendInfoRoomNo(RoomNo); - double result = 0; + dgvSpendList.DataSource = HttpHelper.JsonToList(result.message); + double total = 0; if (dgvSpendList.Rows.Count == 0) { - result = 0; + total = 0; } else { - result = Convert.ToDouble(new SpendService().SelectMoneyByRoomNoAndTime(RoomNo, CustoNo.Text.ToString())); + dic = new Dictionary() + { + { "roomno",RoomNo}, + { "custono",CustoNo.Text.ToString()} + }; + result = HttpHelper.Request("Spend/SelectMoneyByRoomNoAndTime", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectMoneyByRoomNoAndTime+接口服务异常,请提交Issue!"); + return; + } + total = Convert.ToDouble(result.message); } #endregion #region 加载水电费信息 - var listWti = new WtiService().ListWtiInfoByRoomNo(txtRoomNo.Text.Trim()); + dic = new Dictionary() + { + { "roomno",txtRoomNo.Text.Trim()} + }; + result = HttpHelper.Request("Wti/ListWtiInfoByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("ListWtiInfoByRoomNo+接口服务异常,请提交Issue!"); + return; + } + var listWti = HttpHelper.JsonToList(result.message); dgvWti.DataSource = listWti; dgvWti.AutoGenerateColumns = false; #endregion if (cboCustoType.Text == "钻石会员") { - double m = result + sum; + double m = total + sum; lblGetReceipts.Text = Decimal.Parse(m.ToString()).ToString("#,##0.00"); lblVIPPrice.Text = Decimal.Parse((m * 0.80).ToString()).ToString("#,##0.00"); lblVIP.Text = "八折"; @@ -214,28 +284,28 @@ namespace SYS.FormUI else if (cboCustoType.Text == "白金会员") { - double m = result + sum; + double m = total + sum; lblGetReceipts.Text = Decimal.Parse(m.ToString()).ToString("#,##0.00"); lblVIPPrice.Text = Decimal.Parse((m * 0.85).ToString()).ToString("#,##0.00"); lblVIP.Text = "八五折"; } else if (cboCustoType.Text == "黄金会员") { - double m = result + sum; + double m = total + sum; lblGetReceipts.Text = Decimal.Parse(m.ToString()).ToString("#,##0.00"); lblVIPPrice.Text = Decimal.Parse((m * 0.90).ToString()).ToString("#,##0.00"); lblVIP.Text = "九折"; } else if (cboCustoType.Text == "普通会员") { - double m = result + sum; + double m = total + sum; lblGetReceipts.Text = Decimal.Parse(m.ToString()).ToString("#,##0.00"); lblVIPPrice.Text = Decimal.Parse((m * 0.95).ToString()).ToString("#,##0.00"); lblVIP.Text = "九五折"; } else if (cboCustoType.Text == "普通用户") { - double m = result + sum; + double m = total + sum; lblGetReceipts.Text = Decimal.Parse(m.ToString()).ToString("#,##0.00"); lblVIPPrice.Text = Decimal.Parse(m.ToString()).ToString("#,##0.00"); lblVIP.Text = "不 打 折"; @@ -287,14 +357,39 @@ namespace SYS.FormUI { using (TransactionScope scope = new TransactionScope()) { - Room r = new RoomService().SelectRoomByRoomNo(txtRoomNo.Text);//根据房间编号查询房间信息 + dic = new Dictionary() + { + { "no",txtRoomNo.Text} + }; + result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByRoomNo+接口服务异常,请提交Issue!"); + return; + } + Room r = HttpHelper.JsonToModel(result.message);//根据房间编号查询房间信息 string checktime = r.CheckTime.ToString();//获取入住时间 if (dgvSpendList.Rows.Count == 0) { - bool n = new RoomService().UpdateRoomByRoomNo(txtRoomNo.Text); - if (n == true) + dic = new Dictionary() + { + { "room",txtRoomNo.Text} + }; + result = HttpHelper.Request("Room/UpdateRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateRoomByRoomNo+接口服务异常,请提交Issue!"); + return; + } + bool n = result.message.ToString().Equals("true"); + if (n) { - new WtiService().InsertWtiInfo(w);//添加水电费信息 + result = HttpHelper.Request("Wti​/InsertWtiInfo", HttpHelper.ModelToJson(w)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertWtiInfo+接口服务异常,请提交Issue!"); + return; + } this.Close(); } else @@ -311,12 +406,38 @@ namespace SYS.FormUI } else { - if (new SpendService().UpdateMoneyState(txtRoomNo.Text, checktime) == true) + dic = new Dictionary() + { + { "roomno",txtRoomNo.Text}, + { "checktime",checktime} + }; + result = HttpHelper.Request("Spend​/UpdateMoneyState", null, dic); + if (result.statusCode != 200) { - bool n = new RoomService().UpdateRoomByRoomNo(txtRoomNo.Text); - if (n == true) + UIMessageBox.ShowError("UpdateMoneyState+接口服务异常,请提交Issue!"); + return; + } + if (result.message.ToString().Equals("true")) + { + dic = new Dictionary() + { + { "room",txtRoomNo.Text} + }; + result = HttpHelper.Request("Room/UpdateRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateMoneyState+接口服务异常,请提交Issue!"); + return; + } + bool n = result.message.ToString().Equals("true"); + if (n) { - new WtiService().InsertWtiInfo(w);//添加水电费信息 + result = HttpHelper.Request("Wti​/InsertWtiInfo", HttpHelper.ModelToJson(w)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertWtiInfo+接口服务异常,请提交Issue!"); + return; + } this.Close(); } else diff --git a/SYS.FormUI/AppFunction/FrmCustoManager.Designer.cs b/SYS.FormUI/AppFunction/FrmCustoManager.Designer.cs index 5230632..fb9a077 100644 --- a/SYS.FormUI/AppFunction/FrmCustoManager.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmCustoManager.Designer.cs @@ -47,6 +47,8 @@ this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.cmsCustoManager = new Sunny.UI.UIContextMenuStrip(); + this.tsmiCustoNo = new System.Windows.Forms.ToolStripMenuItem(); this.btnSerach = new Sunny.UI.UIButton(); this.btnAddCusto = new Sunny.UI.UIButton(); this.btnExport = new Sunny.UI.UIButton(); @@ -57,7 +59,9 @@ this.txtCustoNo = new Sunny.UI.UITextBox(); this.label3 = new System.Windows.Forms.Label(); this.btnPg = new Sunny.UI.UIPagination(); + this.uiLine1 = new Sunny.UI.UILine(); ((System.ComponentModel.ISupportInitialize)(this.dgvCustomerList)).BeginInit(); + this.cmsCustoManager.SuspendLayout(); this.uiGroupBox1.SuspendLayout(); this.SuspendLayout(); // @@ -97,6 +101,7 @@ this.Column2, this.Column3, this.Column4}); + this.dgvCustomerList.ContextMenuStrip = this.cmsCustoManager; dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F); @@ -128,6 +133,7 @@ this.dgvCustomerList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dgvCustomerList.ShowRect = false; this.dgvCustomerList.Size = new System.Drawing.Size(999, 482); + this.dgvCustomerList.Style = Sunny.UI.UIStyle.Custom; this.dgvCustomerList.TabIndex = 111; // // CustoNo @@ -218,6 +224,23 @@ this.Column4.ReadOnly = true; this.Column4.Visible = false; // + // cmsCustoManager + // + this.cmsCustoManager.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(249)))), ((int)(((byte)(255))))); + this.cmsCustoManager.Font = new System.Drawing.Font("微软雅黑", 12F); + this.cmsCustoManager.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiCustoNo}); + this.cmsCustoManager.Name = "cmsCustoManager"; + this.cmsCustoManager.Size = new System.Drawing.Size(177, 30); + // + // tsmiCustoNo + // + this.tsmiCustoNo.Image = global::SYS.FormUI.Properties.Resources.复制; + this.tsmiCustoNo.Name = "tsmiCustoNo"; + this.tsmiCustoNo.Size = new System.Drawing.Size(176, 26); + this.tsmiCustoNo.Text = "复制用户编号"; + this.tsmiCustoNo.Click += new System.EventHandler(this.tsmiCustoNo_Click); + // // btnSerach // this.btnSerach.Cursor = System.Windows.Forms.Cursors.Hand; @@ -227,8 +250,10 @@ this.btnSerach.Name = "btnSerach"; this.btnSerach.Radius = 30; this.btnSerach.Size = new System.Drawing.Size(97, 41); + this.btnSerach.Style = Sunny.UI.UIStyle.Custom; this.btnSerach.TabIndex = 113; this.btnSerach.Text = "搜 索"; + this.btnSerach.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnSerach.Click += new System.EventHandler(this.picSearch_Click_1); // // btnAddCusto @@ -240,8 +265,10 @@ this.btnAddCusto.Name = "btnAddCusto"; this.btnAddCusto.Radius = 30; this.btnAddCusto.Size = new System.Drawing.Size(97, 41); + this.btnAddCusto.Style = Sunny.UI.UIStyle.Custom; this.btnAddCusto.TabIndex = 114; this.btnAddCusto.Text = "添加客户"; + this.btnAddCusto.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnAddCusto.Click += new System.EventHandler(this.picAddCusto_Click_1); // // btnExport @@ -253,8 +280,10 @@ this.btnExport.Name = "btnExport"; this.btnExport.Radius = 30; this.btnExport.Size = new System.Drawing.Size(97, 41); + this.btnExport.Style = Sunny.UI.UIStyle.Custom; this.btnExport.TabIndex = 115; this.btnExport.Text = "导出列表"; + this.btnExport.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnExport.Click += new System.EventHandler(this.picLoadOut_Click_1); // // btnUpdate @@ -266,8 +295,10 @@ this.btnUpdate.Name = "btnUpdate"; this.btnUpdate.Radius = 30; this.btnUpdate.Size = new System.Drawing.Size(97, 41); + this.btnUpdate.Style = Sunny.UI.UIStyle.Custom; this.btnUpdate.TabIndex = 116; this.btnUpdate.Text = "修改客户"; + this.btnUpdate.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnUpdate.Click += new System.EventHandler(this.picUpdateCusto_Click_1); // // uiGroupBox1 @@ -283,6 +314,7 @@ this.uiGroupBox1.Name = "uiGroupBox1"; this.uiGroupBox1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0); this.uiGroupBox1.Size = new System.Drawing.Size(572, 62); + this.uiGroupBox1.Style = Sunny.UI.UIStyle.Custom; this.uiGroupBox1.TabIndex = 117; this.uiGroupBox1.Text = "条件搜索"; this.uiGroupBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; @@ -301,8 +333,10 @@ this.txtCustoName.Padding = new System.Windows.Forms.Padding(5); this.txtCustoName.Radius = 20; this.txtCustoName.Size = new System.Drawing.Size(173, 33); + this.txtCustoName.Style = Sunny.UI.UIStyle.Custom; this.txtCustoName.TabIndex = 98; this.txtCustoName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + this.txtCustoName.Watermark = ""; // // label1 // @@ -328,8 +362,10 @@ this.txtCustoNo.Padding = new System.Windows.Forms.Padding(5); this.txtCustoNo.Radius = 20; this.txtCustoNo.Size = new System.Drawing.Size(173, 33); + this.txtCustoNo.Style = Sunny.UI.UIStyle.Custom; this.txtCustoNo.TabIndex = 96; this.txtCustoNo.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + this.txtCustoNo.Watermark = ""; // // label3 // @@ -343,25 +379,39 @@ // // btnPg // + this.btnPg.ButtonInterval = 5; this.btnPg.Font = new System.Drawing.Font("微软雅黑", 12F); this.btnPg.Location = new System.Drawing.Point(3, 528); this.btnPg.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.btnPg.MinimumSize = new System.Drawing.Size(1, 1); this.btnPg.Name = "btnPg"; + this.btnPg.PageSize = 12; this.btnPg.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.btnPg.Size = new System.Drawing.Size(999, 34); + this.btnPg.Size = new System.Drawing.Size(782, 34); + this.btnPg.Style = Sunny.UI.UIStyle.Custom; this.btnPg.TabIndex = 121; + this.btnPg.Text = null; this.btnPg.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.btnPg.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.btnPg_PageChanged); - this.btnPg.Paint += new System.Windows.Forms.PaintEventHandler(this.btnPg_Paint); + // + // uiLine1 + // + this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F); + this.uiLine1.Location = new System.Drawing.Point(792, 533); + this.uiLine1.MinimumSize = new System.Drawing.Size(2, 2); + this.uiLine1.Name = "uiLine1"; + this.uiLine1.Size = new System.Drawing.Size(203, 29); + this.uiLine1.Style = Sunny.UI.UIStyle.Custom; + this.uiLine1.TabIndex = 123; + this.uiLine1.Text = "右键可复制客户编号"; // // FrmCustoManager // - this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); this.ClientSize = new System.Drawing.Size(1005, 623); this.ControlBox = false; + this.Controls.Add(this.uiLine1); this.Controls.Add(this.btnPg); this.Controls.Add(this.uiGroupBox1); this.Controls.Add(this.btnUpdate); @@ -373,10 +423,11 @@ this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "FrmCustoManager"; - this.ShowIcon = true; + this.Style = Sunny.UI.UIStyle.Custom; this.Text = "客户信息管理"; this.Load += new System.EventHandler(this.FrmCustoManager_Load); ((System.ComponentModel.ISupportInitialize)(this.dgvCustomerList)).EndInit(); + this.cmsCustoManager.ResumeLayout(false); this.uiGroupBox1.ResumeLayout(false); this.uiGroupBox1.PerformLayout(); this.ResumeLayout(false); @@ -407,5 +458,8 @@ private Sunny.UI.UITextBox txtCustoNo; private System.Windows.Forms.Label label3; private Sunny.UI.UIPagination btnPg; + private Sunny.UI.UIContextMenuStrip cmsCustoManager; + private System.Windows.Forms.ToolStripMenuItem tsmiCustoNo; + private Sunny.UI.UILine uiLine1; } } \ No newline at end of file diff --git a/SYS.FormUI/AppFunction/FrmCustoManager.cs b/SYS.FormUI/AppFunction/FrmCustoManager.cs index 8f50b35..94b4d88 100644 --- a/SYS.FormUI/AppFunction/FrmCustoManager.cs +++ b/SYS.FormUI/AppFunction/FrmCustoManager.cs @@ -22,13 +22,17 @@ * */ using System; -using MySql.Data.MySqlClient; + using System.Windows.Forms; using SYS.Core; using SYS.FormUI.Properties; using System.Collections.Generic; using SYS.Application; using Sunny.UI; +using SYS.Common; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; namespace SYS.FormUI { @@ -56,9 +60,13 @@ namespace SYS.FormUI ReloadCusto = LoadCustomer; } + Dictionary dic = null; + ResponseMsg result = null; + private void FrmCustoManager_Load(object sender, EventArgs e) { //dgvCustomerList.AutoGenerateColumns = false; + this.btnPg.PageSize = 12; LoadCustomer(); LoadCustoType(); //txtCustoNo.ReadOnly = true; @@ -78,11 +86,22 @@ namespace SYS.FormUI #region 加载用户信息列表 private void LoadCustomer() { - var count = 0; - List lstSource = new CustoService().SelectCustoAll(ref count, 1, 20); - btnPg.TotalCount = count; + dic = new Dictionary() + { + { "delete_mk","0"}, + { "pageIndex","1"}, + { "pageSize","15"} + }; + result = HttpHelper.Request("Custo/SelectCustoAll",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + OSelectCustoAllDto custos = HttpHelper.JsonToModel(result.message); + this.btnPg.TotalCount = custos.total; this.dgvCustomerList.AutoGenerateColumns = false; - this.dgvCustomerList.DataSource = lstSource; + this.dgvCustomerList.DataSource = custos.listSource; } #endregion @@ -124,19 +143,44 @@ namespace SYS.FormUI { dgvCustomerList.ClearRows(); dgvCustomerList.AutoGenerateColumns = false; - List custos = null; + OSelectCustoAllDto custos = new OSelectCustoAllDto(); if (!txtCustoNo.Text.IsNullOrEmpty()) { - custos = new CustoService().SelectCustoByInfo(new Custo { CustoNo = txtCustoNo.Text.Trim() }); + dic = new Dictionary + { + { "CustoNo", txtCustoNo.Text.Trim() } + }; + result = HttpHelper.Request("Custo/SelectCustoByInfo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoByInfo+接口服务异常,请提交Issue!"); + return; + } + custos = HttpHelper.JsonToModel(result.message); } else if (!txtCustoName.Text.IsNullOrEmpty()) { - custos = new CustoService().SelectCustoByInfo(new Custo { CustoName = txtCustoName.Text.Trim() }); + dic = new Dictionary + { + { "CustoName", txtCustoName.Text.Trim() } + }; + result = HttpHelper.Request("Custo/SelectCustoByInfo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoByInfo+接口服务异常,请提交Issue!"); + return; + } + custos = HttpHelper.JsonToModel(result.message); } else { - custos = new CustoService().SelectCustoAll(ref count,1,20); - + result = HttpHelper.Request("Custo/SelectCustoAll?pageIndex=1&pageSize=20"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + custos = HttpHelper.JsonToModel(result.message); } dgvCustomerList.DataSource = custos; } @@ -212,15 +256,33 @@ namespace SYS.FormUI private void btnPg_PageChanged(object sender, object pagingSource, int pageIndex, int count) { - var totalCount = 0; - List lstSource = new CustoService().SelectCustoAll(ref totalCount, pageIndex, count); + dic = new Dictionary() + { + { "delete_mk","0"}, + { "pageIndex",pageIndex.ToString()}, + { "pageSize",count.ToString()} + }; + result = HttpHelper.Request("Custo/SelectCustoAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + OSelectCustoAllDto custos = HttpHelper.JsonToModel(result.message); + btnPg.TotalCount = custos.total; this.dgvCustomerList.AutoGenerateColumns = false; - this.dgvCustomerList.DataSource = lstSource; + this.dgvCustomerList.DataSource = custos.listSource; } private void btnPg_Paint(object sender, PaintEventArgs e) { } + + private void tsmiCustoNo_Click(object sender, EventArgs e) + { + Clipboard.SetText(dgvCustomerList.Rows[0].Cells["CustoNo"].Value as string); + UIMessageTip.ShowOk("复制完成!", 1500); + } } } diff --git a/SYS.FormUI/AppFunction/FrmCustoManager.resx b/SYS.FormUI/AppFunction/FrmCustoManager.resx index 9f5a51a..bc5715e 100644 --- a/SYS.FormUI/AppFunction/FrmCustoManager.resx +++ b/SYS.FormUI/AppFunction/FrmCustoManager.resx @@ -153,6 +153,9 @@ True + + 17, 17 + diff --git a/SYS.FormUI/AppFunction/FrmCustoSpend.cs b/SYS.FormUI/AppFunction/FrmCustoSpend.cs index f8c5845..464d74f 100644 --- a/SYS.FormUI/AppFunction/FrmCustoSpend.cs +++ b/SYS.FormUI/AppFunction/FrmCustoSpend.cs @@ -21,8 +21,11 @@ *SOFTWARE. * */ + using Sunny.UI; using SYS.Application; +using SYS.Common; +using SYS.Core; using System; using System.Windows.Forms; @@ -37,8 +40,14 @@ namespace SYS.FormUI private void FrmCustoSpend_Load(object sender, EventArgs e) { + var result = HttpHelper.Request("Spend/SelectSpendInfoAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSpendInfoAll+接口服务异常,请提交Issue!"); + return; + } dgvSpendList.AutoGenerateColumns = false; - dgvSpendList.DataSource = new SpendService().SelectSpendInfoAll(); + dgvSpendList.DataSource = HttpHelper.JsonToList(result.message); } } } diff --git a/SYS.FormUI/AppFunction/FrmCustomerManager.Designer.cs b/SYS.FormUI/AppFunction/FrmCustomerManager.Designer.cs index a1d2577..4efb160 100644 --- a/SYS.FormUI/AppFunction/FrmCustomerManager.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmCustomerManager.Designer.cs @@ -29,10 +29,10 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.dgvCustomerList = new Sunny.UI.UIDataGridView(); this.CustoNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -52,6 +52,8 @@ this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.cmsCustoManager = new Sunny.UI.UIContextMenuStrip(); + this.tsmiCustoNo = new System.Windows.Forms.ToolStripMenuItem(); this.btnSerach = new Sunny.UI.UIButton(); this.btnAddCusto = new Sunny.UI.UIButton(); this.btnUpdCustomer = new Sunny.UI.UIButton(); @@ -61,7 +63,9 @@ this.txtCustoNo = new Sunny.UI.UITextBox(); this.label3 = new System.Windows.Forms.Label(); this.btnPg = new Sunny.UI.UIPagination(); + this.uiLine1 = new Sunny.UI.UILine(); ((System.ComponentModel.ISupportInitialize)(this.dgvCustomerList)).BeginInit(); + this.cmsCustoManager.SuspendLayout(); this.uiGroupBox1.SuspendLayout(); this.SuspendLayout(); // @@ -76,21 +80,21 @@ this.dgvCustomerList.AllowUserToDeleteRows = false; this.dgvCustomerList.AllowUserToResizeColumns = false; this.dgvCustomerList.AllowUserToResizeRows = false; - dataGridViewCellStyle9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.dgvCustomerList.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle9; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvCustomerList.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; this.dgvCustomerList.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.dgvCustomerList.BackgroundColor = System.Drawing.Color.White; this.dgvCustomerList.BorderStyle = System.Windows.Forms.BorderStyle.None; this.dgvCustomerList.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised; this.dgvCustomerList.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; - dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); - dataGridViewCellStyle10.Font = new System.Drawing.Font("微软雅黑", 12F); - dataGridViewCellStyle10.ForeColor = System.Drawing.Color.White; - dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dgvCustomerList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvCustomerList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; this.dgvCustomerList.ColumnHeadersHeight = 25; this.dgvCustomerList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.dgvCustomerList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { @@ -111,24 +115,25 @@ this.Column7, this.Column8, this.Column9}); + this.dgvCustomerList.ContextMenuStrip = this.cmsCustoManager; this.dgvCustomerList.EnableHeadersVisualStyles = false; this.dgvCustomerList.Font = new System.Drawing.Font("微软雅黑", 12F); this.dgvCustomerList.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); this.dgvCustomerList.Location = new System.Drawing.Point(12, 12); this.dgvCustomerList.Name = "dgvCustomerList"; this.dgvCustomerList.ReadOnly = true; - dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - dataGridViewCellStyle11.Font = new System.Drawing.Font("微软雅黑", 12F); - dataGridViewCellStyle11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); - dataGridViewCellStyle11.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); - dataGridViewCellStyle11.SelectionForeColor = System.Drawing.Color.White; - dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dgvCustomerList.RowHeadersDefaultCellStyle = dataGridViewCellStyle11; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.White; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvCustomerList.RowHeadersDefaultCellStyle = dataGridViewCellStyle3; this.dgvCustomerList.RowHeadersVisible = false; this.dgvCustomerList.RowHeight = 29; - dataGridViewCellStyle12.BackColor = System.Drawing.Color.White; - this.dgvCustomerList.RowsDefaultCellStyle = dataGridViewCellStyle12; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.White; + this.dgvCustomerList.RowsDefaultCellStyle = dataGridViewCellStyle4; this.dgvCustomerList.RowTemplate.Height = 29; this.dgvCustomerList.SelectedIndex = -1; this.dgvCustomerList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; @@ -267,6 +272,22 @@ this.Column9.ReadOnly = true; this.Column9.Visible = false; // + // cmsCustoManager + // + this.cmsCustoManager.Font = new System.Drawing.Font("微软雅黑", 12F); + this.cmsCustoManager.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiCustoNo}); + this.cmsCustoManager.Name = "cmsCustoManager"; + this.cmsCustoManager.Size = new System.Drawing.Size(177, 30); + // + // tsmiCustoNo + // + this.tsmiCustoNo.Image = global::SYS.FormUI.Properties.Resources.复制; + this.tsmiCustoNo.Name = "tsmiCustoNo"; + this.tsmiCustoNo.Size = new System.Drawing.Size(176, 26); + this.tsmiCustoNo.Text = "复制用户编号"; + this.tsmiCustoNo.Click += new System.EventHandler(this.tsmiCustoNo_Click); + // // btnSerach // this.btnSerach.Cursor = System.Windows.Forms.Cursors.Hand; @@ -382,17 +403,29 @@ // // btnPg // + this.btnPg.ButtonInterval = 5; this.btnPg.Font = new System.Drawing.Font("微软雅黑", 12F); this.btnPg.Location = new System.Drawing.Point(12, 401); this.btnPg.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.btnPg.MinimumSize = new System.Drawing.Size(1, 1); this.btnPg.Name = "btnPg"; + this.btnPg.PageSize = 12; this.btnPg.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.btnPg.Size = new System.Drawing.Size(1048, 34); + this.btnPg.Size = new System.Drawing.Size(755, 34); this.btnPg.TabIndex = 120; + this.btnPg.Text = null; this.btnPg.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.btnPg.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.btnPg_PageChanged); - this.btnPg.Click += new System.EventHandler(this.btnPg_Click); + // + // uiLine1 + // + this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F); + this.uiLine1.Location = new System.Drawing.Point(774, 404); + this.uiLine1.MinimumSize = new System.Drawing.Size(2, 2); + this.uiLine1.Name = "uiLine1"; + this.uiLine1.Size = new System.Drawing.Size(286, 29); + this.uiLine1.TabIndex = 124; + this.uiLine1.Text = "右键可复制快速客户编号"; // // FrmCustomerManager // @@ -400,6 +433,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); this.ClientSize = new System.Drawing.Size(1072, 490); + this.Controls.Add(this.uiLine1); this.Controls.Add(this.btnPg); this.Controls.Add(this.uiGroupBox1); this.Controls.Add(this.btnUpdCustomer); @@ -412,6 +446,7 @@ this.Text = "TS酒店管理系统"; this.Load += new System.EventHandler(this.FrmCustomerManager_Load); ((System.ComponentModel.ISupportInitialize)(this.dgvCustomerList)).EndInit(); + this.cmsCustoManager.ResumeLayout(false); this.uiGroupBox1.ResumeLayout(false); this.uiGroupBox1.PerformLayout(); this.ResumeLayout(false); @@ -447,5 +482,8 @@ private Sunny.UI.UITextBox txtCustoName; private System.Windows.Forms.Label label1; private Sunny.UI.UIPagination btnPg; + private Sunny.UI.UIContextMenuStrip cmsCustoManager; + private System.Windows.Forms.ToolStripMenuItem tsmiCustoNo; + private Sunny.UI.UILine uiLine1; } } \ No newline at end of file diff --git a/SYS.FormUI/AppFunction/FrmCustomerManager.cs b/SYS.FormUI/AppFunction/FrmCustomerManager.cs index 4eea61b..51e93c7 100644 --- a/SYS.FormUI/AppFunction/FrmCustomerManager.cs +++ b/SYS.FormUI/AppFunction/FrmCustomerManager.cs @@ -22,7 +22,7 @@ * */ using System; -using MySql.Data.MySqlClient; + using System.Text.RegularExpressions; using System.Windows.Forms; using SYS.Core; @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Linq; using SYS.Application; using Sunny.UI; +using SYS.Common; namespace SYS.FormUI { @@ -49,22 +50,36 @@ namespace SYS.FormUI ReloadCustomer = LoadCustomer; } + Dictionary dic = null; + ResponseMsg result = null; + #region 用户管理界面加载事件方法 private void FrmCustomerManager_Load(object sender, EventArgs e) { + this.btnPg.PageSize = 12; LoadCustomer(); - } #endregion #region 加载用户信息列表 private void LoadCustomer() { - var count = 0; - List lstSource = new CustoService().SelectCustoAll(ref count, 1, 20); - btnPg.TotalCount = count; + dic = new Dictionary() + { + { "delete_mk","0"}, + { "pageIndex","1"}, + { "pageSize","12"} + }; + result = HttpHelper.Request("Custo/SelectCustoAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + OSelectCustoAllDto custos = HttpHelper.JsonToModel(result.message); + btnPg.TotalCount = custos.total; this.dgvCustomerList.AutoGenerateColumns = false; - this.dgvCustomerList.DataSource = lstSource; + this.dgvCustomerList.DataSource = custos.listSource; } #endregion @@ -148,19 +163,48 @@ namespace SYS.FormUI { dgvCustomerList.ClearRows(); dgvCustomerList.AutoGenerateColumns = false; - List custos = null; + List custos = new List(); if (!txtCustoNo.Text.IsNullOrEmpty()) { - custos = new CustoService().SelectCustoByInfo(new Custo { CustoNo = txtCustoNo.Text.Trim() }); + dic = new Dictionary + { + { "CustoNo", txtCustoNo.Text.Trim() } + }; + result = HttpHelper.Request("Custo/SelectCustoAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + //custos = HttpHelper.JsonToList(result.message); + var listSource = HttpHelper.JsonToModel(result.message); + custos = listSource.listSource; } else if (!txtCustoName.Text.IsNullOrEmpty()) { - custos = new CustoService().SelectCustoByInfo(new Custo { CustoName = txtCustoName.Text.Trim() }); + dic = new Dictionary + { + { "CustoName", txtCustoName.Text.Trim() } + }; + result = HttpHelper.Request("Custo/SelectCustoAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + var listSource = HttpHelper.JsonToModel(result.message); + custos = listSource.listSource; } else { - custos = new CustoService().SelectCustoAll(ref count, null,null); - + result = HttpHelper.Request("Custo/SelectCustoAll?pageIndex=1&pageSize=10"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + var listSource = HttpHelper.JsonToModel(result.message); + custos = listSource.listSource; } dgvCustomerList.DataSource = custos; } @@ -208,10 +252,28 @@ namespace SYS.FormUI private void btnPg_PageChanged(object sender, object pagingSource, int pageIndex, int count) { - var totalCount = 0; - List lstSource = new CustoService().SelectCustoAll(ref totalCount,pageIndex, count); + dic = new Dictionary() + { + { "delete_mk","0"}, + { "pageIndex",pageIndex.ToString()}, + { "pageSize",count.ToString()} + }; + result = HttpHelper.Request("Custo/SelectCustoAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoAll+接口服务异常,请提交Issue!"); + return; + } + OSelectCustoAllDto custos = HttpHelper.JsonToModel(result.message); + this.btnPg.TotalCount = custos.total; this.dgvCustomerList.AutoGenerateColumns = false; - this.dgvCustomerList.DataSource = lstSource; + this.dgvCustomerList.DataSource = custos.listSource; + } + + private void tsmiCustoNo_Click(object sender, EventArgs e) + { + Clipboard.SetText(dgvCustomerList.Rows[0].Cells["CustoNo"].Value as string); + UIMessageTip.ShowOk("复制完成!", 1500); } } diff --git a/SYS.FormUI/AppFunction/FrmCustomerManager.resx b/SYS.FormUI/AppFunction/FrmCustomerManager.resx index 03dcc7e..4626d0c 100644 --- a/SYS.FormUI/AppFunction/FrmCustomerManager.resx +++ b/SYS.FormUI/AppFunction/FrmCustomerManager.resx @@ -171,4 +171,7 @@ True + + 179, 17 + \ No newline at end of file diff --git a/SYS.FormUI/AppFunction/FrmDepartment.cs b/SYS.FormUI/AppFunction/FrmDepartment.cs index d31ea75..df5c3b5 100644 --- a/SYS.FormUI/AppFunction/FrmDepartment.cs +++ b/SYS.FormUI/AppFunction/FrmDepartment.cs @@ -50,25 +50,46 @@ namespace SYS.FormUI ReloadDeptList(); } + ResponseMsg result = null; + Dictionary dic = null; + public void ReloadDeptList() { LoadDept(); LoadLeader(); - txtDeptNo.Text = new CounterHelper().GetNewId(CounterRuleConsts.DeptInfo); + txtDeptNo.Text = Util.GetListNewId("D", 3, 1, "-").FirstOrDefault(); dgvDeptList.AutoGenerateColumns = false; - dgvDeptList.DataSource = new BaseService().SelectDeptAllCanUse(); + result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } + dgvDeptList.DataSource =HttpHelper.JsonToList(result.message); } public void LoadDept() { - cboDeptParent.DataSource = new BaseService().SelectDeptAllCanUse(); + result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } + cboDeptParent.DataSource = HttpHelper.JsonToList(result.message); cboDeptParent.DisplayMember = "dept_name"; cboDeptParent.ValueMember = "dept_no"; } public void LoadLeader() { - cboDeptLeader.DataSource = new WorkerService().SelectWorkerAll(); + result = HttpHelper.Request("Worker/SelectWorkerAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectWorkerAll+接口服务异常,请提交Issue!"); + return; + } + cboDeptLeader.DataSource = HttpHelper.JsonToList(result.message); cboDeptLeader.DisplayMember = "WorkerName"; cboDeptLeader.ValueMember = "WorkerId"; } @@ -103,8 +124,14 @@ namespace SYS.FormUI }; if (CheckInput(dept)) { - bool tf = new BaseService().AddDept(dept); - if (tf == false) + result = HttpHelper.Request("Base/AddDept",HttpHelper.ModelToJson(dept)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("AddDept+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (!tf) { UIMessageBox.Show("添加失败!或是服务器繁忙所致,请稍后重试!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; @@ -150,8 +177,14 @@ namespace SYS.FormUI }; if (CheckInput(dept)) { - bool tf = new BaseService().UpdDept(dept); - if (tf == false) + result = HttpHelper.Request("Base/UpdDept", HttpHelper.ModelToJson(dept)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdDept+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (!tf) { UIMessageBox.Show("修改失败!或是服务器繁忙所致,请稍后重试!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; @@ -179,11 +212,18 @@ namespace SYS.FormUI Dept dept = new Dept() { dept_no = txtDeptNo.Text.Trim(), - dept_name = txtDeptName.Text.Trim(), - dept_desc = txtDeptDesc.Text.Trim() + delete_mk = 1, + datachg_usr = AdminInfo.Account, + datains_date = DateTime.Now }; - bool tf = new BaseService().DelDept(dept); - if (tf == false) + result = HttpHelper.Request("Base/DelDept", HttpHelper.ModelToJson(dept)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DelDept+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true"); + if (!tf) { UIMessageBox.Show("删除失败!或是服务器繁忙所致,请稍后重试!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; diff --git a/SYS.FormUI/AppFunction/FrmEditInputs.cs b/SYS.FormUI/AppFunction/FrmEditInputs.cs index 511e4ee..45ece6a 100644 --- a/SYS.FormUI/AppFunction/FrmEditInputs.cs +++ b/SYS.FormUI/AppFunction/FrmEditInputs.cs @@ -1,8 +1,8 @@ -using Sunny.UI; + +using Sunny.UI; using SYS.Application; using SYS.Common; using SYS.Core; -using SYS.Core.Util; using System; using System.Collections.Generic; using System.ComponentModel; @@ -23,6 +23,9 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + protected override bool CheckData() { return CheckEmpty(txtCustoName, "请输入姓名") @@ -33,11 +36,17 @@ namespace SYS.FormUI private void FrmEditInputs_Load(object sender, EventArgs e) { - string cardId = new CounterHelper().GetNewId(CounterRuleConsts.CustoId); + string cardId = Util.GetListNewId("TS", 3, 1, "-").FirstOrDefault(); txtCustoNo.Text = cardId; #region 加载客户类型信息 - List lstSourceGrid = new BaseService().SelectCustoTypeAllCanUse(); + var result = HttpHelper.Request("Base/SelectCustoTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List lstSourceGrid = HttpHelper.JsonToList(result.message); this.cbCustoType.DataSource = lstSourceGrid; this.cbCustoType.DisplayMember = "TypeName"; this.cbCustoType.ValueMember = "UserType"; @@ -46,7 +55,13 @@ namespace SYS.FormUI #endregion #region 加载证件类型信息 - List passPorts = new BaseService().SelectPassPortTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectPassPortTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPassPortTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List passPorts = HttpHelper.JsonToList(result.message); this.cbPassportType.DataSource = passPorts; this.cbPassportType.DisplayMember = "PassportName"; this.cbPassportType.ValueMember = "PassportId"; @@ -54,7 +69,13 @@ namespace SYS.FormUI #endregion #region 加载性别信息 - List listSexType = new BaseService().SelectSexTypeAll(new SexType { delete_mk = 0 }); + result = HttpHelper.Request("Base/SelectSexTypeAll?delete_mk=0"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSexTypeAll+接口服务异常,请提交Issue!"); + return; + } + List listSexType = HttpHelper.JsonToList(result.message); this.cbSex.DataSource = listSexType; this.cbSex.DisplayMember = "sexName"; this.cbSex.ValueMember = "sexId"; @@ -94,24 +115,28 @@ namespace SYS.FormUI { CustoNo = txtCustoNo.Text, CustoName = txtCustoName.Text, - CustoSex = cbSex.SelectedIndex, + CustoSex = Convert.ToInt32(cbSex.SelectedValue.ToString()), CustoBirth = dtpBirthday.Value, - CustoType = cbCustoType.SelectedIndex, - PassportType = cbPassportType.SelectedIndex, + CustoType = Convert.ToInt32(cbCustoType.SelectedValue.ToString()), + PassportType = Convert.ToInt32(cbPassportType.SelectedValue.ToString()), CustoID = txtCardID.Text, CustoTel = txtTel.Text, CustoAdress = txtCustoAdress.Text, datachg_usr = LoginInfo.WorkerNo == null ? AdminInfo.Account : LoginInfo.WorkerNo, datachg_date = DateTime.Now - }; - bool t = new CustoService().UpdCustomerInfoByCustoNo(custo); + result = HttpHelper.Request("Custo/UpdCustomerInfoByCustoNo", HttpHelper.ModelToJson(custo)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdCustomerInfoByCustoNo+接口服务异常,请提交Issue!"); + return; + } + bool t = result.message.ToString().Equals("true") ? true : false; if (!t) { UIMessageBox.Show("修改失败", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; - } UIMessageBox.Show("修改成功", "系统提示", UIStyle.Green, UIMessageBoxButtons.OK); @@ -142,10 +167,10 @@ namespace SYS.FormUI { CustoNo = txtCustoNo.Text, CustoName = txtCustoName.Text, - CustoSex = cbSex.SelectedIndex, + CustoSex = Convert.ToInt32(cbSex.SelectedValue.ToString()), CustoBirth = dtpBirthday.Value, - CustoType = cbCustoType.SelectedIndex, - PassportType = cbPassportType.SelectedIndex, + CustoType = Convert.ToInt32(cbCustoType.SelectedValue.ToString()), + PassportType = Convert.ToInt32(cbPassportType.SelectedValue.ToString()), CustoID = txtCardID.Text, CustoTel = txtTel.Text, CustoAdress = txtCustoAdress.Text, @@ -154,7 +179,13 @@ namespace SYS.FormUI }; - if (new CustoService().InsertCustomerInfo(custo)) + result = HttpHelper.Request("Custo/InsertCustomerInfo", HttpHelper.ModelToJson(custo), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertCustomerInfo+接口服务异常,请提交Issue!"); + return; + } + if (result.message.ToString().Equals("true")) { UIMessageBox.Show("添加成功", "系统提示", UIStyle.Green, UIMessageBoxButtons.OK); FrmCustomerManager.ReloadCustomer(); @@ -225,36 +256,34 @@ namespace SYS.FormUI return; } } - string birthday = ""; - string sex = ""; + if (identityCard.Length == 18) { - var result = new IDCardUtil().SelectCardCode(identityCard); - var address = result.Replace(",", "").ToString(); - birthday = identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2); - sex = identityCard.Substring(14, 3); - txtCustoAdress.Text = address; - //性别代码为偶数是女性奇数为男性 - if (int.Parse(sex) % 2 == 0) + var result = Util.searchCode(identityCard); + if (result.message.IsNullOrEmpty()) //如果没有错误消息输出,则代表成功 { - cbSex.Text = "女"; + try + { + cbSex.Text = result.sex; + txtCustoAdress.Text = result.address; + dtpBirthday.Value = Convert.ToDateTime(result.birthday); + } + catch + { + UIMessageBox.ShowError("请正确输入证件号码!"); + return; + } + finally + { + cbPassportType.SelectedIndex = 0; + } } else { - cbSex.Text = "男"; + UIMessageBox.ShowError(result.message); + return; } } - try - { - dtpBirthday.Value = Convert.ToDateTime(birthday); - } - catch - { - UIMessageBox.ShowError("请正确输入证件号码!"); - } - - cbPassportType.SelectedIndex = 0; - return; } } diff --git a/SYS.FormUI/AppFunction/FrmEducation.Designer.cs b/SYS.FormUI/AppFunction/FrmEducation.Designer.cs index 099afd3..18b4e32 100644 --- a/SYS.FormUI/AppFunction/FrmEducation.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmEducation.Designer.cs @@ -29,91 +29,260 @@ namespace SYS.FormUI /// private void InitializeComponent() { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEducation)); - this.flpInformation = new System.Windows.Forms.FlowLayoutPanel(); - this.txtEducationNm = new Sunny.UI.UITextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnAdd = new Sunny.UI.UIButton(); - this.btnSearch = new Sunny.UI.UIButton(); + this.btnDeleteEducation = new Sunny.UI.UIButton(); + this.btnUpdateEducation = new Sunny.UI.UIButton(); + this.btnAddEducation = new Sunny.UI.UIButton(); + this.label7 = new System.Windows.Forms.Label(); + this.txtEducationName = new Sunny.UI.UITextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.txtEducationNo = new Sunny.UI.UITextBox(); + this.dgvEducationList = new Sunny.UI.UIDataGridView(); + this.clEducationNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.clEducationName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgvEducationList)).BeginInit(); this.SuspendLayout(); // - // flpInformation - // - this.flpInformation.AutoScroll = true; - this.flpInformation.BackColor = System.Drawing.Color.Transparent; - this.flpInformation.Location = new System.Drawing.Point(2, 117); - this.flpInformation.Margin = new System.Windows.Forms.Padding(2); - this.flpInformation.Name = "flpInformation"; - this.flpInformation.Size = new System.Drawing.Size(1001, 504); - this.flpInformation.TabIndex = 73; - this.flpInformation.SizeChanged += new System.EventHandler(this.flpInformation_SizeChanged); - // - // txtEducationNm - // - this.txtEducationNm.Cursor = System.Windows.Forms.Cursors.IBeam; - this.txtEducationNm.FillColor = System.Drawing.Color.White; - this.txtEducationNm.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.txtEducationNm.Location = new System.Drawing.Point(280, 56); - this.txtEducationNm.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtEducationNm.Maximum = 2147483647D; - this.txtEducationNm.Minimum = -2147483648D; - this.txtEducationNm.MinimumSize = new System.Drawing.Size(1, 1); - this.txtEducationNm.Name = "txtEducationNm"; - this.txtEducationNm.Padding = new System.Windows.Forms.Padding(5); - this.txtEducationNm.Radius = 20; - this.txtEducationNm.Size = new System.Drawing.Size(250, 35); - this.txtEducationNm.Style = Sunny.UI.UIStyle.Custom; - this.txtEducationNm.StyleCustomMode = true; - this.txtEducationNm.TabIndex = 127; - this.txtEducationNm.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label2.Location = new System.Drawing.Point(173, 62); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(88, 25); - this.label2.TabIndex = 123; - this.label2.Text = "学历名称"; - // - // btnAdd - // - this.btnAdd.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnAdd.Font = new System.Drawing.Font("微软雅黑", 12F); - this.btnAdd.Location = new System.Drawing.Point(582, 56); - this.btnAdd.MinimumSize = new System.Drawing.Size(1, 1); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.Radius = 20; - this.btnAdd.Size = new System.Drawing.Size(100, 35); - this.btnAdd.TabIndex = 128; - this.btnAdd.Text = "添 加"; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // - // btnSearch - // - this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 12F); - this.btnSearch.Location = new System.Drawing.Point(732, 56); - this.btnSearch.MinimumSize = new System.Drawing.Size(1, 1); - this.btnSearch.Name = "btnSearch"; - this.btnSearch.Radius = 20; - this.btnSearch.Size = new System.Drawing.Size(100, 35); - this.btnSearch.TabIndex = 129; - this.btnSearch.Text = "搜 索"; - this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click); + // btnDeleteEducation + // + this.btnDeleteEducation.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnDeleteEducation.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnDeleteEducation.Location = new System.Drawing.Point(821, 419); + this.btnDeleteEducation.MinimumSize = new System.Drawing.Size(1, 1); + this.btnDeleteEducation.Name = "btnDeleteEducation"; + this.btnDeleteEducation.Radius = 20; + this.btnDeleteEducation.Size = new System.Drawing.Size(165, 33); + this.btnDeleteEducation.TabIndex = 198; + this.btnDeleteEducation.Text = "删除学历"; + this.btnDeleteEducation.Click += new System.EventHandler(this.btnDeleteEducation_Click); + // + // btnUpdateEducation + // + this.btnUpdateEducation.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnUpdateEducation.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnUpdateEducation.Location = new System.Drawing.Point(821, 374); + this.btnUpdateEducation.MinimumSize = new System.Drawing.Size(1, 1); + this.btnUpdateEducation.Name = "btnUpdateEducation"; + this.btnUpdateEducation.Radius = 20; + this.btnUpdateEducation.Size = new System.Drawing.Size(165, 33); + this.btnUpdateEducation.TabIndex = 197; + this.btnUpdateEducation.Text = "更新学历"; + this.btnUpdateEducation.Click += new System.EventHandler(this.btnUpdateEducation_Click); + // + // btnAddEducation + // + this.btnAddEducation.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnAddEducation.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnAddEducation.Location = new System.Drawing.Point(821, 329); + this.btnAddEducation.MinimumSize = new System.Drawing.Size(1, 1); + this.btnAddEducation.Name = "btnAddEducation"; + this.btnAddEducation.Radius = 20; + this.btnAddEducation.Size = new System.Drawing.Size(165, 33); + this.btnAddEducation.TabIndex = 194; + this.btnAddEducation.Text = "新增学历"; + this.btnAddEducation.Click += new System.EventHandler(this.btnAddEducation_Click); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(859, 247); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(85, 19); + this.label7.TabIndex = 189; + this.label7.Text = "学历名称"; + // + // txtEducationName + // + this.txtEducationName.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtEducationName.FillColor = System.Drawing.Color.White; + this.txtEducationName.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtEducationName.Location = new System.Drawing.Point(821, 278); + this.txtEducationName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtEducationName.Maximum = 2147483647D; + this.txtEducationName.Minimum = -2147483648D; + this.txtEducationName.MinimumSize = new System.Drawing.Size(1, 1); + this.txtEducationName.Name = "txtEducationName"; + this.txtEducationName.Padding = new System.Windows.Forms.Padding(5); + this.txtEducationName.Radius = 20; + this.txtEducationName.Size = new System.Drawing.Size(165, 29); + this.txtEducationName.Style = Sunny.UI.UIStyle.Custom; + this.txtEducationName.StyleCustomMode = true; + this.txtEducationName.TabIndex = 188; + this.txtEducationName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label20.Location = new System.Drawing.Point(859, 175); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(85, 19); + this.label20.TabIndex = 187; + this.label20.Text = "学历编号"; + // + // txtEducationNo + // + this.txtEducationNo.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtEducationNo.FillColor = System.Drawing.Color.White; + this.txtEducationNo.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtEducationNo.Location = new System.Drawing.Point(821, 206); + this.txtEducationNo.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtEducationNo.Maximum = 2147483647D; + this.txtEducationNo.Minimum = -2147483648D; + this.txtEducationNo.MinimumSize = new System.Drawing.Size(1, 1); + this.txtEducationNo.Name = "txtEducationNo"; + this.txtEducationNo.Padding = new System.Windows.Forms.Padding(5); + this.txtEducationNo.Radius = 20; + this.txtEducationNo.ReadOnly = true; + this.txtEducationNo.Size = new System.Drawing.Size(165, 29); + this.txtEducationNo.Style = Sunny.UI.UIStyle.Custom; + this.txtEducationNo.StyleCustomMode = true; + this.txtEducationNo.TabIndex = 186; + this.txtEducationNo.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + // + // dgvEducationList + // + this.dgvEducationList.AllowUserToAddRows = false; + this.dgvEducationList.AllowUserToDeleteRows = false; + this.dgvEducationList.AllowUserToResizeColumns = false; + this.dgvEducationList.AllowUserToResizeRows = false; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvEducationList.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + this.dgvEducationList.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.dgvEducationList.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvEducationList.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvEducationList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; + this.dgvEducationList.ColumnHeadersHeight = 32; + this.dgvEducationList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dgvEducationList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.clEducationNo, + this.clEducationName, + this.Column1, + this.Column2, + this.Column3, + this.Column4, + this.Column5}); + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255))))); + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvEducationList.DefaultCellStyle = dataGridViewCellStyle3; + this.dgvEducationList.EnableHeadersVisualStyles = false; + this.dgvEducationList.Font = new System.Drawing.Font("微软雅黑", 12F); + this.dgvEducationList.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + this.dgvEducationList.Location = new System.Drawing.Point(3, 38); + this.dgvEducationList.MultiSelect = false; + this.dgvEducationList.Name = "dgvEducationList"; + this.dgvEducationList.ReadOnly = true; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.Color.White; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvEducationList.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.dgvEducationList.RowHeadersVisible = false; + this.dgvEducationList.RowHeight = 29; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.White; + this.dgvEducationList.RowsDefaultCellStyle = dataGridViewCellStyle5; + this.dgvEducationList.RowTemplate.Height = 29; + this.dgvEducationList.SelectedIndex = -1; + this.dgvEducationList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvEducationList.ShowGridLine = true; + this.dgvEducationList.Size = new System.Drawing.Size(788, 582); + this.dgvEducationList.TabIndex = 185; + this.dgvEducationList.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvEducationList_CellClick); + // + // clEducationNo + // + this.clEducationNo.DataPropertyName = "education_no"; + this.clEducationNo.HeaderText = "学历编号"; + this.clEducationNo.Name = "clEducationNo"; + this.clEducationNo.ReadOnly = true; + // + // clEducationName + // + this.clEducationName.DataPropertyName = "education_name"; + this.clEducationName.HeaderText = "学历名称"; + this.clEducationName.Name = "clEducationName"; + this.clEducationName.ReadOnly = true; + // + // Column1 + // + this.Column1.DataPropertyName = "delete_mk"; + this.Column1.HeaderText = "Column1"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + this.Column1.Visible = false; + // + // Column2 + // + this.Column2.DataPropertyName = "datains_usr"; + this.Column2.HeaderText = "Column2"; + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + this.Column2.Visible = false; + // + // Column3 + // + this.Column3.DataPropertyName = "datains_date"; + this.Column3.HeaderText = "Column3"; + this.Column3.Name = "Column3"; + this.Column3.ReadOnly = true; + this.Column3.Visible = false; + // + // Column4 + // + this.Column4.DataPropertyName = "datachg_usr"; + this.Column4.HeaderText = "Column4"; + this.Column4.Name = "Column4"; + this.Column4.ReadOnly = true; + this.Column4.Visible = false; + // + // Column5 + // + this.Column5.DataPropertyName = "datachg_date"; + this.Column5.HeaderText = "Column5"; + this.Column5.Name = "Column5"; + this.Column5.ReadOnly = true; + this.Column5.Visible = false; // // FrmEducation // this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1005, 623); + this.ClientSize = new System.Drawing.Size(1005, 627); this.ControlBox = false; - this.Controls.Add(this.btnSearch); - this.Controls.Add(this.btnAdd); - this.Controls.Add(this.txtEducationNm); - this.Controls.Add(this.label2); - this.Controls.Add(this.flpInformation); + this.Controls.Add(this.btnDeleteEducation); + this.Controls.Add(this.btnUpdateEducation); + this.Controls.Add(this.btnAddEducation); + this.Controls.Add(this.label7); + this.Controls.Add(this.txtEducationName); + this.Controls.Add(this.label20); + this.Controls.Add(this.txtEducationNo); + this.Controls.Add(this.dgvEducationList); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; @@ -122,6 +291,7 @@ namespace SYS.FormUI this.ShowTitleIcon = true; this.Text = "学历类型维护"; this.Load += new System.EventHandler(this.FrmEducation_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvEducationList)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -129,10 +299,20 @@ namespace SYS.FormUI #endregion - private System.Windows.Forms.FlowLayoutPanel flpInformation; - private Sunny.UI.UITextBox txtEducationNm; - private System.Windows.Forms.Label label2; - private Sunny.UI.UIButton btnAdd; - private Sunny.UI.UIButton btnSearch; + private Sunny.UI.UIButton btnDeleteEducation; + private Sunny.UI.UIButton btnUpdateEducation; + private Sunny.UI.UIButton btnAddEducation; + private System.Windows.Forms.Label label7; + private Sunny.UI.UITextBox txtEducationName; + private System.Windows.Forms.Label label20; + private Sunny.UI.UITextBox txtEducationNo; + private Sunny.UI.UIDataGridView dgvEducationList; + private System.Windows.Forms.DataGridViewTextBoxColumn clEducationNo; + private System.Windows.Forms.DataGridViewTextBoxColumn clEducationName; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; } } \ No newline at end of file diff --git a/SYS.FormUI/AppFunction/FrmEducation.cs b/SYS.FormUI/AppFunction/FrmEducation.cs index cc424f0..54c3161 100644 --- a/SYS.FormUI/AppFunction/FrmEducation.cs +++ b/SYS.FormUI/AppFunction/FrmEducation.cs @@ -21,6 +21,7 @@ *SOFTWARE. * */ + using Sunny.UI; using SYS.Application; using SYS.Common; @@ -48,18 +49,11 @@ namespace SYS.FormUI public static OperationEducation reload; - public static OperationEducation Accessed; - - public static OperationEducation insert; - public FrmEducation() { InitializeComponent(); - operation = Visited; reload = ReloadEducationList; - Accessed = Access; } - ucEducationInformation baseInfo = null; List educations = null; public static string info = null; private void FrmEducation_Load(object sender, EventArgs e) @@ -67,142 +61,103 @@ namespace SYS.FormUI ReloadEducationList(); } + ResponseMsg result = null; + Dictionary dic = null; public void ReloadEducationList() { - flpInformation.Controls.Clear(); - educations = new BaseService().SelectEducationAll(); - for (int i = 0; i < educations.Count; i++) + //flpInformation.Controls.Clear(); + txtEducationNo.Text = Util.GetListNewId("E", 3, 1, "-").FirstOrDefault(); + result = HttpHelper.Request("Base/SelectEducationAll"); + if (result.statusCode != 200) { - baseInfo = new ucEducationInformation(); - baseInfo.Tag = "学历"; - baseInfo.lbName.Text = "名称:" + educations[i].education_name; - if (educations[i].delete_mk == 1) - { - baseInfo.btnOperation.Text = "恢复"; - baseInfo.btnOperation.FillColor = Color.FromArgb(33, 179, 81); - baseInfo.lbName.BackColor = Color.Red; - baseInfo.btnOperation.FillHoverColor = Color.FromArgb(128, 255, 128); - } - flpInformation.Controls.Add(baseInfo); + UIMessageBox.ShowError("SelectEducationAll+接口服务异常,请提交Issue!"); + return; } + educations = HttpHelper.JsonToList(result.message); + dgvEducationList.AutoGenerateColumns = false; + dgvEducationList.DataSource = educations; } - private void flpInformation_SizeChanged(object sender, EventArgs e) - { - flpInformation.Width = 660; - flpInformation.Height = 582; - } - - public void Visited() + private void btnAddEducation_Click(object sender, EventArgs e) { - //筛选出只与当前学历对应的数据 - Education education = educations.FirstOrDefault(a => a.education_name.Equals(info)); - if (education.education_name.Equals(info)) + if (txtEducationName.Text.Trim().IsNullOrEmpty()) { - var _education = new Education() - { - education_no = education.education_no, - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }; - if (_education != null) - { - bool n = new BaseService().DelEducation(_education); - if (n == true) - { - UIMessageBox.ShowSuccess("删除成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "删除学历类型操作!删除值为:" + _education.education_no, 2); - #endregion - ReloadEducationList(); - } - } + UIMessageTip.ShowWarning("学历名称为空,请检查",1500); + txtEducationName.Focus(); + return; } - } - public void Access() - { - //筛选出只与当前学历对应的数据 - Education education = educations.FirstOrDefault(a => a.education_name.Equals(info)); - if (education.education_name.Equals(info)) + var edu = new Education() { - var _education = new Education() - { - education_no = education.education_no, - delete_mk = 0, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }; - if (_education != null) - { - bool n = new BaseService().DelEducation(_education); - if (n == true) - { - UIMessageBox.ShowSuccess("恢复成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "恢复学历类型操作!删除值为:" + _education.education_no, 2); - #endregion - ReloadEducationList(); - } - } + education_no = txtEducationNo.Text.Trim(), + education_name = txtEducationName.Text.Trim(), + delete_mk = 0, + datains_usr = AdminInfo.Account, + datains_date = DateTime.Now + }; + result = HttpHelper.Request("Base​/AddEducation",HttpHelper.ModelToJson(edu)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) + { + UIMessageTip.ShowError("AddEducation+接口服务异常,请提交Issue!", 1500); + return; } + UIMessageTip.ShowOk("添加学历成功!", 1500); + #region 获取添加操作日志所需的信息 + RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增学历类型操作!新增值为:" + edu.education_no, 2); + #endregion + ReloadEducationList(); + return; } - private void btnAdd_Click(object sender, EventArgs e) + private void btnUpdateEducation_Click(object sender, EventArgs e) { - if (txtEducationNm.Text.Trim().IsNullOrEmpty()) + if (dgvEducationList.SelectedRows.Count <= 0) { - UIMessageTip.ShowError("学历名称为空,请检查", 3000); + UIMessageTip.ShowWarning("未选择需修改的学历数据,请检查",1500); return; } - var _education = new Education() + var edu = new Education() { - education_no = new SYS.Core.CounterHelper().GetNewId(CounterRuleConsts.EducationId).ToString(), - education_name = txtEducationNm.Text.Trim(), - delete_mk = 0, - datains_usr = AdminInfo.Account, - datains_date = DateTime.Now + education_no = txtEducationNo.Text.Trim(), + education_name = txtEducationName.Text.Trim(), + datachg_usr = AdminInfo.Account, + datachg_date = DateTime.Now }; - if (_education != null) + result = HttpHelper.Request("Base​/UpdEducation", HttpHelper.ModelToJson(edu)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) { - bool n = new BaseService().AddEducation(_education); - if (n == true) - { - UIMessageBox.ShowSuccess("新增成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增学历类型操作!新增值为:" + _education.education_no, 2); - #endregion - ReloadEducationList(); - txtEducationNm.Text = ""; - } + UIMessageTip.ShowError("UpdEducation+接口服务异常,请提交Issue!", 1500); + return; } } - private void btnSearch_Click(object sender, EventArgs e) + private void btnDeleteEducation_Click(object sender, EventArgs e) { - if (txtEducationNm.Text.Trim().IsNullOrEmpty()) + if (dgvEducationList.SelectedRows.Count <= 0) { - UIMessageTip.ShowError("学历名称为空,请检查", 3000); + UIMessageTip.ShowWarning("未选择需修改的学历数据,请检查", 1500); return; } - var listSource = new BaseService().SelectEducationAll(new Education { education_name = txtEducationNm.Text.Trim() }); - flpInformation.Controls.Clear(); - for (int i = 0; i < listSource.Count; i++) + var edu = new Education() { - baseInfo = new ucEducationInformation(); - baseInfo.Tag = "学历"; - baseInfo.lbName.Text = "名称:" + listSource[i].education_name; - if (listSource[i].delete_mk == 1) - { - baseInfo.btnOperation.Text = "恢复"; - baseInfo.btnOperation.FillColor = Color.FromArgb(33, 179, 81); - baseInfo.lbName.BackColor = Color.Red; - baseInfo.btnOperation.FillHoverColor = Color.FromArgb(128, 255, 128); - } - flpInformation.Controls.Add(baseInfo); + education_no = txtEducationNo.Text.Trim(), + education_name = txtEducationName.Text.Trim(), + datachg_usr = AdminInfo.Account, + datachg_date = DateTime.Now + }; + result = HttpHelper.Request("Base​/DelEducation", HttpHelper.ModelToJson(edu)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) + { + UIMessageTip.ShowError("DelEducation+接口服务异常,请提交Issue!", 1500); + return; } } + + private void dgvEducationList_CellClick(object sender, DataGridViewCellEventArgs e) + { + txtEducationNo.Text = dgvEducationList.Rows[0].Cells["clEducationNo"].Value.ToString(); + txtEducationName.Text = dgvEducationList.Rows[0].Cells["clEducationName"].Value.ToString(); + } } } diff --git a/SYS.FormUI/AppFunction/FrmEducation.resx b/SYS.FormUI/AppFunction/FrmEducation.resx index 4691df2..94aa12d 100644 --- a/SYS.FormUI/AppFunction/FrmEducation.resx +++ b/SYS.FormUI/AppFunction/FrmEducation.resx @@ -117,6 +117,27 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + + + True + + + True + + + True + + + True + diff --git a/SYS.FormUI/AppFunction/FrmGoodOrBad.cs b/SYS.FormUI/AppFunction/FrmGoodOrBad.cs index 814dd4a..00e1fa2 100644 --- a/SYS.FormUI/AppFunction/FrmGoodOrBad.cs +++ b/SYS.FormUI/AppFunction/FrmGoodOrBad.cs @@ -44,18 +44,41 @@ namespace SYS.FormUI InitializeComponent(); } - + Dictionary dic = null; + ResponseMsg result = null; private void FrmGoodOrBad_Load(object sender, EventArgs e) { + LoadGoodBadInfo(); + result = HttpHelper.Request("Base/SelectGBTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectGBTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + CboType.DataSource = HttpHelper.JsonToList(result.message); + CboType.DisplayMember = "GBName"; + CboType.ValueMember = "GBTypeId"; + } + + public void LoadGoodBadInfo() + { + DgvGoodBadList.Rows.Clear(); lblWorkerNo.Text = FrmWorkerManager.wk_WorkerNo; lblName.Text = FrmWorkerManager.wk_WorkerName; - lblDate.Text = Convert.ToDateTime(FrmWorkerManager.wk_WorkerTime).ToString("yyyy年MM月dd日").Substring(0,9); + lblDate.Text = Convert.ToDateTime(FrmWorkerManager.wk_WorkerTime).ToString("yyyy年MM月dd日").Substring(0, 9); + dic = new Dictionary() + { + { "wn",lblWorkerNo.Text} + }; + result = HttpHelper.Request("WorkerGoodBad/SelectAllGoodBadByWorkNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectAllGoodBadByWorkNo+接口服务异常,请提交Issue!"); + return; + } DgvGoodBadList.AutoGenerateColumns = false; - DgvGoodBadList.DataSource = new WorkerGoodBadService().SelectAllGoodBadByWorkNo(lblWorkerNo.Text); - CboType.DataSource = new BaseService().SelectGBTypeAll(); - CboType.DisplayMember = "GBName"; - CboType.ValueMember = "GBTypeId"; + DgvGoodBadList.DataSource = HttpHelper.JsonToList(result.message); } public bool CheckInput(WorkerGoodBad workerGoodBad) @@ -98,16 +121,22 @@ namespace SYS.FormUI if (CheckInput(goodBad)) { bool dr = UIMessageBox.Show("确定录入?一旦录入后将无法修改及删除,或会影响员工的晋升!", "录入警告",UIStyle.Orange, UIMessageBoxButtons.OKCancel); - if (!dr) + if (dr) { - bool n = new WorkerGoodBadService().AddGoodBad(goodBad); - if (n == true) + result = HttpHelper.Request("WorkerGoodBad​/AddGoodBad",HttpHelper.ModelToJson(goodBad)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("AddGoodBad+接口服务异常,请提交Issue!"); + return; + } + bool n = result.message.ToString().Equals("true"); + if (n) { UIMessageBox.Show("新增成功!","系统提示",UIStyle.Green,UIMessageBoxButtons.OK); #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "录入员工奖惩操作!新增值为:" + goodBad.GBInfo, 2); #endregion - DgvGoodBadList.DataSource = new WorkerGoodBadService().SelectAllGoodBadByWorkNo(lblWorkerNo.Text); + LoadGoodBadInfo(); } else { @@ -126,7 +155,6 @@ namespace SYS.FormUI { UIMessageBox.Show("信息不能为空!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); } - } private void btnClose_Click(object sender, EventArgs e) diff --git a/SYS.FormUI/AppFunction/FrmMySpace.cs b/SYS.FormUI/AppFunction/FrmMySpace.cs index 4b67dea..0d5f8f2 100644 --- a/SYS.FormUI/AppFunction/FrmMySpace.cs +++ b/SYS.FormUI/AppFunction/FrmMySpace.cs @@ -27,7 +27,6 @@ using Sunny.UI; using SYS.Application; using SYS.Common; using SYS.Core; -using SYS.Core.Util; using System; using System.Collections.Generic; using System.ComponentModel; @@ -53,19 +52,49 @@ namespace SYS.FormUI private void FrmMySpace_Load(object sender, EventArgs e) { //加载民族信息 - cbWorkerNation.DataSource = new BaseService().SelectNationAll(new Nation { delete_mk = 0 }); + Dictionary dic = new Dictionary(); + dic.Add("delete_mk", "0"); + var result = HttpHelper.Request("Base/SelectNationAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectNationAll+接口服务异常,请提交Issue!"); + return; + } + cbWorkerNation.DataSource = HttpHelper.JsonToList(result.message); cbWorkerNation.DisplayMember = "nation_name"; cbWorkerNation.ValueMember = "nation_no"; //加载性别信息 - cboSex.DataSource = new BaseService().SelectSexTypeAll(new SexType { delete_mk = 0 }); + dic = new Dictionary(); + dic.Add("delete_mk", "0"); + result = HttpHelper.Request("Base/SelectSexTypeAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSexTypeAll+接口服务异常,请提交Issue!"); + return; + } + cboSex.DataSource = HttpHelper.JsonToList(result.message); cboSex.DisplayMember = "sexName"; cboSex.ValueMember = "sexId"; //加载部门信息 - cboWorkerClub.DataSource = new BaseService().SelectDeptAllCanUse(); + result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } + cboWorkerClub.DataSource = HttpHelper.JsonToList(result.message); cboWorkerClub.DisplayMember = "dept_name"; cboWorkerClub.ValueMember = "dept_no"; //加载职位信息 - cboWorkerPosition.DataSource = new BaseService().SelectPositionAll(new Position { delete_mk = 0 }); + dic = new Dictionary(); + dic.Add("delete_mk", "0"); + result = HttpHelper.Request("Base/SelectPositionAll", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPositionAll+接口服务异常,请提交Issue!"); + return; + } + cboWorkerPosition.DataSource = HttpHelper.JsonToList(result.message); cboWorkerPosition.DisplayMember = "position_name"; cboWorkerPosition.ValueMember = "position_no"; LoadData(); @@ -78,8 +107,16 @@ namespace SYS.FormUI public void LoadData() { - Worker worker = new WorkerService().SelectWorkerInfoByWorkerId(LoginInfo.WorkerNo); - if (worker != null) + var dic = new Dictionary(); + dic.Add("workerId", LoginInfo.WorkerNo); + var result = HttpHelper.Request("Worker/SelectWorkerInfoByWorkerId", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectWorkerInfoByWorkerId+接口服务异常,请提交Issue!"); + return; + } + Worker worker = HttpHelper.JsonToModel(result.message); + if (!worker.IsNullOrEmpty()) { txtWorkerNo.Text = worker.WorkerId; txtWorkerName.Text = worker.WorkerName; @@ -93,15 +130,20 @@ namespace SYS.FormUI txtAddress.Text = worker.WorkerAddress; txtTel.Text = worker.WorkerTel; } - - var workerPicSource = new WorkerPicService().WorkerPic(new WorkerPic + dic = new Dictionary(); + dic.Add("WorkerId", LoginInfo.WorkerNo); + result = HttpHelper.Request("WorkerPicture/WorkerPic", null, dic); + if (result.statusCode != 200) { - WorkerId = LoginInfo.WorkerNo.Trim() - }); + UIMessageBox.ShowError("WorkerPic+接口服务异常,请提交Issue!"); + return; + } + var workerPicSource = HttpHelper.JsonToModel(result.message); if (workerPicSource != null && !string.IsNullOrEmpty(workerPicSource.Pic)) { + EncryptLib encryptLib = new EncryptLib(); picWorkerPic.BackgroundImage = null; - picWorkerPic.LoadAsync(workerPicSource.Pic); + picWorkerPic.LoadAsync(encryptLib.Decryption(HttpHelper.baseUrl) + workerPicSource.Pic); } } @@ -118,8 +160,14 @@ namespace SYS.FormUI { //校验旧密码是否正确 Worker worker = new Worker() { WorkerId = LoginInfo.WorkerNo, WorkerPwd = txtOldPwd.Text.Trim() }; - var result = new WorkerService().SelectWorkerInfoByWorkerIdAndWorkerPwd(worker); - if (result != null) + var result = HttpHelper.Request("Worker/SelectWorkerInfoByWorkerIdAndWorkerPwd", HttpHelper.ModelToJson(worker), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectWorkerInfoByWorkerIdAndWorkerPwd+接口服务异常,请提交Issue!"); + return; + } + worker = HttpHelper.JsonToModel(result.message); + if (worker != null) { lgCheckOldPwd.Visible = true; lgCheckOldPwd.OnColor = Color.Green; @@ -166,8 +214,14 @@ namespace SYS.FormUI private void btnUpdPwd_Click(object sender, EventArgs e) { - bool tf = new WorkerService().UpdWorkerPwdByWorkNo(LoginInfo.WorkerNo, txtNewPwd.Text.Trim()); - if (tf == false) + var result = HttpHelper.Request("Worker/UpdWorkerPwdByWorkNo", HttpHelper.ModelToJson(new Worker { WorkerId = LoginInfo.WorkerNo, WorkerPwd = txtNewPwd.Text.Trim() }), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdWorkerPwdByWorkNo+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true") ? true : false; + if (!tf) { UIMessageBox.Show("服务器繁忙,修改失败!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; @@ -210,7 +264,7 @@ namespace SYS.FormUI } return true; } - + ResponseMsg result = new ResponseMsg(); private void btnUpdWorker_Click(object sender, EventArgs e) { Worker worker = new Worker() @@ -227,8 +281,14 @@ namespace SYS.FormUI if (CheckInput(worker)) { - bool tf = new WorkerService().UpdateWorker(worker); - if (tf == false) + result = HttpHelper.Request("Worker/UpdateWorker", HttpHelper.ModelToJson(worker), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateWorker+接口服务异常,请提交Issue!"); + return; + } + bool tf = result.message.ToString().Equals("true") ? true:false; + if (!tf) { UIMessageBox.Show("修改失败!服务器处于繁忙,请稍后再试!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; @@ -259,10 +319,24 @@ namespace SYS.FormUI { WorkerId = txtWorkerNo.Text.Trim(), }; - var source = new WorkerPicService().WorkerPic(workerPic); + Dictionary dic = new Dictionary(); + dic.Add("WorkerId", txtWorkerNo.Text.Trim()); + result = HttpHelper.Request("WorkerPicture/WorkerPic", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("WorkerPic+接口服务异常,请提交Issue!"); + return; + } + var source = HttpHelper.JsonToModel(result.message); if (!source.IsNullOrEmpty()) { - if (new WorkerPicService().DeleteWorkerPic(workerPic)) + result = HttpHelper.Request("WorkerPicture/DeleteWorkerPic", HttpHelper.ModelToJson(workerPic), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DeleteWorkerPic+接口服务异常,请提交Issue!"); + return; + } + if (result.message.ToString().Equals("true")) { PicHandler(); } @@ -284,7 +358,12 @@ namespace SYS.FormUI WorkerId = txtWorkerNo.Text.Trim(), Pic = result.Trim(), }; - new WorkerPicService().InsertWorkerPic(workerPic); + var requestResult = HttpHelper.Request("WorkerPicture/InsertWorkerPic", HttpHelper.ModelToJson(workerPic), null); + if (requestResult.statusCode != 200) + { + UIMessageBox.ShowError("InsertWorkerPic+接口服务异常,请提交Issue!"); + return; + } picWorkerPic.BackgroundImage = null; picWorkerPic.LoadAsync(encryptLib.Decryption(HttpHelper.baseUrl) + result.Trim()); UIMessageTip.ShowOk("头像上传成功!稍等将会加载头像哦.."); diff --git a/SYS.FormUI/AppFunction/FrmNation.Designer.cs b/SYS.FormUI/AppFunction/FrmNation.Designer.cs index dd00870..bd477d0 100644 --- a/SYS.FormUI/AppFunction/FrmNation.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmNation.Designer.cs @@ -29,79 +29,245 @@ namespace SYS.FormUI /// private void InitializeComponent() { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmNation)); - this.flpInformation = new System.Windows.Forms.FlowLayoutPanel(); - this.btnAdd = new Sunny.UI.UIButton(); - this.txtNationNm = new Sunny.UI.UITextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnSearch = new Sunny.UI.UIButton(); + this.btnDeleteNation = new Sunny.UI.UIButton(); + this.btnUpdateNation = new Sunny.UI.UIButton(); + this.btnAddNation = new Sunny.UI.UIButton(); + this.label7 = new System.Windows.Forms.Label(); + this.txtNationName = new Sunny.UI.UITextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.txtNationNo = new Sunny.UI.UITextBox(); + this.dgvNationList = new Sunny.UI.UIDataGridView(); + this.clEducationNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.clEducationName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgvNationList)).BeginInit(); this.SuspendLayout(); // - // flpInformation - // - this.flpInformation.AutoScroll = true; - this.flpInformation.BackColor = System.Drawing.Color.Transparent; - this.flpInformation.Location = new System.Drawing.Point(2, 117); - this.flpInformation.Margin = new System.Windows.Forms.Padding(2); - this.flpInformation.Name = "flpInformation"; - this.flpInformation.Size = new System.Drawing.Size(1001, 504); - this.flpInformation.TabIndex = 72; - this.flpInformation.SizeChanged += new System.EventHandler(this.flpInformation_SizeChanged); - // - // btnAdd - // - this.btnAdd.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnAdd.Font = new System.Drawing.Font("微软雅黑", 12F); - this.btnAdd.Location = new System.Drawing.Point(582, 56); - this.btnAdd.MinimumSize = new System.Drawing.Size(1, 1); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.Radius = 20; - this.btnAdd.Size = new System.Drawing.Size(100, 35); - this.btnAdd.TabIndex = 131; - this.btnAdd.Text = "添 加"; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // - // txtNationNm - // - this.txtNationNm.Cursor = System.Windows.Forms.Cursors.IBeam; - this.txtNationNm.FillColor = System.Drawing.Color.White; - this.txtNationNm.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.txtNationNm.Location = new System.Drawing.Point(280, 56); - this.txtNationNm.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtNationNm.Maximum = 2147483647D; - this.txtNationNm.Minimum = -2147483648D; - this.txtNationNm.MinimumSize = new System.Drawing.Size(1, 1); - this.txtNationNm.Name = "txtNationNm"; - this.txtNationNm.Padding = new System.Windows.Forms.Padding(5); - this.txtNationNm.Radius = 20; - this.txtNationNm.Size = new System.Drawing.Size(250, 35); - this.txtNationNm.Style = Sunny.UI.UIStyle.Custom; - this.txtNationNm.StyleCustomMode = true; - this.txtNationNm.TabIndex = 130; - this.txtNationNm.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label2.Location = new System.Drawing.Point(173, 62); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(88, 25); - this.label2.TabIndex = 129; - this.label2.Text = "民族名称"; - // - // btnSearch - // - this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 12F); - this.btnSearch.Location = new System.Drawing.Point(732, 56); - this.btnSearch.MinimumSize = new System.Drawing.Size(1, 1); - this.btnSearch.Name = "btnSearch"; - this.btnSearch.Radius = 20; - this.btnSearch.Size = new System.Drawing.Size(100, 35); - this.btnSearch.TabIndex = 132; - this.btnSearch.Text = "搜 索"; - this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click); + // btnDeleteNation + // + this.btnDeleteNation.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnDeleteNation.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnDeleteNation.Location = new System.Drawing.Point(823, 419); + this.btnDeleteNation.MinimumSize = new System.Drawing.Size(1, 1); + this.btnDeleteNation.Name = "btnDeleteNation"; + this.btnDeleteNation.Radius = 20; + this.btnDeleteNation.Size = new System.Drawing.Size(165, 33); + this.btnDeleteNation.TabIndex = 206; + this.btnDeleteNation.Text = "删除民族"; + this.btnDeleteNation.Click += new System.EventHandler(this.btnDeleteNation_Click); + // + // btnUpdateNation + // + this.btnUpdateNation.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnUpdateNation.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnUpdateNation.Location = new System.Drawing.Point(823, 374); + this.btnUpdateNation.MinimumSize = new System.Drawing.Size(1, 1); + this.btnUpdateNation.Name = "btnUpdateNation"; + this.btnUpdateNation.Radius = 20; + this.btnUpdateNation.Size = new System.Drawing.Size(165, 33); + this.btnUpdateNation.TabIndex = 205; + this.btnUpdateNation.Text = "更新民族"; + this.btnUpdateNation.Click += new System.EventHandler(this.btnUpdateNation_Click); + // + // btnAddNation + // + this.btnAddNation.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnAddNation.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnAddNation.Location = new System.Drawing.Point(823, 329); + this.btnAddNation.MinimumSize = new System.Drawing.Size(1, 1); + this.btnAddNation.Name = "btnAddNation"; + this.btnAddNation.Radius = 20; + this.btnAddNation.Size = new System.Drawing.Size(165, 33); + this.btnAddNation.TabIndex = 204; + this.btnAddNation.Text = "新增民族"; + this.btnAddNation.Click += new System.EventHandler(this.btnAddNation_Click); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(861, 247); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(85, 19); + this.label7.TabIndex = 203; + this.label7.Text = "民族名称"; + // + // txtNationName + // + this.txtNationName.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtNationName.FillColor = System.Drawing.Color.White; + this.txtNationName.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtNationName.Location = new System.Drawing.Point(823, 278); + this.txtNationName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtNationName.Maximum = 2147483647D; + this.txtNationName.Minimum = -2147483648D; + this.txtNationName.MinimumSize = new System.Drawing.Size(1, 1); + this.txtNationName.Name = "txtNationName"; + this.txtNationName.Padding = new System.Windows.Forms.Padding(5); + this.txtNationName.Radius = 20; + this.txtNationName.Size = new System.Drawing.Size(165, 29); + this.txtNationName.Style = Sunny.UI.UIStyle.Custom; + this.txtNationName.StyleCustomMode = true; + this.txtNationName.TabIndex = 202; + this.txtNationName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label20.Location = new System.Drawing.Point(861, 175); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(85, 19); + this.label20.TabIndex = 201; + this.label20.Text = "民族编号"; + // + // txtNationNo + // + this.txtNationNo.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtNationNo.FillColor = System.Drawing.Color.White; + this.txtNationNo.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtNationNo.Location = new System.Drawing.Point(823, 206); + this.txtNationNo.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtNationNo.Maximum = 2147483647D; + this.txtNationNo.Minimum = -2147483648D; + this.txtNationNo.MinimumSize = new System.Drawing.Size(1, 1); + this.txtNationNo.Name = "txtNationNo"; + this.txtNationNo.Padding = new System.Windows.Forms.Padding(5); + this.txtNationNo.Radius = 20; + this.txtNationNo.ReadOnly = true; + this.txtNationNo.Size = new System.Drawing.Size(165, 29); + this.txtNationNo.Style = Sunny.UI.UIStyle.Custom; + this.txtNationNo.StyleCustomMode = true; + this.txtNationNo.TabIndex = 200; + this.txtNationNo.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + // + // dgvNationList + // + this.dgvNationList.AllowUserToAddRows = false; + this.dgvNationList.AllowUserToDeleteRows = false; + this.dgvNationList.AllowUserToResizeColumns = false; + this.dgvNationList.AllowUserToResizeRows = false; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvNationList.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + this.dgvNationList.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.dgvNationList.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvNationList.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvNationList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; + this.dgvNationList.ColumnHeadersHeight = 32; + this.dgvNationList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dgvNationList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.clEducationNo, + this.clEducationName, + this.Column1, + this.Column2, + this.Column3, + this.Column4, + this.Column5}); + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255))))); + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvNationList.DefaultCellStyle = dataGridViewCellStyle3; + this.dgvNationList.EnableHeadersVisualStyles = false; + this.dgvNationList.Font = new System.Drawing.Font("微软雅黑", 12F); + this.dgvNationList.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + this.dgvNationList.Location = new System.Drawing.Point(5, 38); + this.dgvNationList.MultiSelect = false; + this.dgvNationList.Name = "dgvNationList"; + this.dgvNationList.ReadOnly = true; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.Color.White; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvNationList.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.dgvNationList.RowHeadersVisible = false; + this.dgvNationList.RowHeight = 29; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.White; + this.dgvNationList.RowsDefaultCellStyle = dataGridViewCellStyle5; + this.dgvNationList.RowTemplate.Height = 29; + this.dgvNationList.SelectedIndex = -1; + this.dgvNationList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvNationList.ShowGridLine = true; + this.dgvNationList.Size = new System.Drawing.Size(788, 582); + this.dgvNationList.TabIndex = 199; + this.dgvNationList.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvNationList_CellClick); + // + // clEducationNo + // + this.clEducationNo.DataPropertyName = "nation_no"; + this.clEducationNo.HeaderText = "民族编号"; + this.clEducationNo.Name = "clEducationNo"; + this.clEducationNo.ReadOnly = true; + // + // clEducationName + // + this.clEducationName.DataPropertyName = "nation_name"; + this.clEducationName.HeaderText = "民族名称"; + this.clEducationName.Name = "clEducationName"; + this.clEducationName.ReadOnly = true; + // + // Column1 + // + this.Column1.DataPropertyName = "delete_mk"; + this.Column1.HeaderText = "Column1"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + this.Column1.Visible = false; + // + // Column2 + // + this.Column2.DataPropertyName = "datains_usr"; + this.Column2.HeaderText = "Column2"; + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + this.Column2.Visible = false; + // + // Column3 + // + this.Column3.DataPropertyName = "datains_date"; + this.Column3.HeaderText = "Column3"; + this.Column3.Name = "Column3"; + this.Column3.ReadOnly = true; + this.Column3.Visible = false; + // + // Column4 + // + this.Column4.DataPropertyName = "datachg_usr"; + this.Column4.HeaderText = "Column4"; + this.Column4.Name = "Column4"; + this.Column4.ReadOnly = true; + this.Column4.Visible = false; + // + // Column5 + // + this.Column5.DataPropertyName = "datachg_date"; + this.Column5.HeaderText = "datachg_date"; + this.Column5.Name = "Column5"; + this.Column5.ReadOnly = true; + this.Column5.Visible = false; // // FrmNation // @@ -109,11 +275,14 @@ namespace SYS.FormUI this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1005, 623); this.ControlBox = false; - this.Controls.Add(this.btnSearch); - this.Controls.Add(this.btnAdd); - this.Controls.Add(this.txtNationNm); - this.Controls.Add(this.label2); - this.Controls.Add(this.flpInformation); + this.Controls.Add(this.btnDeleteNation); + this.Controls.Add(this.btnUpdateNation); + this.Controls.Add(this.btnAddNation); + this.Controls.Add(this.label7); + this.Controls.Add(this.txtNationName); + this.Controls.Add(this.label20); + this.Controls.Add(this.txtNationNo); + this.Controls.Add(this.dgvNationList); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; @@ -122,6 +291,7 @@ namespace SYS.FormUI this.ShowTitleIcon = true; this.Text = "民族类型维护"; this.Load += new System.EventHandler(this.FrmNation_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvNationList)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -129,10 +299,20 @@ namespace SYS.FormUI #endregion - private System.Windows.Forms.FlowLayoutPanel flpInformation; - private Sunny.UI.UIButton btnAdd; - private Sunny.UI.UITextBox txtNationNm; - private System.Windows.Forms.Label label2; - private Sunny.UI.UIButton btnSearch; + private Sunny.UI.UIButton btnDeleteNation; + private Sunny.UI.UIButton btnUpdateNation; + private Sunny.UI.UIButton btnAddNation; + private System.Windows.Forms.Label label7; + private Sunny.UI.UITextBox txtNationName; + private System.Windows.Forms.Label label20; + private Sunny.UI.UITextBox txtNationNo; + private Sunny.UI.UIDataGridView dgvNationList; + private System.Windows.Forms.DataGridViewTextBoxColumn clEducationNo; + private System.Windows.Forms.DataGridViewTextBoxColumn clEducationName; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; } } \ No newline at end of file diff --git a/SYS.FormUI/AppFunction/FrmNation.cs b/SYS.FormUI/AppFunction/FrmNation.cs index 582ba28..9090a9c 100644 --- a/SYS.FormUI/AppFunction/FrmNation.cs +++ b/SYS.FormUI/AppFunction/FrmNation.cs @@ -43,166 +43,115 @@ namespace SYS.FormUI public delegate void OperationInfo(); - - //定义委托类型的变量 - public static OperationInfo operation; - public static OperationInfo reload; - public static OperationInfo Accessed; - - public static OperationInfo insert; - public FrmNation() { InitializeComponent(); - operation = Visited; reload = ReloadNationList; - Accessed = Access; } - ucBaseInformation baseInfo = null; List nations = null; public static string info = null; private void FrmNation_Load(object sender, EventArgs e) { ReloadNationList(); - } - public void ReloadNationList() + ResponseMsg result = new ResponseMsg(); + Dictionary dic = null; + + public void ReloadNationList() { - flpInformation.Controls.Clear(); - nations = new BaseService().SelectNationAll(); - for (int i = 0; i < nations.Count; i++) + txtNationNo.Text = Util.GetListNewId("N", 3, 1, "-").FirstOrDefault(); + result = HttpHelper.Request("Base/SelectNationAll"); + if (result.statusCode != 200) { - baseInfo = new ucBaseInformation(); - baseInfo.lbName.Text = "名称:" + nations[i].nation_name; - if (nations[i].delete_mk == 1) - { - baseInfo.btnOperation.Text = "恢复"; - baseInfo.btnOperation.FillColor = Color.FromArgb(33, 179, 81); - baseInfo.lbName.BackColor = Color.Red; - baseInfo.btnOperation.FillHoverColor = Color.FromArgb(128, 255, 128); - } - flpInformation.Controls.Add(baseInfo); + UIMessageBox.ShowError("SelectNationAll+接口服务异常,请提交Issue!"); + return; } + nations = HttpHelper.JsonToList(result.message); + dgvNationList.AutoGenerateColumns = false; + dgvNationList.DataSource = nations; } - private void flpInformation_SizeChanged(object sender, EventArgs e) + private void dgvNationList_CellClick(object sender, DataGridViewCellEventArgs e) { - //flpInformation.Width = 660; - //flpInformation.Height = 582; + txtNationNo.Text = dgvNationList.Rows[0].Cells["clNationNo"].Value.ToString(); + txtNationName.Text = dgvNationList.Rows[0].Cells["clNationName"].Value.ToString(); } - public void Visited() + private void btnAddNation_Click(object sender, EventArgs e) { - //筛选出只与当前民族对应的数据 - Nation nation = nations.FirstOrDefault(a => a.nation_name.Equals(info)); - if (nation.nation_name.Equals(info)) + if (txtNationName.Text.Trim().IsNullOrEmpty()) { - var _nation = new Nation() - { - nation_no = nation.nation_no, - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }; - if (_nation != null) - { - bool n = new BaseService().DelNation(_nation); - if (n == true) - { - UIMessageBox.ShowSuccess("删除成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "删除民族类型操作!删除值为:" + _nation.nation_no, 2); - #endregion - ReloadNationList(); - } - } + UIMessageTip.ShowWarning("民族名称为空,请检查", 1500); + txtNationName.Focus(); + return; } - } - public void Access() - { - //筛选出只与当前民族对应的数据 - Nation nation = nations.FirstOrDefault(a => a.nation_name.Equals(info)); - if (nation.nation_name.Equals(info)) + var nat = new Nation() { - var _nation = new Nation() - { - nation_no = nation.nation_no, - delete_mk = 0, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }; - if (_nation != null) - { - bool n = new BaseService().DelNation(_nation); - if (n == true) - { - UIMessageBox.ShowSuccess("恢复成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "恢复民族类型操作!恢复值为:" + _nation.nation_no, 2); - #endregion - ReloadNationList(); - } - } + nation_no = txtNationNo.Text.Trim(), + nation_name = txtNationName.Text.Trim(), + delete_mk = 0, + datains_usr = AdminInfo.Account, + datains_date = DateTime.Now + }; + result = HttpHelper.Request("Base​/AddNation", HttpHelper.ModelToJson(nat)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) + { + UIMessageTip.ShowError("AddNation+接口服务异常,请提交Issue!", 1500); + return; } - + UIMessageTip.ShowOk("添加民族成功!", 1500); + #region 获取添加操作日志所需的信息 + RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增民族类型操作!新增值为:" + nat.nation_no, 2); + #endregion + ReloadNationList(); + return; } - private void btnAdd_Click(object sender, EventArgs e) + private void btnUpdateNation_Click(object sender, EventArgs e) { - if (txtNationNm.Text.Trim().IsNullOrEmpty()) + if (dgvNationList.SelectedRows.Count <= 0) { - UIMessageTip.ShowError("民族名称为空,请检查", 3000); + UIMessageTip.ShowWarning("未选择需修改的民族数据,请检查", 1500); return; } - var _nation = new Nation() + var nat = new Nation() { - nation_no = new SYS.Core.CounterHelper().GetNewId(CounterRuleConsts.NationId).ToString(), - nation_name = txtNationNm.Text.Trim(), - delete_mk = 0, - datains_usr = AdminInfo.Account, - datains_date = DateTime.Now + nation_no = txtNationNo.Text.Trim(), + nation_name = txtNationName.Text.Trim(), + datachg_usr = AdminInfo.Account, + datachg_date = DateTime.Now }; - if (_nation != null) + result = HttpHelper.Request("Base​/UpdNation", HttpHelper.ModelToJson(nat)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) { - bool n = new BaseService().AddNation(_nation); - if (n == true) - { - UIMessageBox.ShowSuccess("新增成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增民族类型操作!新增值为:" + _nation.nation_no, 2); - #endregion - ReloadNationList(); - txtNationNm.Text = ""; - } + UIMessageTip.ShowError("UpdNation+接口服务异常,请提交Issue!", 1500); + return; } } - private void btnSearch_Click(object sender, EventArgs e) + private void btnDeleteNation_Click(object sender, EventArgs e) { - if (txtNationNm.Text.Trim().IsNullOrEmpty()) + if (dgvNationList.SelectedRows.Count <= 0) { - UIMessageTip.ShowError("民族名称为空,请检查", 3000); + UIMessageTip.ShowWarning("未选择需修改的民族数据,请检查", 1500); return; } - var listSource = new BaseService().SelectNationAll(new Nation { nation_name = txtNationNm.Text.Trim() }); - flpInformation.Controls.Clear(); - for (int i = 0; i < listSource.Count; i++) + var nat = new Nation() { - baseInfo = new ucBaseInformation(); - baseInfo.Tag = "民族"; - baseInfo.lbName.Text = "名称:" + listSource[i].nation_name; - if (listSource[i].delete_mk == 1) - { - baseInfo.btnOperation.Text = "恢复"; - baseInfo.btnOperation.FillColor = Color.FromArgb(33, 179, 81); - baseInfo.lbName.BackColor = Color.Red; - baseInfo.btnOperation.FillHoverColor = Color.FromArgb(128, 255, 128); - } - flpInformation.Controls.Add(baseInfo); + nation_no = txtNationNo.Text.Trim(), + nation_name = txtNationName.Text.Trim(), + datachg_usr = AdminInfo.Account, + datachg_date = DateTime.Now + }; + result = HttpHelper.Request("Base​/DelNation", HttpHelper.ModelToJson(nat)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) + { + UIMessageTip.ShowError("DelNation+接口服务异常,请提交Issue!", 1500); + return; } } } diff --git a/SYS.FormUI/AppFunction/FrmNation.resx b/SYS.FormUI/AppFunction/FrmNation.resx index b0a0545..9eafb6b 100644 --- a/SYS.FormUI/AppFunction/FrmNation.resx +++ b/SYS.FormUI/AppFunction/FrmNation.resx @@ -117,6 +117,27 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + + + True + + + True + + + True + + + True + diff --git a/SYS.FormUI/AppFunction/FrmNotice.cs b/SYS.FormUI/AppFunction/FrmNotice.cs index 71d6122..6c9aca9 100644 --- a/SYS.FormUI/AppFunction/FrmNotice.cs +++ b/SYS.FormUI/AppFunction/FrmNotice.cs @@ -23,6 +23,7 @@ */ using Sunny.UI; using SYS.Application; +using SYS.Common; using SYS.Core; using System; using System.Collections.Generic; @@ -43,9 +44,18 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + private void FrmNotice_Load(object sender, EventArgs e) { - List notices = new NoticeService().SelectNoticeAll(); + result = HttpHelper.Request("Notice/SelectNoticeAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectNoticeAll+接口服务异常,请提交Issue!"); + return; + } + List notices = HttpHelper.JsonToList(result.message); notices.ForEach(source => { dgvNoticeList.Items.Add(source.NoticeNo + ":" + source.Noticetheme); @@ -56,7 +66,17 @@ namespace SYS.FormUI { //根据:来分割字符串并返回第一项数据即为公告编号 var str = dgvNoticeList.SelectedItem.ToString().Split(":").First(); - Notice notice = new NoticeService().SelectNoticeByNoticeNo(str); + dic= new Dictionary() + { + { "noticeId",str} + }; + result = HttpHelper.Request("Notice/SelectNoticeByNoticeNo",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectNoticeAll+接口服务异常,请提交Issue!"); + return; + } + Notice notice = HttpHelper.JsonToModel(result.message); if (notice != null) { rtbNoticeContent.Html = notice.NoticeContent; diff --git a/SYS.FormUI/AppFunction/FrmOperation.cs b/SYS.FormUI/AppFunction/FrmOperation.cs index 1a4548a..2a03527 100644 --- a/SYS.FormUI/AppFunction/FrmOperation.cs +++ b/SYS.FormUI/AppFunction/FrmOperation.cs @@ -24,7 +24,9 @@ using Sunny.UI; using SYS.Application; using SYS.Common; +using SYS.Core; using System; +using System.Collections.Generic; using System.Windows.Forms; namespace SYS.FormUI @@ -36,12 +38,19 @@ namespace SYS.FormUI InitializeComponent(); } - + Dictionary dic = null; + ResponseMsg result = null; private void FrmOperation_Load(object sender, EventArgs e) { + result = HttpHelper.Request("App/SelectOperationlogAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectOperationlogAll+接口服务异常,请提交Issue!"); + return; + } dgvOperationlog.AutoGenerateColumns = false; - dgvOperationlog.DataSource = new OperationlogService().SelectOperationlogAll(); + dgvOperationlog.DataSource = HttpHelper.JsonToList(result.message); } } } diff --git a/SYS.FormUI/AppFunction/FrmPosition.Designer.cs b/SYS.FormUI/AppFunction/FrmPosition.Designer.cs index cf86075..6bd26bd 100644 --- a/SYS.FormUI/AppFunction/FrmPosition.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmPosition.Designer.cs @@ -29,78 +29,245 @@ namespace SYS.FormUI /// private void InitializeComponent() { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPosition)); - this.flpInformation = new System.Windows.Forms.FlowLayoutPanel(); - this.btnAdd = new Sunny.UI.UIButton(); - this.txtJobNm = new Sunny.UI.UITextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnSearch = new Sunny.UI.UIButton(); + this.btnDeletePosition = new Sunny.UI.UIButton(); + this.btnUpdatePosition = new Sunny.UI.UIButton(); + this.btnAddPosition = new Sunny.UI.UIButton(); + this.label7 = new System.Windows.Forms.Label(); + this.txtPositionName = new Sunny.UI.UITextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.txtPositionNo = new Sunny.UI.UITextBox(); + this.dgvPositionList = new Sunny.UI.UIDataGridView(); + this.clPositionNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.clPositionName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgvPositionList)).BeginInit(); this.SuspendLayout(); // - // flpInformation - // - this.flpInformation.AutoScroll = true; - this.flpInformation.BackColor = System.Drawing.Color.Transparent; - this.flpInformation.Location = new System.Drawing.Point(2, 117); - this.flpInformation.Margin = new System.Windows.Forms.Padding(2); - this.flpInformation.Name = "flpInformation"; - this.flpInformation.Size = new System.Drawing.Size(1001, 504); - this.flpInformation.TabIndex = 73; - // - // btnAdd - // - this.btnAdd.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnAdd.Font = new System.Drawing.Font("微软雅黑", 12F); - this.btnAdd.Location = new System.Drawing.Point(582, 56); - this.btnAdd.MinimumSize = new System.Drawing.Size(1, 1); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.Radius = 20; - this.btnAdd.Size = new System.Drawing.Size(100, 35); - this.btnAdd.TabIndex = 134; - this.btnAdd.Text = "添 加"; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // - // txtJobNm - // - this.txtJobNm.Cursor = System.Windows.Forms.Cursors.IBeam; - this.txtJobNm.FillColor = System.Drawing.Color.White; - this.txtJobNm.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.txtJobNm.Location = new System.Drawing.Point(280, 56); - this.txtJobNm.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtJobNm.Maximum = 2147483647D; - this.txtJobNm.Minimum = -2147483648D; - this.txtJobNm.MinimumSize = new System.Drawing.Size(1, 1); - this.txtJobNm.Name = "txtJobNm"; - this.txtJobNm.Padding = new System.Windows.Forms.Padding(5); - this.txtJobNm.Radius = 20; - this.txtJobNm.Size = new System.Drawing.Size(250, 35); - this.txtJobNm.Style = Sunny.UI.UIStyle.Custom; - this.txtJobNm.StyleCustomMode = true; - this.txtJobNm.TabIndex = 133; - this.txtJobNm.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label2.Location = new System.Drawing.Point(173, 62); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(88, 25); - this.label2.TabIndex = 132; - this.label2.Text = "职位名称"; - // - // btnSearch - // - this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 12F); - this.btnSearch.Location = new System.Drawing.Point(732, 56); - this.btnSearch.MinimumSize = new System.Drawing.Size(1, 1); - this.btnSearch.Name = "btnSearch"; - this.btnSearch.Radius = 20; - this.btnSearch.Size = new System.Drawing.Size(100, 35); - this.btnSearch.TabIndex = 135; - this.btnSearch.Text = "搜 索"; - this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click); + // btnDeletePosition + // + this.btnDeletePosition.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnDeletePosition.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnDeletePosition.Location = new System.Drawing.Point(821, 419); + this.btnDeletePosition.MinimumSize = new System.Drawing.Size(1, 1); + this.btnDeletePosition.Name = "btnDeletePosition"; + this.btnDeletePosition.Radius = 20; + this.btnDeletePosition.Size = new System.Drawing.Size(165, 33); + this.btnDeletePosition.TabIndex = 214; + this.btnDeletePosition.Text = "删除职位"; + this.btnDeletePosition.Click += new System.EventHandler(this.btnDeletePosition_Click); + // + // btnUpdatePosition + // + this.btnUpdatePosition.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnUpdatePosition.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnUpdatePosition.Location = new System.Drawing.Point(821, 374); + this.btnUpdatePosition.MinimumSize = new System.Drawing.Size(1, 1); + this.btnUpdatePosition.Name = "btnUpdatePosition"; + this.btnUpdatePosition.Radius = 20; + this.btnUpdatePosition.Size = new System.Drawing.Size(165, 33); + this.btnUpdatePosition.TabIndex = 213; + this.btnUpdatePosition.Text = "更新职位"; + this.btnUpdatePosition.Click += new System.EventHandler(this.btnUpdatePosition_Click); + // + // btnAddPosition + // + this.btnAddPosition.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnAddPosition.Font = new System.Drawing.Font("微软雅黑", 12F); + this.btnAddPosition.Location = new System.Drawing.Point(821, 329); + this.btnAddPosition.MinimumSize = new System.Drawing.Size(1, 1); + this.btnAddPosition.Name = "btnAddPosition"; + this.btnAddPosition.Radius = 20; + this.btnAddPosition.Size = new System.Drawing.Size(165, 33); + this.btnAddPosition.TabIndex = 212; + this.btnAddPosition.Text = "新增职位"; + this.btnAddPosition.Click += new System.EventHandler(this.btnAddPosition_Click); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(859, 247); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(85, 19); + this.label7.TabIndex = 211; + this.label7.Text = "职位名称"; + // + // txtPositionName + // + this.txtPositionName.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtPositionName.FillColor = System.Drawing.Color.White; + this.txtPositionName.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtPositionName.Location = new System.Drawing.Point(821, 278); + this.txtPositionName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtPositionName.Maximum = 2147483647D; + this.txtPositionName.Minimum = -2147483648D; + this.txtPositionName.MinimumSize = new System.Drawing.Size(1, 1); + this.txtPositionName.Name = "txtPositionName"; + this.txtPositionName.Padding = new System.Windows.Forms.Padding(5); + this.txtPositionName.Radius = 20; + this.txtPositionName.Size = new System.Drawing.Size(165, 29); + this.txtPositionName.Style = Sunny.UI.UIStyle.Custom; + this.txtPositionName.StyleCustomMode = true; + this.txtPositionName.TabIndex = 210; + this.txtPositionName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label20.Location = new System.Drawing.Point(859, 175); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(85, 19); + this.label20.TabIndex = 209; + this.label20.Text = "职位编号"; + // + // txtPositionNo + // + this.txtPositionNo.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtPositionNo.FillColor = System.Drawing.Color.White; + this.txtPositionNo.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtPositionNo.Location = new System.Drawing.Point(821, 206); + this.txtPositionNo.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtPositionNo.Maximum = 2147483647D; + this.txtPositionNo.Minimum = -2147483648D; + this.txtPositionNo.MinimumSize = new System.Drawing.Size(1, 1); + this.txtPositionNo.Name = "txtPositionNo"; + this.txtPositionNo.Padding = new System.Windows.Forms.Padding(5); + this.txtPositionNo.Radius = 20; + this.txtPositionNo.ReadOnly = true; + this.txtPositionNo.Size = new System.Drawing.Size(165, 29); + this.txtPositionNo.Style = Sunny.UI.UIStyle.Custom; + this.txtPositionNo.StyleCustomMode = true; + this.txtPositionNo.TabIndex = 208; + this.txtPositionNo.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + // + // dgvPositionList + // + this.dgvPositionList.AllowUserToAddRows = false; + this.dgvPositionList.AllowUserToDeleteRows = false; + this.dgvPositionList.AllowUserToResizeColumns = false; + this.dgvPositionList.AllowUserToResizeRows = false; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvPositionList.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + this.dgvPositionList.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.dgvPositionList.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.dgvPositionList.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvPositionList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; + this.dgvPositionList.ColumnHeadersHeight = 32; + this.dgvPositionList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dgvPositionList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.clPositionNo, + this.clPositionName, + this.Column1, + this.Column2, + this.Column3, + this.Column4, + this.Column5}); + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255))))); + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvPositionList.DefaultCellStyle = dataGridViewCellStyle3; + this.dgvPositionList.EnableHeadersVisualStyles = false; + this.dgvPositionList.Font = new System.Drawing.Font("微软雅黑", 12F); + this.dgvPositionList.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + this.dgvPositionList.Location = new System.Drawing.Point(3, 38); + this.dgvPositionList.MultiSelect = false; + this.dgvPositionList.Name = "dgvPositionList"; + this.dgvPositionList.ReadOnly = true; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 12F); + dataGridViewCellStyle4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.Color.White; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvPositionList.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.dgvPositionList.RowHeadersVisible = false; + this.dgvPositionList.RowHeight = 29; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.White; + this.dgvPositionList.RowsDefaultCellStyle = dataGridViewCellStyle5; + this.dgvPositionList.RowTemplate.Height = 29; + this.dgvPositionList.SelectedIndex = -1; + this.dgvPositionList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvPositionList.ShowGridLine = true; + this.dgvPositionList.Size = new System.Drawing.Size(788, 582); + this.dgvPositionList.TabIndex = 207; + this.dgvPositionList.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvPositionList_CellClick); + // + // clPositionNo + // + this.clPositionNo.DataPropertyName = "position_no"; + this.clPositionNo.HeaderText = "职位编号"; + this.clPositionNo.Name = "clPositionNo"; + this.clPositionNo.ReadOnly = true; + // + // clPositionName + // + this.clPositionName.DataPropertyName = "position_name"; + this.clPositionName.HeaderText = "职位名称"; + this.clPositionName.Name = "clPositionName"; + this.clPositionName.ReadOnly = true; + // + // Column1 + // + this.Column1.DataPropertyName = "delete_mk"; + this.Column1.HeaderText = "Column1"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + this.Column1.Visible = false; + // + // Column2 + // + this.Column2.DataPropertyName = "datains_usr"; + this.Column2.HeaderText = "Column2"; + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + this.Column2.Visible = false; + // + // Column3 + // + this.Column3.DataPropertyName = "datains_date"; + this.Column3.HeaderText = "Column3"; + this.Column3.Name = "Column3"; + this.Column3.ReadOnly = true; + this.Column3.Visible = false; + // + // Column4 + // + this.Column4.DataPropertyName = "datachg_usr"; + this.Column4.HeaderText = "Column4"; + this.Column4.Name = "Column4"; + this.Column4.ReadOnly = true; + this.Column4.Visible = false; + // + // Column5 + // + this.Column5.DataPropertyName = "datachg_date"; + this.Column5.HeaderText = "datachg_date"; + this.Column5.Name = "Column5"; + this.Column5.ReadOnly = true; + this.Column5.Visible = false; // // FrmPosition // @@ -108,11 +275,14 @@ namespace SYS.FormUI this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1005, 623); this.ControlBox = false; - this.Controls.Add(this.btnSearch); - this.Controls.Add(this.btnAdd); - this.Controls.Add(this.txtJobNm); - this.Controls.Add(this.label2); - this.Controls.Add(this.flpInformation); + this.Controls.Add(this.btnDeletePosition); + this.Controls.Add(this.btnUpdatePosition); + this.Controls.Add(this.btnAddPosition); + this.Controls.Add(this.label7); + this.Controls.Add(this.txtPositionName); + this.Controls.Add(this.label20); + this.Controls.Add(this.txtPositionNo); + this.Controls.Add(this.dgvPositionList); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; @@ -121,6 +291,7 @@ namespace SYS.FormUI this.ShowTitleIcon = true; this.Text = "职位类型维护"; this.Load += new System.EventHandler(this.FrmPosition_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvPositionList)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -128,10 +299,20 @@ namespace SYS.FormUI #endregion - private System.Windows.Forms.FlowLayoutPanel flpInformation; - private Sunny.UI.UIButton btnAdd; - private Sunny.UI.UITextBox txtJobNm; - private System.Windows.Forms.Label label2; - private Sunny.UI.UIButton btnSearch; + private Sunny.UI.UIButton btnDeletePosition; + private Sunny.UI.UIButton btnUpdatePosition; + private Sunny.UI.UIButton btnAddPosition; + private System.Windows.Forms.Label label7; + private Sunny.UI.UITextBox txtPositionName; + private System.Windows.Forms.Label label20; + private Sunny.UI.UITextBox txtPositionNo; + private Sunny.UI.UIDataGridView dgvPositionList; + private System.Windows.Forms.DataGridViewTextBoxColumn clPositionNo; + private System.Windows.Forms.DataGridViewTextBoxColumn clPositionName; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; } } \ No newline at end of file diff --git a/SYS.FormUI/AppFunction/FrmPosition.cs b/SYS.FormUI/AppFunction/FrmPosition.cs index 22a527f..9790d97 100644 --- a/SYS.FormUI/AppFunction/FrmPosition.cs +++ b/SYS.FormUI/AppFunction/FrmPosition.cs @@ -48,19 +48,12 @@ namespace SYS.FormUI public static PositionInfo reload; - public static PositionInfo Accessed; - - public static PositionInfo insert; - public FrmPosition() { InitializeComponent(); - operation = Visited; reload = ReloadPositionList; - Accessed = Access; } - ucPositionInformation baseInfo = null; List positions = null; public static string info = null; private void FrmPosition_Load(object sender, EventArgs e) @@ -68,139 +61,101 @@ namespace SYS.FormUI ReloadPositionList(); } + ResponseMsg result = new ResponseMsg(); + Dictionary dic = null; + public void ReloadPositionList() { - flpInformation.Controls.Clear(); - positions = new BaseService().SelectPositionAll(); - for (int i = 0; i < positions.Count; i++) + txtPositionNo.Text = Util.GetListNewId("P", 3, 1, "-").FirstOrDefault(); + result = HttpHelper.Request("Base/SelectPositionAll"); + if (result.statusCode != 200) { - baseInfo = new ucPositionInformation(); - baseInfo.lbName.Text = "名称:" + positions[i].position_name; - if (positions[i].delete_mk == 1) - { - baseInfo.btnOperation.Text = "恢复"; - baseInfo.btnOperation.FillColor = Color.FromArgb(33, 179, 81); - baseInfo.lbName.BackColor = Color.Red; - baseInfo.btnOperation.FillHoverColor = Color.FromArgb(128, 255, 128); - } - flpInformation.Controls.Add(baseInfo); + UIMessageBox.ShowError("SelectPositionAll+接口服务异常,请提交Issue!"); + return; } + positions = HttpHelper.JsonToList(result.message); + dgvPositionList.AutoGenerateColumns = false; + dgvPositionList.DataSource = positions; } - private void flpInformation_SizeChanged(object sender, EventArgs e) - { - flpInformation.Width = 660; - flpInformation.Height = 582; - } - - public void Visited() + private void btnAddPosition_Click(object sender, EventArgs e) { - //筛选出只与当前职位对应的数据 - Position position = positions.FirstOrDefault(a => a.position_name.Equals(info)); - if (position.position_name.Equals(info)) + if (txtPositionName.Text.Trim().IsNullOrEmpty()) { - var _position = new Position() - { - position_no = position.position_no, - delete_mk = 1, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }; - if (_position != null) - { - bool n = new BaseService().DelPosition(_position); - if (n == true) - { - UIMessageBox.ShowSuccess("删除成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "删除职位类型操作!删除值为:" + _position.position_no, 2); - #endregion - ReloadPositionList(); - } - } + UIMessageTip.ShowWarning("职位名称为空,请检查", 1500); + txtPositionName.Focus(); + return; } - } - public void Access() - { - //筛选出只与当前职位对应的数据 - Position position = positions.FirstOrDefault(a => a.position_name.Equals(info)); - if (position.position_name.Equals(info)) + var pos = new Position() + { + position_no = txtPositionNo.Text.Trim(), + position_name = txtPositionName.Text.Trim(), + delete_mk = 0, + datains_usr = AdminInfo.Account, + datains_date = DateTime.Now + }; + result = HttpHelper.Request("Base​/AddPosition", HttpHelper.ModelToJson(pos)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) { - var _position = new Position() - { - position_no = position.position_no, - delete_mk = 0, - datachg_usr = AdminInfo.Account, - datachg_date = DateTime.Now - }; - if (_position != null) - { - bool n = new BaseService().DelPosition(_position); - if (n == true) - { - UIMessageBox.ShowSuccess("恢复成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "恢复职位类型操作!恢复值为:" + _position.position_no, 2); - #endregion - ReloadPositionList(); - } - } + UIMessageTip.ShowError("AddPosition+接口服务异常,请提交Issue!", 1500); + return; } + UIMessageTip.ShowOk("添加职位成功!", 1500); + #region 获取添加操作日志所需的信息 + RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增职位类型操作!新增值为:" + pos.position_no, 2); + #endregion + ReloadPositionList(); + return; + } + private void dgvPositionList_CellClick(object sender, DataGridViewCellEventArgs e) + { + txtPositionNo.Text = dgvPositionList.Rows[0].Cells["clPositionNo"].Value.ToString(); + txtPositionName.Text = dgvPositionList.Rows[0].Cells["clPositionName"].Value.ToString(); } - private void btnAdd_Click(object sender, EventArgs e) + private void btnUpdatePosition_Click(object sender, EventArgs e) { - if (txtJobNm.Text.Trim().IsNullOrEmpty()) + if (dgvPositionList.SelectedRows.Count <= 0) { - UIMessageTip.ShowError("职位名称为空,请检查", 3000); + UIMessageTip.ShowWarning("未选择需修改的职位数据,请检查", 1500); return; } - var _position = new Position() + var pos = new Position() { - position_no = new SYS.Core.CounterHelper().GetNewId(CounterRuleConsts.PositionId).ToString(), - position_name = txtJobNm.Text.Trim(), - delete_mk = 0, - datains_usr = AdminInfo.Account, - datains_date = DateTime.Now + position_no = txtPositionNo.Text.Trim(), + position_name = txtPositionName.Text.Trim(), + datachg_usr = AdminInfo.Account, + datachg_date = DateTime.Now }; - if (_position != null) + result = HttpHelper.Request("Base​/UpdPosition", HttpHelper.ModelToJson(pos)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) { - bool n = new BaseService().AddPosition(_position); - if (n == true) - { - UIMessageBox.ShowSuccess("新增成功!"); - #region 获取添加操作日志所需的信息 - RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增职位类型操作!新增值为:" + _position.position_no, 2); - #endregion - ReloadPositionList(); - txtJobNm.Text = ""; - } + UIMessageTip.ShowError("UpdPosition+接口服务异常,请提交Issue!", 1500); + return; } } - private void btnSearch_Click(object sender, EventArgs e) + private void btnDeletePosition_Click(object sender, EventArgs e) { - if (txtJobNm.Text.Trim().IsNullOrEmpty()) + if (dgvPositionList.SelectedRows.Count <= 0) { - UIMessageTip.ShowError("职位名称为空,请检查", 3000); + UIMessageTip.ShowWarning("未选择需修改的职位数据,请检查", 1500); return; } - var listSource = new BaseService().SelectPositionAll(new Position { position_name = txtJobNm.Text.Trim() }); - flpInformation.Controls.Clear(); - for (int i = 0; i < listSource.Count; i++) + var pos = new Position() { - baseInfo = new ucPositionInformation(); - baseInfo.Tag = "职位"; - baseInfo.lbName.Text = "名称:" + listSource[i].position_name; - if (listSource[i].delete_mk == 1) - { - baseInfo.btnOperation.Text = "恢复"; - baseInfo.btnOperation.FillColor = Color.FromArgb(33, 179, 81); - baseInfo.lbName.BackColor = Color.Red; - baseInfo.btnOperation.FillHoverColor = Color.FromArgb(128, 255, 128); - } - flpInformation.Controls.Add(baseInfo); + position_no = txtPositionNo.Text.Trim(), + position_name = txtPositionName.Text.Trim(), + delete_mk = 1, + datachg_usr = AdminInfo.Account, + datachg_date = DateTime.Now + }; + result = HttpHelper.Request("Base​/DelPosition", HttpHelper.ModelToJson(pos)); + if (result.statusCode != 200 || result.message.ToString().Equals("false")) + { + UIMessageTip.ShowError("DelPosition+接口服务异常,请提交Issue!", 1500); + return; } } } diff --git a/SYS.FormUI/AppFunction/FrmPosition.resx b/SYS.FormUI/AppFunction/FrmPosition.resx index 016a058..0506287 100644 --- a/SYS.FormUI/AppFunction/FrmPosition.resx +++ b/SYS.FormUI/AppFunction/FrmPosition.resx @@ -117,6 +117,27 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + + + True + + + True + + + True + + + True + diff --git a/SYS.FormUI/AppFunction/FrmReserList.Designer.cs b/SYS.FormUI/AppFunction/FrmReserList.Designer.cs index 195f4ea..aca28ea 100644 --- a/SYS.FormUI/AppFunction/FrmReserList.Designer.cs +++ b/SYS.FormUI/AppFunction/FrmReserList.Designer.cs @@ -114,7 +114,7 @@ this.dgvReserList.RowTemplate.Height = 29; this.dgvReserList.SelectedIndex = -1; this.dgvReserList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dgvReserList.ShowGridLine = true; + //this.dgvReserList.ShowGridLine = true; this.dgvReserList.Size = new System.Drawing.Size(726, 169); this.dgvReserList.TabIndex = 113; this.dgvReserList.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvReserList_CellClick); diff --git a/SYS.FormUI/AppFunction/FrmReserList.cs b/SYS.FormUI/AppFunction/FrmReserList.cs index fc3cccf..933b3be 100644 --- a/SYS.FormUI/AppFunction/FrmReserList.cs +++ b/SYS.FormUI/AppFunction/FrmReserList.cs @@ -1,12 +1,15 @@ using System; -using MySql.Data.MySqlClient; + using System.Windows.Forms; using SYS.Core; using Sunny.UI; using System.Transactions; -using SYS.Core.Util; using System.Collections.Generic; using SYS.Application; +using System.Web.Script.Services; +using SYS.Common; +using System.Linq; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip; namespace SYS.FormUI { @@ -17,15 +20,27 @@ namespace SYS.FormUI InitializeComponent(); } - + ResponseMsg result = new ResponseMsg(); private void FrmReserList_Load(object sender, EventArgs e) { + result = HttpHelper.Request("Reser/SelectReserAll", null, null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectReserAll+接口服务异常,请提交Issue!"); + return; + } dgvReserList.AutoGenerateColumns = false; - dgvReserList.DataSource = new ReserService().SelectReserAll(); + dgvReserList.DataSource = HttpHelper.JsonToList(result.message); #region 加载客户类型信息 - List lstSourceGrid = new BaseService().SelectCustoTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectCustoTypeAllCanUse", null, null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List lstSourceGrid = HttpHelper.JsonToList(result.message); this.cbCustoType.DataSource = lstSourceGrid; this.cbCustoType.DisplayMember = "TypeName"; this.cbCustoType.ValueMember = "UserType"; @@ -34,7 +49,13 @@ namespace SYS.FormUI #endregion #region 加载证件类型信息 - List passPorts = new BaseService().SelectPassPortTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectPassPortTypeAllCanUse", null, null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPassPortTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List passPorts = HttpHelper.JsonToList(result.message); this.cbPassportType.DataSource = passPorts; this.cbPassportType.DisplayMember = "PassportName"; this.cbPassportType.ValueMember = "PassportId"; @@ -42,11 +63,16 @@ namespace SYS.FormUI #endregion #region 加载性别信息 - List listSexType = new BaseService().SelectSexTypeAll(new SexType { delete_mk = 0 }); + result = HttpHelper.Request("Base/SelectSexTypeAll", null, null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSexTypeAll+接口服务异常,请提交Issue!"); + return; + } + List listSexType = HttpHelper.JsonToList(result.message); this.cbSex.DataSource = listSexType; this.cbSex.DisplayMember = "sexName"; this.cbSex.ValueMember = "sexId"; - this.cbSex.SelectedIndex = 0; #endregion } @@ -63,15 +89,23 @@ namespace SYS.FormUI { CustoNo = txtCustoNo.Text.Trim(), CustoName = txtCustoName.Text.Trim(), - CustoSex = cbSex.SelectedIndex, + CustoSex = Convert.ToInt32(cbSex.SelectedValue.ToString()), CustoTel = txtTel.Text.Trim(), PassportType = cbPassportType.SelectedIndex, CustoID = txtCardID.Text.Trim(), CustoAdress = txtCustoAdress.Text.Trim(), CustoBirth = dtpBirthday.Value, - CustoType = cbCustoType.SelectedIndex + CustoType = cbCustoType.SelectedIndex, + delete_mk = 0, + datains_usr = LoginInfo.WorkerNo, + datains_date=DateTime.Now }; - new CustoService().InsertCustomerInfo(custo); + result = HttpHelper.Request("Custo​/InsertCustomerInfo", HttpHelper.ModelToJson(custo)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertCustomerInfo+接口服务异常,请提交Issue!"); + return; + } Room r = new Room() { @@ -80,22 +114,41 @@ namespace SYS.FormUI RoomStateId = 1, RoomNo = dgvReserList.SelectedRows[0].Cells["clRoomNo"].Value.ToString() }; - - new RoomService().UpdateRoomInfo(r); - new ReserService().DeleteReserInfo(dgvReserList.SelectedRows[0].Cells["clReserNo"].Value.ToString()); + result = HttpHelper.Request("Room​/UpdateRoomInfo", HttpHelper.ModelToJson(r), null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertCustomerInfo+接口服务异常,请提交Issue!"); + return; + } + var reser = new Reser + { + ReserId = dgvReserList.SelectedRows[0].Cells["clReserNo"].Value.ToString() + }; + result = HttpHelper.Request("Reser/DeleteReserInfo", HttpHelper.ModelToJson(reser)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DeleteReserInfo+接口服务异常,请提交Issue!"); + return; + } + + UIMessageBox.ShowSuccess("操作成功"); + dgvReserList.AutoGenerateColumns = false; + result = HttpHelper.Request("Reser/SelectReserAll", null, null); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectReserAll+接口服务异常,请提交Issue!"); + return; + } + dgvReserList.DataSource = HttpHelper.JsonToList(result.message); + FrmRoomManager.Reload(""); scope.Complete(); + this.Close(); } - UIMessageBox.ShowSuccess("操作成功"); - dgvReserList.AutoGenerateColumns = false; - dgvReserList.DataSource = new ReserService().SelectReserAll(); - FrmRoomManager.Reload(""); - this.Close(); - } private void dgvReserList_CellClick(object sender, DataGridViewCellEventArgs e) { - string custoNo = new CounterHelper().GetNewId("CustoId"); + string custoNo = Util.GetListNewId("TS", 2, 1, "-").FirstOrDefault(); txtCustoNo.Text = custoNo; txtCustoName.Text = dgvReserList.SelectedRows[0].Cells["clCustoNm"].Value.ToString(); txtTel.Text = dgvReserList.SelectedRows[0].Cells["clTel"].Value.ToString(); @@ -105,6 +158,7 @@ namespace SYS.FormUI { //获取得到输入的身份证号码 string identityCard = txtCardID.Text.Trim(); + if (string.IsNullOrEmpty(identityCard)) { //身份证号码不能为空,如果为空返回 @@ -128,33 +182,31 @@ namespace SYS.FormUI return; } } - string birthday = ""; - string sex = ""; + if (identityCard.Length == 18) { - var result = new IDCardUtil().SelectCardCode(identityCard); - var address = result.Replace(",","").ToString(); - birthday = identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2); - sex = identityCard.Substring(14, 3); - txtCustoAdress.Text = address; - //性别代码为偶数是女性奇数为男性 - if (int.Parse(sex) % 2 == 0) + var result = Util.searchCode(identityCard); + if (result.message.IsNullOrEmpty()) //如果没有错误消息输出,则代表成功 { - cbSex.Text = "女"; + try + { + cbSex.Text = result.sex; + txtCustoAdress.Text = result.address; + dtpBirthday.Value = Convert.ToDateTime(result.birthday); + } + catch + { + UIMessageBox.ShowError("请正确输入证件号码!"); + return; + } } else { - cbSex.Text = "男"; + UIMessageBox.ShowError(result.message); + return; } } - try - { - dtpBirthday.Value = Convert.ToDateTime(birthday); - } - catch - { - UIMessageBox.ShowError("请正确输入证件号码!"); - } + return; } } diff --git a/SYS.FormUI/AppFunction/FrmReserManager.cs b/SYS.FormUI/AppFunction/FrmReserManager.cs index f32f5ac..2e2a70f 100644 --- a/SYS.FormUI/AppFunction/FrmReserManager.cs +++ b/SYS.FormUI/AppFunction/FrmReserManager.cs @@ -4,6 +4,8 @@ using SYS.Core; using Sunny.UI; using SYS.Application; using SYS.Common; +using System.Linq; +using System.Collections.Generic; namespace SYS.FormUI { @@ -20,10 +22,13 @@ namespace SYS.FormUI #endregion } + Dictionary dic = null; + ResponseMsg result = null; + private void btnReser_Click(object sender, EventArgs e) { Random random = new Random(); - string reserid = new CounterHelper().GetNewId(CounterRuleConsts.ReserId); + string reserid = Util.GetListNewId("R", 3, 1, "-").FirstOrDefault(); Reser reser = new Reser() { ReserId = reserid, @@ -41,10 +46,22 @@ namespace SYS.FormUI RoomNo = cboReserRoomNo.Text, RoomStateId = 4 }; - bool result1 = new ReserService().InserReserInfo(reser); - bool result2 = new RoomService().UpdateRoomInfoWithReser(room); + result = HttpHelper.Request("Reser​/InserReserInfo",HttpHelper.ModelToJson(reser)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InserReserInfo+接口服务异常,请提交Issue!"); + return; + } + bool result1 = result.message.ToString().Equals("true"); + result = HttpHelper.Request("Room​/UpdateRoomInfoWithReser", HttpHelper.ModelToJson(room)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateRoomInfoWithReser+接口服务异常,请提交Issue!"); + return; + } + bool result2 = result.message.ToString().Equals("true"); - if (result1 == true && result2 == true) + if (result1 && result2) { UIMessageBox.ShowSuccess("预约成功!请在指定时间内进行登记入住"); #region 获取添加操作日志所需的信息 @@ -52,16 +69,24 @@ namespace SYS.FormUI #endregion FrmRoomManager.Reload(""); this.Close(); - } - - + else + { + UIMessageBox.ShowError("预约失败!服务器繁忙"); + return; + } } private void FrmRoomManager_Load(object sender, EventArgs e) { cboReserWay.SelectedIndex = 0; - cboReserRoomNo.DataSource = new RoomService().SelectCanUseRoomAll(); + result = HttpHelper.Request("Room/SelectCanUseRoomAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCanUseRoomAll+接口服务异常,请提交Issue!"); + return; + } + cboReserRoomNo.DataSource = HttpHelper.JsonToList(result.message); cboReserRoomNo.DisplayMember = "RoomNo"; cboReserRoomNo.ValueMember = "RoomNo"; cboReserRoomNo.Text = ucRoomList.co_RoomNo; diff --git a/SYS.FormUI/AppFunction/FrmRoomManager.cs b/SYS.FormUI/AppFunction/FrmRoomManager.cs index c757250..b96667b 100644 --- a/SYS.FormUI/AppFunction/FrmRoomManager.cs +++ b/SYS.FormUI/AppFunction/FrmRoomManager.cs @@ -28,6 +28,9 @@ using SYS.Core; using SYS.FormUI.Properties; using SYS.Application; using System.Drawing; +using SYS.Common; +using Sunny.UI; +using static SYS.FormUI.FrmRoomManager; namespace SYS.FormUI { @@ -52,25 +55,18 @@ namespace SYS.FormUI InitializeComponent(); ReadInfo = LoadRoomInfo; Reload = LoadData; - - } + Dictionary dic = null; + ResponseMsg result = null; + List romsty = null; ucRoomList romt = null; #region 房间加载事件方法 private void FrmRoomManager_Load(object sender, EventArgs e) { - lblCanUse.Text = new RoomService().SelectCanUseRoomAllByRoomState().ToString(); - lblCheck.Text = new RoomService().SelectNotUseRoomAllByRoomState().ToString(); - lblNotClear.Text = new RoomService().SelectNotClearRoomAllByRoomState().ToString(); - lblFix.Text = new RoomService().SelectFixingRoomAllByRoomState().ToString(); - lblReser.Text = new RoomService().SelectReseredRoomAllByRoomState().ToString(); - lblRoomNo.Text = ucRoomList.co_RoomNo; - lblCustoNo.Text = ucRoomList.co_CustoNo; - lblRoomPosition.Text = ucRoomList.co_RoomPosition; - lblCheckTime.Text = ucRoomList.co_CheckTime == null ? "" : Convert.ToDateTime(ucRoomList.co_CheckTime).ToString("yyyy-MM-dd"); - lblRoomState.Text = ucRoomList.co_RoomState; + LoadRoomInfo(); + //foreach (Control item in this.pnlRoomInfo.Controls) //{ // if (item.GetType().ToString() == "System.Windows.Forms.Label") @@ -84,12 +80,6 @@ namespace SYS.FormUI } #endregion - private void tmrGetData_Tick(object sender, EventArgs e) - { - - - } - private void btnAll_Click(object sender, EventArgs e) { LoadData(); @@ -102,11 +92,41 @@ namespace SYS.FormUI public void LoadRoomInfo() { - lblCanUse.Text = new RoomService().SelectCanUseRoomAllByRoomState().ToString(); - lblCheck.Text = new RoomService().SelectNotUseRoomAllByRoomState().ToString(); - lblNotClear.Text = new RoomService().SelectNotClearRoomAllByRoomState().ToString(); - lblFix.Text = new RoomService().SelectFixingRoomAllByRoomState().ToString(); - lblReser.Text = new RoomService().SelectReseredRoomAllByRoomState().ToString(); + result = HttpHelper.Request("Room/SelectCanUseRoomAllByRoomState"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCanUseRoomAllByRoomState+接口服务异常,请提交Issue!"); + return; + } + lblCanUse.Text = result.message.ToString(); + result = HttpHelper.Request("Room/SelectNotUseRoomAllByRoomState"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectNotUseRoomAllByRoomState+接口服务异常,请提交Issue!"); + return; + } + lblCheck.Text = result.message.ToString(); + result = HttpHelper.Request("Room/SelectNotClearRoomAllByRoomState"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectNotClearRoomAllByRoomState+接口服务异常,请提交Issue!"); + return; + } + lblNotClear.Text = result.message.ToString(); + result = HttpHelper.Request("Room/SelectFixingRoomAllByRoomState"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectFixingRoomAllByRoomState+接口服务异常,请提交Issue!"); + return; + } + lblFix.Text = result.message.ToString(); + result = HttpHelper.Request("Room/SelectReseredRoomAllByRoomState"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectReseredRoomAllByRoomState+接口服务异常,请提交Issue!"); + return; + } + lblReser.Text = result.message.ToString(); lblRoomNo.Text = ucRoomList.co_RoomNo; lblCustoNo.Text = ucRoomList.co_CustoNo; lblRoomPosition.Text = ucRoomList.co_RoomPosition; @@ -119,11 +139,27 @@ namespace SYS.FormUI flpRoom.Controls.Clear(); if (string.IsNullOrEmpty(typeName)) { - romsty = new RoomService().SelectRoomAll(); + result = HttpHelper.Request("Room/SelectRoomAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomAll+接口服务异常,请提交Issue!"); + return; + } + romsty = HttpHelper.JsonToList(result.message); } else { - romsty = new RoomService().SelectRoomByTypeName(typeName); + dic =new Dictionary() + { + { "TypeName",typeName} + }; + result = HttpHelper.Request("Room/SelectRoomByTypeName",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByTypeName+接口服务异常,请提交Issue!"); + return; + } + romsty = HttpHelper.JsonToList(result.message); } for (int i = 0; i < romsty.Count; i++) { @@ -140,16 +176,11 @@ namespace SYS.FormUI lblRoomState.Text = ""; lblCustoNo.Text = ""; lblCheckTime.Text = ""; - lblCanUse.Text = new RoomService().SelectCanUseRoomAllByRoomState().ToString(); - lblCheck.Text = new RoomService().SelectNotUseRoomAllByRoomState().ToString(); - lblNotClear.Text = new RoomService().SelectNotClearRoomAllByRoomState().ToString(); - lblFix.Text = new RoomService().SelectFixingRoomAllByRoomState().ToString(); - lblReser.Text = new RoomService().SelectReseredRoomAllByRoomState().ToString(); + LoadRoomInfo(); } private void btnBS_Click(object sender, EventArgs e) { - LoadData(btnBS.Text); } @@ -178,11 +209,20 @@ namespace SYS.FormUI LoadData(); } - private void LoadRoomByState(int stateid) { flpRoom.Controls.Clear(); - romsty = new RoomService().SelectRoomByRoomState(stateid); + dic = new Dictionary() + { + { "stateid",stateid.ToString()} + }; + result = HttpHelper.Request("Room/SelectRoomByRoomState", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByRoomState+接口服务异常,请提交Issue!"); + return; + } + romsty = HttpHelper.JsonToList(result.message); for (int i = 0; i < romsty.Count; i++) { romt = new ucRoomList(); diff --git a/SYS.FormUI/AppFunction/FrmRoomMap.cs b/SYS.FormUI/AppFunction/FrmRoomMap.cs index 1347de1..c0a4066 100644 --- a/SYS.FormUI/AppFunction/FrmRoomMap.cs +++ b/SYS.FormUI/AppFunction/FrmRoomMap.cs @@ -21,8 +21,10 @@ *SOFTWARE. * */ + using Sunny.UI; using SYS.Application; +using SYS.Common; using SYS.Core; using System; using System.Collections.Generic; @@ -51,7 +53,13 @@ namespace SYS.FormUI.AppFunction public void LoadRoom() { flpRoom.Controls.Clear(); - List rooms = new RoomService().SelectRoomAll(); + var result = HttpHelper.Request("Room/SelectRoomAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomAll+接口服务异常,请提交Issue!"); + return; + } + List rooms = HttpHelper.JsonToList(result.message); for (int i = 0; i < rooms.Count; i++) { romt = new ucRoomList(); diff --git a/SYS.FormUI/AppFunction/FrmRoomStateManager.cs b/SYS.FormUI/AppFunction/FrmRoomStateManager.cs index b2239db..2997fe1 100644 --- a/SYS.FormUI/AppFunction/FrmRoomStateManager.cs +++ b/SYS.FormUI/AppFunction/FrmRoomStateManager.cs @@ -26,6 +26,8 @@ using System.Windows.Forms; using SYS.Core; using Sunny.UI; using SYS.Application; +using System.Collections.Generic; +using SYS.Common; namespace SYS.FormUI { @@ -36,11 +38,20 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + #region 窗体加载事件 private void FrmRoomStateManager_Load(object sender, EventArgs e) { txtRoomNo.Text = ucRoomList.rm_RoomNo; - cboState.DataSource = new RoomService().SelectRoomStateAll(); + result = HttpHelper.Request("Room/SelectRoomStateAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomStateAll+接口服务异常,请提交Issue!"); + return; + } + cboState.DataSource = HttpHelper.JsonToList(result.message); cboState.DisplayMember = "RoomStateName"; cboState.ValueMember = "RoomStateId"; cboState.SelectedIndex = 0; @@ -59,7 +70,18 @@ namespace SYS.FormUI case 2: case 3: case 4: - if (new RoomService().UpdateRoomStateByRoomNo(txtRoomNo.Text, cboState.SelectedIndex) == true) + dic = new Dictionary() + { + { "roomno",txtRoomNo.Text}, + { "stateid",cboState.SelectedIndex.ToString()} + }; + result = HttpHelper.Request("Room/UpdateRoomStateByRoomNo",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateRoomStateByRoomNo+接口服务异常,请提交Issue!"); + return; + } + if (result.message.ToString().Equals("true")) { UIMessageBox.Show("房间" + txtRoomNo.Text + "成功修改为" + cboState.Text, "修改提示", UIStyle.Green); FrmRoomManager.Reload(""); diff --git a/SYS.FormUI/AppFunction/FrmSelectCustoInfo.cs b/SYS.FormUI/AppFunction/FrmSelectCustoInfo.cs index d2a905a..9d08ce6 100644 --- a/SYS.FormUI/AppFunction/FrmSelectCustoInfo.cs +++ b/SYS.FormUI/AppFunction/FrmSelectCustoInfo.cs @@ -27,6 +27,7 @@ using SYS.Core; using Sunny.UI; using System.Collections.Generic; using SYS.Application; +using SYS.Common; namespace SYS.FormUI { @@ -37,6 +38,9 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + #region 存放客户信息类 public static string co_CustoNo; public static string co_RoomNo; @@ -53,7 +57,13 @@ namespace SYS.FormUI private void FrmSelectCustoInfo_Load(object sender, EventArgs e) { #region 加载客户类型信息 - List lstSourceGrid = new BaseService().SelectCustoTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectCustoTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCustoTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List lstSourceGrid = HttpHelper.JsonToList(result.message); this.cbCustoType.DataSource = lstSourceGrid; this.cbCustoType.DisplayMember = "TypeName"; this.cbCustoType.ValueMember = "UserType"; @@ -62,7 +72,13 @@ namespace SYS.FormUI #endregion #region 加载证件类型信息 - List passPorts = new BaseService().SelectPassPortTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectPassPortTypeAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectPassPortTypeAllCanUse+接口服务异常,请提交Issue!"); + return; + } + List passPorts = HttpHelper.JsonToList(result.message); this.cbPassportType.DataSource = passPorts; this.cbPassportType.DisplayMember = "PassportName"; this.cbPassportType.ValueMember = "PassportId"; @@ -70,7 +86,13 @@ namespace SYS.FormUI #endregion #region 加载性别信息 - List listSexType = new BaseService().SelectSexTypeAll(new SexType { delete_mk = 0 }); + result = HttpHelper.Request("Base/SelectSexTypeAll?delete_mk=0"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSexTypeAll+接口服务异常,请提交Issue!"); + return; + } + List listSexType = HttpHelper.JsonToList(result.message); this.cbSex.DataSource = listSexType; this.cbSex.DisplayMember = "sexName"; this.cbSex.ValueMember = "sexId"; @@ -78,7 +100,17 @@ namespace SYS.FormUI #endregion txtCustoNo.Text = ucRoomList.rm_CustoNo; - Custo c = new CustoService().SelectCardInfoByCustoNo(txtCustoNo.Text); + dic = new Dictionary() + { + { "CustoNo",txtCustoNo.Text.Trim()} + }; + result = HttpHelper.Request("Custo/SelectCardInfoByCustoNo",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectCardInfoByCustoNo+接口服务异常,请提交Issue!"); + return; + } + Custo c = HttpHelper.JsonToModel(result.message); txtCustoAdress.Text = c.CustoAdress; txtCustoName.Text = c.CustoName; txtCardID.Text = c.CustoID; @@ -86,7 +118,7 @@ namespace SYS.FormUI cbSex.Text = c.CustoSex == 1 ? "男" : "女"; cbCustoType.SelectedIndex = c.CustoType; cbPassportType.SelectedIndex = c.PassportType; - dtpBirthday.Value = c.CustoBirth; + dtpBirthday.Value = Convert.ToDateTime(c.CustoBirth); } } } diff --git a/SYS.FormUI/AppFunction/FrmSellThing.cs b/SYS.FormUI/AppFunction/FrmSellThing.cs index acac7cc..eebd056 100644 --- a/SYS.FormUI/AppFunction/FrmSellThing.cs +++ b/SYS.FormUI/AppFunction/FrmSellThing.cs @@ -31,15 +31,20 @@ using SYS.Application; using SYS.Common; using jvncorelib_fr.EntityLib; using System.Linq; +using System.Collections; +using Microsoft.Office.Interop.Excel; namespace SYS.FormUI { public partial class FrmSellThing : Sunny.UI.UIForm { private int rs = 0;//用于判断房间是否可消费 - static string roomNo; + Dictionary dic = null; + ResponseMsg result = null; + Room r = null; + public FrmSellThing() { InitializeComponent(); @@ -48,8 +53,13 @@ namespace SYS.FormUI #region 窗体加载事件 private void FrmSellThing_Load(object sender, EventArgs e) { - - List roms = new RoomService().SelectRoomByStateAll(); + result = HttpHelper.Request("Room/SelectRoomByStateAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByStateAll+接口服务异常,请提交Issue!"); + return; + } + List roms = HttpHelper.JsonToList(result.message); for (int i = 0; i < roms.Count; i++) { txtRoomNo.AutoCompleteCustomSource.Add(roms[i].RoomNo); @@ -66,24 +76,42 @@ namespace SYS.FormUI } #endregion - #region 查询文本框更改事件 private void LoadThingByName() { - - List lstSource = new SellService().SelectSellThingAll(new SellThing { SellNo = txtFind.Text.Trim(), SellName = txtFind.Text.Trim() }); + dic = new Dictionary() + { + { "SellNo",txtFind.Text.Trim()}, + {"SellName", txtFind.Text.Trim()} + }; + result = HttpHelper.Request("Sellthing/SelectSellThingAll",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellThingAll+接口服务异常,请提交Issue!"); + return; + } + List lstSource = HttpHelper.JsonToList(result.message); this.dgvSellthing.DataSource = lstSource; this.dgvSellthing.AutoGenerateColumns = false; } #endregion - #region 根据客户编号加载消费信息的方法 private void LoadSpendInfoByRoomNo(string room) { + dic = new Dictionary() + { + { "No",room} + }; + result = HttpHelper.Request("Spend/SelectSpendByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSpendByRoomNo+接口服务异常,请提交Issue!"); + return; + } this.dgvRoomSell.AutoGenerateColumns = false; - List lstSource = new SpendService().SelectSpendByRoomNo(room); + List lstSource = HttpHelper.JsonToList(result.message); this.dgvRoomSell.DataSource = lstSource; } #endregion @@ -91,7 +119,13 @@ namespace SYS.FormUI #region 商品加载事件方法 public void LoadSellThingInfo() { - List lstSource = new SellService().SelectSellThingAll(); + result = HttpHelper.Request("Sellthing/SelectSellThingAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellThingAll+接口服务异常,请提交Issue!"); + return; + } + List lstSource = HttpHelper.JsonToList(result.message); this.dgvSellthing.AutoGenerateColumns = false; this.dgvSellthing.DataSource = lstSource; @@ -135,12 +169,9 @@ namespace SYS.FormUI } #endregion - Room r = null; - #region 添加事件 private void btnAdd_Click(object sender, EventArgs e) { - if (lblState.Visible == false) { UIMessageBox.Show("请先输入消费的房间!", "提示信息", UIStyle.Red); @@ -155,11 +186,40 @@ namespace SYS.FormUI { if (CheckInput()) { - List st = new SellService().SelectSellThingAll(new SellThing { SellNo = txtSellNo.Text.Trim() }) ; - r = new RoomService().SelectRoomByRoomNo(txtRoomNo.Text); - var listSource = new SpendService().SelectSpendInfoRoomNo(txtRoomNo.Text.Trim()); + dic = new Dictionary() + { + { "SellNo",txtSellNo.Text.Trim()} + }; + result = HttpHelper.Request("Sellthing/SelectSellThingAll",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellThingAll+接口服务异常,请提交Issue!"); + return; + } + List st = HttpHelper.JsonToList(result.message); + dic = new Dictionary() + { + { "no",txtRoomNo.Text.Trim()} + }; + result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByRoomNo+接口服务异常,请提交Issue!"); + return; + } + r = HttpHelper.JsonToModel(result.message); + dic = new Dictionary() + { + { "RoomNo",txtRoomNo.Text.Trim()} + }; + result = HttpHelper.Request("Spend/SelectSpendInfoRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSpendInfoRoomNo+接口服务异常,请提交Issue!"); + return; + } + var listSource = HttpHelper.JsonToList(result.message); Spend s = null; - listSource = new SpendService().SelectSpendInfoRoomNo(txtRoomNo.Text.Trim()); if (!listSource.IsNullOrEmpty()) { var sellthing = listSource.FirstOrDefault(a => a.SpendName.Equals(txtSellName.Text)); @@ -176,10 +236,22 @@ namespace SYS.FormUI SpendTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), MoneyState = SpendConsts.UnSettle, }; - if (new SpendService().UpdSpenInfo(s)) + result = HttpHelper.Request("Spend/UpdSpenInfo", HttpHelper.ModelToJson(s)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdSpenInfo+接口服务异常,请提交Issue!"); + return; + } + if (result.message.ToString().Equals("true")) { var stock = ((decimal)st.First().Stock - (decimal)nudNum.Value); - bool n = new SellService().UpdateSellthingInfo(new SellThing { SellName = st.First().SellName, SellPrice = st.First().SellPrice, Stock = stock, SellNo = st.First().SellNo, format = st.First().format }); + var sellThing = new SellThing { SellName = st.First().SellName, SellPrice = st.First().SellPrice, Stock = stock, SellNo = st.First().SellNo, format = st.First().format }; + result = HttpHelper.Request("Sellthing/UpdateSellthingInfo", HttpHelper.ModelToJson(sellThing)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateSellthingInfo+接口服务异常,请提交Issue!"); + return; + } UIMessageBox.Show("添加成功", "系统提示", UIStyle.Green, UIMessageBoxButtons.OK, true); LoadSpendInfoByRoomNo(r.RoomNo); LoadSellThingInfo(); @@ -201,11 +273,23 @@ namespace SYS.FormUI SpendTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), MoneyState = SpendConsts.UnSettle, }; - bool m = new SpendService().InsertSpendInfo(s); - if (m == true) + result = HttpHelper.Request("Spend​/InsertSpendInfo", HttpHelper.ModelToJson(s)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertSpendInfo+接口服务异常,请提交Issue!"); + return; + } + bool m = result.message.ToString().Equals("true"); + if (m) { var stock = ((decimal)st.First().Stock - (decimal)nudNum.Value); - bool n = new SellService().UpdateSellthingInfo(new SellThing { SellName = st.First().SellName, SellPrice = st.First().SellPrice, Stock = stock, SellNo = st.First().SellNo, format = st.First().format }); + var sellThing = new SellThing { SellName = st.First().SellName, SellPrice = st.First().SellPrice, Stock = stock, SellNo = st.First().SellNo, format = st.First().format }; + result = HttpHelper.Request("Sellthing/UpdateSellthingInfo", HttpHelper.ModelToJson(sellThing)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateSellthingInfo+接口服务异常,请提交Issue!"); + return; + } UIMessageBox.Show("添加成功", "系统提示", UIStyle.Green, UIMessageBoxButtons.OK, true); LoadSpendInfoByRoomNo(r.RoomNo); LoadSellThingInfo(); @@ -235,11 +319,23 @@ namespace SYS.FormUI SpendTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), MoneyState = SpendConsts.UnSettle, }; - bool m = new SpendService().InsertSpendInfo(s); - if (m == true) + result = HttpHelper.Request("Spend​/InsertSpendInfo", HttpHelper.ModelToJson(s)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertSpendInfo+接口服务异常,请提交Issue!"); + return; + } + bool m = result.message.ToString().Equals("true"); + if (m) { var stock = ((decimal)st.First().Stock - (decimal)nudNum.Value); - bool n = new SellService().UpdateSellthingInfo(new SellThing { SellName = st.First().SellName, SellPrice = st.First().SellPrice, Stock = stock, SellNo = st.First().SellNo, format = st.First().format }); + var sellThing = new SellThing { SellName = st.First().SellName, SellPrice = st.First().SellPrice, Stock = stock, SellNo = st.First().SellNo, format = st.First().format }; + result = HttpHelper.Request("Sellthing/UpdateSellthingInfo", HttpHelper.ModelToJson(sellThing)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateSellthingInfo+接口服务异常,请提交Issue!"); + return; + } UIMessageBox.Show("添加成功", "系统提示", UIStyle.Green, UIMessageBoxButtons.OK, true); LoadSpendInfoByRoomNo(r.RoomNo); LoadSellThingInfo(); @@ -281,12 +377,41 @@ namespace SYS.FormUI string custoNo = dgvRoomSell.SelectedRows[0].Cells["clCustoNo"].Value.ToString(); string name = dgvRoomSell.SelectedRows[0].Cells["clSpendName"].Value.ToString(); string price = dgvRoomSell.SelectedRows[0].Cells["clSpendPrice"].Value.ToString(); - SellThing s = new SellService().SelectSellThingByNameAndPrice(name, price); + dic = new Dictionary() + { + { "name",name}, + { "price",price} + }; + result = HttpHelper.Request("Sellthing/SelectSellThingByNameAndPrice", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellThingByNameAndPrice+接口服务异常,请提交Issue!"); + return; + } + SellThing s = HttpHelper.JsonToModel(result.message); decimal num = Convert.ToDecimal(dgvRoomSell.SelectedRows[0].Cells["clSpendAmount"].Value.ToString()); string Stock = (s.Stock + num).ToString(); - if (new SellService().DeleteSellThing(txtRoomNo.Text, custoNo, name) == true) + dic = new Dictionary() + { + { "roomNo",txtRoomNo.Text.Trim()}, + { "custoNo",custoNo}, + { "sellName",name} + }; + result = HttpHelper.Request("Sellthing/DeleteSellThing", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DeleteSellThing+接口服务异常,请提交Issue!"); + return; + } + if (result.message.ToString().Equals("true")) { - bool n = new SellService().UpdateSellthingInfo(new SellThing { SellName = s.SellName, SellPrice = s.SellPrice, Stock = s.Stock, SellNo = s.SellNo, format = s.format }); + var sellThing = new SellThing { SellName = s.SellName, SellPrice = s.SellPrice, Stock = s.Stock, SellNo = s.SellNo, format = s.format }; + result = HttpHelper.Request("Sellthing/UpdateSellthingInfo", HttpHelper.ModelToJson(sellThing)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateSellthingInfo+接口服务异常,请提交Issue!"); + return; + } UIMessageTip.ShowOk("撤销成功!", 1000); #region 获取添加操作日志所需的信息 RecordHelper.Record(LoginInfo.WorkerNo + "-" + LoginInfo.WorkerName + "在" + DateTime.Now + "位于" + LoginInfo.SoftwareVersion + "执行:" + "帮助" + custoNo + "撤销了消费商品:" + txtSellName.Text + "操作!", 2); @@ -346,13 +471,23 @@ namespace SYS.FormUI private void btnCheck_Click(object sender, EventArgs e) { - string room = txtRoomNo.Text; + string room = txtRoomNo.Text.Trim(); if (string.IsNullOrWhiteSpace(room) == true) { UIMessageTip.ShowWarning("请输入消费房间号!",1000); return; } - Room r = new RoomService().SelectRoomByRoomNo(room); + dic = new Dictionary() + { + { "no",room} + }; + result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectRoomByRoomNo+接口服务异常,请提交Issue!"); + return; + } + Room r = HttpHelper.JsonToModel(result.message); if (txtRoomNo.Text == "") { lblState.Text = ""; diff --git a/SYS.FormUI/AppFunction/FrmSellThingManager.cs b/SYS.FormUI/AppFunction/FrmSellThingManager.cs index f50b185..96b8fa6 100644 --- a/SYS.FormUI/AppFunction/FrmSellThingManager.cs +++ b/SYS.FormUI/AppFunction/FrmSellThingManager.cs @@ -22,13 +22,15 @@ * */ using System; -using MySql.Data.MySqlClient; + using System.Windows.Forms; using SYS.Core; using SYS.FormUI.Properties; using SYS.Application; using Sunny.UI; using SYS.Common; +using System.Collections.Generic; +using System.Linq; namespace SYS.FormUI { @@ -41,28 +43,56 @@ namespace SYS.FormUI public static SellThing st; + Dictionary dic = null; + ResponseMsg result = null; + public void LoadData() { + result = HttpHelper.Request("Sellthing/SelectSellThingAll"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellThingAll+接口服务异常,请提交Issue!"); + return; + } dgvSellthing.AutoGenerateColumns = false; - dgvSellthing.DataSource = new SellService().SelectSellThingAll(); + dgvSellthing.DataSource = HttpHelper.JsonToList(result.message); } private void FrmSellThingManager_Load(object sender, EventArgs e) { - string SellId = new CounterHelper().GetNewId(CounterRuleConsts.SellId); + string SellId = Util.GetListNewId("ST",3,1,"-").FirstOrDefault(); txtSellNo.Text = SellId; - dgvSellthing.AutoGenerateColumns = false; - dgvSellthing.DataSource = new SellService().SelectSellThingAll(); + LoadData(); } private void btnFind_Click(object sender, EventArgs e) { - dgvSellthing.DataSource = new SellService().SelectSellThingAll(new SellThing { SellNo = txtFind.Text.Trim(), SellName = txtFind.Text.Trim() }); + dic= new Dictionary() + { + {"SellNo",txtFind.Text.Trim() }, + { "SellName",txtFind.Text.Trim()} + }; + result = HttpHelper.Request("Sellthing/SelectSellThingAll",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellThingAll+接口服务异常,请提交Issue!"); + return; + } + dgvSellthing.DataSource = HttpHelper.JsonToList(result.message); } private void btnDeleteSellThing_Click(object sender, EventArgs e) { - bool n = new SellService().DeleteSellThingBySellNo(txtSellNo.Text.Trim()); + dic = new Dictionary() + { + { "sellNo",txtSellNo.Text.Trim()} + }; + result = HttpHelper.Request("Sellthing/DeleteSellThingBySellNo", null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("DeleteSellThingBySellNo+接口服务异常,请提交Issue!"); + return; + } UIMessageBox.ShowSuccess("删除商品成功!"); #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "删除商品操作!删除值为:" + st.SellNo, 2); @@ -106,30 +136,48 @@ namespace SYS.FormUI }; if (CheckInput(st)) { - var SellThing = new SellService().SelectSellInfoBySellNo(st.SellNo); + dic = new Dictionary() + { + { "SellNo",st.SellNo} + }; + result = HttpHelper.Request("Sellthing/SelectSellInfoBySellNo",null,dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectSellInfoBySellNo+接口服务异常,请提交Issue!"); + return; + } + var SellThing = HttpHelper.JsonToModel(result.message); if (SellThing != null && SellThing.SellName.Equals(st.SellName) && SellThing.format.Equals(st.format)) { UIMessageBox.ShowError("信息已存在,请检查!"); return; } - - new SellService().InsertSellThing(st); - UIMessageBox.Show("添加商品成功","系统提示",UIStyle.Green,UIMessageBoxButtons.OK); + result = HttpHelper.Request("Sellthing​/InsertSellThing", HttpHelper.ModelToJson(st)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertSellThing+接口服务异常,请提交Issue!"); + return; + } + if (!result.ToString().Equals("true")) + { + UIMessageBox.Show("添加商品失败", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); + return; + } + UIMessageBox.Show("添加商品成功", "系统提示", UIStyle.Green, UIMessageBoxButtons.OK); #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "新增商品操作!新增值为:" + st.SellNo, 2); #endregion LoadData(); - string SellId = new CounterHelper().GetNewId("SellId"); + string SellId = Util.GetListNewId("ST",3,1,"-").FirstOrDefault(); txtSellNo.Text = SellId; } else { UIMessageBox.ShowError("信息不完整,请检查!"); - return; - string SellId = new CounterHelper().GetNewId("SellId"); + string SellId = Util.GetListNewId("ST", 3, 1, "-").FirstOrDefault(); txtSellNo.Text = SellId; + return; } - } private void dgvSellthing_CellClick(object sender, DataGridViewCellEventArgs e) @@ -164,7 +212,17 @@ namespace SYS.FormUI }; if (CheckInput(st)) { - new SellService().UpdateSellthingInfo(st); + result = HttpHelper.Request("Sellthing​/UpdateSellthingInfo", HttpHelper.ModelToJson(st)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("UpdateSellthingInfo+接口服务异常,请提交Issue!"); + return; + } + if (!result.message.ToString().Equals("true")) + { + UIMessageBox.Show("修改商品失败", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); + return; + } UIMessageBox.Show("修改商品成功","系统提示",UIStyle.Green,UIMessageBoxButtons.OK); #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "修改商品操作!修改值为:" + st.SellNo, 2); diff --git a/SYS.FormUI/AppFunction/FrmUnLockSystem.cs b/SYS.FormUI/AppFunction/FrmUnLockSystem.cs index f6db13b..5aeabd9 100644 --- a/SYS.FormUI/AppFunction/FrmUnLockSystem.cs +++ b/SYS.FormUI/AppFunction/FrmUnLockSystem.cs @@ -22,6 +22,7 @@ * */ using System; +using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; @@ -70,9 +71,22 @@ namespace SYS.FormUI } + Dictionary dic = null; + ResponseMsg result = null; + private void btnUnLock_Click(object sender, EventArgs e) { - var account = new AdminService().SelectAdminPwdByAccount(AdminInfo.Account); + dic= new Dictionary() + { + { "account",AdminInfo.Account.Trim()} + }; + result = HttpHelper.Request("Admin/SelectAdminPwdByAccount", null, dic); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectAdminPwdByAccount+接口服务异常,请提交Issue!"); + return; + } + var account = HttpHelper.JsonToModel(result.message); if (account != null) { if (account.AdminPassword != txtUnLockPwd.Text.Trim()) @@ -85,8 +99,6 @@ namespace SYS.FormUI this.Close(); string regPath = System.Windows.Forms.Application.StartupPath + @"\启用任务管理器.reg"; ExecuteReg(regPath); - - } } diff --git a/SYS.FormUI/AppFunction/FrmUpLoadNotice.cs b/SYS.FormUI/AppFunction/FrmUpLoadNotice.cs index 9e2d1c0..9d38fd1 100644 --- a/SYS.FormUI/AppFunction/FrmUpLoadNotice.cs +++ b/SYS.FormUI/AppFunction/FrmUpLoadNotice.cs @@ -22,12 +22,15 @@ * */ using System; -using MySql.Data.MySqlClient; + using System.Windows.Forms; using SYS.Core; using SYS.Application; using Sunny.UI; using SYS.Common; +using System.Linq; + +using System.Collections.Generic; namespace SYS.FormUI { @@ -38,6 +41,9 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + public bool CheckInput(string Content) { if (string.IsNullOrWhiteSpace(Content)) @@ -58,7 +64,7 @@ namespace SYS.FormUI { Notice notice = new Notice() { - NoticeNo = new CounterHelper().GetNewId(CounterRuleConsts.NoticeId), + NoticeNo = Util.GetListNewId("UP",3,1,"-").FirstOrDefault(), Noticetheme = txtNoticeTheme.Text.Trim(), NoticeContent = rtbNoticeContent.Html, NoticeTime = dtpUpLoadDate.Value, @@ -76,8 +82,17 @@ namespace SYS.FormUI notice.NoticeTypeName = "GeneralNotice"; break; } - - bool n = new NoticeService().InsertNotice(notice); + result = HttpHelper.Request("Notice​/InsertNotice", HttpHelper.ModelToJson(notice)); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("InsertNotice+接口服务异常,请提交Issue!"); + return; + } + if (!result.message.ToString().Equals("true")) + { + UIMessageBox.Show("上传失败!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); + return; + } UIMessageBox.ShowSuccess("上传成功!"); #region 获取添加操作日志所需的信息 RecordHelper.Record(AdminInfo.Account + "-" + AdminInfo.Name + "在" + DateTime.Now + "位于" + AdminInfo.SoftwareVersion + "执行:" + "上传公告操作!新增值为:" + notice.NoticeNo, 2); @@ -105,20 +120,17 @@ namespace SYS.FormUI private void FrmUpLoad_Load(object sender, EventArgs e) { - cboSelectClub.DataSource = new BaseService().SelectDeptAll(); + result = HttpHelper.Request("Base/SelectDeptAllCanUse"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("SelectDeptAllCanUse+接口服务异常,请提交Issue!"); + return; + } + //加载部门信息 + cboSelectClub.DataSource = HttpHelper.JsonToList(result.message); cboSelectClub.DisplayMember = "dept_name"; cboSelectClub.ValueMember = "dept_no"; } - - private void dgvNoticeList_CellClick(object sender, DataGridViewCellEventArgs e) - { - //txtUpLoadNo.Text = dgvNoticeList.SelectedRows[0].Cells["clNoticeNo"].Value.ToString(); - //txtNoticeTheme.Text = dgvNoticeList.SelectedRows[0].Cells["clNoticetheme"].Value.ToString(); - //rtbNoticeContent.Text = dgvNoticeList.SelectedRows[0].Cells["clNoticeContent"].Value.ToString(); - //cboSelectClub.Text= dgvNoticeList.SelectedRows[0].Cells["clNoticeClub"].ToString(); - //txtNoticePerson.Text= dgvNoticeList.SelectedRows[0].Cells["clNoticePerson"].ToString(); - } - } } diff --git a/SYS.FormUI/AppFunction/FrmVipRule.cs b/SYS.FormUI/AppFunction/FrmVipRule.cs index 6ee49f1..1072e8b 100644 --- a/SYS.FormUI/AppFunction/FrmVipRule.cs +++ b/SYS.FormUI/AppFunction/FrmVipRule.cs @@ -1,6 +1,6 @@ -using Sunny.UI; + +using Sunny.UI; using SYS.Application; -using SYS.Application.Zero; using SYS.Common; using SYS.Core; using SYS.FormUI.Properties; @@ -11,6 +11,7 @@ using System.Data; using System.Drawing; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; @@ -23,17 +24,25 @@ namespace SYS.FormUI InitializeComponent(); } + ResponseMsg result = new ResponseMsg(); + private void FrmVipRule_Load(object sender, EventArgs e) { #region 加载客户类型信息 - List lstSourceGrid = new BaseService().SelectCustoTypeAllCanUse(); + result = HttpHelper.Request("Base/SelectCustoTypeAllCanUse", null, null); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectCustoTypeAllCanUse+接口服务异常,请提交issue"); + return; + } + List lstSourceGrid = HttpHelper.JsonToList(result.message); this.cboCustoType.DataSource = lstSourceGrid; this.cboCustoType.DisplayMember = "TypeName"; this.cboCustoType.ValueMember = "UserType"; this.cboCustoType.SelectedIndex = 0; #endregion //生成流水号 - txtRuleId.Text = new CounterHelper().GetNewId(CounterRuleConsts.VipRuleId); + txtRuleId.Text = Util.GetListNewId("VR", 3, 1, "-").FirstOrDefault(); LoadVipType(); } @@ -43,7 +52,13 @@ namespace SYS.FormUI public void LoadVipType() { flpVipType.Clear(); - var listVipTypes = new VipRuleAppService().SelectVipRuleList(); + result = HttpHelper.Request("VipRule/SelectVipRuleList"); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectVipRuleList+接口服务异常,请提交issue"); + return; + } + var listVipTypes = HttpHelper.JsonToList(result.message); listVipTypes.ForEach(vipType => { ucVipType ucVipType = new ucVipType(); @@ -72,7 +87,13 @@ namespace SYS.FormUI datains_usr = AdminInfo.Account, datains_date = DateTime.Now }; - return new VipRuleAppService().AddVipRule(vipRule1); + result = HttpHelper.Request("VipRule/AddVipRule",HttpHelper.ModelToJson(vipRule1)); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("AddVipRule+接口服务异常,请提交issue"); + return false; + } + return true; } private void btnOK_Click(object sender, EventArgs e) diff --git a/SYS.FormUI/AppFunction/FrmWorkerCheckInfo.cs b/SYS.FormUI/AppFunction/FrmWorkerCheckInfo.cs index d100828..9219988 100644 --- a/SYS.FormUI/AppFunction/FrmWorkerCheckInfo.cs +++ b/SYS.FormUI/AppFunction/FrmWorkerCheckInfo.cs @@ -23,7 +23,10 @@ */ using Sunny.UI; using SYS.Application; +using SYS.Common; +using SYS.Core; using System; +using System.Collections.Generic; using System.Windows.Forms; namespace SYS.FormUI @@ -36,13 +39,24 @@ namespace SYS.FormUI } - + Dictionary dic = null; + ResponseMsg result = null; private void FrmWorkerCheckInfo_Load(object sender, EventArgs e) { - lblWorkerInfo.Text = "以下为员工编号:" + FrmChangeWorker.wk_WorkerNo + "员工姓名:" + FrmChangeWorker.wk_WorkerName + "的所有打卡考勤记录:"; + lblWorkerInfo.Text = "以下为员工:" + FrmChangeWorker.wk_WorkerNo + "-员工姓名:" + FrmChangeWorker.wk_WorkerName + "的所有打卡考勤记录:"; + dic= new Dictionary() + { + { "wid",FrmChangeWorker.wk_WorkerNo} + }; + result = HttpHelper.Request("WorkerCheck/SelectCheckInfoByWorkerNo", null, dic); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectCheckInfoByWorkerNo+接口服务异常,请提交issue"); + return; + } DgvCheckInfoList.AutoGenerateColumns = false; - DgvCheckInfoList.DataSource = new WorkerCheckService().SelectCheckInfoByWorkerNo(FrmChangeWorker.wk_WorkerNo); + DgvCheckInfoList.DataSource = HttpHelper.JsonToList(result.message); } private void btnClose_Click(object sender, EventArgs e) diff --git a/SYS.FormUI/AppFunction/FrmWorkerManager.cs b/SYS.FormUI/AppFunction/FrmWorkerManager.cs index c36445a..eca6a18 100644 --- a/SYS.FormUI/AppFunction/FrmWorkerManager.cs +++ b/SYS.FormUI/AppFunction/FrmWorkerManager.cs @@ -22,6 +22,7 @@ * */ using System; +using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using Sunny.UI; @@ -61,10 +62,19 @@ namespace SYS.FormUI Reload = LoadWorker; } + Dictionary dic = null; + ResponseMsg result = null; + private void LoadWorker() { + result = HttpHelper.Request("Worker/SelectWorkerAll"); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectWorkerAll+接口服务异常,请提交issue"); + return; + } dgvWorkerList.AutoGenerateColumns = false; - dgvWorkerList.DataSource = new WorkerService().SelectWorkerAll(); + dgvWorkerList.DataSource = HttpHelper.JsonToList(result.message); } private void FrmTopChange_Load(object sender, EventArgs e) diff --git a/SYS.FormUI/AppFunction/FrmWtiInfo.cs b/SYS.FormUI/AppFunction/FrmWtiInfo.cs index 14ac3e1..eb3aef4 100644 --- a/SYS.FormUI/AppFunction/FrmWtiInfo.cs +++ b/SYS.FormUI/AppFunction/FrmWtiInfo.cs @@ -22,6 +22,7 @@ * */ using System; +using System.Collections.Generic; using System.Windows.Forms; using Sunny.UI; using SYS.Application; @@ -37,6 +38,9 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + #region 窗体加载事件 private void WtiInfo_Load(object sender, EventArgs e) { @@ -57,8 +61,14 @@ namespace SYS.FormUI /// private void LoadWtiInfo() { + result = HttpHelper.Request("Wti/SelectWtiInfoAll"); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectWtiInfoAll+接口服务异常,请提交issue"); + return; + } //将水电费信息加载到Dgv - dgvWti.DataSource = new WtiService().SelectWtiInfoAll(); + dgvWti.DataSource = HttpHelper.JsonToList(result.message); dgvWti.AutoGenerateColumns = false; } #endregion @@ -78,7 +88,16 @@ namespace SYS.FormUI datachg_usr = AdminInfo.Account, datachg_date = DateTime.Now }; - new WtiService().UpdateWtiInfo(wti); + result = HttpHelper.Request("Wti/UpdateWtiInfo",HttpHelper.ModelToJson(wti)); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("UpdateWtiInfo+接口服务异常,请提交issue"); + return; + } + if (!result.message.ToString().Equals("true")) + { + UIMessageTip.ShowError("修改失败!", 1500); + } UIMessageTip.ShowOk("修改成功!", 1500); pnlWtiInfo.Visible = false; LoadWtiInfo(); diff --git a/SYS.FormUI/AppInterface/FrmAdminEnter.cs b/SYS.FormUI/AppInterface/FrmAdminEnter.cs index 32d05f7..f486664 100644 --- a/SYS.FormUI/AppInterface/FrmAdminEnter.cs +++ b/SYS.FormUI/AppInterface/FrmAdminEnter.cs @@ -31,6 +31,8 @@ using SYS.Common; using System.Net; using System.Diagnostics; +using System.Collections.Generic; + namespace SYS.FormUI { public partial class FrmAdminEnter : UIForm @@ -40,6 +42,9 @@ namespace SYS.FormUI InitializeComponent(); } + Dictionary dic = null; + ResponseMsg result = null; + private void btnCheckIn_Click(object sender, EventArgs e) { string account = txtAccount.Text.Trim();//获取超管账号 @@ -49,8 +54,15 @@ namespace SYS.FormUI UIMessageDialog.ShowErrorDialog(this, "错误提示", "账号或密码包含除字母数字外的字符,请检查!", UIStyle.Red); return; } + Admin admin = new Admin() { AdminAccount = account, AdminPassword = pass }; - Admin a = new AdminService().SelectMangerByPass(admin); + result = HttpHelper.Request("Admin/SelectMangerByPass", HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectMangerByPass+接口服务异常,请提交issue"); + return; + } + Admin a = HttpHelper.JsonToModel(result.message); if (a != null)//判断超管是否存在 { //判断当前管理员是否被禁用 @@ -70,7 +82,7 @@ namespace SYS.FormUI FrmBackgroundSystem fm = new FrmBackgroundSystem(); fm.ShowDialog(this);//打开主窗体 this.Hide();//隐藏登录窗体 - + } else { diff --git a/SYS.FormUI/AppInterface/FrmLoading.cs b/SYS.FormUI/AppInterface/FrmLoading.cs index 45f581e..d2b114b 100644 --- a/SYS.FormUI/AppInterface/FrmLoading.cs +++ b/SYS.FormUI/AppInterface/FrmLoading.cs @@ -1,4 +1,5 @@ using Sunny.UI; +using SYS.Common; using SYS.Core; using System; using System.Collections.Generic; @@ -42,10 +43,18 @@ namespace SYS.FormUI this.Close(); } + ResponseMsg result = new ResponseMsg(); + #region 判断版本号 private void CheckUpdate() { - var newversion = new ApplicationVersionUtil().CheckBaseVersion(); + result = HttpHelper.Request("App/CheckBaseVersion"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("CheckBaseVersion+接口服务异常,请提交Issue!"); + return; + } + var newversion = HttpHelper.JsonToModel(result.message); string version = System.Windows.Forms.Application.ProductVersion.ToString(); if (newversion.base_version != version) diff --git a/SYS.FormUI/AppInterface/FrmLogin.Designer.cs b/SYS.FormUI/AppInterface/FrmLogin.Designer.cs index 21af7bd..9d29c6e 100644 --- a/SYS.FormUI/AppInterface/FrmLogin.Designer.cs +++ b/SYS.FormUI/AppInterface/FrmLogin.Designer.cs @@ -88,6 +88,7 @@ this.txtWorkerId.Style = Sunny.UI.UIStyle.Custom; this.txtWorkerId.TabIndex = 16; this.txtWorkerId.Text = "WK010"; + this.txtWorkerId.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; // // txtWorkerPwd // @@ -109,6 +110,7 @@ this.txtWorkerPwd.Style = Sunny.UI.UIStyle.Custom; this.txtWorkerPwd.TabIndex = 17; this.txtWorkerPwd.Text = "admin"; + this.txtWorkerPwd.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; // // btnLoginBackSystem // diff --git a/SYS.FormUI/AppInterface/FrmLogin.cs b/SYS.FormUI/AppInterface/FrmLogin.cs index 74b654e..5d7630f 100644 --- a/SYS.FormUI/AppInterface/FrmLogin.cs +++ b/SYS.FormUI/AppInterface/FrmLogin.cs @@ -50,6 +50,8 @@ namespace SYS.FormUI #endregion } + ResponseMsg result = new ResponseMsg(); + #region 记录鼠标和窗体坐标的方法 private Point mouseOld;//鼠标旧坐标 private Point formOld;//窗体旧坐标 @@ -162,7 +164,18 @@ namespace SYS.FormUI if (CheckInput())//检验输入完整性 { Worker worker = new Worker() { WorkerId = txtWorkerId.Text.Trim(), WorkerPwd = txtWorkerPwd.Text.Trim() }; - Worker w = new WorkerService().SelectWorkerInfoByWorkerIdAndWorkerPwd(worker); + + result = HttpHelper.Request("Worker/SelectWorkerInfoByWorkerIdAndWorkerPwd", HttpHelper.ModelToJson(worker)); + + if (result.statusCode != 200) + { + UIMessageBox.Show("账号或密码错误!", "来自小T提示", UIStyle.Red); + txtWorkerPwd.Focus();//聚焦 + return; + } + + Worker w = HttpHelper.JsonToModel(result.message); + if (w != null)//判断员工编号是否存在 { if (w.delete_mk == 1) @@ -188,10 +201,10 @@ namespace SYS.FormUI } } } - catch(Exception ex) + catch (Exception ex) { - Console.WriteLine(ex); - //UIMessageBox.Show("服务器维护中,请稍后再试!", "温馨提示", UIStyle.Red); + //Console.WriteLine(ex); + UIMessageBox.Show("服务器维护中,请稍后再试!", "温馨提示", UIStyle.Red); } } #endregion diff --git a/SYS.FormUI/AppMain/FrmBackgroundSystem.cs b/SYS.FormUI/AppMain/FrmBackgroundSystem.cs index 6455fb5..6b11cd4 100644 --- a/SYS.FormUI/AppMain/FrmBackgroundSystem.cs +++ b/SYS.FormUI/AppMain/FrmBackgroundSystem.cs @@ -21,6 +21,7 @@ *SOFTWARE. * */ + using Sunny.UI; using SYS.Application; using SYS.Common; @@ -59,6 +60,9 @@ namespace SYS.FormUI this.Text = string.Empty; } + Dictionary dic = null; + ResponseMsg result = null; + private void FrmBackgroundSystem_Load(object sender, EventArgs e) { this.Owner.Close(); @@ -293,10 +297,16 @@ namespace SYS.FormUI public void LoadModule() { Admin admin = new Admin() { AdminAccount = AdminInfo.Account }; - List moduleZeros = new AdminModuleZeroService().GetAllModuleByAdmin(admin); + result = HttpHelper.Request("Module/GetAllModuleByAdmin", HttpHelper.ModelToJson(admin)); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("GetAllModuleByAdmin+接口服务异常,请提交issue"); + return; + } + List moduleZeros = HttpHelper.JsonToList(result.message); for (int i = 0; i <= Aside.Nodes.Count; i++) { - var moduleZero = moduleZeros.FirstOrDefault(a => a.module_name.Split('|','|').FirstOrDefault().Equals(Aside.Nodes[i].Name.ToString())); + var moduleZero = moduleZeros.FirstOrDefault(a => a.module_name.Split('|', '|').FirstOrDefault().Equals(Aside.Nodes[i].Name.ToString())); if (moduleZero == null) { Aside.Nodes[i].Remove(); @@ -307,8 +317,6 @@ namespace SYS.FormUI break; } } - - } private void btnLocked_MouseHover(object sender, EventArgs e) diff --git a/SYS.FormUI/AppMain/FrmMain.cs b/SYS.FormUI/AppMain/FrmMain.cs index 36a3b58..97ca1ab 100644 --- a/SYS.FormUI/AppMain/FrmMain.cs +++ b/SYS.FormUI/AppMain/FrmMain.cs @@ -35,7 +35,6 @@ using System.Management; using SYS.Application; using SYS.Common; using SYS.FormUI.AppUserControls; -using jvncorelib_fr.EntityLib; namespace SYS.FormUI { @@ -74,6 +73,7 @@ namespace SYS.FormUI public static StarUseList CloseMy; + ResponseMsg result = new ResponseMsg(); public void StopUseExit() { @@ -125,31 +125,6 @@ namespace SYS.FormUI } #endregion - #region 定时器:获取网络时间 - private void tmrDate_Tick(object sender, EventArgs e) - { - lblTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); - - DateTime tmCur = DateTime.Now; - - if (tmCur.Hour < 8 || tmCur.Hour > 18) - {//晚上 - label3.Text = "(*´▽`)ノノ晚上好," + LoginInfo.WorkerName; - btnHello.BackgroundImage = Resources.月亮; - } - else if (tmCur.Hour > 8 && tmCur.Hour < 12) - {//上午 - label3.Text = "上午好," + LoginInfo.WorkerName; - btnHello.BackgroundImage = Resources.早上; - } - else - {//下午 - label3.Text = "下午好," + LoginInfo.WorkerName; - btnHello.BackgroundImage = Resources.咖啡; - } - } - #endregion - #region 获取网络时间 public static string GetNetDateTime() { @@ -187,14 +162,54 @@ namespace SYS.FormUI } #endregion - #region 从数据库读取文字滚动的内容 - List fonts = new FontsService().SelectFontAll(); - int fontn = 0; + #region 定时器:获取网络时间 + private void tmrDate_Tick(object sender, EventArgs e) + { + lblTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); + + DateTime tmCur = DateTime.Now; + + if (tmCur.Hour < 8 || tmCur.Hour > 18) + {//晚上 + label3.Text = "(*´▽`)ノノ晚上好," + LoginInfo.WorkerName; + btnHello.BackgroundImage = Resources.月亮; + } + else if (tmCur.Hour > 8 && tmCur.Hour < 12) + {//上午 + label3.Text = "上午好," + LoginInfo.WorkerName; + btnHello.BackgroundImage = Resources.早上; + } + else + {//下午 + label3.Text = "下午好," + LoginInfo.WorkerName; + btnHello.BackgroundImage = Resources.咖啡; + } + } #endregion + List fonts = null; + int fontn = 0; + private void LoadFonts() + { + #region 从数据库读取文字滚动的内容 + result = HttpHelper.Request("Fonts/SelectFontAll"); + if (result.statusCode != 200) + { + fonts = null; + } + + fonts = HttpHelper.JsonToList(result.message); + #endregion + } + #region 定时器:文字滚动间隔 private void tmrFont_Tick(object sender, EventArgs e) { + if (fonts.IsNullOrEmpty()) + { + lblScroll.Text = "接口服务异常"; + return; + } fontn++; if (fontn == fonts.Count) { @@ -280,9 +295,16 @@ namespace SYS.FormUI /// private void LoadNavBar() { + var listSource = new List(); #region 菜单导航代码块 + result = HttpHelper.Request("NavBar/NavBarList"); + if (result.statusCode != 200) + { + listSource = null; + return; + } flpNav.Controls.Clear(); - var listSource = new NavBarService().NavBarList(); + listSource = HttpHelper.JsonToList(result.message); ucNavBar ucNavBar = null; if (!listSource.IsNullOrEmpty()) { @@ -326,6 +348,8 @@ namespace SYS.FormUI LoadNavBar(); + LoadFonts(); + lblTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); DateTime tmCur = DateTime.Now; @@ -346,8 +370,16 @@ namespace SYS.FormUI btnHello.BackgroundImage = Resources.咖啡; } SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW); //API函数加载,实现窗体边框阴影效果 - - int n = Convert.ToInt32(new WorkerCheckService().SelectToDayCheckInfoByWorkerNo(LoginInfo.WorkerNo)); + + Dictionary user = new Dictionary(); + user.Add("wkn", LoginInfo.WorkerNo); + result = HttpHelper.Request("WorkerCheck/SelectToDayCheckInfoByWorkerNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("打卡接口异常,请提交issue"); + return; + } + int n = Convert.ToInt32(result.message); if (n > 0) { linkLabel1.Text = "已打卡"; @@ -361,10 +393,6 @@ namespace SYS.FormUI frm1.TopLevel = false; pnlMID.Controls.Add(frm1); frm1.Show(); - - - - } #endregion @@ -382,9 +410,17 @@ namespace SYS.FormUI #region 检查软件更新版本事件方法 private void tsmiCheckUpdate_Click(object sender, EventArgs e) { - var tempUrl = new BaseService().GetBase(); + result = HttpHelper.Request("Base/GetBase"); + if (result.statusCode != 200) + { + UIMessageBox.ShowError("接口服务异常,请重试"); + return; + } + + Base _base = HttpHelper.JsonToModel(result.message); + //调用系统默认的浏览器 - System.Diagnostics.Process.Start(tempUrl.url_addr); + System.Diagnostics.Process.Start(_base.url_addr); } #endregion @@ -426,21 +462,35 @@ namespace SYS.FormUI private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { - int n = Convert.ToInt32(new WorkerCheckService().SelectToDayCheckInfoByWorkerNo(LoginInfo.WorkerNo)); + Dictionary user = new Dictionary(); + user.Add("wkn", LoginInfo.WorkerNo); + result = HttpHelper.Request("WorkerCheck/SelectToDayCheckInfoByWorkerNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("打卡接口异常,请提交issue"); + return; + } + int n = Convert.ToInt32(result.message); if (n > 0) { linkLabel1.Text = "已打卡"; linkLabel1.ForeColor = Color.Green; linkLabel1.LinkColor = Color.Green; pnlCheckInfo.Visible = true; - lblCheckDay.Text = Convert.ToString(new WorkerCheckService().SelectWorkerCheckDaySumByWorkerNo(LoginInfo.WorkerNo)); + result = HttpHelper.Request("WorkerCheck/SelectWorkerCheckDaySumByWorkerNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("打卡接口异常,请提交issue"); + return; + } + lblCheckDay.Text = Convert.ToString(result.message); } else { linkLabel1.Text = "未打卡"; linkLabel1.ForeColor = Color.Red; linkLabel1.LinkColor = Color.Red; - bool dr = UIMessageBox.Show("你今天还未打卡哦,请先打卡吧!", "打卡提醒",UIStyle.Blue, UIMessageBoxButtons.OK); + bool dr = UIMessageBox.Show("你今天还未打卡哦,请先打卡吧!", "打卡提醒", UIStyle.Blue, UIMessageBoxButtons.OK); if (dr == true) { WorkerCheck workerCheck = new WorkerCheck @@ -451,11 +501,23 @@ namespace SYS.FormUI datains_usr = LoginInfo.WorkerNo, datains_date = DateTime.Now }; - bool j = new WorkerCheckService().AddCheckInfo(workerCheck); - if (j == true) + result = HttpHelper.Request("WorkerCheck/AddCheckInfo", workerCheck.ModelToJson(), null); + if (result.statusCode != 200) { - lblCheckDay.Text = Convert.ToString(new WorkerCheckService().SelectWorkerCheckDaySumByWorkerNo(LoginInfo.WorkerNo)); - UIMessageBox.Show("打卡成功!你已共打卡" + lblCheckDay.Text + "天,再接再厉吧!", "打卡提醒",UIStyle.Green, UIMessageBoxButtons.OK); + UIMessageTip.ShowError("打卡接口异常,请提交issue"); + return; + } + bool j = result.statusCode == 200 ? true : false; + if (j) + { + result = HttpHelper.Request("WorkerCheck/SelectWorkerCheckDaySumByWorkerNo", null, user); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("打卡接口异常,请提交issue"); + return; + } + lblCheckDay.Text = Convert.ToString(result.message); + UIMessageBox.Show("打卡成功!你已共打卡" + lblCheckDay.Text + "天,再接再厉吧!", "打卡提醒", UIStyle.Green, UIMessageBoxButtons.OK); linkLabel1.Text = "已打卡"; linkLabel1.ForeColor = Color.Green; linkLabel1.LinkColor = Color.Green; @@ -465,13 +527,11 @@ namespace SYS.FormUI } else { - UIMessageBox.Show("服务器错误,请稍后再试!", "系统提示", UIStyle.Red,UIMessageBoxButtons.OK); + UIMessageBox.Show("服务器错误,请稍后再试!", "系统提示", UIStyle.Red, UIMessageBoxButtons.OK); return; } } } - - } private void lblClose_Click(object sender, EventArgs e) diff --git a/SYS.FormUI/AppUserControls/ucBaseInformation.Designer.cs b/SYS.FormUI/AppUserControls/ucBaseInformation.Designer.cs deleted file mode 100644 index ac5d5c7..0000000 --- a/SYS.FormUI/AppUserControls/ucBaseInformation.Designer.cs +++ /dev/null @@ -1,113 +0,0 @@ - -namespace SYS.FormUI -{ - partial class ucBaseInformation - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ucBaseInformation)); - this.btnOperation = new Sunny.UI.UIButton(); - this.lbName = new Sunny.UI.UITextBox(); - this.SuspendLayout(); - // - // btnOperation - // - this.btnOperation.Anchor = System.Windows.Forms.AnchorStyles.None; - this.btnOperation.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnOperation.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(199)))), ((int)(((byte)(29)))), ((int)(((byte)(35))))); - this.btnOperation.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.btnOperation.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.btnOperation.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnOperation.Location = new System.Drawing.Point(34, 4); - this.btnOperation.Margin = new System.Windows.Forms.Padding(0); - this.btnOperation.MinimumSize = new System.Drawing.Size(1, 1); - this.btnOperation.Name = "btnOperation"; - this.btnOperation.Radius = 20; - this.btnOperation.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.btnOperation.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.btnOperation.Size = new System.Drawing.Size(44, 26); - this.btnOperation.Style = Sunny.UI.UIStyle.Custom; - this.btnOperation.StyleCustomMode = true; - this.btnOperation.TabIndex = 15; - this.btnOperation.Text = "删除"; - this.btnOperation.SizeChanged += new System.EventHandler(this.btnOperation_SizeChanged); - this.btnOperation.Click += new System.EventHandler(this.btnOperation_Click); - // - // lbName - // - this.lbName.BackColor = System.Drawing.Color.Transparent; - this.lbName.Cursor = System.Windows.Forms.Cursors.IBeam; - this.lbName.Enabled = false; - this.lbName.FillColor = System.Drawing.Color.White; - this.lbName.FillDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.lbName.FocusedSelectAll = true; - this.lbName.Font = new System.Drawing.Font("微软雅黑", 12F); - this.lbName.Location = new System.Drawing.Point(6, 35); - this.lbName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.lbName.Maximum = 2147483647D; - this.lbName.Minimum = -2147483648D; - this.lbName.MinimumSize = new System.Drawing.Size(1, 1); - this.lbName.Name = "lbName"; - this.lbName.Padding = new System.Windows.Forms.Padding(5); - this.lbName.Radius = 20; - this.lbName.ReadOnly = true; - this.lbName.RectDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); - this.lbName.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.lbName.Size = new System.Drawing.Size(74, 29); - this.lbName.Style = Sunny.UI.UIStyle.Custom; - this.lbName.TabIndex = 17; - this.lbName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; - this.lbName.MouseLeave += new System.EventHandler(this.lbName_MouseLeave); - this.lbName.MouseHover += new System.EventHandler(this.lbName_MouseHover); - this.lbName.Validated += new System.EventHandler(this.lbName_Validated); - // - // ucBaseInformation - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.Controls.Add(this.lbName); - this.Controls.Add(this.btnOperation); - this.DoubleBuffered = true; - this.Name = "ucBaseInformation"; - this.Size = new System.Drawing.Size(86, 66); - this.Tag = ""; - this.Load += new System.EventHandler(this.ucBaseInformation_Load); - this.SizeChanged += new System.EventHandler(this.ucBaseInformation_SizeChanged); - this.Layout += new System.Windows.Forms.LayoutEventHandler(this.ucBaseInformation_Layout); - this.Resize += new System.EventHandler(this.ucBaseInformation_Resize); - this.ResumeLayout(false); - - } - - #endregion - public Sunny.UI.UIButton btnOperation; - public Sunny.UI.UITextBox lbName; - } -} diff --git a/SYS.FormUI/AppUserControls/ucBaseInformation.cs b/SYS.FormUI/AppUserControls/ucBaseInformation.cs deleted file mode 100644 index b7010ce..0000000 --- a/SYS.FormUI/AppUserControls/ucBaseInformation.cs +++ /dev/null @@ -1,111 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace SYS.FormUI -{ - public partial class ucBaseInformation : UserControl - { - - - public ucBaseInformation() - { - InitializeComponent(); - } - - private void ucBaseInformation_Load(object sender, EventArgs e) - { - } - - private void btnOperation_SizeChanged(object sender, EventArgs e) - { - btnOperation.Width = 63; - btnOperation.Height = 26; - } - - private void ucBaseInformation_SizeChanged(object sender, EventArgs e) - { - this.Width = 130; - this.Height = 90; - lbName.Width = 70; - lbName.Height = 20; - lbName.FillColor = Color.FromArgb(235, 243, 255); - lbName.FillDisableColor = Color.FromArgb(235, 243, 255); - lbName.RectColor = Color.FromArgb(235, 243, 255); - } - - private void ucBaseInformation_Resize(object sender, EventArgs e) - { - btnOperation.Width = 63; - btnOperation.Height = 26; - this.Width = 130; - this.Height = 90; - } - - private void ucBaseInformation_Layout(object sender, LayoutEventArgs e) - { - - } - - private void btnOperation_Click(object sender, EventArgs e) - { - if (btnOperation.Text == "恢复") - { - FrmNation.info = lbName.Text.Replace("名称:", string.Empty).ToString(); - FrmNation.Accessed(); - return; - } - FrmNation.info = lbName.Text.Replace("名称:", string.Empty).ToString(); - FrmNation.operation(); - return; - } - - private void lbName_MouseLeave(object sender, EventArgs e) - { - lbName.FillColor = Color.FromArgb(235, 243, 255); - lbName.FillDisableColor = Color.FromArgb(235, 243, 255); - lbName.RectColor = Color.FromArgb(235, 243, 255); - } - - private void lbName_MouseHover(object sender, EventArgs e) - { - //lbName.Enabled = true; - //lbName.ReadOnly = false; - } - - private void lbName_Validated(object sender, EventArgs e) - { - - } - } -} diff --git a/SYS.FormUI/AppUserControls/ucBaseInformation.resx b/SYS.FormUI/AppUserControls/ucBaseInformation.resx deleted file mode 100644 index 90ec49e..0000000 --- a/SYS.FormUI/AppUserControls/ucBaseInformation.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAS5JREFUWEft - lr+uAUEYxfcN9k994xG4NY1WIoJEf2udiFJotEqtXryD5/A0nDOOtWSyO0IuxXeSXybzzXdmjzW7RF+h - JEnaYAFOgSxkdUrTtBbH8cbT54W99MjuAmxRXGFkkBD24E92+hn+oLUQ2LuU3W3AZG1NK0UzN9GUc3dx - TSvF3qLfAlgAC2AB3hIAb9KRppXitYr+fEMtlIJ3eBfjEWNddvobgB9iwJ4AGHgm+0Uo9rkQQpZlTdly - oc4Q3n4PQ9lMN+G2BH8F4Fe2XKgNH3rK6Ml2EQqvHsIpOKHWufaVwIPKAzuV3W3wr48he4v+twR40s87 - YQEsgAWwAHcB1mCuhRD2D6/iHnAhQoB3d/d/AL/vP1iYAG5SCTZoyZoLtbGv1wcuvpLt04qiM/cKDdw4 - ayEsAAAAAElFTkSuQmCC - - - \ No newline at end of file diff --git a/SYS.FormUI/AppUserControls/ucEducationInformation.Designer.cs b/SYS.FormUI/AppUserControls/ucEducationInformation.Designer.cs deleted file mode 100644 index 771e687..0000000 --- a/SYS.FormUI/AppUserControls/ucEducationInformation.Designer.cs +++ /dev/null @@ -1,113 +0,0 @@ - -namespace SYS.FormUI -{ - partial class ucEducationInformation - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ucBaseInformation)); - this.btnOperation = new Sunny.UI.UIButton(); - this.lbName = new Sunny.UI.UITextBox(); - this.SuspendLayout(); - // - // btnOperation - // - this.btnOperation.Anchor = System.Windows.Forms.AnchorStyles.None; - this.btnOperation.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnOperation.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(199)))), ((int)(((byte)(29)))), ((int)(((byte)(35))))); - this.btnOperation.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.btnOperation.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.btnOperation.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnOperation.Location = new System.Drawing.Point(34, 4); - this.btnOperation.Margin = new System.Windows.Forms.Padding(0); - this.btnOperation.MinimumSize = new System.Drawing.Size(1, 1); - this.btnOperation.Name = "btnOperation"; - this.btnOperation.Radius = 20; - this.btnOperation.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.btnOperation.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.btnOperation.Size = new System.Drawing.Size(44, 26); - this.btnOperation.Style = Sunny.UI.UIStyle.Custom; - this.btnOperation.StyleCustomMode = true; - this.btnOperation.TabIndex = 15; - this.btnOperation.Text = "删除"; - this.btnOperation.SizeChanged += new System.EventHandler(this.btnOperation_SizeChanged); - this.btnOperation.Click += new System.EventHandler(this.btnOperation_Click); - // - // lbName - // - this.lbName.BackColor = System.Drawing.Color.Transparent; - this.lbName.Cursor = System.Windows.Forms.Cursors.IBeam; - this.lbName.Enabled = false; - this.lbName.FillColor = System.Drawing.Color.White; - this.lbName.FillDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.lbName.FocusedSelectAll = true; - this.lbName.Font = new System.Drawing.Font("微软雅黑", 12F); - this.lbName.Location = new System.Drawing.Point(6, 35); - this.lbName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.lbName.Maximum = 2147483647D; - this.lbName.Minimum = -2147483648D; - this.lbName.MinimumSize = new System.Drawing.Size(1, 1); - this.lbName.Name = "lbName"; - this.lbName.Padding = new System.Windows.Forms.Padding(5); - this.lbName.Radius = 20; - this.lbName.ReadOnly = true; - this.lbName.RectDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); - this.lbName.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.lbName.Size = new System.Drawing.Size(74, 29); - this.lbName.Style = Sunny.UI.UIStyle.Custom; - this.lbName.TabIndex = 17; - this.lbName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; - this.lbName.MouseLeave += new System.EventHandler(this.lbName_MouseLeave); - this.lbName.MouseHover += new System.EventHandler(this.lbName_MouseHover); - this.lbName.Validated += new System.EventHandler(this.lbName_Validated); - // - // ucBaseInformation - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.Controls.Add(this.lbName); - this.Controls.Add(this.btnOperation); - this.DoubleBuffered = true; - this.Name = "ucBaseInformation"; - this.Size = new System.Drawing.Size(86, 66); - this.Tag = ""; - this.Load += new System.EventHandler(this.ucBaseInformation_Load); - this.SizeChanged += new System.EventHandler(this.ucBaseInformation_SizeChanged); - this.Layout += new System.Windows.Forms.LayoutEventHandler(this.ucBaseInformation_Layout); - this.Resize += new System.EventHandler(this.ucBaseInformation_Resize); - this.ResumeLayout(false); - - } - - #endregion - public Sunny.UI.UIButton btnOperation; - public Sunny.UI.UITextBox lbName; - } -} diff --git a/SYS.FormUI/AppUserControls/ucEducationInformation.cs b/SYS.FormUI/AppUserControls/ucEducationInformation.cs deleted file mode 100644 index 33c5b67..0000000 --- a/SYS.FormUI/AppUserControls/ucEducationInformation.cs +++ /dev/null @@ -1,112 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace SYS.FormUI -{ - public partial class ucEducationInformation : UserControl - { - - - public ucEducationInformation() - { - InitializeComponent(); - } - - private void ucBaseInformation_Load(object sender, EventArgs e) - { - } - - private void btnOperation_SizeChanged(object sender, EventArgs e) - { - btnOperation.Width = 63; - btnOperation.Height = 26; - } - - private void ucBaseInformation_SizeChanged(object sender, EventArgs e) - { - this.Width = 130; - this.Height = 90; - lbName.Width = 70; - lbName.Height = 20; - lbName.FillColor = Color.FromArgb(235, 243, 255); - lbName.FillDisableColor = Color.FromArgb(235, 243, 255); - lbName.RectColor = Color.FromArgb(235, 243, 255); - } - - private void ucBaseInformation_Resize(object sender, EventArgs e) - { - btnOperation.Width = 63; - btnOperation.Height = 26; - this.Width = 130; - this.Height = 90; - } - - private void ucBaseInformation_Layout(object sender, LayoutEventArgs e) - { - - } - - private void btnOperation_Click(object sender, EventArgs e) - { - if (btnOperation.Text == "恢复") - { - FrmEducation.info = lbName.Text.Replace("名称:", string.Empty).ToString(); - FrmEducation.Accessed(); - return; - } - FrmEducation.info = lbName.Text.Replace("名称:", string.Empty).ToString(); - FrmEducation.operation(); - return; - } - - private void lbName_MouseLeave(object sender, EventArgs e) - { - lbName.FillColor = Color.FromArgb(235, 243, 255); - lbName.FillDisableColor = Color.FromArgb(235, 243, 255); - lbName.RectColor = Color.FromArgb(235, 243, 255); - } - - private void lbName_MouseHover(object sender, EventArgs e) - { - //lbName.Enabled = true; - //lbName.ReadOnly = false; - } - - private void lbName_Validated(object sender, EventArgs e) - { - //FrmEducation.info = lbName.Text.ToString(); - //FrmEducation.insert(); - } - } -} diff --git a/SYS.FormUI/AppUserControls/ucEducationInformation.resx b/SYS.FormUI/AppUserControls/ucEducationInformation.resx deleted file mode 100644 index 90ec49e..0000000 --- a/SYS.FormUI/AppUserControls/ucEducationInformation.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAS5JREFUWEft - lr+uAUEYxfcN9k994xG4NY1WIoJEf2udiFJotEqtXryD5/A0nDOOtWSyO0IuxXeSXybzzXdmjzW7RF+h - JEnaYAFOgSxkdUrTtBbH8cbT54W99MjuAmxRXGFkkBD24E92+hn+oLUQ2LuU3W3AZG1NK0UzN9GUc3dx - TSvF3qLfAlgAC2AB3hIAb9KRppXitYr+fEMtlIJ3eBfjEWNddvobgB9iwJ4AGHgm+0Uo9rkQQpZlTdly - oc4Q3n4PQ9lMN+G2BH8F4Fe2XKgNH3rK6Ml2EQqvHsIpOKHWufaVwIPKAzuV3W3wr48he4v+twR40s87 - YQEsgAWwAHcB1mCuhRD2D6/iHnAhQoB3d/d/AL/vP1iYAG5SCTZoyZoLtbGv1wcuvpLt04qiM/cKDdw4 - ayEsAAAAAElFTkSuQmCC - - - \ No newline at end of file diff --git a/SYS.FormUI/AppUserControls/ucPositionInformation.Designer.cs b/SYS.FormUI/AppUserControls/ucPositionInformation.Designer.cs deleted file mode 100644 index 12af0b2..0000000 --- a/SYS.FormUI/AppUserControls/ucPositionInformation.Designer.cs +++ /dev/null @@ -1,113 +0,0 @@ - -namespace SYS.FormUI -{ - partial class ucPositionInformation - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ucBaseInformation)); - this.btnOperation = new Sunny.UI.UIButton(); - this.lbName = new Sunny.UI.UITextBox(); - this.SuspendLayout(); - // - // btnOperation - // - this.btnOperation.Anchor = System.Windows.Forms.AnchorStyles.None; - this.btnOperation.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnOperation.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(199)))), ((int)(((byte)(29)))), ((int)(((byte)(35))))); - this.btnOperation.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.btnOperation.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.btnOperation.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnOperation.Location = new System.Drawing.Point(34, 4); - this.btnOperation.Margin = new System.Windows.Forms.Padding(0); - this.btnOperation.MinimumSize = new System.Drawing.Size(1, 1); - this.btnOperation.Name = "btnOperation"; - this.btnOperation.Radius = 20; - this.btnOperation.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.btnOperation.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.btnOperation.Size = new System.Drawing.Size(44, 26); - this.btnOperation.Style = Sunny.UI.UIStyle.Custom; - this.btnOperation.StyleCustomMode = true; - this.btnOperation.TabIndex = 15; - this.btnOperation.Text = "删除"; - this.btnOperation.SizeChanged += new System.EventHandler(this.btnOperation_SizeChanged); - this.btnOperation.Click += new System.EventHandler(this.btnOperation_Click); - // - // lbName - // - this.lbName.BackColor = System.Drawing.Color.Transparent; - this.lbName.Cursor = System.Windows.Forms.Cursors.IBeam; - this.lbName.Enabled = false; - this.lbName.FillColor = System.Drawing.Color.White; - this.lbName.FillDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.lbName.FocusedSelectAll = true; - this.lbName.Font = new System.Drawing.Font("微软雅黑", 12F); - this.lbName.Location = new System.Drawing.Point(6, 35); - this.lbName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.lbName.Maximum = 2147483647D; - this.lbName.Minimum = -2147483648D; - this.lbName.MinimumSize = new System.Drawing.Size(1, 1); - this.lbName.Name = "lbName"; - this.lbName.Padding = new System.Windows.Forms.Padding(5); - this.lbName.Radius = 20; - this.lbName.ReadOnly = true; - this.lbName.RectDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255))))); - this.lbName.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None; - this.lbName.Size = new System.Drawing.Size(74, 29); - this.lbName.Style = Sunny.UI.UIStyle.Custom; - this.lbName.TabIndex = 17; - this.lbName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; - this.lbName.MouseLeave += new System.EventHandler(this.lbName_MouseLeave); - this.lbName.MouseHover += new System.EventHandler(this.lbName_MouseHover); - this.lbName.Validated += new System.EventHandler(this.lbName_Validated); - // - // ucBaseInformation - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); - this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.Controls.Add(this.lbName); - this.Controls.Add(this.btnOperation); - this.DoubleBuffered = true; - this.Name = "ucBaseInformation"; - this.Size = new System.Drawing.Size(86, 66); - this.Tag = ""; - this.Load += new System.EventHandler(this.ucBaseInformation_Load); - this.SizeChanged += new System.EventHandler(this.ucBaseInformation_SizeChanged); - this.Layout += new System.Windows.Forms.LayoutEventHandler(this.ucBaseInformation_Layout); - this.Resize += new System.EventHandler(this.ucBaseInformation_Resize); - this.ResumeLayout(false); - - } - - #endregion - public Sunny.UI.UIButton btnOperation; - public Sunny.UI.UITextBox lbName; - } -} diff --git a/SYS.FormUI/AppUserControls/ucPositionInformation.cs b/SYS.FormUI/AppUserControls/ucPositionInformation.cs deleted file mode 100644 index ee6b580..0000000 --- a/SYS.FormUI/AppUserControls/ucPositionInformation.cs +++ /dev/null @@ -1,120 +0,0 @@ -/* - * MIT License - *Copyright (c) 2021 咖啡与网络(java-and-net) - - *Permission is hereby granted, free of charge, to any person obtaining a copy - *of this software and associated documentation files (the "Software"), to deal - *in the Software without restriction, including without limitation the rights - *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - *copies of the Software, and to permit persons to whom the Software is - *furnished to do so, subject to the following conditions: - - *The above copyright notice and this permission notice shall be included in all - *copies or substantial portions of the Software. - - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - *SOFTWARE. - * - */ -using SYS.Core; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace SYS.FormUI -{ - public partial class ucPositionInformation : UserControl - { - - - public ucPositionInformation() - { - InitializeComponent(); - } - - private void ucBaseInformation_Load(object sender, EventArgs e) - { - } - - private void btnOperation_SizeChanged(object sender, EventArgs e) - { - btnOperation.Width = 63; - btnOperation.Height = 26; - } - - private void ucBaseInformation_SizeChanged(object sender, EventArgs e) - { - this.Width = 130; - this.Height = 90; - lbName.Width = 70; - lbName.Height = 20; - lbName.FillColor = Color.FromArgb(235, 243, 255); - lbName.FillDisableColor = Color.FromArgb(235, 243, 255); - lbName.RectColor = Color.FromArgb(235, 243, 255); - } - - private void ucBaseInformation_Resize(object sender, EventArgs e) - { - btnOperation.Width = 63; - btnOperation.Height = 26; - this.Width = 130; - this.Height = 90; - } - - private void ucBaseInformation_Layout(object sender, LayoutEventArgs e) - { - - } - - private void btnOperation_Click(object sender, EventArgs e) - { - if (btnOperation.Text == "恢复") - { - FrmPosition.info = lbName.Text.Replace("名称:", string.Empty).ToString(); - FrmPosition.Accessed(); - return; - } - if (btnOperation.Text == "新增") - { - lbName.Enabled = true; - lbName.ReadOnly = false; - return; - } - FrmPosition.info = lbName.Text.Replace("名称:", string.Empty).ToString(); - FrmPosition.operation(); - return; - } - - private void lbName_MouseLeave(object sender, EventArgs e) - { - //lbName.Enabled = false; - //lbName.ReadOnly = true; - lbName.FillColor = Color.FromArgb(235, 243, 255); - lbName.FillDisableColor = Color.FromArgb(235, 243, 255); - lbName.RectColor = Color.FromArgb(235, 243, 255); - } - - private void lbName_MouseHover(object sender, EventArgs e) - { - //lbName.Enabled = true; - //lbName.ReadOnly = false; - } - - private void lbName_Validated(object sender, EventArgs e) - { - //FrmPosition.info = lbName.Text.ToString(); - //FrmPosition.insert(); - } - } -} diff --git a/SYS.FormUI/AppUserControls/ucPositionInformation.resx b/SYS.FormUI/AppUserControls/ucPositionInformation.resx deleted file mode 100644 index 90ec49e..0000000 --- a/SYS.FormUI/AppUserControls/ucPositionInformation.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAS5JREFUWEft - lr+uAUEYxfcN9k994xG4NY1WIoJEf2udiFJotEqtXryD5/A0nDOOtWSyO0IuxXeSXybzzXdmjzW7RF+h - JEnaYAFOgSxkdUrTtBbH8cbT54W99MjuAmxRXGFkkBD24E92+hn+oLUQ2LuU3W3AZG1NK0UzN9GUc3dx - TSvF3qLfAlgAC2AB3hIAb9KRppXitYr+fEMtlIJ3eBfjEWNddvobgB9iwJ4AGHgm+0Uo9rkQQpZlTdly - oc4Q3n4PQ9lMN+G2BH8F4Fe2XKgNH3rK6Ml2EQqvHsIpOKHWufaVwIPKAzuV3W3wr48he4v+twR40s87 - YQEsgAWwAHcB1mCuhRD2D6/iHnAhQoB3d/d/AL/vP1iYAG5SCTZoyZoLtbGv1wcuvpLt04qiM/cKDdw4 - ayEsAAAAAElFTkSuQmCC - - - \ No newline at end of file diff --git a/SYS.FormUI/AppUserControls/ucRoom.cs b/SYS.FormUI/AppUserControls/ucRoom.cs index ea0f9b7..adab67c 100644 --- a/SYS.FormUI/AppUserControls/ucRoom.cs +++ b/SYS.FormUI/AppUserControls/ucRoom.cs @@ -1,5 +1,6 @@ using Sunny.UI; using SYS.Application; +using SYS.Common; using SYS.Core; using System; using System.Collections.Generic; @@ -40,6 +41,9 @@ namespace SYS.FormUI this.CanPenetrate(); } + Dictionary dic = null; + ResponseMsg result = null; + #region 存放房间信息类 public static string rm_RoomNo; public static string rm_CustoNo; @@ -150,7 +154,17 @@ namespace SYS.FormUI Room r = null; private void cmsControlPanel_Opening(object sender, CancelEventArgs e) { - r = new RoomService().SelectRoomByRoomNo(leRoomNo.Text); + dic = new Dictionary() + { + { "no",leRoomNo.Text.Trim()} + }; + result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectRoomByRoomNo+接口服务异常,请提交issue"); + return; + } + r = HttpHelper.JsonToModel(result.message); if (!r.CustoNo.IsNullOrEmpty()) { tsmiCheckIn.Enabled = false; @@ -242,7 +256,17 @@ namespace SYS.FormUI { if (leCustoNo.Text.IsNullOrEmpty()) { - Room r = new RoomService().SelectRoomByRoomNo(leRoomNo.Text); + dic = new Dictionary() + { + { "no",leRoomNo.Text.Trim()} + }; + result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectRoomByRoomNo+接口服务异常,请提交issue"); + return; + } + Room r = HttpHelper.JsonToModel(result.message); if (r.RoomStateId == 0) { rm_RoomNo = leRoomNo.Text; @@ -283,7 +307,17 @@ namespace SYS.FormUI /// private void tsmiChangeState_Click(object sender, EventArgs e) { - rm_RoomStateId = Convert.ToInt32(new RoomService().SelectRoomStateIdByRoomNo(leRoomNo.Text)); + dic = new Dictionary() + { + { "roomno",leRoomNo.Text.Trim()} + }; + result = HttpHelper.Request("Room/SelectRoomStateIdByRoomNo", null, dic); + if (result.statusCode != 200) + { + UIMessageTip.ShowError("SelectRoomStateIdByRoomNo+接口服务异常,请提交issue"); + return; + } + rm_RoomStateId = Convert.ToInt32(result.message.ToString()); rm_RoomNo = leRoomNo.Text; FrmRoomStateManager frsm = new FrmRoomStateManager(); frsm.ShowDialog(); diff --git a/SYS.FormUI/AppUserControls/ucRoomList.cs b/SYS.FormUI/AppUserControls/ucRoomList.cs index 6080e69..11f5b28 100644 --- a/SYS.FormUI/AppUserControls/ucRoomList.cs +++ b/SYS.FormUI/AppUserControls/ucRoomList.cs @@ -8,6 +8,8 @@ using SYS.Core; using SYS.FormUI.Properties; using SYS.Application; using Sunny.UI; +using SYS.Common; +using System.Collections.Generic; namespace SYS.FormUI { @@ -188,7 +190,16 @@ namespace SYS.FormUI #region 当右键菜单打开时事件方法 private void cmsMain_Opening(object sender, CancelEventArgs e) { - r = new RoomService().SelectRoomByRoomNo(lblRoomNo.Text); + Dictionary room = new Dictionary(); + room.Add("no", lblRoomNo.Text); + var result = HttpHelper.Request("Room/SelectRoomByRoomNo", null,room); + + if (result.statusCode != 200) + { + UIMessageBox.Show("接口服务异常!", "来自小T提示", UIStyle.Red); + return; + } + r = HttpHelper.JsonToModel(result.message); if (lblCustoNo.Text != "") { tsmiCheckIn.Enabled = false; @@ -277,7 +288,16 @@ namespace SYS.FormUI if (lblCustoNo.Text == "") { - Room r = new RoomService().SelectRoomByRoomNo(lblRoomNo.Text); + Dictionary room = new Dictionary(); + room.Add("no", lblRoomNo.Text); + var result = HttpHelper.Request("Room/SelectRoomByRoomNo", null, room); + + if (result.statusCode != 200) + { + UIMessageBox.Show("接口服务异常!", "来自小T提示", UIStyle.Red); + return; + } + Room r = HttpHelper.JsonToModel(result.message); if (r.RoomStateId == 0) { rm_RoomNo = lblRoomNo.Text; @@ -311,7 +331,18 @@ namespace SYS.FormUI #region 修改房间状态 private void tsmiChangeState_Click(object sender, EventArgs e) { - rm_RoomStateId = Convert.ToInt32(new RoomService().SelectRoomStateIdByRoomNo(lblRoomNo.Text)); + Dictionary room = new Dictionary + { + { "roomno", lblRoomNo.Text } + }; + var result = HttpHelper.Request("Room/SelectRoomStateIdByRoomNo", null, room); + + if (result.statusCode != 200) + { + UIMessageBox.Show("SelectRoomStateIdByRoomNo+接口服务异常!", "来自小T提示", UIStyle.Red); + return; + } + rm_RoomStateId = Convert.ToInt32(result.message); rm_RoomNo = lblRoomNo.Text; FrmRoomStateManager frsm = new FrmRoomStateManager(); frsm.ShowDialog(); diff --git a/SYS.FormUI/Font/UI-FontUtil.cs b/SYS.FormUI/Font/UI-FontUtil.cs deleted file mode 100644 index d600ba6..0000000 --- a/SYS.FormUI/Font/UI-FontUtil.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Text; -using System.IO; -using System.Linq; -using System.Net; -using System.Reflection; -using System.Resources; -using System.Runtime.Serialization; -using System.Runtime.Serialization.Formatters.Binary; -using System.Text; -using System.Threading.Tasks; - -namespace SYS.FormUI -{ - //public static class UI_FontUtil - //{ - - // private static PrivateFontCollection pfc = new PrivateFontCollection(); - // private static ResourceManager rm = new ResourceManager("SYS.FormUI.Resource", Assembly.GetExecutingAssembly()); - // private static Assembly assembly = Assembly.GetExecutingAssembly(); - // /// - // /// 子控件字体 - // /// - // public static Font childControlFont = null; - // public static Font mainFont = null; - // public static Font scorllingFont = null; - // public static Font controlFont = null; - // public static Font roomControlFont = null; - - // static UI_FontUtil() - // { - // Stream stream = assembly.GetManifestResourceStream("SYS.FormUI.Resources.Alibaba-PuHuiTi-Regular.ttf"); - // //Stream stream = response.GetResponseStream(); - // byte[] fontdata = new byte[stream.Length]; - // stream.Read(fontdata, 0, (int)stream.Length); - // stream.Close(); - // unsafe - // { - // fixed (byte* pFontData = fontdata) - // { - // pfc.AddMemoryFont((System.IntPtr)pFontData, fontdata.Length); - // } - // } - // childControlFont = new Font(pfc.Families[0], 10); - // mainFont = new Font(pfc.Families[0], 10); - // scorllingFont = new Font(pfc.Families[0], 10); - // controlFont = new Font(pfc.Families[0], 11); - // roomControlFont = new Font(pfc.Families[0], 10); - // } - - - //} -} diff --git a/SYS.FormUI/Properties/AssemblyInfo.cs b/SYS.FormUI/Properties/AssemblyInfo.cs index 8567fec..a39856d 100644 --- a/SYS.FormUI/Properties/AssemblyInfo.cs +++ b/SYS.FormUI/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.5.0.8")] -[assembly: AssemblyFileVersion("1.5.0.8")] +[assembly: AssemblyVersion("2.0.0.0")] +[assembly: AssemblyFileVersion("2.0.0.0")] diff --git a/SYS.FormUI/Properties/Resources.Designer.cs b/SYS.FormUI/Properties/Resources.Designer.cs index ee8c0f4..896af75 100644 --- a/SYS.FormUI/Properties/Resources.Designer.cs +++ b/SYS.FormUI/Properties/Resources.Designer.cs @@ -490,6 +490,16 @@ namespace SYS.FormUI.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap 复制 { + get { + object obj = ResourceManager.GetObject("复制", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// diff --git a/SYS.FormUI/Properties/Resources.resx b/SYS.FormUI/Properties/Resources.resx index f429618..850e13c 100644 --- a/SYS.FormUI/Properties/Resources.resx +++ b/SYS.FormUI/Properties/Resources.resx @@ -118,8 +118,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\picCustomer.ImagePress.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\脏房状态.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\picExtend.ImageHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -127,6 +127,9 @@ ..\Resources\arrow-down-b.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\餐饮部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\维修部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -148,6 +151,9 @@ ..\Resources\添加管理员.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\打卡.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\酒店部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -157,20 +163,23 @@ ..\Resources\经理部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\delete2-a.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\搜索--1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\minus (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\常规部门卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\返回 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\搜索--1a.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\picCommodity.ImageHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\picCustomer.ImagePress.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\财务部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -193,6 +202,9 @@ ..\Resources\主页 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\picCommodity.Image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\监管小组卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -202,14 +214,11 @@ ..\Resources\組織圖塊.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\内控部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\已住状态.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\上传照片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\已住房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -220,9 +229,6 @@ ..\Resources\白金会员.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\可住房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\黄金会员.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -238,20 +244,17 @@ ..\Resources\注销.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\修改.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\77377282_p0_master1200.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\后勤部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\导出 (4)1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\可住房icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\系统管理员.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\维修房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\锁屏.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -265,9 +268,6 @@ ..\Resources\个人中心.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Alibaba-PuHuiTi-Regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\picCustomer.ImageHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -289,9 +289,6 @@ ..\Resources\修改a.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\脏房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\预约状态.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -310,26 +307,29 @@ ..\Resources\picRoom.ImagePress.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\咖啡.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\获取用户编号-ia.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\uiButton1.BackgroundImage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\picCommodity.ImageHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\修改.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\picCommodity.Image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\minus (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\770e7b52ecafc807247aad51bb6c6b43.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\delete2-a.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\上传照片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\脏房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\月亮.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -337,14 +337,14 @@ ..\Resources\picCustomer.Image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\餐饮部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Alibaba-PuHuiTi-Regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ..\Resources\普通会员.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\脏房状态.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\系统管理员.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\早上.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -355,8 +355,11 @@ ..\Resources\picExtend.Image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\咖啡.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\搜索--1a.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\内控部卡片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\lock.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -370,16 +373,16 @@ ..\Resources\增加 添加 加减 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\维修房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\导出 (4)1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\可住房icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\可住房(hover)icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\添 加a.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\打卡.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\复制.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/SYS.FormUI/SYS.FormUI.csproj b/SYS.FormUI/SYS.FormUI.csproj index 5979bd2..a6b14e8 100644 --- a/SYS.FormUI/SYS.FormUI.csproj +++ b/SYS.FormUI/SYS.FormUI.csproj @@ -89,19 +89,8 @@ ..\SYS.Library\kse.dll - - False - ..\SYS.Library\MySql.Data.dll - - - False - ..\SYS.Library\MySql.Data.EntityFramework.dll - - - ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll - - - ..\packages\Npgsql.4.0.10\lib\net451\Npgsql.dll + + ..\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll ..\packages\SqlSugar.5.0.3.5\lib\SqlSugar.dll @@ -258,30 +247,12 @@ FrmMain.cs - - UserControl - - - ucBaseInformation.cs - UserControl ucNavBar.cs - - UserControl - - - ucPositionInformation.cs - - - UserControl - - - ucEducationInformation.cs - Form @@ -462,15 +433,18 @@ FrmWorkerCheckInfo.cs + + UserControl + + + ucRoom.cs + UserControl ucVipType.cs - - PreserveNewest - @@ -637,17 +611,11 @@ FrmMain.cs - - ucBaseInformation.cs - ucNavBar.cs - - ucPositionInformation.cs - - - ucEducationInformation.cs + + ucRoom.cs ucVipType.cs @@ -846,6 +814,7 @@ Always + Always @@ -1103,10 +1072,6 @@ - - {600f4cc8-4323-4237-a55c-bfef4b67d57c} - SYS.Application - {65501AF6-C629-448A-847E-1BCD60665865} SYS.Common diff --git a/SYS.FormUI/packages.config b/SYS.FormUI/packages.config index 89e4359..d596ccd 100644 --- a/SYS.FormUI/packages.config +++ b/SYS.FormUI/packages.config @@ -3,8 +3,7 @@ - - + diff --git a/SYS.Library/MySql.Data.EntityFramework.dll b/SYS.Library/MySql.Data.EntityFramework.dll deleted file mode 100644 index 798a74b6116167d12c2f3bf9d44fc969fc4d6f69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301056 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ɅFsdU<;8(Q31@+w^JX{i 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 Y^$5U$bG7Vt0RMYyfHqao1;c^=09vS#;{X5v diff --git a/SYS.Library/MySql.Data.dll b/SYS.Library/MySql.Data.dll deleted file mode 100644 index 3a5c1b1c10d7dc45606fbb0e8c7b4239ba2bb657..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1734656 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

%m2x;ocs974jbIT@#wz;}FP`&)Ws* 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


pqdCP+L(zJJl3$4~49TKu&Bqttb$#E7v2xw%( z5{T%qlbp|ric1O=yvN1WW0rnr>DP&2P88RNV(dwN| zX!Jf5U$x+tGPy^GQjUrhD7!$7bN*V5(l-nIz@ak{ae*4y8GONVF!+LHXM^rV+Vo5z z?{-Ir?zT79xR2OwFc>-{N#c&;T+)wXbJpF?b8X>tPS}&4R<*eQg*VCFF?cTA<@EvZ z1Ws=Ir?GkMz$o?p0r!0Qq5MSc^AORY7Ir;J&92SnQD|?h)^TyAN8)u{N?}jlvvyBp z9R_Am2vz`8A|7UO4Kk$%6C~xGSXX4QvoU1O(Ct>T#@wu9itH{MU77ESce~#7=lXYE zvUxn$nf#TrCyXhZbCuYLXDN^PXX499=_c21m>O9!?oMzElFH&ee!uLz{NysWLGeU~ zZnX-%H9EA}Dq=IQNAZfE#30KYww+2ruy5u2Afn%HxW&bByYu56U~@ghi+zyZ9tLr0 zVa$@)#@e9eW}C_>GGoDZ_^bH0pQ`&WFf<}>YZbkoA;UHuvaoB(l#<{}0t&R-Pk5K5 zu$vSt&OLsdd+Z`PtJJD=hB z&{J~fA$NZ%lbZwm8?uMcXS_Tx)vyqEBuy>Iz9h%UC@Wu1dQFc@-ks=LGDExFW1G9A zY7H04M~5DymC=f{Bq~{(BJQ#R?9%6pTCTbFz-<}_FI3_Y9U8N1c=$df73^7y_T_*y zhc>!YHd21VY_!XpxQvn9^7=L(x%0E6n@Yo0LIV)DhN{Vp-K8+}I5$9WsX`!*#`Htc zp&jlr5YnH(t>%vUw4PW7mOxNHd|3)+mK$E9l(IS2!WYrxM`esS_p;C?eqcH|4H}Rc8BU0~N2A zg!V(mEp@6Linl)$<)NEgW$d>$<6CZWTKHBLyN%m=(Z=0NXi1B7*r&OP$Xr9?4pdeB z;6Alk7Do7jlH`9TiMpB!IBE$F-(+ouJHV&MG_U6qMW^zq6<)KNMB$yeC^k`IdJDyo z0P@sj&pZLi5xjaa!#=p1ceLp6^{V60i*ypY69yAkfv_&)%vOOku6&{%?~*I3Jm-ec zb8CrDfW5pdktZIG zG7h2-Qw>J=YK|=2J%J^MB_vf853IaOV^&@69o8Guo1kxFe-S?0wbz^T&BQA7Oc-;U z7?y7;9VrN3I|>6bLJZ@0MHw0^nds3oZl2^RBxi8+&|7*uIGdvf{f-{GBUev0_VqxI zSjgSxy4!`^?LzK$A$PlwyZw;6IT%35eR?m<35&(FPs4rl@cpGe7&N>7Z*Vtv=|MlZ zxiBlEffN#g0l{uAqonWE!tdY~=d{&5woNe~n2_rnw!6pO?y;G=;X(ynj5a)zu8RqO zHUX##U1-3oW>g8Q>RAD|*o84&E2WBA&ZdI-9zm#r`BDV$lj#LDYfHTBIXq_VX3U8{ z59&F3o!Sm@M6a8|Aqj5i(j{Hqgo4}x77STU;sgcS=>hVIygzgdhoDkR?bBJ-=V3t? zDRWEh0%D#LdzQ+1UvP?N_iSUatDJb1w|}asS_~FnYQJvcb55FnjRP=?~&=# zrLMUrS@|YCOcw8cy=4<@G-rv&jl|km5MRR2)GE_<t!r7xFp zaEJ)FP5^a9AEeiAxwe@cuoj({2QTev5#G8Tt%#1U80SzO9jzPZ(8#viR8uy3ua1En z?_k;hX4H+nM{Q6&x0meB66=rQ?oe4LxErvclp|5=yg40rE%&3L+pt$Fb%yPn1)Xh zasKdmfy2-0)!NtD>$derKwjpu=!bILTG+oH2cF7_mf?V3QQ?$vF+-TYyxapEr z?p-j+<-T3yf|s{T_>)G#FkEI;t>z?+M50$r^|+;INiHvUnwsJATCSeQ1qZIq%yPx5 znWAvR9CK4ylex-fZHEqd;pmZM*bVk z&jfP#z4YU3{Be`DUR~EsrutUStI^?ms9kbKw`h_Kdr$}P1VZr&3l~cxOg?i z7k{RxE7UE)nj(U#MJnE!zdjm-9LN@f_sK0HF=Pu_PCRg8E7@5F-3aw6KJ9A*TMWEg zi@ZgXx01MY6d9Ju>N2^73f9dIdg>Am;)kuKGi0-CMR>CNtb|h}JEEA^&}IWkJyl`PbQPwUl@4eClhCD zHc8Yua^G)*a1Fn%LhrxAWH&Iv;Y?fdj699p9T}0~O>zwH8MDIujl52Lzv3O*Xrk*hXoJ% zl8Lzh@23IuTobtfRE-q5AuAffPsE4MGdLgr8qeW9l4iO@^+{aH=s(PnFBK4Cx||3s z^EC73djXgy38tC@w@oVa(9>v5ZlPoUCo);SlXHM6GEI@`7@0U>r-b(V57n-6XSM5Y zU8GT1`KCb#i?yT^i;?#t?CxTB)02FdtF7!41v3#iW9v z5mkXrsiyYjFiwFFc{$v!!8DI^0Pv0Y@?_Lq;9?thXC(c0qVX}&8^YP5p!1>5Fa#hv3UG|?j}fz;F8fLXZKUzWGW2xFda8@ zu`nO9DxtIsg2la&Gh%E5qX#VG<^tJ_fJ~7FH%guuP-Z$BaXJRw(qy?kG3KsbP_&_= zWx(-CafqqOM`rlkNV`B5J;E{fc)x6EIu+OEbH>hsJkRf0I4Z%F{V8tla8gNrb@v65%AJoItoZ(n6%YlDM$uM0T=dQ&Ekxldb?o2_B4bqf_B*Hud@r8Nt2^1Go6XPVYDf;|$9A-rd$Ga%Z z@j+SqFhObPEjPM+=51?5Xv7{5g!>?t?i57CjifDvIH0!EmFUm3Z6Im68PS|qHk6FjFj4$JdN zo@@DsITLHTawtH$aQJAED!{o4LKfUG9XZ#wpKqt-YN0`AKo<-&zJp4hcO%6H8s>+qBamBu!hZ`;`6OTsN7-w$j zj5Z?DIvz*eoTR{9LUSqKtwGn5VnZtEkW!mNS3c5UpROUOi8<5TA^Xsd)})Zc=uoF- z1xSfq!R5i=jq0mXLoVw>EDl8UiWE~%b03hIdjSc{RhXQ!b?fz%WS1*Qi5?7-UGX-H z<5mimrmSJ?Qkm7HBpbV|U6_-)sg#+*t}(SIZQQF`<>N2b5_T%b%%hU@ntFJXNmEbK z)|gqmMA(%Dl(SrMo@0@@dxg_R$tx#(krL#Favw0_)PDEC*U7l8ElI+Cp~sY~!MGX# zW~4nUJ>E`Mpgw&cS9XWS!2PbN*fq!G&l;0j3Jp{FR=XqLYFFZy#0jO-PqMhlWNS!p zN=qA39i)zrQ&riowBQsbDVL-u?RS7xR+M|v(GcQpSrlN@+ch{Env0ly5?G`_`D&fr3sRdR` zkU=$~djM?$Cl|{Vm-}&B864wFMWz~vzQ5}o_q+Lf{ z-pzVHo~bX}Muohn09(nYB8`}tH>I|qw!lvVaW~T;4Cde#{@u5#^5g=;S=S?*1qC?; zd7L8WKUL^W%aOT2t6l|W#M;jiBA#dZo+6OHd=4XFyCQU%#_&y~3VSQrH;dzI{)luV z0>ic(EtO8HgaWXxs$#g6=CKYaIQ80r2=IvwHI3*HmmwCa<7I_UMkr{gk7r%{?m0nb}Wu? z(t9YIJj+>XmU5OCBlHlf)3PWY%c@zqmp}B9j|)|l8Oki_P_hQ0WR{Pgfa8N4d;)Wj zojk!+KWlpMt)>y@sG_r?^$XWkXg$vlFg4I7THw?I%I!vJS0hW)7_a=xN-;Ac^zSz% z_P{I-(L3FxMKhD`DDN;p%ZGy1y>akZM@u=Vvz@p(U$EUQJ(kc|`mmIL4_ZY80qG&C&08a z+R${3WoriM9uvB?q%(9^=-8pWjunLVp3u}Enr^bl3a18{<=n3dJu~f)QY?eJ(+*=s zF)N*7hTmrMn{7e18g4V(Zg{uhj&xMFr;S_i<1}sBVQV^pEooO5-R)_=&1t{wY2)1? z0n!_mEhFXoEV;Kh10v^4(OOCf}2eFT-_jnqZ&B zSEtY%h!tjd9+1OWW19M4+W2_d_+r}libavZfo45;-t-EO=~Y&HqG8?)!>e z$xROomW{#3pqOM7Ph*;_MA>d9QeH$Q602dhwQ*)YTWI-W2V3Sw!!5V7N;!?%q zJVh`ZC&B_zB)4FifJs|{!a?EiH|57tgwPji)yih`d{oYC(FuQO_@pqk)9^vVA|dm5 zMR~TF&znS^*~>6*X%-h9BYP3CPlOBmD2iyB;fA1A_#PA#>|zK@gltDxjghAz@i3a) zZ+v;yoc+~HQJC?0QLt>O;Kp&jccU;)c#b#sDR75@LymhGYk9NO645C!qY;x?5HPF; zndpZUe6?Gm>!jF>PKtAUDQ1YG5KIrip-$zNS*%bWXyesTi_f(M_vwMKD5<^1IVO@~ zAX7zh$^_E8)AoM#xC@bIc0E;Di9MY1$?S~oEIk>8HAUxhi0r5#qJjp^QC%$Pj3Q_*Kc+{U%2 zIoyxpaqgE}L>seCxUx6iv$DIZazk^XM;D1Sw)J-3(8rac9yh1(b8N($TC=g?x{kRO z@&35yT^#WimsQlxU76^Qwe+@MpXiOXcK600xuV)k=Ciz)n@n!#?!7h^?`nyeQ+ao9 z!t*9_YpCZP6Y(b1_Qsn#aG4SDj!h>p*OAplyvxhGdp7pAuW##*edV6myrSZTv%z^> zt>Qu|<~Ngadw*Xn-rCyU(H`$l^v#Wxb#%lmSYNC+(U<7GKGDKmxTH(U=S94krL9G+ z3l|qJm{YQN-Ml#^^IA*i#1|}{H)ma3$6{wIDq2W3?Z^2qn73elN%8z*QJS+%{I@J#G=E)7d~tE>qT)ph z<~1)WowvB8c;3Rri%Q}p#qpxjg(dTg7naUjRNT67L2GkS>$>^PEhP)El(xi+id)w; z#}_S#H!mtFTDYjCxHPdS-ny=}xC9GV%M>qePLRLSb;a`+6)z@%d8Nhc)|Irhw3H;8 zTNV|^7nByYv?huc7td>HZJxhyanZWsmU$)3ixN;TSl7BJk!V?5lqiX>D=tYC7cD3% z#-Vl5!uji3TTA23^NLDZ7cW@Qytuh|LG!%k){?|J^0jb&OX>W1Me7zO;-xLciTM1| zqD2em%`Yw~ZY^0?S{zTzFN!a0E-hWSZhj&mE+^n}lW}>C$=BS!v-xkq=1$nWK0}zp zOOF1|?!N`Q(^Bn(y0WXE8>RlPJpPZBM=w&{ks;NN&0*K0p5*U5|3BvWMtI)mczzUi z&s`SpYj6I$691d@m0hsD?Ty9#@1p*HEb7hh`>l@OS0>i|U8w&SLam8FDHkTrzR{Hio))~C3i;XS<&9t(-GgO%M)iPR4nv~ z8TEALJT8&B+;O=u;uTx1u9>^0B5{3LUDe$3`c)Nk%XJuF;rb1@yf1jOY|mY^>O`U*ZNpOYn`kDE zmRMhVS92o9^hno2#*}>VBIY3%MZD6(Q}6EV?Cz54OpHsvasyXU_9x2vHg+{D6I{6| zc9kz%S-Y~*^Hi!!D{E^i8|%68a!Q0dG#hHUGLxCxgf%tXqG`kxj#%CmWsQC?nHsBV zupJliaz)Xk$z4r%OQOR?Tv1!Ts-|)!cWkOw8q1bdLwsVyiyHCj_QVZk9qYTfC$p{7 z^Kv8JlvOJ$DwkKStgLV$YAWk5C4_t$D{Jcf2u_N4Gr|a%QU=3N&zlzUCReRoU3+;Y z7ktX%V#6{nOnFT&?w5lBDH#Ibt)kAxF#5?&& zPeM0Vtz1Q5O}@>)zS80j?d2}=<0D=k^KPQ6X>6)oQ(3-BRctvxq?@P^*uh7Yj*)~n zRjq8ORH~uFsyZhVp+iMwb){mEL*<&f%JRmh+PX@FDxZ(o_zoFKTdd{vl`7Hds!Fb4 zRff#9rnaJL`BlEFq|96^>TBzKH%MQHY>MNW4r&|jM9K+&B>;lJ%%Cc(Jd63ES zRrL+E^%4%Eof8o3*0W)(~GqLzSA#WEMJVFL%;ZSzlj^$ej@J@~MOI z)$XeN$jVY!wX~JBR4uGil@j@?>PBj;sl2v&Rn5vK8fjS*yyi;WXvCYI_OGvnX_BS1 zlV!B2!rC~CG$$SI)3B<6DltLVa>n7_3fNRr3s*xQ6ly`lJMM5nX;RkzbQHC#8k?x0 zvKpe0B3MolXl`mC4OP+(GOaR`cu-Nh$`pl>R@at6Amg&D8Y_uFv`*_tMVUOysdD8i zZu^zfvMK_&#$R4lql6UcrPZ~|WR_H$@@U-HlW=rbmesGUTFFhqr$)R2RSh-Tw7RUm zO8Tm)d_~#HOQjD^j(EohzBD|9HS|&js5$D*WOP-1Jx#Q!p?pPU4Rs|MEh{gtU4&QP8HEs_?Lyt-X?#zI-_?N3?3MRB=Poa^k=)c{F=X8PX^U1!}Bc zgP_#ZR5e;4Pwbj*?70b%XsV23ny87CRRpq2vLrKe|Uez+ntE-gds*0vE%73Y8 z;8P;r3F#~bx*Qt68mlTywTsp0G)m&D(13N0*~?e0EJyQI`<^HQimdjbHdI$#R$jTH zwz@(JTh&y%>@o`ND!i<|zKlLe&NY=a%S2+Ud}bz}Bw5u!sT7gXqM9lyxx85|A;Teq zRNWU_GFZHHERjw(oUe!>wy3%)3v&anQdg;DEIbK<& z#;p=HTwYaYVI=-)f3BAj(}E64=AdtqIp~%|t**}T%dg*+wN1X>R&($jmseF*SI}mw z8X#74@ZD((w3M)Ixc2A!(KQ)gRTpWeRdkxfp`@!A8+u+@#GCKm$z7l5>mKOkHte~L z-Q691a~t}5ySvtRY*h8N1fI(V+B;ejy*b4T-PPd#ix?IJFu|QP)SjbN^I? z8grJl#C!S^y=NaiM%qF=?kHT8Dvxb{dUIk-u#H?;&sb;nK7BUF0Snkic#L(#fTq+ z=MCkJ*(+Tln2d^+Q?@FIMa(BS9D?ha;j4F7vc zQF}&Yg;p|$IZu11syRlU`&Eu>6C3Ba*+Ngey|*u>BE?(WWKWsy>!)qSds|{_>Uz8T zyPLZ^Vodv560PlB#6oCS=yi!$PrR=WC&C~J?2k2QJE~XvWi4*b8e`^|!4V4UJ}uBk zxuj*w2H*j!$IL0M>yR3fn;Y_s_lf+QV zd5*_Ax|`!2G4|FH%4L7Ny~}34hBuu?q)rmjUh(u~RUDLha5FO^mZC)JHuS5=2{-3P zV7?gfmS!|x5i&{ll?-!NKV%~TGuy7Oh5!GyV3o0^y|3BxX3IZSm{dyU}82;hfQ=m?*cz)@`(g>BnL_$tOt>^aNT^BHiJCmjX_HjlJ9q zPMUEXo7nRWbOJpn5|*Lhj->wor4~CQURzZcZMV~jyYT|H`pwrh7)e%xb+fZ$eFM#H zYTxI&)^O2=4I3_8g|e$^xoG3YjThFT8`vRlx#-3lZ@f_9*0B_EQOmlPb?4IfOCsKz zA#RDa@HG-tp&J*P4n<+n*R;g6Pai`yDJ&X|Ks2E@y+NR^#0^IY5Q})HWCmD{;(oKB zp}8&5NgI(Q$?kazB3@A@X-0-RyIW8PN6iuPcYJuXpsEYyu44w>y?r`+Ftw_$K5^Xu z1LGF&rii!j4TK~k7=qH;zJ5S`07n)&Y^iPnYk|jS8jcB zoXAmwcrVWNiO%lp69Mg{Ub8X`IL>d+8HpW{M-^tg-mL2wSl`}t1R+OXy-VJpG)Ifz zZ&WN+500r%^zhXgGl+Dke!)5wD_(#b$N5eWrWK ziM*6gMj6;zVmB~O2ou!U$qlYrP!2IS@Fx-G4VB|#(g;Ob=&z2-I`NEw09t|}#ElVe zpghC1RYM1KRNdv}4QCb46Z=q~u~~C_S~r}hp;*t+#v1)?(7-$mI5bcT24?;GDiURF ztZsO7Lqm0}yo|xw+@3_|d6dmoWHXWu^sDEc8SzdHY*vBI8Dz?#TeZu~cLO>q5o7vm zEywc~MZ9@$?C&DA`By9>Zp4DqQmabdKogjAMx>TzI!SfLnz?3B#2VWMI@k5k*fav) z&XD$>GJX3)-?_1J2FQVE^mngMFpTVt-N1T%EHlLTVy1g=Ny9)_`*j0}j*YSQ7L7n# z{a!zVbs5s9W}zC1j~lNBV%^sfb0bU*Cq&lM+ufsx5a;nNj}UWU*`J);HuQC*$E&v1 zLj2`)R@$OD>e%(KkS8*bhuTEKg1sBhyO6#q!+|CkC>vx`#mQ*rezT)}q6>*kdVvhb z`0khIt&MnBsyDL968b@5nJ%~iwpvMLP0&L8B*YyKp2hieSYMmQ0h;%8HTQ00(%h1f zZU(1Szn;hOwWh<9YR;&;uwnjhl4Q_0p`n3Qb**Azh^^>m2Bl;@PeTjoz^-xSUE$C6 zg8ULj+STognVvOeM(M*+!{ZG84zRDb9>%SR^$(!iJFpQ~kiMx*m;RBe&XlHQhvh!TSNw%~G_ysd)$&o}M@C{!jkZR-_~G%>bTv~soS&im9A2ou zAmQVfVFm^3Y3pSa>3MIDc!|T4?(1{DjAr|~n|038`U`YQT73Tp$!m4|@#=RRC|k?h6X))xZDt~Gz3cs5VtaM?x-{X&}C{Bw*fX&KE5~D-Mi7}kA`gle^iJ*N7LzOy4Ss(wMn06Zf;+Z zXpNIcal+>K;o8+T5%20oVqnF_2qZ{kirS*~U9ap1ak2K%adM~_R!xl^?Ps8iVo}d5 zzO1*y#)HX-_fDm7l(n%?SgGD{Mm|o(;bG--gWf=<|LSG2GdM%xDzdse-eR*v8_;yb zn8n(lM^fR}Y;PjoBE@RM#n#^LPPDGAiHH(eof+{?&xlN;lpr3WLo;egN)qhH*VmJ1 zX2_r@5r=rI8lYQLQc9-C26{S_FC}0-YN&3tc*Ex``?MMtjEI%zZZyQdpds$&7)DpD zHQv$3@jlpTpX;1Mv+iT;Pg8GCPtwzqaB;N9AM4JR8c@UTP4J0Mt=Tb4XZ6BlQiK`p zqn%~V!(5Qy9x{NM(z%ZW{XD%14s_u3&gN&558JdUq8a6SW~?L=l*aQGN4yfXQWkbw zG>y+x)-3;rB%A6HLDnELggkf~zKq<{Z^j>l?~qJ@)xg>1)PZs$dtP zOG*O~c*3HjnyAjpE9WkzwIovM2Shz}hBZd}k@6(Fa zdF+W-cdwTwO7K=dvo=LcthKzN+Hs2qC>l)|mb@);Y~!;lm0oLsNrw9jNWkqhG@D&m0g zjHyo2(BBS@sC+a9MuB9YIl(BJ`K?M>9q}$r=g<@vB@5}Ay9cz^LTBfczD7H?u^6r= zxrI(tIZ0|5P=z9f3w6D8n0ilRMZ_zw>f)%=Kr?IQ)_QuouV*UID;>*5i>SpEe|_GX zFujOE+lb9{E|FV*GC-KhE=}V+?=6h)5ATa?{g^h;t+h2&3v5alxf+!cr_WW>PB%>2 zu(eF3=5j(>ItEbH)!Z@ALQVRLAy&o`d~ZMXtre`mH&7cI(a2YY@`aaPr=^|qLiPz> zCnfa>>9hXWGBzgYkCu1D*At)GuwRgM&ZAWx$N>5580cglB+<|A6%%myPhYG!tZ}Jr zG@=OmV~y>wkXh_9_74;BE;kO&;12TPGu@F_t-OlU7PE@a^OHbx&{$kx7$A{$trp4Y zjjfLNwp*X;dhw&ho7i9_8xZ;R0lByl@9AO1EZ{$VJkba0OhX`5M}u3|cMBe2>?o2x zf4!e_Q)PV;8`=lcR$8A07qYL9{gCu8{F!uF~gH%fc^0eb7PsBWg}fD{810mx3O~_d(f&nn8O^gquZ8+H08hg zt?)j~_chlLNux%lE!~9YoZ>()O*T`1w6R^+*KI?}^ca+Jw+3mw8<7N?BTKZL-t@ei zBi@E^fM?rVZm=h{riy`IjdH25V-T>|>4#Ws+>k0mX{u-mf5d1#u<7R;+88d-cc-;z zyB5ABOTlo@lJV7f*?Lr&md_e&JfigmY4Z+t=_zq$hG?D|EB1x@(%0$eA9RH_GD!yA ztPh?0`&v4S$jHav`lZsZh^JB(fim-I#&VlZq!OfRGLnVBHQ>$TXWL1?fe z>a#gx1=k&I9GAr5GYo1K37|P6zi#E1xM|#omr9@orEoo-K^2+t7vw!p-Et$T2diz? zTzy}%g|^K1d?a4y0^n>G5qPY(&ws_0%5 zJS5I7EKl@yZ*-&mTWGII8`IgSQ+f#I4s|BSDQ>{(^n)! zpHb)_%J_yijMDe|YoeqXF+dEOQF@7a!jkQBO*}i`->yc*RA6f-F{XIU3!GanbJ#tZgb5P2K2t>7OQ) zA7cR5={ND}LB9sxu2Y1lsfA%*dk4f?;A(0OUWK+@hG|azE~QWC={tOfjiGVb8*CP2 z^a2?%lpke3lt{ zalvJSQm&>~{7ZBFmt=U7i+Q#VJNDJY8MpNQnLK6boI+lPF0)bKVWrd=p*!n6?_1ya z^}ow}8~+_g9OOd>+4g-s70jWrSZ5y_bRF&M{txyt&pI+O#+h(DNRuT+y>ovb|N5yb ztI%IX%?ZPQxa#Yh8ou@J(JOxazR@RU7msavWa-#hMayoP+y3r%KVIAMo~fU?|2?lg z|NHlRd~njO-8Cccz5c4#-}~(u%ig!EdG!5HUVPkbpZfi;KJfb9Pv7zLhvHifJ$>NL z;-VjYX!n9=KGb~Nln>9_yzIko{o%3?&y8&S@E_l_?5=`UU;AkMv(rEJ_^PY#ezozQ zdzQZR^LxA*uibN6>T{pk|84Kn-+R98)7u`OxZ_Q0Yj>RXQ{qWF^rk^){=IQ5G z?0n^%-+Zq1^ZV}`du_@CufCLe;AgLW=z))apzjMauK2jB@fLl zzUklh&T0C}AC_P9m01TL_{wJ{cYSs0<*A3?cKq6}zgD^Yk5KC z`J36l{mI2e$2|4zCB0AmsHybnzSy3pFL>(WpS^Y7B|mT7aLcm?|8UE57eD{-bJfpn z`_-y{F8y`>C2xIx$4BP<*8AnyZ*MvMUw$`p@t1#p%KeiLHGE^$p{?It{)Yu;wod5# zrF`k$=N`OpL3$$4qge@^}BP3KHMV|D5DiRYhm>{r&WI`$)H)a9+Z z@Ds<~x#Ywd?_WE1eDi(9Cw%j(Yfjp5)<2%~wJmp_^x;R|QTUAyeD~DT_g-}RM^@Z% z`np+9oH6O0-#hF0)n7aN<7d44{3lv|fBwjd(c-V~x@z7J7JXsf)_dyb-@oeWg_kY- zw?&Ja?_NCC_#YSC^6jr)^vClax#+(-iZAJ$@wH1XXiAlDf6MC1cYW!)%0IkzpmO@^ zY0Iy>@S;oK{bcQ>@48|CrKj}2ZN*jnk5)}O^oz^?;l|^u&yM`0`mw97U734#-W3L*wK_S0W^%aggQuRi}{4_*DP5<`rjBAejR8c(Z(&0pWcWLX)+K1P-E?(I7?cZF}zVf^M?GJqH>Gop}{j$CA zef3?P-+oV5ZCiWyJny#auHF4;|0@r@cjMLl|Fm)M@`rCeZi?qUeyW{<^>WYPq|0>f z0YKcZ#{HwXUxxWI&LaJm=R>Ek;53mYf&KF=i+qIk@n0u<-X>^2e+; zjvIW}@PF2cp7+z3=cS12OZac&3a_8!d0sQm59P2WOZc04-Z#VZz7FlP(7YG7Q}aEK zTh+aPA>H$c@5w^am`qxP-9TF9 z=i%OoTQ_-Ljk%7vuOq&5j;E)Y=6TN$<_kPeA@A=djVq5O4azp1w04r0_dxgY2>!XA z_XE=GB%e!2^LNDgHqw6*zwbi-X3U!i`w4h-FJTu_#$OZX$4G0GH1mn;bjmY{@V_LT zpAg4S$WJ|GFUKQA+{Z$@im-Eu=iii1{30>xfc)(y{aXq99M5xc@5X)T1pEp2e!_o+ zd|U``c9Y*6o_letfuAMB$6|pumGa*SFP|WP?>vL@k^fd`ehr_O66e|QtB(JRaepV_ zUL>uhyJAeCp>J=!W@!2XrMd@AyiTh6Y(?uE2nT1;!Bigvvc(xNDZqIJ) z%Q3fGiY?y1LcH`(5!VofBI+jQm0-WuK-4|_DplpIMcuy_TV{!`#-W#twd1XnMAT_% zv()0vTt?VdennJ{a~HpgQ{@OaGz8(SOhT7zHRQeCdI&2m&;aH(Z!5$_<%F*>{;H^r z5U#W0y-|K2B+$tUB!bI{aU+@OCddGJ?eboA-VNrh%IWv2!7dUMCn~Az%UtGN0u^}n zlJNCB>nxXX;!!Zi3&({N}a}&E?C#+-Ar_3M!Zn1c93d0fw1?qg9fx5_NeaV z9?0BEiY1x(F#)Xf1CU5q4sRm~q|h~GiJLB@E~+qxxL@U}h$EY5W=nh%feM2_f!2_y z21UCXg1M6FR$^Ap`>oA2liwE0`+7eu#j1?9cn=a}wt~27Zni8*iW}f>8#=3ld`rY6 zBW)D*64Yu*1y-?N&g+QDsgp+9N!J?+Ft^@%ODiDgBko=roeF$C=}GDwQzbbni=X@_Xf~1T_Z}k}7?v)E#Abz`y*?PG zB1uaJ%IpOCF&HM@tCFTUd^AzbEd7N9yx?d7RW%(Zg@-q_%;3!gKUpd_v-&IHyqZ_9 z_kO(3Nn6WtQWF*Hr7$y#{5eQVE8&A$wX5tpi$!{`1s4SsuOxJ?&yip_O~Th~yt(SR z`uXob9)k?1WFk{)<0GHJ=w{ZR3lhlxr4S!A{(!)xAX^_Ps!j9~WT_gnI&XDJEw}gNy&7Ba(2mxBvZ$6 zSG{+>@+GO2sJNb_5tB4(ACXA)1Ot^K$Y-UC@u$n4fH;;W&g?_dW&UuG0kz{mH65)+ zUBx{TWFV6~-96NjZ>M?{+0P*^RR+crAKr=^jKl5Ft^8rnWX@rBj8InSEULzllIiPGcy^e1~^F(G?yox*AHU=6g8= z%f=Hl60VO*RUAQEagD?yA;|3UDW?U=)!s5PsrI1GrOP{) z3FXPIsD9XqVk7aZF9-^)e&#o>6x}$A zFc??{+CP(5ecrW9>&b-UfrgY4_Xd8e`OjqGKR`HJghw0E^;uP3N!FwYRp)))R|#;Y z0*rUAvi9a?=KbXU*N_#~G6a4*Nvjr}=xL7a#uT4tp<#BdO`YZN=O+eF6X49u07vho zvRPCqs)fx?ocl;FXislEg?uxC7G^eI$M|wnTM}&*tivijlX+@0?;_~jBc(viL;>B@ z&dof;Mg_T-AoGq4^5d%$b!ro?9Ovz>*_lK0E`NgJzAhG;fnOOL+GY!K|Z2;P^DY z;6H`9M8uhb6J$=~I5nke{xxUSR6{CHJ&6_|&#A+s7nznu?7~w$pGc)2H!@PxVn~m- zC4ozg^Z$>%caM* zW@GeQI-H!@siK9|ftG1dOVRp}`5ei(4uBa`voE1_lDg%;ZIboNCOl9R+ zyu5TMH#)4c9j|Ysrb-KxvMDIqu+QbTeMl+5_GCEoQMh)%7}=C^+!4vPxLb@jR41A- zkXunXo0Tc!NFzf}|ApwEnj_Dhq|yh__Z#q zI{lSslsVEl#U_fOs!TQRl>Dl}5?9c5{aFe4DOAi*YB~*F4*EtK#v7(_ux8iC0C%|qt{D9*;&TAsxwe;5~|}2{W;)a=mSvm;?8> zsGRO}?J#9Xus_drVlXtP0x_;`jc6)R=0DFw9GymjW)FfwCj*r(b}A)~D<7|}82Od6 zAoZ^QF}NFw87kvsS?-pK+Yh2r0vbrdgLj@ph{sSFbY-J=c;&%1OBludF{ zX@eWofz@YXKuuUgMegcmj#5l%qbt$iW@kvl8_-5b<;%9Fs{@gJ{@;k^SASV^uAkGJ zekC;PFRNYyInHA!>2C0)NVBUHjjucR#@y0)?D{7(OLLkHM#mw%ywN^0CW^?!%Po$d zLaIraf;%*6@?yVWP8~O$rd&euj&tKMa`WkEezh`is|!kQih~)ACAMgL0@bsJS68Bz zgR}RvDy$W+LmM&ZKabRiX9S8}F640CzS-sbI#4pSr$iOeVNR;5)a920&D_tnqG`rR zO?j8fUKMN9fs2Y=Iah%ThgVL#5uj4>2UNR!Xf-u%?zY9yZU2HQ{-IUujYlcNN&&uT z5{@V%RcsNAP%9o8C!vuVD)#06PSNlH7K=<(06Z+m(*q(sT^Tszvd5uUKK5ojTwBUV z6T$yOXhsrV7+>3w^%aUGs!jE-htTvo_U1GlOi@b3Q6~*jF$cZC^IJ#UH=13uX1z@vXfFVhM!~p16BR3%0+x|1irA(U%jZPU0;TvScZ!YiU_rm z`Ki#>o8gZw+3O^puyw%#t?<9lXi_u6KA0uRcA|yP@InH)scaz}T^sA|&?d4RDO zzPSjOoQEhA%NL!IQuIcrvtmX-n^`a@`vTj|XF&d>N3$QBB!2D^<}>NhAikJEoYXB;I5MhK1ebSDR z!HBOxJc`PeK?i;YHOHlHl*=0e603c<`p77598 zM(RP94+OO}sZ31GD)EgEsU{`D6~DiPJQiBI)HM1@PfO3(vH z`F>mI%?M3l_*#}WF`?4K$Zx}Sw)h{2 zBOpx@X$k%*O3U)W6J&%0h=!AZjLFijEtGsj1cS7N^*$A_%_Lq{>>_v) zaTSP(YK9EReoXr+u*k5u1Xe`kF2evd$#wJ~o)&W8NV2|ku3}2^b%Jc5m;Bt8ENu=( zj73U77wD0bksx*DdCkB~JJp2nn1tvgpbC*-NUvri%!+oCc#JG` za+QJR?GZ{0UzVK*9wAeb>WQ&&m;&N9TOY)dGFnW=upF-8i3_fx4TZp)m%~r}Ve~1k z|5;k63;~Ekdn-{s7M5K@2FG*gHA`St1_biRKO#WZv4c%Oh_Llm#XJVI|I(rN);blXkXNH zEq`4hE=a*@O^B`rJ=>wPh;4@J{r&jWf_j9o%w5<_NrCXrEX|6*lZ*iI%n`CXF(|{5 zqjpxT1&bCv)VkQ_IPAg5&ndien~LMJ@(RdeS%F8gK7Y6UH|ivPOx?o9Wthgph`2+T zBNKz1>j18-laNH>kGU}sxW(O$^H7nh2@0g5aus%hO)E%A z`5^kitrd$TfriSi5&szyYypfKS9${5+SA20W)YbX>P^KAlY{u5w@ieXm97Mo z;X~pTAauD(I0x}80d)W)DcQ8dhPDW{H5&yETQNo;1DB>sThmr)h0s~KjL5~yY*9rE z5q4y2o+_}8GDyYwih{vqr@libqpScgL4Up3S0juoG|&9iw?c)@R4kyrUXQO8vOy)( z$pL#_hgfsw#vou|%F>nMvHI+bLy%!B0S(@oAsZVp3}mz}bQBMJQ@g%^89)#$#5C{R zI*}j|c;rTdl6gvPv!fDiusLPtf_q?#9XBn)Vxc=NQ?(k3_{EEu0ELpeFHqU2(xLDbZv@# zlweV37N9{y3WYiI(s2&dwy~NyKhbXq-AHk-R5K4kl3G_0t=dQJPXb1H)if z#9h0~GQ^4xPP5}6cLS73DV^9?uqz&+S=5XTH;5%VfdSR4ZLZ&1HhNmR6m zX6Nb$sZpbxyAUDBjEA<5TsW5|YU`GYhg8L|C@?9IQ`53VQ1--kt!8dD2|BE(5}d#= zt(TL@sNi&&%}t%)9VOXTjhpAqdk8qv0wdL2I4Qo)FbY{F19h%q;$}rpj=UEOMchPS zB^V$^hZ~NtVhel~IQUkp1Q)_Ll+9G5cw`2~BvVM1wsfYXkVONo`Yx?1#nTfwI)I0zsuFG!uo{99StRwyQ7V`3aMl!JNpD=Yme*o5q6 zExstvNV1whYZ8CY%|o(ksDxiNb`By(3QM8~Pz=&m!Ca*_hDi<_tkS%eTbV{eB)@MG zvp8TmZdI&CKIh^MBVDp%L*ue6EwdJ{os1Klu$-(h_PBZoW{0jovi+LWZfM|s<&1Hm zeXtKys#gx>DZ!bjX;@lD#SjyroW~ZyR2jG6z(~fEG-xg^(K3lg{6=38)V3UIwOtqM zq2@8<@N`!83pmW69vWTTWVa(u^>0o)EEtD-9mP z#!k02pC?4ggTxaAjas72lXGm%`{GjmfQKW=?vRSjTFtrlqEve&EfRWAxhAfWjYJZL zWN8=IENW;Op|f<^WVlntcb7PCWN9~5NzT${W!r}ARuimkoI8if&#hI&~CI-TVRUMqEYCp2}6w=;@DLR?|D;FTUaVD zr>5+BP94BjD=!n5w>PWm+SLWtFU){qto}v0!5%ZoZe&mOQk(^xI}Hn>)z`9WE6r0} zC~zQ<3hKSjIt56+ClTVXDX6U$D0+DAL!eEX^k}kE=P_J;Sm_I!V1-vX>MT=?w71eq zWofr3&VU=RwRhWEo`n~RWTsb9whYULhV71d*B0BUskA(GiIB)wHi5-ylRKx_V{N4w zWTu$()x4}0jD+d%Wnv>w67}z0ChKL zz))cqC2sHNN9kL){1;C9aan@Rkl7fu8z~K#AsI@$q-Lgado9LmXH6a?8qr+LF5nxs zv%ku=W+hNgl;`Rv0us($NPsw>zp1+1mr+;{a1W;uEu_eGDgO%K|IQ?TEqDEycD49$wk6=8G!#Z~i+h>(BsSse*i4W9P)X2_M zg#}AztF#n|V5N&|AYmba;yV<74GNp0Hd zE?UJY8s<>^l$e-gEIABSOr;;Cme4{pstH&ESsmesn=EaoCg`?B63T9l&*Hx}j79fz zn zQVoZ)Z`sx_@)ER@LI_Vsgp7Fj7Ex&{xswvC061eXEnSwDC#UhO>q)^5FbrVW4?j;K zj-|Aa=gRBx+j-i>Sp1t4NxD$ZK3b_`!oVTq0sb^Fh@1q3|6(AL%@_IXuD>p8`rKtR zmIXEs;b-LWchSyqfVVXUfA!%fguCGkY-JMaC%J?(u_-OM2zaVDMt}p5Yz-6 zaB5^=>_xnh09u>XOqw5RMB>tVtAwzG5HrM-9k`XC6cONs)*@Pz^K;yQa=*<(q3WxfH1;o!S!dgSm99HC6EPlcLubR_^LIG$Pf|jf|G~KDS zUpfb8nv9$*?Y?Gg5Dz2aytw~ZXm!+Vo;4LEaPFkgp|&X)S>bb$Xx|_tY&j1*W3-Iu zkBD5Gi_47VNHC9qO||rH!WC*zzwuc#y_OpR-4NzId_NsSsH#GMHsM)a{VGdm)4T_< zG4U2OOIuN3DM@Pk1TF^4U;Yj~6#!*I2Q@a~?p@CAakD*#6k6n*0&4J!?1i<|DeMbb zOTT+~IiyDxReXiFZ)kyp$*P|*9F8bCn<%{&I~&;_XG*1L;0Pd><3t2jdLHce;>#o> zl#3-87=~|bmNF;nGWeL8rM-|qBXPUhu*HiX+eu$G@u-3N>{Ao$X^_9Zq1YfnC`3?o z7Xp=Y2~o@KpOWYbb>fPjaGI4Z?F!}6K};uFiGeb1thiNiunF0WB=$63fCsUr$i(~r zt!kDkr|v3gvIdPb!SXHbu^MnPI2Yric3s`VhZZuM?w2s8b&&}2<;7c;cA4GAQ9?+c za+jgqQ`;oRJ7CB9l?6Hu(zT8<3hWuTa?7tWaC-(-*+%{muc0utxFPDC?{ms(K}*hU zp=Ae9)@(Qrz&dChk$HsU4g`9{s>zOIZAfz^qc;4wEKBWB968emDTAa5(9sJqD~NgR zYcthh!jT{74|l0@*`B4fX^tUG9o{V&q|{Mfn!wIvpO6*ZkW1vaCHps5-a6(xp!nLd zfLj(YVG`U1iAlu)`0(7OhvdhiTqc5B{$HP;GUQVKs#JbT=AwM-p6?rre%}1;dGB4l zZpVrr|Kqxv*gqZm$Nqor{?W7F`^Mhao@Rc@8^89*GtrvQe^lZt{rUK{RX_jq!><2T zf60@-_@5Wt`UijOkw0E@)z>#<9CB|=zr?fYrsAEO-?*!B%i5xaTRXGg-+ILV{_D$* z{_%~fg+JQYQoQ%TZ*v(5@F{R|DR5!0`b7XgqI5{X?jKf@S!>9ra(syL&OFFYrH%HkYAJ z70M#`UyJW^HJ9s`crF0UT8z!W=TFhcLX77z)aAckzzLvkAL{-b|9^`*@8JIr(Z^!c z9S_*MP`?KCeE9xLw5dj}hbsys-lJYzx9!AL3{qe=4i)xI@aLSx4zXLVbVl7UZiRsx zjLk@l!ubIzAWfW8fnh@o2cz$I8U8!*eU7vGE)L;rjg&*Ws>~cW$(a6)^nquf>O6Sa z+t6zg3!`Y8Fcij}s4NB#xo!aUoh1R?*_M4Vnn((^;mcvK z+`{;p*1Jxi`fVdmOjRF_+^L8bVf=_4OMEfdqzps3E`ZyVg$Pod_~e%L`gu2M)BvC&}E)Sw|V?+~y5fvO`U6RShl zoX=n$F2ItgFdI9$TMwGwSR{nb#0e@yM-7o|?{LlVrk6v0r8!Lp&){ynMCPh_!V)Tb z&e@P3M%C-=Pla{~`a7*!28OB1S`MwMY1mlDPMmDpd0RHy?N zHO50u^HE_)C#r%IkXL~!L+I^Xx$!|Xz0^j6f?J91?fApz*!f6Vlo+kmDhPfLRn9Td z(ifu(NcaR9nM%Al_Mo3qp$-H4} zOBSs{^-I~E%}JzjXJvnZ*B-vM5z&Q$R2JA>*zK76SpX&G?r~<21XU=V?NpQ+Wi*5K z7+6bT+3dO$6|$MMin}C>Sh>Z;}vO8voqwpiau(6G+X4ivI{v@+W zVv|Zt5@|QF5tReT!vd(;wHZ~Bq^Ak(AH-j>n2lOBpuzh|FREXcNCQr`NtGgNsO~i# zIDXJI7Mdrr2{2s)`BPz~08ev4e~cMz#^9LHvDx*gs;UH+8uQr_4{SwM1a_ZG)ojeG z*>xinafF~JHmI=%Lygf!;6I}pqRanYH3jn{R2~*7J6IS8nTL;&p0*lFr9lZ?mG#2L zxFezOMw6?CHsOX#@kqtRQBYT*s)W~4)G7szk;(P0B2=xH1t+Q6Sx+58eFhC>gRZ!;VaT17KX>8eg#SSwDf|-{PjB?;t{Q99q!{^Gs}m#E-ABs zWm=y;3xRAoLEiiNYDx>PyWz$;(~G88R?mWgS$+VDh5#`)i8X-LY%eCcRA$5Y^3Fq4LGVu+`-%Jfp25%a>o-EaK*O`jXo=-D(lMK$KzGGQ_|U&Z(-<2J?-*U~#ifmUe$}JWfJ>L=->J@vY{T`mB0{ zw)v{@i?HI{&!Rcj{c_xaMY-oB*oa0P9{fvk&uuV7$KboiEbR%6hA(HKEz2=3_9rFu zHYqXaRTfK3Snx{$y5OSp+07w%gYKfPlGO!Ja<%*B`(i&bC47r1`Xf`KgM^}mET6F^E zl%EQ^!dZ`NV3t>5YRy-`v`FU;;a)7IQ;D{FRVl$WaxSdp^goE3iLWX^?D0JONDVBg zxHVT7CAP0z{Bi~k!r~Iw05d0L0C_ncJU7T>33n=0)B35yxQF(TC?*V5UHFheD0Svr zk-AsVlTfjh_+aABQsIH!C>y0FzkaMp2aXA6K}9*Zo&s@BaU!=X_mZl;saosxm{ftn<-3?e-coRg)c z*w*5EB4{e-G097ID9T!*Z6EW^*Dsp~|@5_miCH${~@wvrBToD+qG#3vzQSViq? zaG;r_CLh1+Ob{`2PL!K&X^9oUrpx$ky4YV_seXiT2zE3t+TaJw9+)>DzS;=5f$JLS z#bFpln^rI+rT_s5KN@%_OWFfVq9_TIrQHoj00h3+%olf4B6He>XLFW<{v)9#yk=9H zM10E@2PN&tT9t4JS(S{8D>=&>7%0bO3M8z=Z=eFRE}DRZ7yaKj{5|Z%1;W1s1al5ve|P`4Iy^_&%4Q<7_{Iry zZ)#aZLG>)()bh%yD66b3^-Z1SD-`I308|hv!nYdyDJ`fd0Wf@4^GkI>A^R>YEh@Yn zrIqF71+}PESzb520w2?-m({YkB7{LefxuG*97(Lln%e3DbS@QY%PQ*Fuwq70b*-KkYzQsWrcXj&kFd{*bmi}Gx0nFZz_GE$~rD? zsJgNW-|Ns>Q9)s;uc*8RVEMPK*jH3hSdP(#@PM^OF9lWnawp){@B=6T{+!XTvrady0g|-QdwI$ zc1%fi0qCTpy0WgyS6VQmtfFM>n9{P6(m7StWtG)swX=N0<{(5`1;ixk@~wqoOac9% zx3Oa|#IlM|(VbRsC<`jEaAg&hb+!1LK)?I~(jc|se~>k6ujAwO{F5W!r|_|;L;wKg zGYY^RD5><7)%eO#AVf8-5}n>&G>iXh#*VqYti0S;UNE%?e~Su2GBG^ND8kp`T3>nD z?HFcx87LXg6-A(XexRX*w@PFyX;Hsp-_1d3IR_@ zc+i4aMb;`zuLSYnPg!wUQH`&npti0W)K*c6wiT6gW@1f?=G0csfoLeNEb&!<9Pnp4 zh6WM_FIQG!vSkoBe5eG~s87g@Sw4_dWp$_s%*AEIf2;`pGW>V!n5t@UQ4M7PNM}05 zPE~bfVNs}#^iWk-T~g!&t?@6GW9%6It&!(Bl@)-^?`m}Nt{er$MUW4Wi+C&n;jG+-rWRl= zYar#O7mOXFK5O6xMsYC+!OAlXRcx_~N>vb&wLnNs5kS_Ig4JtE>uN)lGb?;GkR>1{ zmRA+jmI3=URlrSgS)mX1K9t^3UUX++k>HmlpezU_Jj^Vpt`I`SGZv_14rW3z#IKOr zg>#B4>o7FP6$}$)(vejOU=dIOP}LAZC3t`k#&qY9Eyj+4oP_kjdVyBZS;$vg%54Hw zXOZlDd?3y7lN5(nl|F*NJWB9TRs!xrVKt;VhERz=LLB(GLyCkg>aZ)7R1{%#>#9Vm z*HuBjV3Vn(D|zYJ4*as;#XIPu!pQMjq5g zg)bO>iEpON3V%TbGfP31zL{mUkdQ+4zB{p8v%u+drdL+5^sb`nO3-e(+J;>pCtv8A ze%Cq|Zk1iQc6AL5xLg~pclp-mmwl|n%L^yGc%ke0^Iw~|Q7eCKq8MACpHgQ|u=Bu; zk7w9WWetv0_4BgEjveE-09O^kQ$ic(`r74RpY1y8aRqQmamaPv#0#{f%UoCEl3*ol z^sqX+@QVyC{DO!pA7!p5@0Vxz4shJ?jgU`#;0Hfp&Bn!H{vR)tdEt^qwPORe$3OX4 z=W&%G%eL!x9#<{&k+c3g_bh4k;k{@wR`kITz}o#kIv3!=#J?)ePN zhXdkVG48~F_qnR>%c72k!r6Smxns_*Y~sNAm+#8%$ZAp*pML=5Rd`>I&+CTPyD$IR z9M!J&-|^Xj_s`?=`$Owx=V#sD+{~IU0iCi2{4(Ub2M9N{yFG@!>_iY4~g(TF*Q6+MJ-& zJ4^z-Ptl}n&j|HyxIyYoq5m2=#8fN$O4E-<8(*IG==n!1L5=r({dXtz6P| zsK+Yr4y}jr<*M;5X6>I?@Qw_x$JhV=zyI%IpeFoLT9@0u5;N?%&vk*z=rr8^p5lKU z<7#{Jr#~^DzW=As;7`j~{uC)Z9k-+fJMQkp$41JwyF1s-oB;^lNUh)Bwx_k}S=Y*^ z?{DkSzjF~@hkLZ(n~@uS_j>?gd9Q9RaiK4IF%9euf8>6VFpT|2_1|Cg96D+1Xnp6| zU*I9!pQNvO5ARSJ8Q5Jtl^B?G7~bN&``$U5Juc&O^QB36z}0@4t^fF z(;c~$o%UXW{&G9@HT;2HyWf52*EotUzh-s$R`5-$Q%zqp5jEu-=CI~dfOB45f>&*C z>T6zQY0uA|!f;#CG4G77kl#&VVbuCl@ZD#m`UiG}Kk|e}anc%wtZ*gcUKi|$-83*T z5Fh`u#4%CciC@-k>oB&p6g*3ev*>pyGCIS(?%cPQ>XBr0cpP5_cICdc@k9=M`it`+dygw1|vGXvDhIMNN53#H9Wu4h_m5a0Sc07GQ z@Rh<30mS+}e?V`skIoDX*sJma3*KY_+PGC47e0F0Wn3Hq@e4Qd zTl!?rl{SEuO$qOMW~J@JS@RkK|KP6_GKLg4t8QZlh;8c~(a)|nSWULZ{)D&YdQRNtpO4bJMy(4g zVj&xYp;|7Dl>0LxA-}I@I_d*w;5Z9kpmI-7-~SxrLS0YqzIAoR`yv7|BR8xB&w(~v zRX{b_n>_R~N6=}PUi1@GiColzx$$UWr2CD!zYgpPf0SZ$Me6>_@_;Ir z!k@aZf^7pW5To!o0r;b;RklYZN;stWEqATaJaY5GVzhKP2e0GP(`{Dx=!< zEGLIid8Fg{YR0d0uG_c<(ytSO$-;lIBfP@zZr7jc=oESZTHVI3zWw2o?J@(sc(Z{i z#Qe|?$e-t0|8H;;Wc@l>oduDX{Od6M@Idm?$0BR|PvY5}?VoKCiYS*{0rb=}?Iad= zjlUgLfIKgm5S-@0yA%|!;a60{<4Qh4O#J{T$?Y;W>){{>4g=r#5lZy6SMuAI1%vTv zfryBp0RWd7awS=?ZGao$XpedvWF&3lf08v0hTqlAX`{j?^rgSXD-Q0@WTfPmq+0g} z;mzkod)*jt9!e>TbBq+TSbIT+zrtURF0$i&<4eBLAO2)C<{tuT*i*P?6pAy=(2WD; zi~(cotPce8N0ABIp*wf1K8D!X!OJcc%l!;J zPcc)^$46=8yZ)5`++et;J$4bB8?lCUyU&CVYq_7U=#wEHh@MEk1!K_HrlJ#VXZXF* z#(~I$?p_c@wx)mQA(R4ie(nPQ6n*VI_y(qGOH-v&2vgtCc`MIttrNmq(*P<{55Is; zBXg3%T}j=&_Uo2+jQ#8}d?-2GpWNz;(|5EtDZDi~98EIzt9LCQv!1pUMYo`5eeD?Z zCjEzx1F+FE88}AIrQ|FWxQuelIOIB$u!v^Jn?%a^qz?;;*Tw>Wp0PdJFLPb`xYiY! z5PoNLcW>-FB3>34yOc--XVrsW=O z+G*ag>Xz^N>-l!|_we^cvRUs&^AW!Ny@^R<((z37d=!X28mIBZM;Rt$U} zzHynBjYnyJJ2-glg8+$E^YNyOi^~DamwY)^Sl`TLZX*gw^x^5iiEuP08cS;1bNpBO zns2JsgsZPlS$X0DeeFyZJ>!?ITClrxXu*M(@t!Q25qVyKYu&wR>#Y3+74-F`1Jd>~ zv<&LkUJM8bz$PyUQ-7$0a1(@3f9Wi&i zXEYwd@96F2qqT5HQtsxZ`)ouL>F0{|=Eg`^aD&T8(;PHPfD?fZeWU4^bOC*rw~Ph zkqHuUThvO(tDtXd+<;Q4?gig8t2E;%23$E1Bn^1GKQK!NjL$$xIjC)H2kEC72YS;R za{uxV7i_{xxEiQ^Knl+;Psh^c?r6D6-;iF>5I!}~dN4BEpVD3)P7;k6jN#O3J!qUF z8|fP|{cGL?*3$I054ke6V5^s8Ho=cUfNrCE_u*)7vT>8qWzHU-9NdGsawrYqy!o!j ztBjuD=SH5t9hen)psy$IK|gB`J(U!3`?Z4;cjWGB9&gjX`rgzJzO(>=`}IwE^K<+D zp)-=_4{y~Vj6JPCXxl@%GN89TL3$*!t5NCezbp8}*iy_DYu!etzP=(Uyv?m|2$iRs z^D)N-<>~s%+d=$h`IvXQ54Bee1ok%=#iw)oTDx&Rxd8z64Zyg*;f?6K-t)VO`B*YK z16iOacW_Vel?KBb+|yu`CN&sUZXhLP8=URitIi8{bPm!lYk)eBjFgqyUTICbyHl_& zl-FR4>3*-ln3@#qfNK9$z;EaZtp+K!hgP50UcP!X#6fOn>tP-`6j^A>i$4X>*+ph?4Ecc z-0y=b;f7Fo;!jY#FtYmOTK{}$6NqX(ff$C6-`#s9FbTm&snrtR47uVXZjDsG{zNz1 zg`kcs@YkbqI-X1MnTAh)xQ8l|2aoCa^kQFzSi6o5Kqck=eC|PJ`bK?yVG@M+`od&0 zFNLa|(bxTGTEkm$%Wl=y*SA5pphLIr4r)&z9E2fdv943xgir6yj@)ZY=cf!Fl) zcO~oVrzYtez5-76n(hmrR~#@t>;5?6`60)zub=JrPK;?gu%zu1u*8_cr=&w588XH! zA(DTT)IL*-eV>~}T)twT44>rchA{8Emal+XTQAqw=O;xEd9^4;y8vIb=%EyCJ1XU= z0@5xw|241ZYi=jEzWhobWmz708UtQnhIXGHD}f5quOcbNq%QgYj0hCpoY!_ZU_xb%_T8`t`uBz&3u19!d`I zPywYSl8u5qvq;Oudg!ZXvN0F~Yhk*d);FYK|A(MKiN5~MWP)vEdOkYzMtJJU1GE%<16J2K+V^I7YZ7#c1KmB^F1&Nc=HUdsjz9o19Td#v zpAF!9K;v+;WLaB^U8?r}`lyW~P+hw)nAVBifWyqz_N|OTG$>5P@b1u|m2_ zid~N3VZG25HV}+&4~QI3z{X^bZ8x#;8Vf*(e)7hWR8}@(f|1wkQlP+3%n(KSoNeSQ zc*+w|N7SU?+!2U^wSkx`!GeOEl-N_~ooa;f7RHrg>=&xQnFMqYxiNfbG%%RLnaBFD zc+lMrjmCJ0{J@S#5<2h_{jn9GIpYmuGhYLdZ$w&Mf;%?cF7#;Z4!i9mD z1B}tc(y$KlZR3l0QU?y44={sR7=2p$T5bzz`9o3)7zrxvXi|!C%%+tEOU4+V0wW6o zuN%iAmjV-j5CWa-1$pMhl1|EIoQBbQW3L0Og100NkM|#-gX0{2HyCFDnt8z&$0pYT z=3bz{3l8=QC0O(wxfrD(&Ou-MJv7IAim-Yh(z`9>pX>@BNyaRRKB~l}_)NoR9zH$z z4B<1~IA+gJc=b_^2ehfLd4`;@8C)uKiI%9Hs;@0l9GHSinfg=cM3H8cD$;=tkchK0aZ@2{F{nPIE%{;GgZyJdcO~~Er zs~}d>+OfoVOg46#?u(5heFs3d(C#Se^EIIvVgvHIy+&K|O-w5lfIP-u@SYP58Arj6 z_>vxbwLek5+O$GAfxUuCuhb_={DI_T6Vu*^Xacf~w-APy$uQ7V%C{xU6~5L1bHtZ% zKrm(qCu2BixySYJwS2h)ct{Bx3+z@XE63P~G#^uxA6>w5O zFqtUx2-ai&A|rHaV+yQEZh$#70t_Z1d})%Io`7&1Y=Cg%D8aTDC*eck{C5iH+3lcx z8|UMVUf_Jg-tJxw$jli}{HLNTx3r#-3=LAPK+2NKpl_ppyb!KLC84p{9ep5vteVjs z`<{qk@H;CBkqU*U35BP|eoKZE{91GccuK@#R@UMFd6C~jV#KJv=Gf=LTOKkT{!--!1Ki6y+C;TjV~zQwnCZ`UjJmk4RoRK z5E(TT=!_J(sIowr;Ux66Z=n@NOogmov2+jn%|ux#KB)xe;gcF5smbT)4@#EbNPZSs zeh2w^zi~wEx{9B@`r1(_#!xL@#>U$TP+m+NLx^Nse0(KGVKHVZ7;`Fk_%7-^W@bwJ z1iVSX=sltx1zs~^#%F;j6`(dMKoPfpB1*I!rsruO2OIUQWPJn9yLTihE%*SC>Vf_f zSDBJwRD{N~-9bdkl8G`Z$}UV48wuwcE5i~y_7Tt*_tzy4apTt4tRl@A3Hj7JU*Xe;LgniSmr zjRYLnk7L9xp@nGok%>o0eLy3C97j9wYpeyD3II?Tdu*w~0RmWhY$3ZM=UB5vp)d9e zHl+X?a&(L3qqeat_6yahR8A#oebQphXauzLJiF>68bZtv3}Vmt@8r(=yni-JUT=Df>G`McjBy3Fm|OzP3T2!XJ}|3H%qk;cRvANQRs5kEid-yP(+QvSEE$Ix0fbWC z)cy=eoQwIAKQjq~)gWzkY&={CJ}ecS{NP zGef^0w=WLk_cw#>9l)=w%|JcY3;Q2#IZ>2>4hCxdeldE4x1@K*@r7k`!}zgB|6WJ* zP!jHk?!qh*`lpNl0C!}JkrJ8aHcH)*X(>i2o;^mXCo;`zlzJo6QjOBo$h0)0G%YeM z-6&0uO!FC~zQ{DcQR4J@yu}^u(Sx0hog9?W8SNb#+~3$i_;=rHY>poG26yo? zIW9jHzCu9oonZIbz}J1iT|KUL@NELfKsEsG#83R5$F5FeZ}=16s?NQC?D);gYthH5 zy+oh*% zW>an3Mt<~7)Q-W9;vG+oZkztxt_k{c$0jr$V|R_a1j&2*-Uk4hL%bULYb;1nU_6On z=B5aoG{8y!QaI@xE#Ra#7I+n$)Io5(faCT9jQdN#C{#5Tq!9vuxf>rz9|R>$M&kn* ze>m#<5=f|k_Ws&b_^a0`&dbT?hLTiHG$<= ziEPN49B@#Y(FHte`g12WEHmfp75p8Gzzp@=nbG=l`$l6Aqx^D@Ujf7(H_k{C51M$i z{b=MLcMO2ISzArf?ki~b6}Dp=3@w|B(}?>xE|seHlr9DB3249=X9ow&S#(25)3%M<$D^_VFc^xy`sWae zFO#DFEGt9<6m%`}XJNmL@AlI|Z?y1v`yS|rVi;A6v13Bx4z{rvb9dhd+K!0FAB-A1 zAynK(e{i?)8mw8*^<0LPyKH#ngfWIYzGTQDJ`K9k&ZO5n+ zY0eM#e=x1wy5;A3li|I^oNxRq(#e=PxgpdE~)`-9Ya-PAgQyTBbh z^w6=&gPV-!c3q%9ckqJ7g9#Yw?)#9l(`NhKxv!zi)?bt9z=uK*;VmIt8^(gs#%Lm4 z82x?k7~MuxJ8m4*f4%=}(ZgR0ZVw)8+{5uVZs+Llz8CZ2*S>e>+@tLX?&{=zK8llA zwTHuvoq#Hf{T=s9yd3SBcmR$$*xS`X)A6st_#+}d}QoHigRB^ic z@Tm{nma%RIKcF*&w`Ak`<=*)HOR!@`%?qh`7ygJQs1;D_R^l7fI zL~=TwZ9-9}!ZNisa1s}+)9wuH6>TNFrCw=-K&#q+Ga*;3k_^+6%nQ*ceu$GJe7h+4+cZ1_v($T1!#&>I9^9?0 z{xQe0G$k^}6RGq@N>VYkd}E)p|2NjTi2CqWueP_bPN_TF#x{N~vbnplPN_S#Mx*U+ ztW)YvTqW8SwKbpIPnv(vzA6*TskNyaef0*(##T`)+jpz$H`_rGxx$hZBB+$-I>pyyj=H(l1VN}iBG{ONog!e=lkRmPeQ4uvBalJy$Pk> z#uC3OO-(3GHI8cgIlb5-Y}{rDL*ao0JdO$UJoCmFmzFs6-m&q!Za$D6INnG_Mr4ND zEKbv+yd(TRmvKf)N3x;6$k%jPB4I4^k53Zfor^-Ph)BZ@x@l@5P;EqsTwh*bG_4rO%B*pF9{n ztV70Z<{ZzeN=6>{nom*wh^raKAKXJ8FUP{ohZwF0Mcik)zpCBCgV>ZvQR%okSRG*b zpP)Z62L>EaZ#mq8+Qx%zF!3qI_HYN4jJ(`!`f6Uho5hDBb+i@SCjwG!P_Rf5rKyoR z(E%ex)Jf7Kb)v~difHfhN9uU4@&M<8hW!GzCbS0Lg%s3C|GUm%u><%qA0i5b&ah-=mg^6`D-hOr;SBhcrqJA36jY z_8D~^eB9MCmjNUcrHlvJ#E%a`H$#^difK_w<2^ZS*;tfKV3??akxdxh@gT6XE-0IO8}G?e z&8Mj5sjB%DHcuN5iu}^%X^r=URP%h*JY6-I`u~?{pdd*@;4NzN{!@u zQJC5II_C^f>5-YddrE8Ul-c7}Ff!ApMdcWX*BO2FxK7yt-5#2svClf#N3G4wOWMd!j3iq-3C+IS((GSlDTXR9Kd{bU>1eDDfIF4O zY0U+#(=d-XDg248hUmiYvBDso{y40>-O%f!G90DXcd8EGu{!jlLpeccZx8LzcMcsU zb_ZL;Hk_mO1z!)oZOw7#NOR0Ym%?}2usLS@SG(*E;@l!S_K?HNhuXn}g8{Ccx=B(v z08AN=drNZ}bx0~RzTAF&HDkgilVXn;ec_($@S%PKLo`DfDe8!THL?9e8b_1R8kY{T zH%#LBS&9DPb_Tu+zHaOa?l*8r?ctu{2I;ts?I0bTX*w^n*5|k&Ya8Ux`y8)!d{tDA zgx%af!(Ay5gK)}v6!vMzR$uZ0jIhX!E1Xor?QfbHdCb+=#dXFa^b1CCPI$xU(mumU z{FC78BHe;-<8}9>RNfPyFa| zoI}$voBzhq#nJyLTdL9{`Dw%{#+9}z%HdOXtm@|YWA7#27l16N*1PrXMiR|j)^`tP zg))7IG0rG(C)mI6-W_r2+im-yeD}hKQs05Xb?Y{Upd=>L-{_k0RHD80T>aZq_dy~< z-{;td_{-Y|uuT--vEIF^qIKS~=L6S#x&?4sNsjT+Xuyq<#*p3n@Zqud!gV5 zhg*O~1XT<5c&Y&WbPv4Su#TUxPXN>!Pl79_=(*~=lY`OmqA(MiK{~X)^6;soC8NS8 z-AncGmK;k>Q2x;?P-#1SXWrAy6_=a_$7kqm^taJB+=jd00po;`=QkgBx4nW_?oBBe zcFWjsOxwhxWA}%+;?nvsANX=XlT6)*O8&?<-KObUiNoUS(U`X(_<7)nIsXjYmdb8tc7U+m1_FTra`%4tR>V{b2cYESpCU@5Z2jyfjLc7T!VL!TTz|u{E6OPcl>Y zM!x0Nx}u+WP0xfY-7n{Z^3Z*XaRPl+b$^k3HQODgFo7crJV#*j*4K}Ns~}AIIeUfD zc#>G+*7in^c&|+TBO!FZ3m2e6Wb*TApL1V;k(lWh!rP%Ag{jFJJOyIOZSbgUDdOO~ zhF5Q!LZJoJYuj_X^x`giLXkW_gc_AX(j?q}u4O$;h_gZcY>dH!0D%_V6lKczwNn#& zj7)#`q4QxE<~3%Q>O$+!-DYexj_SonfGYSFW%{pN0Bj$Cp*$OI0UkO!x`4t1=f6Qm zo6Sa+_By=ji;wc+?w#cBkIhFlxvk*r&fkg)asbcLj^^SF{J&}U_;55HpZF0TCxh;S zdoaWAZ3eNyY(k5;y+44g%nG_~4ZKWRGCY3xZo}x;G8QhpFA7n;Yl49CvdsBkn5l0= zICHLdxy^`B%ub=0fxz3{1IagoKuK3$nCW{X&2IBMQe%hI*b_L`eKL7GR*-v%z9EN% zgk|dlX)QNi#o15W3?HY%<54@3XL98xc7X`bL)AhwsRG_I+uk&$wA_Z!1UN0dYI@!v zj*OE)yqinXeV7Z1dORt4I802$4+_dA-GGi`Rlo*dWoWw)b~v@ufq~Y*E1PzIf<_*I zKpe;ZVTw7uPja>jBj(os<8bt>$2{VB$dQg|+6R{=o@oRq-zI7i$Bpv!_&Dz}q z=1dh#cS%EdsBOlzU@dB?OTqM2TL?&51-f>BV!B_(R~{x)dtbu{z50gd1vUUdRD;V) z={--=QG=1qm!bE#Bmo}EQnNJlfpCSGyV`tgB@^gBY&>|y884@p2CLkiGh~O zlgroO=&>f#EY;}v-qmyi_C)J#>${PbH5u)pi(F=f2IatP8c3|Ful@m0VH`8IW1s*H z>{LHPG5X*)juvPdMz0!Rq~t18G(Us!c#R&T&p4)i z()M}e*Mhf}uj%X4Fq}yFGZ~21XfSH0yK(7+n5mX$GFsmQ9%U^d>=3>BT^S^5!vQov zy^D90d@tXHaL}Q(BIfKVoI{$KIkmU6A>6OE%*Wq>mixJAFG(}yglm@PzGLi+e&{to zWnJ(JJ^^wI>@+^rwgsZbEynGq!<&=BFc%+g`KrDtsR415zXMH>Js!TLCt2tso>Eu zO981wd%W$_DBcmThPo2dCXQi->vonH1}%vCdR{AByM>8 zy-CIq+%{r(#@6$jJjAEOT~^x?jQ z^*ClORqKH|SZQNB)*~7?)BS;V%v_ulJ_8!1XB;ugjUu;CU(4T#Lcf=UdoCo+b|tav z$^paehiw4$fJ}4tH4H7{;PbFGmEtoc&C%$b2JV>+lw{F-CgfKKeiW{}#B#3n+WFnVK~v2KbE+Ac>8P-ss| z`&4dTZnN~laK~u9G|C9ZU6VmRv0nH~0v|bk3HUeqFrwH`08b!5dZCrxwwJ!nI5vU| zb9XIWWt@zD0$sWtE2#ku#*Xmj3&YXTdfD#iNgM7z6YlG=D>$@QW51-j1jSk6(I~hR zV$y&TM0tg(lHnC2)9HL!j!m)m_=$s+wV%wKv2g;Hv{H47`Pnz&NhI3^JGui&psa34x;$d4~Y&wpU(cwiG?I<3*lpau4VwujX#o zr$)p59=&Aqi}2GxeB`LR^{Ja3$C$JA4=ypM#ruB+{UaXnBwTCI|EJP_IF>ZH`!}ub z51vc+Bia|~XVQWrh&0VC#+~>L;6lo811T&u_d9)v%Mvp--ae;7rxetqtY*!H=;%85qC{e5Ulg zIv+8=xE92h%#By00+g5&kWbkt2#HFHhLUTiyBEso3Y=SK`%{B&;&nMgJkpHLUOKWk z=k>*mHuKD9@&7$JGp6Ozy$Q0UEPO2kNR3*Pe5o}xSufzay9S|kFZMU z=^&Nt{D`~Fhtq@pv(4RyRQ1il4g~}98eQjOws}7o{64Vl1&q-3)qUcPJw*-`dAa+V zyi0G(-PU}wGhclJI@Pu}+ybrc@$(zdVHyM}T}~DwkbL3OfzH@*a*w^9!B=|!12Gkt zFp!=DiBW2L?lg|~y$R=AV{^mqllrDTx!sSA(~dS6T8zOw!GYLc$#_^W6Y(Ppq~)^U z=cXGzrts=Tk9fBXpPA6Nh;L{<_~tXy!+g=JGw^R5qpqS!xt%SyM7%Iu^uirCwP{>K zmj<%irUgJ?z5fT(qL*&dg(%iscJbC1F@XVq==~GMTpl>Cuc@&H6x`Ey9I8}Wb1jFb zy&2qtQS}{1H6Iw9W1>`EY^LAY>s9s|Ayqeqk=_uVa;EiYWDIto)TW+>E`*J;$8rpW zrfKwZ3u8Ohz#I9fkPUL;!e*K|6*zRJ_IeQM06PpVg)I*^ zgdcOAY5h1d8ZC14f7>o*^&PxBlaYw47JSU~-yH8gqDFEYnmO^%|;B|e?3)m+bj8>}Vy#Gt@U5ioV$Nm?JK{dYM=ZFLCK)1^xo>jTK^^&8xJM^i$ zfwA14)*j-qK}%m8TZZb8qnrK{Yp$>TCcYuq{!x6W^`rf&YU7=dFg4fJ3qRa$vx16csqwaGcBvzL_bXW z6M=#idHB!J`U9s-oUf=lflu(ChZh2-Ff*VYLRy-Dh);J<%2&95wCigZ0S7oLvYx)? zUqOdFv3&(cK9)oekIvl%;MvV%)u8QzmIavF#tI~|Kn!q?roX%kp!4*X)k_NRqZ3e) zqrZ$^)$gm)2l>0^4y-pQbo$q-cVy5as8)r+IKyY#|c8!6r4W2=|!+9(^| z$x(XYW^kR%0b45!rPfIC=;^^}o{q=*T85}#wHbEgrAox9<9i0Dj!(aV)7lg8fR@S+ zQ+8pPctI;F-3V+~WGbKRE5%eeXS*}XB^jg0(bqD{9(DX?I;&>D|3Mt$k`)SYP`?Lj zC{_R)0)-h5jj}M%@b>q-cGwySMIaN@{3C#B`zHe|ByOI*`ae)EVP@8`Rd%e{dXy44 zWq9wi)=l6hd~rel;6}qR=TxwV7o_9?wZ-jULeRmE21D#qTs6B~pyLVAX5>`0ikbqlN%ADZqxC zdn954cj)USDw|(RrLgooGqfwka{W<$K#0+f?;p1PxZF>XOMjVi<5i$76W^+$y`!~P zb9qZZ2b4SYC+-Eohfi3h<(xItLgBC3a_hL+ZU0e~9fb#=I2!rt@%_&Lz~t{|BSO3{oPX znFUaF*XPrYoPi(^+L7JcBFo&`KCvU;a%JjZJF**gYkFzLG>q?Ge_T|oIER%Gr?siH4&s;( z8S&57i~B4?a*yyLk*BQV`f8>w!I;FW4(dFNz>?7>C6e<)F@x_$-T@q6*e$H2v1Bt{ zHx&4{_2Rb~QVE-IkFgt3?b(RB{-XPX^N$+4jbu~>g(TLIoC^rp_|R<9&hIypjia!T zX!~=wD&7izFdC0fM8Qy#fqK}DKObZ_27<~#HKkbJDsmfUPuhbQ8Z66m?umI28Gz7n z5|BCH4FwMRg`%Q?M3b^jMSfCI7sw;Qq-@i}e%?Xg3K{f*bO-m~I-?601m^#6t%Ml2 zE0NeTSx)W8r#%?fODvZv;ES{~Hv`e%^HxSM>R5}9XX?Cm*c(cThW$yy-(+_>L zxyDPgSLd+vfn`57HY3agTN&)L_547d5`37qBd>~i`x&$4TgfkS2kkx-J~fux0rzV- z$$!_s0M(k2+k=f|AH^0r8_(E6zlWi=4YXd+wMKx+_W7o4ov?h)M;$%1AL5q~q8}ug zFG<=A?X$p9aFtjh!42?5SR?Rcu50{vqB0)23vhsVboX>2DXeTCOE4&GpzK~>^L%^* zeNsxIvC+BPfkYoSP>$BwK&1iBJN)Dxg^e^DyQq=pR~u<2jy~K=*(3H+0P(9mG$UaT za4N972yqu$F+j|6Fffxcv|54TmBhHR@#-m^yZ2I!O9 z>Z58~MVJr(VQ0nB0 z2-DgBu(PCLu2dwL8Z!24hP^3I9oe4=jb{d4^zzc0Hw7LNDn7kb@&F*^?pQ0DS@)^N zYsgR74WAvLkK?!xA|?l|=Sv0#dZb1WrA$9mDj_G#)lAvCDry`4_>7=wkJ0 zX4=8OhLN$6V=y0coB!ehQM}@Il)(Ven4Y^+4_^u@Hy=wi z|3L0U-Xg3qp3!AEs-u}V{LWF7F>40wtYc}HOy@KqauD0w6Ip&V?EWRfFh2^re@ip3 z&)6FM_`+yU+N$?Y!>}24XK7(~SObW(NWtHX6Z-m?aY8lu7;sX8WwUNesLj^$JItEipje+5~u8X#7L6L1MmvRB5wQV?1Wc!OcKaCNj8 z;cJQ!{vY<<2fnVV%KOeuZrij(PLK#iqC}f<8kjt|DgEH`*}a_`#f(xpWJiyKKt+5YpuQZ+H0>ZWOoE$#85*D{5p9egOS%!kZ$=B1Z%Pa0$I`-4)r?eOWz$z^p*l|s z^>nQzq6Mj*6s~i$P}hE{@Z)%TXa+GG(OkUd>_J8lv1BcHs2TKj*3m*j^d*zq<$J;W z{RMTWf{yP3GbW=N&gq}o?V_)O&&kKY2i_FFTk!F}Zu+p% zz!?^BT=R3~^`EOzBxQCIU6`Z&*y>U{FZ_3()t)eNX$xUwk|sUa4d>B$#Gq0cqJ=~R znL(6qI+i#~`j4VZVrQB-gH!OKe1FlefoNg%?S=vK!K}-E1O^!TCFbBdR0Sc&=+Q8A z<c605MIIOSx4%59A#T*2BtUonhVHUV*7yTs z@oQOpn{WdXR519HG1cEwlz7|7)-&ndcrTi8sSUY~a&&%F(^&iaI^Pgb`U}NF+v^!h zDT>Q<0M@Wz5?d|g*AN4ci7?LszA1(Kekz_Uv~2%pjDp+@(VrB7>JQL4NwaD%<4 zUwGx`iSuKBXn66;(&exP{KLZXM^(Gp*FA(D8au@HWt(csN!GqC!i-@9@MSC ztZ3>M={I&<`LgW`JD6n803w`6URMhEFUowe)rNm%rS|<9e(m{3T|EacgBssa{hb9W zFp1{u1tg6sg*eEr%w$wkotsrGkk~XTr7*();RNH69Aj}YF)D{(f)HoWcr&OV(z#Y4 zUR;K@QkDxvtF09@Mxlm%f>%x+0bY_vZX1CYbGw6AJTQEkVE8l&UiY=XoUH>$c^vvn zLG0*1;gi3m^ZDOuo=sK0$^)dI%=&8|uUnccKUsjwM4UQ%T|FAv;X>?QK9%@Jh+b*9 zsApE?`H3sTnTIhI>FrEumO$>A})e>!n#IP>-7@L1k2NL(1sJd_+B$NPneY2nP_ zCIeZfD7bQ*&XTFAFk@vR5xMb!e z8t}RF3tme8jl-3dI~bAL-8ue%Z;OA$8%A^dlRfcwYWI0?;q&;=X5^Z+!bYB~|7EQ;i%qKt>zShHAWEiSb|8+UA#rm=Pfrrwl z%usGUSxN>iQcmTGFI$>wtL}qL**gXsc6rHR-T*GX?Re=K>tGW$#SA>*=f07CVN0r7 z16t5?nwRP&QTVwdwcB>=4d=hTFdA!bP5A`>!5uI4J{>Q-zT_biYac1wGwWlqg-@G5 z)8psMiQp%FEK_s6E_r6f#jqA&(tTDZ_q^`MwN&G+$Sx1KSfvgXd8uF93!eR@EC4EH z2;eUS@k;gbNx}3H?8#n)0mlQptN}St?_Edm=J&3{MAn2Qo#Ct-P+C@bYd%qkGUxZ` zCii-4r}(`CzbAQoyv#*w#_wl`Wz9u}$fhOechL5b45dsFR_jkR9QLLk4(cl9f`Z_Rmy;~)3denE0{ zsaY2k4?OMf82`8oH~$)kxI-)~r1^Vl+`x-yDA}5y!T@pzbEiLSi*5hq@G`d3$7g)p zJWCxX#d&eV_AB0lRbs>T_IFMZWN^WW7mDQOiFp&w1oETZ_@H^mjS6jGvlgSe2Ldoy zUb;@xvJ!3Wx4pIR_tsodDC^R9kI&HjIKB4Plzo_2zOUec^Smfc>;a5Qr5f}<7?zC- zo!SdWdD92b5DvVMohjU*eyeX=?Z&}dqWT#onjjc6RA&@g+3_R>rT}oVw`P<7K?)ry z($6&P&(*&Hn{ObI3Kx4Wk!ng#msRXs+JS%+kCja^bNYANVlkZGD zp$$?U-x5WsDdnAqY!-gI`NoyycYgmGlrVoS7=C|-8QIPw!mWjksmj-RP;*?|gJ-LT zooAb#v|u7hhWNy58EmhWXDQD%o+V+ba=A+-P1$z6GWS6OnQMOJI7#oKlWAhB=}Y80 za7)8|B>agL!6%Xj7WI11%KA7xQQVE(qJ@n_L?0{^l z@;e0N!}3mh3*+Z`spp6y$MyE5$WPfDuF4=teMwc`XkX&w(OVer_fogQa?A>D!(5=-o3W#%wb-@eT6a?DFW*``lRN8JGAHwcP5`>(RSsoYEI3 zE+qYGmtK$F=ZckneB!T3zs{xCqj%4ErJs;Ei}ZK8^m_C@H$mx37LKDK8;L-FoqCcP zf(>GS6H{AFIQ{kBOrbz26SeBQNK+7AeFWG0MAUm-A0;t^T&H-BN~7!U(at?F{vmJ8 zA*PO&p5HPIb=X`#Hxa8(RMcw;j^90apMzHj*FX+IDI5etsg!qF@~7RcBEpN zRA~Id##yxegXkqCZ3zgYUJO}tEw z4Mh97_?pAiOFO#WT^rd$sM?ZjezhgmFtG6V6x2xmFvax>JXpIkO%#)M3wcb#S~T%sah^f%v2)`BKU z@_kpne7C+h+~|n92}Z{)mhrYyUh&@;JU<72Ss#!Eu}eC1*{zlY1vmm&WHMIV;@j?3 z+e+s6Gvjmozl}?!vUU^ehKZz(U-5SVvMb^Ykm`N5C|ok8fPzY5F9s(Ervr)7hWoDg zuCk*yFV>t=;ve7;axrhN&?Mw7-MxRd5o??vZieP*3Yg;NBqqHf&b~Ms+Xl4Wn;u_ez0wwu5u~ z(-c|mtywUxVYN{lSEsOq_V-P31Zb2};sjC-75OHzS8!Z|x-J^0okjrZC2Lr%d23u2 zXj{WiuXW71m?;gv`E0tzB}QP!TeXQvM82eON4&!DHGWTwd~`MXKVCqi=H#1 z=PW(buaRPQ6mxm>oEtso>*=eE1yM{QdM=KhOYE7d?4W;ojkw$5zl`{cYutTTdeH}r zdzzQEKt-7t2R|0>L59CJEs#APp|5w>7I!TMyhsksFg0Oy{Lx^3szvzEL6OcktfIDM zEs1w_4(r`ZX_SKUM`F7h%3t!j6iOb9VPF05!UsAzEN6+*--&}eC@mFQk5p4&HjeA` z=B59MJbX0Rcq8+Pm7rdCU_5VWOQd_bUQbn>gC z*&7!_D_Q|BG8*5DoqehWHg1Tzrsbq@RecRR5}-!PPy1gX^ZUoi<_E?3mFK8C3p31!4~}DVTZJz?BgbFRr}5#}Ui2aHlC1q* z_Q8AB(}e=N;>fm}t9E8T0+)>FfROY>Bcb;Y@*QP@fFB~OcRpL1QZhINbqnXm0bv4*V+UyQJo z`8jnq1&~r?wVE!M1z?eJu1+uhOg&e?%yZ zgvb-*L^71#>BKo%Y25IpAIEyBjyL_tdgH`J7AGz^@rUt=kDU0!1WZ};ofaq@%p)Q4 z0(cS5?oSS9edIJI$Jv00{Z4R1azewVo|bPHE_~6sN~d32B6diD4YX3ThgiZoNK&!?qF9wCSIGtI^qtrxij~6o4s1P~Fh}ehizW9RYScP? zBDR&-+#J0xTaD5$LO!!1FV0r6&`!P>gQpl-+Kl6+-%GCAZP`r`Z0( zQw>r;JL?t9LWy+Jq~4Gw7w|CYBW2%gr7wS^%I((F&g$Ui$~Iy4Mzcp1QuEz^$>hm4 zlP67(RB59G$;zA{SrZ#Tf_(5O39>)g{CZnXf^4SnFy#bE_B)p!BR{s~<;8oECo$1b zTV8{va{NS;N8N8KFV1xG;!NblHsr-7M7~I5{7Bg7L`KPr!-FMG9{8i;A}PtAlM^dP z^NNPh!1R7vbKqYhhuN@^NssKrehfKah!0@_C$>YSt$Bq#Z zH<&PpVGb$y>u@3?Qi5fEbZ{1mF)GpdURi{eBvCHL!sbF5DV7JaT9Epvl+zW-mE^b2 zMBr!0U-_!WOO~4|Ku@f6y|piMs-ePL+CysMW$RZQjYWXYhiW*~heJx09LDX?GEG32 zD2tc3W4?)^%3C@|&|xqhGuaRw0ji{Nl7dRehg`05bhvvy>2MD~e`0>h+C!b?*)I`| z@+a46;wmIarZ#_3U?5l>Ns)-A?e8Dae|c+{%i6*O%9X!SV#$=t$H4#^@YS~`8tMFf zS&@7>lGM#4_z(O&m7w4==~6W5CC9)(OuAI?DCrVqE&`@tMZ>~bML7x6<(n2sn3in^ z0;Q~^gae4+cnf#$Xju9YE)V$!iYSMpvIotwao{;gki}I)JuQ!olfq(6%kLy#s;nyp za`GjbPGn2+Ax7$plP>A20(lX0N8(k|6iYA4M0`SNlK7)!$@Fewj*=z`n>@tRBq4tn zZ*L||GJ+|FO9BV4LMXjP?OHs^zkhj7zMQ}r0Ew1udC~IsZhsq^))CQHfxT?a<0lX< zr*n+EEs|FyUmmtf+LpB?CgtSIRb&tD{Eg5(EdO}J^@eC(*R@1DL38KAdq(9 z5_ML*&15>S`#o-6HRdXzE~l>=5$!&j6YZ3DlxU}*6Ybh0+I=)?{E0-nHi>rm1jmSW z$A26p+8zIKlxTPS$5Eo)@gGNtcE^8=M7!fZM55jCA0pB2_z#h2=RP>mPOyqZyNh82 zm8kOO8u;?-z2=8chRHna!8aQo>uKpOTsVjfSmO`H4j(PwwH+njwV8aU;r28EA#6Ofd(fs#b|-EGrzz= zJ$^Zf+#=^m7WTi=B*0mRQ;eVF*EgFIuaZ}*8<%&m?-+3~`x&O7^|Emu5eBp8SR4h8 zh_2Zx#dUz-BZ6!89g1sGTwZL=#uQhfxV+GseF17ZMmV(_m5&i)v-fJ5=OzlM4Nd}? z!pgHH5BjNKjCwz{R@VWYZNoK{HW04Z`AFJ9=vF$%) z6I3#fGR59-+5Bv#DayEvj9o5Mlw*$ni9)YS$Dx#qEL3KPb*OHF%jI={me1O!ox#)P zu6iYTXdHQw&vaH^dBc`-+-8WdvXZHKG6z_ZiuPstp0s9j!E01bfy&u8MbgXxhR^Xc z%qKPwk00Nf*Fb9lLHlggiSfzJHD)TaNi)xp(+dhV+)cXn41I6G7W1zdmu9pBAK)`f z;lhFq;+u=M0r|F)4YHnJbeCCuwwG>@=6UcI!}r?VgFi+EstMojb)des^hR5Cc<1s? z-EG9l7*l4;GkI$CWsIzy{uw-rL-O)8I`r9~ylJ=fl>MCU^QZ~UVhg@lAPQyd&2Wh# z2PE6mgsQ2wgb#+S`Wh9}regl950IjIYlA!`-1K#qIh>jArQ{w~86%uwH|W!XjB64bz9+$aqlyF7&?vj2)c47i z+MOt7UoSnKcU7lSM&X*OP54y%>5YaYYNDEEHx^4Sig4`v$KhCcW#-Y}JCvZQ^MnO# zs~&}88;-`YuYG+4$5KkqXi?Q{EF_U#g=1SE%NID21S9=3K;{5Te=7wKs*_=sR-S`r zAS!nNc1CS6lX7RFcS}i<`7U-}!_d`FWAMQTc^r}nY(l4-2Hy_eDd`F&{WfzrF25f6 z`d(tIWr(p4?4I0yDs7w{PA}oS4RG_i?@<*gR})|S>?kZ3*fg>N>0BR9w>@(!RON5U zwrDOUk`~Xl8+L{11|PWyj8TKW68G)3%r%Rw9#9$ zZ4ze`#y{Awf8l_vwYRH5*Biz;tGMjxf-D1=J((ApZVm5xx0*nUapCX4*iS~V)QQUl z2_3gvjEK`gB&XIpY`Dh-W_TF2#qSiihT3)>sJFm39(vjmv%ov`*n<=Q=z|(jhH`(+Lw{)oiPu-oB20T` z^WgZV=7#qp(Y7i0P~t3<207Aie=p~bh>p01@p~6j``V@cJ{i$02Nai+B;pSbI{q-u z@rT}{CI&Y4NXRy14WnOHpmNn^ZG|*qzZ6XwE)}{BC8m`#mCn(-%@LX4;XJZmCPLrj zrA`x(vdeE114KTPc%UZE?Is8DVi9pvICQ(}PF5L?W~;-Ml{N5OO$Fhdl{GMXYamo? zvjQ1uU}ln=#>HTa)6X9@Gu+F}aLdtDyZI`p_6>1Fulq&emV+=&XjPAN?j`P5S7u7^ z`-m{2V!tWOV{kWlUAj{>>O5$q9OT!dXqgQZZ5^2@m>*oJ`01plnXfJ}TxmM4j64y= zvXl5|T;kOUuyYs&wFBqyED=&N^@n^^j$>*y>)V8Ob zELCq}7N(iebW{UAX3V|rX71|KpU!uf91`?sy*Kcz|8jDRhqCpPF9$tktjB71_a2V> z2W0p9pcL~5NflK2FLKNH-e6wbJMR_0HWw;Z=&SKukaOw;i*vzJ3zp=9WftUKa#zws z3zp@A}~SD`Z@=t)8iz?-fCNFhgp@@GIl{v2hfQ2ZIXw_20i6K3^Uu*44&aPJeJs>Jk)z6 z&Kl=hZQlV!Tx34@e=hubN&$>i`R@f94(~c95+%F~+a2D4Z$dPK*Rx}5x1pP>_YZNK z`7nM_yz?IQC+0%n+oKr0<$~ZF!QxyHd?Q$r3xaP1OLIZ+jbK?W2)+@_mkhoUEYE!f z-w0OZg5Vp$%3Kh9BRDx11m6f&=YrrH!J1qUd?Sc0w(Ai1Mlk9h@5zl#{>;}glr?;F zn$$%e_%q}2-a~O&U#(-Q(EIe*u3-crdT{gdd87c_kiGaU|!h?Ka>UYCZ6!a#9&_e2|ttv^D0jGp(2=9 zdBP8s!Mw>Q{4hC~SAD_{)xo@)6Mm=(=GC3>LtQYh{)8XugL#cde*orU74wW$$Ztlr z6kUbvkL~>&P|Mh5a8l6;7ht?#$L~H~NC5~$3;;nWg%DyIBre3!(hMzzS685g^ zGXsWrkJEltOLIMw%;_ZkCvwHjTsmG(=Z>&7b9cOI+Z|~hRHhJU}iko0Z)4VQO z-RtC?yd`R}4`I7%I1|O$C+PnBTr;Q^7vu5Fc}5)X9uv5573FSE$p>`KQ%O$hDbYrO z{Bqz97&W9=2B#dnl)N)0kHi+9q-0GblhNTYDJJQ|Fe#**Hr=5*j83K+P0FPl46E!Z zSK`47^ZFQSs0L2OYOkr4H7GYReptn!YI}$d@_B+zI*vaEhOX1yCowN1b@Kx1mpRL? zyudPAa)F-ukI9zpp!9tG{bMKJ{=qi{EZaEJPLUm-&fZTd^toqaQ=I$&?}I-v{Q$nD zD(7_WEs)7ip0zOTCBkytBcJS5`o?{V(S(9|w`tu}iMv>7eHQyLE*=D*H-26}1FY0{o2Z9`h(1FE--%P8|XGE-$!f3rljQJ{*j-7>S|df{G~PSG_QHZY z^y5u`kUGsq%sY2qknW*E^TNrsW(QtFmnI5hvOlea9){mhXIAtzq*vO@##A3i8Og!* zA1ZjyK7W-48iQdk)j&V6Dmm90(Vy0+>Ca2OqG3tjMBP);H}mVK#gY8< zYJP+CK8t^q-%hSNRNK{8{q?7fpV^xbQh$DWpZy9GqlTo_f*`$%-~Ntg*rry}{*DZ9 zqVxWa=XnE@c(Vw5+eMuI`a6D`f7_FLix>p7s%!<)7G4nQ+)DN~$TlLQ2Rw<{B~o&2qj#IbqqQVToLc71)&# z@`cgJ_MW!*>iM4>doXqw8PiZGwi7q4CGE&x*Y)9dq3hG&N?=4>yX~9~ieLr<*~j1K zDBDYyC_%~wIY)>i#9f!C$CSa@j* zfixPG{$ok{L}Zpe^5+v;knW)A;jP+|@X{{|z$>j!p>YM9*H?*J9J1P`D+iWwFR+2M z1@_tq-U~oQ5e9R*qsB{pkX+D8laleAK`#n$YaeP+(r>XmjJW%o;P{Fx)gwrY5pkA_ zU*%yG$>H9__1&Aq9le1c92|w&64oEgiRk`xV-)UB&yL>OXM|m1KK|_$#Q5n-e#5Ti zib+ql_seOqpRTs|XY9Sk-k(pyA-0I-{B#{LbhnL4Vu=q)CaN)*&_i{!z^|(ucpAHk z7XD}SK3xc;iZiQcL=;k70f{|2pWDWEZ$U?PMLS5m8g zyJp5{PKi+V2CeEy-*hzc-mutG+MM#%P&ka=@27jzx2=A9S@c|PPd2R69lV9JYKpz| zB7x!SnystoHYhE>1e5(6Qp9sdqs{I9UDp%xZ}<+s2)>(t1$azw%gbY^`7yB(>HiZ? zB-ZqmJV)$Jg+5vMFwY9Ac1KdOUsf8k&koWFq9vSIl|uqtZ%^sPSjaJn<+-GZJ6L z?Ml7>@L(g><*-V&P6IAi#pvyXA53=IyZ^y3DG=--ldO$u-!!<(XW`lqmMZ_`bwn zVu`xdyJd@a%kKadx1ZyzZx%&i;=@&5xTXHFpBely_an$5LA}3ftJ)X-ir?%+4Egf# z%hB7g%^3?XV!?3ulshzqI^&4x4?v%fX4jL)|b`avNch=k4^T`+1trA}2XM7nUkXSQJ!(E$+BcM43u@Y|*D>q8a-0GqQz)0}a zp!1sA?xj9AL;-FFYDjNae0nNT*&A@z=f;zL=Nhl;F2celM98$>Z7wvuPxelIT4rsS zvdn5XwT54=YuVIJ={7jum6`elC~ma8bHhg3#0BA_vD2fBHN6!e91TjS-CH83IQQp_9Fh&(0WOxlP&ID1+8EDmTv-J+mU8AU)SwsQF8O zbON6=^NCZJg7gCSRuZJ2*H_T~+;8P_oiHu;&#+?3d~>->4}8nTiEM4g_v{1Ln4Bqb z%$`ZS-mXgfZ3?%l!{=3*O)=SN8vgV~;|9lwl3WE=Q-%QXyH;{0f=BM5y@(91cTFv3f*n>quBC z`uU50u`(GqSzqGZe5O|V+=nD<4ZKL9LWQSBqMid1ur- zb`dD5-s^rFMKNzEbz^d9ynnCPEx$cPwIqi=Odgz2WQka>;&GStB-{!(dEJk?RQ1R9 zWIiHrwi@)GNOm^3YPr9b$ z`#_mqcU`_0?{&S9RmOT1PcP2Q_2N{eN*z5GuJtlmllDPdqPFuAcCRiWGvl!ePGvCI zE(Y(K(HP5wGfNsC_m*x@WNFpoofQ4X5&t?ZSA*6#moxjX}pQs5x zQ_j32siVJJA}InAZ(0w#H?4==o7Tg6qt;@#d^Ot{4C!XW6V=J-P*V1JapU%abACY5 zi@cPks6~I39GdH;9_7{RmOGZ@(BFHhpILA`zsaEqiO(m8F5hq(-_Xw-K9cw>M#!7a zS*|3h{~~r#>p7ax6Cd`vU*mbs5BZ@ld}n?39|ShAXedaWi9?@$<2UDIiZrWBGid^d zU@K?#4czV&!bH1gQ3n}Mcc-f!>fr$ZxwI!mQyg!@d&{v%MnMEH- z4$bpYcap4jTXN{j8w8ca56Eyn8S?TFzKpgFE*r^z&W&X7QVU3P&cEw5{Z3vtyqi}u z9nXG&U~*_q;`!vzmo~gB7wx6aC7!}%yF?SW@xcjHscIEoWSSOHd05 z*Tupz^fa;)uL-+v{TN^9wU=sDnvDOl2^H=tn0h>h^~D}mrg35XKk1p$)}QghfrmSP zZz`E-GvGhLG~?yLG?iH#Ol#v&5=@)PqcoUi#^9L`orTI}3jo5HZQ@(Z^D*+kVX9H1 z)P(USV4&4O692)mhhr~>@h&OFlS8L@*NS)zE~cy0D4szKPZTuvtP`T$t+B~oBE*Tt z+aFs0^Pm0fXa36vxV*En4o`3Ke+lDLb;epf9R(jhlLv{raj?;A?z5GLTP__w#bfdD zR91FjBlM`nZ#@jTuJ#4)1B<6&eFnj-u>C9B%Y*f;Gq3x*;F_8IhD)3D{>x^50a8t{ zUSU%z)!DJ)b zWocmv*FJ(8RRm7rtmBcGbiEMmd3~|1$KI#W7`&}!9!+^i9l!rx&ktS*w?Y6gFM> zoxLjByw>>NlO*qddp^GuQto$|?4I#{0C9gfIW(3tcI2>g+kV#jLGbOHlywlXie;pK z8KjjsE4jJRZEPYx2iGb=|8`1_DOpA0W3>F-({)y=uEtK$9CMxsy5)x*qnlfCn; zJ^j<`4S%LrD+vWhwy`7pcjMsl+TGa%jL+tSNPecrP4t`t7Hl}6tX;XWzL)(B*Q*&o zO^}-?xh)4+0r9Mqtv9xKsozr@-~$9R{FiZ-B!{LBd=6O0f-nM}flXdn1-fq=C`SYE zLk7SVl>J8m`0ixRXD{phHjIscH-cIe&yn8znjrBsF>ra&eH%FIbaCPY8G` zmm+IzxRr+WTb#O!=hj8RH&=2yQ*hmP^xJ(szoW>qT%;MCS3;C7ix=0;oUekA@%be5 znrIaYU6gd3QdH$qus}IMqRe=Gw`TVz)gb*@!ecwYHlVQj(M}|e%_xTiCSEwtZ?C!a z8lLA9jlpsaP0*nN3BNO0Ul7bF#dk?lahQtz2mK0Dg&Ijb=H%YAK1L9GqIT4MKy>N< z_VUI^sThry?4eG;8|MoKIVcO7qj}@v4v}?Y5=^12zp2_7N|R~#{MOk-PV`$Z=TYvr z&V?L~z7IHQ{v9jG{;r^PwirjydO45cpw&)Ku$s!Kd>xD{XMgw-3MyU)k|BgAK8W*s ze+Tx^=77&f<*$7U`7I+*FY%{B$$xw7`M=Lya*rA#rGifXO%_#@ ziYgM7)%Wb=OE~?t0b9n0e@>UGnUi9UiU8vty51kdr+51Q+gu-1Is+c-WSDQqu8>_bzfHG?G~B1ie&M1 zUs22tUCfuv!89P$s1@{2J067om2v+o#kEKJrx_?|T&X`zO)l}LsSn&fT^4Z8WtzBh z+@B_2?=$>q6+Bw}Y3fX?KW#EQ{LxjH(ZroQU#X!cU+3@-sNYLT$-n4R$zj$xDCb${ zJVA7Fn03xL3$_4T+&+4#Z&>{0Tv<$vJH}#L5QmSj1)&9y^9R~Fyqxc>pNLuX#m?ca zJQLHsZfP_+hkr=OONm2u4r}$}r4>J_Gy+Y^3Gv38=SVH z+%hT7dw;<${T{XHqh@suYq_*=PrfvAt2zeHnw^iQyNWMXd_K~#4yiD5{3!n^N^bzm zM`|6F>xy zw})bF^@w{_BHY3;eH96j^?G$UE7p=cG;y8S%{P{* z9sVx=Z)RSq@vud9w~AQ$vQ_$JFC`VN*5TQyGWVqW!t5j)(I2otlK}zje_c{$<-$pW)7yM zs?RlIY(BD8kuJacbY}h&i;Gk^aeCHp@M~?Hlo^yp6JV$>j_qx`)Pv^guPhaMBJ#D*vcTqe7zcM?RgNt6GCxNKUmqm|2~DV`RN&=j}E7NM|m8CyxKn!k-Yc8qSVzN&z@wtC8n?}{= z^lO?Ut~}Rx%)(1?H+O3AOUcuQHJI_HYv@m|3{7Q&>%*SeHhl3#Q-W)(MeMSQC#!fG zh9qHHXsUTP)kF$9D=_;MP|cMlD$mXvRlK-q))d_cp1Jv1Lx9i_vBw)|LHqd;dpt#f z9D7_r!0Z0CI`3u-d5(|RqwE=j&r1D`xulki8+{y>Y!W^ifBX{P7tJ;PsP%x?^<#dG zKYoEP#vh*{CYU-=MOfaPej{R!GEecAN>+&2W1VW(FnZ~qTGq?+Sz(EZ#op3BqR~5g zDPwM8haHws8g5sI+7}I~^q)4U3oi?%Hsw<=f5QCE52nidgUb|5t_e@Ui1NF**Aws0`~T1n0h6P3d&KN@^g?U#EMYmsEMV5ya`F)`k;dC9L_lRQx1 zUo!-OaHfdhzU%C!vuD|}Jcjn(VMsL2cdU%vAm`aH`W5PBm?zl`r|Zc!S9knF%a(7hSFf+gkPXMKjeEw{Bg8=hn(Hw{D$` z!w44qA0=kux_Q))InBk$@}}G^SmQ3{G-4{8#IyeyZS2I(*qwZOrzA@!uQ`3B_VSxa zD(l}?3{6B+EmU6Pa~%a%TU;O@8xkEeCxr}~8nw;OOc+O#QR-d0kl{-XpLK^;Mc$`( zBoB}Au9b(}6ep7h?}RlBe`@3G1k9U?vjFX4q4<X!SZO`*kHPVHT53*3X_y=#|}3>iZUO+8D;^JJf5 zris23SAsP*-y8vO!eG&Ou){NTD9K9PrW58^s%=T7r1G=8?tgG0P4a|JB9!7VQ4vq- zFJ>EJX7b?25!;Bs^V5b3b^Wew+`d|MziH^%^gC~W^>_IBm^badhC_a_Kexo2eu(zS zp<=Orpz4X3P8yX}dQ)HV7sLTKD;eDtTIw&5qvp8ZI?-Q%uFze|2Bg|!kmc^Uy_SMmjWwd^vUd40OWS7}9>fJrl&paI`BK8;9*arQzU9ls-(%VyPwDT>Q* zj@0g^S2K!ADo>@qm?qomZv587XJa@+r`l5vG4@{9<-no#wcG&|cKZoC6KJpd8s203 z`DPis?ytCSO~ASPZ|&Q>hh*iaqbI+jOwa!@p3cq<8(YMX~Q>4j#W2LQUK0}m3!qdntpsirzP_G47kKp;Q9oMkw(An|_u?Yxh|WHD+8 zojmmM_EOwY-d(|vd3WtjzH(O8;|=@0^LB!CVO?RvA@95={0FQ0ZPOF_ftI|f4@lEB zbvwPS$JeO8*u)z?mHMSRr#H9EpHb>B#!{#f)iXB$F<;&-?GvVb_iD*R_^vi8jO}%U zdDKw;tj&$pTNue`*rjXyAjph8G*-~bBLGJ7K6o5A%nIU_$zgEHR1*$1|AW>L4N8>5 zgybpgEbrTWcB|7+MPE-_<(XdU45fkbb9Z?JtYHCbZw^=wapN;*Twn3ddpxUq$+>JP zwS{J6zpS>r!RF{wYQ@r9KM#U__a^;bbF+Sbb|=47O%GSQH*j^GdjnTDy0=ny(Oonj zvi0e8zn^wmkD%pp(RB9X#MpXGG!>`g@{*hl_(AdEb?>2B8|X#>3@PFP#)Psj@S*m# z*nUS~+3%8}_Mz-Q@rdeUS7;k)^7vExnr*P=!(90S>14N&<0~(eXFo)j-NcuZZ(w&p zYkm5mtH-XRjYl?R?|XtIdH!|D#ke{?la_TpuO(ENz|YeGb8)Qw2+Xl= zI!hg~Jiu--raG?@=5-0L5;kyV)4_v~qzytT7m^4>sK{Y?jU)xJQ}CVpj8`54rRF_aDbT()a@BkQ0 z4L6?O;j@!c**se5u1#8P_GZ9tBOe7yURU$5q8xz9T>>!vgIHdRdA-TKmhpPCdyVsY zE3axk=N{OoDtH`A>U+JZ8F8Zdl@nul{VgwVxIPB~62s5ZXE5w{pyn*NJF?p-jSM{E zU~axs=3sJNlp-fo6wAV+q1Wq@eks;hbze5l3+lM5r<*AO5Gjr949cFPYXY0(5P?lS zHC8RKDKfhi;5=OgUJ@+Q##|X2a>=< zzTrZ)_%AGGNzIL5)AmU+!!!uC%LLpj55MMOGAFn?|KOktf&fMs_34dQzuibc+i)ZF zv+EuTFUYL^E#krX-2Y2p;ORT0MR%$)TmnxYz?JUK-WQ8|vse!3Q`p9x0L>4^_H$Ba z>)STY@ zS2mXWzspf(HK;ASzS3+JSsWYl{I98Oa6U($Wf6T&BwmQ7y7TmzyDGAxb~h9%dUA|v zmr-aL6e_}UaVs5VF++HIkK)4IRi2Soe?|% zu}h7f1O2bn6LM%;=yeTc!}mfT#$qdoNk6=w&zO>P%RMEN*=UTgrYxQMJW37pW_w) zO_l*p1PMCALP4|4=FA{SDRx=qjXZ)t#SsuW2Z35h;3f-5U?6a_1ymgYO_JE!DqVV; zkvhExkrsn~37TDi!TEg1XTd8!s(mf$W#;leAhR6oLrQaZ_8Qt&FZ;*UOJ?+wO zaGPog#`>|KOZet@>bL4(?M8WJ)PW9}PyHyn89~#nKed5U5ljr`mIh6lh~pMsToyFN zeJ*R-)jL#VXQPU}lm@DH#@1Sac4He&Vh13s{j1 z{-?L*Upg*9d~Y0;df`LX!lp`qm^hO=WEY;~A|`K%kE=^=W=};6AoT6(SQD-r#uQA7 zvJ7q?HGk*M=apqIzMfzG0kK9- zSrQ8WRlokKSsIvhiuWL`d>ri7@6Z%G`N%~b@AWr{k8RjU_Rg#_bsp5aci#OtL{3{R zc0RJf&PJL>0mlUz>F=63d-{15e)}GN8*cxt3jdD9e^&-r(Rg*T8_N$ClqJpr*AEW%j;m|c1b0+jgVcDl3F2O~3AsOsQ*{TA@gX6?2Ek3Y* zGQSsB$(e8L5wgWIx8aU6Shys(tAiSgZZJ@+TBiEWEk?*o1h*SpxST4uOI_h$p?=$N zlA5TT8Qi{HAzUv6cNxhfa0+{SkBe&z%-I3yW(Bt!TvsaSusj1)aV$6(^PrmLyh`nc`va#x*2rJGPBP{sNd_Y>D>~~OTL14a^O?j0( zT!7ay2mn+r#NJAn2UO^=g-9PGb3Bn zqsG^~i$-E`t{1K`Wt_NEW7N>P${a!E8m#G|#I>)N^}Dq%SfweAJV*IJJ@x_iH=gKADO+AIR0{&@%$=1Tb?|;p0l3W z%X09Qnyd&hTiD`#8*em%wOT~rJqLyD>8toevKDImM_w7T>d>JV+(esvEf7q(In0&x zhbEM8*-3zfr}MssvX1dtOx6m%%jjOlWwN@Lu~Yb9PT%b$L_jyTOOd2jYl04k)b-%(p^9h%~2|@>Pfb+3ZGSl?rkvQi8 z2}lA>e@DIO>wP-zAMSnXG_LJxJ5?q_&9NQ2M0|pOQqM*4tSOM$Z#jfs{Q!*!uZ+2I zID?@V%)|KaXc``$*Qtpog8YK_!a~(O{0kI$*Y08So?z1$F&a8NpTO)X_$^^}w%c^H z!_geumppVe_H48M$?sQ=f?$R~EWqe=jZecTs0^?;ft3+H z->n)AjZ@VY%k2cYljv!VAHl}_E#PMFvnO*F`f%*g?cH12b5UXT z{mR1n3666$#M<2qz4?#z%#4LI3pqBP?CXH|+j?YG(-hw69Et22W5@5nIw2YutHt|b z-rHb0ye^0sGjRBkPH{u2^mkUctnydjf#0a3*Y2z(!ZMSMVkhZ~7H_f+)wU)}#Z32N zgJL6x#aj@DNnLEX*9}+@$t64s?BG2dTX7@1Z*q*GXLrG23pz6x7JQ zPmRUdJI8ukyro|!kA}W??-&-_OaD>9gzXMC^>?Uvks~-HDMcGfTJvV^{hzd`g=-!* zg%`_}Rqc^*S*nqgK};N@>$Ebe&BVB3gJpV{a`(NhG_FHYy75Eqv+0};tSrgAMsduM z<}+Z4*ZmW40{|?b9g7VJv&h1vTeSsy;OOFb&A(-pndd)$RL*~JIa~9P6{l3&+ia>7 zSZDi;$KPLK*}U$raxDU5x`0bfo!S<*P~czh)`8#yqq>0aV#zjC(J+~~ud?;oabT5w zxq1}3k>oYbtAOHD5LkmVvWyVU;;(am%rKge1oa(&lsPJDQ?vGjFVr47JvqVf;x*CP8%P; zq>}ZgCUEpRKsc}bV4FfyXLNOM1c7y(?4=2j?}A5&FuBAWZmWd`-RZ#JgeQQ*Jj zF>TB&rMTRfa{T$jT(T6rHJV%Oh{vdvoCja~lcTysqx$ki(Wt&bL*1y_RYf^!%a11) zhgE8@Nz;a3DR*97S1NZ9+52Q1zkso=vF$y&tzvN%`@0xY4q&cN^P9Z29U2f;=We&a zOI^(%Fxi>|nt?scGy;71H3>v>W5Y#U-0SZIS-Hpz&VEe^nIWbb;PH*r268Nk^?GZ@ zMoN~jtT(tK9$s5OQ~a&H+0r>E5%vuX6&125R0eO&>E7D9Pq?P66CIC{JV9%&=PO9K z!2E9DTINpE3nkvhdTgX^p!0k%O=-ij?c_2w&zsapKfJZ^^T5+4kaj+G&hpkIN{@JJ z-MMh_%GIiMXpC+SPCrCgIwxxZ6@O|}#Z)TcB%F2D>;4nKbv8g~jBN_bUSW9tgD=77 zA)lkVy$hY3inHFA-G1X-bP_C8{T<%g@@c)%f=aNdBmIk2sbuTgdKC&bia6D5EPjW)RrVS9#*+t z(i8J>P^0lPLDL0XjV(oD*gSEF^5?4$d}^ftEd^#|zpIa{-^Z^w(*lmjjMJs* z6djzQk->HXgmle*oRV4x1}Bx@t|9Sv#P$z7J^qltLrwK3s_XM{Xr<D9f19F@z{POz)21fW7`Lw6*Ok!duB)Qxq|Tq zl#>#bO9l?b9-|XCk`e5_D8gcYQ}19AD@NE5oluK41O~AWa}n-JBbYv+HCRhEA?f}6iHEIXB2 z8yg1Loa3d9vc0vJ#wV4BHhR4SPlqLcpgjcxFDd)@L$R$GFU^-td-qjHa74Dzrup95 zua5P5C)F9K2A&=NN?2#sU;aA{-NX06y*KSZFXnG%km(%{SpaU9y1 zD%IBW-da)r3f-C&&Me}Fzu0;y>p=>H>Fh6XI)ev;heqUm@1E4#o8TmO6tL|)2hDwA z0@~!DBt84@p#EEyt&}{aYl!Y|c;w25IQVP#)i1F!9g-!cfryPZvoIM*BDTpuqXW;& zPXrTO&B;c~^1qQ60w)XBRKJW)lH9sN-35W(CftMQXK!t4Cf<-Dl zw$FbImsQiZbD^uF#4cjbrt@C%Q&O(DRYkUt0bx{a$(4NSb^j5kH7|(MjogY0ufe%B z7t1a5Ech(N+1Vkf4p6yVw~@<&vDt~#EFXOyLy(o6)`-@t3Dg<3f};Zk*;`(6)3#e_ z5L3XQ=O`0sUn^K=+bE z>$!agoz2e%Sr6y+7H>Dbg)}|VTbz_VLrq3sv81x4kTykYA(i4T9O8WNnjt=DqKx|t z=ZC)F8uERLSkM4V7|~s#IH4{Q&*EEK)KK+bH(X7NnZhIcNpKi_pfn+6P7`u^b_u6g zkow7?Ar+D@`c!ycj4GFiZ2bP^qL&-zh+a^M=IEv9g!D4ZCIK0BSpIq|Z-jJ?rWr{s zMl+g||2WNzC8=np9G|L&yAv&EB0fh1Bz$^*z3N1pN(=O zWipl zP@3<{K{e@bCCW4>``+eDx@hCJJ#UTPntRHMvP;2(9MhYhV|wSzjBx44QoNji@tymu zk;LT@p5>Tck>hzEgJ5#xv*;f|CCd^pYo?IDyfmqx3`- zWcM(+unte$Flr4xCenLd;UR{y{*I&bO5O~wr*e3Fj>xh`Eddaw_aIqi=dz9-HQnUuZSTrK zeMt`L{YWB4!8KCEoB-+%au$I0&b4cQHOWNq{+<{V>6zl&l7m?LLN7DC^j|P6!CxV# zv}OlcN9RTauWoL7wox$?z`$15eo|!1(BuS-pz9`3iJ{S;B=uf(2)_3Cn45XU>5$*6 z6D!%XR6StNKC9_aFJEVZL#|di$U(yV+SlM+OL#%m?mvnm6$u9}uPNMc27?4Qw!pt4xcso7ORGshR{|BY1lCjA%780o)Q z2K^VNzghp4m;PS|P6g??QR!zZgLs*xboC7{>L^-egJT>`8G4 zmV>cFxJqGR1a8^VSt>T|RW!Q8>!SQ`sgPt13buDzGbPJTQni9A_ar&l7byfgH`3DD{r9M*%?2VF)-|v^= z<`qk`qSz2d@r=+b$tTD8ulQTTug1cXHz=mSf5Zf~ftPGG-Z=2o_+hRkdWkw?hY+2Y ze)UO+?%8p?cFo~+iW@b~<8im`Mts_0b$x-79AajD_GyOIi6*Q9g=Dc^_~UrH-#2BY zVWw`8xOS?F(GKI5?A;vaaopFo9>=gTk-bVRRYX#a2<@#Y4T`cq5j{Gz6qRUJ&3;Cj zFQ>q{KA^kdl%fhf2bnqew}`U-=nF zMl&24{gT1fI#!KxWHciy|F?8_^HbK78~Kv&$p$E__924S_TbFy&&8KrcEwtE3#CJb zQvn%iycT4?rk$m{J-6(4eEh-93bYpIjK#utk+p6!c}a~W%q+8n$=koOTj4*jP?vx# z*0$JX@GGUKSz03}I6A#G__+*58s?)ZN&TAd!3Hx|qVC#l!HU=UR`rIzVMx!6zrt2` zKUb`8CQdlK!T@dDq6z-b?bBW|krhQ>A~xKx-8Y-4_K9KH2icBUaHZ$>RSh@n^)7ta z6~)qStp9T}e_64SM(MEogt#?svAjp$tcI>ogQ~Wl!~2b1_cj7lkpMzCkAm*B&|ToO zeZ4F5uHQy8$E%c4D?lcSZj-k8)D1ESjL~(wUbik56cavWMTrVq@w#eB4)N<-YTr`( z1LHS&sUNXl=T1B{413)=mvlw3c9KKh1j=Ya5Nr-ktB zS=A?-WdY_7>WkTk1%V*S7&K|iYlg*ZbQ*fE9Lwa!8>Q6)z#2`t;oKsE)js1DcOD2 zkPm!-9DL0_pNALQECw8`llcJ1fRHYAsIJ33!EInQbFc?Ji9srJ2j-=z(v8hotjOz^aqCChXeDe z+W67`3c)LTjU&S;@NH+S*U;Bq9FfEJ1~cXpY(*F+Dl{wKq>wR{HivD!I__6L$3I28 zv!5vpTQvZU%+K{zK)6bp(Hbwkk183XC2-bKFu9(M6XjqoGf897b$gDYJ2kgSp{e_8Sgf^s8BY1(Gdcd}xjzgVXkWLMjL0Ua?=T zUD9|a5ySRD?Hb1Ng}n!L7WLv^rR^THoBJ zooZ|JR|rcevl`U0ufFB9{?}It3e~ubfN@zuWg$wZnHv%D$Qs)rH}+Sm31A8#3ipy< zB+N7?(y<~Mc6b+1zUs=Jr?kmufJkuuVh%aUY{j^W<1opMN0JZ8DnafU%7WyLB;;@$ zN}#~F256tXkP6gcPs#~@Jq#Z7`ha1<$;tJLL;leR$PVY~ykktnQX3OMS# z4&OO{RGc%eZY>G$mmMEDe*qIKE>r<_+f(}~s;6Mf)WQPULkN*yImVt^Ni~}#KN?Hu zsP;7*N#wj?Y+Lw}n$y4Zw6R+-c#A}fo0X$Jc(^9 zGa{iRjy9c#&6qx_NN&fXRl*~t#@)`M7p4Dv?t9U!bem0$XquT@+|;7rW5|CT!>(p*wqp6zH@Dsfk=9K+1x!rs}AOFxf)>}WqdK=%A^)|j0 z*88JCoJ14PTVlP{N3mWVQ_jh|VcfP!#NFoj+n(jQ@GRDF47^70%*tMR%MR8z%L9?|S_$JDY{6P0WK6mT?o zgeAv^83{x;iIzzd=vJ6OCpWVC4@`KoFaF`$BeB~|yxSo0&bO4oze&jRpBVojZk(xr zg)>)evBA{6AFho^*Xt!SyonK*NVl7S`fsz3aR8I-Zqw{TmGj+3@9b^R4>h$!DnRtX3%(}W9pUE1vF`iwjUIBT-4 zG$qH+joUbW?v5%L!^!@TB!RUgaPywEV=!cfsBz|WtKUce#Vq4?OevVL#F)Uq9>i+S zDxKG7=Z8OciN#)gktIsv4N|&ZNoBcYaKqO2x2+S5l93*%!w7p*1@=>j2L5ZIbx#c^wj`^OJ> zDLF@u))WW5rMD9Dx^Ll^6X8pLz%#2K<1aL!wDyJU1gb;?Y?*@Dv&nJ(!vnwfv)owv z>k%nA6a2h`9!T8#HQ#iDO)1yN?2Wx=C%q}F`a_j1(W)}BmtuP(aGQ7#0eqLgH&fkB zMJDl{knwD<$}~I-YDnhmbKo?0>A`J=*R;_2nGb$00;qbCP4#mB=OPg8_;Hg%0+Hx8 zBN0PTWL8V*-|OEd#Irj#Aeb$V4Cq0*{|DbBz}USk8@oOYU;xC#*cOenmpq3sS97SZ zTz1T9S&g|$GNbM26pnS$yhj8M)i8E*=Whhw?0-sxcC_QDHxZpra|JB|_IddVf1f)E z>rkZ5e4t@?RgaaGLwc}7%L4_T)DC>pfi#W@OF@z}_b6WXVZnk^!AicYa-|+CD`jDf zBH(&GIIGBGLzp#ku8kjkBK&L@67n? z$89O0Y}0mXt@YVxR}&Ql6&PgDOhF3pPvVxF_d2A2CIc!w@6Y#~-<>-MYUMu9GcUNm z-}&=9f4=AY?|jcW-{ZW3E>}g)8sl85-0Tw;D)V0FRONafcL{NMXQ1nPERW%nO5G{S z=bryz$MMk>DOnHBQjxxMu2+@^mbpME!Lvh84u3rhVEq{^KA25ug|C8 zF2w#m|AdS)N(bG~3l?h}qPaEj@Zc%WX7Qfr{5#?c#$MRPmKFZxxrm5QtY})UD2}jl z+nCD9%9_lumvS(KT$g7_%Sa+%im#iT;0C}_Bo9duGk24jazr3f@R&^ov0z|OO%$Pm zvO6RalK4Y>znEkrk+B0i8b^WCnbJK%F&S^kX;R z9(;af!{MIa(i%k?>FmZs+3hUI>Y$~>xQw=y;|m2;WcCD;_8`x60l+#AndH=dhpXX( z)~SYlF#bVC*054Gfr-zCPlLJYD(2x%JwPsf=r#iqTH-<;U6;C$TI}%8<4NK4tAT1u z&6t+j(^~4GbcY7{vuna{T`0`^mJmI&d0t)gEg^&(dxr|#=KL*DOSs+_7A|#%G&TD4 zK$sgYHYC_we38*C$rDERSEz2KFy9-0(X>0~_zQT-rAkX|xbw^0x`Zht^TNU$*-yE6p-Wru1EsVQc0rxb?ILaLLNwm0f3!6$SEi=ayddA z2qt0{5zqgSk1hL3E5nL6&ay)#IvOO4#@^DxCn)i8mu5^em)6{!oW@PL&(DR#b;;@3 zg#pELD;9=anlUIw+l4eJlwva1vnW>5NP{vec*xp7ff_{`?Xc0c2pM;`q&i<~Y7vX- zdtHGwdMrt&^jK#68NTb8nV0jmq*1hJj53mhVu`&-?_Oe?lQA!`zx4^au$u}yi6dPD<2tl6eAfIE%!(<@q6u`6#j)k5 z!zYj~Zcq!8x}0p@81!sbS-JE@01Op5_aH&U@FfJ1&1;po#t^}O8r^OKw8lOdX#=uU zL%ryelBWILI%7&BxecQvrtOS!%Hk@LJnSuAnC|b6*M9VA6gPcMQ?ELNae7TqqCb z;YaL1?0@TO!frOzb0x2d=ZBKcx1dtWX~N=AQp5+*Oa9}eNVWp+%UkoeXu$S864}5ZU~N>~_+3>MeJ&M!u{3^H#p73Oo6s$E!xsocA0Wrf}Im3eSpGO?*4CSgzGF&UQ=Mi~v$ zERip0pb9)~LenBxPt%?zUrpCmGzFB=ByBzdRTCSNv%ui$`@@MgW)93O%E{I><7tz4 zM!D0kGVGcEHjmtRZ=rAc8-_jjcRuN=kKbv2aa{Mc9q%sv&|o!BJ0txlh!w4tueDYB zDP9X+;{PbW%GmVP_IsloBu1Tby%$|j#l2>J$fLnkbJH)D^yI#=m84KA5)xgko5@OOfPV+ZRKnr=|U7%VmVY&H&YB&R_s|c(AQ*E`Q z*=HOVf6o#}iT)ecp2l5pI#=&k-zNm!8fLy3&*sd@+7dl3U)SWWG)M1fYUq@QuVK6G`u-9?31p*s`u zt($QNz~O~sv_3FtL}FWmR!xBesXFt^TJ%$3o7q;6?Qb)gI|gu~YlY7TJ^zR_!8Gqi zqq0jZ=WWZS1SeRqwlg?WqP(UOiCe{0PQ1QKV7lH+qYs9bf7BD9eZl2s&Mv=Y{@a7a zvT?BeY4HHhc>c?ZC#wN7pf$tyAXi205wXJWhJ%$Hg<{W3(DfnZI72Q0YN;867jI&V z5+^l!MqR!9(mSqA7HSy^b=hneB#PSn>gyGl{}AzEAIEm#=?xnbF988D)S@kWF^a7J ztPi)2VcS;L9F@qWXlrzRCwXLxmD?9OfZMt75v=L0TK~DfVQaz>(e)}Tu_Ju6;d&8Q zXbxk-Lg8O7qgxJHSmHX;5JGE@WcpT7vKHXSEI0Zye>KJ2kbKv+G)&pH_U^}5C=A-A zLOalrEDZjqt^c&z`VSYV9tyV>S2L-!{T#y}8@|ML+Hhyb+p`BNaWzcVe)$fr$Ua+{ z?W>IPf+IV6&TSBk^k=)pzN882av?y}WrMzL)JCZHRv}7smk`C-!W(xt9^fkVKsc`D z1&`x$qDqtx4N>>$P`9X<`4ifD@<>{8TDMn;*%gjI$+-DEWQcHKyO z#cn%hMc1!T+c}OEEnmr-80}4ZZVZ=;g@twnd3dXGg&P~TWe;j?$!;TOZRyc4Z$+`T zv{{8a{u*Ta2!JTIwq$vWH>;6Wa%AO3R_?%E;Y-Cohs?pzDaF;=LSXt!c(3L=3q?+y zH_~<_zLASF327PS(@N`7zfd2S5*U#`&-n{OS115SoATc%fOf4R*YiK*3Uxt&zkZ9+ z8S(U)E_1Fr>S#$?Z12QRuHl|2f8bhfn- zPpu6Oz0nhTNe_C?mo#=KcQtKzoJhu9AYt0z?FB0cC8FyKl%2m-0zb-kYFM)+dqB2i z56H?>Rf-S#v#9F!*Pkuf1F|K1KsL4qa4ic8m~X5Gy0zKaT_WtG#VyO;GMF?7SV&-_FV0} z7KZEA6;tR6E6s?TSchBCyUAMd3HEd$!?$r_Vr!87Yg*8`#L%`Eq}El z^8(hqw+^9mc&lO>AI>;}3YQBQLGA_`$pJkZouScc*z87!EEPjYmHRP@LgjMx1iq3A z-8{aq=n>QoLo&Cy((Dnd@YBc&SqUjlGeim&>vs0ymyu4DUDjI%cq^{MpHEbAHjKr0 zkN<#9TG~P$CI%Wi6OLf z&{o$}B*U?3P_0+7G_&yby?z+~lU6wXp$0o>^HPx*>^J$Q_x`Sz_26&dV~PG40zs}< zjN9S+(1+m>KOA$N@g1awSdl03@bg;e6xV^q%Za#Xn^|IelD=R%fGbJU`MelKuMe$- z#g;+f|6=UF-0+Eg;tqa6*LP9oidRcpv+|szUXvaxjacQ)AiDGV9$}jZ`$NY9q@7*HSD-NPUVCkLzLG4-4vY8uo^Hi7})UsJ2ac4cB z2Y0Q_?tV8nu5Sq@-=9BSdlOAa^XwqG!j{vp2{@rUl1jx%DNaob4-yuKBy9LDvjL1{ zk4IUjd64F^7^|9i0JK&wpb@cKjGQaeD|w;cMzs{}vU@buw(ePB0p+0TA3)#IqS;5Z zTDJT`+hbzaZ*lt+@egbwy ziPZdB$}5)qntC5)#S1|xhcDsoQwHS^H+KR+)`ckcQd$B}!p|K_xe@jKwt>~w!_rE4 zDWk1~S6how}3)mD|`cZ8G{U=WdNrFar)M(~dP5K6f;0~C8-2w9V5 zAfg3omi4H-A4>C)qB61wDU2~%G*xw~D$QtSE0x)&?KAO^Dt!JDlclJ~r3f*V(Rzsg20^1d2%p({*mfja0a=vM?87aBzB!AXK`u|5!2`8IQ`jZuueF5t zZUsazEsSGg<`z6Z<=YwBf+qokfK)_G_bNwLu3WsGKsyUMT&!qFU1H`_xVfm}{O%;( zV16F=tFc=8FPcop4LW>{RA7Ps*c$0tYflmWH6-6l`wei|xNEF~=rkT6-Aek&AZyBt zTwj5|9g1?s1sh1v!WeNu=0b18v2GU0oYPO*w?T%`x5(h zKSOa&O0W#@7`5vA%9U0f3dy$63gAiD`(OC=$yBB?gUK#;Vi1b(qQPY7&|wKJ#zp081g>Ho)LTRe zuUabbRw$>Sy?Vi548CuL_$(NF1~v_jT%`pA_=h#|Wnr@sMESBoWTWS-q-LA;R?>4& zn#MQ}4S&?40xkhGndznKBP=SoHZ?d1kxh~gAQ{}cuAyqC&Kit4r8Nc@_R9=uW(IsE zp5PW4KwY7MTWe^1Ea4{JZm9uQEwoSErHS2Zt~mU8X~p4f!Qzw1trds2@HBe_W3F-_ z#pk6fXo)SzX&u>D0RD)|Sa?`tRAp-q>y-6PSbI2hzGrGd&-{4F=e+lH0Dpbtkg$a8-=sb-Nc_Udbgihk9@S(M_15ARFw$ZH=i z@r^Bi+%SWRoM!1%qCap2L~HwIUw7DuT(P-?P9VmsAYMT!TL^h>6RNPwX=@=kJ=?-}d(L;b;Jp6l-lbm~aavLDx)%rZ|fqua<%@UJiKiRaFuKxYc9! zUoHr~^hF5*JI)u^&wXJ(WeiH=ua%6MZ(t>3nW3ra0Y_c!g1FTB!qqcNXm=A6E22%1 zxK%IIL=gmQ6P_`-k67Dq^UYN-oQmR)3}o2n(B~-<$M)i?LGBt7{W8ZAi#lwjgC*rv zWb`W?`4xKir|8O8I&QT>x3Nn_!@x?1lOI9$H-x!ZZ)0%g#?UQxY*CKVitq_99`tKQ z0;1N8ioX&uzj`&~JFJE@F>Va0`dj=FGZNNI-F^<42N-$N8<}f+D zdjYZYAaC<@sJkHLkQ4L3OU|4e^o%AP-vy})0}`7_v#)}lmthd3O<-_(cJrRt+`iUS zT{ltE_Iw>14Z^>rS9!OIq0_c9v{yx+PqOJudp>Am)LzY-iRJcMNm%mldjxSTel4i* z&^ES}l;#C+9E`V{EgPyq%Z@w zb_zThG_~E&fJje~u0LKi8POjVs2*afi2+1MnF*=u6g%jOHO;j&6OvB(Cr@lNi-B3p zR-;PW&;*%6&$&jhLH83RIR)O-ckuPj=|piWfE&4Z%px1YBaB=PaW-H!hJMU)Q$+{P z@TT<@A%q`7p;bkF@Xd9LoNk2t$N&8p^6OsN_v$-0^xRgetxVkXa+K}iwk?|boT-K` zvB|BETJl$Gd)vrMh$()Ovat^g&DQ=W8Kjbth(3R|8s+C_ZcbC$nksy@*;@3bZ%qwy z1M~_Wp;q{*8p^$4TWqQD+fx_+y&I&Sa~)T)X_q@)>FD1r$G`rRt&np)4 z$l{l{EyT*gi)Xcj#F+`H0z%RqJ7zP{+@DaNzbUVcymGklo2;-|`~>*HH@PLlF*yz_ zP7cD8`PyyL+V_Mf4Ci4r`chSNK{7f=EY67HOV!a=YYFsH5vEcpt^RgLen{P37`)(*L?uMD654R1(Owu>OHITi3g$q9C`Q&MoyJ&-O&?qRl>&1KO ziORnC?uLEE2(l>Qd-mW-SA8kJYKRThi+Vkd`qk8BhIvCf2=8ZZhm>7*g8TQ~wu zh4W+)S0alT$52y>V|PF@FV+=rhFaYIi#vWw%RYBDz94sVF)Gl@&tg;7bI<=c_(68? zn4nvS^1?l<*d0+3{D5uSZ1(ZDmg0U7A9}w{*mbYt_>x5>U{gy@napbRMB|(wc-g3M z+LEq~<(;UDG~&n{F{IJ@*x8WM?p3pES+j{v7M{lJ%5hUvZMB6MUT<)($|q$l{#vit zntr&KX*l~Y=sakVCRTsYebFBP5tAn$0$croMU|YNSO+?q;sd9dgE>_Hr?A6Xyo4Tk^TZH++Cg|BTKni-JMZ4OwiL4U z#>4M-bo%}pAcG?FvL4sj86i}SUl2ltUA7)2dD+^=7n{}xU7tj~2IHSn#$|4M(Gt5f z8Ar>i6Z{j2si5$eU~oN{Tx&?_jvg8EqNXz1yjB%{_bdlGfo)ybXW$OkbD(=+x;7CO zgSNd6!dmkI@AEfRK-qEO9@URr>bEIXn*E1pt?U`^SF4v;zrs1%RT1cu<SXlH+s*T78p~!ZGGAR+@HNc@%;5?7n0=O zbcL3C%f)Xk<1L~E;FGtdPLH7V0Q5etzop)4X)y-Z-y#Ah%UJgq=N_Z=L4V7I_Q>Y+ z;Ez_P!tr9))(Qr=xiDeXC_E|y7Rqi4=g4bIJsZErZ~Zl}8XMXn-h__&k7kBAXF}p& z1m|MFD2@!Z;T(J-3BD2$3|L)g-nGK0SM_aoV)DmQBg0#y3D}jo^(w=PXTNVOD9WV6 zG#W8luJhTnFrA^DK}%;^ZMd0d15-37r2{bkMqjfBQPaP#mo@3fDL)ZiQT5tG@kYlW z$jN@?)?zwNh6Gf+5L;$EU)zX|aUln@<+G_d@0KIkphr(q#Lo z3^IZjpIy;4!h1$#3XA)C(<-aR2<@Ito&2vVY#uO4)Ji~ZBc||_B(lV)GDH&ndz{1V zygfWq;p?O?+OS3qatko>ztm*qWvzad=<2t6s|pX`js~+qW!RDoa`GVPsloR5vYk!+ zs=ZAsyj8{D$kG8K0S8dv!aV-}hV}o+FTh`45`SGAy2aZkTx0xger8Ww=9m|11c0F% z)9EYvB0v;4cs0hricw)5O(XoWfJyf9oHXpP%*)7JOwj&;6PA|$v3%5IPCLFJqWs3B_gT8eP-{(RHjH|c{zC>H-{-00iJzj}s^VLV2Y z#hhAc+LVyNN~ry~FFWFJ9;+NXi#~@9#;eA>aF5cb<7JV>mESlpED&05_wS5=O0SN( z2Nm-zfr`P=7E}g0KdDNaPPLO2get7Rg3;@~M1a1)&cNlrVH1-(?Dv1$LFSvM=#1=+D4fOwF1|j$DH7wbqBO3W zZw|7Yq!ympL&uqGc$E5}WxG^9G_$Fu5|4upri81d?V;h-ho+tT;rBW| zp1{M^OI?Ps+@xySycBrT@k8?{;#5dV7#*%QJyROz>g)K3nUO}z6^qLB~>GB3CQ_$-YLmK-VRTKM%sp?KgAMZ8xH(6C*z5$N&KTN=p`$Z;jOsYdD4mq8 zNf0taDv@SXGr^?U=zBe>c^I3uUA^1bv+3WodU{Fwo^hD=?KGGwwA&CZ<*X-7LP*Jx z<{~9W1R^D;$|>L1A7oRTvBWCx~`mI;3T@`){kJzY;^#9DFWbs;lhV&`u0{=jV z>Hg}DV_@p_eNU840X8A0J!O%mSpcCYg$!&eFTCa7+)SX8nSj%evHx#zyt#M*6)$ak zxOghhlKs=zgt`R4)D+Ltcsy zuWf`GlnIhw_gh*?e*IMtHWA~bPjs`S57NrXt~(^VJOb3mqDLpbK@U32Jig(DK+Mbo;cCBsCK z&G~Q3NENbS5Gw_dB2QOEB~?g%T>%H{T1zpb@xR7<_TX`DQTJ?Q*nNVeK`&2us}8T}rR{kPL*aI_`_!mBl?!{e#Q~ldd7&c3Lv|k-FJ<=;pPf#) zj^|9C)kqUwFO=6ngv#e7R1RVLnKmR;E`8H1Kk|hV9>JiYGc>ykCw%Hi^5p2&oY)fJ z7O`wyuY_^$*i{eld*cM)$OK5Xs<3N^ z@q5`G<;7h5zBw%MdzWVudEocj2fWmq+Ti-L;$xR|-lS2uxA679rh(cbC2s#)$sd+V zMn^N#W1NqAG0Bs@)Ev7WMl)Y4YqM!ZFGryQ{6+J*9+_EnK|$ zwY6(HR8Iw)?6afV#IZ@fd8|?A8tq1Tj~GQN04Q)t#}TbpBkkWYR)ykY`8 zY&1xU9efF`bw=)%X2TMjr;uJ7ULy?~?l;~k=%m(%t9yw<&$i=XT<`Q_eFImlQ;BfH z3lUCIwWk|CYfTnWW?$+C0q)Er+)7xA<`mT;uDB4!>A0etM;KRpRxfTfDG|MSd{H_< znMGVdO$+ZDs%=Ea`(K+nce9-rWqjUe7Htp#cn$`3)PqYJdp?&byn~@(PMu$Kss-;2 zjUOZnz5hH)J{gsh5zs6pUDTG!*u3nD^*V5TY-f?MKjX1~F-Nfv3Hx)$@m;Y)#$Ds} z)AC&Y4)C4v-tqcVTFEk%EKak{-$T8sSS%nJeeG&OVJiBX&>);bgr;KQ6k?XyOI7qW zVL>>hI{KO>u+cYrEm#vys~x(}!103zpg|S_pVDKP2Via-b31YD+_`oDP)3l`kzP%Q zl|S~zdV}gPg!R5(FLOQX>#%srDLhBjB& z?2H(brWY^OwJOJ=rGJERXZ<SeiW`M(uRvO>8Dugdh_4yh0_Xxr4NC=qjlpeD_Q=wLIM6oAjFXO_VDtj3n_9XS>!U;G2kuB=_F*0Kv7-5Xg z4Y+fFqXWw0olW$E9ur>UfbuVcNxuXq#f#$YX=`j_*%1zGwI#StXYx8bw=BxgF&YhB zxQBYwOdOmMWrOG%*03er8&!{`>{ZaPv6Vw97Ke{2&>uV z^i5b(xPaqSLx+{+;aAarxQAbTHO#}WE2#KWM(S1e3X=rd@+d@!g~kf2S@T^~g z3&SRvz16+;hv3le2y+ZqkK#5AD-B~~{4H%5_Y7N@ZXo*M2g@<{PdR4q&Up_zY#(zw zak;~eXdj*1#phXK)GbLa`XXrv_gQ9c6gaxi=n-oI42MVb$wA_2d<`vg&V=0#Am?(I z2_GMja)}7WOx^@$S)iAc@)4pUg@+^8GCR^L$MS`L82cJh>*$B+%a74Nx(vzl`p4-1 zMcGbzGpuS+MHdBASH_T^dlAX!ZN6o|Qe^7n9m>w}&>wtPjtbx#9<8fg$VPQ;6@>4$ zYq_-w$7`IF@$7_$R4s^Lt%@@@^900JO5WwgQ6k6OmKaYdNyyEl+#ww`=+9G_DptA23LY`-?ckjZYCK(ioCh5+Rn9q{;J6NP@B($; zJ}O5y;-E(+Jh~uycDOCnuHsSXnqpryi#BMSOcyB0>mmL{t%ld7fzy}}sS%UVTPu^i7-4}zX^2xJe8K%33E!^2E0Z`9ZE+~y)0 z?23g8x?)wO6>EeXE48JJrpB83X$lSi=@1Cw3nvy>z=LC<1$rs4d~B#jTaac8gO$OZ z2Owl@#G$pR1h_4MGn_s8Pv#73m%bs+5Gvc7#2K8%`iJrGVft!uE;>rd<;@V1Ger~t z`9p|GKtWR)IU6z&kau}AOo{a4VSK>>cu0x-gi|6v$~XvVN=oEg^V1HkswXD6>*4I) zcQq zy0SCQk6O$TsvNR(Qi#(sjW?`x{-hBt07CFESyiLF&e6WpEDKfdD-+B?PPWWH$_GyI zJ^FGUWQFh2l`PK{d--wxeHZN#UjZcI189(C{2xZ;S-T)emXa7S>Me-@4N;K$XZqo2 z6rOxFQRteyb@CQ70r62A^EJGbED*{YU8CPJ!2rD1S|$~~2*n8L;Z9_evcXb};dygG zJPCckQhNC%+h!iC9Cv>!jmvDN{9h2qyQpr)3!|e!BJD7K-h_k5qw@1ZiB$qd(9O#9p>XhydIA_W{PvV};ih8063X;p^);S& zLd?d0ofizCV!H<7V@Ts~b#AieJLazL1U>&t%zg0xd*-fD2b4!$abq_tyNRL;iLN^Jum)+>LXONt))X2$+{W+@ZK~SxzF3lR#53 z+?dyM`UFb$<8I~~*F-pdaNEP4O=B}SK=GdMtGStnf)-~wa2#JZTX~+Z*2A(i%Zj-= zW=w^=x*&BzRs?xEdr$o^PJh-P&FSAhj9%rd`upPd`4Yd+?ivd)Y6JwHwfpGp5r z`Dc|qlj%*gyKvVU?F9*P|3#!6r>$%JUBA*Xpl%>te|QXHo>yqtzi6F4SyvpPqhwuc z`)zNra`fBYV)r&%%!j{@kJ@3gZ}4hI%{YJZgXmi~s(^u1xI6osM0kFREg0{~`a2=x z`Jrvt_Dkd8Zk$6ukw3F)Xm2p*Z!S;vTP6LcU!t05UBmwDx>?q+{z*-+BbL_3Dhp-% zeeorJ*SK~dk52@gWy3-{Y=3HYS2Zh$>8K-Jzvv}(G3f5*V?3fheeB$?vYSF)f(?q{ z_;g{Qn?(xSLZ0td=0yYc`_fL%2!`L=tq;3*@jI_A>^74@_bNt)I2x4izL8DMVYl?n zaL~@<&3k{iKR%1MbKP?S&C`kSs#JDEHTrqqQl4hQ=xaP=*U)Hwm))hCr>D{A=@F~x zxKP!46+0Dm@Z~XP8e`qzm)%X9g0ADKm-Hn6wZl=)BCFVss74p=xzlz6ZS>=Rl@>wA zhI<-+XD|hm>%xK?^?s2k105rU0XzKOEDEP7+A&@ie(Mrd<#v}BgdrUtHXM)-hu6e` zcV#y;+hhcN#%)nd7I}Z}wqRnv}HRQZN z{oQt6KxZxddT*4qUTeiDD`)^TPF#ozc;jMQp+d+~^HX=Q)V%s8px$qB0_W?VGH?sg zcFLf%X8m0ibhI^VJ7sWroTE8S8(y`rUHH7xt=auqHAsJ!@$e4Vns-&9f&6scAlb)@ zPL>*OihfqB#C=<51K#%KelL&0HgAga%{4HUAnQ%@OJXex| z%_Tn!pB=R^=*mHW<`hHG4BH_DmJ}DghTACi0RqGocmVv8emb5&^y8Iulaibrl+02i zkqs~KAo2!~!%~uLhf)4u#+P3p9Sn%HJ)+NYe&2y)`UA$UJyfxPO33Tz+F=sKQ96<`~5468- zB-yP;-(D93f@M6X8ECZ*2NB(uYZP5uIb)jH7fjk0Zr2fZME(TQILW>;t)UJkZsBez z+W>|i4~AF`WDuKGfLnOz`W+x_A`G}?3MP{^+PQ?mLe%ThrnodUjaB_6X1MU$J_mcx z&}v?noScBf!bzzke1X$h-a2^k(~hShty$y|vhq4R+<|UzOs&lpg6^Lai)#kZ!x-Sj zOWloK@d?~lAq!1EI&RdEDmX`zVl0UP8uVz1XgE-N?jZ`T%e1d~)%i2yX|~OUobyqdGT9E4%qMbcie@eXkpa?0)tIeVJ%k59}pcu5X$BJq29d1OS6C z@5VKE@q!a@<>0^v0pM3qoEzL&PsV?aW%M+sS!=Z1=*M4oyj&~=YP7lT@?Hgoh$AK- zk&nimd}gZfG=m9la}5Z4mp;>ya$YUAxh~H5Hb!jX^ug#F%>vlfbB6PDTW*~H#Fb3H zqH4A5np%F3vU+@svbEKO+1-L&TWy$q!CvY@mRS{3AKEqQQCm99GTy{+o;GDK~*Hj_K5&#hIi#C+9!QRqz+;lWSfEw3*HGKNDV~A;9-I`;MZ> z^zmD7pxvRdsi;fu-gR*TPwU#9bfi0Vi?;XC&a+-4OmKtlZ~*VrcBOo{e&8Fr$?cPD zOB~ui>DFVkbb`(^UJvH7dLU=?SdkXPa`BZOnm6hG&^+@sjPyR-?QP|pu6&3mT! zU6A`QgBOIy5$haM?fX^96O|$O<*Dd1aw~=kv5L9@kq{@kyf*qwwQsm56LP4f658X1 z5i6`8s3M)jZp@{%wJCwBc`)eGJ{v=DeK0cI$xumWz3a~ig5}|Z4g2y{W3M0GQSTd zKbyZY5$?duGI>8&iQGGzw*4Z5ciqKbO;WT`}i zj!CcK?iS~Z#SR#o7B$?5ne$?DG)$?EKBHSMjbni}4%t2b9KxC015SPFq@NyqWnjBe zEpn38T_NQR$Jza0^e)nLpM%_-J*j*v(kcXyYD6slTkFDySdBPPzvb#B2Ff6JI|$|5 z;-Fc44M%9xXj@6XguBConlF7s8p|*^2aA^xR|a9wVJvOX*0T4hzMKW4YemITXD`1V zgW{A<6W=9d)5lS#=hVhvdh1szK*xjGee8BvF!z2wtnOq?z`+18$VT& zrbmHN3Obk=&BSoJk&$iPy7EmIAl z^1PA2(zEV(7;DC~)SlK--_gSU1kZYg&#vaxVd4>u*bMma$&eo}zwOl*>QT~AqF7+W zmPREl;G4AUkJkcnKX}7hz~{@dzNQv1&Sf-=@RMz4P=pT}W;mhF)XU~)PGZOXUS_f# zyPQp9Wl)}5SD{W>qhi8!6?(`mKwtm4Q)(r7SR zdL;6*4jif?r*J8yC&}`(B(*xMNf-Y1W`>yUZv^q>vRFJWT)dKBbm$ilP=18GTC+0N zZj5#AF4o`z#_W4E&~su>2W2Eue2@G(9=Lj$X|css+(CBfFYAh5R`KzEgL6J-d(YV3 zTul$vK0TcA7Gcw*5Lm*4Wi1b8XNq>06Gn>#4(Qp~#+(Yg-&&f%zfTFdPBfv{a7x1dl<2u{0tohG_d|rZy`jan* ziTdPVlBczBMRiqwysD%6li1}!jC!j-$3UD)8!h$_>m?yttekXH{f`!Vh&jLygR(Ny zxrNMcv{2JYP_KL`z#kn54?Zg(sHXyg>@BjN`1_d5^u@*$F*10S9{zaC3Ud@o>1r!? zHTn5lcCaSs`GE34etNi@v`|-#p)NB9%AgvQJU@1Q;|eAycLk+o2j4+y>LMA{N6He% zCe%xaJ~_nbHJ%1u?WzHMq;0X8MF{T!Kn;mp8Tegs-@S zUL{=0PvHYTLGG(5N?oJ}HV~V``$uVVKZOR(t#5po8kenaWIb%(6WQ%D2rKixowQZi zAsUTvd|tr(iwkW*0L441ah5|y2nee}=Zscjgb)y(qDVL$HM$QRR2byxq`+Kci4wx| zrQpXWQ{5-i9MmQdk{ZZ^oa0?igRh%VP`Fwxrs~oR%P?}eP_IkV!VMj`QnMcwWo@C= za!2N7-$MAIu2QPxV9X=Kv056{1Tn2vL5791cY&YWW+W{0i^gt$z@l9O9+0=Hw`Dh0 zb)1_2N;S*mYx^fwk;HBTjrn045he~2`%sKRo+N{Re%q^zpMZ1g|uS*+BJOM<5TyiAk zUg4nHa&)LVUzmVMTp(;|idq~5!KhtSgGS@d4Mb;;2J_T(He2C~$ZeF?0WiDm3v$!+8~zZ?_O*iQ>XAnGZtX-QEQD2<*QLJgP03fXLCu>l0seSuJV+0I0Y}pZHn;psY*! zHnYOYoA;JVNAhEwc@(yxK6Tw^Ll?B|AwnR+)MoF(HQrm@Axs#cIzygbpJzYsH{>M`+p5Wk`nubv>&-D)c)%C*@8BcWAwMUJr!L_d~Jf@7@RT4EUN!u+e9 zBT?SmFfKPYj9tUrFmjp*&_EqkQCk%SZ%~LW1bSc?y6jq02`yIpATWEl?4tXjFD-9d zSzhA}N6B8OBO@+GY%v|a`hr^DvJqn-7&t@4yA%A>AmACGhjv-?XQgoIj~hoO$15dJ z)gV!DvRynV;AI{ZV1RTEc?k)8q$R0?kf25=0;#VW8z zjprj#eoT00>e>M#%`eu38=*)M8aVffUr4pb(7mA>3_w^lLo?TMgePgsPL zsMyRIsbJC>x+Gko;&n911ENg+WOvDf?}CV7jAr3;wIaGKnb-(jwxTtUk1k6kHj>ss zU~JTp?jZfDB&kyp{Y+!VMOUQ~{q7o1GZ@KdTd-I42%VGDApGj3? z$H+`#bg+?pd^Ilf_Lj7YIR@U9iKWa!4~{w`Ud^e3Z( z)=v(*Uwk1KCMH3wx%MIdI5!Z(U;^B9PPffSP7l-46`DnL>pF`6-7p7aNz%1Z6p>WrR2e~sy zVtlHpsL9`L-HMBf!)^-y>3nCO?a_X6#(%22Cfr>R9_9tMH*!t*LQ1wfojc~f;rqdl zr^Z*`5B@*T!(is_2Y&|Bg5R&PVWwRX9uI4LKlnCs6niNr(Qi-)a+edseKCy1>t1#} z6YN@;ULceTFGzW;%5IqHO{-QQ7l_lfpz9Xu0GLVfS)onY?cqbQ+LNTv;{I|_@huujbX4SUqV zy)m}IXzni~W7z(Kd0dP^xzzxpigIfxzt)vKFJ<*os;guEZn{%-?)k+r6f4Em^8?!- zDrcDDFHE_Qt5g&oznr3pkJn@3;g-*x z@qlvN>l7MfH;l&DQfdC<%eL<9C|sq|2d|$0XcXN?T^=jJ#8eQ!hvm#1xLnc8aN(0ISk(o5}qcYr`i-J=pQNN*Jr#K>^0u_K8O*t$h2$@$|s2LiHRXt$h2$ zlY~i|fY9vug{8Ue6N0A|GkF;EW8OwNa^KcgwT~2BC(5giTF~Kf2WCLNLILGtv!zsUewI#EUm!HTDFL;xzLAs=-M&)exW$VVZv(7 z)#A1G)%67YeyE>ib_A3Ain;)W(#NA;h9n+g39`xq)mklX3rypN7bjAa-v`tE=M+^u zN#$|td=HMzoD*dc3d0TNB&ndHcm@e&3yy!m2P`!0&pj;{yH@OAHSe7#8cx>_&~FMfS| zz34D}on3~ncTkA%buCYaul;Rx6j{;VR?jaFlNxUV5>NF=9P_h32AOA9l#qEcV_AmG z|3O>Jk@*S2C1l=0U@6$F$q~5C=19Y4&E_07&wf2@)-5;`e-YRmQP>}f&8JgSjLnB6 z$p`r{Y}UmRMt`q^&Br=yew^?8v;ur)@+o}2sLrIuRBng*joB59^Y)=i0t|i11pBY z$!x#AKQ4MlG$!-R-1P&y!UIJFsH4x%o)h-##Ev*@UBgyb<)5bC5^kObS-^Itj{2q=YBr_dEJ_{GstRQjj~Z6okZ@vL5}SR6^(o2CL+>O)-k6g zgf;2>oI`-;_-K4OxPA1+nZN8fH`6!&9Swu7;EsQdKXB_g0QCHzTmdU5<3RA z=O-ugXe#%jkj`6)a>O&5pFC}Ry5qg4j!#qVi|Y16&3$?V!Bcco_T4Z6Rh)}N|E#%0E*=dKxeDm;+?{GrUFb86J7;P!W3oO##WR2D@> zkj-qFccR7Lc3jh2IL{Q^c3zL=zmnP)p{ z8lR0DxYs_~34(>_q!2`QeKNa_ujZW;HAWxEJUe$QBUNWYqGeD+O=oK-xroxqGNr@9t0 z4O~!_cm?+_oXVL6Bfg}Xo27WG3HvqIN<2rN*|GO{AB2yyCqDX6!?$ zpzC4MqPApoWyR{hz37Lxw{OxfUp2S)KfdPAbh={4zNe|GDls)(B@dL-5g}D%kcYff z@RQA3pUM7bebBZ(Tt~zdMndjAtMYYMEA#lMGDBM#R}!m(NoEizefZ+K`i>Ey{LhX9 z2-EV(#k^KWsSKV!HPI{vleRVN2_GadVGN3HIF3)HsY>mt4o`(ik~NrwuGO#!L&3b7 z3|i)#x8#$@MYWmpm^@Eb?`UTRwPVgZ_^K(fo^bQ2A3t?sa@1guyVYf=w+tsjpRI{L z+T4cGR|_iW^R*m%91IVv8%*VAjZ9=_F$UcOD2*P3$8=m4^!&4Ur~~jwwsHgK$UqvZ zzs>DC1!^d7!HJU8<3q zdgQ{tdygypyY~!ypW#&L7q$1_eEG+|x3$3Fw8`Ak+`hv`*~WI@+aAA;Q&`7gYZ*$MGC1=#@sZ$>hFB06tm z<_Y)}I#sy4aR)nnf;BtVy;PY`o(#-Ez~3t;e%BK_^V448WmaZ;kewP3SrG;7fXMx% z8dkTd@jgD>v~GW8;%CM6Ze&uK=5)~gAxh@63q6u)Q$urpVk(cpN<`H}T7APHZJv?P zd6tR&`30|J&P?_1`y82&lv6NY~_jr8C{l!pUwvCLgOnBnj7?aj2jYW(J;$;N%7w&M_6dpQ@T>jj~n_lRQ*dA6Tr z5Nb*0(aU29r96Z-mms9Uof%}mFX#OQcsk~3ks%Z|5k1WJMt@DZ2{MyVjTheW~? zXjd}=aSU+EJVI@$Ij6!GYBSHy857*rcBrZ4(A@WAf0xJ(B(nX9%EkXu zAhla8K*TqRDOIjtLC;z-vmO4k;vDZ}-Dra7slg(DI>V!jvTKFj_~M}IyJ;qr|k z&IoP)5bSB6k`$VU{l?YWE4)^UO=N@ctJ7`??j1j8s9{nJ@2KW8l!C_UXc&kRdr(Af2&yPWCq39{r z0&LP@EW+ZfR-HA1;m;N-DaVk_%H!kkIX(w?4LigAW2UlNvI(A8#JnLahj3?mrrW5iWug;{4&6+|WACC;bfp5q9Iv>p712xB(VetW= zPe3w6YK_T|;v+B*r%%&BaImszgg<)NS8UW`P|5ye;J@wIrb?gQU(8BUm(ug+jmjVu z^RrXZEQ9V}XdqDhHb!lur22mY_B5pW_cgp!+)9qJ@2{-NAg}UYsDeSX2HnR{dPD%> zS|#DSobM%EOERb7p<<;W%gXn`qbf{`Y&ZH)58F3YAk&~SR#j_#lzhzF@*d-0Qu zJ7AV-(}8H8CJAw2{tWYz5KMX^e00oo(3+u3+@IMNOxz{~=Mlmag6!i?!HMQ3GtURP zi(zz)PXK?-i-1Ti3)oOzkei3;k3v(?85Q|SiRkRA=)7e31(QVKagFzVLR>mJJ9%;V zsbv2MD7IqWTf;45j*o@W{>t#vqnBPBPCO>NJ{5Cb%17iSgWPDwog0AZ;1B~I916jJ z*Ar@QGoIUihVfz3@=dG%JG1?w*4LRL%9zX5fMiN-tcqxW=|(6E?iAy~`B@(kz1D@z z*D51jgB3FeaJ*6CBW%tFi>=#`q{&N26mFF+?uf_Bw-!}7cSP(&KXyuT3FW58mH7F> zABmk5JRCcTD4qw`2sfI#EQ!=!;Z^3ko^W6LF(y>bG|)M7l#DVrY!Eg4{mD7)@l@i=Qax|F5Rkitj?N{JiP(N|}d2 z)J#^lZab#L_%=2?SUgDQG%M@= zB(e>NTu3I}CRNXre?iKwd1=mHIjZ4)2yzB~caURTPCs!={!_1H9zukmbj}iOkr$8GA zOJO~gx8le7EZeWLT1ONYP%yb>S{cNk5MvM#9}l|MN~;!QX^q}ZsjVHq2HaXGuWj5> z{AhV86HN!ZGR1c@^K&FW;QuE{esKTR89IQGy8&3h{WlG9|Lw(#*=}2cPnR|Y3~>Ph ztHZv;I!9uES8)XX?|B8yZ%RC393$MpFgERTJcIaJ@r~ktNlYa_4u~XAQ`u)KZK10* zSUgoj=)`LiPpNe?P$R8OENQg4?Q_PV{EE&0{1A`im=` z*Vy{m?6C1HZ{!xc^Si8%h#l8QUW)Hv`dXF-&inp@>$PfJ z;I@;SYU5ACO^jkaqu9mmleA$$ObifLM~NV2;>QH2MAgjq?AZhJ=weYO`r$H3;VJi!QOitgxz?%u7zo>CRf zJ%KwDbGuZ|p74H3GDGiyaJz=KSWhmL@>Y79Vy&bZJ7f0Vq@W&jpQwhmRnV8_=om1! zx#K^{(#lw*U;)jh_yNIL`Lm4L?-$^MZmENc#da7?PO|SScf0D|7@7q)+$@W)gY(ns z3ow(Jg%89rv`F6FtrEZl09YTLn~dgRZpOR?l{G#QmaN7xxKD!o6MIfWAD{Cm6U6tN|<*Z5xc9%&0IY7~fYe~>#t-7gK__Tqe16>A+fhlOx#icoB2XRoyYv|>y; zD0ra|kV~n=lR?2nj$=&&4Uf%8?OD+Ags7MTwQH&N)amI3#VtZbbyUT$FM(oeF(|uX zstvj&m!gxS>dd3U2=JJEK(n5YQ^jiGmF^OsMY&qmpOGyl%;H?1*~4v{w~x9wbKH;> zoDB6wQ*XzU*KMPkjte>RXG<1a?0b067;&NP#jlDDpDvi!3rF&2Cxh-LAB}`_@W(SjGRepq&CI(jOOKsz$#h+?WVGNBb8V^XBVm%I7Y1@L($b8~TOX zP&^Z?x8%Q3yFJ2DL#kLsgyzF;{WlG6uva=AT~QmIy?_jOE6YJq%BuS=uw6vhfMgPs ziKRJz)`)C@Nh;wQx4>}km`fLC9t_8(gT+P0@{W4GZrI$gg&dmv*A;a?5%Vd&PGtwN z24%^W9Yn|d6ff<^nl62o>C&hlnq2OCztcWy!#{p9(r&oYrf$A6xauB`KiW4|8U zW|OmIJOR*@MAMN8;n?rt|o?)#=lKG zT6|V$7N4Jr-XT@D?r`X7zgQNL}N>8GTnZ^*;zzrW83?L zA2D_O#-T?E`Tgv-TEkzZ^?_$ zDIYcY&#;1;kj?K|cnya5almJ8MRX-XFqOSG70w47uy|RbqCPT)2rM=4fy* zPQ%b;oSr>ooL-1f>>Km${>jcbje+Na(G2n|8RBJ}25b;pV!J_d@mhupZZhWt2NnBF?oP+I;`GO3wQdJF?6b_NdC|dv+0jRNYqhsClbG$6t;OL*c(0-H z^Jr&J1l@lw3k}*9ruFXcYc&L`fb;h8;rh&}k z%8|LYgv@K%{fYz_cNj7^Xi<0}g}r+7z*nK9;Rvl=8m2(ewWA_*eQa>78ZtOK4h9pB z5jxdQNha$ZLL=pe5V|HtXb`#1eOm2=$S{1aFURLfkIyob4B>OL35zztxrEQKw8Qba z9()!Mv|v39r{6e2pCU`yACJ)WhR|b!#Rs5mkfttz<6Jc&nmKMn)X|i*HIVkLrU^bM zu!-;zTlRUmTLPHL-Kiid$?Y$iv~FHxJSSgu62+$W{U$o^pko_VF_fjLHh1US4n}iF zw7;Y}Sj(&7oDKD~mujOfzXJ1Gwbi)VOxW?Q$P4539JvT~u^z?i) z@5AZ&G%)l{r004LWFCQ@FBh&KnV$bcq%llDz1j3EBfS?;ECG}RR0(0;Bzk_k;2hKQ zD$wS?fu6r19r(YIo&i;fo@M9#zd_HclTGEWw*Pi|eh4kX(Q~Jid(PU9|DuK3^G)m8Ve`g7GSDhQ;NrnCYrT}oS| z_!oMqKq-qYt!=*V&-2`S=T0(d!FBid-5;+P&D?vRzvns6Ip;ag`6Cfk-#cyKE$`!~ ztj76%J>&7Ni+*>9BlZxS5_JE2eZ6-IeHi&-obSUNGYyRom7G8c0HEi;9vp098tMZ+t@@=+!``GgT04)9Tk@ok9232hT z8^C64`@gZ}E42R&*237!Ru?ci-CgLrK$`l(;L$qa!u}9=Eo<8Q8=>%oy8~u4TKJ8N z#`vr+!i-X4MyP4mz~-FqY$gah8_p17X+A9Jboi3Vy1=jMn0s{D8?k|L~FPK=rjR>v9>*KL~s6|_yY+A;KNknYv zlxtb5mi46WcJ5h?TAnc{yapA(f^Sh^!3XT-t&JYkE9r3dq!NffXu7 zLGcqbx$~RP?~WgXHvC3}$l{{-g{UK(>?5+GyEtCBIxdy{RT|I6mPZ-SM%e-FM4i~M zRiI?YcCp{HZ;%A~f|EUizs{=5N7`n<^^fNv++V(}-RfB8AoopMb>C!)Va%h`6mmap zNkQLSyz!v>m`)zAuvZhs+JwRX%Ho<;RnB*x4Xt^c6|y&gyt6cMd*+v2Pw|S0ZUO@| zo$-eno#2d*ZNnA*8Gk`=#ut&$iGu0zH|-6uMZw=F?1w8tK9stA6^U#kYa@_v2J$Cc z$e-U_=#IDS7u-LA&}!k{?qp5;%Mk9(?5POcE$}QO$T@LK` z@NgKAONyA!IeETSk1){IGO(ur`*;x7S-TwKE5)?`j1d2V)XJ9}h2F@wRz>$!5#pgP zB~VH+k){a5(`C3`7vlPtLFgjB1P0e@q;mk~vka~)rey@??mh$W%t270&dGMNB23@l zd>g-=RaaPeH}XI@dYO}g;x9x{{0d#EO4)|)NRSIq92K6B+yl~ve^%CCsRAV<=)DGA zgavlppNQTmAH9v@#H)V}2G05ZzYD*A0%St`K2{=Zh~GI5s1aCK!0$6zr~toDJaNm15i5&Jj!hxlyTtxj8N;$#Z)u=le zQGi)8I;)8tfCpvI#k{6)lFyL#qLK|SIaS6S0^I|Rwdr~HOW_D7NnqVlyKJ7lTCw*m zfeP8bU>UPpDPOpzy5JP97bB^0Cu5b?@?hZ_^h~jLSoLgZl6C?nX~ze4!;tNFV>diy zlB!{q=3Wy=#jQ)!T4&jH+M~K*l)7_!27^hG5jme*o!jIr_oSPWI&?o;mNxew%8r!x z>z%-)0$YY2zgJKQ*z!N394u$cDWf|toQ2cRyj}hYUNX3qYd9zUCg#}_d3a8$aEy-# z7S+^v*&M8&9d)Q~d5&W>U*-qkN&!0HWPoOX1>EMk9}Gd|=G-B&oPVK?SgcdkZ9{JHyctDWU**|R{(ob+KB^}tM)ziIC_p>ZI8SB9S_&Je)w zbqEzlhMzPb27b~T{cnL^ouspI;P(a8M-}0B1NHzR{EAl`gSg#VT*$roektytlGh)T z**bV)$&yCW{l2HU(BrlrzcY$E`G-|@QsK1B)8w`%KPts75%?8(w>w18GEX{|Fd_~|Lg>kFk9}+I-O5T z6s}H4^!#THc4O#x<9(g4hJJ$-mjs zW2Um5`KP>?Oa?~P_}pP@+#!e<8&f*F5h)H0+g}=_K*&}V&AtZm8hd{p|Vd8lsyd8A%^APz}>o581th!F_2!lJknLGvk zcgZYiRR8E5I!*spkO{}2ey_F{ThrC*rTh-Za1{^cemmNKJ6Z*mY~^pM|8saMb|+jJ zRduTW7VHU}L@D;J}U%Db=hv(qmCGF(u4+i%`#$<@D; zH7*vD3X?PI7A@cPbZEMVSn?jNy(~lGg%boe?MiGJKytY z@ihvcxGc)~GkD7R{A+YzLnasjOeQM?#CsltRCS+!i)z_QlT~NY&q+;cT5UJ2ieswP zN7UvcPVNP$bIU8`ZT=&e9If+_QFWfJP-iBBFKb{%e>tOnTy-v%|5pv`a3OyNYp}$v zL0@JADKPdQU{>aSruiy=JZ%jvdK5V@($eMnVlkv*OKp(VXiH~QXsK1g0Jfk`_GFO_Y&y3U zu1{d=lzRn=-?D+3K7mF&RuXTv1EVtXGKsjcQuBE=5_?gGc+U&;vyZU~PzN{{y74DC zMjFufAqa#AP7ZTP9a?rk%$i|p2cThibvya>G|9oWORVZ%e#2BI7`FCr>gyr*MQmGr zruGUNnFpkFgqgiZ8X0a<`M=rAQ`8OuAns-|r9mu)v_=O}XNZ|Ukk;rxeq=3sr)wbJ z=65)dztdb9$lR5O9ZH?(CBtd;K0<}!^*&72iP8WQjt0Qw)KSAR2j2iDyTs@PlP|GH z0+GfY5Kalb2DUWpaQAq%B9LRNR0H?%syr6y#T+Q!IX9DW za=*2`7%6;oFH<7DM5=t?FjfAOUf9@_$)YUaoxQ<=-bEf-IYZuu`>e z@{e>&WT`96Iu2%2=j7_>1@r&9Xg@zuJ=2e^_gTax#$`pFX+4pyFVVSiywpP8XtxaQjhLm65q1jd%(>9dBQj&`RizFqerq77}I@SIP})VGs9um z5ALLExlh!4cdH=d_g)bQ^kcV_VEVBDC5HLYq#t0DcQs{#3433*`=-v@C%VB@yw}?| z1|D9QR^23ajl{FP?e~gzN0guM>5rdr*BCk%Zb=&}=e3wI8Y}0&K>=l~oPP$zVi?_6 zx)rWn!mm`}7TGpWFWf=|4SpnL0DaYh*dg%sp7i~+>__e;V!1A3A*hOj`?lg0`zXCY z)vURHeNaF#gcd6z&_LnFG=ByQH#YeZ*)g%B;TL&1-)ym^1P6Vj;pLVGX|=C#<5Ks5 zMjOw!aMhBD^9kgxowu4J=bhx9BgzzZ)=qx2L;*%&45W)QMt<6%VG&7&a}xyD2(~>$ z0?z5R*Em0&YEZC>CG^qZJ^*YN6c-$X@4J2kf13bwS2x?-L@6-gce>6$UEz1|R=e@d zbcX{uQdq*t&XIv60*48~gB|r9GIbbbN6i?|)fkTkK)uE}p%a_x@UE(B)LoTOpNZDa zTPsz0;OyMNaBAH{jdC$qLy>;Q5IQ~k_gQkesFQgd!7&Zj!ab4bN1JyQYrd>O7AA{P zyDtJ3W8n5Mt@TaBN)bvY)m1BzAHv_k7LE$qtD=VWdutuJg~7dF@tb`M34*t0q=6JaR$t znndvunE=b_e5p&8kq`d>d`F+g#%iP){_it)Y^jBBcUDasX}e@(Q41gEhx$=nuA!eH z+R_V)Pa>?CWAq~EC7$-XHj&YD!=kYcgJkp>(q!oWz&Y$VwO`;AIXYc;?fx`Kmv0iSv&jVvn~=TkfDK}^AV|z$gV==k2_jjRB0<0k*Dl5A zR!e+~Vw-i8NKpa;C2FK-O7)hsQD88p=cMS9jq_i)-H6v5D{lT*?;b?E_5~ zl&BXpqzel6GNnYpY)o^A*o%Te!^8M*52pJY{WfhXSI8RFEcOWa3s-Y-1yQg#_o3JW z*d%p1`O73jYB1Uev*blK$Jh#zIDRi16*PGS$cZaS%{UPOfDJ?iXr| z*?&;EsiOTo^5T`tUSi%8#$Hq|A)S`C85G6#FM)NtP{YtPMt1kT`X?Z4-HI9pxaw7s za@g`xGTpFS^n}0~vaV=ih#|2P!RfQMz|$?UOXKwiO`?$Gvi5KjV9lxsZ@tCpPw}S- zFOxNmcoWckt0EWa^w}TVfg4>j(s$C05xb3nNC7tB>aK83!&Zf8JC^t55r6h8EDiB>*oPT%r)q6FCw8M$O;JepX~|(74NWo`3%N7i$HUe_Sv99Ozo| znOHW97{__}DXk*`wm#XDMD)3cb2i;ZMfHXqgZq&&#hMpcH2!{9wPjSa!-N7GtVBgY8)uaj zkN{B{DAzHNPco2TgxYR~mp2z{CkdgkACh2ter6G8^X>d(RQ(LI6*m)%&iGY_iAX5p zq(;j)c(6eLOms#GTGg7N);s9XU$W`=I2CJR0H~?J$swk#=T3IAHzLRyiUtV{&2&a2 znIX9#Y$Tzhr}1RB5O-OM9LLUSQ0$)tu`S#yOxf-3W}7AO0W!x8lvR6QPZcy*>k2dC z@+RAPE~lqb7(XpJ)l+nw$mGoCbaJ0Rk2(;SM&_<{^d~Z3XBw=mzQ`KrLT4p^{VnJ$ z&+-u2pyUHlDN4^RmEr=Wm#0Ag60VOVKf5-YciJUs3YR3yjSEY1fwTN(elg5GM$;U+ z)U{zG6|P9@*cGV_NV1hRnW<)5wj#uNuq3yxkkI9iCJf&=o~%FccG={$p5Jo*MTWKP ztvAcj%yOXgygX%|mTE099HHRYwIDXAU5hp+Tc``x0wYJ(;xm6SdMz}%RwkJODV939 zX)RQMCh=A>VzU-NW?0bOlk8>2e1Z6Aew&4u#eLR(T~V21ly8hBdC|!~#cP#)oWFiq zmg7O5Lith*!&#Bhq~wR7^J;?KC>dx$5s%x;hrKIqzkw$xF~8}tZBC6uS~5&0avz#sfg3n zbG0;$O*B{xEczA=>pDT^dIOo0${|CgRBS8D-R$Iksm<;KXV?Je zkbv_%z>!~)M0tP{uGcuydy{S>BP7T%!^E@JD+k3PU2;c7*Tdw zoFUf>3Hdv~U;NbGD5rnDl{PFQHG7Yi*~j3LNRwhV5qY-9%CpV>7bCM)l4s`|c{Xt* zdA8Ncvx8;w>~vqAU0~$d90Ty>*~D0RR$mV*&rWypQ{$Aur5pec9!Z|z&o0r*AYZYe z63)2tY-_*(tPEh}*#$!BP@Wap?;b~<9W0Y)g)fq4|MnY|<=Ld%l0ey>$A_Uva6{vw&$g;ZWK};Rq(sx=C(@{K9UjwJ*bxhnDppT2 zr#ZwcIe?2`U^RRVoxj1G z%A}{4(HSB=)eF#}^t8H;!E+e3($jMaa_~c=!W<>c4n~Dp(sqZ!>{7`l5n*;kdb9wg z0ZN!nBFt)MI=Pi^qK=j0B+#}=hSE6`5%2G`0&GdiMV~E+sm}5|58PK`kAyM1&YMpD zqr6hN50uIwKfQ;ikROXcIV+x#rJsToNhXl8Rr1r|VdW>Jgzg$@MdYW2(EKs-QU9)^{D^#b|vO@`2=JtM7X4@&N|k=)1o1 zzfeBt`u|Km`1n`G$_EmblZ*eakq?d)>H2fY2M2_QmE;5PCX^54DeylbAE+N+KHz7- z?f>tS4^D$^a_*FtYwk+vM_wDhKUs9g>aQmA6Fw;Y)&B&)Z?3Aq@2`@&D&+ScmcsM3 z@%wMfry#=bhtM*VE3d}#`wyTkgc=%NFTSrW#`6MSd9?w!h@UHuY^c0i#lt9mFWEr+ z{tKmY@Ozi1QT%?3)u6vde*ZOHhDG@OeTv<3-Ucf1A#J|2_Qvb$%46SFJAzRoh46 z_eTLGKt7h=FDv8s(i|_9U`g3>p;EW6@!Pm*vTN5$2!B?PCk)j7Rdy0X=E5gswQ|di zy@$PSz~#^HpFMIPLTz1SAnixG^!SEh7QOFrOz6ur@(HmRpkpp2T-X6aOpFsU~m zVNx@#y0SE>DZD663Il<|Pw3;a@(lfHG_@tHS1mv(SD~T?3D!$mp(e9l68<`!>_a4; z_ovqCuh&m_#neRG?0PLIUSij4kh?(6(pTLXESA)seRi=@$d_%jNqo=aH7~Wks$-;$ zSZaqP<8ylAT^j@J^!1Ii4=Xg3N+g_8 z1r+Q71^@Wll7792EBg;k=4mJUeHe@Usq7`d4>(6f>F7>~qw!`>LTheku%dilNBJpA z`6d23tF9hto5`-YormB&T7EuKX=;7Il(zSBoR4@4>1A|0_a~y`x%JhI=S6H8b?xBs zHyqC|c&Ip@`&63o++|7!XWRRLNBE%9!=^OwnI-?0AM+HBhdCPRX%4d9>t$)qt%Nz(HhU9sf-5g@ zg3O)m6_UL>@a}ttKBP3ypDpzBFYXmeIqPCO?LE%Z(zE)v-e;j~ z3lfZgoHxbY8)XGyYzIy^{>n%4@Ajp?)r5n`0E(?L9gdK~e|g@~GN!}lyfw?)?#h9E zi%ZY-11Uyz?&c<^l?)-9?A^iuP3lfZp3MWE^MqmhW&ZiA8&6f-lUeoNlk9WjA3DzW zzkxE??+*+|^Cw+BK@D78?|nz+z=P)yt+(uZ(0&neX6l3Q2xb?Eboh33JqUryY?o51 z&>3;k96y2u@s$0=S+X3e%WUE>$z|kkwM9q|M(7q?h_2;SOVWxkl+3XAGT#wv#_9h6 z{s(saSX#O-v9Mfp#!4B*P9j>rlY1Ja3kts!k@{s{98F8q@RHXKf~|DNng7S&(PsXK zYyalMw*T#4tNqIGJD_hzZ2$bjwtqVg1mm^80i$Enz98dn0Bc%H8P{5ajBDQ}1VLsy z(7|{?(3#}B@vdpu;3eRC5-V>?g#0ckz04H+Jn;2#a@$xS_+5~s&^wc_b61jcA(Uq( z=rBonyqYLKe^mM7`C4ASzpT7G#-i)*Ej-agrK(yq zS)PKcs|0`WchJU~3Nls=HN5DZg-B%SBLU(~{gp88aq2G^TYscfAOGiQ|Hc>B^nZWQ zzo{QhBJrYkZdjl7YjqVhyfeV@p@nDglblVs)iy7}`IQVR%*XdnVLn24u1geeD_BrG z@}+q8raWcjgOq7e_k1YsW0|3ar}2}FHKxVmXt7-_hWp#J$N6M*dr9vN@`#T@n8^IZ z{UUU)g|Oj=72ta=CJny*fbdiEYhwu5#Aq~{A8Aj*`L&hLFJZ=m{5^U+32)0U{=D;> ziEzYV>M+}s06@;dp@pyG1=BR?JWc>sNsTU)$1>{~ooqCs(azir4YF=adT*DX2Vuau zgGavdo@SXxH-BcN`4fZYOXs`8w||E=|kO@F8r!F!DxRROLPGC7g>UQ z{3e#Nv!Wi_(C`uwv@cIIY-B7cUk1evBm4ZL2%ra@?9==;4&T>ugxSV}!9Ur@*z-L0 zG54t`RqirHIoBJ1?|R!}xPUfM{-4$B;zZ#RlbY~vLGoy7 z!VTWf7%lt0$z4x;E=b#IlT4_|(j}h*}^)~YTY@L@1m`h(1_qF=#*d7WrP=|DH%vU4V{}t^?i}T+R z=hTE8m6}I29hwvdTz@eFK;E@?^Pv?hM<JBZ2>s}w-wx>CpjUhh z_(347yy$K>rfy0&AH?`r109-5z<|ve)v6PwuL-++h=Mr0*fncDJvev+*{pKH^<`AcsWu0{)ibZ8Y#C z|62=eC;PHg0-=lam$)8qx3oOW5ljgmi|0bGrFWuq zfwEG+wz3gA{ak&d|G1G}3&$4DBV`TFrzp$Uv4K0izn~HoT6KKlgQ9Y@mnywml_qnS zCAT)E9BRc)c^%8!PUSWt3$%J2imzaMR0GOd)DdX_SeG@><~Ptm1MM`>=G}bQ2Htz* z2KMVZ!w=y=ooNKo)Kaov5rr0wO2%p#FiVHniW{w}Zcd+J0x`lYR;7J^FWq9G`+w4I$5 zt#rfKO0{Ep`kapCoIk-YLTA88I-UG)_5dLs)+)HjZenqXcZYf2f}_tRNQor6r)Hh4 ziFf1^oRV!#@PL|sU!i8wd-oHzPYV+43Z49}7i~pJvL=#7%0$vg1t_F5Qq4<1*t_Fc0E}(CX$K09L~m$X-b7LCA{Yzv9qyDYodsJL5(_f_@k-yTM@ld#WNxm4~?mK!B*2_ zqC$^*CAIiHP8wA);k6({Fw~T-XefuJI!^Xrq~hbFDyF>K9;Tv|W!#7TSt^|PB-9X2 zZU72`C8JTXObU~dlj;*n_qL6urV#>E(;OMYns2Z*jq+l2O-JCd(u(P`yygzZNS_sJ z{*JTZ_%**|YgQcXhnVNYrRn5__xRNOG=aq)R|$b^a#o&)n!J1=pI`$NtKSlma}xsD zC+96xg6Iul8_^;LAn`2rviA%WqO7Ahhrv-DePv8XZzA5K4FpmGqzxako3gKboPIu4R;Rq5=YxI}r*=N7 zHQUz)ToF`j>Vy(Gqc8eFz)5=l0Mkb*YV%#SrHX|VcQVQ>u`_o())a*RQEIO#z-!eNH?~pQ;smC6o)k5y7O>Knh%grU@z5fD|TN(o-gBWq`M; z7+}1VeI)LtH0v;0(dR-by&W9a#PJ9qd8e&rY+9YWY^cW7LV2zX(3(-GEHWCIvvzw= zX@aUMzMy?=!%x03s76|WNH8^1#W)E1yL0SV?+`kUGghU3ILufNYMMPvbDXgb2?4@s zhGSJELsPB7Scj=HKJ{va)&^UroCdw@br5N$NP<{vJmBxoBB}24Er1LQL4$1<#SP0n zMW`0ATuc2fe*&&S2o%H<-~J%KPlK_nQTcjhm6aNNLJWlJsa^Nk?jp3=boVLMGTo&L zrn?k!2j$DVdvJZEJ2m0tuL!zJne@OZx@$JwDMNU3(4E#jI=f=nU6SrJOw-+{+1-k? zH)?i0L3c^h-8i!w-Cb|kUBb>zQWcu&^4UGSZcKM)1>Ge~cal{tFqQlmU;@^9_VR!q zoJbdY1KuU~0848lBf~6vy*wXd!{;{h!N=(hoV0`eH_`0BYGD|96kSA247nV)II*X^ zpGXF%)Z{H2Kp+C^*wr^NdCY0e#MVKCRBRnI6`zFqON?Z~CiV|;pS%ksdRf*})Wv-~ zWA~@#=;ZHb7X|!+>+ET9Vru1{kx(<_hMCv3xBp5fpmCddNNDWyx3HNHGMdrN+(R>! zQS)Cl5^QDPBbV6R*C2BxDNeiKWp6)9O!80r5^FFR?V>gQE?T23)YM+9o})6L_Z6MY zDh%JrzoNQ+@P$himnKCnU8^;^i9ry?D^(7O`=z(HY&is|-6U1EsZVJan5J57Q>{*} zNzsxxt(Q0T3{6#@(NrImgBg8IF`de0be?9UETvM=3H_w18wCA6ey{Lbx=ODPX!}1; zE&Y6yUj4U4|0m&=j-tIHz_*&A09Jx-2Ch&d8dl%=ubNMUa9I4^FVi$#4MD5$3JGXc zw|G`5V$-h}aso6>c|El3k3{s?-a~oUp#_kPu2Zu?R}0;f)XM1vA_VfWjr`*_Zfh;dB^;OAM=T^w(&v# z$1|H45qcQuSx~QZd3_w7q&JcNgb#Jz3UHIb7&*cmBJI&=hI$v3t}{m?b=73ZrhN89 zshhldJ9d4N$zvaV`cX6oWgs-R&E0_h2yIpgu0-VoBvsxYSXf_;<7@r$9}uEySSb>_ z3T_NAq~>+ro9vLJu9sEcD?g$%CA{C6^QghBxxzjx*@UFqF4G;Q;fXP6UY1kT`H~Q` zZnlA{rXvfXV=@4In%ho)-Wx$xz>^Bs-@Vtu~L$w zx6wWr5!Y)4bC{fwk-f*j8XXPUs-BQOsPQga!w9(EN?Rl8J;`Pj+IaQ+VBiU36`?KQ zeM)aYel4l@`{={@s$>_+>(YdQn0FLE&^OJxW+u%fnMn=MQ}{ilBCacZF~{_?2PO?( zmpyRwU?zLusKL}QEyETR2dswaCrO;_-SeT55xqz9DSQ7--s`?z-;m(SzI}>sf&HAm z!wt*659qu9-_^6+hpw5~@3qKOMB@vR6B^P>=ylcZ$ zMQ~!ONmt>?>IzE|xO&HAA6Lzne)j+dUqaW|S{!i|KW-3A=hT9_IQDn}T{ba>l$=?$ zYYVr=Gkf@&;-Q1mO-?omF8-)aLw}56)u4nV4z)=pZhp4<`gnW%o8;uCQr^k`kqTM+ zjwoR7=AHk9+EFdevl)KpO`V`9Id>alw;^}y-uH9Y6njM0O09m5%SxH^?VUh7CH+06WRRtaPv5-LJC2X02L3KS zh>XwFkhc|rMYTw)IIUWTYqhEfd%pdMf`zriwi#?!amG>Z<1Al-ASvdmp|fE>;RZH4 zQ#PA$1DL0=C<-<3l!7ok<>c;WxGe{$D+$Y-wiIZf(^-C+3UZ1qww_k(KFF`$%oZp6 zT@F44iIm7x_ewol3KJ6B;QfxN17jF$4b8GTI$QU%R-NvP2_wur zPFY{PQW3~HGFx~*$H^`gcR}33EQ|SJcSA4*5U3| z7j)O2eSV_BjXqsvT%xhE3y2Z%w#>s|r^frD-6M>- z?+`dAzXt%8cJE8PEA8Gm0GKz)WNUf1$#H+5zj^oVJ*Rx{GQ4z#;8b#205Y(TBnE%Ua+!#VSQfWq7>K-iST|ra-WC)!5aA=blZ4UptP=wOORzMFb5BxUJ}&%HmrE z`<$Y=?(5@nSqQiHZW7@47Q-ds&L47zGwxW{<@^_W@Zgo!^te2uQ>7}%mbDaEY zHasiXXD`Y4K0sVxi*m9pAMmacdzut7EZ(Iz?+oaO-Rj(00YqoTV2P9*g>eF72Qt?7 z*n3@RJ=vi`y7uDLmS5eVkoSGU2H3mdSltbK;1k$XKkiI<+_$OL(X4PYfmsX4Er*Eq zMQ1I0eJCUteQ#eU}d2dF|V}~zJ z)8+)RnafSeEG$;SiO!5WxwrG#$o&vNo+E zddTuHu+moVV3H~C1?2Pyx_;$8&=m*kSC6ieGAv2o63QpUzzun0z-M0Zy6y#)uMg^`k>0(cwn+x)#%W z3)oZIq}y2+;A%IU5hHCJ#Ubw-rE;vsd?CH%ajeG2!Fo@}O^t%Ml)|}LBT#b@RK}8l z%NrA@gzP8T5A8;+%81HLVG(MQoD1DoXrPzDb(@B68p*s!L!vn{6TQGR)EzYBtoRIr zMNaJ`G)9NFn?acIhcce^iy!iS!x%>iguC>L$r`}=leK_d#h2o(iQ)~3%s%l3C;v63 zuj{@=2}w8Kr%!ix>AJ53&Zk5b4Uvt~(LTThD0++UHY$nrf|HZ~54Fi#nZ~0z8+LLN zK>3zocV9q7*EQ^RhXBhfoWfA_2rk)S5frT*H24X%pb(@I$v&Z=quQ~rFuImQv|(;} zB*b@mJ5-WLyi|uMCE^$kvh7_1UrPaLf zTr*tXp5R0cHgc7i@ct80njID?OjLQxfgwHiVkP3^!$#@!+vaB8>EtF+7y4o1%qQDU z@fi-*7`s-{MS>b)yq(Z16DJ*o4D8g&r#0f!$Qip`5}>&)vV5DegjRn*lSCjl)tQE+ zz}*I5+#3NF8t*PNqfF6tlPIuCYr=GRzFaNV+BLDXz{q!eGVIs8QWgZzb(QrllafKw zwOtD_jXB=gGIchJYROW)IIcMP5jDutTp7>oA3UcNC!M)^!+gVb78REF0zUdal)NUiJ$$JL33esAPub_8PaIg#!W=!Assc^4lva_;3ZE2&zu!uK7N zO<{F9@WxUo8+UNI)~k8>{ew5myV#J@d6yemH%Q|6zC&Yc6+5YwSpJ}syU_GDVtbod z*4xN9^^(gUU33)7;WoQFn6)P8EPJD9-Op;!Sj=9N9XZNb{v{?>ng$O@F~+uX?-8c) zFQsXe)jG^H2A9mcIG93NoeER%+88MV3uK6Dkg|F6&gG8^l1{Ec^U(7AEe$y_y zWrv56lUrt54VK&TPQT`1;N;|{n`x9_73r}Otg1~n0WMljY=c!DX@I{H+X(Totma_{ zs9?U4#WbA8@3GPVKSVcXeGc%$yOYXnrop_~NHciycCxSi?R?LhSR#KvPiNKpAwTm` z9?mJ4(EN~tq>0V{LDXp`Hves~coUnyi@jO+v~*yFDe0Cc2(*V*tzNAyf6(mhJJ%HB z#}=-w=Ao`ICC(LAA2H(NX%suM=0*BIFNQ)ryDJE$K2SJ=7dm+i5G$hP2^gD{YwiI| zK({&hyzaOm{am!sy>Y(GUpBz6Emewe2T$Jkmt6VGq#N~` zt6{aeFDp)oXNQ%q&glJGflazFwVK>1=+BDP%_|G%7d{66Ph{65+y(pGC4bBe-L#7i zn`4WrS+G`nICNJ0P(4hI--dJtS#=l0hb0$GSbQRZdS^@+o*GKeGmxIU6$;Xw8pn(y zEl}P#Lr^QUrp;vM^_*Fy{YkXTzBIX6t2RID#y_jyinV@;+4K#2a9OO8%VIsbRxfDS zimOqA^t8)=K|nAy$(kQsGmsd!?1%?7dFqU0nC zodV<82){)KakOljBUqI-SXJ%h&kV4N{K7PPcYs&oHvvEJvkaHVF(847LNF#_GW%G4 ztjuHNx9y58%97tU_c6#=3FVp%%B|7d0+jnl_DlrjVxU~{My(O%uFRuWD7T%-)MK+> z5#wT4S6kGgb1BxEoE3kq4!}6H)fVTv4}){gT~Gj!4u#kucWOMgSD+@_l@D}_Ex)$d zk_xb84MVd5O7(B6ci-XZP8^aE(w$0pGK%i#PVNYF=PG*uH*}|$-;7$f5^P{0$XObX z=uQWZLJmWB5~JwOSoHWO>W@VaZpM`p-4Gq22ef`PdhlxRt3i+I!=ZDG}|33Vd-YAOS0?lj0Zvl7=eyg3= zhTq2mJmI$2#_FvEAKE$j*S9=~EVg109mB4r2 z-*poATYihi_Ln-_2H)NFm@#!o$$-5f=bRB}GyJ?wrcza*>T7kwdhch{26k0X~O9K-Z^f6Zv-~u^*4)ehwJYe zAYQq@-(qW986N+^GSFXT@~rc18Tyi~__d-h;?Y?2rJW<7Z)+fsI?EOP2mvyu=tuWT z;KFO|ig+Wkgfvsdnxma%r!zlNo^t^s9I)nc7a+dLk8_N<97xC^!0;d|zlnK_C$}ju z%>Krjw3vo09-PAU@nUxjQOiw`i>c*7mOc>IyAC5dmBe*5<7ZQ@c9#7}fgbzV8T$%` z8=((luAjR%SkES6-t(c>$$wDIOp6z8!bf%R z#L{JqP<|6=A&VFa%8#hY$@i%=kA?GO9KL9ylD$USOLOm`5{pUXTcJG%ZJ2E@?YH+P z+g^Hfdy2_#$9In+43E>^dCVs=zGf%?uu6|VKIZ%W!?YIzPa^Fx-$i5Evv?#0X+8NO zu#y&BvL={(j1@MffReULaR5hQ%~$RVv8DpM`;)Nd^s$G$;CxjPdl0S8216J}btUY% z4T;8Jk8%NUvS$L-qW=()l?LN>a|)1AOZq3;R2+@!i`N_Tm)L%G65x~e?vY`pbOfs^B{_eVK}Raox(M@9p!U539en&TW z-B1n8l$_ii4ihbVTK<4eV-HRu-Vgce-w&JmWIG;Jf2PjXVf|Z1)gRz%SRaaQsyBml zO)OA4^P-bIRSOW-uQK(0jf$r*rXf7s{WcVoA|5gkjb3Il&yB7~v#C{M_z8L%)gl0k;pai!iEXhk zn9gQXbDfnhY~7S!H|f_6<2R09|4Uq?kaC+DHtCQ~j@}Ngz?idh*YR^RlY?*qYpd`W zXmeJ4gst01Ib9e$wfOZE?A+xLKh^qkuZ{8YI06!2@6a{Uc7^hDO*=@K6IyTBhT1^q z!g_dFu_iHAVX*q9U9lO}w;>>~N*WL4Z|W{gl_gXy3WIv9FzAZgG=wK&J9BloolSfx z=?m&h`T|IUq_|d*cK)WkyXB=<60KC<2BzBeRSN^z&Zk2d)JI@Yue%cqgC5oy7^K}j zP<`@olVghOD(=NHYZt!BpZKCPeUOksIrA!9kGzYdGhXIYBmCU7r)M;7?JA#7%pnb7=;hQtS!&!C3NL$y)qSwI>{+Gbx%kmkmhzVbn#WRJet|#8S+&X+Y1+V$Q9RDuLs=lz?5sLIB!pYMd!zvAfk%|R{XAzb-V$>l zT6QTUtNhJk9gJ>DfR;`27DP%%6|WY_u{tXulfyeSl1*-qv^};(3+7!$nV?>`e4Oi@ z{2^K|)%*8R_4YKfdA+z!nWn#H+aEIDYNXy$z3+~yXZu^L1Cu|_Ze8_jes;iwKhx>L z$(=$?{4bhEkJZ4!idFRndH)8nQy??a2byK?TO9vDZHXeb#O)H?uTMz0;;xuVNhkY9 zn#bisPVLxw)_}St+k!O>mZuETa!~IwIhr&(**8Fz3s=S6O+G*;s%8kz5-01`8FW;i zx0U)_H~6u!{hiD>8Mw|HVh|~>020|onz`w)1JA0FtIWVx51vx82EhEwFhY4r%Z`d! z#+flgeurvEIy{L}$HqlJ-}OsYSo|FJC=WHk#mUyG)MRXuhsbozcdt)s@d^bWWX5F$ z*ML1x?N$UtS^G4r)wO=BzffV_r8gH&;tbTxJ-S>lDak#0v-dNL?xMe~)Da&6cL_zU zYE^~fGwb-$JosB82T`JBz1JxLfmhMOE24#4{ld)@UPEDn8KYXiK3btZ()yXUf|UBD z;jo8(g`6G^rzuk5jj8~eF}iBxUrG8xyaV0`@h7kNp+!u_)mY?C)Z8%m98g^t#C235RMH7Hy9i>kQVJ4$c%Xf3s- zUedPF>^;g!$FE=S-K9Mg%3s$0VJS`l@({sg$)q;7$;_{{$;@9t)HWBU-$Sl87pBj! zTud}g`d?Cr_o0$DS6;f?8gg+p=T&RrT5P`ETFO*&?JpYi?!KAuLgGYgz|Uc)F0O|Y>vyFw9r0pwLR_?s&>kzqo}3HbfGovK0vR{_IftwyiE4>o!ul$(gpcVY5w4n#x=sb8=502Q!pvCwnF2Vq$d~Lm#4%-zeI# zPiKd9$W6Vp-|b{aY8c{0@xrXQ?s3mxVl5j>0WOatBJWBTMp>R&W|p#il?f=Mg|tf- zClB;fT4Y^og5v&1f9aF{Y8wpbL;b;`e@u(su0=<(XQ@(!g=v0v78X{6!!qSx7&nIY zb-0t9M1lD%2gaK2!wp+lX1HWwpcyX&4h^MhBN3&aKO|yvA&UX%Ne&G*8_@C@$AzIyGUe*??e?a2o z3^cpB*c)@V@~)oMt|QJ1Rd5E7p5c_-SZa?XR;FL5HNX>|z%9#~l_mW&RK^ z#M2BZjP1}LY)vF+AO_LhSjFW8Ds*5o6`fdWI>SDf7aX>jNjPOhN?1rex$X$Kv5JGmd#15%l) z_ZZV)1kz4HSSIU!Jf}tHgE{i{9UK2DIKTCdw9Qt211*hT_M(Go#@*%Dg#z{f*bc~< znliyCYpmh=c=qZwvFoZCS&!dhkZk_mItDz=B%3ePra9_$=%{Coc~0Ju4#GP5`yCHY zF?I=@|4z~I?V5UTmu}Ovax0#;8jE&A3wyAwGBB=97iS;U@JehOCY4hjF5Yb6iet)M z($t|5xb-Na3FjVzn1pt7tZZx}h95mn?yYArnkg~O9@mf}GSRaE3|M}D`ceb+fRF|R zwMn99TwzQwh7)f0KDXyp7Qd}MZBM!3wRp;(JIbrm z{fQ5uySkRcX>FRbZtNkyfG)|kBi$+FF+CQ5;P8~Pjw8;pyCiAmEKA@t&9x%BYxK$B zC!SAB{kz1F{)+ZFd1HT~pwrxJ7I?*X*l``iUG zV0jjHTNBi$Y{bW=NxkD^V}Kd4V@UOD&6TPm4>_lTW{)!U6rRvGhCbe+*dnc=Wr&((i6I zW9^aXx7c(~gnl=b)9;>g`i*M)GKm?Y-yI?Gewd|5WuK4v)LW9P@(GDgi-ONuSt5a! z+)^777?RsU&G$qC7b>EK$e&H-JxgKLB)CQV^4fjByzI}QAQ4J01t_a6N-qT{lwQPL zkL<2rCs z_j^e^j+{&Q+ps#jziRQ(g-qtw*x+?g6PSCACE+!gpxHURPviwI8s%2O9G11Kbcicy zv&p(Gu5^@e#rXG$J>{>FfFzgh)yyHO`17|apD-ka#ULp{kWP5m$=)qxGhP)h6&4+p zdCAG`!UC;j2OCU=*UUb)o9QI6Av&FM{ua|3;>h-beE-+R+}5;q*;A|_Q*Ilpev^e5 z--6n$>DZF$+nAB4Q?0sZe{pP)o!FA#;wc5jiuME5a$gJoeV}!^I39Zp+EnXgSLt3@ z*3Kz!qE6pGJcsI%Zc6*-Mt}bxq5T*3Pk%)Ic`f@#g34>!Ka+I~H2bGq{*e=IYbgI{ zTiV_89^{`tY5!cHTd(oQH1pT9ex=j0vQ8AAc25yL?De2hQXt=>}8$L z*@{50x_Eunyv}!)?7<=i^>f}?MX4qma5&^9x@oIjf#WMgDsT!6j~~9lSF~{PY7D-7 z0J}9S*sj$iK7AIlyRT75E%{j-s6MvF=Rrwl+6Ia>H>|Pe%hPmJ$i1Mecq?`rXV>SX zRt;H&_dAJmh(OHAmvp_8P@;wSLQ#JMdEY{S(fzA0!MWSL3#7&vLa~OzaX|J93OeuP zip1;XNNXHrPHRi~_e>gWhxZ-ndzP9gA~mC72!9UPw1r`_g<*Zbku3~;j^O*138ImT z@Ap9&tz$q53^|?d^u2_Wz_8nLaGZn#CT^XDTdlM3vEttV@XOjs;xbZ`YW~ff3XwYN z%j}fXt`}G;kF`>^6vI8>?r)H;rKXXv3+^`HQ5V}m-zh`ld`IOS*+W%}Cl^{W7dW|3 zsB0G5y9q^zdt@;)DNGBnw&9TXW-3A)hNl@Ds9-;>X*^R$pX=(q$Fv=2b30qSzjzVhij6a3 zzm0+Jn4VUJg%%2uAS^MwZ68Ou?UCeAebtPjzRIV+z7O_b035`kR(KaZnj z!`cgxwq5M&v&Mgp(-k?~);qb$2m+z*-TPa~@1x2;DUKADU&7h4RQ`E=3t<~MMBkv> z2|Iqniu2d#R22}NHp!<%dXTIt!|IM`ek9)YIoY>Km4iR;z5;5BeNOHu@#B3hBk-hs z_(i+zX>STekbi9Zr%0H7we1f$_PkP3=p1&wpO+qqcGt7QCBaUPj~9 zEcM)G1e&(kOL%2Z*L4^{yl*u+6BI%+eaa8%D9+mu0q9vmX});* zL^rYc)eG}1nwV?1(43#%S={MWCIJc&Ab4HL(S`e#0l`b=a=^<(6AIu3e{xnF&3ZMw zWK;tL?L4^f0wG6c-NJKCPP;2d7M&B=>*zk!ixHk9^8)Z%C)wpnlgI99amxT+uM`&^ zZ16<7Ip=j5DJ8gHpE02@JJ2t5?Q?tom|2Z}L8U@Du_o5#8zVR?ZeWiot^(?{xo#I4 zi-{I^ZgTPIfqrIFNlZCGYN;!6nOQI?5Vr7~!CcN>Ja_T88^G0id2tBfL&K;e<1AAf z!|iHV--vSvCM+Bp6jfz2w$pvflP&H`L_gt(j;4|3o!q}9O;dBS0DkSl7Oepb z&=6QN)M4vjO+0*%M@>8;AXhzCVAm{k-1LAvVN*y^Fb=?j#bS?il>nZU$N+W^1@dn}P7FGD$jd#wPj3}5dnLIh(U^{31ahO$*>kZ^uqf?QXg-%q8SW%ZdO z1X}Z(W9NsF(~OZtb?%|^`32TKqY$Vf0k`r|CH(O&6hk)iD=s=l0l{}W`5)^vbE#|` z1`0EdL0%tlax1MKX`pnoE*a`+LUac7vUs)3ZT;9K{Z9TtwbEfCs=%keP5n}$g4M`K z6S&5;Cc6E_fdm_zcqh;Mbv}9w@q=?0sm@MN!Ng#Z_;WHL6~q4g@j?cuxz~=lF#8w< zFuzwCphy67jr9tyRE+{_#ZM)j$ogM$2BKY@b-uHYUD6!Jk0KCCIA_k}KSwg;yM`*I zwwPg>=Nj(>gmdIK-rMtQoA*1;welBeCf!&M0`<(1%wr4B;spZr4APBFUZi|xeM&b* zML&KJIXYLoi(^>B%c>cB7Ubvt;X~q=UCP8+ygF7m%e^7q@&|im;GRZwvbnq%j=||C zEIz^A(3s-Lqhr609KG=JD<@@#wBqS`ry4)kE_3TxuPmDozM9R?nrnmB&vHo!Ii%k% zt!M!)rp}FAJA41eqL$8sRx0)0Z{}CN)F+mf`e=WtwZgp&XY2~UEc}19D}2hB6*lyz z^7?Yf^w*bPk=TAmUf-hyflBN9A%UQ5eZK|oa#lq`xOBD0%*k!sL^Q}0Zj@^ z399+0R5%7v=)*{Wf63oNDZ;V#d7rk`7KmC+ z2|8vIwF^0=2z;Td`7bhRMcpA0$vP+3FUW;arH9R?^S&u|{Luso#(tKE3BuYwENem7 z@p`2%^g zH|MD0EhCv%AQ=2K(WHnVbRsO&B*@e|;z$KCgf=y71A#ldPwb$9N(z;xr$F%+%eAZx zYK(Zy(s@O+tRywqO**X|%-`LQb5OtZvZot;(H6KC+oD4?B1s8|0J_CHL7{wy099Xk zFF#V93cB3tG(bL2!%`=6N}Vh{OeaIKu+w()_0f!uovMJ>)6>1!EK2K>ESyH9Bn|@@ z32xMOgFf{8TdrlRcOAsU8ou@wjiD`@e7Z!OS&70xBBRi>^KJA>>di;v5|Hv3=TvW| zn1-RF12&mXx08Q^_A8lnwijk6kOp(_6eeL;6Vg+63)KAWA${x%Yo`60ebAoSYJeYV zVF>wYYzrv}W^rnwcyl7N#s%r}1EPyJ8xo5pj>#n%SmG3G6ODZ!Qf=B>0mmxVz6F&> zuak{QrUk%n@VfiYmi7C zsqm<+&>vLz4f~|5!glq*5hgSsW#y`2W`)V%a1x7C{)JFd0^{SPHw=XoWkw&Mle4Cg ze_Ens6;!#)MDXnjsdAS$pyGb(5OHXUlTWJk6Ij_Kv*usFb$)qAi~gE?MIFTj32i$k zpA}K$VXp$89ddG4XhBh)1q-^KP!sF|?}R6)+j^RzSKu3!F||5Z5I&Jv0Nu9;Rv`)A z?7dMsmf8!n6ig2j==my)9**TWRTb_NtilRgyb~pZMk`FT75ak;-J>eRz)!{@p4iVi z_tDLQtj)CYtdsww;BY(^EtzeD9-rsC+r4c70G2kNH6AE5rJ2}*EaB1~Fu~H^r3&av zPE~3a7Gb`-(feqrLf@DQN@zB^!oO%mL_%#GII~l46tePvi~M?YuRP8 zd94}RH!)`E&^5m>wfpf^)IRUgdTy|_`!Q=$Ae3!R&ZO(w;BIA!{1kWl+|^Je#Q_)g zM*HrwwfhR(!n`+L_&AO;POeX#A1F1ju8{-E5G3l3?S2c9{-4&qLES zGIQq;M4pmfdxCU0F99ZPDq|1s*a1nHDM?L4 zRQ(%DZTp`$ZvQ812eAp+q4TxPIa_HfBBiWjOEB|p$n>O)4$uos@V)tFyMudP!miHf zsskh$I#ShwmPIn0#;TZgLjJ&{oxZPRvk+3@bjT;77lHJ&NmPzHE!({lsV-K`f!2Ei z;xi_u9sX8D7WuxGj42e(fQBG5KOmwI(s+@Bn#bv0;vMWvf$ZY=2(NMSwdxhs)?`BK zY_e92Et@=(tOX2E-@!`AuZak5lm}L3B_h5ijnb~}iEZ|NiE_it@F|2Uvl?g3&75x2 zTp>mpY;ZzUsV&tQ?Q*R54NOuf%YC_x#(dUjb;G~g=rK$my+W;2vN zcPQZbHeJ$_z$W1Nu~51vIZ7i65UDm zqxAFV>VYL=z}->FLk^q-xlLs@^Q8~T!=hpL`A`Y3K`31&we&>mCRI0(T0qNCY6)yp zky_sG?+P7F0xI}>piJUS48A94s?*|~gTEy1BtO}C9BX!KJ1`n^*}+Zc`ExVpMLa;w z?RvQfXb=3LMXMwJ8R_Z$N9bu1qf>$!E4cTYtVx?RVzMR;D~S=By@%L8rLzIaX}sNl zwNwjfEbin@9^y!?`;gMhYq`|&(NQT}N`?tOR(5#PABCgsDK0eQ!9v!_pP;eeF@yq! z2)*!-X2wIya)1e#I%$6(bpr_M#gE0=54`}Pzer%-{O3f>B$>c0E;ZcdFA;H|_Tlc| z--sx|7RyRk8P-NYMD07q)c(vkwcltrc27vM;B>#z$RXECjq?ycx-sQUEL@Sc&C#mL&(U(d~ZY#oKcNDJe?4B7H;0<_PrrPG(X?_EH4N* zFL@d$+eJCcQu9__JHc+ZBBy9sLS}2X^;EHWQC^Wizxg+c{k5l~GdfD*p+vV73_!Xj zY$gp0NV)B4j>K)=@#xZp!rnPHqeqQ5LykGd-P60BUi_ai|0j8Prts6X*JbJ}ko&$a znjPfO!H3DeQS;(K4^wrXKn#&xBG*kuwtPslmD>t28$Lm3*}?ZlWxwqJy2q>5)+(RZ z2h`VL=QV+yfCjJXpZ4lb3_p%@WsJu4%TXh zAhB3cFn>*}F$u~rL~ZdppVuH#_nSyCrf1Byp}I)bMku?^^ho(0Xs(X2s;SVpJ*LlE zEl1(~H@9|Pz%6mPvZpQZDW<0n@CW%vc91_O-z zM>;V>rgh#Yz4vPsDs=U2^sQl61E#BiNLTNoEA^_jsGjt$rJaE4d!MzvMAypXTlV4T zJ;dlhcdtq8#Nw?tpWg=UKSgC9C;oX&fBOT)V$HMIx}gF1qh| z6I1vv=d1blmn!G0xs&(mW|%#U#4^E5ZP4bpS;DvAenQ`2aAn_n^*zj2a}7xcW@dIT zOp!dOEpuS-9W4hSYfrdDw47+-&tk1}!${_(g#^`pJF1t#>6r~T9@DVK-DU-@E(0 zTi9ntKP~?`cWw6fY2pU6L23&fis`_01y~@%s&-x`egvLQ*!)W}4}N27>6@OVR#o2%X!@%TfywGrUSIG-?f)QJhVu+YI9L zx(iZR3^3TmA5fs!sQ_uwt$c2q*JVbQm_ZMM*siZCzF6Cj>v(7cE9RM8JezkGDzwf;Mx^dn z?(=3dy}2ueU$_1Kn>0}9O%rYY9)3*%!$ggHA+XcQ;pF7rz~v#KkGKZ+i-075fCKqY zgq^OX#JnjM2ya%zC--riE#Lun_uehQbxrL7SGioS3-;E_RI=^mkWp{NTOLdDUalMZ^+b0=Y;&>agm|I&Nh)mqC9hj?kj$k& z#bf3XC;#u#s#j(A#hm50pzY5d#IwN3e^e%34}uGy}3KP#>O?Pm*)?(ku6N)`2$8TH<852ioC(dE6Q~dyS<*x1|;XrV|-_A?L zK(7Npy=U($bPmP&-e0(Q33CSuWxGFJxVV~l`e22#Vn|0pfEH7*|4ycyhz--0*y|ih zRP#GIk&=9^6WwIKqOUk@nxQY?d-@Fwt{5LKlCF!aT7`PvDQy60T9UkI=CO~z+9K7V z#eW9{YIhN02zt$(fjpO++DOYoGEXk4TAvh1!HpW~YUZICF6eQSU zMvl)E2sIvsnl!#K6f|CL)%cFkpR;O0Tl^Gf+2w2tf6( z&mh2aW6%45cM<~EN_QQK7ZV#TIXA+~LVEV;o|A~yd8)G{& zYZl8nu3cevKV|E*nVDV!DtL92_3a@z-aw9!^%+i=lfO!9%t?XJ_nQevwppx{Ln7uxn2EMkof7L{QWc0)03&Z;I2BI*LXkEbPP?;HB%#A5ZtV&}v- z7QdnZ!VY&II9u;dq$};k;wO%wLfYLcKIdPPbjis!i|Zie+bCV@i8@rWdEb4lGOY zvlg)ub1^@zQ;c+6yPe#Nad51ZoQHnMgUPLuP9THnG_AVab)s;ewwC85bT1FeA2G9r zLj|meVl+xjeCMZ+VyDEO$lf2z?m5f(>HY4D+1+Oi{i>>AV`k{%HPmhP>p{?9w?xv{ z=uA29bqG2HqmHspofSc$LQ}qQv7(ySYIOXq z)8C0VR~If7X;R1u&94uYz(g%|!@k1Dk_|)VhPsWA))z~VYA;;AghI^}=&*D4Vpfn6 zdUTTidOwkCH#-*#d%KuwPe|qF@T9u^#>szyz%t8$ys(91jKC29VHuYd~)Au(#&1T_>7G=*diP6APLr5 z^c@xg%MXEL#p?4R(A=Xgu(R}2HaWRt1+`E$z1G{L;~!emHC5ifbNpM$z`*nXzn9fP ziG2KS5`N22fFi>0RH04d_0FP5i5|GSq0ennYB$f#v^Y7b#@XyWmOh_AfC*>SgE6TX z;$EAM=E8za@Rnly6hY6Z)P)F%m~J2EG;EEn<8FD%YH|wF-C$;uduRHSpu)lr5Tbv( zE(e|5Np#|F3^f?WXRgca*E!^3pfDVX#*(q^v7N=~C!1?hXWDMB_Z71nJNecg+eh;W zezloj)jZAd-mZgPUwSDS|GGyqo4LL1NiPk;a^9$^^_leQdK=ATO*36&vsPxrIiwa6 zcZr_{U}|ZVOQqja6Y{kHG3*!x%XyDfNa1Dp8gGUw{O}wGE?~#es`(s-1Texlodk%q za}_xc2W!H7hdxw)%`#FvYZ9;2I(gm0a7!d@_0E<}yB?**PH0>YM7IbHLt3N@UQU;% z6@Wm5+z9ENqA2#wBrGuM+OCB&$*{AIqdGPWwQMo+I4ZoJcAkc4yhPgv7xOzAd#PA+ zR%{=7xmIV|PNNzxhFq}8+b@`I_TH*L=!Q9I(GM}o$&i#}Tpi9`Xq_iHxt9P6Te=x* z8ogZ=3!~o(F_akcVcYAXPZ#5o4ts!0-_DP5)e>9lEfg09*ran7?7o`*B*0`wOP%~z z?56FKl@Hv0HKOS4e6*)0D8C*`TLe*ptNecj$+b;TPAO(D5~xU@v;1q^zX-)4kPLUi z1n&-A$Y{+jGyS6Cqf->%r`qwv3pd8myJgl6p4_t54VYQ6HP*1j`=Pd?(VA0$iq8Kb z?_J>Is_VS}Ogb$C44fb%4D2ioGOL+Q7E&4|0|7!wFF=q00RjZ5Ypm^Bv64xs5}hy6Spacfsqr>bkfhS5ey1rW6XT6=;i6&{cC9fwl-OEp4Co=l45jW|AiL^6>2Q z-{;TkMRVp{e%J5sd%q0$3Fw=x?KShuDcgqEO2B0rmELWPgP!_aTew@grs71Mf$xYa z9?q_>VUhbxrQkll#5YBTCNmnJP*4lzQ3fuaOX5$F=aRs<(z{ExB2M`r4-GKZ6tBcR zc4UVl?o5GAwlT-uimkoG2=+EfQ86_lx!BjjM?T&lLav27s86N z)x0yJqLwi-%nGgW(jW^nNaU>2Adyj5db=^J@?q;k)r=su#$6xCXHysnq>L(%g<9rs7IPO!e3M9?)$4Z7s(E zF`z7DEi6jDA~jsNGz5D=w=sAQ_z!pvI1iW(!*M7uT3iY{3$2Nm#O$pGwA-EBX8;No z6OTaH=hK|Uvsq3{pFW`{kQly6CdRiIsgo`Scca;$gbNc2o<@sn7 z>xRFmb7*oH8*`S;VXQ)UAWK6BCKPQ*D1AUTtGo+@47PjA7>2d}G*@~Rq7FDB{K%v< zqL(@-E&#Pksb=JmuLVn9UM%QId1dhWF_M{ z+tvq0hzhGo1b>fKzzPKLd`C@b{!Y zvKD62d|GnLRQ1|i3I@0Hs*5Hw~&XcqW|I0J^PC(r^&}i>Px{<%$_^ZAGGw@0Hs92!( zsBu3L1(FnMrcA7Lq=&j#Ka?IVX7U$Rp~zaE-X)|cMRPsu9}y(Nb*uC4B5rQ@HEJ`! zGYmUg!6b&>i{+vJWp@w+foUP;{KN9<<+oEb+R6Q`I93dUKNfv1Of%{tzAZP^LpcTV*T2Y{?5Thz@cxq$#)Sf{WE9!0>iedvvZ|i-4E|lW6 zgEVHx6k-zq;i$W+=PTl;llg@U@-yr57cC@FmuBHBlysWxvLx~snS>#E$5nimP;Vpc z*TLhMHA^i^uQQ9`OcS>jn|A@L4jr5jR0)w6^+|yy^rF5XK3Wy%@>eADO^aC+{FA=H z5-dVP0I%~Ut;V?;P8~z62aIcx@U;8PLZ~G<{4S$kVl}(xvpxx4i`(^4W8EG7FK5~d zv9rKMl|7qyD1BcPAmdxnkVe<25bB0@gE%-2aKF{P-xu8Qo|fq-f0>-zLS~~~#imxjbt5yy~NO` zQ-kT%KKKkiSj{AB&li%8p}e~!Id7NAfcI*?=^+awi@*f{Nn?eR>*3OB!o(5OV*>;_ z10ZPvev`v>+Biz5^X7p-g8Llz;RAE;;cp&K@v{JywM=Lfu+#*=vQ`{`4=mpp6Id<) z!w67@2Q2>nZ-fu9fPs(I_%)A>Y?N5>PlXRYG4P>J$A*t@VK4tf@bP~H#UKxqPz;qW z{s5I-e@( zD}-rQUF~jDVNBt>+reDkr!;a)&-vZtorXwV{`*rvvmO|l;`NRAbvW;;5&NuJE!jXj zYri%0bVc@ebv`W>9R$Z4TKXdJb;G-$qc{E~EPK8?KIPFu>@-LTsQY%nBl}pL#fcvY z=P%VmtIDXl;WznnlfnwpxeZ#og->JbalfEXDqZNC04z0RB>Gsl>fj{jwY<|9wO|9{ zCQT);B;Z$$K5-q{)95>fHp{IaYz{Mkik@}6m*kb0d#(zPML3L74Tgm}x!nwIujT+$ zxfqW&4(*qthd*e4{YFo0vEet*P3AvRX9j4DF8<&(Xk(5bf1{y$#>iEBZeLpZ+j#fY znt;1uUidUq0;TmdjiPAgOrBhjfv*)wZ$o%F#R~1uRJex? zPP23Tk8$Rx+{hnCT~guW{G2^2x*%k$#yg$Z|4>do|1H!30XEc)nBA1E-T@FF4Y zsdzxZKGit`HR6e7z^_Mms&f6r$nD~1c(ume*1zBRTubsjnCNZ^r5A>r`#O{F>51g1 zkNatMwIHWAH0>hXbTfbd<6k-h0`6;phR%bBk+Dm;ifMm-cGm<36n6%e>IOs6AVj2g-DI^VC|3kGaBD7id3i{pq|MjPQs=IROOuZdHy7h4R1 ziXvBOG(rAO(l%Qwof25Y-~(96#a2o)zJ&dc7H+6?a#t}CcbggF`IUsoAK?$L5=+{g zrNP>{JA#3@us%aWF*sJ%RL+Erg^Nijb4YC`TAfFBXLn96^euS_#nzqgG~=8=xD*#! zKv%got^b+!Q8v*QVl1>uETmn67-gdR2O;b9SIzvj01doR;r))AOSK>PQSV9(k?^|E za)?%~%3WnLcf1CM3=G`{GcMl9#z z@6%^~dNO~r0H6scBBaq#+*=I$t+=;F%e_tSOFzM{=I+_91qSz-dEpZ*19yU8ro_OV zU>UgP5$X(-I%43qp12tX&N#klg=5c^__up}C}Zf2?sUVZ`s)-H3JZ1&Xph;w>e$RA zq~QR#3(-gPvb+VJb{<&+&^8K6vfC#YT5o#^JK#mC)O^=64uSJ|rmUmXbmFEQWk2s@ zb(xu%?3md{4hg@5eO#h?l{||}Neuip=uEv^dkgFRkQizD?@VnjgpVar&ilwebn1iJ z*VHC-PEO;@{XOsE>x8o9JQ^w_jwOKn2woyVQNn4wP6?fC-%{SlfEv#Z8D*EZmPU&D zuKdm6{PZ}b2F2Pti??&O^A{%b*DN$S?7=}z`3vhv`E!9(xv>quBv96*VwCeovy~<; z>`QO#ZVq&D+5?Y?)7R!OLW zRnjb2rT)!!OV_F94XM2T?y#TMwb>Pn`n}unN{Lae1WM5-SRr$7PXpJoe<+hO( z^m*+7p75k1wh1JahRLlbXVty7>Cp+ECjcpAg;dFMA->=>ox2%fY6Jsg7DME|#HGp3 zI4kd@BTlYL$9%WD*WG7an~nbBfK&V(5QjxK?#@E*#6sIdrb{uHy(AdVo(!0vG{0`5 zy!Lm~+?0*(J~X}xl0)tl5=T)gypa%?m!Tw9Ky+oO4`Txk35%!7O1vN3qu@JXhr%r( zUXSyR@$Ge%C`SwnCcH! zW$RMgXrszgtz6^5QTBzL6~_F+Yp}<%jo@N;UG~vQ#&<)GH^yyXg_C`ikzjASWD*`e zxvjuMF~ZJ!gGXlldE0%hFn2GXRmtIAX?iMZ@xY;O8Y#RpBHAAoC=s{1(9|ec&VZ&o z4b<;f>OY;kefdT_bPDeexu?5-7oM`8s33d7=a7_UP#!@Qy~nuE)=nKf*Ct*82D%N$ zv2>1m{-i=nJtoeG!P%FFZxHdX>HjIZqUE(*@rh1G*3$@adWWHkjTco%@_d?pP0=r^#Glmfn-TctpZV?--d7 zJ5hCCdYJ61>u4O$-A~&ttK_+I^JHZdw)&BXE0EJkrLY40DHaH*|Gv8|qs!$S}laZ0avFM<+f#v{VzmykpM z@=%Tfx8(8BBsho5U|-~+(!?G$v5T_7$;3496!XBtrqUF86640Z1nm74!&Lyx%1ZBH zdr|}|1PyyGJr)*5Sm{{d!mt>BC%agUd^AkauC$klPw{|nC07ZR7W!C?i0B#MFRV|y z&jUGBlck53s`Ca|FH+c_#fT%A1 zR8Z}Q=VptShg5Del6@tD*pq=fxYv9~7j6D43eLJZ9NLLMgu5yr#EJR~AEB7;=)1X59FvWwm_>J6z#&Zh}yNf+*lnDlYE*{&mt>6)V&DS8#oq61u9 zOZ<>N#7t?J*8a!ymxn~<&Q4J*x-)rpIyT9QNxvqQ7Jb#LFXnr<{upDZ5j%F`tL`kG zf`7RYJ8I-;?!RQG`fx}eG}q3vz^+_I;GOFU6l6upX#}3(0i#D6(pDqKuprQx#KdN4`*$gpWBy2E`I+)B-O4&@8-{@$G0N`8j{ z<75UFl_Ea10vL?2>M_C5$-N+^YnacQa4OVt#JiJC%cqe1@y6mEJPE z+D7rAoIQlOcdsZ3LO(Cs2r2>qPC{C3yOKW9h*HK;b2vMR3p6RuC*d~I}|-V>n$VhpN+VG z2}?msu`+SLqfFdy4Eie_yLCw5&f>qOIdkkzRJ;C?%v$J6p}`^Ru;G1IR#^uEhFHVS zhuzH_w2go(E#YLq28{g9U16oxbNaxznohL)8oq4+6le22PSTvPv+M~wYvc(#%bqZb zMXfW*>STUU6b?}i1a1)_L*P~;m1@**&qD%3;D2^70dD%I%Uu}%iLv%i_d}D&f(+&5 zbdBmj)fHk(AW1}3%m4ym*mGy`_a{0}59kara*>9H;l?8VgIlS02ENI|lQb}bVCPe; zDj)m2+MyrLr@V7eAmwi3Zy|aNXK5m5Db({AerRNn{%b%ae{)4TZO&4wIZLE!#&O%- z;tae)Pd{PuOF!-8o@S4y$Trta zNQ0n~RZsLkUbqQ0&q*4nGP~`{Us{=3ov!MMA;t+X^Q5{hu2-->B`7?M$Sh}ZSdmNe zfZ0<*{>BR?Uj)U14}(6{yjpxhwY$ee5(19pfM`GyU<`V@eGzNF;nxPw*Usu=jioM( z_Fl&_hk->ou?rUGEFGasDZ}@^I5G+vm-x_F7DhTXT$Zry^yc! zeOxd2#El6To!F;sW74O}JbXKUL0mXVCJq5Y1)PH%D}eJ%w#7{1>Pj;C{wJ6120+Q! zP5N$J}(L z9YR?|L5QdqoOYB!zghI}H)0B7@l6!KuyW8fq< zCw}5ytn7sER=Kh7l+eFYg^fo4;Qjn`qhF_)`STt%ZaPCn4By4N3BxPt{}>qleIw3~ z$^(y!-~Ww=!tY<aW)bYF?&`etW1nX?zVe$Fb&* zpyqJOu_aDUL9t*MsQLn~#@OpqERuW)>CSAjVTeV`k1J{#UiCJi@bLY6$N4^a(Cx!*u zz^o*;M4F67jxF}871*o5P0>R8?Jx0O6m;hymV0ycsn4*A&^FhhYTs;9S_Zev zF;tO3U=C3qRavIB+JD{X@U1Wz&l{d0-<;g=OM{~rO_l$eIEdliX^cwc3#eUzkSOe; zTBlNkR|!Q8aG?wXuej0ww1VJp&vTF%X(YqJ@Pv#z;*ghlt9TNPEjg9>5u*W z`@bdUU&VMN0+;YtnY>?yzurE1zl6KckwAL^tZE5R504}7+pPly4YTS(LBHZ};ZK+M z?u-H_ovQDPsO+> zFvMlSLa6zTUtZOLz|{8Kt!e^CA*Hi+Gm{KM6s zA^#A^7LazyKO*cjwv^jO{!y6QnDWof!h51E0@ z4eT3ySkwvMtuuFZRUrR@r{eCO4KJoJ_UwnsfwqbS%~G+N0GArdfsGrp*^wBoVYB1yqoxYm&AawN>@Y7 z^sR!nt$LM)iMpXxcbY6fiTov%wmLjVN};7tMKNTHiB|ykvjI@J>lJy3))t~xCd$%j zcA1jA%;s4&B(54O0zd1A>zDGKl3oy`%6^t`nb}d5PNu^0k9jCOc^`ibtCl!K675PW z(GF`_kxtJz4t>k~slk|@iN^5;#Gjpb{grYW27D`GSdJCnOYUPYKz z`~b-MK%jM476e*TrERr$sZdIvSdCZiHcC04b=*rbKC-6vR# zMr_iB_De#k&9Y0+9Y$i6UHUpM*k~ibk7g0Y@vvzX-syU2)nKXKU8(Hcoh(=|Ud4sA zSceddA*s#oHUhE-vGyR_;~_NEdv?(;BoS%s*xz#s1Fv%ld=o!H9wjn%tO$ixrFY^W zG9(9)SfsISKba`?8p>x@ppCy>{Eb;Bkv8w)pk5Sc1S5-KR9OLeTlt)8L-x@_Y7wjh z?zNdO<}7tLVqc!+$NQh^| z;LPHW#r$x$u#C~HF|f^6f;xE0CQ(0~<3ri{KD;;-OZ{`!F-qdSJ}=G*9qY3r%RifM zKAT_sY`#|^I2fb17o}AXdOPs5J3%(USRE$I?-QYf1Yp!L+lt6Uopj zEsc}?q}Jsa$`HvStW*`n^fkQXzL2NtP$<73>`r!X3{QEUdbdH9^J~L{llWHEN_N(! z2hXv}9*pgupjyf0ld`KK6f^eIZo|eSi+PK-R)LH8^JOy!(;upA-Gg*c%GSLuwb47ym+j;%h%hJU=Wo=zUqOGy z#<&#f#|+yz<82xs1Ic(xl<4wVgEOPf{YTG9AA_1kx@X}_{4S0zCi>q{%SLD~ypI9d zBRn#^3Q!p5Fj4qB27Q% znADk#nau!EHE_|&*Nr@H=RAg|f-}7fXjD=io2r!Owkc!q`@Wiz=|Bg$MV2T2WS$3h z!kpw5@Ao>%e_%Mhf9i0aRO(EV%(%7EyGY7Sle>W*mE}KvD671uWnk>petHu(XM)VL zCLctr(iX5FN)yY3TS-k^!O;6~tw1%%g6LbD7KLW!!z|?li?l|<;yy1-2WC6L?FuNT z1x3Bn;09p`t)!NPEcA3U8$`u>Cb8&lc5Lhqzjp8smx11~V%AqWOJXd7H-&!~cryc) z*J+FQUZoC|y{*$-<(;f`vJMy~1Ax8Ur8NS?NL_D1OkG|^ie$jPU)~wRFZmxmDK8I} zc2%YKMZuvZZy8$NPXGwz84RVkT&e)5#oy``O3E#Wq<7$GQ4Az6oyA`XxE0jIV(C-h zjPL67-7(}I+R?LS_(ecWegj>KWyWMm(_P*|z9Z%G*}~JCJ#mT5H|kwP#%*&kDY&>< z7dyP=X5&qkYO@JGC=0y3-2zC)Yf3vE@H8R5({8xg`_hJc>p9fgK=1b8;%r@P^*+n! zY(By%&u4$vm;X`V_WNaE#pkaF*$|FfJZYegCN`Be?)}3|~hy$AzZj+&x@`{XSE#rGJsXHSR7<;KTt_L$CAID=^t$ z)_Tb|R9%wOO$rNvJih2i&VVRRVZL*F3v*1muW(=7ZiA5)@|T6M0ALQ8YTY-crrRf0 zSpSXpqJpBEYIWlevdn*D5PIz_UWRmQOn5SS2QOK#XseF?tX(nOIL=#`zobeN_N5ed zDr)0!W3GqkTP_^&a?1gmWtI(WYn0LDejGLa!wtWZ0|&m5G#u`gf?5u7bsWG5(~Mbu zdW3$uWPnTh`sr}FwHX+#vA)u~m00{U#@?U~j6X*ejn=_LXk3u6xUZ3RKM}Zfm}=z4 zjl&xEMz)Q2k;Ea4dzW!ALD*<`F5s##9oMZ&*1D?b#(_HnQ))IQ=;0b(O*mPlML+_I z(R0LV_=LlZ**V&MYyb0^o65D+Pe{tK+0Lw%TK4j0;jn@+H8;uByi?m&v_!ag>=-R| zbD-mUI`wLLSN9^&L!A+Ms*IUAoJ61lIy5Y-%!@xPvWpr}OTre&lN(7}+=n=h{vSzO zL^y^!gjd84Ic3bBDC<;X?>hsKSrE=IjC*q=!kBtwa`bKi#94y|Y;lOIBC*x`toY^#mvP2}Y@23)AJbTSXf-krTGa z6;t>LnmzrEVgi+ zRRsR$C07kVT&k&P?+4kyCJ=>;JP~%S2KzX!1=d~TOn9l%0qQz)v^#|#E=v6CVt2O* z7xhn&Y)C!#(_|A(&JISz&3W%PO%@$CCaEKWd*rVX+v%skEoz{O?i%P3_6P_N`CsGj z0S2C?;ZsZcHNdpa$$p;qI6X2^>hxgifzVj9cpUxs^XSKMNx~dHNt%Nv@S;T=_&zGY z{8{*EJj~l|rNd+VG`^&V9G>@wNy(bK8i+E7r>%5&cBTh=Z)5Wl=I{`NaaLMqr%!rK z33Z&Ec{)3N1ZZ3*;kjh{CJk(5ExB&Ta>_9J4BQXVWA*=s27$*Dh^yI#EKQ|DIi8Wh zNk;9@GVj2sZSmnarfr+BK0hNGTIZX#XJFbsMeScJ6GzdsO`gxG#@Am>lYC^9X&bZi z1nF;9MCP~`?9++k$eLHTy4Qv=Y)6e@o3oLd#3hsLWJHpFrn4@%mojwk7w{*6ejdJ} zZG?ThiaQBKAuCJ>zf0x|#5S`GVd^JQ>;?kfos%w6zglSLclB(>x*0!{s6_Q7in;^zl9$)6boEp zDV9;%86BgOeVnH{!D3*`Dc1^1xjrX0#yCmI2W2$nGFnjWvoOv zntDkq@0(Zg|MU0X1{=!dlmwjMLZ49?fodauNTPL#Lsu($=MMW0N#b9Mo^i&qxZ#%p zss&`p{Ot2X=Oy8G>Wre6#3JG^df(5nl|PDnbj8GojD-#T3fv(&q4w}})*T|7kGqL) zm)H}zLx?>II3w!^Ap+3sellKkg`iiT1^FgR#x4;m@MW&X+)xdn)v_S|hJKS1#D+%b zENVBDGiP<{G;}*pq4 zBhBfrBN6!alJUNOQ$rZ<`;UpYx%b_yjO6k$`~U92z7H`c|N8)5i_AdDOU^K+1}MjN z)f|%_m<${+Q$9X8k-uY5^u~Z5u+7l(K_o#yF+K)8$6D}jJQZ&F3V+M# z`U*?ezbM>-mdyvn(Ug6W9v3Nl3;Qw#W%qrV51{V<0vqV#mXY+OxL+eM%G=4j&C!09 zGjGNHD)Db6lz(vkZO4ga641f)l0Uy*-v zvZ}-`)bo8E(=tBJ-|v)AkN7zGu8-dBcj#epw~s@x9doyRSDjJ3+&z5EZg+4z1Nd}@ z3fGj|gMX*?EAtl`d+-{dW0XC(+WTkOev0+7!4I=dOp(P;MSq_Uq3aIt%P4oBo!Dnd(HV`TaCS@d6d0IR>x}bbCM5H)r@Db`4uOiT0{@*)gYdjYelnES))yZ zw?#@+(G|;a%hkv?)>Naiu7%*CKnv_Of6vR%3;0VTI9?NiE;qZIoFz}AYBH^w5c>}A zdbRq7AMa!I^DVOPSpEDhTDNfWK=aOC?HTg{BpGUw?1b3c_OWU--7bBbvA5NNjEeR) zPmy^%t}$~Ed5@uhMA|-9$}g_GOGNzcFbwxYbgb5s;;{>GN?W8+Dr69IvY%5s$K<)W z8w(UKPT7szqUzUHJSbcha_ilN6lEtHY7phSAUs&1UB$?;s&>ktZ{%QmKaP>3V^U%M zJJGwVCUYZU@HZUCI1%JCN4Z0_+6|cedM9@bedz(a*a@?bdy}@vF#SU^sIeaSG-KZ~ zD~NsTI49S}p^@aY^`+3qT|D zodFe9q}v8wt?*P$+7tsebEnb|1&;@KAssW&Q|7?Jj)uKUi~&T2mvQ`~@Ur)khIEb@ z5-T*f5IunoxW^CR$rvUuYaJtiD#iS1J-zSnmNdsw;ac5sOjBV})a5&rJlMY+Igx47 z9~&cKQ>8Z(6khzH6tTr0|IQC%wo_~(jW_v5!fu8@<4s11-e#58=s2HE zFaNC7eAZh0tks(#9q|?>JF2&15B}NXcUVni%hCr=yl=g2yd2cj#UyvcNJcG;M|B4Lf8djX$D@~2bx zVjp=OfPvxLXkoS%Q9I%N4o*fJBTp^YJ?fP-H`z(WKOm9=hn-#n^D|m8IxX=_w5;fmk9e1xuC?+Po=|*|b)KLNm zZEN}kXUV^?$T0Jywcd%0$D&H?oP|P_V~(9+CmH&)LlaordOB(j_!quTTDRB>L)xE5 zNhknIMTWk~PQRj{m3vX~0^COSUx^kt>ve^m z5b!00U#Oe(V{N~+JWPgKCj&kK6C$m#aZCgIt87T{fLaQ#}3XchGSd- z@j7P`9YDC`P^ETBXmLZFV5Z3xKKZJXDx%TJZ9y1-Y`v;?oh2#-LH{aj(SlD0E14vz zkj)$63d`5|TNb=9Q{jW*>|^tNeYJK6h)B|9g|p;uY0m7@&f$lcxX(|}-Xb2C8DH)Q zOGA7wGc?AR?`W$2OZVD$eaof=5r`|5D@`OVoRF{9AcmH%VshieE+f6e*3=GnJ$Ztn z$@J=c-gJ4j$+E6Ezrb_`)iezN{nCZ#tqm{QU|LAF38>9q9Z$0f_%rv;qw6Lhw-v@t zc8eRU2k+yeGhi{Ae1k&$D8N3HvIao`iod z$f-)@wHope`>0F4?CcUANkF+(J#{AI6B5Y+rZ(lQj!x)#1n*a3w*CPQU5561TQ*-l^b@sr% z>^>u7;bd=?L3a0Aea1StHB(>8)-O4pu|Y$^VtC`ln1t1-b>8b>bE9utq*WLJswEh; zX2N2+UQ|@>Rtv1r;1g;I?qF4_+zlX!a-G{~C@tCysiAg9QoU-&K!E=FI454z!L8`M zka;Vqwz$hUE78Q5WHVLfA(=vCQjGepk|(YtaZl{?`BUA7?^yrHaI)ulUTEP(g%-9+ z0q0}rm<~g$)pxj;%4M;Mf_Tv^`-|4BmqRZdxR1#Vz3LRfzwyn!pj8He|LhrjIx z-fj})18+&Z6_t4uc-!LS?gk7f4lm}a-N4(^0la-}Jmgc_Q6>;z9e)=_ARj-xI6y%g ziW}-upV34ZTa;7ULr!Xd?~Eo@Ne{HS`77hacuz0@2C&}QqcPB^c+ZkLB=#2dHvZ|J zVR6qr2jHH=gaj<^dCke415AyHdxlRp{12p|#T~{Aq}lktwgmpKr$V(bp@oe8{sgW-eWu$J_fZs%qgnC&zo{?oWe%BgeuKf2Ya1?F8&&`6d@4%Q?E7h5;fWSFXXn1 zp9k*_PvpXVrf?Z7e5epTUTxsXx?7&C(Ni1G-=Ensp-!YrIuU8_lkT(GtqL2ivv#ti z*DKAL@jnKJ#R8dZgtf3Rg`RL|2)${2_qF**9*x19RNscQOnDQ!ql7DzX*F_iJyn;S zfk%W8t|WZ@P`u#YQRW2)0rjD`7kjX-GbXydllVcgc*jUS(w5WY2~n|Nh5ZhReH29TvmI4t0pCTG)RmvvkV zn!J8wlbxo?4w~d6HQ7fEJ3gezuBjN5y>|*o4?fCMMm9NOl(Z#ju3b$Bqr60l0$kNd z5cE8kblJu+DCn+n^J}T}zQaU{KTa-ztB2v_i8md9-BAe z_KUAgqy_g0Z?X{56P|Lc^XKFG!)|J-nl;n)_GIdx065iBo@eGQ9(VJV)mdrY}%llNgIS{aku7dnVq4-Yl#e&qJ3oFO{ zMpX!f#nBiz4lp2`h(c2+e{LK$q>cq?a?edT16>dggw3Z*`ZS#NU_A+hOesewK~o`D zzUssY95Vq`n6XOESe8dWlv>HDP ze2D*$aZ5;~cGtE8FaBVU9dob_P#p)O;m?uVfh~cZtpO?1OZx+p84CVIrI7ft36zO< z3&0=F;)xtCBi_BmSN_~^J*RxOGPAC9vR8;h)8G^Ryg@_}YgkX?vot|x;GLR269R^- z3pZDq?N6knh$+rsyycFhFC@Lkf5FF>FZb@U(UP3iEv@)fcXM36YgW1z^o69)YPUL% zyrDIW4rIN_#MRuHgI*aG>`fwE4BXv?n4q)-s*oh*Ds1O<%$meF-V$-cR=x=44p26m zG@Q?nJ4CF41$-X_t;V8PC%QFw(km$J%6BjH-zmI*zaQFLdqH2}1|8Zq_m$K>R4iyr zy2bF%Wy!iq`8ivI{G4s&`8j8e&d;guEcCJavq;M%@LU-8S8tHR&6Y~_6J}E?%2uwb zpLtlV1Zf@dWzp!7Yzm1Vnmv8W-Bc^=W|q?UNY2uNqWEG>i^*Eh;5zpqm!7y@NmXT5 zFv~k+mKO~J^Rmmk8vm90I!Lnbeq+F|)6#xeDSoOGW0I*n{(km!J#W^!fZM`W% zRj*Q@knJkN*w(A69xCf~swQ({H?JDIT5}pdPul?ZED)DvstO#%E1z? z3eNw5saTd3Q?Z2FqE_!m8ash8p4ENH_P}687M4b%_EWQ@7#OMclemtnS`{`c%vW+% zle*5l>bX$RJrq@6{7*VDq5wmQs<_)sA==f>wAF=k_EJxry})-0 zB$=OP9GqYxp9P4g?3%J4HgXr*9IYDVLJeFgr>&F?mnlbPzB}sTwLfXfPboxP%0=Uw z?cT}Ij~?_BdXk9d(i*{&vd|RfpXrfCc-j~}v>tAm+q$C4oE4)1k4A9rxD6py#8 z)1>}tdI z$Wa*Apyp6&7X>QsJe-%Zdk8tKzn%I$Qjzcu>peE?m5fZ*N^tk)G_ zy+FVI2lStBGxlR6D=aq}*fZ_^$O_0F%ywU3HKdbjrsAjc`A>zOO~2+$d(C|fJXn<- zo{(0s3_dl#7m{IbUXX?#9b`ePxoyO*SX9^lPEZzGBvi-Qoow$G?S4DObkErjcGYnpWEGLV(a9YLY^OJYR{;d!)u43qidwN5J`nWp5uFlK z<@XobIP|SgnjT-`iSoNQTPXB;%`gzzi04wwoYhq|R01i9Ec-rfOj(0e$`m-MJ5*y^`RUu7{%v~E zA77#6y%j@~G{RNhM%@QmF~(fHKmDA%29BMRu5xlR`={TO4%KOl_~c|zZ>DzoC%=CZ zf&L?6@iF` zmr)Qohw+2v&w$M+^n4FiNdsqGw`OqyCec=)#NXWFrpgjc<~+0)D&GnLW8ND-X2s(R!k-|ZZmKo zn>CdCO?(h PHbqPi@UV$kcQ3c#|fb3E`aLAnupC`1TAVXEd$ilJ6{FS52a_^_+e z`zwAhpA1jMFLsIRB*U=aeqgOebqFvKCx< zblqyYZiPMI4L)i0RJfT>YUlzDk(Q+QZ}B~F(rYrmb5~Ptb+2B4GzJLUTW0hIR&dh^ zLN)Ea=ACR63*s@7z>K9|9Z=(+a?~|I^~jXky*qSH=+Rru`f;~QPc;oMW>>FXfaz}2 z>Ubf(_W2PjkLR=kHl8@(ylnWF5yS}+mmr>$Ag*wdcz$Lyw89XlsLABe;fo}s_f@V5 zKLy0qmh$-pQ_fugy3H?;ATA_bX9V%~)J7N+5LIf05yU}+eEkJRgFL=Ug7~XO5U-OU zjsVWl7xiv%27a!i{xkt#;CrJKsY*#?Oa$_GeIa@@xVerUjygvEZV2S>c=}qz*$pru z1(n;yZefad^pzxU4PdA;Zzb=m>4{$YBzEJEJDaKpKSG^aU-o(8EG|Pf2tbXyo-5?Oegdk)*{ze)Yi@ZD)9Zbg zyN6RHsk2&hV!Ff={g@96H-)@Y!4Gp(uaAijaO%jKNnd~J!(S8#N7$c-0}bXg@US9nPJ58JrQrf3NAuUCz!R82yrI!fL4DISOsesl|KF zUk7)X+Yu`S9nWQ>bN}HGfu19?TuTVD@)GM|bCOZ{bwXpPC<+Z*f?e(8wn5gdC{zwd zIwuirmTQC{15x+f4)I#yEdCxRQY_q(b6E+1*B5{?lN1JmV^|H(Ifi#LQih!{0#K_J zfMT~jrn8E{-3UO2-)J^-g9~Jps{7x_e4N=-)pATz+pPQ(bp}4fAi1S74YLj8A@`*B z^iFl|o3+33g8e;zEkJRfowGDM9Fpuqoc*5OBPcqF&K=q3QprAgL%ndyn4F4pR9m@6 zqL6AT32Rjmp~=`4Q;OHa>sIz5f%}c($mR6VvCCcXR(csu5B4o{gsaLVpR0t?jpWmE z8(2~f4@JpG%^o26%yAb?V(Jk(K;qFWp%=7}R_fXA?sOJ^orYK?VT$cW?rAl0Pkm?* zu}66-!4b*_(~ug>?yu~fgxGUd<`8$M_Ypocj|Xm-WFq6G5pyK+++szZ2zO(lH;W>V zs&C-KI6?0t@{n}C#4~59k#{mD8+k`_mb~*lz=|G({h6=G>v#>Q<86)hh7Jnt&WB4mET}-2yjv^pFBi!(} zg+{~!R`aLAdl8o0;QImNBqtIo>8u)D5<^}qTt6|jKI9oW%{Wy?BoF+8H;@NB(NE-o zP5EmlDsRr6qA#mQ$ODqns-6BS%c#Zx_>Mx$Usenq`Z2?v@1lh{OF3L|J@LN8Yr_9J zB}QY~;x#iqEdj1j44tb+p`TTT2gR^>q~Sq-Z>dY8iQK>tH>rqpSLZ`@7%L7>bX+Wk?p9M7{O zcK#96A&3LdsHlXJp#k#=P0~|I3DTei0>Mh=7fJ2)&qe=G`8tPB8TzW)UFogYZCL=! zIrO^uslyKaeZ&_C3^2HuNELKth_d8|*W5wl`6ghnVBrl}&S8ZUVZ-Mi!%C8jNy7urw79Q%SFq#!l#FPw zm-iEa02rEONpNT_&TfVFybANLwfBA+@b*7sX?S5STiN8=kWh%Yu`ptDQ>G5;3etBQBv#CfvAHFJ zAI9d^#4i)GHPhJKW{K68zO0UqTd}x3hqY}ZMah=+XT}9`FL}e2-2_-6%{mn2(udxT> z^5vckHfck(hWCVbHUP^wqKF6pC|8C?E$cp(OK23y*J^qWHwP8-HTxmw43mQmQWa{P zF5{{3B}lDz*Qy1 zZ>5*RE%Q9|etE}LTTQsLtGxJxRGJ(if7?V5@|(9&mI~!Lf$XP znX&jGme|1SM)wy6TAL0It>TQ&z#g#0lzr0v3!VpzjLdm9L^&qr_$JF7N11ZXfz0u< z8amAJM+|fPC02PPb8NvThL%e&PN1HbnB!ZD%<+r^%>l<8Fl)2lhClACHT3IzDwuD=W+PuUtIo|vnxEzL$9M$yqk-rI4;{;3P=QPM=2VE^ zZS!7Y#9BY$jsy6;=y?2I)aUnNPX9XvinOlQ3h;aX`9Z_)?c;Q75*D<)yZI^b1^b#L zBp{M%gBMmh1D9(>%kc3tOtX>bj*q}z1ojGAx9X2-Z#o?=)l3lvuw`+@;>ac{5tl$k ztF>1+3mvxK*pqrfFZ*kfQ?*q92r>}%akdH3y47TcyrmIj+dEaLm8PRpo@bcNG*psR z-o={@X=zP!-v?GuNG)oFyW!0Q1+7cMvy#M^ASI+(L|Nfwr?J5)T~f6&#G zA$C&n3L&|;tn{uIleI!TWGC#IW=uInVf#xW`56(Ut=y0FRger54)O`36E1wD#L^`- zX~WVr<}X#aOr!0Kg=s8(DVFXuK|8>M3ZM+zvI<^7<0$fXyVy_f*V^Oxuv=)ONcW}V zGVnNq!4k+gTk=ZS+LC$6@Lca<$W~cATXyPpXP}Egc|YSH&RG|Ib^=Al0}UPV#@-uA zmUc#ZcjguDcHxlp7kqC{W{GFJU?k7>UcJ!{So}hJ=lw#wJftDmLhl?cHXhY|m?Clw)5g2AV73zJHNB@W#b|nO?|Yp4t`br1IYH!l zYe*8C$n_eLYxBgY??sdA3s;7+p8QE0SWemdrP!)dL;1@|^R?F<=3w_}O;UUCPvv2K zk>9qeuH{D6b=5BShPTq|A>Pt!Yk#keT1xFK`B!b=<>A|CR5~siZ*H(A#3#eYn=OeivpFQmDID8Wj}^l+*y1Uv*o*Z(U@OnXm@oXAx<;FnPI&*(04Mm zBD<$(%)ihy0I718oUh}YOD@t_GR#tgtSjIzX2m0 zhem^>>qURADX0INipnvmMH`%~DSKS>2iVEiBmDuQ#wu9vR|uaT_yb%Ub;;K=0qxir z41oLrMzTEz`UAua{qJIF8Lf7-it#8+qRvxjDfA2QGu3XrBkXSrSgKzHWHcJ5r3SLB z7A~AfptrUaAvClmy}_Bbp>WmSwDe8TdgH!{Hff8j%h>#t7;S{jpYH1oC24SS>sfvZ z*g!~%oi7Dv`2KpLr&~suQ|oAMEOTl!wZ&gJQz4uYi<-6+!eHDS{2d zF0^O}Lqk^^b|KE~rMh8P(fgrR*cc2OjK1Jlo?GJ5guxKv(v+D;!%Zc^GML)py`ZHr zw$Wy5qND)l#rm=tcW#W6naj%zlaR1~pciXT^d8rx@y#X9*Z3_Pmd(Uva+;fp*1Cq? z>qc1X`e+}-DTS)yFPn<`hvwe1jqahz=pLFZ3V}>Dd7sdbfGs|$!*a)Q1Ih$#b>14$ z54!W-&3I^5F=cAD)pNNqe8kf7|Nel#EEGd7Hlz>`MQ?&;R`QvzA;;c@zQj zvyT>T+7AVx*61s$$=ho5i$vuqL^G3IP{fZQA2#d|i@KTva?xmbU6cf&Ex)IPtl>ceG42FsH`x*KB3_X(eNL$&6;EbqQ}!H^th}aK8s^fgNNsP z0n5f1IR3bZ`5ZT~b-aF3Cxc~Q;6d_M}}hris3_x^}C>OvbyYJ8d6ukQH? zbDWJnoBLtbt1D&FAA*?IIn&m;>o{d|1Hoq@@r%j>$7lHq@xl#Dd3wA;ikDA$)FcL2 z4%4hwd8G?ZsT!;{+sS>?|40V?ZCHVI!12sb;A83q;4`dEc5-I`nv9VmozCKV-obp) zb3QNHjFH<*TvL;?evvFo9;u-s7uokj6{kEgtd1TFAQXjU}PVaP0PjeS06 zguH%GH%F;5La(F95F!B&X;jA0=Pa&f4_Uxwa0x^Y2ghx-h;(LMj89{0Xu0)jJc@g5 z-G}>$`nFD_1yZ$mA3)8zbcB5jA4_QfuBh>#VAehsAe81h;|ft7{4VB0Dn)nRt-0M2 z7M_vmtlmcuLLm9xXn;=)@>uBNsKz^U10-V5N30BeRE>i^g8pw`L~lMWd$5{oQn9gl zUBUAON&L;p;CLomC>Ls#8H`9?7XpAf`Cj5S6!ahSr@KvlC@3_nXESdYZpm*=sjrM^ zR#(h>l^6i%2>^YEL^%$i@WLdK>QUH${<;{~Y(Pzk;c!xsFz{KGaf1uX4K4?E!VONA+pX4e+huf`bDi82Ud|$~zU~ZM zW66C3Vispeqc<;wv2$|94L*3qS$vM(V$$Ak0X3h$8%dxnWrEt2Q6@HQ6j1pPRabg1q^TmPm=};HwLKPTvSf)BhaB}=PODzP_zA8@1EV0X zoHR9?`pFQdRzsYk5GTWG8`zsl17i^-Xk z;2dgB#S=7CN}}^jt$_OXe6*C96<&~PrRz|?EZ)EqwrLdoDPW`-Qam{ElGFAU2W z@do&|De_Ki;ExA%`4fNk%mSho&nZ}N!tzA}pY5{i)_Y!hJnrq^>AzgyvloR}bpG zE`9Y#_w|y#y6C@7&>4dMWah(Q<$zcu$lg0pHi5szE<^Of!fx>IBx_@Zk^A=azn3I@;*H-okI0LEJF4v{lr0Rxr2 z(9e_BtOk@fLIbTHQP~67ei%RCqI`d_`A$+Zf69EXqU8hT`{7o9zD+zGZ^XB;+vAV; zo1$3gduTgyfP42+eL9AFcf@z^jynCn(MoIEZL$ioM-Q#PfKd&4Px1sn4)V>d@{ZFW z1N#R1*6e@dova50kx4TV0N*4h_m}E@jRn5Ihg#Sq;y#sn!H4Dk2FsU}`ky*3z-8!~lK6eJr(q@S7!hcy`si1|`#8eqg%wKA5M$I3yuG?7RKEc@N zC{~)GT(|c#vI4>J5C=Tfoq-SN%RmzoD`{euX)nCHSWW5piI^A38JMcKC%J=+VleZY zDZ7T(!476wl1lFe?Mm?D2aMMiQpr?$FZ(~1S9-2#PhW8V*ZN`X3f?rmVtmNG52+mj zt;zKzUvi_0ndSA8q05zFO$1ZRB74}ti*S!7`B*hYM%cN`FG+V+?R{8keR%`~E4a`Z z*rZprg4JdP^(xoier@TfSHCg#tH&_+(L?C%9?|`8O!tj+4;;m^fiHPg@3|wiQ}eZo z$Z1A+l&VP@7ZHkf@6K1$iRZ8${JESJg3V=^TyPj;UV|R!&KdSm#>=sxVuihraED`Q z^-r=4q3rm%{^XJ`>d%jolGd?4=#Md6L{LIW`y`Y8EM7Cu$=|C`?G~uL3B#Dr!`9F) zgr{5({%zg^lBI^49eNJ+)0b%ysK_NZs_mWJxkr78o024|yJ|0&T%;?%rv-6$K>}se zCg@LSb$X>dz*O3x@JX%ne9{CV*0!RGlBh0&i{iO_rvV`gk5!BFASyb_->SkwQ)|TL zJ>$k)cMJJ5cCo(;`PH0S&2XA(8Io)X$lOLClmTisW)7S$c30vECj8w=Zp7@-T%obJ zPW2k<8Fqz=pI=L{`C$AdJ=PFHytDYLjNRz5zQ{%J(j8`1ZFn%U!g)eQL_lwN(N-Tx z2*nmUkEn3JZ0$=ZQ$kPRVC*5QcNmAwn$)tQ9!hrL>Y!;OL2mdZ%M;7DB~7#|*L5IY zZ4jkN$f}I7H@ym7l&lU)pObV~%_IKDDx*}Ks-%qSf`wk=zBwxTwT|dl7BGQ2YKJP4 z)Z=r4J4#K@1MVKyT@~03I3NY$`}t2lanFg*JH#}9k>9$zZRdMvc#~~-g`7L<#Pc^~ z$?5@4kqpeen9}in*W#?20x6_WpRw|BsipX*~i)!w*IMn0`_%fAjq_s|? zUGH#mm+%@2Xj0N(cl(f)I~!Bm*h*sQCj*Emp`Ja)j+pLZ&SI&miuP~WJ)}xx(ar7) zendZb6F{wZvR`5jR2hj;?Br(}5or?KUC6bYq`K-mBt!(jEN9?aWRd`K6lu~d-F8)Q zXD)g*k)~*HqdCg2aPe21Uvcjqun&7-PJ{P4KbU6S=z-ZXQUg5_S>QkPbApporV