diff --git a/Admin.Core.Api/Admin.Core.Model.xml b/Admin.Core.Api/Admin.Core.Model.xml index d7bdfd0..21ab0d5 100644 --- a/Admin.Core.Api/Admin.Core.Model.xml +++ b/Admin.Core.Api/Admin.Core.Model.xml @@ -466,6 +466,76 @@ 是否已下达计划(0-是,1-否) + + + 班组信息 + + + + + 主键标识 + + + + + 班组编号 + + + + + 班组名称 + + + + + 班组负责人 + + + + + 所属产线/工位 + + + + + 是否标识 + + + + + 创建人 + + + + + 创建时间 + + + + + 更新人 + + + + + 更新时间 + + + + + 开始时间 + + + + + 结束时间 + + + + + 吃饭时间 + + 接收从条码系统获取的校验字符串 diff --git a/Admin.Core.IRepository/IRepository_New/IBaseTeamMembersRepository.cs b/Admin.Core.IRepository/IRepository_New/IBaseTeamMembersRepository.cs new file mode 100644 index 0000000..f6b7f61 --- /dev/null +++ b/Admin.Core.IRepository/IRepository_New/IBaseTeamMembersRepository.cs @@ -0,0 +1,13 @@ +using Admin.Core.Model.Model_New; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Admin.Core.IRepository.IRepository_New +{ + public interface IBaseTeamMembersRepository : IBaseRepository + { + } +} diff --git a/Admin.Core.IService/IService_New/IBaseTeamMembersServices.cs b/Admin.Core.IService/IService_New/IBaseTeamMembersServices.cs new file mode 100644 index 0000000..d2f8ca7 --- /dev/null +++ b/Admin.Core.IService/IService_New/IBaseTeamMembersServices.cs @@ -0,0 +1,17 @@ +using Admin.Core.IService; +using Admin.Core.Model; +using Admin.Core.Model.Model_New; +using Admin.Core.Model.ViewModels; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Admin.Core.IService +{ + /// + /// IBaseBomInfoServices + /// + public interface IBaseTeamMembersServices : IBaseServices + { + + } +} \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/BaseTeamMembers.cs b/Admin.Core.Model/Model_New/BaseTeamMembers.cs new file mode 100644 index 0000000..d81f2c3 --- /dev/null +++ b/Admin.Core.Model/Model_New/BaseTeamMembers.cs @@ -0,0 +1,92 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Admin.Core.Model.Model_New +{ + /// + /// 班组信息 + /// + [SugarTable("BASE_TEAMMEMBERS", "AUCMA_MES")] + public class BaseTeamMembers + { + /// + /// 主键标识 + /// + [SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, IsIdentity = true)] + public int ObjId { get; set; } + + /// + /// 班组编号 + /// + [SugarColumn(ColumnName = "TEAM_CODE")] + public string TeamCode { get; set; } + + /// + /// 班组名称 + /// + [SugarColumn(ColumnName = "TEAM_NAME")] + public string TeamName { get; set; } + + /// + /// 班组负责人 + /// + [SugarColumn(ColumnName = "TEAM_HEAD")] + public string TeamHead { get; set; } + + /// + /// 所属产线/工位 + /// + [SugarColumn(ColumnName = "PRODUCT_LINE_CODE")] + public string ProductLineCode { get; set; } + + /// + /// 是否标识 + /// + [SugarColumn(ColumnName = "IS_FLAG")] + public int IsFlag { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "CREATED_BY")] + public string CreatedBy { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "CREATED_TIME")] + public string CreatedTime { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "UPDATED_BY")] + public string UpdatedBy { get; set; } + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "UPDATED_TIME")] + public string UpdatedTime { get; set; } + /// + /// 开始时间 + /// + [SugarColumn(ColumnName = "START_TIME")] + public string StartTime { get; set; } + /// + /// 结束时间 + /// + [SugarColumn(ColumnName = "END_TIME")] + public string EndTime { get; set; } + /// + /// 吃饭时间 + /// + [SugarColumn(ColumnName = "DINE_TIME")] + public string DingTime { get; set; } + + + } +} diff --git a/Admin.Core.Repository/Repository_New/IBaseTeamMembersRepository.cs b/Admin.Core.Repository/Repository_New/IBaseTeamMembersRepository.cs new file mode 100644 index 0000000..baf732f --- /dev/null +++ b/Admin.Core.Repository/Repository_New/IBaseTeamMembersRepository.cs @@ -0,0 +1,17 @@ +using Admin.Core.IRepository; +using Admin.Core.IRepository.IRepository_New; +using Admin.Core.Model; +using Admin.Core.Model.Model_New; + +namespace Admin.Core.Repository +{ + /// + /// BaseBomInfoRepository + /// + public class BaseTeamMembersRepository : BaseRepository, IBaseTeamMembersRepository + { + public BaseTeamMembersRepository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + } + } +} \ No newline at end of file diff --git a/Admin.Core.Service/Service_New/BaseTeamMembersServices.cs b/Admin.Core.Service/Service_New/BaseTeamMembersServices.cs new file mode 100644 index 0000000..1719cd7 --- /dev/null +++ b/Admin.Core.Service/Service_New/BaseTeamMembersServices.cs @@ -0,0 +1,32 @@ +using Admin.Core.IRepository; +using Admin.Core.IRepository.IRepository_New; +using Admin.Core.IService; +using Admin.Core.Model; +using Admin.Core.Model.Model_New; +using Admin.Core.Model.ViewModels; +using log4net; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.IdentityModel.Logging; +using NPOI.XSSF.UserModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Admin.Core.Service +{ + public class BaseTeamMembersServices : BaseServices, IBaseTeamMembersServices + { + private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(BaseTeamMembersServices)); + private readonly IBaseRepository _dal; + private readonly IBaseTeamMembersRepository _baseTeamMembersRepository; + + public BaseTeamMembersServices(IBaseRepository dal, IBaseTeamMembersRepository baseTeamMembersRepository) + { + this._dal = dal; + base.BaseDal = dal; + _baseTeamMembersRepository = baseTeamMembersRepository; + } + + } +} \ No newline at end of file diff --git a/Aucma.Core.SheetMetal/App.xaml b/Aucma.Core.SheetMetal/App.xaml index 2103d9a..246f96b 100644 --- a/Aucma.Core.SheetMetal/App.xaml +++ b/Aucma.Core.SheetMetal/App.xaml @@ -21,18 +21,15 @@ - - - + + + + - diff --git a/Aucma.Core.SheetMetal/App.xaml.cs b/Aucma.Core.SheetMetal/App.xaml.cs index 83eb26c..6577f85 100644 --- a/Aucma.Core.SheetMetal/App.xaml.cs +++ b/Aucma.Core.SheetMetal/App.xaml.cs @@ -25,10 +25,29 @@ namespace Aucma.Core.SheetMetal var host = CreateHostBuilder(e.Args).Build();//生成宿主。 ServiceProvider = host.Services; - host.Services.GetRequiredService()?.Show(); - await host.StartAsync(); + + try + { + var loginWindow = host.Services.GetRequiredService(); + if (loginWindow != null && !loginWindow.IsActive) + { + loginWindow.Show(); + await host.StartAsync(); + } + else + { + // 处理窗口已关闭的情况 + // 可以选择重新创建主窗口或者退出应用程序 + Application.Current.Shutdown(); + } + } + catch (Exception ex) + { + Application.Current.Shutdown(); + } } + /// /// CreateHostBuilder /// diff --git a/Aucma.Core.SheetMetal/Assets/Images/login-background.png b/Aucma.Core.SheetMetal/Assets/Images/login-background.png new file mode 100644 index 0000000..40909f9 Binary files /dev/null and b/Aucma.Core.SheetMetal/Assets/Images/login-background.png differ diff --git a/Aucma.Core.SheetMetal/Aucma.Core.SheetMetal.csproj b/Aucma.Core.SheetMetal/Aucma.Core.SheetMetal.csproj index 7d30fc0..b70cba0 100644 --- a/Aucma.Core.SheetMetal/Aucma.Core.SheetMetal.csproj +++ b/Aucma.Core.SheetMetal/Aucma.Core.SheetMetal.csproj @@ -25,6 +25,7 @@ + @@ -46,6 +47,9 @@ + + Always + diff --git a/Aucma.Core.SheetMetal/Common/OSKHelper.cs b/Aucma.Core.SheetMetal/Common/OSKHelper.cs new file mode 100644 index 0000000..abf924f --- /dev/null +++ b/Aucma.Core.SheetMetal/Common/OSKHelper.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Aucma.Core.SheetMetal.Common +{ + public class OSKHelper + { + #region 打开软盘 + /// + /// 打开软盘 + /// + public static void OpenOsk() + { + try + { + Process proc = new Process(); + proc.StartInfo.FileName = @"C:\Windows\System32\osk.exe"; + proc.StartInfo.UseShellExecute = true; + proc.StartInfo.Verb = "runas"; + proc.Start(); + } + catch + { + } + } + #endregion + + + #region 关闭软盘 + /// + /// 关闭软盘 + /// + public static void CloseOsk() + { + try + { + // 查找并关闭 osk.exe 进程 + foreach (Process proc in Process.GetProcessesByName("osk")) + { + proc.Kill(); + } + } + catch + { + // 可以在这里处理异常情况 + } + } + #endregion + } +} diff --git a/Aucma.Core.SheetMetal/Models/Result.cs b/Aucma.Core.SheetMetal/Models/Result.cs new file mode 100644 index 0000000..a91f2f7 --- /dev/null +++ b/Aucma.Core.SheetMetal/Models/Result.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Aucma.Core.SheetMetal.Models +{ + /** + * 登录返回结果 + * */ + public class Result + { + /// + /// 返回结果 + /// + public string msg { get; set; } + /// + /// 返回状态 + /// + public int code { get; set; } + /// + /// 返回令牌 + /// + public string token { get; set; } + } +} diff --git a/Aucma.Core.SheetMetal/Startup.cs b/Aucma.Core.SheetMetal/Startup.cs index 1881835..74e02e1 100644 --- a/Aucma.Core.SheetMetal/Startup.cs +++ b/Aucma.Core.SheetMetal/Startup.cs @@ -10,6 +10,8 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System.Text; using Aucma.Core.DataCollector; +using Admin.Core.IService; +using Admin.Core.Service; namespace Aucma.Core.SheetMetal { @@ -101,6 +103,9 @@ namespace Aucma.Core.SheetMetal /// private static void AddServices(IServiceCollection services) { + // עķ + services.AddScoped(); + #region ע //services.AddScoped(); //services.AddScoped(); diff --git a/Aucma.Core.SheetMetal/ViewModels/LoginPageViewModel.cs b/Aucma.Core.SheetMetal/ViewModels/LoginPageViewModel.cs new file mode 100644 index 0000000..758b691 --- /dev/null +++ b/Aucma.Core.SheetMetal/ViewModels/LoginPageViewModel.cs @@ -0,0 +1,136 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using log4net; +using System.Windows; +using Admin.Core.Common; +using Admin.Core.IService; +using Admin.Core.Service; +using Microsoft.Extensions.DependencyInjection; +using System.Collections.ObjectModel; +using Admin.Core.Model.Model_New; +using StackExchange.Profiling.Internal; +using System; +using System.Text.Json; +using System.Windows.Input; + +using MaterialDesignThemes.Wpf; + +using NPOI.Util.Collections; +using Aucma.Core.SheetMetal.Config; +using Aucma.Core.SheetMetal.Models; +using Aucma.Core.SheetMetal.Views; + +namespace Aucma.Core.SheetMetal.ViewModels +{ + public partial class LoginPageViewModel : ObservableObject + { + private static readonly log4net.ILog log = LogManager.GetLogger(typeof(LoginPageViewModel)); + protected readonly IBaseTeamMembersServices _baseTeamMembersServices; + private AppConfig appConfig = AppConfig.Instance; + public LoginPageViewModel() { + _baseTeamMembersServices = App.ServiceProvider.GetService(); + AddTeamData(); + } + + #region 登录 + /// + /// 登录 + /// + /// 选择的班组信息 + /// 用户名 + /// 密码 + public void Login(BaseTeamMembers team, string userName, string passWord,object parameter) + { + try + { + //获取Token + string url = $"http://10.100.72.10:8080/login"; + var content = new + { + username = userName, + password = passWord + }; + + var loginResult = HttpHelper.Post(url, content.ToJson());//发送用户名密码给API + Result result = JsonSerializer.Deserialize(loginResult); + if (result == null) + { + MessageBox.Show("登录失败!", "系统提醒"); + return; + } + if (result.code == 200) + { + // 存储账号信息 + appConfig.TeamCode = team.TeamCode; + appConfig.TeamName = team.TeamName; + appConfig.Account = userName; + //跳转 + var window = parameter as LoginPageView; + + if (window == null) return; + window.Hide(); + MainWindow indexPage = new MainWindow(); + indexPage.Show(); + + window.Close(); + } + else + { + MessageBox.Show($"登录失败!{result.msg}", "系统提醒"); + return; + } + } + catch (Exception ex) + { + log.Error($"登录异常:{ex.Message}"); + } + } + #endregion + + #region 关闭当前界面 + /// + /// 关闭当前界面 + /// + /// + + public void CloseWindow(object parameter) + { + var window = parameter as Window; + if (window == null) return; + + window.Close(); + } + + #endregion + + #region 班组数据 + /// + /// 班组数据 + /// + private ObservableCollection _teamMembersList = new ObservableCollection(); + public ObservableCollection TeamMembersList + { + get + { + return this._teamMembersList; + } + set + { + SetProperty(ref _teamMembersList, value); + } + } + #endregion + #region 班组添加到集合中 + public void AddTeamData() + { + var baseTeamMembersList = _baseTeamMembersServices.QueryAsync(d => d.ProductLineCode == appConfig.ProductlineCode && d.TeamCode.Contains(appConfig.TeamConfig)).Result; + if (baseTeamMembersList == null) return; + foreach (var item in baseTeamMembersList) + { + TeamMembersList.Add(item); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Aucma.Core.SheetMetal/ViewModels/MainWindowViewModel.cs b/Aucma.Core.SheetMetal/ViewModels/MainWindowViewModel.cs index 55ed23b..652ede4 100644 --- a/Aucma.Core.SheetMetal/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.SheetMetal/ViewModels/MainWindowViewModel.cs @@ -13,6 +13,7 @@ using System.Threading; using Admin.Core.IService; using Microsoft.Extensions.DependencyInjection; using System.Windows.Threading; +using Aucma.Core.SheetMetal.Config; namespace Aucma.Core.SheetMetal.ViewModels { @@ -25,7 +26,7 @@ namespace Aucma.Core.SheetMetal.ViewModels private BomMaintenancePageView bomMaintenancePageView = new BomMaintenancePageView();//钣金设备BOM维护 private StatisticsPageView statisticsPage = new StatisticsPageView();//统计 private SheetMetalPlanTaskHandle _taskHandle = new SheetMetalPlanTaskHandle(); - + private AppConfig appConfig = AppConfig.Instance; #region 构造函数 public MainWindowViewModel() @@ -43,6 +44,7 @@ namespace Aucma.Core.SheetMetal.ViewModels #region 初始化班组刷新定时任务 public void init() { + TeamName = $"班组:{appConfig.TeamName} 用户:{appConfig.Account}"; // 设备状态刷新定时器 System.Timers.Timer timer = new System.Timers.Timer(1000 * 5); timer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshStatus); @@ -146,15 +148,7 @@ namespace Aucma.Core.SheetMetal.ViewModels string controlType = obj as string; switch (controlType) { - // 关闭当前窗口 - case "Exit": - if (System.Windows.MessageBox.Show("确定要退出系统吗?", "系统提醒", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) - { - Application.Current.Shutdown(); - Environment.Exit(0); - } - - break; + // 打开软盘 case "TabTip": @@ -174,10 +168,7 @@ namespace Aucma.Core.SheetMetal.ViewModels } break; - // 最小化当前窗口 - case "Minimized": - Application.Current.MainWindow.WindowState = WindowState.Minimized; - break; + default: break; } @@ -188,6 +179,53 @@ namespace Aucma.Core.SheetMetal.ViewModels } } + + + #region 最小化界面 + /// + /// 关闭当前界面 + /// + /// + [RelayCommand] + public void MinWindow(object parameter) + { + var window = parameter as Window; + if (window == null) return; + window.WindowState = WindowState.Minimized; + + } + + #endregion + + + #region 关闭当前界面 + /// + /// 关闭当前界面 + /// + /// + [RelayCommand] + public void CloseWindow(object parameter) + { + var window = parameter as Window; + if (window == null) return; + + if (MessageBox.Show("确定要退出系统吗?", "系统提醒", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) + { + appConfig.TeamCode = ""; + appConfig.TeamName = ""; + appConfig.Account = ""; + + window.Hide(); + //跳转到登录页 + LoginPageView login = new LoginPageView(); + login.Show(); + window.Close(); + } + } + + #endregion + + #endregion #region 打开软盘 @@ -413,26 +451,16 @@ namespace Aucma.Core.SheetMetal.ViewModels } #endregion - #region 时间显示 + #region 定时刷新时间 void timer_Tick(object sender, EventArgs e) { System.Windows.Application.Current.Dispatcher.Invoke((Action)(() => { CurrentDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - try - { - var list = _sysUserInfoServices.GetTeamData().Result; - if (list != null && list.Count > 0) - { - var sysUserInfo = list.First(); - TeamName = $"{sysUserInfo.TeamName}({list.Min(d => d.StartTime).ToString("HH:mm")}~{list.Max(d => d.EndTime).ToString("HH:mm")})"; - //TeamName = $"{sysUserInfo.TeamName}"; - } - } - catch { } })); - } + + } #endregion } } diff --git a/Aucma.Core.SheetMetal/Views/LoginPageView.xaml b/Aucma.Core.SheetMetal/Views/LoginPageView.xaml new file mode 100644 index 0000000..fbca6dc --- /dev/null +++ b/Aucma.Core.SheetMetal/Views/LoginPageView.xaml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + +