浏览代码

修改报表

ltwork 1 年之前
父节点
当前提交
5e02439158

+ 37 - 56
BlankApp1/BlankApp1/ViewModels/BusinessManageViewModel/AutoTestViewModel.cs

@@ -312,12 +312,14 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         /// <summary>
         /// <summary>
         /// 增加测试记录明细
         /// 增加测试记录明细
         /// </summary>
         /// </summary>
-
-        private void AddOrEditTesDtltRecord(long schDetailId)
+        /// <summary>
+        /// 获取记录明细
+        /// </summary>
+        private void AddDtltRecord(long schDetailId)
         {
         {
             //查找record ID
             //查找record ID
             long recordId = 0;
             long recordId = 0;
-            var findRecordID =_iBizTestRecordService.FindRecorddByDeviceIdAndSchname(globalDeviceId, ScheduleName);
+            var findRecordID = _iBizTestRecordService.FindRecorddByDeviceIdAndSchname(globalDeviceId, ScheduleName);
             if (findRecordID != null)
             if (findRecordID != null)
             {
             {
                 recordId = findRecordID.record_id;
                 recordId = findRecordID.record_id;
@@ -325,48 +327,27 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             testStatus = 99;//测试状态赋值为99
             testStatus = 99;//测试状态赋值为99
                             //状态status 没有赋值
                             //状态status 没有赋值
 
 
-            //记录记录明细表中是否有这个方案明细ID的记录,没有则添加,有则更新记录状态
-            var findRecordDetail = _iBizTestRecordDtlService.FindRecordDetailBySchDtlID(schDetailId);
-            if (findRecordDetail == null)
-            {
-                BizTestRecordDtlDto newBizTestEwDetail = new BizTestRecordDtlDto();
-                newBizTestEwDetail.RecordId = recordId;
-                newBizTestEwDetail.SchemeDtlId = schDetailId;
-                newBizTestEwDetail.StartTestTime = startTime;
-                newBizTestEwDetail.FinishTestTime = endTime;
-                newBizTestEwDetail.TestMode = TestMode;
-                newBizTestEwDetail.Status = testStatus;
-                newBizTestEwDetail.TestResult = GetTestResult();
-                newBizTestEwDetail.CreateBy = Appsession.UserName;
-                newBizTestEwDetail.CreateTime = startTime;
-                newBizTestEwDetail.UpdateBy = Appsession.UserName;
-                newBizTestEwDetail.UpdateTime = DateTime.Now;
-                var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(newBizTestEwDetail);
-                _iBizTestRecordDtlService.Add(testRecordDtl);
-            }
-            else
-            {
-                bizTestRecordDtlDto.RecordDtlId = findRecordDetail.record_dtl_id;
-                bizTestRecordDtlDto.RecordId = recordId;
-                bizTestRecordDtlDto.SchemeDtlId = schDetailId;
-                bizTestRecordDtlDto.StartTestTime = startTime;
-                bizTestRecordDtlDto.FinishTestTime = endTime;
-                bizTestRecordDtlDto.TestMode = TestMode;
-                bizTestRecordDtlDto.Status = testStatus;
-                bizTestRecordDtlDto.TestResult = GetTestResult();
-                bizTestRecordDtlDto.CreateBy = Appsession.UserName;
-                bizTestRecordDtlDto.CreateTime = startTime;
-                bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
-                bizTestRecordDtlDto.UpdateTime = DateTime.Now;
-                //更新时间
-                bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
-                bizTestRecordDtlDto.UpdateTime = DateTime.Now;
-                UpdateTesDtltRecord();
-            }
+            bizTestRecordDtlDto.RecordId = recordId;
+            bizTestRecordDtlDto.SchemeDtlId = schDetailId;
+            bizTestRecordDtlDto.StartTestTime = startTime;
+            bizTestRecordDtlDto.FinishTestTime = endTime;
+            bizTestRecordDtlDto.TestMode = TestMode;
+            bizTestRecordDtlDto.Status = testStatus;
+            bizTestRecordDtlDto.TestResult = GetTestResult();
+            bizTestRecordDtlDto.CreateBy = Appsession.UserName;
+            bizTestRecordDtlDto.CreateTime = startTime;
+            bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
+            bizTestRecordDtlDto.UpdateTime = DateTime.Now;
+            //更新时间
+            bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
+            bizTestRecordDtlDto.UpdateTime = DateTime.Now;
 
 
+            var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(bizTestRecordDtlDto);
+            _iBizTestRecordDtlService.Add(testRecordDtl);
 
 
 
 
         }
         }
+       
         /// <summary>
         /// <summary>
         /// 获取测试结果
         /// 获取测试结果
         /// </summary>
         /// </summary>
@@ -607,6 +588,8 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
 
 
             //输出项
             //输出项
             bool isJudgeResult = await TestJudgementMethod();
             bool isJudgeResult = await TestJudgementMethod();
+            //增加测试记录
+            AddDtltRecord(globalSchDetailId);
             //下一项
             //下一项
             StepIndex = 0;
             StepIndex = 0;
             await Task.Delay(2000);
             await Task.Delay(2000);
@@ -688,8 +671,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                     }
                     }
                     break;
                     break;
             }
             }
-            //更新测试记录
-            AddOrEditTesDtltRecord(globalSchDetailId);
+            
             return true;
             return true;
         }
         }
 
 
@@ -816,9 +798,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                     }
                     }
                     break;
                     break;
             }
             }
-            //更新测试记录
-            //更新测试记录
-            AddOrEditTesDtltRecord(globalSchDetailId);
+      
             return isActionResult;
             return isActionResult;
         }
         }
         /// <summary>
         /// <summary>
@@ -989,11 +969,10 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                     }
                     }
                     break;
                     break;
             }
             }
-            //更新测试记录
-            //更新测试记录
+          
+ 
             endTime = DateTime.Now;
             endTime = DateTime.Now;
-            AddOrEditTesDtltRecord(globalSchDetailId);
-
+    
             return isJudge;
             return isJudge;
         }
         }
         /// <summary>
         /// <summary>
@@ -1002,7 +981,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         private async Task ReadJudge(String strLogic)
         private async Task ReadJudge(String strLogic)
         {
         {
             int countCond = 0;
             int countCond = 0;
-          
+            DateTime entryTime = DateTime.Now;
             foreach (var item in OutConList.OrderBy(x => x.Id))
             foreach (var item in OutConList.OrderBy(x => x.Id))
             {
             {
                 string plcAddress = item.PlcAddress;
                 string plcAddress = item.PlcAddress;
@@ -1015,8 +994,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                     case "bool":
                     case "bool":
                       
                       
                         string readResult = string.Empty;
                         string readResult = string.Empty;
-                        //
-                        DateTime entryTime = DateTime.Now;
+                      
                         await Task.Run(async () =>
                         await Task.Run(async () =>
                         {
                         {
                             while (entryTime.AddMilliseconds(delayTime * 1000) > DateTime.Now)
                             while (entryTime.AddMilliseconds(delayTime * 1000) > DateTime.Now)
@@ -1034,6 +1012,8 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                                 await Task.Delay(1000);
                                 await Task.Delay(1000);
                             }
                             }
                         });
                         });
+                        //可能有多个条件判定的,第二次时间到了直接跳出延时,直接读取,不用在延时20s
+                        readResult = PLCCom.GetInstance().ReadPlcObject(plcAddress, VarType.Bit);
                         ProVisibility = Visibility.Hidden;
                         ProVisibility = Visibility.Hidden;
                       
                       
                       
                       
@@ -1052,12 +1032,12 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
 
 
                         break;
                         break;
                     case "word":
                     case "word":
-                        DateTime entryTime2 = DateTime.Now;
+                      
                         string readResult2 = string.Empty;
                         string readResult2 = string.Empty;
                         //一直读
                         //一直读
                         await Task.Run(async () =>
                         await Task.Run(async () =>
                         {
                         {
-                            while (entryTime2.AddMilliseconds(delayTime * 1000) > DateTime.Now)
+                            while (entryTime.AddMilliseconds(delayTime * 1000) > DateTime.Now)
                             {
                             {
                                 //显示进度条
                                 //显示进度条
                                 System.Windows.Application.Current.Dispatcher.Invoke((delegate
                                 System.Windows.Application.Current.Dispatcher.Invoke((delegate
@@ -1073,7 +1053,8 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                                 await Task.Delay(1000);
                                 await Task.Delay(1000);
                             }
                             }
                         });
                         });
-
+                        //可能有多个条件判定的,第二次时间到了直接跳出延时,直接读取,不用在延时20s
+                        readResult2 = PLCCom.GetInstance().ReadPlcObject(plcAddress, VarType.Word);
                         ProVisibility = Visibility.Hidden;
                         ProVisibility = Visibility.Hidden;
                         ///实时值记录
                         ///实时值记录
                         item.RealValue = readResult2;
                         item.RealValue = readResult2;

+ 30 - 46
BlankApp1/BlankApp1/ViewModels/BusinessManageViewModel/ManualTestViewModel.cs

@@ -49,6 +49,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         private long globalDeviceId = 0; //设备ID
         private long globalDeviceId = 0; //设备ID
         private BizTestRecordDtlDto bizTestRecordDtlDto = new BizTestRecordDtlDto(); //测试方案明细表
         private BizTestRecordDtlDto bizTestRecordDtlDto = new BizTestRecordDtlDto(); //测试方案明细表
         private const string TestMode = "手动测试";
         private const string TestMode = "手动测试";
+
         private int delayTime = 20;
         private int delayTime = 20;
         public ManualTestViewModel(IDialogService dialog, IEventAggregator aggregator, IOptionConfigService optionConfigService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBasicPlcTestSchemeDtlService basicPlcTestSchemeDtlService, IBizTestRecordService iBizTestRecordService, IBizTestRecordDtlService iBizTestRecordDtlService,IMapper mapper,ILogger logger)
         public ManualTestViewModel(IDialogService dialog, IEventAggregator aggregator, IOptionConfigService optionConfigService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBasicPlcTestSchemeDtlService basicPlcTestSchemeDtlService, IBizTestRecordService iBizTestRecordService, IBizTestRecordDtlService iBizTestRecordDtlService,IMapper mapper,ILogger logger)
         {
         {
@@ -276,9 +277,9 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
            
            
         }
         }
         /// <summary>
         /// <summary>
-        /// 增加测试记录明细
+        /// 获取记录明细
         /// </summary>
         /// </summary>
-        private void AddOrEditTesDtltRecord(long schDetailId)
+        private void AddDtltRecord(long schDetailId)
         {
         {
             //查找record ID
             //查找record ID
             long recordId = 0;
             long recordId = 0;
@@ -290,45 +291,25 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             testStatus = 99;//测试状态赋值为99
             testStatus = 99;//测试状态赋值为99
                             //状态status 没有赋值
                             //状态status 没有赋值
 
 
-            
-            //无论第几次测试都添加
-                BizTestRecordDtlDto newBizTestEwDetail=new BizTestRecordDtlDto();
-                newBizTestEwDetail.RecordId = recordId;
-                newBizTestEwDetail.SchemeDtlId = schDetailId;
-                newBizTestEwDetail.StartTestTime = startTime;
-                newBizTestEwDetail.FinishTestTime = endTime;
-                newBizTestEwDetail.TestMode = TestMode;
-                newBizTestEwDetail.Status = testStatus;
-                newBizTestEwDetail.TestResult = GetTestResult();
-                newBizTestEwDetail.CreateBy = Appsession.UserName;
-                newBizTestEwDetail.CreateTime = startTime;
-                newBizTestEwDetail.UpdateBy = Appsession.UserName;
-                newBizTestEwDetail.UpdateTime = DateTime.Now;
-                var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(newBizTestEwDetail);
-                _iBizTestRecordDtlService.Add(testRecordDtl);
-            
-            //else
-            //{
-            //    bizTestRecordDtlDto.RecordDtlId = findRecordDetail.record_dtl_id;
-            //    bizTestRecordDtlDto.RecordId = recordId;
-            //    bizTestRecordDtlDto.SchemeDtlId = schDetailId;
-            //    bizTestRecordDtlDto.StartTestTime = startTime;
-            //    bizTestRecordDtlDto.FinishTestTime = endTime;
-            //    bizTestRecordDtlDto.TestMode = TestMode;
-            //    bizTestRecordDtlDto.Status = testStatus;
-            //    bizTestRecordDtlDto.TestResult = GetTestResult();
-            //    bizTestRecordDtlDto.CreateBy = Appsession.UserName;
-            //    bizTestRecordDtlDto.CreateTime = startTime;
-            //    bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
-            //    bizTestRecordDtlDto.UpdateTime = DateTime.Now;
-            //    //更新时间
-            //    bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
-            //    bizTestRecordDtlDto.UpdateTime = DateTime.Now;
-            //    UpdateTesDtltRecord();
-            //}
-            
-
+            bizTestRecordDtlDto.RecordId = recordId;
+            bizTestRecordDtlDto.SchemeDtlId = schDetailId;
+            bizTestRecordDtlDto.StartTestTime = startTime;
+            bizTestRecordDtlDto.FinishTestTime = endTime;
+            bizTestRecordDtlDto.TestMode = TestMode;
+            bizTestRecordDtlDto.Status = testStatus;
+            bizTestRecordDtlDto.TestResult = GetTestResult();
+            bizTestRecordDtlDto.CreateBy = Appsession.UserName;
+            bizTestRecordDtlDto.CreateTime = startTime;
+            bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
+            bizTestRecordDtlDto.UpdateTime = DateTime.Now;
+            //更新时间
+            bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
+            bizTestRecordDtlDto.UpdateTime = DateTime.Now;
+        
+            var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(bizTestRecordDtlDto);
+            _iBizTestRecordDtlService.Add(testRecordDtl);
 
 
+  
         }
         }
         /// <summary>
         /// <summary>
         /// 判定结果
         /// 判定结果
@@ -569,6 +550,8 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         /// <param name="obj"></param>
         /// <param name="obj"></param>
         private async  void Start(object obj)
         private async  void Start(object obj)
         {
         {
+         
+   
             StartEnalbe = false;
             StartEnalbe = false;
             _logger.LogInformation($"开始手动测试。方案名{ScheduleName},测试项{TestName}");
             _logger.LogInformation($"开始手动测试。方案名{ScheduleName},测试项{TestName}");
             //开始时间
             //开始时间
@@ -602,6 +585,10 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 StartEnalbe = true;
                 StartEnalbe = true;
                 return;
                 return;
             }
             }
+            //将测试结果添加到数据库
+
+            AddDtltRecord(globalSchDetailId);
+
             _logger.LogInformation($"手动测试完成。方案名{ScheduleName},测试项{TestName}");
             _logger.LogInformation($"手动测试完成。方案名{ScheduleName},测试项{TestName}");
             StartEnalbe = true;
             StartEnalbe = true;
         }
         }
@@ -677,8 +664,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                     }
                     }
                     break;
                     break;
             }
             }
-            //更新测试记录
-            AddOrEditTesDtltRecord(globalSchDetailId);
+          
             return true;
             return true;
         }
         }
 
 
@@ -811,9 +797,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                     }
                     }
                     break;
                     break;
             }
             }
-            //更新测试记录
-            //更新测试记录
-            AddOrEditTesDtltRecord(globalSchDetailId);
+          
             return isActionResult;
             return isActionResult;
         }
         }
         /// <summary>
         /// <summary>
@@ -985,7 +969,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             //更新测试记录
             //更新测试记录
             //更新测试记录
             //更新测试记录
             endTime = DateTime.Now;
             endTime = DateTime.Now;
-            AddOrEditTesDtltRecord(globalSchDetailId);
+            
             return isJudge;
             return isJudge;
         }
         }
         /// <summary>
         /// <summary>

+ 214 - 10
BlankApp1/BlankApp1/ViewModels/BusinessManageViewModel/ResultQueryViewModel.cs

@@ -4,15 +4,20 @@ using Microsoft.Extensions.Logging;
 using MiniExcelLibs;
 using MiniExcelLibs;
 using Model.Dto;
 using Model.Dto;
 using Model.Entities;
 using Model.Entities;
+using PLCTool.Pdf;
 using Prism.Commands;
 using Prism.Commands;
 using Prism.Mvvm;
 using Prism.Mvvm;
 using Prism.Services.Dialogs;
 using Prism.Services.Dialogs;
+using QuestPDF.Infrastructure;
+using QuestPDF;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
+using Newtonsoft.Json;
+using QuestPDF.Fluent;
 
 
 namespace PLCTool.ViewModels.BusinessManageViewModel
 namespace PLCTool.ViewModels.BusinessManageViewModel
 {
 {
@@ -26,12 +31,13 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         private readonly IBasicPlcTestSchemeService _basicPlcTestSchemeService;
         private readonly IBasicPlcTestSchemeService _basicPlcTestSchemeService;
         private readonly IBizTestRecordDtlService _iBizTestRecordDtlService;
         private readonly IBizTestRecordDtlService _iBizTestRecordDtlService;
         private readonly IBizTestRecordService _iBizTestRecordService;
         private readonly IBizTestRecordService _iBizTestRecordService;
+        private readonly IBasicPlcTestSchemeDtlService _iBasicPlcTestSchemeDtlService;
         private readonly IMapper _mapper;
         private readonly IMapper _mapper;
         private readonly IDialogService _dialog;
         private readonly IDialogService _dialog;
         private readonly ILogger _logger;
         private readonly ILogger _logger;
         private List<DeviceDtlWithResultModel> allDeviceList = new List<DeviceDtlWithResultModel>();//所有方案
         private List<DeviceDtlWithResultModel> allDeviceList = new List<DeviceDtlWithResultModel>();//所有方案
         private List<DeviceDtlWithResultModel> conditionDevices = new List<DeviceDtlWithResultModel>();//符合条件的方案
         private List<DeviceDtlWithResultModel> conditionDevices = new List<DeviceDtlWithResultModel>();//符合条件的方案
-        public ResultQueryViewModel(IBasicDeviceService iBasicDeviceService, IBasicDeviceKindService iBasicDeviceKindService, IBasicProjectService iBasicProjectService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBizTestRecordDtlService iBizTestRecordDtlService, IBizTestRecordService iBizTestRecordService, IMapper mapper, IDialogService dialog, ILogger logger)
+        public ResultQueryViewModel(IBasicDeviceService iBasicDeviceService, IBasicDeviceKindService iBasicDeviceKindService, IBasicProjectService iBasicProjectService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBizTestRecordDtlService iBizTestRecordDtlService, IBizTestRecordService iBizTestRecordService, IBasicPlcTestSchemeDtlService iBasicPlcTestSchemeDtlService, IMapper mapper, IDialogService dialog, ILogger logger)
         {
         {
             _iBasicDeviceService = iBasicDeviceService;
             _iBasicDeviceService = iBasicDeviceService;
             _iBasicDeviceKindService = iBasicDeviceKindService;
             _iBasicDeviceKindService = iBasicDeviceKindService;
@@ -39,6 +45,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             _basicPlcTestSchemeService = basicPlcTestSchemeService;
             _basicPlcTestSchemeService = basicPlcTestSchemeService;
             _iBizTestRecordService= iBizTestRecordService;
             _iBizTestRecordService= iBizTestRecordService;
             _iBizTestRecordDtlService= iBizTestRecordDtlService;
             _iBizTestRecordDtlService= iBizTestRecordDtlService;
+            _iBasicPlcTestSchemeDtlService = iBasicPlcTestSchemeDtlService;
             _mapper = mapper;
             _mapper = mapper;
             _dialog = dialog;
             _dialog = dialog;
             _logger = logger;
             _logger = logger;
@@ -48,17 +55,11 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             CheckDetailCommand = new DelegateCommand<object>(CheckDetail);
             CheckDetailCommand = new DelegateCommand<object>(CheckDetail);
             ResetCommand = new DelegateCommand<object>(Reset);
             ResetCommand = new DelegateCommand<object>(Reset);
             OnLoadCommand = new DelegateCommand(OnLoad);
             OnLoadCommand = new DelegateCommand(OnLoad);
-      
+            PdfReportCommand = new DelegateCommand<object>(CreatePdf);
 
 
         }
         }
 
 
 
 
-
-
-
-
-
-
         #region 私有方法
         #region 私有方法
         /// <summary>
         /// <summary>
         /// 加载页面
         /// 加载页面
@@ -223,7 +224,6 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             TotalCount = conditionDevices.Count;
             TotalCount = conditionDevices.Count;
             CurrentPageChanged();
             CurrentPageChanged();
 
 
-
         }
         }
         /// <summary>
         /// <summary>
         /// 页面变化
         /// 页面变化
@@ -238,7 +238,211 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 DeviceResultItemList.Add(i);
                 DeviceResultItemList.Add(i);
             }
             }
         }
         }
+        /// <summary>
+        /// 生成pdf
+        /// </summary>
+        /// <param name="obj"></param>
+        public void CreatePdf(object obj)
+        {
+            object[] multiObj = obj as object[];
+
+            //测试方案名称和设备id
+            string schemeName = (string)multiObj[0];
+            long deviceId = (long)multiObj[1];
+            //查找recordid
+            long recordId=(long)_iBizTestRecordService.FindRecorddByDeviceIdAndSchname((int)deviceId, schemeName)?.record_id;
+            //查找详细记录
+            var recordDtls = _iBizTestRecordDtlService.FindRecordDetailByRecordID(recordId);
+            string deviceName = _iBasicDeviceService.Find((int)deviceId).device_name;
+            try
+            {
+                Settings.License = LicenseType.Community;
+                var model = GetReportPLCInfo(schemeName,deviceName, recordDtls);
+                var document = new InvoiceDocument(model);
+                //pdf名称为轴编号+时间
+
+                //输出文件
+                using (System.Windows.Forms.SaveFileDialog saveFileDialog = new System.Windows.Forms.SaveFileDialog()
+                {
+                    //设置文件类型
+                    //书写规则例如:txt files(*.txt)|*.txt
+                    Filter = "pdf文件|*.pdf",
+                    //设置默认文件名(可以不设置)
+                    FileName = "报表" + string.Format("{0:yyyyMMddHHmm}", DateTime.Now),
+
+                    //获取或设置一个值,该值指示如果用户省略扩展名,文件对话框是否自动在文件名中添加扩展名。(可以不设置)
+                    AddExtension = true,
+
+                    //保存对话框是否记忆上次打开的目录
+                    RestoreDirectory = true
+                })
+                {
+
+
+                    //点了保存按钮进入
+                    if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+                    {
+                        //获得文件路径
+                        string localFilePath = saveFileDialog.FileName.ToString();
+                        document.GeneratePdf(localFilePath);
+
+                    }
+
+                }
+
+
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex.ToString());
+            }
+
+
+
+
+
+        }
+
+        /// <summary>
+        /// pdf报告相关信息
+        /// </summary>
+        /// <param name="schDtlId"></param>
+        /// <returns></returns>
+        private InvoiceModel GetReportPLCInfo(string schName,string deviceName,List<biz_test_record_dtl> recordDtls)
+        {
+            //测试方案明细主键ID
+
+            InvoiceModel invoiceModel = new InvoiceModel();
+
+            invoiceModel.ReportPLCModels = new List<ReportPLCModel>();
+            invoiceModel.SchemeName = schName;
+            invoiceModel.DeviceName = deviceName;
+
+            foreach (var each in recordDtls)
+            {
+                long recordId = each.record_id.Value;
+                long schDtlid = each.scheme_dtl_id;
+                
+                string schItemName = _iBasicPlcTestSchemeDtlService.Find((int)schDtlid)?.item_name;
+                string schItemType = string.Empty;
+                int typeNo=(int) _iBasicPlcTestSchemeDtlService.Find((int)schDtlid)?.item_type;
+                switch (typeNo)
+                {
+                    case 0:
+                        schItemType = "前置项";
+                        break;
+                    case 1:
+                        schItemType = "PLC点位测试项";
+                        break;
+                    case 2:
+                        schItemType = "Robot动作测试";
+                        break;
+                }
+                //根据测试结果明细
+                if (each != null)
+                {       //前置项结果解析
+                    string preconStr = each.precondition_final?.ToString();
+                    if (!string.IsNullOrEmpty(preconStr))
+                    {
+                        JsonModel preconditionModel = JsonConvert.DeserializeObject<JsonModel>(preconStr);
+
+                        foreach (var detail in preconditionModel.DetailInfo)
+                        {
+
+                            invoiceModel.ReportPLCModels.Add(new ReportPLCModel()
+                            {
+                                ItemName =schItemName,
+                                ItemType = schItemType,
+                                Type = "前置项",
+                                JudgeType = preconditionModel.ItemType,
+                                SelectLogic = preconditionModel.ItemLogical,
+                                Detail = preconditionModel.Description,
+                                Id = detail.Id,
+                                PlcAddress = detail.PlcAddress,
+                                PlcItem = detail.PlcItem,
+                                PlcValue = detail.PlcValue,
+                                Remark = detail.Remark,
+                                TestTime = detail.TestTime,
+                                RealValue = detail.RealValue,
+                                TestResult = detail.TestResult,
+
+                            });
+                        }
+                    }
+
+                    //输入项解析
+                    string inStr = each.action_final?.ToString();
+                    if (!string.IsNullOrEmpty(inStr))
+                    {
+                        JsonModel inModel = JsonConvert.DeserializeObject<JsonModel>(inStr);
+
+                        foreach (var detail in inModel.DetailInfo)
+                        {
+                            invoiceModel.ReportPLCModels.Add(new ReportPLCModel()
+                            {
+                                ItemName = schItemName,
+                                ItemType = schItemType,
+                                Type = "输入项",
+                                JudgeType = inModel.ItemType,
+                                SelectLogic = inModel.ItemLogical,
+                                Detail = inModel.Description,
+                                Id = detail.Id,
+                                PlcAddress = detail.PlcAddress,
+                                PlcItem = detail.PlcItem,
+                                PlcValue = detail.PlcValue,
+                                Remark = detail.Remark,
+                                TestTime = detail.TestTime,
+                                RealValue = detail.RealValue,
+                                TestResult = detail.TestResult,
+
+                            });
+                        }
+                    }
 
 
+                    //输出项解析
+                    string outStr = each.judgement_result_final?.ToString();
+                    if (!string.IsNullOrEmpty(outStr))
+                    {
+                        JsonModel outModel = JsonConvert.DeserializeObject<JsonModel>(outStr);
+
+                        foreach (var detail in outModel.DetailInfo)
+                        {
+                            invoiceModel.ReportPLCModels.Add(new ReportPLCModel()
+                            {
+                                ItemName = schItemName,
+                                ItemType = schItemType,
+                                Type = "结果项",
+                                JudgeType = outModel.ItemType,
+                                SelectLogic = outModel.ItemLogical,
+                                Detail = outModel.Description,
+                                Id = detail.Id,
+                                PlcAddress = detail.PlcAddress,
+                                PlcItem = detail.PlcItem,
+                                PlcValue = detail.PlcValue,
+                                Remark = detail.Remark,
+                                TestTime = detail.TestTime,
+                                RealValue = detail.RealValue,
+                                TestResult = detail.TestResult,
+
+                            });
+                        }
+                    }
+                }
+            }
+            //判断方案结果是否通过
+            //var testCount = allDeviceList.FindAll(X => X.SchemeName == findSch.scheme_name && X.TestResult == "通过")?.Count;
+            //if (testCount == allResult.Count)
+            //{
+            //    invoiceModel.FinalReuslt = "通过";
+            //}
+            //else
+            //{
+            //    invoiceModel.FinalReuslt = "不通过";
+            //}
+
+           
+            return invoiceModel;
+        }
         #endregion
         #endregion
         #region 命令绑定
         #region 命令绑定
 
 
@@ -251,7 +455,7 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
 
 
         public DelegateCommand OnLoadCommand { set; get; }
         public DelegateCommand OnLoadCommand { set; get; }
         public DelegateCommand<object> CheckDetailCommand { set; get; }
         public DelegateCommand<object> CheckDetailCommand { set; get; }
-
+        public DelegateCommand<object> PdfReportCommand { set; get; }
         #endregion
         #endregion
 
 
         #region 数据绑定
         #region 数据绑定

+ 1 - 1
BlankApp1/BlankApp1/Views/BusinessManageView/ResultQueryView.xaml

@@ -101,7 +101,7 @@
 Command="{Binding DataContext.PdfReportCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" Cursor="Hand" >
 Command="{Binding DataContext.PdfReportCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" Cursor="Hand" >
                                     <Button.CommandParameter>
                                     <Button.CommandParameter>
                                         <MultiBinding Converter="{ StaticResource ResourceKey=TwoParConverter}">
                                         <MultiBinding Converter="{ StaticResource ResourceKey=TwoParConverter}">
-                                            <Binding Path="SchemeId"  ></Binding>
+                                            <Binding Path="SchemeName"  ></Binding>
                                             <Binding Path="DeviceId"></Binding>
                                             <Binding Path="DeviceId"></Binding>
                                         </MultiBinding>
                                         </MultiBinding>
                                     </Button.CommandParameter>
                                     </Button.CommandParameter>