From e8a2398fb8bab2f6af4d40d435fd488d39f29922 Mon Sep 17 00:00:00 2001 From: CaesarBao Date: Wed, 19 Nov 2025 20:57:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=82=E5=B8=83=E5=B7=A5=E5=BA=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9mes=E6=8E=A5=E5=8F=A3=E6=9F=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EquipBusiness.cs | 9 +- .../Impl/MQSignalReadBusiness.cs | 18 +- .../Impl/TBSignalReadBusiness.cs | 53 +++-- .../LanguageHelper.cs | 57 ++++++ MaterialTraceability.Business/MainBusiness.cs | 16 +- .../MaterialTraceability.Business.csproj | 1 + MaterialTraceability.Business/PlcBusiness.cs | 1 + .../UpLoadBusiness.cs | 15 +- MaterialTraceability.Common/LanguageHelper.cs | 13 ++ .../MaterialTraceability.Common.csproj | 3 + .../DAO/ApiResponse.cs | 34 ++++ .../DAO/SysUserInfo.cs | 20 +- .../DTO/AppConfigDto.cs | 2 + .../MaterialTraceability.Entity.csproj | 1 + .../MaterialTraceability.Plc.csproj | 4 - .../IBaseServices.cs | 2 +- .../ServiceImpl/BaseServices.cs | 6 + .../ServiceImpl/BaseServices_Server.cs | 5 + MaterialTraceabilityUI/App.config | 14 +- .../DieCuttingProcess.xaml.cs | 4 +- MaterialTraceabilityUI/MainWindow.xaml | 3 + MaterialTraceabilityUI/MainWindow.xaml.cs | 52 ++++- .../MaterialTraceabilityUI.csproj | 51 ++++- MaterialTraceabilityUI/ReadRecordControl.xaml | 4 +- .../Resources/2025_09_18.snapshot | 1 + .../Resources/2025_09_18_15_03.xlsx | Bin 0 -> 3405 bytes .../Resources/GlobalClass.cs | 20 +- .../Resources/Lang.de-DE.resx | 165 +++++++++++++++ .../Resources/Lang.en-US.resx | 25 ++- .../{Lang.pl.resx => Lang.pl-PL.resx} | 27 ++- .../Resources/Lang.zh-cn.resx | 25 ++- MaterialTraceabilityUI/Resources/翻译.xlsx | Bin 0 -> 9820 bytes MaterialTraceabilityUI/ShaftInfoControl.xaml | 6 +- MaterialTraceabilityUI/TJJProcess.xaml.cs | 2 +- MaterialTraceabilityUI/UserInfo.xaml | 115 +++++++++++ MaterialTraceabilityUI/UserInfo.xaml.cs | 189 ++++++++++++++++++ .../ViewModel/MesHttpClient.cs | 75 +++++++ MaterialTraceabilityUI/WriteInfo.xaml.cs | 2 +- MaterialTraceabilityUI/packages.config | 14 ++ 39 files changed, 955 insertions(+), 99 deletions(-) create mode 100644 MaterialTraceability.Business/LanguageHelper.cs create mode 100644 MaterialTraceability.Common/LanguageHelper.cs create mode 100644 MaterialTraceability.Entity/DAO/ApiResponse.cs create mode 100644 MaterialTraceabilityUI/Resources/2025_09_18.snapshot create mode 100644 MaterialTraceabilityUI/Resources/2025_09_18_15_03.xlsx create mode 100644 MaterialTraceabilityUI/Resources/Lang.de-DE.resx rename MaterialTraceabilityUI/Resources/{Lang.pl.resx => Lang.pl-PL.resx} (95%) create mode 100644 MaterialTraceabilityUI/Resources/翻译.xlsx create mode 100644 MaterialTraceabilityUI/UserInfo.xaml create mode 100644 MaterialTraceabilityUI/UserInfo.xaml.cs create mode 100644 MaterialTraceabilityUI/ViewModel/MesHttpClient.cs create mode 100644 MaterialTraceabilityUI/packages.config diff --git a/MaterialTraceability.Business/EquipBusiness.cs b/MaterialTraceability.Business/EquipBusiness.cs index d082e7d..96bad7c 100644 --- a/MaterialTraceability.Business/EquipBusiness.cs +++ b/MaterialTraceability.Business/EquipBusiness.cs @@ -717,7 +717,14 @@ namespace MaterialTraceability.Business //DbHandler db = new DbHandler(); int machineId = appConfig.machineId; Expression> expression = s1 => true; - expression = expression.And(x => x.machineId == machineId); + if (appConfig.machineId == 1) + { + expression = expression.And(x => x.machineId == machineId && x.equipName.Contains("收卷")); + } + else + { + expression = expression.And(x => x.machineId == machineId); + } _equipList = await equipServices.Query(expression); foreach (var equip in _equipList) diff --git a/MaterialTraceability.Business/Impl/MQSignalReadBusiness.cs b/MaterialTraceability.Business/Impl/MQSignalReadBusiness.cs index 2fa4c17..9b70fb9 100644 --- a/MaterialTraceability.Business/Impl/MQSignalReadBusiness.cs +++ b/MaterialTraceability.Business/Impl/MQSignalReadBusiness.cs @@ -364,10 +364,10 @@ namespace MaterialTraceability.Business.Impl #endregion try { - LogRefreshEvent?.Invoke(LogType.PlcLog, "模切" + logStr + "位放卷结束信号触发成功"); - LogRefreshEvent?.Invoke(LogType.RfidLog, "模切" + logStr + "位放卷结束信号触发成功"); + LogRefreshEvent?.Invoke(LogType.PlcLog, logStr + "位放卷结束信号触发成功"); + LogRefreshEvent?.Invoke(LogType.RfidLog, logStr + "位放卷结束信号触发成功"); //upLoadBusiness.SaveLogRecord(position, logStr + "位放卷结束信号触发成功"); - LogHelper.Info("模切" + logStr + "位结束信号触发成功"); + LogHelper.Info(logStr + "位结束信号触发成功"); ProShaftInfo shaftInfo = await this.GetShaftInfoByPosition(position); if (shaftInfo == null) { @@ -431,7 +431,7 @@ namespace MaterialTraceability.Business.Impl #endregion try { - LogRefreshEvent?.Invoke(LogType.PlcLog, logStr + "轴涨紧触发成功"); + LogRefreshEvent?.Invoke(LogType.PlcLog, logStr + "轴涨紧信号触发成功"); LogRefreshEvent?.Invoke(LogType.RfidLog, String.Format("开始读取{0}轴卷筒RFID物料信息", logStr)); //读取卷筒RFID物料信息 @@ -458,7 +458,7 @@ namespace MaterialTraceability.Business.Impl epc = epc.Replace("\0", "").Trim(); - if (StringExtension.IsBlank(epc) || epc.Length != 14 || !epc.Contains("JSLY") || !epc.Contains("CATT")) + if (StringExtension.IsBlank(epc) || epc.Length != 14 && !epc.Contains("JSLY") && !epc.Contains("CATT")) { LogHelper.Info(String.Format("{0}轴设备:{1};读取失败", logStr, proEquip.equipIp)); AngrilyResultSendToPlc(position, 2, 0);//收卷位报警 @@ -728,7 +728,7 @@ namespace MaterialTraceability.Business.Impl if (await spiltPreventDaze(position, shaftInfo)) { writeError(position, 2); - LogRefreshEvent?.Invoke(LogType.AlarmLog, string.Format("{0}拆分异常,不允许直接拆分下收卷轴", logStr)); + LogRefreshEvent?.Invoke(LogType.AlarmLog, string.Format("{0}拆分异常,不允许直接拆分下收卷轴,先拆分上轴再执行下轴拆分", logStr)); LogRefreshEvent?.Invoke(LogType.RfidLog, string.Format("{0}拆分异常,不允许直接拆分下收卷轴,先拆分上轴再执行下轴拆分", logStr)); } else @@ -940,7 +940,7 @@ namespace MaterialTraceability.Business.Impl #endregion #region MES入账开始接口 - LogRefreshEvent?.Invoke(LogType.MesLog, logStr + "MES入账开始接口"); + LogRefreshEvent?.Invoke(LogType.MesLog, logStr + "c"); if (!SFCBegin(shaftInfo)) { writeError(position, 2); @@ -1393,8 +1393,8 @@ namespace MaterialTraceability.Business.Impl if (shaftInfo == null) { - LogRefreshEvent?.Invoke(LogType.RfidLog, "绑定卷轴与物料信息,获取卷轴信息为空"); - LogRefreshEvent?.Invoke(LogType.AlarmLog, "绑定卷轴与物料信息,获取卷轴信息为空"); + LogRefreshEvent?.Invoke(LogType.RfidLog, "绑定卷轴与RFID,获取卷轴信息为空"); + LogRefreshEvent?.Invoke(LogType.AlarmLog, "绑定卷轴与RFID,获取卷轴信息为空"); LogHelper.Info("绑定卷轴与物料信息,获取卷轴信息为空"); return; } diff --git a/MaterialTraceability.Business/Impl/TBSignalReadBusiness.cs b/MaterialTraceability.Business/Impl/TBSignalReadBusiness.cs index 1cadda0..7e017dd 100644 --- a/MaterialTraceability.Business/Impl/TBSignalReadBusiness.cs +++ b/MaterialTraceability.Business/Impl/TBSignalReadBusiness.cs @@ -26,6 +26,8 @@ namespace MaterialTraceability.Business.Impl { // INIFile配置文件 private INIFile inifile = new INIFile(System.Environment.CurrentDirectory + "/MesConfig/App.InI"); + private INIFile appinifile = new INIFile(System.Environment.CurrentDirectory + "/App.InI"); + /// /// 日志刷新 /// @@ -102,7 +104,7 @@ namespace MaterialTraceability.Business.Impl private UpLoadBusiness upLoadBusiness = UpLoadBusiness.Instance; private AppConfigDto appConfig = AppConfigDto.Instance; - + string ran = ""; /// /// 放卷位涨紧 /// @@ -206,13 +208,17 @@ namespace MaterialTraceability.Business.Impl string epc = equipBusiness.ReadEPCByAntana(proEquip.equipId); //string epc = System.Guid.NewGuid().ToString("N").Substring(0,14); epc = epc.Replace("\0", "").Trim(); - //if (epc == "" || epc == null) - //{ - // Random random = new Random(); + if (epc == "" || epc == null) + { + //Random random = new Random(); + if (!string.IsNullOrEmpty(appinifile.IniReadValue("SystemConfig", "RFIDnum"))) + { + ran = appinifile.IniReadValue("SystemConfig", "RFIDnum"); + ran = ran.PadLeft(6, '0'); + epc = "CATT1RDA" + ran; + } + } - // epc = "JSLY3RDC005400"; - //} - //20231028新增读取到上一次相同标签报警泄气 bool iFlag = await GetSameRFIDInfo(position, epc); if (iFlag) @@ -249,7 +255,7 @@ namespace MaterialTraceability.Business.Impl }); return; } - if (StringExtension.IsBlank(epc) || !epc.Contains("JSLY") || !epc.Contains("CATT")) + if (StringExtension.IsBlank(epc) || (!epc.Contains("JSLY") && !epc.Contains("CATT") && !epc.Contains("YBC"))) { //读取失败,控制PLC气胀轴 @@ -376,7 +382,7 @@ namespace MaterialTraceability.Business.Impl //site = "2100", url = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "url"), site = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "site"), - processlotref = String.Format("ProcessLotBO:2100,{0}", rfidStr), + processlotref = String.Format("ProcessLotBO:2400,{0}", rfidStr), loginUser = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "loginUser"), password = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "password"), }; @@ -418,8 +424,8 @@ namespace MaterialTraceability.Business.Impl { url = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "url"), site = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "site"), - processlotref = "ProcessLotBO:2100," + rfidStr, - memberlist = new string[] { "SFCBO:2100," + sfcStr }, + processlotref = "ProcessLotBO:2400," + rfidStr, + memberlist = new string[] { "SFCBO:2400," + sfcStr }, loginUser = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "loginUser"), password = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "password"), @@ -501,14 +507,14 @@ namespace MaterialTraceability.Business.Impl return; } - if (sfc.Substring(0, 1) != "L") - { - sfc = GetSFC(position); - if (StringExtension.IsBlank(sfc)) - { - return; - } - } + //if (sfc.Substring(0, 1) != "L") + //{ + // sfc = GetSFC(position); + // if (StringExtension.IsBlank(sfc)) + // { + // return; + // } + //} #endregion LogHelper.Info("涂布工单下达接口调用成功,SFC膜卷号为:" + sfc); @@ -516,6 +522,10 @@ namespace MaterialTraceability.Business.Impl GetSFCByMesEvent?.Invoke(true, sfc); WriteSfcAndEpc(position, sfc, epc); + if (!string.IsNullOrEmpty(appinifile.IniReadValue("SystemConfig", "RFIDnum"))) + { + appinifile.IniWriteValue("SystemConfig", "RFIDnum", int.Parse(appinifile.IniReadValue("SystemConfig", "RFIDnum") + 1).ToString()); + } ViewModelRefreshEvent?.Invoke(new ViewModelDto() { @@ -569,7 +579,8 @@ namespace MaterialTraceability.Business.Impl RecordTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; await downRecordServices.Add(downRecord); - + + //upLoadBusiness.SaveDownRecord(downRecord); } catch (Exception e) @@ -706,7 +717,7 @@ namespace MaterialTraceability.Business.Impl { url = inifile.IniReadValue("FindShopRequestParam","url"), site = inifile.IniReadValue("FindShopRequestParam", "site"), - shopOrder = String.Format("ShopOrderBO:2100,{0}", shopOrderStr), + shopOrder = String.Format("ShopOrderBO:2400,{0}", shopOrderStr), loginUser = inifile.IniReadValue("FindShopRequestParam", "loginUser"), password = inifile.IniReadValue("FindShopRequestParam", "password"), }; diff --git a/MaterialTraceability.Business/LanguageHelper.cs b/MaterialTraceability.Business/LanguageHelper.cs new file mode 100644 index 0000000..914241d --- /dev/null +++ b/MaterialTraceability.Business/LanguageHelper.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MaterialTraceability.Business +{ + public class LanguageHelper + { + public static string language { get; set; } + public static string ShowMessage(string Message) + { + string Result = Message; + switch (language) + { + + case "de-DE": + if (Message == "PLC连接失败") + { + Result = "PLC Connect Fail"; + } + if (Message == "PLC断开,重新建立连接") + { + Result = "PLC Connect Fail,Reconnect..."; + } + break; + case "en-US": + if (Message == "PLC连接失败") + { + Result = "PLC Connect Fail"; + } + if (Message == "PLC断开,重新建立连接") + { + Result = "PLC Connect Fail,Reconnect..."; + } + if (Message == "PLC断开,重新连接失败") + { + Result = "PLC Connect Fail,Reconnect Fail"; + } + break; + case "pl-PL": + + break; + case "zh-cn": + + break; + default: + break; + } + return Result; + } + } + +} diff --git a/MaterialTraceability.Business/MainBusiness.cs b/MaterialTraceability.Business/MainBusiness.cs index 656e0f9..5847957 100644 --- a/MaterialTraceability.Business/MainBusiness.cs +++ b/MaterialTraceability.Business/MainBusiness.cs @@ -8,6 +8,9 @@ using MaterialTraceability.SqlSugar; using MaterialTraceability.SqlSugar.ServiceImpl; using System; using System.Collections.Generic; +using System.Globalization; +using System.Threading; +using static System.Net.Mime.MediaTypeNames; namespace MaterialTraceability.Business { @@ -157,7 +160,15 @@ namespace MaterialTraceability.Business } if (plcBusiness.Connect()) { - LogRefreshEvent?.Invoke(LogType.PlcLog, "PLC连接成功"); + if(LanguageHelper.language == "en-us") + { + LogRefreshEvent?.Invoke(LogType.PlcLog, "PLC Connect Success"); + } + else + { + LogRefreshEvent?.Invoke(LogType.PlcLog, "PLC连接成功"); + } + viewModel.plcStatus = true; switch (appConfig.processId) @@ -197,6 +208,7 @@ namespace MaterialTraceability.Business { LogRefreshEvent?.Invoke(LogType.PlcLog, "PLC连接失败"); LogRefreshEvent?.Invoke(LogType.AlarmLog, "PLC连接失败"); + viewModel.plcStatus = false; } ViewModelRefreshEvent?.Invoke(viewModel); @@ -300,12 +312,14 @@ namespace MaterialTraceability.Business if (!info) { + //LanguageHelper.ShowMessage("cs"); LogRefreshEvent?.Invoke(LogType.PlcLog,"PLC断开,重新建立连接"); LogHelper.Info("PLC断开,重新建立连接"); bool result = plcBusiness.ReConnect(); if (result) { + string ss = LanguageHelper.language; LogRefreshEvent?.Invoke(LogType.PlcLog, "PLC断开,重新连接成功"); LogHelper.Info("PLC断开,重新连接成功"); diff --git a/MaterialTraceability.Business/MaterialTraceability.Business.csproj b/MaterialTraceability.Business/MaterialTraceability.Business.csproj index 470ee49..f3144f0 100644 --- a/MaterialTraceability.Business/MaterialTraceability.Business.csproj +++ b/MaterialTraceability.Business/MaterialTraceability.Business.csproj @@ -61,6 +61,7 @@ + diff --git a/MaterialTraceability.Business/PlcBusiness.cs b/MaterialTraceability.Business/PlcBusiness.cs index 119c2d1..33185b9 100644 --- a/MaterialTraceability.Business/PlcBusiness.cs +++ b/MaterialTraceability.Business/PlcBusiness.cs @@ -118,6 +118,7 @@ namespace MaterialTraceability.Business else { LogHelper.Info("PLC初始化成功"); + #region 读取时间初始化 var initTime = DateTime.Now.AddMinutes(-1); lastReadTime_A_Begin = initTime; diff --git a/MaterialTraceability.Business/UpLoadBusiness.cs b/MaterialTraceability.Business/UpLoadBusiness.cs index 20dee94..d9911aa 100644 --- a/MaterialTraceability.Business/UpLoadBusiness.cs +++ b/MaterialTraceability.Business/UpLoadBusiness.cs @@ -510,13 +510,13 @@ namespace MaterialTraceability.Business { try { - LogRecord logRecord = new LogRecord() - { - resource = appConfig.resource, - positionId = position, - message = msg - }; - int result = _db.Insertable(logRecord).ExecuteCommand(); + //LogRecord logRecord = new LogRecord() + //{ + // resource = appConfig.resource, + // positionId = position, + // message = msg + //}; + //int result = _db.Insertable(logRecord).ExecuteCommand(); } catch (Exception ex) { @@ -561,6 +561,7 @@ namespace MaterialTraceability.Business { try { + return "MES接口错误码:"+code + "," + message; AlarmInfo alarmInfo = new AlarmInfo(); DataTable info = _db.Queryable().Where(x => x.alarmCode == code.ToString()).ToDataTable(); if (info.Rows.Count > 0) diff --git a/MaterialTraceability.Common/LanguageHelper.cs b/MaterialTraceability.Common/LanguageHelper.cs new file mode 100644 index 0000000..2d558f6 --- /dev/null +++ b/MaterialTraceability.Common/LanguageHelper.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MaterialTraceability.Common +{ + public class LanguageHelper + { + public string language { get; set; } + } +} diff --git a/MaterialTraceability.Common/MaterialTraceability.Common.csproj b/MaterialTraceability.Common/MaterialTraceability.Common.csproj index a165cb5..573e1bc 100644 --- a/MaterialTraceability.Common/MaterialTraceability.Common.csproj +++ b/MaterialTraceability.Common/MaterialTraceability.Common.csproj @@ -44,10 +44,12 @@ ..\dll\NPOI.dll + + @@ -61,6 +63,7 @@ + diff --git a/MaterialTraceability.Entity/DAO/ApiResponse.cs b/MaterialTraceability.Entity/DAO/ApiResponse.cs new file mode 100644 index 0000000..ec9cc0d --- /dev/null +++ b/MaterialTraceability.Entity/DAO/ApiResponse.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MaterialTraceability.Entity.DAO +{ + public class ApiResponse + { + /// + /// 状态码(如 200 成功,400 失败,500 错误) + /// + public int Code { get; set; } + + /// + /// 消息(如 "操作成功"、"参数错误") + /// + public string Msg { get; set; } + + /// + /// 返回数据 + /// + public List Data { get; set; } + + public ParameterList parameterList { get; set; } + } + + public class ParameterList + { + private string Parameter; + private string Value; + } +} diff --git a/MaterialTraceability.Entity/DAO/SysUserInfo.cs b/MaterialTraceability.Entity/DAO/SysUserInfo.cs index 7e35197..b348bd0 100644 --- a/MaterialTraceability.Entity/DAO/SysUserInfo.cs +++ b/MaterialTraceability.Entity/DAO/SysUserInfo.cs @@ -19,31 +19,31 @@ namespace MaterialTraceability.Entity.DAO /// /// /// - [SugarColumn(ColumnName="userId" )] - public string userId { get; set; } + [SugarColumn(ColumnName= "CardID")] + public int CardID { get; set; } /// /// /// - [SugarColumn(ColumnName="userName" )] - public string userName { get; set; } + [SugarColumn(ColumnName= "JobID")] + public int JobID { get; set; } /// /// /// - [SugarColumn(ColumnName="userPwd" )] - public string userPwd { get; set; } + [SugarColumn(ColumnName= "Name")] + public string Name { get; set; } /// /// /// - [SugarColumn(ColumnName="roleId" )] - public string roleId { get; set; } + [SugarColumn(ColumnName= "Level")] + public string Level { get; set; } /// /// /// - [SugarColumn(ColumnName = "pwdKey")] - public string pwdKey { get; set; } + [SugarColumn(ColumnName = "PWD")] + public string PWD { get; set; } } } diff --git a/MaterialTraceability.Entity/DTO/AppConfigDto.cs b/MaterialTraceability.Entity/DTO/AppConfigDto.cs index 4af437b..f8755ea 100644 --- a/MaterialTraceability.Entity/DTO/AppConfigDto.cs +++ b/MaterialTraceability.Entity/DTO/AppConfigDto.cs @@ -54,6 +54,8 @@ namespace MaterialTraceability.Entity.DTO public int isSpiltPreventDaze = StringChange.ParseToInt(iNIFile.IniReadValue("SystemConfig", "isSpiltPreventDaze")); + + public TbAddress TbAddress = TbAddress.Instance; public LyAddress LyAddress = LyAddress.Instance; diff --git a/MaterialTraceability.Entity/MaterialTraceability.Entity.csproj b/MaterialTraceability.Entity/MaterialTraceability.Entity.csproj index 7428180..2200e7a 100644 --- a/MaterialTraceability.Entity/MaterialTraceability.Entity.csproj +++ b/MaterialTraceability.Entity/MaterialTraceability.Entity.csproj @@ -49,6 +49,7 @@ + diff --git a/MaterialTraceability.Plc/MaterialTraceability.Plc.csproj b/MaterialTraceability.Plc/MaterialTraceability.Plc.csproj index ec93074..c890299 100644 --- a/MaterialTraceability.Plc/MaterialTraceability.Plc.csproj +++ b/MaterialTraceability.Plc/MaterialTraceability.Plc.csproj @@ -35,10 +35,6 @@ False ..\dll\HslCommunication.dll - - False - ..\dll\Newtonsoft.Json.dll - diff --git a/MaterialTraceability.SqlSugar/IBaseServices.cs b/MaterialTraceability.SqlSugar/IBaseServices.cs index 2ed622c..b408bf7 100644 --- a/MaterialTraceability.SqlSugar/IBaseServices.cs +++ b/MaterialTraceability.SqlSugar/IBaseServices.cs @@ -199,6 +199,6 @@ namespace MaterialTraceability.SqlSugar /// sql语句 /// Task> QueryBySql(string sql, List parameters) where T : class, new(); - + Task TruncateTable(); } } diff --git a/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices.cs b/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices.cs index 55c9ae8..4cd8768 100644 --- a/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices.cs +++ b/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices.cs @@ -744,5 +744,11 @@ namespace MaterialTraceability.SqlSugar.ServiceImpl { return await _db.Ado.SqlQueryAsync(sql, parameters); } + public async Task TruncateTable() + { + //var i = await Task.Run(() => _db.Deleteable().In(ids).ExecuteCommand()); + //return i > 0; + return _db.DbMaintenance.TruncateTable(); + } } } \ No newline at end of file diff --git a/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices_Server.cs b/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices_Server.cs index 6cc1df9..61b46d1 100644 --- a/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices_Server.cs +++ b/MaterialTraceability.SqlSugar/ServiceImpl/BaseServices_Server.cs @@ -744,5 +744,10 @@ namespace MaterialTraceability.SqlSugar.ServiceImpl { return await _db.Ado.SqlQueryAsync(sql, parameters); } + + public Task TruncateTable() + { + throw new NotImplementedException(); + } } } \ No newline at end of file diff --git a/MaterialTraceabilityUI/App.config b/MaterialTraceabilityUI/App.config index 3290c7f..b9bc6aa 100644 --- a/MaterialTraceabilityUI/App.config +++ b/MaterialTraceabilityUI/App.config @@ -7,9 +7,9 @@ - + - + @@ -56,12 +56,20 @@ - + + + + + + + + + diff --git a/MaterialTraceabilityUI/DieCuttingProcess.xaml.cs b/MaterialTraceabilityUI/DieCuttingProcess.xaml.cs index 9471356..1ed0c73 100644 --- a/MaterialTraceabilityUI/DieCuttingProcess.xaml.cs +++ b/MaterialTraceabilityUI/DieCuttingProcess.xaml.cs @@ -1379,8 +1379,8 @@ namespace MaterialTraceabilityUI else { MessageBox.Show("下右收卷强制下料触发"); - ListBoxItemAdd(this.PlcLog, "下右收卷强制下料触发成功,MW24830写入0"); - LogHelperBusiness.LogInfo("下右收卷强制下料触发成功,MW24830写入0"); + ListBoxItemAdd(this.PlcLog, "下右收卷强制下料触发成功"); + LogHelperBusiness.LogInfo("下右收卷强制下料触发成功"); plcBusiness.writePlc(appConfig.mqAddress.下右收卷下料, 0); int position = 0; diff --git a/MaterialTraceabilityUI/MainWindow.xaml b/MaterialTraceabilityUI/MainWindow.xaml index 3d6751b..718323f 100644 --- a/MaterialTraceabilityUI/MainWindow.xaml +++ b/MaterialTraceabilityUI/MainWindow.xaml @@ -51,8 +51,11 @@ + + + diff --git a/MaterialTraceabilityUI/MainWindow.xaml.cs b/MaterialTraceabilityUI/MainWindow.xaml.cs index 0460701..1492d23 100644 --- a/MaterialTraceabilityUI/MainWindow.xaml.cs +++ b/MaterialTraceabilityUI/MainWindow.xaml.cs @@ -2,11 +2,13 @@ using MaterialTraceability.Business; using MaterialTraceability.Entity.DAO; using MaterialTraceability.Entity.DTO; +using MaterialTraceability.Entity.Enum; using MaterialTraceability.Entity.UpLoad; using MaterialTraceability.SqlSugar; using MaterialTraceability.SqlSugar.ServiceImpl; using MaterialTraceabilityUI.Common; using MaterialTraceabilityUI.Resources; +using MaterialTraceabilityUI.ViewModel; using SqlSugar; using System; using System.Collections.Generic; @@ -44,6 +46,8 @@ namespace MaterialTraceabilityUI //卷绕界面 private JRProcess JRProcess = new JRProcess(); + private UserInfo UserInfo = new UserInfo(); + //记录报表 private secondPage secondPage = new secondPage(); @@ -168,6 +172,8 @@ namespace MaterialTraceabilityUI { try { + GlobalClass.ChangeLanguage("zh-cn"); + LanguageHelper.language = "zh-cn"; notifyIcon.Visible = true; notifyIcon.Text = "RFID物料追溯系统"; notifyIcon.Icon = new Icon("amn06-tnywh-001.ico"); @@ -229,7 +235,15 @@ namespace MaterialTraceabilityUI { action = () => { - this.TestTB.Text = "PLC连接成功"; + if (LanguageHelper.language == "en-us") + { + this.TestTB.Text = "PLC Connect Success"; + } + else + { + this.TestTB.Text = "PLC连接成功"; + } + this.TestTB.Foreground = System.Windows.Media.Brushes.SpringGreen; }; TestTB.Dispatcher.BeginInvoke(action); @@ -256,7 +270,15 @@ namespace MaterialTraceabilityUI action = () => { - this.TestTB.Text = "PLC连接失败"; + if (LanguageHelper.language == "en-us") + { + this.TestTB.Text = "PLC Connect Fail"; + } + else + { + this.TestTB.Text = "PLC连接失败"; + } + this.TestTB.Foreground = System.Windows.Media.Brushes.Red; }; TestTB.Dispatcher.BeginInvoke(action); @@ -443,16 +465,38 @@ namespace MaterialTraceabilityUI { //LanguageManager.Instance.ChangeLanguage(new CultureInfo("zh-cn")); GlobalClass.ChangeLanguage("zh-cn"); + LanguageHelper.language = "zh-cn"; } private void ChangeLanguage2_Click(object sender, RoutedEventArgs e) { //LanguageManager.Instance.ChangeLanguage(new CultureInfo("en-us")); - GlobalClass.ChangeLanguage("en-us"); + GlobalClass.ChangeLanguage("en-US"); + LanguageHelper.language = "en-US"; + } private void ChangeLanguage3_Click(object sender, RoutedEventArgs e) { //LanguageManager.Instance.ChangeLanguage(new CultureInfo("pl")); - GlobalClass.ChangeLanguage("pl"); + GlobalClass.ChangeLanguage("pl-PL"); + LanguageHelper.language = "pl-PL"; + } + private void ChangeLanguage4_Click(object sender, RoutedEventArgs e) + { + //LanguageManager.Instance.ChangeLanguage(new CultureInfo("pl")); + GlobalClass.ChangeLanguage("de-DE"); + LanguageHelper.language = "de-DE"; + } + + private void UserInfoPage_Click(object sender, RoutedEventArgs e) + { + if (!"2".Equals(ConfigHelper.GetConfig("roleId"))) + { + System.Windows.MessageBox.Show("请登录系统管理账号进行操作"); + } + else + { + UserContent = UserInfo; + } } } } diff --git a/MaterialTraceabilityUI/MaterialTraceabilityUI.csproj b/MaterialTraceabilityUI/MaterialTraceabilityUI.csproj index 818eacc..33dcf8e 100644 --- a/MaterialTraceabilityUI/MaterialTraceabilityUI.csproj +++ b/MaterialTraceabilityUI/MaterialTraceabilityUI.csproj @@ -88,14 +88,16 @@ ..\dll\Nancy.dll - False - ..\dll\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll False ..\dll\SqlSugar.dll + + ..\packages\System.Buffers.4.5.1\lib\netstandard1.1\System.Buffers.dll + @@ -109,7 +111,20 @@ ..\dll\System.Data.SQLite.Linq.dll + + ..\packages\System.Memory.4.5.5\lib\netstandard1.1\System.Memory.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + + ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll + + @@ -121,6 +136,21 @@ 4.0 + + ..\packages\TouchSocket.3.1.19\lib\net45\TouchSocket.dll + + + ..\packages\TouchSocket.Core.3.1.19\lib\net45\TouchSocket.Core.dll + + + ..\packages\TouchSocket.Http.3.1.19\lib\net45\TouchSocket.Http.dll + + + ..\packages\TouchSocket.Rpc.3.1.19\lib\net45\TouchSocket.Rpc.dll + + + ..\packages\TouchSocket.WebApi.3.1.19\lib\net45\TouchSocket.WebApi.dll + @@ -160,6 +190,9 @@ SplitSfc.xaml + + UserInfo.xaml + UserLogin.xaml @@ -172,6 +205,7 @@ firstPage.xaml + WriteInfo.xaml @@ -224,6 +258,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -301,14 +339,16 @@ ResXFileCodeGenerator Resources.Designer.cs + - + + SettingsSingleFileGenerator Settings.Designer.cs @@ -373,5 +413,10 @@ false + + + + + \ No newline at end of file diff --git a/MaterialTraceabilityUI/ReadRecordControl.xaml b/MaterialTraceabilityUI/ReadRecordControl.xaml index b820f1b..21a9fac 100644 --- a/MaterialTraceabilityUI/ReadRecordControl.xaml +++ b/MaterialTraceabilityUI/ReadRecordControl.xaml @@ -3,7 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:local="clr-namespace:MaterialTraceabilityUI" + xmlns:local="clr-namespace:MaterialTraceabilityUI.Resources" mc:Ignorable="d" d:DesignHeight="452" d:DesignWidth="640" Background="Transparent" Loaded="UserControl_Loaded"> @@ -107,7 +107,7 @@ - + diff --git a/MaterialTraceabilityUI/Resources/2025_09_18.snapshot b/MaterialTraceabilityUI/Resources/2025_09_18.snapshot new file mode 100644 index 0000000..e3c428c --- /dev/null +++ b/MaterialTraceabilityUI/Resources/2025_09_18.snapshot @@ -0,0 +1 @@ +[{"ProjectName":"MaterialTraceabilityUI","UniqueName":"Properties\\Resources","Entries":[]},{"ProjectName":"MaterialTraceabilityUI","UniqueName":"Resources\\Lang","Entries":[{"Key":"btnChina","Data":[{"L":".en-US","T":"Chinese"},{"L":".pl","T":"Chińczycy"},{"L":".zh-CN","T":"中文"}]},{"Key":"btnEnglish","Data":[{"L":".en-US","T":"English"},{"L":".pl","T":"yw"},{"L":".zh-CN","T":"英文"}]},{"Key":"btnBl","Data":[{"L":".en-US","T":"bolan"},{"L":".pl","T":"pl"},{"L":".zh-CN","T":"波兰"}]},{"Key":"btnJLBB","Data":[{"L":".en-US","T":"Report"},{"L":".pl","T":"jlbb"},{"L":".zh-CN","T":"记录报表"}]},{"Key":"btnCSPZ","Data":[{"L":".en-US","T":"Config"},{"L":".pl","T":"cspz"},{"L":".zh-CN","T":"参数配置"}]},{"Key":"btnDL","Data":[{"L":".en-US","T":"Login in"},{"L":".pl","T":"dl"},{"L":".zh-CN","T":"登录"}]},{"Key":"btnZX","Data":[{"L":".en-US","T":"Login out"},{"L":".pl","T":"zx"},{"L":".zh-CN","T":"注销"}]},{"Key":"btnSY","Data":[{"L":".en-US","T":"Fistpage"},{"L":".pl","T":"sy"},{"L":".zh-CN","T":"首页"}]},{"Key":"lbtext","Data":[{"L":".en-US","T":"RFID MaterialTraceability System"},{"L":".pl","T":"RFID"},{"L":".zh-CN","T":"RFID物料追溯系统"}]},{"Key":"lbPLCStatus","Data":[{"L":".en-US","T":"PLC Offline"},{"L":".pl","T":"PLC"},{"L":".zh-CN","T":"PLC状态异常"}]},{"Key":"lbLoginStatus","Data":[{"L":".en-US","T":"NLI"},{"L":".pl","T":"nli"},{"L":".zh-CN","T":"未登录"}]},{"Key":"MQDevice","Data":[{"L":".en-US","T":"MQ DeviceStatus"},{"L":".pl","T":"mqds"},{"L":".zh-CN","T":"设备状态"}]}]}] \ No newline at end of file diff --git a/MaterialTraceabilityUI/Resources/2025_09_18_15_03.xlsx b/MaterialTraceabilityUI/Resources/2025_09_18_15_03.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f3b40da6e90e94e7bda8a8014e8cc11fb05e7fff GIT binary patch literal 3405 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 1 + + + 2 + + + 3 + + + 4 + + + 5 + + + 6 + + + 8 + + + 7 + + + 0 + + + 0 + + + 9 + + + 0 + + + 0 + + + 0 + + + 用户信息 + + \ No newline at end of file diff --git a/MaterialTraceabilityUI/Resources/Lang.en-US.resx b/MaterialTraceabilityUI/Resources/Lang.en-US.resx index 563d0fd..152da92 100644 --- a/MaterialTraceabilityUI/Resources/Lang.en-US.resx +++ b/MaterialTraceabilityUI/Resources/Lang.en-US.resx @@ -117,17 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Chinese - - - English - bolan - - Report + + 中文 Config @@ -135,6 +129,12 @@ Login in + + English + + + Report + Login out @@ -153,4 +153,13 @@ MQ DeviceStatus + + ID + + + Device Name + + + 用户信息 + \ No newline at end of file diff --git a/MaterialTraceabilityUI/Resources/Lang.pl.resx b/MaterialTraceabilityUI/Resources/Lang.pl-PL.resx similarity index 95% rename from MaterialTraceabilityUI/Resources/Lang.pl.resx rename to MaterialTraceabilityUI/Resources/Lang.pl-PL.resx index b258ac0..9cfde75 100644 --- a/MaterialTraceabilityUI/Resources/Lang.pl.resx +++ b/MaterialTraceabilityUI/Resources/Lang.pl-PL.resx @@ -117,17 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - zw - - - yw - - bl + pl - - jlbb + + Chińczycy cspz @@ -135,6 +129,12 @@ dl + + yw + + + jlbb + zx @@ -153,4 +153,13 @@ mqds + + id + + + Device Name + + + 用户信息 + \ No newline at end of file diff --git a/MaterialTraceabilityUI/Resources/Lang.zh-cn.resx b/MaterialTraceabilityUI/Resources/Lang.zh-cn.resx index 769f5cf..cd7cfc4 100644 --- a/MaterialTraceabilityUI/Resources/Lang.zh-cn.resx +++ b/MaterialTraceabilityUI/Resources/Lang.zh-cn.resx @@ -117,17 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 中文 - - - 英文 - 波兰 - - 记录报表 + + 中文 参数配置 @@ -135,6 +129,12 @@ 登录 + + English + + + 记录报表 + 注销 @@ -153,4 +153,13 @@ 设备状态 + + 编号 + + + 设备名称 + + + 用户信息 + \ No newline at end of file diff --git a/MaterialTraceabilityUI/Resources/翻译.xlsx b/MaterialTraceabilityUI/Resources/翻译.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d6a47dfbd1e8bdb15fe1e22d37a5d9c7be239429 GIT binary patch literal 9820 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 @@ -99,8 +99,8 @@ - - + + diff --git a/MaterialTraceabilityUI/TJJProcess.xaml.cs b/MaterialTraceabilityUI/TJJProcess.xaml.cs index 7cb19b7..8058291 100644 --- a/MaterialTraceabilityUI/TJJProcess.xaml.cs +++ b/MaterialTraceabilityUI/TJJProcess.xaml.cs @@ -325,7 +325,7 @@ namespace MaterialTraceabilityUI string info = massage; string logTypeStr = ""; int isAlarm = 0; - + massage = LanguageHelper.ShowMessage(massage); if (logType == LogType.MesLog) { logTypeStr = "MES"; diff --git a/MaterialTraceabilityUI/UserInfo.xaml b/MaterialTraceabilityUI/UserInfo.xaml new file mode 100644 index 0000000..508d7a7 --- /dev/null +++ b/MaterialTraceabilityUI/UserInfo.xaml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + +