Jelajahi Sumber

修改手动测试

user_lt 1 tahun lalu
induk
melakukan
50ecd8c74d

+ 5 - 0
BlankApp1/BizService/BizTestRecordDtlService.cs

@@ -13,5 +13,10 @@ namespace BizService
         {
             return base.GetFirst(x => x.scheme_dtl_id == schDtlID);
         }
+
+        public Task<bool> SavePredicitionFinal(biz_test_record_dtl testRecord)
+        {
+            return base.UpdateAsync(testRecord);
+        }
     }
 }

+ 3 - 0
BlankApp1/BizService/IBizTestRecordDtlService.cs

@@ -14,5 +14,8 @@ namespace BizService
      /// <param name="schemeId"></param>
      /// <returns></returns>
         public biz_test_record_dtl FindRecordDetailBySchDtlID(long schDtlID);
+
+
+        public Task<bool> SavePredicitionFinal(biz_test_record_dtl testRecord);
     }
 }

+ 1 - 0
BlankApp1/BlankApp1/App.xaml.cs

@@ -67,6 +67,7 @@ namespace BlankApp1
             containerRegistry.RegisterDialog<AutoTestView, AutoTestViewModel>();
             containerRegistry.RegisterDialog<ManualTestView, ManualTestViewModel>();
             containerRegistry.RegisterDialog<TestResultDetailView, TestResultDetailViewModel>();
+            containerRegistry.RegisterDialog<WritePLCView, WritePLCViewModel>();
         }
 
         private IMapper GetMapper(IContainerProvider container)

+ 5 - 1
BlankApp1/BlankApp1/Common/AutoMapper/AutoMapProfile.cs

@@ -22,7 +22,7 @@ namespace BlankApp1.Common.AutoMapper
                 .ForMember(dest => dest.PlcCode, opt => opt.MapFrom(src => src.plc_code))
                 .ForMember(dest => dest.PlcItem, opt => opt.MapFrom(src => src.plc_item))
                 .ForMember(dest => dest.PlcAddress, opt => opt.MapFrom(src => src.plc_address))
-                .ForMember(dest => dest.plcAddType, opt => opt.MapFrom(src => src.plc_addType))
+                .ForMember(dest => dest.PlcAddType, opt => opt.MapFrom(src => src.plc_addType))
                 .ForMember(dest => dest.PlcValue, opt => opt.MapFrom(src => src.plc_value))
                 .ForMember(dest => dest.Remark, opt => opt.MapFrom(src => src.remark)).ReverseMap(); 
 
@@ -74,6 +74,10 @@ namespace BlankApp1.Common.AutoMapper
                    .ForMember(dest => dest.SchemeDtlId, opt => opt.MapFrom(src => src.scheme_dtl_id))
                      .ForMember(dest => dest.StartTestTime, opt => opt.MapFrom(src => src.start_test_time))
                       .ForMember(dest => dest.FinishTestTime, opt => opt.MapFrom(src => src.finish_test_time))
+                       .ForMember(dest => dest.PreconditionFinal, opt => opt.MapFrom(src => src.precondition_final))
+                        .ForMember(dest => dest.ActionFinal, opt => opt.MapFrom(src => src.action_final))
+                         .ForMember(dest => dest.JudgementResultFinal, opt => opt.MapFrom(src => src.judgement_result_final))
+
                       .ForMember(dest => dest.TestMode, opt => opt.MapFrom(src => src.test_mode))
                        .ForMember(dest => dest.TestResult, opt => opt.MapFrom(src => src.test_result))
                        .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.status))

+ 22 - 1
BlankApp1/BlankApp1/ViewModels/BasicConfigViewModel/AddDetailViewModel.cs

@@ -31,6 +31,10 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
             SureCommand = new DelegateCommand<string>(Sure);
             CancelCommand = new DelegateCommand(Close);
             TxtLostFocusCommand = new DelegateCommand(LostFocus);
+            PLCTypes.Add("bool");
+            PLCTypes.Add("word");
+            PLCTypes.Add("dword");
+            PLCTypes.Add("real");
             GetPLCConfig();
 
 
@@ -80,6 +84,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                     {
                         PLCItem = item.PlcItem;
                         PLCAddress = item.PlcAddress;
+                        SelectPLCType = item.PlcAddType;
                         PLCValue = item.PlcValue;
                         PLCDescribe = item.Remark;
 
@@ -109,7 +114,8 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                 Id = id,
                 PlcItem =PLCItem,
                 PlcAddress=PLCAddress,
-                PlcValue=PLCValue,
+                PlcAddType =SelectPLCType ,
+                PlcValue =PLCValue,
                 Remark=PLCDescribe
                 
             };
@@ -172,6 +178,21 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
             get { return plcItem; }
             set { plcItem = value; RaisePropertyChanged(); }
         }
+        private string selectPLCType;
+        public string SelectPLCType
+        {
+            get { return selectPLCType; }
+            set { selectPLCType = value; RaisePropertyChanged(); }
+        }
+        /// <summary>
+        /// 逻辑判断
+        /// </summary>
+        private List<string> plcTypes = new List<string>();
+        public List<string> PLCTypes
+        {
+            get { return plcTypes; }
+            set { plcTypes = value; RaisePropertyChanged(); }
+        }
         private string plcValue;
         public string PLCValue
         {

+ 6 - 0
BlankApp1/BlankApp1/ViewModels/BasicConfigViewModel/AddOrEditSchViewModel.cs

@@ -16,6 +16,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
 
 namespace PLCTool.ViewModels.BasicConfigViewModel
 {
@@ -110,6 +111,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                                basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 beforeConList.Add(basPlcItemConfigDto);
@@ -130,6 +132,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                                basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 InConList.Add(basPlcItemConfigDto);
@@ -150,6 +153,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                                basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 OutConList.Add(basPlcItemConfigDto);
@@ -185,6 +189,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                         {
                             after.PlcItem = returnValue.PlcItem;
                             after.PlcAddress = returnValue.PlcAddress;
+                            after.PlcAddType = returnValue.PlcAddType;
                             after.PlcValue = returnValue.PlcValue;
                             after.Remark = returnValue.Remark;
 
@@ -507,6 +512,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                 DetailPLC plcItem = new DetailPLC();
                 plcItem.PlcItem = item.PlcItem;
                 plcItem.PlcAddress = item.PlcAddress;
+                plcItem.PlcAddType = item.PlcAddType;
                 plcItem.PlcValue = item.PlcValue;
                 plcItem.Remark = item.Remark;
                 prefixJsonModel.DetailInfo.Add(plcItem);

+ 398 - 120
BlankApp1/BlankApp1/ViewModels/BusinessManageViewModel/ManualTestViewModel.cs

@@ -3,6 +3,7 @@ using BizService;
 using Microsoft.Extensions.Logging;
 using Model.Dto;
 using Model.Entities;
+using NetTaste;
 using Newtonsoft.Json;
 using OmronFinsTCP.Net;
 using PLCTool.Common;
@@ -41,8 +42,9 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         private DateTime endTime=DateTime.Now;
         private int testStatus = 0;  //测试状态 
         private int testResult = 0; //测试结果
-        private long schDetailId = 0; //测试方案明细ID
-
+        private long schId = 0; //方案ID
+        private long globalSchDetailId = 0; //测试方案明细ID
+        private BizTestRecordDtlDto bizTestRecordDtlDto = new BizTestRecordDtlDto(); //测试方案明细表
         private const string TestMode = "手动测试";
     
         public ManualTestViewModel(IDialogService dialog, IEventAggregator aggregator, IOptionConfigService optionConfigService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBasicPlcTestSchemeDtlService basicPlcTestSchemeDtlService, IBizTestRecordService iBizTestRecordService, IBizTestRecordDtlService iBizTestRecordDtlService,IMapper mapper,ILogger logger)
@@ -95,112 +97,122 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             {
                 foreach (var item in getMsg)
                 {
-                    schDetailId = item; //测试方案明细ID
+                    globalSchDetailId = item; //测试方案明细ID
                     int id = Convert.ToInt32(item);
-                    //根据 测试方案明细主键ID 查找测试方案id 及方案名和设备名
-                    var findEntity = _basicPlcTestSchemeDtlService.Find(id);
-                    var findresult = _mapper.Map<bas_plc_test_scheme_dtl, BasicPlcTestSchemeDtlDto>(findEntity);
-                    if (findresult != null)
+                    // 根据 测试方案明细主键ID 查找测试方案id 及方案名和设备名
+                    GetDetailInfo(id);
+
+                }
+
+            }
+        }
+
+        /// <summary>
+        /// //根据 测试方案明细主键ID 查找测试方案id 及方案名和设备名
+        /// </summary>
+        /// <param name="id"></param>
+        private void GetDetailInfo(int schDetailId)
+        {
+            //根据 测试方案明细主键ID 查找测试方案id 及方案名和设备名
+            var findEntity = _basicPlcTestSchemeDtlService.Find(schDetailId);
+            var findresult = _mapper.Map<bas_plc_test_scheme_dtl, BasicPlcTestSchemeDtlDto>(findEntity);
+            if (findresult != null)
+            {
+                //根据方案id 在方案表中查找方案名 设备名
+                schId = findresult.SchemeId.Value; //方案id,方便下一步查找
+                int intSchId = Convert.ToInt32(findresult.SchemeId); 
+               
+                var findSch = _basicPlcTestSchemeService.Find(intSchId);
+                if (findSch != null)
+                {
+                    ScheduleName = findSch.scheme_name;
+                    DeviceName = findSch.device_name;
+
+                }
+                TestName = findresult.ItemName;
+                SelectTest = findresult.ItemType;
+                //前置项解析
+                string preconStr = findresult.Precondition.ToString();
+                if (!string.IsNullOrEmpty(preconStr))
+                {
+                    JsonModel preconditionModel = JsonConvert.DeserializeObject<JsonModel>(preconStr);
+                    BeforeSelectJudge = preconditionModel.ItemType;
+                    SelectLogic = preconditionModel.ItemLogical;
+                    BeforeDetail = preconditionModel.Description;
+                    BeforeConList.Clear();
+                    foreach (var detail in preconditionModel.DetailInfo)
                     {
-                        //根据方案id 在方案表中查找方案名 设备名
-                        int schID = Convert.ToInt32(findresult.SchemeId);
-                        var findSch = _basicPlcTestSchemeService.Find(schID);
-                        if (findSch != null)
-                        {
-                            ScheduleName = findSch.scheme_name;
-                            DeviceName = findSch.device_name;
-
-                        }
-                        TestName = findresult.ItemName;
-                        SelectTest = findresult.ItemType;
-                        //前置项解析
-                        string preconStr = findresult.Precondition.ToString();
-                        if (!string.IsNullOrEmpty(preconStr))
-                        {
-                            JsonModel preconditionModel = JsonConvert.DeserializeObject<JsonModel>(preconStr);
-                            BeforeSelectJudge = preconditionModel.ItemType;
-                            SelectLogic = preconditionModel.ItemLogical;
-                            BeforeDetail = preconditionModel.Description;
-                            BeforeConList.Clear();
-                            foreach (var detail in preconditionModel.DetailInfo)
-                            {
-                                BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
-                                basPlcItemConfigDto.PlcItem = detail.PlcItem;
-                                basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
-                                basPlcItemConfigDto.PlcValue = detail.PlcValue;
-                                basPlcItemConfigDto.Remark = detail.Remark;
-                                beforeConList.Add(basPlcItemConfigDto);
-                            }
-                        }
-
-                        //输入项解析
-                        string inStr = findresult.Action.ToString();
-                        if (!string.IsNullOrEmpty(inStr))
-                        {
-                            JsonModel inModel = JsonConvert.DeserializeObject<JsonModel>(inStr);
-                            SelectInJudge = inModel.ItemType;
-                            InSelectLogic = inModel.ItemLogical;
-                            InDetail = inModel.Description;
-                            InConList.Clear();
-                            foreach (var detail in inModel.DetailInfo)
-                            {
-                                BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
-                                basPlcItemConfigDto.PlcItem = detail.PlcItem;
-                                basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
-                                basPlcItemConfigDto.PlcValue = detail.PlcValue;
-                                basPlcItemConfigDto.Remark = detail.Remark;
-                                InConList.Add(basPlcItemConfigDto);
-                            }
-                        }
-
-                        //输出项解析
-                        string outStr = findresult.JudgementResult.ToString();
-                        if (!string.IsNullOrEmpty(outStr))
-                        {
-                            JsonModel outModel = JsonConvert.DeserializeObject<JsonModel>(outStr);
-                            SelectOutJudge = outModel.ItemType;
-                            OutSelectLogic = outModel.ItemLogical;
-                            OutDetail = outModel.Description;
-                            OutConList.Clear();
-                            foreach (var detail in outModel.DetailInfo)
-                            {
-                                BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
-                                basPlcItemConfigDto.PlcItem = detail.PlcItem;
-                                basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
-                                basPlcItemConfigDto.PlcValue = detail.PlcValue;
-                                basPlcItemConfigDto.Remark = detail.Remark;
-                                OutConList.Add(basPlcItemConfigDto);
-                            }
-                        }
+                        BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
+                        basPlcItemConfigDto.PlcItem = detail.PlcItem;
+                        basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                        basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
+                        basPlcItemConfigDto.PlcValue = detail.PlcValue;
+                        basPlcItemConfigDto.Remark = detail.Remark;
+                        BeforeConList.Add(basPlcItemConfigDto);
+                    }
+                }
 
+                //输入项解析
+                string inStr = findresult.Action.ToString();
+                if (!string.IsNullOrEmpty(inStr))
+                {
+                    JsonModel inModel = JsonConvert.DeserializeObject<JsonModel>(inStr);
+                    SelectInJudge = inModel.ItemType;
+                    InSelectLogic = inModel.ItemLogical;
+                    InDetail = inModel.Description;
+                    InConList.Clear();
+                    foreach (var detail in inModel.DetailInfo)
+                    {
+                        BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
+                        basPlcItemConfigDto.PlcItem = detail.PlcItem;
+                        basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                        basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
+                        basPlcItemConfigDto.PlcValue = detail.PlcValue;
+                        basPlcItemConfigDto.Remark = detail.Remark;
+                        InConList.Add(basPlcItemConfigDto);
                     }
+                }
 
+                //输出项解析
+                string outStr = findresult.JudgementResult.ToString();
+                if (!string.IsNullOrEmpty(outStr))
+                {
+                    JsonModel outModel = JsonConvert.DeserializeObject<JsonModel>(outStr);
+                    SelectOutJudge = outModel.ItemType;
+                    OutSelectLogic = outModel.ItemLogical;
+                    OutDetail = outModel.Description;
+                    OutConList.Clear();
+                    foreach (var detail in outModel.DetailInfo)
+                    {
+                        BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
+                        basPlcItemConfigDto.PlcItem = detail.PlcItem;
+                        basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                        basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
+                        basPlcItemConfigDto.PlcValue = detail.PlcValue;
+                        basPlcItemConfigDto.Remark = detail.Remark;
+                        OutConList.Add(basPlcItemConfigDto);
+                    }
                 }
 
             }
         }
-
         #endregion
 
         #region 私有发方法
-        
-     
-
         /// <summary>
-        /// 完成时间
+        /// 增加或更新测试记录
         /// </summary>
-        /// <param name="obj"></param>
-        private void Done(object obj)
+        private void AddTestRecord()
         {
-            endTime = DateTime.Now;
+        
             //记录记录主表中是否有这个方案的记录,没有则添加
             var findRecord = _iBizTestRecordService.FindRecorddBySchname(ScheduleName);
-            if(findRecord == null)
+            if (findRecord == null)
             {
                 //状态status 没有赋值
                 BizTestRecordDto bizTestRecordDto = new BizTestRecordDto();
                 bizTestRecordDto.RecordName = ScheduleName + "_Record";
-                bizTestRecordDto.SchemeName=ScheduleName;
+                bizTestRecordDto.SchemeName = ScheduleName;
                 bizTestRecordDto.Tester = Appsession.UserName;
                 bizTestRecordDto.StartTestTime = startTime;
                 bizTestRecordDto.FinishTestTime = endTime;
@@ -211,10 +223,17 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 var testRecord = _mapper.Map<BizTestRecordDto, biz_test_record>(bizTestRecordDto);
                 _iBizTestRecordService.Add(testRecord);
             }
+           
+        }
+        /// <summary>
+        /// 增加测试记录明细
+        /// </summary>
+        private void AddTesDtltRecord(long schDetailId)
+        {
             //查找record ID
-            long recordId = 0; 
+            long recordId = 0;
             var findRecordID = _iBizTestRecordService.FindRecorddBySchname(ScheduleName);
-            if(findRecordID != null)
+            if (findRecordID != null)
             {
                 recordId = findRecordID.record_id;
             }
@@ -224,15 +243,14 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             if (findRecordDetail == null)
             {
                 //状态status 没有赋值
-                BizTestRecordDtlDto bizTestRecordDtlDto = new BizTestRecordDtlDto();
-                bizTestRecordDtlDto.RecordId= recordId;
+
+                bizTestRecordDtlDto.RecordId = recordId;
                 bizTestRecordDtlDto.SchemeDtlId = schDetailId;
-                
                 bizTestRecordDtlDto.StartTestTime = startTime;
                 bizTestRecordDtlDto.FinishTestTime = endTime;
                 bizTestRecordDtlDto.TestMode = TestMode;
                 bizTestRecordDtlDto.Status = testStatus;
-                bizTestRecordDtlDto.TestResult= testResult;
+                bizTestRecordDtlDto.TestResult = testResult;
                 bizTestRecordDtlDto.CreateBy = Appsession.UserName;
                 bizTestRecordDtlDto.CreateTime = DateTime.Now;
                 bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
@@ -240,22 +258,55 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(bizTestRecordDtlDto);
                 _iBizTestRecordDtlService.Add(testRecordDtl);
             }
-            else
-            {
-                //如果有,则更新测试状态和测试结果
-                findRecordDetail.start_test_time = startTime;
-                findRecordDetail.finish_test_time = endTime;
-                findRecordDetail.update_by = Appsession.UserName;
-                findRecordDetail.update_time = DateTime.Now;
-                findRecordDetail.status = testStatus;
-                findRecordDetail.test_result = 99;
-                _iBizTestRecordDtlService.Edit(findRecordDetail);
-            }
+           
+        }
+
+
+        private void UpdateTesDtltRecord()
+        {
+
+            var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(bizTestRecordDtlDto);
+            _iBizTestRecordDtlService.Edit(testRecordDtl);
+        }
+        /// <summary>
+        /// 完成时间
+        /// </summary>
+        /// <param name="obj"></param>
+        private void Done(object obj)
+        {
+            endTime = DateTime.Now;
         }
 
         private void Next(object obj)
         {
+            ///查找方案下的所有方案明细,并排序,
+            var basicSchDtls = _basicPlcTestSchemeDtlService.FindAllBySchId(schId)?.OrderBy(x=>x.scheme_dtl_id);
+            foreach(var item in basicSchDtls)
+            {
+                //在测试结果明细中查看
+                long schDetailId = item.scheme_dtl_id;
+                if(schDetailId>globalSchDetailId)
+                {
+                    globalSchDetailId = schDetailId;
+                    int id = Convert.ToInt32(schDetailId);
+                    //界面显示
+                    GetDetailInfo(id);
+                    //记录记录明细表中是否有这个方案明细ID的记录,没有则添加,有则更新记录状态
+                    var findRecordDetail = _iBizTestRecordDtlService.FindRecordDetailBySchDtlID(schDetailId);
+                    if (findRecordDetail == null)
+                    {
 
+                        //增加测试记录明细
+                        AddTesDtltRecord(globalSchDetailId);
+                       
+                    }
+                    break;
+
+
+                }
+          
+
+            }
         }
 
         private void Previous(object obj)
@@ -270,58 +321,282 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         {
             //开始时间
             startTime = DateTime.Now;
-            
-            
+            //增加测试记录主表
+            AddTestRecord();
+            //增加测试记录明细表
+            AddTesDtltRecord(globalSchDetailId);
             //前置项
-            switch(BeforeSelectJudge)
+            TestPreceditionMethod();
+            MessageBox.Show("前置项测试完成!", "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
+            //输入项
+            TestActionMethod();
+            MessageBox.Show("输入项测试完成!", "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
+            //输出项
+            TestJudgementMethod();
+            MessageBox.Show("输出项测试完成!", "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
+        }
+
+        private   void  TestPreceditionMethod()
+        {
+            switch (BeforeSelectJudge)
             {
                 case "人工判定":
                     //弹出确认的对话框
-                    MessageBox.Show(BeforeDetail, "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
-                    StepIndex = 1;
+                    MessageBoxResult boxResult = MessageBox.Show(BeforeDetail, "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
+                    if (boxResult == MessageBoxResult.OK)
+                    {
+                        bizTestRecordDtlDto.PreconditionResult = "合格";
+                        StepIndex = 1;
+                    }
+
                     break;
                 case "自动判定":
                     //读取plc的值
-                    switch(SelectLogic)
+                    switch (SelectLogic)
                     {
                         case "NULL":
                             break;
                         case "AND":
+                        case "ONLY":
                             int countCond = 0;
-                            foreach(var item in BeforeConList)
+                            foreach (var item in BeforeConList)
                             {
                                 string plcAddress = item.PlcAddress;
-                                string plcAddType = item.plcAddType;
+                                string plcAddType = item.PlcAddType;
                                 string plcValue = item.PlcValue;
-                                switch(plcAddType) 
+
+                                switch (plcAddType)
                                 {
                                     case "bool":
-                                        string readResult=PLCCom.GetInstance().ReadPlcObject(plcAddress, VarType.Bit);
-                                        if(readResult== plcValue)
+                                        // string readResult = PLCCom.GetInstance().ReadPlcObject(plcAddress, VarType.Bit);
+                                        ///实时值记录
+                                        string readResult = "1";
+                                        item.RealValue = readResult;
+                                        item.TestTime = DateTime.Now;
+                                        if (readResult.Trim() == plcValue.Trim())
                                         {
+                                            item.TestResult = "合格";
                                             countCond++;
                                         }
+                                        else
+                                        {
+                                            item.TestResult = "不合格";
+                                        }
+
                                         break;
                                     case "word":
                                         break;
+
                                 }
+
                             }
-                            if(countCond > 0)
+                            //测试记录存入数据库
+                            //前置项测试结果json转化
+                            string prefixJsonStr = ModelToJsonToStr(BeforeSelectJudge, SelectLogic, BeforeDetail, BeforeConList);
+                            //json字符串
+                            bizTestRecordDtlDto.PreconditionFinal = prefixJsonStr;
+                            //条件满足
+                            if (countCond == BeforeConList.Count)
                             {
-
+                                bizTestRecordDtlDto.PreconditionResult = "合格";
+                                StepIndex = 1;
                             }
+                            else
+                            {
+                                bizTestRecordDtlDto.PreconditionResult = "不合格";
+                            }
+                          
                             break;
                         case "OR":
                             break;
+
+                        case "ORDER":
+                            break;
+                    }
+                    break;
+            }
+            //更新测试记录
+            UpdateTesDtltRecord();
+        }
+        private  void TestActionMethod()
+        {
+            switch (SelectInJudge)
+            {
+                case "人工判定":
+                    //弹出确认的对话框
+                    MessageBoxResult boxResult = MessageBox.Show(InDetail, "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
+                    if (boxResult == MessageBoxResult.OK)
+                    {
+                        bizTestRecordDtlDto.ActionResult = "合格";
+                        StepIndex = 2;
+                    }
+
+                    break;
+                case "自动判定":
+                    //读取plc的值
+                    switch (InSelectLogic)
+                    {
+                        case "NULL":
+                            break;
+                        case "AND":
                         case "ONLY":
+                            int countCond = 0;
+                            foreach (var item in InConList)
+                            {
+                                string plcAddress = item.PlcAddress;
+                                string plcAddType = item.PlcAddType;
+                                string plcValue = item.PlcValue;
+
+                                switch (plcAddType)
+                                {
+                                    case "bool":
+                                      
+                                        DialogParameters parm = new DialogParameters();
+                                        parm.Add("Key", plcAddress);
+                                        parm.Add("Key2", plcValue);
+                                        //弹出写入对话框
+                                        _dialog.ShowDialog("WritePLCView", parm, async callback =>
+                                        {
+                                            if (callback.Result == ButtonResult.OK)
+                                            {
+                                                // bool writeResult = PLCCom.GetInstance().WritePlcObject(plcAddress, VarType.Bit, plcValue);
+                                                ///实时值记录
+                                                bool writeResult = true;
+                                                item.TestTime = DateTime.Now;
+                                                if (writeResult)
+                                                {
+                                                    ///单个测试项合格
+                                                    item.TestResult = "合格";
+                                                }
+                                                else
+                                                {
+                                                    item.TestResult = "不合格";
+                                                }
+                                            }
+
+                                        });
+                                    
+                                        
+                                      
+
+                                        break;
+                                    case "word":
+                                        break;
+
+                                }
+
+                            }
+                            //测试记录存入数据库
+                            //前置项测试结果json转化
+                            string actionJsonStr = ModelToJsonToStr(SelectInJudge, InSelectLogic, InDetail, InConList);
+                            //json字符串
+                            bizTestRecordDtlDto.ActionFinal = actionJsonStr;
+                            //条件满足
+                            if ((countCond == InConList.Count)&&(countCond!=0))
+                            {
+                                bizTestRecordDtlDto.ActionResult = "合格";
+                                StepIndex = 2;
+                            }
+                            else
+                            {
+                                bizTestRecordDtlDto.ActionResult = "不合格";
+                            }
+
+                            break;
+                        case "OR":
                             break;
+
                         case "ORDER":
                             break;
                     }
                     break;
             }
+            //更新测试记录
+            UpdateTesDtltRecord();
         }
+        private void TestJudgementMethod()
+        {
+            switch (SelectOutJudge)
+            {
+                case "人工判定":
+                    //弹出确认的对话框
+                    MessageBoxResult boxResult = MessageBox.Show(OutDetail, "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
+                    if (boxResult == MessageBoxResult.OK)
+                    {
+                        bizTestRecordDtlDto.JudgementResult = "合格";
+                        StepIndex = 3;
+                    }
 
+                    break;
+                case "自动判定":
+                    //读取plc的值
+                    switch (OutSelectLogic)
+                    {
+                        case "NULL":
+                            break;
+                        case "AND":
+                        case "ONLY":
+                            int countCond = 0;
+                            foreach (var item in OutConList)
+                            {
+                                string plcAddress = item.PlcAddress;
+                                string plcAddType = item.PlcAddType;
+                                string plcValue = item.PlcValue;
+
+                                switch (plcAddType)
+                                {
+                                 
+                                    case "bool":
+                                        //string readResult = PLCCom.GetInstance().ReadPlcObject(plcAddress, VarType.Bit);
+                                        string readResult = "1";
+                                        ///实时值记录
+                                        item.RealValue = readResult;
+                                        item.TestTime = DateTime.Now;
+                                        if (readResult.Trim() == plcValue.Trim())
+                                        {
+                                            item.TestResult = "合格";
+                                            countCond++;
+                                        }
+                                        else
+                                        {
+                                            item.TestResult = "不合格";
+                                        }
+
+                                        break;
+                                    case "word":
+                                        break;
+
+                                }
+
+                            }
+                            //测试记录存入数据库
+                            //前置项测试结果json转化
+                            string prefixJsonStr = ModelToJsonToStr(BeforeSelectJudge, SelectLogic, BeforeDetail, BeforeConList);
+                            //json字符串
+                            bizTestRecordDtlDto.JudgementResultFinal = prefixJsonStr;
+                            //条件满足
+                            if ((countCond == OutConList.Count)&&(countCond!=0))
+                            {
+                                bizTestRecordDtlDto.JudgementResult = "合格";
+                                StepIndex = 3;
+                            }
+                            else
+                            {
+                                bizTestRecordDtlDto.JudgementResult = "不合格";
+                            }
+
+                            break;
+                        case "OR":
+                            break;
+
+                        case "ORDER":
+                            break;
+                    }
+                    break;
+            }
+            //更新测试记录
+            UpdateTesDtltRecord();
+        }
         /// <summary>
         /// 获取配置
         /// </summary>
@@ -372,8 +647,8 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
 
 
 
-     
-     
+
+
         /// <summary>
         /// mode转json
         /// </summary>
@@ -395,7 +670,11 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 DetailPLC plcItem = new DetailPLC();
                 plcItem.PlcItem = item.PlcItem;
                 plcItem.PlcAddress = item.PlcAddress;
+                plcItem.PlcAddType = item.PlcAddType;
                 plcItem.PlcValue = item.PlcValue;
+                plcItem.RealValue = item.RealValue;
+                plcItem.TestTime = item.TestTime;
+                plcItem.TestResult = item.TestResult;
                 plcItem.Remark = item.Remark;
                 prefixJsonModel.DetailInfo.Add(plcItem);
 
@@ -404,7 +683,6 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             return prefixJsonStr;
         }
 
-
         #endregion
 
 

+ 95 - 0
BlankApp1/BlankApp1/ViewModels/BusinessManageViewModel/WritePLCViewModel.cs

@@ -0,0 +1,95 @@
+using Prism.Commands;
+using Prism.Mvvm;
+using Prism.Services.Dialogs;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PLCTool.ViewModels.BusinessManageViewModel
+{
+    public class WritePLCViewModel : BindableBase, IDialogAware
+    {
+        public WritePLCViewModel()
+        {
+            SureCommand = new DelegateCommand<object>(Sure);
+            CloseCommand = new DelegateCommand<object>(CloseMethod);
+        }
+
+        private void CloseMethod(object obj)
+        {
+            RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
+        }
+
+        private void Sure(object obj)
+        {
+            RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
+        }
+
+        public string Title { set; get; } = "PLC写入";
+
+        public event Action<IDialogResult> RequestClose;
+
+        public bool CanCloseDialog()
+        {
+            return true;
+        }
+
+        public void OnDialogClosed()
+        {
+     
+        }
+
+        public void OnDialogOpened(IDialogParameters parameters)
+        {
+           
+            var getPlcAddr = parameters.GetValues<string>("Key");
+            ///值不为空,表示修改
+            if (getPlcAddr != null)
+            {
+                foreach (var item in getPlcAddr)
+                {
+                    PLCAddr=item;
+                }
+            }
+            var getPlcValue = parameters.GetValues<string>("Key2");
+            ///值不为空,表示修改
+            if (getPlcValue != null)
+            {
+                foreach (var item in getPlcValue)
+                {
+                    PLCValue = item;
+                }
+            }
+        }
+
+        #region MyRegion
+        /// <summary>
+        /// plc 地址
+        /// </summary>
+        private string plcAddr;
+        public string PLCAddr
+        {
+            get { return plcAddr; }
+            set { plcAddr = value; RaisePropertyChanged(); }
+        }
+        /// <summary>
+        /// plc 数据
+        /// </summary>
+        private string plcValue;
+        public string PLCValue
+        {
+            get { return plcValue; }
+            set { plcValue = value; RaisePropertyChanged(); }
+        }
+
+
+        #endregion
+
+        #region 命令绑定
+        public DelegateCommand<object> CloseCommand { set; get; }
+        public DelegateCommand<object> SureCommand { set; get; }
+        #endregion
+    }
+}

+ 8 - 5
BlankApp1/BlankApp1/Views/BasicConfigView/AddDetailView.xaml

@@ -23,7 +23,7 @@
             <RowDefinition />
             <RowDefinition />
             <RowDefinition />
-         
+            <RowDefinition />
         </Grid.RowDefinitions>
         <Grid Grid.Row="0"  Cursor="Hand" >
             <StackPanel Orientation="Horizontal" Margin="10,5,0,0">
@@ -50,16 +50,19 @@
             <!--<ComboBox  Height="28" Width="120" ItemsSource="{Binding PLCVars}" SelectedItem="{Binding SelectPLCVar}" />-->
             <TextBox  Height="28" Width="120" Text="{Binding PLCItem}" />
         </StackPanel>
-    
-        <StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Center">
+        <StackPanel Orientation="Horizontal"  Grid.Row="3" HorizontalAlignment="Center">
+            <TextBlock Text="PLC变量类型信息:"  Style="{StaticResource NormalTextBlockStyle}" />
+            <ComboBox  Height="28" Width="120" ItemsSource="{Binding PLCTypes}" SelectedItem="{Binding SelectPLCType}" />
+        </StackPanel>
+        <StackPanel Orientation="Horizontal" Grid.Row="4" HorizontalAlignment="Center">
             <TextBlock Text="PLC变量值:"  Style="{StaticResource NormalTextBlockStyle}" Margin="10,0,5,0" TextAlignment="Right" Width="80"/>
             <TextBox  Height="28" Width="120" Text="{Binding PLCValue}" />
         </StackPanel>
-        <StackPanel Orientation="Horizontal" Grid.Row="4" HorizontalAlignment="Center">
+        <StackPanel Orientation="Horizontal" Grid.Row="5" HorizontalAlignment="Center">
             <TextBlock Text="描述:"  Style="{StaticResource NormalTextBlockStyle}" Margin="10,0,5,0" TextAlignment="Right" Width="80" />
             <TextBox  Height="28" Width="220" Text="{Binding PLCDescribe}" />
         </StackPanel>
-        <StackPanel Orientation="Horizontal" Grid.Row="5" HorizontalAlignment="Center">
+        <StackPanel Orientation="Horizontal" Grid.Row="6" HorizontalAlignment="Center">
            
             <Button  Content="取消" Width="80"  Margin="5,0"  Command="{Binding CancelCommand}" Opacity="0.7" Style="{StaticResource NormalButtonStyle}" />
             <Button  Content="确认" Width="80"  Margin="5,0"  Command="{Binding SureCommand}" Style="{StaticResource NormalButtonStyle}" />

+ 2 - 48
BlankApp1/BlankApp1/Views/BusinessManageView/ManualTestView.xaml

@@ -110,30 +110,7 @@
                         <DataGridTextColumn Header="判定值" Binding="{Binding PlcValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="结果" Binding="{Binding RealValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="描述" Binding="{Binding Remark}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
-                        <DataGridTemplateColumn Header="操作" Width="160"  CellStyle="{StaticResource MyDataGridCellStyle}">
-                            <DataGridTemplateColumn.CellTemplate>
-                                <DataTemplate>
-                                    <UniformGrid Columns="2">
-                                        <Button  Width="auto" Background="Transparent" HorizontalContentAlignment ="Left" Foreground="Black" Height="25" BorderThickness="0"
-                Command="{Binding DataContext.EditBeforeCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" CommandParameter="{Binding Id}" Cursor="Hand" Margin="0,0,10,0" >
-
-                                            <StackPanel Orientation="Horizontal">
-                                                <TextBlock  Text="编辑" VerticalAlignment="Center" Foreground="Blue"/>
-                                            </StackPanel>
-                                        </Button>
-                                        <Button  Width="auto" Background="Transparent" HorizontalContentAlignment ="Left" Foreground="Black" Height="25" BorderThickness="0"
-                Command="{Binding DataContext.DeleteBeforeCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" CommandParameter="{Binding Id}"   Cursor="Hand" >
-
-                                            <StackPanel Orientation="Horizontal">
-                                                <TextBlock  Text="删除" VerticalAlignment="Center" Foreground="Blue"/>
-                                            </StackPanel>
-                                        </Button>
-
-                                    </UniformGrid>
-                                </DataTemplate>
-                            </DataGridTemplateColumn.CellTemplate>
-                        </DataGridTemplateColumn>
-
+                        
                     </DataGrid.Columns>
 
                 </DataGrid>
@@ -200,30 +177,7 @@
                         <DataGridTextColumn Header="判定值" Binding="{Binding PlcValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="结果" Binding="{Binding RealValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="描述" Binding="{Binding Remark}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
-                        <DataGridTemplateColumn Header="操作" Width="160"  CellStyle="{StaticResource MyDataGridCellStyle}">
-                            <DataGridTemplateColumn.CellTemplate>
-                                <DataTemplate>
-                                    <UniformGrid Columns="2">
-                                        <Button  Width="auto" Background="Transparent" HorizontalContentAlignment ="Left" Foreground="Black" Height="25" BorderThickness="0"
-     Command="{Binding DataContext.EditInCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" CommandParameter="{Binding Id}" Cursor="Hand" Margin="0,0,10,0" >
-
-                                            <StackPanel Orientation="Horizontal">
-                                                <TextBlock  Text="编辑" VerticalAlignment="Center" Foreground="Blue"/>
-                                            </StackPanel>
-                                        </Button>
-                                        <Button  Width="auto" Background="Transparent" HorizontalContentAlignment ="Left" Foreground="Black" Height="25" BorderThickness="0"
-     Command="{Binding DataContext.DeleteInCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" CommandParameter="{Binding Id}"   Cursor="Hand" >
-
-                                            <StackPanel Orientation="Horizontal">
-                                                <TextBlock  Text="删除" VerticalAlignment="Center" Foreground="Blue"/>
-                                            </StackPanel>
-                                        </Button>
-
-                                    </UniformGrid>
-                                </DataTemplate>
-                            </DataGridTemplateColumn.CellTemplate>
-                        </DataGridTemplateColumn>
-
+                    
                     </DataGrid.Columns>
 
                 </DataGrid>

+ 42 - 0
BlankApp1/BlankApp1/Views/BusinessManageView/WritePLCView.xaml

@@ -0,0 +1,42 @@
+<UserControl x:Class="PLCTool.Views.BusinessManageView.WritePLCView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:PLCTool.Views.BusinessManageView"
+             mc:Ignorable="d" 
+             BorderBrush="#CBCBCB" BorderThickness="1"
+            Height="300" Width="500" >
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="40"/>
+            <RowDefinition />
+            <RowDefinition />
+            <RowDefinition />
+        </Grid.RowDefinitions>
+        <Grid Grid.Row="0"  Cursor="Hand" >
+            <StackPanel Orientation="Horizontal" Margin="10,5,0,0">
+                <TextBlock Text="向PLC写入值" FontSize="15"/>
+            </StackPanel>
+            
+        </Grid>
+        <StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
+            <TextBlock Text="PLC地址:"  Style="{StaticResource NormalTextBlockStyle}" Margin="10,0,5,0" TextAlignment="Right" Width="80"/>
+            <!--<ComboBox  Height="28" Width="120" ItemsSource="{Binding PLCVars}" SelectedItem="{Binding SelectPLCVar}" />-->
+            <TextBox  Height="28" Width="120" Text="{Binding PLCAddr}" />
+        </StackPanel>
+
+        <StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center">
+            <TextBlock Text="数据值:"  Style="{StaticResource NormalTextBlockStyle}" Margin="10,0,5,0" TextAlignment="Right" Width="80"/>
+            <TextBox  Height="28" Width="120" Text="{Binding PLCValue}" />
+        </StackPanel>
+
+        <StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Center">
+
+            <Button  Content="取消" Width="80"  Margin="5,0"  Command="{Binding CancelCommand}" Opacity="0.7" Style="{StaticResource NormalButtonStyle}" />
+            <Button  Content="确认" Width="80"  Margin="5,0"  Command="{Binding SureCommand}" Style="{StaticResource NormalButtonStyle}" />
+        </StackPanel>
+
+
+    </Grid>
+</UserControl>

+ 28 - 0
BlankApp1/BlankApp1/Views/BusinessManageView/WritePLCView.xaml.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace PLCTool.Views.BusinessManageView
+{
+    /// <summary>
+    /// WritePLCView.xaml 的交互逻辑
+    /// </summary>
+    public partial class WritePLCView : UserControl
+    {
+        public WritePLCView()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 22 - 1
BlankApp1/Model/Dto/BasPlcItemConfigDto.cs

@@ -31,7 +31,7 @@ namespace Model.Dto
         }
 
 
-        public string plcAddType { get; set; }
+        private  string plcAddType { get; set; }
 
         public string PlcAddType
         {
@@ -66,6 +66,27 @@ namespace Model.Dto
             get { return realValue; }
             set { realValue = value; OnPropertyChanged(); }
         }
+
+
+        /// <summary>
+        /// 测试结果(数据库中没有的字段,方便测试时绑定使用)
+        /// </summary>
+        private string testResult { get; set; }
+        public string TestResult
+        {
+            get { return testResult; }
+            set { testResult = value; OnPropertyChanged(); }
+        }
+
+        /// <summary>
+        /// 测试时间(数据库中没有的字段,方便测试时绑定使用)
+        /// </summary>
+        private DateTime testTime { get; set; }
+        public DateTime TestTime
+        {
+            get { return testTime; }
+            set { testTime = value; OnPropertyChanged(); }
+        }
         /// <summary>
         /// Desc:
         /// Default:

+ 42 - 1
BlankApp1/Model/Dto/BizTestRecordDtlDto.cs

@@ -1,4 +1,5 @@
-using System;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -37,8 +38,48 @@ namespace Model.Dto
         /// Nullable:True
         /// </summary>           
         public DateTime? FinishTestTime { get; set; }
+        /// <summary>
+        /// Desc:前置项  json
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+        public object   PreconditionFinal { get; set; }
+
+        /// <summary>
+        /// Desc:测试项输入项结果 json
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+    
+        public object ActionFinal { get; set; }
 
 
+        /// <summary>
+        /// Desc:结果项结果 json
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+
+        public object JudgementResultFinal { get; set; }
+
+
+        /// <summary>
+        /// 前置项测试项  合格 不合格
+        /// </summary>
+        public string PreconditionResult { get; set; }
+
+        /// <summary>
+        /// Desc:测试项输入项结果 合格 不合格
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+
+        public string ActionResult { get; set; }
+        /// <summary>
+        /// 结果项结果 
+        /// </summary>
+        public string JudgementResult { get; set; }
+
         /// <summary>
         /// 测试模式
         /// </summary>

+ 28 - 5
BlankApp1/Model/Dto/JsonModel.cs

@@ -24,16 +24,39 @@ namespace Model.Dto
     }
     public class DetailPLC
     {
+
+
         public string PlcItem { get; set; }
 
-        
-              
+
+
         public string PlcAddress { get; set; }
 
+        public string PlcAddType { get; set; }
+        /// <summary>
+        /// 设定值
+        /// </summary>
         public string PlcValue { get; set; }
-  
-           
+
+        /// <summary>
+        /// 实时值(读取或写入值)
+        /// </summary>
+        public string RealValue { get; set; }
+
+        /// <summary>
+        ///测试时间
+        /// </summary>
+        public DateTime TestTime { get; set; }
+        /// <summary>
+        /// 测试结果
+        /// </summary>
+        public string TestResult { get; set; }
+
         public string Remark { get; set; }
-   
+
     }
+    /// <summary>
+    /// 测试结果记录json类
+    /// </summary>
+  
 }

+ 30 - 4
BlankApp1/Model/Entities/biz_test_record_dtl.cs

@@ -50,10 +50,36 @@ namespace Model.Entities
            /// Nullable:True
            /// </summary>           
            public DateTime? finish_test_time {get;set;}
-          /// <summary>
-          /// 测试模式
-          /// </summary>
-           public string test_mode { get; set; }
+
+
+        /// <summary>
+        /// Desc:测试项前置结果
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+        [SugarColumn(IsJson = true)]
+        public object precondition_final { get; set; }
+
+        /// <summary>
+        /// Desc:测试项输入项结果
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+        [SugarColumn(IsJson = true)]
+        public object action_final { get; set; }
+
+
+        /// <summary>
+        /// Desc:结果项结果
+        /// Default:
+        /// Nullable:True
+        /// </summary>
+        [SugarColumn(IsJson = true)]
+        public object judgement_result_final { get; set; }
+        /// <summary>
+        /// 测试模式
+        /// </summary>
+        public string test_mode { get; set; }
         /// <summary>
         /// Desc:测试项结果。0:NO 不通过;1:YES 通过
         /// Default: