From 13516a45d231c0f523cfd33bd7a076eadc5a0c4b Mon Sep 17 00:00:00 2001 From: Tyrone CT Date: Thu, 19 Mar 2026 17:29:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E5=A4=87=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .windsurf/rules/projectrules.md | 133 +++++++++ GroupLine.App/FSqlContext.cs | 2 +- GroupLine.App/GroupLine.App.csproj | 82 ++++-- GroupLine.App/MainWindow.xaml.cs | 10 + .../ModelDto/KPBarrelShrinkFitDto.cs | 69 +++++ .../ModelDto/KPExhCoverSealTestDto.cs | 177 ++++++++++++ GroupLine.App/ModelDto/KPReliefValveAsmDto.cs | 197 +++++++++++++ GroupLine.App/ModelDto/OilGuideMountDto.cs | 165 +++++++++++ GroupLine.App/ModelDto/PLowWeldDto.cs | 21 ++ GroupLine.App/ModelDto/RotorShrinkFitDto.cs | 59 ++++ .../ReportFile/KPBarrelShrinkFitTemplate.xlsx | Bin 0 -> 5262 bytes .../KPExhCoverSealTestTemplate.xlsx | Bin 0 -> 5523 bytes .../ReportFile/KPReliefValveAsmTemplate.xlsx | Bin 0 -> 5481 bytes .../ReportFile/OilGuideMountTemplate.xlsx | Bin 0 -> 5331 bytes .../ReportFile/RotorShrinkFitTemplate.xlsx | Bin 0 -> 5233 bytes .../KPBarrelShrinkFitView.xaml | 116 ++++++++ .../KPBarrelShrinkFitView.xaml.cs | 15 + .../KPExhCoverSealTestView.xaml | 221 +++++++++++++++ .../KPExhCoverSealTestView.xaml.cs | 15 + .../KPReliefValveAsmView.xaml | 82 ++++++ .../KPReliefValveAsmView.xaml.cs | 15 + .../View/OilGuideMount/OilGuideMountView.xaml | 156 +++++++++++ .../OilGuideMount/OilGuideMountView.xaml.cs | 15 + GroupLine.App/View/PLowWeld/PLowWeldView.xaml | 10 + .../RotorShrinkFit/RotorShrinkFitView.xaml | 112 ++++++++ .../RotorShrinkFit/RotorShrinkFitView.xaml.cs | 15 + .../ViewModel/KPBarrelShrinkFitViewModel.cs | 222 +++++++++++++++ .../ViewModel/KPExhCoverSealTestViewModel.cs | 250 +++++++++++++++++ .../ViewModel/KPReliefValveAsmViewModel.cs | 234 ++++++++++++++++ .../ViewModel/OilGuideMountViewModel.cs | 263 ++++++++++++++++++ GroupLine.App/ViewModel/PLowWeldViewModel.cs | 6 +- .../ViewModel/RotorShrinkFitViewModel.cs | 221 +++++++++++++++ GroupLine.App/ViewModel/ViewModelLocator.cs | 45 +++ GroupLine.Model/GroupLine.Model.csproj | 5 + GroupLine.Model/KPBarrelShrinkFit.cs | 50 ++++ GroupLine.Model/KPExhCoverSealTest.cs | 212 ++++++++++++++ GroupLine.Model/KPReliefValveAsm.cs | 116 ++++++++ GroupLine.Model/OilGuideMount.cs | 86 ++++++ GroupLine.Model/PLowWeld.cs | 33 ++- GroupLine.Model/RotorShrinkFit.cs | 44 +++ 40 files changed, 3437 insertions(+), 37 deletions(-) create mode 100644 .windsurf/rules/projectrules.md create mode 100644 GroupLine.App/ModelDto/KPBarrelShrinkFitDto.cs create mode 100644 GroupLine.App/ModelDto/KPExhCoverSealTestDto.cs create mode 100644 GroupLine.App/ModelDto/KPReliefValveAsmDto.cs create mode 100644 GroupLine.App/ModelDto/OilGuideMountDto.cs create mode 100644 GroupLine.App/ModelDto/RotorShrinkFitDto.cs create mode 100644 GroupLine.App/ReportFile/KPBarrelShrinkFitTemplate.xlsx create mode 100644 GroupLine.App/ReportFile/KPExhCoverSealTestTemplate.xlsx create mode 100644 GroupLine.App/ReportFile/KPReliefValveAsmTemplate.xlsx create mode 100644 GroupLine.App/ReportFile/OilGuideMountTemplate.xlsx create mode 100644 GroupLine.App/ReportFile/RotorShrinkFitTemplate.xlsx create mode 100644 GroupLine.App/View/KPBarrelShrinkFit/KPBarrelShrinkFitView.xaml create mode 100644 GroupLine.App/View/KPBarrelShrinkFit/KPBarrelShrinkFitView.xaml.cs create mode 100644 GroupLine.App/View/KPExhCoverSealTest/KPExhCoverSealTestView.xaml create mode 100644 GroupLine.App/View/KPExhCoverSealTest/KPExhCoverSealTestView.xaml.cs create mode 100644 GroupLine.App/View/KPReliefValveAsm/KPReliefValveAsmView.xaml create mode 100644 GroupLine.App/View/KPReliefValveAsm/KPReliefValveAsmView.xaml.cs create mode 100644 GroupLine.App/View/OilGuideMount/OilGuideMountView.xaml create mode 100644 GroupLine.App/View/OilGuideMount/OilGuideMountView.xaml.cs create mode 100644 GroupLine.App/View/RotorShrinkFit/RotorShrinkFitView.xaml create mode 100644 GroupLine.App/View/RotorShrinkFit/RotorShrinkFitView.xaml.cs create mode 100644 GroupLine.App/ViewModel/KPBarrelShrinkFitViewModel.cs create mode 100644 GroupLine.App/ViewModel/KPExhCoverSealTestViewModel.cs create mode 100644 GroupLine.App/ViewModel/KPReliefValveAsmViewModel.cs create mode 100644 GroupLine.App/ViewModel/OilGuideMountViewModel.cs create mode 100644 GroupLine.App/ViewModel/RotorShrinkFitViewModel.cs create mode 100644 GroupLine.Model/KPBarrelShrinkFit.cs create mode 100644 GroupLine.Model/KPExhCoverSealTest.cs create mode 100644 GroupLine.Model/KPReliefValveAsm.cs create mode 100644 GroupLine.Model/OilGuideMount.cs create mode 100644 GroupLine.Model/RotorShrinkFit.cs diff --git a/.windsurf/rules/projectrules.md b/.windsurf/rules/projectrules.md new file mode 100644 index 0000000..5555fd2 --- /dev/null +++ b/.windsurf/rules/projectrules.md @@ -0,0 +1,133 @@ +--- +trigger: always_on +--- +--- +# 当前是在开发GroupLine项目,这是一个WPF项目,使用MVVM模式开发,在这个项目上结构基础上新增几个设备数据数据模型 + +# GroupLine.Model是数据模型的类库,一些数据库对应的模型在这里 + +# 新增的设备模型如下: + +| 模型中文 | 模型英文 | +| ---------------------- | ------------------ | +| 导油板敲入 | OilGuideMount | +| 转子烧嵌 | RotorShrinkFit | +| KP型筒体烧嵌 | KPBarrelShrinkFit | +| KP溢流阀组装机 | KPReliefValveAsm | +| KP排气盖板安装气密检测 | KPExhCoverSealTest | + +# GroupLine.App是WPF界面和功能项目 + +## ModelDto文件夹是进行界面展示的模型Dto + +## ReportFile文件夹是模型导出的数据Excel模板 + +## View和ViewModel文件夹是MVVM开发的放置View和Model的地方 + +## 查询数据使用FSqlContext + +## 每个模型都要在GroupLine.App.ViewModel中的ViewModelLocator 进行注册 + +# 一个查询模型在项目中的一般的流程,以GInsRotaRes为例 + + 1)FrontLine.Model -> GInsRotaRes,具体请查看GInsRotaRes的类描述信息 + 2)GroupLine.App.ModelDto -> GInsRotaResDto,具体请查看GInsRotaResDto的Dto类描述信息 + 3)GroupLine.App.View.GInsRotaRes -> GInsRotaResView ,这个是模型查询的UserControl用户界面,里面包含查询的操作界面和数据表DataGrid展示的内容,具体请查看GroupLine.App.View.GInsRotaRes.GInsRotaResView的具体信息 + 4)GroupLine.App.ViewModel -> GInsRotaResViewModel,模型查询逻辑和数据处理的ViewModel,具体请查看GInsRotaResViewModel的具体信息 + 5) GInsRotaResViewModel中使用的查询数据后导出的数据模板在ReportFile中的GInsRotaResTemplate.xlsx中,里面跟模型的字段是一一匹配的 + 6)GroupLine.App.ViewModel -> ViewModelLocator,根据MvvmLight的开发规范,每个VacuoCheckViewModel都要在这里注册一下 + 7)GroupLine.App -> MainWindow 中会增加View的页面到菜单中:.Add(new SubItem("后组-上外罩焊接(2号機)", new GInsRotaResView())); + 8)在View中展示时,如果字段属性有单位的话,需要在View列头表格中除了显示中文名称外还需要显示单位 + 9) ReportFile文件夹是模型导出的数据Excel模板,里面包含模板的格式(列头信息),你可以查看之前的Excel模板文件来了解如何设计 +# 我给出每个模型的字段信息,你按照上面的流程开发就行,模型的Id是long类型,主键,自增,FreeSql开发 + +## 设备:导油板敲入 OilGuideMount +### 字段信息: +曲轴编号 CrankshaftNo 9位字符串 +支架编号 BracketNo 8位字符串 +支架铸件号 BracketCastingNo 4位字符串 +员工编号 OperatorNo 6位字符串 +放入时无磕碰 PlaceNoDamage 0/OK,1/NG +导油板 OilGuidePlate 0/不做,1/OK +塞尺检测 FeelerGaugeCheck 0/不做,1/OK +埋塞 BuriedPlug 0/不做,1/OK +螺旋螺钉 HelicalScrew 0/不做,1/OK +气密检测 AirTightCheck 0/不做,1/OK + +--------------------------- +## 设备:转子烧嵌 RotorShrinkFit +### 字段信息: +转子编号 RotorNo 16位字符串 +支架编号 BracketNo 8位字符串 +员工编号 OperatorNo 6位字符串 +创建时间 CreateTime + +## 设备:KP型筒体烧嵌 KPBarrelShrinkFit +### 字段信息: +筒体编号 BarrelNo 20位字符串 +定子编号 StatorNo 16位字符串 +员工编号 OperatorNo 4位字符串 +筒体温度 BarrelTemp 浮点数123.4/单位℃ +创建时间 CreateTime + +## 设备:KP溢流阀组装机 KPReliefValveAsm +### 字段信息: +机型 ModelName 8位字符串 +动盘编号 MvDiscNo 8位字符串 +静盘编号 StDiscNo 8位字符串 +节拍 CycleTime 浮点数123.4/(S) +螺丝数量 ScrewCount 整数12/(个) +判定 Result 0/OK,1/NG +最终扭矩1 FinalTorque1 浮点数12.34/(N.M) +最终角度1 FinalAngle1 浮点数1234.5/(deg) +最终扭矩2 FinalTorque2 浮点数12.34/(N.M) +最终角度2 FinalAngle2 浮点数1234.5/(deg) +最终扭矩3 FinalTorque3 浮点数12.34/(N.M) +最终角度3 FinalAngle3 浮点数1234.5/(deg) +最终扭矩4 FinalTorque4 浮点数12.34/(N.M) +最终角度4 FinalAngle4 浮点数1234.5/(deg) +员工编号 OperatorNo 10位字符串 +创建时间 CreateTime + +## 设备:KP排气盖板安装气密检测 KPExhCoverSealTest +### 字段信息: +机型 ModelName 8位字符串 +动盘编号 MvDiscNo 8位字符串 +静盘编号 StDiscNo 8位字符串 +节拍 CycleTime 浮点数123.4/(S) +螺丝数量 ScrewCount 整数12/(个) +判定 Result 0/OK,1/NG +最终扭矩1 FinalTorque1 浮点数12.34/(N.M) +最终角度1 FinalAngle1 浮点数1234.5/(deg) +最终扭矩2 FinalTorque2 浮点数12.34/(N.M) +最终角度2 FinalAngle2 浮点数1234.5/(deg) +最终扭矩3 FinalTorque3 浮点数12.34/(N.M) +最终角度3 FinalAngle3 浮点数1234.5/(deg) +最终扭矩4 FinalTorque4 浮点数12.34/(N.M) +最终角度4 FinalAngle4 浮点数1234.5/(deg) +最终扭矩5 FinalTorque5 浮点数12.34/(N.M) +最终角度5 FinalAngle5 浮点数1234.5/(deg) +最终扭矩6 FinalTorque6 浮点数12.34/(N.M) +最终角度6 FinalAngle6 浮点数1234.5/(deg) +最终扭矩7 FinalTorque7 浮点数12.34/(N.M) +最终角度7 FinalAngle7 浮点数1234.5/(deg) +最终扭矩8 FinalTorque8 浮点数12.34/(N.M) +最终角度8 FinalAngle8 浮点数1234.5/(deg) +最终扭矩9 FinalTorque9 浮点数12.34/(N.M) +最终角度9 FinalAngle9 浮点数1234.5/(deg) +最终扭矩10 FinalTorque10 浮点数12.34/(N.M) +最终角度10 FinalAngle10 浮点数1234.5/(deg) +最终扭矩11 FinalTorque11 浮点数12.34/(N.M) +最终角度11 FinalAngle11 浮点数1234.5/(deg) +最终扭矩12 FinalTorque12 浮点数12.34/(N.M) +最终角度12 FinalAngle12 浮点数1234.5/(deg) +员工编号 OperatorNo 10位字符串 +创建时间 CreateTime + +## 备注 +- 8位字符串: 代表 8位长度的字符串 +- 0/OK,1/NG: 代表 0表示OK,1表示NG,数据库建模时用int类型,展示ModelDto时转换为字符串OK或者NG,其他类似 +- 浮点数1234.5/(deg): 代表 浮点数使用decimal类型,精度根据实际需求调整,比如 1234.5是一个小数点;单位是deg,在View中展示时,需要列头表格中除了显示中文名称外还需要显示单位 +- 时间字段使用DateTime类型 +- 布尔值使用bool类型 +- 整数12: 代表 整数使用int类型,比如 12 \ No newline at end of file diff --git a/GroupLine.App/FSqlContext.cs b/GroupLine.App/FSqlContext.cs index be5182a..423df37 100644 --- a/GroupLine.App/FSqlContext.cs +++ b/GroupLine.App/FSqlContext.cs @@ -6,7 +6,7 @@ namespace GroupLine.App { public static IFreeSql FDb = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.SqlServer, ConfigHelper.GetValue("connecting")) - .UseAutoSyncStructure(true) //自动同步实体结构到数据库 + .UseAutoSyncStructure(false) //自动同步实体结构到数据库 .Build(); //请务必定义成 Singleton 单例模式 } } diff --git a/GroupLine.App/GroupLine.App.csproj b/GroupLine.App/GroupLine.App.csproj index f0bb5cd..672c08d 100644 --- a/GroupLine.App/GroupLine.App.csproj +++ b/GroupLine.App/GroupLine.App.csproj @@ -123,6 +123,11 @@ Designer + + + + + @@ -170,6 +175,11 @@ + + + + + @@ -370,6 +380,21 @@ UserControlMenuItem.xaml + + OilGuideMountView.xaml + + + RotorShrinkFitView.xaml + + + KPBarrelShrinkFitView.xaml + + + KPReliefValveAsmView.xaml + + + KPExhCoverSealTestView.xaml + Designer MSBuild:Compile @@ -590,35 +615,42 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - - ResXFileCodeGenerator - Resources.Designer.cs - - + PreserveNewest - - - Designer - - - SettingsSingleFileGenerator - Settings.Designer.cs + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest PreserveNewest diff --git a/GroupLine.App/MainWindow.xaml.cs b/GroupLine.App/MainWindow.xaml.cs index dde5ca4..dbd1b34 100644 --- a/GroupLine.App/MainWindow.xaml.cs +++ b/GroupLine.App/MainWindow.xaml.cs @@ -54,6 +54,11 @@ using GroupLine.App.View.KPUpBurnEb; using GroupLine.App.View.KPRingWeldMachDw; using GroupLine.App.View.KPRingWeldMachUp; using GroupLine.App.View.KPShrinkTub; +using GroupLine.App.View.OilGuideMount; +using GroupLine.App.View.RotorShrinkFit; +using GroupLine.App.View.KPBarrelShrinkFit; +using GroupLine.App.View.KPReliefValveAsm; +using GroupLine.App.View.KPExhCoverSealTest; namespace GroupLine.App { @@ -168,6 +173,11 @@ namespace GroupLine.App DeviceGroup.Add(new SubItem("K/P型环焊机底部焊接", new KPRingWeldMachDwView())); DeviceGroup.Add(new SubItem("K/P型环焊机顶部焊接", new KPRingWeldMachUpView())); DeviceGroup.Add(new SubItem("K/P型缩管", new KPShrinkTubView())); + DeviceGroup.Add(new SubItem("导油板敲入", new OilGuideMountView())); + DeviceGroup.Add(new SubItem("转子烧嵌", new RotorShrinkFitView())); + DeviceGroup.Add(new SubItem("KP型筒体烧嵌", new KPBarrelShrinkFitView())); + DeviceGroup.Add(new SubItem("KP溢流阀组装机", new KPReliefValveAsmView())); + DeviceGroup.Add(new SubItem("KP排气盖板安装气密检测", new KPExhCoverSealTestView())); var menuKanban = new List(); diff --git a/GroupLine.App/ModelDto/KPBarrelShrinkFitDto.cs b/GroupLine.App/ModelDto/KPBarrelShrinkFitDto.cs new file mode 100644 index 0000000..5c70cd8 --- /dev/null +++ b/GroupLine.App/ModelDto/KPBarrelShrinkFitDto.cs @@ -0,0 +1,69 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace GroupLine.App.ModelDto +{ + [MetadataType(typeof(KPBarrelShrinkFitDto))] + public class KPBarrelShrinkFitDto : ValidateModelBase + { + /// + /// ID + /// + private long _Id; + public long Id + { + get { return _Id; } + set { _Id = value; RaisePropertyChanged(() => Id); } + } + + private string _BarrelNo; + /// + /// 筒体编号 + /// + public string BarrelNo + { + get { return _BarrelNo; } + set { _BarrelNo = value; RaisePropertyChanged(() => BarrelNo); } + } + + private string _StatorNo; + /// + /// 定子编号 + /// + public string StatorNo + { + get { return _StatorNo; } + set { _StatorNo = value; RaisePropertyChanged(() => StatorNo); } + } + + private string _OperatorNo; + /// + /// 员工编号 + /// + public string OperatorNo + { + get { return _OperatorNo; } + set { _OperatorNo = value; RaisePropertyChanged(() => OperatorNo); } + } + + private decimal _BarrelTemp; + /// + /// 筒体温度 + /// + public decimal BarrelTemp + { + get { return _BarrelTemp; } + set { _BarrelTemp = value; RaisePropertyChanged(() => BarrelTemp); } + } + + private DateTime _CreateTime; + /// + /// 创建时间 + /// + public DateTime CreateTime + { + get { return _CreateTime; } + set { _CreateTime = value; RaisePropertyChanged(() => CreateTime); } + } + } +} diff --git a/GroupLine.App/ModelDto/KPExhCoverSealTestDto.cs b/GroupLine.App/ModelDto/KPExhCoverSealTestDto.cs new file mode 100644 index 0000000..7aa847f --- /dev/null +++ b/GroupLine.App/ModelDto/KPExhCoverSealTestDto.cs @@ -0,0 +1,177 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace GroupLine.App.ModelDto +{ + [MetadataType(typeof(KPExhCoverSealTestDto))] + public class KPExhCoverSealTestDto : ValidateModelBase + { + /// + /// ID + /// + private long _Id; + public long Id + { + get { return _Id; } + set { _Id = value; RaisePropertyChanged(() => Id); } + } + + private string _ModelName; + /// + /// 机型 + /// + public string ModelName + { + get { return _ModelName; } + set { _ModelName = value; RaisePropertyChanged(() => ModelName); } + } + + private string _MvDiscNo; + /// + /// 动盘编号 + /// + public string MvDiscNo + { + get { return _MvDiscNo; } + set { _MvDiscNo = value; RaisePropertyChanged(() => MvDiscNo); } + } + + private string _StDiscNo; + /// + /// 静盘编号 + /// + public string StDiscNo + { + get { return _StDiscNo; } + set { _StDiscNo = value; RaisePropertyChanged(() => StDiscNo); } + } + + private decimal _CycleTime; + /// + /// 节拍 + /// + public decimal CycleTime + { + get { return _CycleTime; } + set { _CycleTime = value; RaisePropertyChanged(() => CycleTime); } + } + + private int _ScrewCount; + /// + /// 螺丝数量 + /// + public int ScrewCount + { + get { return _ScrewCount; } + set { _ScrewCount = value; RaisePropertyChanged(() => ScrewCount); } + } + + private string _Result; + /// + /// 判定 + /// + public string Result + { + get { return _Result; } + set { _Result = ConvertOkNg(value); RaisePropertyChanged(() => Result); } + } + + private decimal _FinalTorque1; + public decimal FinalTorque1 { get { return _FinalTorque1; } set { _FinalTorque1 = value; RaisePropertyChanged(() => FinalTorque1); } } + private decimal _FinalAngle1; + public decimal FinalAngle1 { get { return _FinalAngle1; } set { _FinalAngle1 = value; RaisePropertyChanged(() => FinalAngle1); } } + + private decimal _FinalTorque2; + public decimal FinalTorque2 { get { return _FinalTorque2; } set { _FinalTorque2 = value; RaisePropertyChanged(() => FinalTorque2); } } + private decimal _FinalAngle2; + public decimal FinalAngle2 { get { return _FinalAngle2; } set { _FinalAngle2 = value; RaisePropertyChanged(() => FinalAngle2); } } + + private decimal _FinalTorque3; + public decimal FinalTorque3 { get { return _FinalTorque3; } set { _FinalTorque3 = value; RaisePropertyChanged(() => FinalTorque3); } } + private decimal _FinalAngle3; + public decimal FinalAngle3 { get { return _FinalAngle3; } set { _FinalAngle3 = value; RaisePropertyChanged(() => FinalAngle3); } } + + private decimal _FinalTorque4; + public decimal FinalTorque4 { get { return _FinalTorque4; } set { _FinalTorque4 = value; RaisePropertyChanged(() => FinalTorque4); } } + private decimal _FinalAngle4; + public decimal FinalAngle4 { get { return _FinalAngle4; } set { _FinalAngle4 = value; RaisePropertyChanged(() => FinalAngle4); } } + + private decimal _FinalTorque5; + public decimal FinalTorque5 { get { return _FinalTorque5; } set { _FinalTorque5 = value; RaisePropertyChanged(() => FinalTorque5); } } + private decimal _FinalAngle5; + public decimal FinalAngle5 { get { return _FinalAngle5; } set { _FinalAngle5 = value; RaisePropertyChanged(() => FinalAngle5); } } + + private decimal _FinalTorque6; + public decimal FinalTorque6 { get { return _FinalTorque6; } set { _FinalTorque6 = value; RaisePropertyChanged(() => FinalTorque6); } } + private decimal _FinalAngle6; + public decimal FinalAngle6 { get { return _FinalAngle6; } set { _FinalAngle6 = value; RaisePropertyChanged(() => FinalAngle6); } } + + private decimal _FinalTorque7; + public decimal FinalTorque7 { get { return _FinalTorque7; } set { _FinalTorque7 = value; RaisePropertyChanged(() => FinalTorque7); } } + private decimal _FinalAngle7; + public decimal FinalAngle7 { get { return _FinalAngle7; } set { _FinalAngle7 = value; RaisePropertyChanged(() => FinalAngle7); } } + + private decimal _FinalTorque8; + public decimal FinalTorque8 { get { return _FinalTorque8; } set { _FinalTorque8 = value; RaisePropertyChanged(() => FinalTorque8); } } + private decimal _FinalAngle8; + public decimal FinalAngle8 { get { return _FinalAngle8; } set { _FinalAngle8 = value; RaisePropertyChanged(() => FinalAngle8); } } + + private decimal _FinalTorque9; + public decimal FinalTorque9 { get { return _FinalTorque9; } set { _FinalTorque9 = value; RaisePropertyChanged(() => FinalTorque9); } } + private decimal _FinalAngle9; + public decimal FinalAngle9 { get { return _FinalAngle9; } set { _FinalAngle9 = value; RaisePropertyChanged(() => FinalAngle9); } } + + private decimal _FinalTorque10; + public decimal FinalTorque10 { get { return _FinalTorque10; } set { _FinalTorque10 = value; RaisePropertyChanged(() => FinalTorque10); } } + private decimal _FinalAngle10; + public decimal FinalAngle10 { get { return _FinalAngle10; } set { _FinalAngle10 = value; RaisePropertyChanged(() => FinalAngle10); } } + + private decimal _FinalTorque11; + public decimal FinalTorque11 { get { return _FinalTorque11; } set { _FinalTorque11 = value; RaisePropertyChanged(() => FinalTorque11); } } + private decimal _FinalAngle11; + public decimal FinalAngle11 { get { return _FinalAngle11; } set { _FinalAngle11 = value; RaisePropertyChanged(() => FinalAngle11); } } + + private decimal _FinalTorque12; + public decimal FinalTorque12 { get { return _FinalTorque12; } set { _FinalTorque12 = value; RaisePropertyChanged(() => FinalTorque12); } } + private decimal _FinalAngle12; + public decimal FinalAngle12 { get { return _FinalAngle12; } set { _FinalAngle12 = value; RaisePropertyChanged(() => FinalAngle12); } } + + private string _OperatorNo; + /// + /// 员工编号 + /// + public string OperatorNo + { + get { return _OperatorNo; } + set { _OperatorNo = value; RaisePropertyChanged(() => OperatorNo); } + } + + private DateTime _CreateTime; + /// + /// 创建时间 + /// + public DateTime CreateTime + { + get { return _CreateTime; } + set { _CreateTime = value; RaisePropertyChanged(() => CreateTime); } + } + + /// + /// 将0/1转换为OK/NG。 + /// + /// 源值。 + /// 展示文本。 + private static string ConvertOkNg(string value) + { + switch (value) + { + case "0": + return "OK"; + case "1": + return "NG"; + default: + return value; + } + } + } +} diff --git a/GroupLine.App/ModelDto/KPReliefValveAsmDto.cs b/GroupLine.App/ModelDto/KPReliefValveAsmDto.cs new file mode 100644 index 0000000..eb2f7f8 --- /dev/null +++ b/GroupLine.App/ModelDto/KPReliefValveAsmDto.cs @@ -0,0 +1,197 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace GroupLine.App.ModelDto +{ + [MetadataType(typeof(KPReliefValveAsmDto))] + public class KPReliefValveAsmDto : ValidateModelBase + { + /// + /// ID + /// + private long _Id; + public long Id + { + get { return _Id; } + set { _Id = value; RaisePropertyChanged(() => Id); } + } + + private string _ModelName; + /// + /// 机型 + /// + public string ModelName + { + get { return _ModelName; } + set { _ModelName = value; RaisePropertyChanged(() => ModelName); } + } + + private string _MvDiscNo; + /// + /// 动盘编号 + /// + public string MvDiscNo + { + get { return _MvDiscNo; } + set { _MvDiscNo = value; RaisePropertyChanged(() => MvDiscNo); } + } + + private string _StDiscNo; + /// + /// 静盘编号 + /// + public string StDiscNo + { + get { return _StDiscNo; } + set { _StDiscNo = value; RaisePropertyChanged(() => StDiscNo); } + } + + private decimal _CycleTime; + /// + /// 节拍 + /// + public decimal CycleTime + { + get { return _CycleTime; } + set { _CycleTime = value; RaisePropertyChanged(() => CycleTime); } + } + + private int _ScrewCount; + /// + /// 螺丝数量 + /// + public int ScrewCount + { + get { return _ScrewCount; } + set { _ScrewCount = value; RaisePropertyChanged(() => ScrewCount); } + } + + private string _Result; + /// + /// 判定 + /// + public string Result + { + get { return _Result; } + set { _Result = ConvertOkNg(value); RaisePropertyChanged(() => Result); } + } + + private decimal _FinalTorque1; + /// + /// 最终扭矩1 + /// + public decimal FinalTorque1 + { + get { return _FinalTorque1; } + set { _FinalTorque1 = value; RaisePropertyChanged(() => FinalTorque1); } + } + + private decimal _FinalAngle1; + /// + /// 最终角度1 + /// + public decimal FinalAngle1 + { + get { return _FinalAngle1; } + set { _FinalAngle1 = value; RaisePropertyChanged(() => FinalAngle1); } + } + + private decimal _FinalTorque2; + /// + /// 最终扭矩2 + /// + public decimal FinalTorque2 + { + get { return _FinalTorque2; } + set { _FinalTorque2 = value; RaisePropertyChanged(() => FinalTorque2); } + } + + private decimal _FinalAngle2; + /// + /// 最终角度2 + /// + public decimal FinalAngle2 + { + get { return _FinalAngle2; } + set { _FinalAngle2 = value; RaisePropertyChanged(() => FinalAngle2); } + } + + private decimal _FinalTorque3; + /// + /// 最终扭矩3 + /// + public decimal FinalTorque3 + { + get { return _FinalTorque3; } + set { _FinalTorque3 = value; RaisePropertyChanged(() => FinalTorque3); } + } + + private decimal _FinalAngle3; + /// + /// 最终角度3 + /// + public decimal FinalAngle3 + { + get { return _FinalAngle3; } + set { _FinalAngle3 = value; RaisePropertyChanged(() => FinalAngle3); } + } + + private decimal _FinalTorque4; + /// + /// 最终扭矩4 + /// + public decimal FinalTorque4 + { + get { return _FinalTorque4; } + set { _FinalTorque4 = value; RaisePropertyChanged(() => FinalTorque4); } + } + + private decimal _FinalAngle4; + /// + /// 最终角度4 + /// + public decimal FinalAngle4 + { + get { return _FinalAngle4; } + set { _FinalAngle4 = value; RaisePropertyChanged(() => FinalAngle4); } + } + + private string _OperatorNo; + /// + /// 员工编号 + /// + public string OperatorNo + { + get { return _OperatorNo; } + set { _OperatorNo = value; RaisePropertyChanged(() => OperatorNo); } + } + + private DateTime _CreateTime; + /// + /// 创建时间 + /// + public DateTime CreateTime + { + get { return _CreateTime; } + set { _CreateTime = value; RaisePropertyChanged(() => CreateTime); } + } + + /// + /// 将0/1转换为OK/NG。 + /// + /// 源值。 + /// 展示文本。 + private static string ConvertOkNg(string value) + { + switch (value) + { + case "0": + return "OK"; + case "1": + return "NG"; + default: + return value; + } + } + } +} diff --git a/GroupLine.App/ModelDto/OilGuideMountDto.cs b/GroupLine.App/ModelDto/OilGuideMountDto.cs new file mode 100644 index 0000000..9de7bcf --- /dev/null +++ b/GroupLine.App/ModelDto/OilGuideMountDto.cs @@ -0,0 +1,165 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace GroupLine.App.ModelDto +{ + [MetadataType(typeof(OilGuideMountDto))] + public class OilGuideMountDto : ValidateModelBase + { + /// + /// ID + /// + private long _Id; + public long Id + { + get { return _Id; } + set { _Id = value; RaisePropertyChanged(() => Id); } + } + + private string _CrankshaftNo; + /// + /// 曲轴编号 + /// + public string CrankshaftNo + { + get { return _CrankshaftNo; } + set { _CrankshaftNo = value; RaisePropertyChanged(() => CrankshaftNo); } + } + + private string _BracketNo; + /// + /// 支架编号 + /// + public string BracketNo + { + get { return _BracketNo; } + set { _BracketNo = value; RaisePropertyChanged(() => BracketNo); } + } + + private string _BracketCastingNo; + /// + /// 支架铸件号 + /// + public string BracketCastingNo + { + get { return _BracketCastingNo; } + set { _BracketCastingNo = value; RaisePropertyChanged(() => BracketCastingNo); } + } + + private string _OperatorNo; + /// + /// 员工编号 + /// + public string OperatorNo + { + get { return _OperatorNo; } + set { _OperatorNo = value; RaisePropertyChanged(() => OperatorNo); } + } + + private string _PlaceNoDamage; + /// + /// 放入时无磕碰 + /// + public string PlaceNoDamage + { + get { return _PlaceNoDamage; } + set { _PlaceNoDamage = ConvertOkNg(value); RaisePropertyChanged(() => PlaceNoDamage); } + } + + private string _OilGuidePlate; + /// + /// 导油板 + /// + public string OilGuidePlate + { + get { return _OilGuidePlate; } + set { _OilGuidePlate = ConvertNotDoOk(value); RaisePropertyChanged(() => OilGuidePlate); } + } + + private string _FeelerGaugeCheck; + /// + /// 塞尺检测 + /// + public string FeelerGaugeCheck + { + get { return _FeelerGaugeCheck; } + set { _FeelerGaugeCheck = ConvertNotDoOk(value); RaisePropertyChanged(() => FeelerGaugeCheck); } + } + + private string _BuriedPlug; + /// + /// 埋塞 + /// + public string BuriedPlug + { + get { return _BuriedPlug; } + set { _BuriedPlug = ConvertNotDoOk(value); RaisePropertyChanged(() => BuriedPlug); } + } + + private string _HelicalScrew; + /// + /// 螺旋螺钉 + /// + public string HelicalScrew + { + get { return _HelicalScrew; } + set { _HelicalScrew = ConvertNotDoOk(value); RaisePropertyChanged(() => HelicalScrew); } + } + + private string _AirTightCheck; + /// + /// 气密检测 + /// + public string AirTightCheck + { + get { return _AirTightCheck; } + set { _AirTightCheck = ConvertNotDoOk(value); RaisePropertyChanged(() => AirTightCheck); } + } + + private DateTime _CreateTime; + /// + /// 创建时间 + /// + public DateTime CreateTime + { + get { return _CreateTime; } + set { _CreateTime = value; RaisePropertyChanged(() => CreateTime); } + } + + /// + /// 将0/1转换为OK/NG。 + /// + /// 源值。 + /// 展示文本。 + private static string ConvertOkNg(string value) + { + switch (value) + { + case "0": + return "OK"; + case "1": + return "NG"; + default: + return value; + } + } + + /// + /// 将0/1转换为不做/OK。 + /// + /// 源值。 + /// 展示文本。 + private static string ConvertNotDoOk(string value) + { + switch (value) + { + case "0": + return "不做"; + case "1": + return "OK"; + default: + return value; + } + } + } +} diff --git a/GroupLine.App/ModelDto/PLowWeldDto.cs b/GroupLine.App/ModelDto/PLowWeldDto.cs index 95ba474..42fcbd3 100644 --- a/GroupLine.App/ModelDto/PLowWeldDto.cs +++ b/GroupLine.App/ModelDto/PLowWeldDto.cs @@ -98,6 +98,27 @@ private string _OpNo; get { return _OpNo; } set { _OpNo = value; RaisePropertyChanged(() => OpNo); } } + +private decimal _GapblockDepth; + /// + /// 间隙块深度 + /// + public decimal GapblockDepth + { + get { return _GapblockDepth; } + set { _GapblockDepth = value; RaisePropertyChanged(() => GapblockDepth); } + } + +private string _PalletNo; + /// + /// 托盘号 + /// + public string PalletNo + { + get { return _PalletNo; } + set { _PalletNo = value; RaisePropertyChanged(() => PalletNo); } + } + private DateTime _CreateTime; /// /// 创建时间 diff --git a/GroupLine.App/ModelDto/RotorShrinkFitDto.cs b/GroupLine.App/ModelDto/RotorShrinkFitDto.cs new file mode 100644 index 0000000..281e0ae --- /dev/null +++ b/GroupLine.App/ModelDto/RotorShrinkFitDto.cs @@ -0,0 +1,59 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace GroupLine.App.ModelDto +{ + [MetadataType(typeof(RotorShrinkFitDto))] + public class RotorShrinkFitDto : ValidateModelBase + { + /// + /// ID + /// + private long _Id; + public long Id + { + get { return _Id; } + set { _Id = value; RaisePropertyChanged(() => Id); } + } + + private string _RotorNo; + /// + /// 转子编号 + /// + public string RotorNo + { + get { return _RotorNo; } + set { _RotorNo = value; RaisePropertyChanged(() => RotorNo); } + } + + private string _BracketNo; + /// + /// 支架编号 + /// + public string BracketNo + { + get { return _BracketNo; } + set { _BracketNo = value; RaisePropertyChanged(() => BracketNo); } + } + + private string _OperatorNo; + /// + /// 员工编号 + /// + public string OperatorNo + { + get { return _OperatorNo; } + set { _OperatorNo = value; RaisePropertyChanged(() => OperatorNo); } + } + + private DateTime _CreateTime; + /// + /// 创建时间 + /// + public DateTime CreateTime + { + get { return _CreateTime; } + set { _CreateTime = value; RaisePropertyChanged(() => CreateTime); } + } + } +} diff --git a/GroupLine.App/ReportFile/KPBarrelShrinkFitTemplate.xlsx b/GroupLine.App/ReportFile/KPBarrelShrinkFitTemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..079ec721452e62d9326095f2129ae225cd3bd215 GIT binary patch literal 5262 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 OqCV0nnwKQ~_4Xf+2tR57 literal 0 HcmV?d00001 diff --git a/GroupLine.App/ReportFile/KPExhCoverSealTestTemplate.xlsx b/GroupLine.App/ReportFile/KPExhCoverSealTestTemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1bb9ef8596bee4a23e46a318a7d341dbb40f1175 GIT binary patch literal 5523 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 PK%bA%Aztzq0RjI9VpO|` literal 0 HcmV?d00001 diff --git a/GroupLine.App/ReportFile/KPReliefValveAsmTemplate.xlsx b/GroupLine.App/ReportFile/KPReliefValveAsmTemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..cbedc2d2023ecba7f69de46630e4dc340ee727ff GIT binary patch literal 5481 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 literal 0 HcmV?d00001 diff --git a/GroupLine.App/View/KPBarrelShrinkFit/KPBarrelShrinkFitView.xaml b/GroupLine.App/View/KPBarrelShrinkFit/KPBarrelShrinkFitView.xaml new file mode 100644 index 0000000..516bcf0 --- /dev/null +++ b/GroupLine.App/View/KPBarrelShrinkFit/KPBarrelShrinkFitView.xaml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + [Column(DbType = "nvarchar(20)")] public string CylinderNo { get; set; } -/// + /// /// 曲轴编号 /// [Column(DbType = "nvarchar(10)")] public string CrankshaftNo { get; set; } -/// + /// /// 下部编号 /// [Column(DbType = "nvarchar(10)")] public string DownNo { get; set; } -/// + /// /// 下部铸件编号 /// [Column(DbType = "nvarchar(10)")] public string DoCastNo { get; set; } -/// + /// /// 定子压入深度 /// [Column(DbType = "decimal(8, 2)")] public decimal StatorPressDep { get; set; } -/// + /// /// 转子压入深度 /// [Column(DbType = "decimal(8, 2)")] public decimal RotorPressDep { get; set; } -/// + /// /// 塞尺检查(OK) /// [Column(DbType = "nvarchar(6)")] public string FelerGgeResult { get; set; } -/// + /// /// 磁石检查(OK) /// [Column(DbType = "nvarchar(6)")] public string MagnetResult { get; set; } -/// + + + /// /// 员工编号 /// [Column(DbType = "nvarchar(6)")] public string OpNo { get; set; } -/// + + /// + /// 间隙块深度 + /// + [Column(DbType = "decimal(8, 2)")] + public decimal GapblockDepth { get; set; } + + /// + /// 托盘号 + /// + [Column(DbType = "nvarchar(6)")] + public string PalletNo { get; set; } + + /// /// 创建时间 /// [Column(DbType = "datetime DEFAULT(GETDATE())")] diff --git a/GroupLine.Model/RotorShrinkFit.cs b/GroupLine.Model/RotorShrinkFit.cs new file mode 100644 index 0000000..7e6ae37 --- /dev/null +++ b/GroupLine.Model/RotorShrinkFit.cs @@ -0,0 +1,44 @@ +using FreeSql.DataAnnotations; +using System; + +namespace GroupLine.Model +{ + /// + /// 转子烧嵌 + /// + [Table(Name = "dbo.RotorShrinkFit")] + [Index("IX_CreateTime", "CreateTime", false)] + [Index("IX_RotorNo", "RotorNo", false)] + public class RotorShrinkFit + { + /// + /// Id + /// + [Column(IsIdentity = true)] + public long Id { get; set; } + + /// + /// 转子编号 + /// + [Column(DbType = "nvarchar(16)")] + public string RotorNo { get; set; } + + /// + /// 支架编号 + /// + [Column(DbType = "nvarchar(8)")] + public string BracketNo { get; set; } + + /// + /// 员工编号 + /// + [Column(DbType = "nvarchar(6)")] + public string OperatorNo { get; set; } + + /// + /// 创建时间 + /// + [Column(DbType = "datetime DEFAULT(GETDATE())")] + public DateTime CreateTime { get; set; } + } +}