Browse Source

修改手动测试

user_lt 1 year ago
parent
commit
50ecd8c74d

+ 5 - 0
BlankApp1/BizService/BizTestRecordDtlService.cs

@@ -13,5 +13,10 @@ namespace BizService
         {
         {
             return base.GetFirst(x => x.scheme_dtl_id == schDtlID);
             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>
      /// <param name="schemeId"></param>
      /// <returns></returns>
      /// <returns></returns>
         public biz_test_record_dtl FindRecordDetailBySchDtlID(long schDtlID);
         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<AutoTestView, AutoTestViewModel>();
             containerRegistry.RegisterDialog<ManualTestView, ManualTestViewModel>();
             containerRegistry.RegisterDialog<ManualTestView, ManualTestViewModel>();
             containerRegistry.RegisterDialog<TestResultDetailView, TestResultDetailViewModel>();
             containerRegistry.RegisterDialog<TestResultDetailView, TestResultDetailViewModel>();
+            containerRegistry.RegisterDialog<WritePLCView, WritePLCViewModel>();
         }
         }
 
 
         private IMapper GetMapper(IContainerProvider container)
         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.PlcCode, opt => opt.MapFrom(src => src.plc_code))
                 .ForMember(dest => dest.PlcItem, opt => opt.MapFrom(src => src.plc_item))
                 .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.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.PlcValue, opt => opt.MapFrom(src => src.plc_value))
                 .ForMember(dest => dest.Remark, opt => opt.MapFrom(src => src.remark)).ReverseMap(); 
                 .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.SchemeDtlId, opt => opt.MapFrom(src => src.scheme_dtl_id))
                      .ForMember(dest => dest.StartTestTime, opt => opt.MapFrom(src => src.start_test_time))
                      .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.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.TestMode, opt => opt.MapFrom(src => src.test_mode))
                        .ForMember(dest => dest.TestResult, opt => opt.MapFrom(src => src.test_result))
                        .ForMember(dest => dest.TestResult, opt => opt.MapFrom(src => src.test_result))
                        .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.status))
                        .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);
             SureCommand = new DelegateCommand<string>(Sure);
             CancelCommand = new DelegateCommand(Close);
             CancelCommand = new DelegateCommand(Close);
             TxtLostFocusCommand = new DelegateCommand(LostFocus);
             TxtLostFocusCommand = new DelegateCommand(LostFocus);
+            PLCTypes.Add("bool");
+            PLCTypes.Add("word");
+            PLCTypes.Add("dword");
+            PLCTypes.Add("real");
             GetPLCConfig();
             GetPLCConfig();
 
 
 
 
@@ -80,6 +84,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                     {
                     {
                         PLCItem = item.PlcItem;
                         PLCItem = item.PlcItem;
                         PLCAddress = item.PlcAddress;
                         PLCAddress = item.PlcAddress;
+                        SelectPLCType = item.PlcAddType;
                         PLCValue = item.PlcValue;
                         PLCValue = item.PlcValue;
                         PLCDescribe = item.Remark;
                         PLCDescribe = item.Remark;
 
 
@@ -109,7 +114,8 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                 Id = id,
                 Id = id,
                 PlcItem =PLCItem,
                 PlcItem =PLCItem,
                 PlcAddress=PLCAddress,
                 PlcAddress=PLCAddress,
-                PlcValue=PLCValue,
+                PlcAddType =SelectPLCType ,
+                PlcValue =PLCValue,
                 Remark=PLCDescribe
                 Remark=PLCDescribe
                 
                 
             };
             };
@@ -172,6 +178,21 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
             get { return plcItem; }
             get { return plcItem; }
             set { plcItem = value; RaisePropertyChanged(); }
             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;
         private string plcValue;
         public 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.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
 
 
 namespace PLCTool.ViewModels.BasicConfigViewModel
 namespace PLCTool.ViewModels.BasicConfigViewModel
 {
 {
@@ -110,6 +111,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                                basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 beforeConList.Add(basPlcItemConfigDto);
                                 beforeConList.Add(basPlcItemConfigDto);
@@ -130,6 +132,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                                basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 InConList.Add(basPlcItemConfigDto);
                                 InConList.Add(basPlcItemConfigDto);
@@ -150,6 +153,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 BasPlcItemConfigDto basPlcItemConfigDto = new BasPlcItemConfigDto();
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcItem = detail.PlcItem;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
                                 basPlcItemConfigDto.PlcAddress = detail.PlcAddress;
+                                basPlcItemConfigDto.PlcAddType = detail.PlcAddType;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.PlcValue = detail.PlcValue;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 basPlcItemConfigDto.Remark = detail.Remark;
                                 OutConList.Add(basPlcItemConfigDto);
                                 OutConList.Add(basPlcItemConfigDto);
@@ -185,6 +189,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                         {
                         {
                             after.PlcItem = returnValue.PlcItem;
                             after.PlcItem = returnValue.PlcItem;
                             after.PlcAddress = returnValue.PlcAddress;
                             after.PlcAddress = returnValue.PlcAddress;
+                            after.PlcAddType = returnValue.PlcAddType;
                             after.PlcValue = returnValue.PlcValue;
                             after.PlcValue = returnValue.PlcValue;
                             after.Remark = returnValue.Remark;
                             after.Remark = returnValue.Remark;
 
 
@@ -507,6 +512,7 @@ namespace PLCTool.ViewModels.BasicConfigViewModel
                 DetailPLC plcItem = new DetailPLC();
                 DetailPLC plcItem = new DetailPLC();
                 plcItem.PlcItem = item.PlcItem;
                 plcItem.PlcItem = item.PlcItem;
                 plcItem.PlcAddress = item.PlcAddress;
                 plcItem.PlcAddress = item.PlcAddress;
+                plcItem.PlcAddType = item.PlcAddType;
                 plcItem.PlcValue = item.PlcValue;
                 plcItem.PlcValue = item.PlcValue;
                 plcItem.Remark = item.Remark;
                 plcItem.Remark = item.Remark;
                 prefixJsonModel.DetailInfo.Add(plcItem);
                 prefixJsonModel.DetailInfo.Add(plcItem);

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

@@ -3,6 +3,7 @@ using BizService;
 using Microsoft.Extensions.Logging;
 using Microsoft.Extensions.Logging;
 using Model.Dto;
 using Model.Dto;
 using Model.Entities;
 using Model.Entities;
+using NetTaste;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
 using OmronFinsTCP.Net;
 using OmronFinsTCP.Net;
 using PLCTool.Common;
 using PLCTool.Common;
@@ -41,8 +42,9 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         private DateTime endTime=DateTime.Now;
         private DateTime endTime=DateTime.Now;
         private int testStatus = 0;  //测试状态 
         private int testStatus = 0;  //测试状态 
         private int testResult = 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 = "手动测试";
         private const string TestMode = "手动测试";
     
     
         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)
@@ -95,112 +97,122 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             {
             {
                 foreach (var item in getMsg)
                 foreach (var item in getMsg)
                 {
                 {
-                    schDetailId = item; //测试方案明细ID
+                    globalSchDetailId = item; //测试方案明细ID
                     int id = Convert.ToInt32(item);
                     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
         #endregion
 
 
         #region 私有发方法
         #region 私有发方法
-        
-     
-
         /// <summary>
         /// <summary>
-        /// 完成时间
+        /// 增加或更新测试记录
         /// </summary>
         /// </summary>
-        /// <param name="obj"></param>
-        private void Done(object obj)
+        private void AddTestRecord()
         {
         {
-            endTime = DateTime.Now;
+        
             //记录记录主表中是否有这个方案的记录,没有则添加
             //记录记录主表中是否有这个方案的记录,没有则添加
             var findRecord = _iBizTestRecordService.FindRecorddBySchname(ScheduleName);
             var findRecord = _iBizTestRecordService.FindRecorddBySchname(ScheduleName);
-            if(findRecord == null)
+            if (findRecord == null)
             {
             {
                 //状态status 没有赋值
                 //状态status 没有赋值
                 BizTestRecordDto bizTestRecordDto = new BizTestRecordDto();
                 BizTestRecordDto bizTestRecordDto = new BizTestRecordDto();
                 bizTestRecordDto.RecordName = ScheduleName + "_Record";
                 bizTestRecordDto.RecordName = ScheduleName + "_Record";
-                bizTestRecordDto.SchemeName=ScheduleName;
+                bizTestRecordDto.SchemeName = ScheduleName;
                 bizTestRecordDto.Tester = Appsession.UserName;
                 bizTestRecordDto.Tester = Appsession.UserName;
                 bizTestRecordDto.StartTestTime = startTime;
                 bizTestRecordDto.StartTestTime = startTime;
                 bizTestRecordDto.FinishTestTime = endTime;
                 bizTestRecordDto.FinishTestTime = endTime;
@@ -211,10 +223,17 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 var testRecord = _mapper.Map<BizTestRecordDto, biz_test_record>(bizTestRecordDto);
                 var testRecord = _mapper.Map<BizTestRecordDto, biz_test_record>(bizTestRecordDto);
                 _iBizTestRecordService.Add(testRecord);
                 _iBizTestRecordService.Add(testRecord);
             }
             }
+           
+        }
+        /// <summary>
+        /// 增加测试记录明细
+        /// </summary>
+        private void AddTesDtltRecord(long schDetailId)
+        {
             //查找record ID
             //查找record ID
-            long recordId = 0; 
+            long recordId = 0;
             var findRecordID = _iBizTestRecordService.FindRecorddBySchname(ScheduleName);
             var findRecordID = _iBizTestRecordService.FindRecorddBySchname(ScheduleName);
-            if(findRecordID != null)
+            if (findRecordID != null)
             {
             {
                 recordId = findRecordID.record_id;
                 recordId = findRecordID.record_id;
             }
             }
@@ -224,15 +243,14 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             if (findRecordDetail == null)
             if (findRecordDetail == null)
             {
             {
                 //状态status 没有赋值
                 //状态status 没有赋值
-                BizTestRecordDtlDto bizTestRecordDtlDto = new BizTestRecordDtlDto();
-                bizTestRecordDtlDto.RecordId= recordId;
+
+                bizTestRecordDtlDto.RecordId = recordId;
                 bizTestRecordDtlDto.SchemeDtlId = schDetailId;
                 bizTestRecordDtlDto.SchemeDtlId = schDetailId;
-                
                 bizTestRecordDtlDto.StartTestTime = startTime;
                 bizTestRecordDtlDto.StartTestTime = startTime;
                 bizTestRecordDtlDto.FinishTestTime = endTime;
                 bizTestRecordDtlDto.FinishTestTime = endTime;
                 bizTestRecordDtlDto.TestMode = TestMode;
                 bizTestRecordDtlDto.TestMode = TestMode;
                 bizTestRecordDtlDto.Status = testStatus;
                 bizTestRecordDtlDto.Status = testStatus;
-                bizTestRecordDtlDto.TestResult= testResult;
+                bizTestRecordDtlDto.TestResult = testResult;
                 bizTestRecordDtlDto.CreateBy = Appsession.UserName;
                 bizTestRecordDtlDto.CreateBy = Appsession.UserName;
                 bizTestRecordDtlDto.CreateTime = DateTime.Now;
                 bizTestRecordDtlDto.CreateTime = DateTime.Now;
                 bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
                 bizTestRecordDtlDto.UpdateBy = Appsession.UserName;
@@ -240,22 +258,55 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(bizTestRecordDtlDto);
                 var testRecordDtl = _mapper.Map<BizTestRecordDtlDto, biz_test_record_dtl>(bizTestRecordDtlDto);
                 _iBizTestRecordDtlService.Add(testRecordDtl);
                 _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)
         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)
         private void Previous(object obj)
@@ -270,58 +321,282 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
         {
         {
             //开始时间
             //开始时间
             startTime = DateTime.Now;
             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 "人工判定":
                 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;
                     break;
                 case "自动判定":
                 case "自动判定":
                     //读取plc的值
                     //读取plc的值
-                    switch(SelectLogic)
+                    switch (SelectLogic)
                     {
                     {
                         case "NULL":
                         case "NULL":
                             break;
                             break;
                         case "AND":
                         case "AND":
+                        case "ONLY":
                             int countCond = 0;
                             int countCond = 0;
-                            foreach(var item in BeforeConList)
+                            foreach (var item in BeforeConList)
                             {
                             {
                                 string plcAddress = item.PlcAddress;
                                 string plcAddress = item.PlcAddress;
-                                string plcAddType = item.plcAddType;
+                                string plcAddType = item.PlcAddType;
                                 string plcValue = item.PlcValue;
                                 string plcValue = item.PlcValue;
-                                switch(plcAddType) 
+
+                                switch (plcAddType)
                                 {
                                 {
                                     case "bool":
                                     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++;
                                             countCond++;
                                         }
                                         }
+                                        else
+                                        {
+                                            item.TestResult = "不合格";
+                                        }
+
                                         break;
                                         break;
                                     case "word":
                                     case "word":
                                         break;
                                         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;
                             break;
                         case "OR":
                         case "OR":
                             break;
                             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":
                         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;
                             break;
+
                         case "ORDER":
                         case "ORDER":
                             break;
                             break;
                     }
                     }
                     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>
         /// 获取配置
         /// 获取配置
         /// </summary>
         /// </summary>
@@ -372,8 +647,8 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
 
 
 
 
 
 
-     
-     
+
+
         /// <summary>
         /// <summary>
         /// mode转json
         /// mode转json
         /// </summary>
         /// </summary>
@@ -395,7 +670,11 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
                 DetailPLC plcItem = new DetailPLC();
                 DetailPLC plcItem = new DetailPLC();
                 plcItem.PlcItem = item.PlcItem;
                 plcItem.PlcItem = item.PlcItem;
                 plcItem.PlcAddress = item.PlcAddress;
                 plcItem.PlcAddress = item.PlcAddress;
+                plcItem.PlcAddType = item.PlcAddType;
                 plcItem.PlcValue = item.PlcValue;
                 plcItem.PlcValue = item.PlcValue;
+                plcItem.RealValue = item.RealValue;
+                plcItem.TestTime = item.TestTime;
+                plcItem.TestResult = item.TestResult;
                 plcItem.Remark = item.Remark;
                 plcItem.Remark = item.Remark;
                 prefixJsonModel.DetailInfo.Add(plcItem);
                 prefixJsonModel.DetailInfo.Add(plcItem);
 
 
@@ -404,7 +683,6 @@ namespace PLCTool.ViewModels.BusinessManageViewModel
             return prefixJsonStr;
             return prefixJsonStr;
         }
         }
 
 
-
         #endregion
         #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 />
             <RowDefinition />
             <RowDefinition />
-         
+            <RowDefinition />
         </Grid.RowDefinitions>
         </Grid.RowDefinitions>
         <Grid Grid.Row="0"  Cursor="Hand" >
         <Grid Grid.Row="0"  Cursor="Hand" >
             <StackPanel Orientation="Horizontal" Margin="10,5,0,0">
             <StackPanel Orientation="Horizontal" Margin="10,5,0,0">
@@ -50,16 +50,19 @@
             <!--<ComboBox  Height="28" Width="120" ItemsSource="{Binding PLCVars}" SelectedItem="{Binding SelectPLCVar}" />-->
             <!--<ComboBox  Height="28" Width="120" ItemsSource="{Binding PLCVars}" SelectedItem="{Binding SelectPLCVar}" />-->
             <TextBox  Height="28" Width="120" Text="{Binding PLCItem}" />
             <TextBox  Height="28" Width="120" Text="{Binding PLCItem}" />
         </StackPanel>
         </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"/>
             <TextBlock Text="PLC变量值:"  Style="{StaticResource NormalTextBlockStyle}" Margin="10,0,5,0" TextAlignment="Right" Width="80"/>
             <TextBox  Height="28" Width="120" Text="{Binding PLCValue}" />
             <TextBox  Height="28" Width="120" Text="{Binding PLCValue}" />
         </StackPanel>
         </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" />
             <TextBlock Text="描述:"  Style="{StaticResource NormalTextBlockStyle}" Margin="10,0,5,0" TextAlignment="Right" Width="80" />
             <TextBox  Height="28" Width="220" Text="{Binding PLCDescribe}" />
             <TextBox  Height="28" Width="220" Text="{Binding PLCDescribe}" />
         </StackPanel>
         </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 CancelCommand}" Opacity="0.7" Style="{StaticResource NormalButtonStyle}" />
             <Button  Content="确认" Width="80"  Margin="5,0"  Command="{Binding SureCommand}" 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 PlcValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="结果" Binding="{Binding RealValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="结果" Binding="{Binding RealValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="描述" Binding="{Binding Remark}" 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.Columns>
 
 
                 </DataGrid>
                 </DataGrid>
@@ -200,30 +177,7 @@
                         <DataGridTextColumn Header="判定值" Binding="{Binding PlcValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="判定值" Binding="{Binding PlcValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="结果" Binding="{Binding RealValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="结果" Binding="{Binding RealValue}" CellStyle="{StaticResource MyDataGridCellStyle}"/>
                         <DataGridTextColumn Header="描述" Binding="{Binding Remark}" 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.Columns>
 
 
                 </DataGrid>
                 </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
         public string PlcAddType
         {
         {
@@ -66,6 +66,27 @@ namespace Model.Dto
             get { return realValue; }
             get { return realValue; }
             set { realValue = value; OnPropertyChanged(); }
             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>
         /// <summary>
         /// Desc:
         /// Desc:
         /// Default:
         /// Default:

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

@@ -1,4 +1,5 @@
-using System;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;
@@ -37,8 +38,48 @@ namespace Model.Dto
         /// Nullable:True
         /// Nullable:True
         /// </summary>           
         /// </summary>           
         public DateTime? FinishTestTime { get; set; }
         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>
         /// 测试模式
         /// 测试模式
         /// </summary>
         /// </summary>

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

@@ -24,16 +24,39 @@ namespace Model.Dto
     }
     }
     public class DetailPLC
     public class DetailPLC
     {
     {
+
+
         public string PlcItem { get; set; }
         public string PlcItem { get; set; }
 
 
-        
-              
+
+
         public string PlcAddress { get; set; }
         public string PlcAddress { get; set; }
 
 
+        public string PlcAddType { get; set; }
+        /// <summary>
+        /// 设定值
+        /// </summary>
         public string PlcValue { get; set; }
         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; }
         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
            /// Nullable:True
            /// </summary>           
            /// </summary>           
            public DateTime? finish_test_time {get;set;}
            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>
         /// <summary>
         /// Desc:测试项结果。0:NO 不通过;1:YES 通过
         /// Desc:测试项结果。0:NO 不通过;1:YES 通过
         /// Default:
         /// Default: