fix:方法的开始结束日志添加

master
sunhonglei 4 months ago
parent fd263549f1
commit 7d78976904
  1. 3
      FodyWeavers.xml
  2. 92
      FodyWeavers.xsd
  3. 34
      Model/Attributes/LogAttribute.cs
  4. 13
      Model/Helper/Log4NetHelper.cs
  5. 10
      SparkClient.csproj
  6. 9
      ViewModel/BaseViewModel.cs
  7. 7
      ViewModel/Configuration/AlgorithmConfigVM.cs
  8. 6
      ViewModel/Configuration/ConfigMenuPageVM.cs
  9. 7
      ViewModel/Configuration/CutConfigVM.cs
  10. 12
      ViewModel/Configuration/LevelConfigVM.cs
  11. 2
      ViewModel/Configuration/SettingBaseVM.cs
  12. 5
      ViewModel/Configuration/SettingsPages/ModelColorSetPageVM.cs
  13. 8
      ViewModel/Configuration/SettingsPages/SettingsVM.cs
  14. 9
      ViewModel/Grading/DiamondSelectVM.cs
  15. 86
      ViewModel/Grading/GradingResultVM.cs

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Rougamo />
</Weavers>

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="Rougamo" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="Mos" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Mo" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="assembly" type="xs:string">
<xs:annotation>
<xs:documentation>The assembly name of the aspect type, which does not contain the '.dll' suffix.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="xs:string">
<xs:annotation>
<xs:documentation>The aspect type full name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="pattern" type="xs:string">
<xs:annotation>
<xs:documentation>An AspectN pattern. Apply the aspect type to methods matched by the pattern. This pattern will override the pointcut settings of the aspect type.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="enabled" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to false to disable Rougamo. The default is true.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="composite-accessibility" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to true to use the type and method composite accessibility. The default is false. Etc, an internal type has a public method, public for default(false) and internal for true.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="skip-ref-struct" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to true to skip saving ref struct parameters and return value into MethodContext. The default is false.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="pure-stacktrace" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to false to prevent generating the StackTraceHiddenAttribute for the proxy method. The default is true.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="iterator-returns" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to true to save the items that the iterator returns. This will take up additional memory space. The default is false.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="reverse-call-nonentry" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to false to make the execution order of the OnSuccess, OnException, and OnExit methods the same as OnEntry. The default is true.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="except-type-patterns" type="xs:string">
<xs:annotation>
<xs:documentation>Regex expressions for the type's full name, separated by ',' or ';'. All types matching any of these regex expressions will be ignored by Rougamo.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="MethodDecorator" minOccurs="0" maxOccurs="1" type="xs:anyType" />
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

@ -0,0 +1,34 @@
using log4net;
using MethodDecorator.Fody.Interfaces;
using Rougamo;
using Rougamo.Context;
using System.Reflection;
namespace SparkClient.Model.Attributes
{
[AttributeUsage(AttributeTargets.Method)]
public class LogAttribute : MoAttribute
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(LogAttribute));
//public void OnEntry(MethodBase method)
//{
// Logger.Debug($"Entering {method.DeclaringType?.Name}.{method.Name}");
//}
//public void OnExit(MethodBase method)
//{
// Logger.Debug($"Exiting {method.DeclaringType?.Name}.{method.Name}");
//}
public override void OnEntry(MethodContext context)
{
Logger.Debug($"Entering {context.Method.DeclaringType?.Name}.{context.Method.Name}");
}
public override void OnExit(MethodContext context)
{
Logger.Debug($"Exiting {context.Method.DeclaringType?.Name}.{context.Method.Name}");
}
}
}

@ -40,7 +40,18 @@ public class Log4NetHelper
}
}
// 删除三个月以上的归档日志
DateTime cutoffDate = now.AddMonths(-3);
var zipFiles = Directory.GetFiles(archiveDirectory, "*.zip");
foreach (var file in zipFiles)
{
var fileInfo = new FileInfo(file);
if (fileInfo.LastWriteTimeUtc < cutoffDate)
{
File.Delete(file);
Console.WriteLine($"Deleted old archive: {file}");
}
}
Console.WriteLine($"Archived logs to {zipFilePath}");
}

@ -12,23 +12,30 @@
<ItemGroup>
<PackageReference Include="AvalonEdit" Version="6.3.0.90" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" />
<PackageReference Include="Fody" Version="6.9.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="HandyControl" Version="3.5.1" />
<PackageReference Include="HandyControl.Lang.en" Version="3.5.1" />
<PackageReference Include="HandyControls.Lang.zh-CN" Version="3.5.3" />
<PackageReference Include="HelixToolkit.Wpf" Version="2.25.0" />
<PackageReference Include="HelixToolkit.Wpf.SharpDX" Version="2.25.0" />
<PackageReference Include="log4net" Version="3.0.3" />
<PackageReference Include="MethodDecorator.Fody" Version="1.1.1" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2903.40" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NPOI" Version="2.7.2" />
<PackageReference Include="Rougamo.Fody" Version="5.0.0" />
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlcipher" Version="2.1.10" />
<PackageReference Include="System.IO.Ports" Version="9.0.1" />
</ItemGroup>
<ItemGroup>
<None Remove="ffmpeg.exe" />
<None Remove="FodyWeavers.xml" />
<None Remove="Resource\Document\Helper_en.pdf" />
<None Remove="Resource\Images\IGILogo.png" />
<None Remove="Resource\Images\round_P8-P8.png" />
@ -96,6 +103,9 @@
<None Remove="Resource\Images\Algor_Sel@3x.png" />
<None Remove="Resource\Images\Algor_Def@3x.png" />
<None Remove="Resource\Document\Instructor简易软件使用教程.pdf" />
<Content Include="FodyWeavers.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Resource\Document\Helper.pdf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>

@ -1,17 +1,24 @@
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Input;
using log4net;
using SparkClient.ViewModel.Configuration;
namespace SparkClient.ViewModel;
public class BaseViewModel : INotifyPropertyChanged
{
protected static readonly ILog Logger = LogManager.GetLogger(typeof(BaseViewModel));
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public BaseViewModel()
{
// 记录当前 ViewModel 的名称
Logger.Info($"Initializing {GetType().Name}");
}
public class RelayCommand : ICommand
{

@ -10,6 +10,8 @@ using SparkClient.Model.Entity;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.Configuration.SettingsPages;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Configuration;
public class AlgorithmConfigVM : BaseViewModel
@ -37,6 +39,7 @@ public class AlgorithmConfigVM : BaseViewModel
/// 初始化算法数据
/// </summary>
/// <param name="param"></param>
[Log]
public void InitAlgorithmData(object param)
{
try
@ -69,6 +72,7 @@ public class AlgorithmConfigVM : BaseViewModel
/// 保存数据
/// </summary>
/// <param name="param"></param>
[Log]
public void SaveAlgorithmData(object param)
{
try
@ -144,6 +148,7 @@ public class AlgorithmConfigVM : BaseViewModel
/// 美化JSON
/// </summary>
/// <param name="param"></param>
[Log]
public void BeautifyJson(object param)
{
try
@ -160,6 +165,7 @@ public class AlgorithmConfigVM : BaseViewModel
/// 压缩JSON
/// </summary>
/// <param name="param"></param>
[Log]
public void UglifyJson(object param)
{
AlgorithmConfigJson = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(AlgorithmConfigJson));
@ -167,6 +173,7 @@ public class AlgorithmConfigVM : BaseViewModel
// 公共方法来获取 AlgorithmConfigJson
[Log]
public string GetAlgorithmConfigJson()
{
return AlgorithmConfigJson;

@ -2,6 +2,7 @@
using SparkClient.Model.Helper;
using SparkClient.ViewModel.BaseWindow;
using SparkClient.ViewModel.Configuration.SettingsPages;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Configuration;
@ -25,6 +26,7 @@ public class ConfigMenuPageVM : BaseViewModel
/// 关闭并退回至上一页面
/// </summary>
/// <param name="parameter"></param>
[Log]
public void CloseVM(object parameter)
{
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
@ -33,6 +35,7 @@ public class ConfigMenuPageVM : BaseViewModel
/// 打开定级配置页面
/// </summary>
/// <param name="parameter"></param>
[Log]
public void LevelConfig(object parameter)
{
BaseControlVM vm = new BaseControlVM(new LevelConfigVM(null), MultilingualHelper.getString("LevelConfig"));
@ -44,6 +47,7 @@ public class ConfigMenuPageVM : BaseViewModel
/// 打开算法配置页面
/// </summary>
/// <param name="parameter"></param>
[Log]
public void AlgorithmConfig(object parameter)
{
BaseControlVM vm = new BaseControlVM(new AlgorithmConfigVM(), MultilingualHelper.getString("AlgorithmConfig"));
@ -55,6 +59,7 @@ public class ConfigMenuPageVM : BaseViewModel
/// 打开切工仪配置页面
/// </summary>
/// <param name="parameter"></param>
[Log]
public void CutConfig(object parameter)
{
BaseControlVM vm = new BaseControlVM(new CutConfigVM(), MultilingualHelper.getString("CutConfig"));
@ -63,6 +68,7 @@ public class ConfigMenuPageVM : BaseViewModel
WindowManager.openContent.Add(vm);
}
[Log]
public void SettingConfig(object parameter)
{
BaseControlVM vm = new BaseControlVM(new SettingBaseVM(), MultilingualHelper.getString("SystemSetting"));

@ -10,6 +10,8 @@ using Microsoft.Data.Sqlite;
using SparkClient.ViewModel.Configuration.SettingsPages;
using log4net;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Configuration;
public class CutConfigVM: BaseViewModel
@ -52,6 +54,7 @@ public class CutConfigVM: BaseViewModel
/// 初始化切工仪数据
/// </summary>
/// <param name="param"></param>
[Log]
public void InitCutConfigData(object param)
{
try
@ -78,6 +81,7 @@ public class CutConfigVM: BaseViewModel
/// 添加行
/// </summary>
/// <param name="row">行数</param>
[Log]
public void AddRows(object row)
{
try
@ -95,6 +99,7 @@ public class CutConfigVM: BaseViewModel
/// 保存数据
/// </summary>
/// <param name="param"></param>
[Log]
public void SaveCutConfigData(object param)
{
try
@ -180,6 +185,7 @@ public class CutConfigVM: BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
[Log]
private void IsEnabledByRole()
{
string PERMISSIONS = Settings.SelectValueById("PERMISSIONS");
@ -196,6 +202,7 @@ public class CutConfigVM: BaseViewModel
/// 删除一行数据
/// </summary>
/// <param name="row">行</param>
[Log]
public void DelCutRow(object row)
{
DataRowView? a = row as DataRowView;

@ -11,6 +11,7 @@ using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Configuration;
@ -107,6 +108,7 @@ public class LevelConfigVM : BaseViewModel
/// 加载顶级配置的数据
/// </summary>
/// <param name="param"></param>
[Log]
public void InitLevelConfig(object param)
{
try
@ -127,6 +129,7 @@ public class LevelConfigVM : BaseViewModel
/// <summary>
/// 初始化数据(形状列表检索)
/// </summary>
[Log]
private void InitData()
{
dataGrid.Columns.Clear();
@ -140,6 +143,7 @@ public class LevelConfigVM : BaseViewModel
/// <summary>
/// 初始化数据(规则列表检索)
/// </summary>
[Log]
private string setInstitutes(string id)
{
string insituteSql = $"SELECT RULE_ID,RULE_NAME,RULE_EN_NAME FROM RULE WHERE RULE_ID NOT LIKE '%_TA_%';";
@ -151,6 +155,7 @@ public class LevelConfigVM : BaseViewModel
/// </summary>
/// <param name="shapeId"></param>
/// <param name="ruleId"></param>
[Log]
private void setDataGrid(string shapeId, string ruleId)
{
string gradeSql = $"SELECT GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER FROM GRADE WHERE SHAPE_ID = '{shapeId}' AND RULE_ID LIKE '{ruleId}%' GROUP BY GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER ORDER BY GRADE_ORDER;";
@ -165,6 +170,7 @@ public class LevelConfigVM : BaseViewModel
/// </summary>
/// <param name="gradeList"></param>
/// <param name="standardList"></param>
[Log]
private void setStandardList(DataTable gradeList, DataTable standardList)
{
try
@ -407,6 +413,7 @@ public class LevelConfigVM : BaseViewModel
/// <param name="Binding"></param>
/// <param name="lineCount"></param>
/// <returns></returns>
[Log]
private DataGridColumn GetDataGridColumn(string Header,string Binding,int lineCount = 2)
{
//Style cellStyle = new Style(typeof(TextBlock));
@ -452,6 +459,7 @@ public class LevelConfigVM : BaseViewModel
/// 更新保存响应
/// </summary>
/// <param name="param"></param>
[Log]
public void SaveLevelConfig(object param)
{
try {
@ -557,6 +565,7 @@ public class LevelConfigVM : BaseViewModel
/// 删除配置响应
/// </summary>
/// <param name="param"></param>
[Log]
public void DelLevelConfig(object param)
{
@ -566,6 +575,7 @@ public class LevelConfigVM : BaseViewModel
/// 导入配置响应
/// </summary>
/// <param name="param"></param>
[Log]
public void LoadLevelConfig(object param)
{
try
@ -667,6 +677,7 @@ public class LevelConfigVM : BaseViewModel
/// 切换规则响应
/// </summary>
/// <param name="param"></param>
[Log]
public void ChangeInstituteModel(object param)
{
if (InstituteId != null && InstituteId != string.Empty)
@ -680,6 +691,7 @@ public class LevelConfigVM : BaseViewModel
/// 切换形状响应
/// </summary>
/// <param name="param"></param>
[Log]
public void ChangeShapeModel(object param)
{
if (ShapeId!= null && ShapeId != string.Empty) {

@ -4,6 +4,7 @@ using SparkClient.ViewModel.BaseWindow;
using SparkClient.ViewModel.Configuration.SettingsPages;
using System.Windows.Input;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Configuration;
@ -30,6 +31,7 @@ public class SettingBaseVM : BaseViewModel
}
}
[Log]
public void Save(object param)
{
try

@ -1,4 +1,5 @@
using log4net;
using SparkClient.Model.Attributes;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.Grading;
@ -103,6 +104,7 @@ public class ModelColorSetPageVM : BaseViewModel
/// <summary>
/// 页面初始化参数赋值
/// </summary>
[Log]
private void InitSetting()
{
try
@ -141,6 +143,7 @@ public class ModelColorSetPageVM : BaseViewModel
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[Log]
public bool SaveUpdate(object param)
{
try
@ -159,6 +162,7 @@ public class ModelColorSetPageVM : BaseViewModel
return false;
}
}
[Log]
private void updateDataBase(string SETTING_ID)
{
Type type = this.GetType();
@ -174,6 +178,7 @@ public class ModelColorSetPageVM : BaseViewModel
/// 画面中颜色属性赋值
/// </summary>
/// <param name="SETTING_ID"></param>
[Log]
private void setColor(string SETTING_ID)
{
var value = Settings.SelectValueById(SETTING_ID);

@ -13,6 +13,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Configuration.SettingsPages
{
@ -59,6 +60,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
}
}
[Log]
private void InitSetting()
{
try
@ -91,6 +93,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
}
}
[Log]
private void selectRules()
{
try
@ -111,6 +114,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
}
//Rules.Rows.Add("IGI 2023", "IGI2023");
}
[Log]
public bool SaveUpdate(object param)
{
try
@ -132,6 +136,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
return false;
}
}
[Log]
private void updateDataBase()
{
try
@ -198,6 +203,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
[Log]
public void SelectFile(object param)
{
using (var folderBrowserDlg = new FolderBrowserDialog())
@ -247,6 +253,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
/// 设定表DB登录
/// </summary>
/// <returns>更新数量</returns>
[Log]
public int insert()
{
string sql = $"SELECT * FROM {TABLE_NAME} WHERE SETTING_ID = '{Key}';";
@ -267,6 +274,7 @@ namespace SparkClient.ViewModel.Configuration.SettingsPages
/// </summary>
/// <param name="Id"></param>
/// <returns>value</returns>
[Log]
public static string SelectValueById(string Id)
{
string sql = $"SELECT * FROM {TABLE_NAME} WHERE SETTING_ID = '{Id}';";

@ -22,6 +22,7 @@ using SparkClient.Model.Common;
using Color = System.Windows.Media.Color;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
using System.Runtime.CompilerServices;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Grading;
@ -94,6 +95,7 @@ public class DiamondSelectVM : BaseViewModel
/// 获取钻石列表
/// </summary>
/// <param name="param"></param>
[Log]
public void InitDiamondList(object param)
{
@ -103,6 +105,7 @@ public class DiamondSelectVM : BaseViewModel
/// 切换钻石类型(右侧列表)
/// </summary>
/// <param name="type">钻石类型</param>
[Log]
public void ChangeDiamondType(object type)
{
if (type!= null)
@ -123,6 +126,7 @@ public class DiamondSelectVM : BaseViewModel
/// 开始检测(对soc和算法开始通讯)
/// </summary>
/// <param name="param"></param>
[Log]
public async void StartGrading(object param)
{
MessageBox messageBox = new MessageBox();
@ -288,6 +292,7 @@ public class DiamondSelectVM : BaseViewModel
#endif
}
[Log]
private string getStandardName()
{
string sql = $"select\r\nRULE_NAME AS NAME,\r\nRULE_EN_NAME AS EN_NAME\r\nfrom\r\nsetting\r\nleft join rule\r\non setting.SETTING_P = rule.RULE_ID\r\nwhere\r\nsetting.SETTING_ID = 'RuleId'\r\n";
@ -319,6 +324,7 @@ public class DiamondSelectVM : BaseViewModel
/// 开始检测(对soc和算法开始通讯)
/// </summary>
/// <param name="param"></param>
[Log]
public async void DoStartGrading(object param)
{
LoadingDialog loading = new LoadingDialog();
@ -406,6 +412,7 @@ public class DiamondSelectVM : BaseViewModel
/// <param name="image_files">图片文件路径的 JSON 字符串</param>
///
private static readonly ILog Logger = LogManager.GetLogger(typeof(AlgorithmServer));
[Log]
private void HandleAlgorithmFailure(string image_files)
{
@ -491,6 +498,7 @@ public class DiamondSelectVM : BaseViewModel
/// 跳转至检测结果
/// </summary>
/// <param name="param"></param>
[Log]
public void GradingResult(AlgorithmResultEntity param)
{
@ -613,6 +621,7 @@ public class ButtonViewModel : BaseViewModel
}
}
[Log]
private void UpdateStyles()
{
if (IsHighlighted)

@ -30,6 +30,7 @@ using NPOI.SS.Formula.Functions;
using System.Windows.Media;
using Brush = System.Drawing.Brush;
using Brushes = System.Drawing.Brushes;
using SparkClient.Model.Attributes;
namespace SparkClient.ViewModel.Grading;
/// <summary>
@ -204,6 +205,7 @@ public class GradingResultVM : BaseViewModel
}
#region 画面初始化相关操作
[Log]
private void InitCombobox()
{
// DS下拉列表初始化
@ -212,6 +214,7 @@ public class GradingResultVM : BaseViewModel
string sql = $"SELECT GRADE_NAME AS NAME, GRADE_EN_S_NAME AS EN_NAME, GRADE_EN_NAME AS EN_ALL_NAME, GRADE_ORDER FROM GRADE WHERE SHAPE_ID = '{shapeId}' AND RULE_ID LIKE '{ruleId}%' GROUP BY GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER ORDER BY GRADE_ORDER; ";
GradeList = DataBaseHelper.ExecuteQuery(sql);
}
[Log]
private void InitViewportData(AlgorithmResultEntity result)
{
Dictionary<string,string> colorProperty = new Dictionary<string,string>();
@ -248,6 +251,7 @@ public class GradingResultVM : BaseViewModel
ViewportData = new ViewportData(result.DiamondCode, data,colorConfigEntity);
ViewportData.LoadData();
}
[Log]
private void InitDSlist()
{
DSList = new DataTable();
@ -258,6 +262,7 @@ public class GradingResultVM : BaseViewModel
DSList.Rows.Add("refer", "refer");
}
[Log]
private void InitView(AlgorithmResultEntity result)
{
try
@ -300,6 +305,7 @@ public class GradingResultVM : BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
[Log]
private string getRuleId()
{
return Settings.SelectValueById("RuleId");
@ -333,6 +339,7 @@ public class GradingResultVM : BaseViewModel
return list;
}
#region 定级计算
[Log]
private string getActualRuleId()
{
string ruleIdForSelect = "";
@ -370,6 +377,7 @@ public class GradingResultVM : BaseViewModel
List<CalGradeInfo> calGrades = DataBaseHelper.ExecuteQuery<CalGradeInfo>(sql);
return calGrades;
}
[Log]
private int calGrade(string item ,double value)
{
int order = 1;
@ -428,6 +436,7 @@ public class GradingResultVM : BaseViewModel
}
return order;
}
[Log]
private string calGrade_TOTAL_DEPTH(double avg)
{
string result = "";
@ -435,6 +444,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_TABLE(double min,double max)
{
string result = "";
@ -444,6 +454,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_CROWN_ANGLE(double min, double max)
{
string result = "";
@ -453,6 +464,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_CROWN_HEIGHT(double min, double max)
{
string result = "";
@ -462,6 +474,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_GIRDLE(double min, double max)
{
string result = "";
@ -471,6 +484,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_PAV_ANGLE(double min, double max)
{
string result = "";
@ -480,6 +494,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_PAV_DEPTH(double min, double max)
{
string result = "";
@ -489,6 +504,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_CULET(double avg)
{
string result = "";
@ -496,6 +512,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_STAR(double min, double max)
{
string result = "";
@ -505,6 +522,7 @@ public class GradingResultVM : BaseViewModel
result = GetGradeName(order);
return result;
}
[Log]
private string calGrade_LOWER_HALVES_RATIO(double min, double max)
{
string result = "";
@ -516,6 +534,7 @@ public class GradingResultVM : BaseViewModel
}
#endregion
#region 参数列表行编辑
[Log]
private string calDev(string max,string min)
{
decimal Max = 0;
@ -525,6 +544,7 @@ public class GradingResultVM : BaseViewModel
return (Max-Min).ToString();
}
[Log]
private DataInfo getDIAMETER(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -537,6 +557,7 @@ public class GradingResultVM : BaseViewModel
info.Dev = calDev(info.Max, info.Min);
return info;
}
[Log]
private DataInfo getTOTAL_DEPTH(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -548,6 +569,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getTABLE(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -561,6 +583,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getCROWN_ANGLE(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -575,6 +598,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getCROWN_HEIGHT(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -589,6 +613,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getGIRDLE_BEZEL(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -602,6 +627,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getGIRDLE_BONE(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -614,6 +640,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getGIRDLE(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -628,6 +655,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getPAV_ANGLE(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -642,6 +670,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getPAV_DEPTH(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -656,6 +685,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getSTAR(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -669,6 +699,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getLOWER_HALVES_RATIO(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -682,6 +713,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getCULET(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -693,6 +725,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getTOC(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -702,6 +735,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getCOC(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -711,6 +745,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getTWIST(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -724,6 +759,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
[Log]
private DataInfo getCULET_TO_TABLE(AlgorithmResultEntity result)
{
DataInfo info = new DataInfo();
@ -733,6 +769,7 @@ public class GradingResultVM : BaseViewModel
return info;
}
#endregion
[Log]
private double CalWight(AlgorithmResultEntity result)
{
// var M1 = result.measurements.M1;
@ -745,10 +782,12 @@ public class GradingResultVM : BaseViewModel
return wight;
}
[Log]
private double Square(double m)
{
return m*m;
}
[Log]
private void AutoSave()
{
if (string.IsNullOrEmpty(DiamondCode))
@ -775,6 +814,7 @@ public class GradingResultVM : BaseViewModel
}
}
[Log]
public void SaveFile(object param)
{
if (string.IsNullOrEmpty(DiamondCode))
@ -803,6 +843,7 @@ public class GradingResultVM : BaseViewModel
SaveTestResult(SaveStatus.Save);
isSaved = true;
}
[Log]
private string getFilePath()
{
string defultFilePath = "";
@ -828,6 +869,7 @@ public class GradingResultVM : BaseViewModel
}
}
#region 文件导出相关
[Log]
public void SaveAs(object param)
{
try
@ -882,6 +924,7 @@ public class GradingResultVM : BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
[Log]
private async void ExportFile(string filePath)
{
try {
@ -947,6 +990,7 @@ public class GradingResultVM : BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
[Log]
private bool FileSaveEnabled(string Key)
{
bool result = false;
@ -958,6 +1002,7 @@ public class GradingResultVM : BaseViewModel
}
return result;
}
[Log]
private int saveFileCount()
{
int result = 0;
@ -973,6 +1018,7 @@ public class GradingResultVM : BaseViewModel
/// txt文件导出
/// </summary>
/// <param name="filePath"></param>
[Log]
private void TxtFile(string filePath)
{
try
@ -1041,6 +1087,7 @@ public class GradingResultVM : BaseViewModel
/// excel文件导出
/// </summary>
/// <param name="filePath"></param>
[Log]
private void ExcelFile(string filePath)
{
try
@ -1106,6 +1153,7 @@ public class GradingResultVM : BaseViewModel
}
}
[Log]
private string calGirdleName(Measurements info)
{
string girdleName = "";
@ -1118,6 +1166,7 @@ public class GradingResultVM : BaseViewModel
girdleName += calGirdleName(max,false);
return girdleName;
}
[Log]
private string calGirdleName(decimal cValue,bool isMin)
{
string girdleName = "";
@ -1215,6 +1264,7 @@ public class GradingResultVM : BaseViewModel
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[Log]
private string FormatDouble_D(double value)
{
return value.ToString("f2");
@ -1224,10 +1274,12 @@ public class GradingResultVM : BaseViewModel
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[Log]
private string FormatDouble_P(double value)
{
return (Math.Floor(value*1000)/10).ToString(digitsFormat);
}
[Log]
private string FormatDouble_P2(double value)
{
return (Math.Floor(value * 10000) / 100).ToString("f2");
@ -1237,6 +1289,7 @@ public class GradingResultVM : BaseViewModel
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[Log]
private string FormatDouble_Avg(double value, Accuracy accuracy)
{
string result = "";
@ -1257,6 +1310,7 @@ public class GradingResultVM : BaseViewModel
}
return result;
}
[Log]
private static double RoundFiveDownSixUp(double value)
{
// 提取整数部分
@ -1279,20 +1333,24 @@ public class GradingResultVM : BaseViewModel
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[Log]
private string FormatDouble_A(double value)
{
return (Math.Floor(value * 10) / 10).ToString(digitsFormat);
}
[Log]
private async Task DatFile(string filePath)
{
//File.Create(filePath + ".dat").Close();
await ViewportData.SaveAsToVedioFile(filePath + ".mp4");
}
[Log]
private async Task STLFile(string filePath)
{
//File.Create(filePath + ".stl").Close();
await ViewportData.SaveAsToStlFile(filePath + ".stl");
}
[Log]
private void DataConver(string filePath)
{
//File.Create(filePath + ".stl").Close();
@ -1301,10 +1359,12 @@ public class GradingResultVM : BaseViewModel
#endregion
#region 各类名称取得
[Log]
private string GetName(string id)
{
return Name.getNameById(id).Trim();
}
[Log]
private string GetGradeName(decimal order)
{
@ -1321,6 +1381,7 @@ public class GradingResultVM : BaseViewModel
// return dictionary[order];
return name;
}
[Log]
private string GetGradeOrder(string Grade)
{
string order = GradeList.AsEnumerable().Where(x => Grade.Equals(x[MultilingualHelper.getString("NameType")].ToString()))
@ -1335,6 +1396,7 @@ public class GradingResultVM : BaseViewModel
// return dictionary[Grade];
return order;
}
[Log]
private string GetGradeEnName(string order)
{
string name = GradeList.AsEnumerable().Where(x => order.Equals(x["GRADE_ORDER"].ToString()))
@ -1355,6 +1417,7 @@ public class GradingResultVM : BaseViewModel
/// 修改对称性等级
/// </summary>
/// <param name="norm"></param>
[Log]
public void ChangeSym(object norm)
{
decimal? order = this.DtResults.Select(x => x.SymLevel).Max();
@ -1369,6 +1432,7 @@ public class GradingResultVM : BaseViewModel
}
}
[Log]
public RowDetail getSelectData(string testItemId)
{
RowDetail row = new RowDetail();
@ -1385,6 +1449,7 @@ public class GradingResultVM : BaseViewModel
this.SelRowDataDetail = row;
return row;
}
[Log]
private void setDetailItems(RowDetail row,string TestItemId)
{
if ("DIAMETER".Equals(TestItemId))
@ -1436,6 +1501,7 @@ public class GradingResultVM : BaseViewModel
setTWIST_DETAIL(row);
}
}
[Log]
private void calIndex(RowDetail row)
{
// 最大值的Index计算
@ -1505,6 +1571,7 @@ public class GradingResultVM : BaseViewModel
row.MinIndex = 7;
}
}
[Log]
private void setDIAMETER_DETAIL(RowDetail row)
{
DiameterDetail diameterDetail = algorithmResult.measurements.DIAMETER_DETAIL;
@ -1518,6 +1585,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_D(diameterDetail.DIAMETER_8);
calIndex(row);
}
[Log]
private void setTABLE_DETAIL(RowDetail row)
{
TableDetail diameterDetail = algorithmResult.measurements.TABLE_DETAIL;
@ -1527,6 +1595,7 @@ public class GradingResultVM : BaseViewModel
row.item4 = FormatDouble_P(diameterDetail.TABLE_4);
calIndex(row);
}
[Log]
private void setCROWN_HEIGHT_DETAIL(RowDetail row)
{
CrownHeightDetail crownHeightDetail = algorithmResult.measurements.CROWN_HEIGHT_DETAIL;
@ -1540,6 +1609,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_P(crownHeightDetail.CROWN_HEIGHT_8);
calIndex(row);
}
[Log]
private void setCROWN_ANGLE_DETAIL(RowDetail row)
{
CrownAngleDetail crownAngleDetail = algorithmResult.measurements.CROWN_ANGLE_DETAIL;
@ -1553,6 +1623,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_A(crownAngleDetail.CROWN_ANGLE_8);
calIndex(row);
}
[Log]
private void setPAV_DEPTH_DETAIL(RowDetail row)
{
PavDepthDetail pavDepthDetail = algorithmResult.measurements.PAV_DEPTH_DETAIL;
@ -1566,6 +1637,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_P(pavDepthDetail.PAV_DEPTH_8);
calIndex(row);
}
[Log]
private void setPAV_ANGLE_DETAIL(RowDetail row)
{
PavAngleDetail pavAngleDetail = algorithmResult.measurements.PAV_ANGLE_DETAIL;
@ -1579,6 +1651,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_A(pavAngleDetail.PAV_ANGLE_8);
calIndex(row);
}
[Log]
private void setGIRDLE_BEZEL_DETAIL(RowDetail row)
{
GirdleBezelDetail girdleBezelDetail = algorithmResult.measurements.GIRDLE_BEZEL_DETAIL;
@ -1592,6 +1665,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_P(girdleBezelDetail.GIRDLE_BEZEL_8);
calIndex(row);
}
[Log]
private void setGIRDLE_BONE_DETAIL(RowDetail row)
{
GirdleBoneDetail girdleBoneDetail = algorithmResult.measurements.GIRDLE_BONE_DETAIL;
@ -1606,6 +1680,7 @@ public class GradingResultVM : BaseViewModel
calIndex(row);
}
[Log]
private void setGIRDLE_VALLEY_DETAIL(RowDetail row)
{
GirdleValleyDetail girdleValleyDetail = algorithmResult.measurements.GIRDLE_VALLEY_DETAIL;
@ -1637,6 +1712,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_P2(doubles[15]);
calIndex(row);
}
[Log]
private void setSTAR_DETAIL(RowDetail row)
{
StarDetail starDetail = algorithmResult.measurements.STAR_DETAIL;
@ -1650,6 +1726,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_P(starDetail.STAR_8);
calIndex(row);
}
[Log]
private void setLOWER_HALVES_RATIO_DETAIL(RowDetail row)
{
LowerHalvesRatioDetail lowerHalvesRatioDetail = algorithmResult.measurements.LOWER_HALVES_RATIO_DETAIL;
@ -1663,6 +1740,7 @@ public class GradingResultVM : BaseViewModel
row.item8 = FormatDouble_P(lowerHalvesRatioDetail.LOWER_HALVES_RATIO_8);
calIndex(row);
}
[Log]
private void setTWIST_DETAIL(RowDetail row)
{
TwistDetail twistDetail = algorithmResult.measurements.TWIST_DETAIL;
@ -1678,6 +1756,7 @@ public class GradingResultVM : BaseViewModel
}
#region 履历保存
[Log]
private void SaveTestResult(SaveStatus saveStatus)
{
string ALGORITHM_RESULT = JsonConvert.SerializeObject(algorithmResult);
@ -1692,6 +1771,7 @@ public class GradingResultVM : BaseViewModel
#endregion
// 执行热敏打印的方法
[Log]
private void ExecuteThermalPrint(object parameter)
{
try
@ -1797,12 +1877,14 @@ public class GradingResultVM : BaseViewModel
this.Size = new System.Drawing.Size(800, 600);
}
[Log]
private void ConfirmButton_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
[Log]
private void SystemPrintButton_Click(object sender, EventArgs e)
{
// 创建一个打印对话框
@ -1819,6 +1901,7 @@ public class GradingResultVM : BaseViewModel
}
}
[Log]
private void PreparePrintData(object sender, PrintPageEventArgs e)
{
var result = algorithmResult.measurements;
@ -1964,6 +2047,7 @@ public class GradingResultVM : BaseViewModel
}
[Log]
private void PrintPageHandler(object sender, PrintPageEventArgs e)
{
var result = algorithmResult.measurements;
@ -2074,6 +2158,7 @@ public class GradingResultVM : BaseViewModel
}
[Log]
private void InitializeSerialPort()
{
try
@ -2161,6 +2246,7 @@ public class Name
public string Id { get; set; }
public string name { get; set; }
[Log]
public static string getNameById(string id)
{
string sql = $"SELECT NAME, EN_NAME FROM NAME WHERE ID = '{id}'";

Loading…
Cancel
Save