2025-10-17 16:45:00 +08:00

128 lines
6.6 KiB
C#

//using Prism.Container.DryIoc;
using Prism.Services.Dialogs;
using Prism.Events;
using SWS.Commons;
using SWS.Electrical.ViewModels;
using SWS.Electrical.Views;
using SWS.Service;
using SWS.WPF.ViewModels;
using SWS.WPF.Views;
using Unity;
using Prism.Ioc;
using Prism.DryIoc;
using DryIoc;
using System.Threading.Tasks;
using IniParser;
using System.Net.Http;
using System;
using System.Linq;
using Newtonsoft.Json;
using System.Collections.Generic;
using SWS.Model;
namespace SWS.Electrical
{
public class Start
{
public static void RegisterTypes()
{
GlobalObject.container = new UnityContainer();
GlobalObject.container.RegisterSingleton<IEventAggregator, EventAggregator>();
GlobalObject.container.RegisterSingleton<HttpService>();
GlobalObject.container.RegisterSingleton<ConfigService>();
GlobalObject.container.RegisterSingleton<AnnexesService>();
GlobalObject.container.RegisterSingleton<DataItemService>();
GlobalObject.container.RegisterSingleton<DrawingServce>();
GlobalObject.container.RegisterSingleton<LoginService>();
GlobalObject.container.RegisterSingleton<NotificationService>();
GlobalObject.container.RegisterSingleton<ObjectTypeService>();
GlobalObject.container.RegisterSingleton<ProjectService>();
GlobalObject.container.RegisterSingleton<TemplateFileService>();
GlobalObject.container.RegisterSingleton<UserService>();
GlobalObject.container.RegisterSingleton<EnginedataService>();
GlobalObject.container.RegisterSingleton<DrawingCatalogueService>();
GlobalObject.container.RegisterSingleton<WireGroupService>();
GlobalObject.container.RegisterSingleton<LibraryFileService>();
GlobalObject.container.RegisterSingleton<PlotLayoutService>();
GlobalObject.container.RegisterSingleton<PlotBOMService>();
DryIoc.Rules DefaultRules = DryIoc.Rules.Default
.WithConcreteTypeDynamicRegistrations(null, DryIoc.Reuse.Transient)
.With(DryIoc.Made.Of(DryIoc.FactoryMethod.ConstructorWithResolvableArguments))
.WithFuncAndLazyWithoutRegistration()
.WithTrackingDisposableTransients()
.WithFactorySelector(DryIoc.Rules.SelectLastRegisteredFactory());
GlobalObject._prismContainer = new DryIocContainerExtension(new Container(DefaultRules));
GlobalObject._prismContainer.Register<IDialogService, DialogService>();
GlobalObject._prismContainer.Register<IDialogWindow, SWSDialogWindow>();
// GlobalObject._prismContainer.Register<IDialogWindow, CustomDialogWindow>();
GlobalObject._prismContainer.RegisterDialog<DialogTest, DialogTestViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogTest2, DialogTest2ViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogInput, DialogInputViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalManagement, DialogSignalManagementViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalNotice, DialogSignalNoticeViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalPropertyhisAndLogs, DialogSignalPropertyhisAndLogsViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalSelect, DialogSignalSelectViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAllOutputSignal, DialogAllOutputSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAssociatedSignal, DialogAssociatedSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAutoArrangeLayout, DialogAutoArrangeLayoutViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogGenerateBOM, DialogGenerateBOMViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogRefreshAnnotation, DialogRefreshAnnotationViewModel>();
}
public static void AutoLogin()
{
Task.Run(async () =>
{
try
{
FileIniDataParser configIni = new FileIniDataParser();
var data = configIni.ReadFile(GlobalObject.configPath);
string token = data["LoginInfo"]["LoginToken"];
string loginkey = data["LoginInfo"]["LoginMark"];
string curProjId = data["LoginInfo"]["CurProjId"];
string address = data["Profile"]["strIPAddress"];
string port = data["Profile"]["nPort"];
string dbType = data["Profile"]["nConType"];
if (dbType == "1")
{
string strDomain = data["Profile"]["strDomainName"];
GlobalObject.client = new HttpClient()
{
BaseAddress = new Uri($"{strDomain}/api/"),
Timeout = TimeSpan.FromSeconds(200)
};
}
else if (dbType == "0")
{
GlobalObject.client = new HttpClient()
{
BaseAddress = new Uri($"http://{address}:{port}/api/"),
Timeout = TimeSpan.FromSeconds(200)
};
}
GlobalObject.client.DefaultRequestHeaders.Add("logintoken", token);
GlobalObject.client.DefaultRequestHeaders.Add("loginkey", loginkey);
var loginService = GlobalObject.container.Resolve<LoginService>();
var flag = await loginService.ValidateLogin(token, loginkey);
if (flag && GlobalObject.curProject == null)
{
//第一次要在后台初始化一些数据
var projectService = GlobalObject.container.Resolve<ProjectService>();
GlobalObject.curProject = await projectService.GetEntity(curProjId);
//var obj = await projectService.InitProjInfo(curProjId, "");
//var treeData = obj.First(x => (string)x["Name"] == "图纸树(按目录)")["data"];
//GlobalObj.treeDrawings = JsonConvert.DeserializeObject<List<TreeModel>>(treeData.ToString());
}
}
catch
{
}
});
}
}
}