|
@@ -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
|
|
|
|
|
|
|