123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- using AutoMapper;
- using BizService;
- using Microsoft.Extensions.Logging;
- using Model.Dto;
- using Model.Entities;
- using Newtonsoft.Json;
- using PLCTool.Common;
- using Prism.Commands;
- using Prism.Events;
- using Prism.Mvvm;
- using Prism.Services.Dialogs;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace PLCTool.ViewModels.BasicConfigViewModel
- {
-
- public class ReadSchViewModel : BindableBase, IDialogAware
- {
- private readonly IDialogService _dialog;
- private readonly IEventAggregator _aggregator;
- private readonly IOptionConfigService _optionConfigService;
- private readonly IBasicPlcTestSchemeService _basicPlcTestSchemeService;
- private readonly IBasicPlcTestSchemeDtlService _basicPlcTestSchemeDtlService;
- private readonly IBizTestRecordService _iBizTestRecordService;
- private readonly IBizTestRecordDtlService _iBizTestRecordDtlService;
- private readonly IMapper _mapper;
- private readonly ILogger _logger;
- private List<OptionConfigDto> _optionConfigs;
- private DateTime startTime = DateTime.Now;
- private DateTime endTime = DateTime.Now;
- private int testStatus = 0; //测试状态
- private int testResult = 0; //测试结果
- private long schId = 0; //方案ID
- private long globalSchDetailId = 0; //测试方案明细ID
- private long globalDeviceId = 0; //设备ID
- private BizTestRecordDtlDto bizTestRecordDtlDto = new BizTestRecordDtlDto(); //测试方案明细表
-
- private int delayTime = 20;
- public ReadSchViewModel(IDialogService dialog, IEventAggregator aggregator, IOptionConfigService optionConfigService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBasicPlcTestSchemeDtlService basicPlcTestSchemeDtlService, IBizTestRecordService iBizTestRecordService, IBizTestRecordDtlService iBizTestRecordDtlService, IMapper mapper, ILogger logger)
- {
- _dialog = dialog;
- _aggregator = aggregator;
- _optionConfigService = optionConfigService;
- _basicPlcTestSchemeService = basicPlcTestSchemeService;
- _basicPlcTestSchemeDtlService = basicPlcTestSchemeDtlService;
- _iBizTestRecordDtlService = iBizTestRecordDtlService;
- _iBizTestRecordService = iBizTestRecordService;
- _mapper = mapper;
- _logger = logger;
- CloseCommand = new DelegateCommand(Close);
-
- ItemChangeCommand = new DelegateCommand(ItemChange);
- BeforeConList = new ObservableCollection<BasPlcItemConfigDto>();
- InConList = new ObservableCollection<BasPlcItemConfigDto>();
- OutConList = new ObservableCollection<BasPlcItemConfigDto>();
- GetConfigOption();
- }
- /// <summary>
- /// 选中测试项
- /// </summary>
- private void ItemChange()
- {
- var findDtlMsg = _basicPlcTestSchemeDtlService.FindAllBySchId(schId)?.FirstOrDefault(X => X.item_name == SelectItem);
- if (findDtlMsg != null)
- {
- int id = Convert.ToInt32(findDtlMsg.scheme_dtl_id);
- // 根据 测试方案明细主键ID 查找测试方案id 及方案名和设备名
- globalSchDetailId = id;
- GetDetailInfo(id);
- }
- }
- #region idialog接口实现
- public string Title { set; get; } = "方案详情";
- public event Action<IDialogResult> RequestClose;
- public bool CanCloseDialog()
- {
- return true;
- }
- public void OnDialogClosed()
- {
- }
- public void OnDialogOpened(IDialogParameters parameters)
- {
- //编辑
- var getMsg = parameters.GetValues<long>("Key");
- ///值不为空,表示修改
- if (getMsg != null)
- {
- foreach (var item in getMsg)
- {
- //测试方案号
- schId = item;
- var schDtls = _basicPlcTestSchemeDtlService.FindAllBySchId(schId).OrderBy(x => x.scheme_dtl_id).ToList(); ;
- foreach (var sch in schDtls)
- {
- long dtlId = sch.scheme_dtl_id;
- SchItems.Add(sch.item_name);
- }
- //默认显示第一个测试项的信息
- if (schDtls.Count != 0)
- {
- int id = Convert.ToInt32(schDtls[0].scheme_dtl_id);
- globalSchDetailId = id;
- // 根据 测试方案明细主键ID 查找测试方案id 及方案名和设备名
- GetDetailInfo(id);
- SelectItemIndex = 0;
- }
- }
- }
-
- }
- /// <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;
- DeviceKindName = findSch.devicekind_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.Id = detail.Id;
- 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.Id = detail.Id;
- 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.Id = detail.Id;
- 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>
- private void GetConfigOption()
- {
- var configList = _optionConfigService.QueryList();
- _optionConfigs = _mapper.Map<List<OptionConfig>, List<OptionConfigDto>>(configList);
- var tests = _optionConfigs.FindAll(x => x.TypeID == 1);
- TestKinds = new List<string>();
- foreach (var test in tests)
- {
- TestKinds.Add(test.ContentOption);
- }
- //测试项类型
- var judges = _optionConfigs.FindAll(x => x.TypeID == 2);
- foreach (var judge in judges)
- {
- BeforeJudgeKinds.Add(judge.ContentOption);
- InJudgeKinds.Add(judge.ContentOption);
- OutJudgeKinds.Add(judge.ContentOption);
- }
- //判定逻辑
- var logics = _optionConfigs.FindAll(x => x.TypeID == 3);
- foreach (var logic in logics)
- {
- JudgeLogicKinds.Add(logic.ContentOption);
- InJudgeLogicKinds.Add(logic.ContentOption);
- OutJudgeLogicKinds.Add(logic.ContentOption);
- }
- }
- /// <summary>
- /// 关闭按钮
- /// </summary>
- private void Close()
- {
- MessageBoxResult boxResult = MessageBox.Show("确认退出自动测试", "确认", MessageBoxButton.OKCancel, MessageBoxImage.Information);
- if (boxResult == MessageBoxResult.OK)
- {
- RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
- }
- }
- /// <summary>
- /// mode转json
- /// </summary>
- /// <param name="itemType"></param>
- /// <param name="itemLogical"></param>
- /// <param name="description"></param>
- /// <param name="conList"></param>
- /// <returns></returns>
-
- #endregion
- #region 命令绑定
- public DelegateCommand CloseCommand { set; get; }
- public DelegateCommand ItemChangeCommand { set; get; }
- #endregion
- #region 变量绑定
- /// <summary>
- /// 测试方案编码
- /// </summary>
- private string scheduleName;
- public string ScheduleName
- {
- get { return scheduleName; }
- set { scheduleName = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 设备名称
- /// </summary>
- private string deviceKindName;
- public string DeviceKindName
- {
- get { return deviceKindName; }
- set { deviceKindName = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 测试项名称
- /// </summary>
- private string testName;
- public string TestName
- {
- get { return testName; }
- set { testName = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 测试项类型
- /// </summary>
- private List<string> testKinds = new List<string>();
- public List<string> TestKinds
- {
- get { return testKinds; }
- set { testKinds = value; RaisePropertyChanged(); }
- }
- /// <summary>
- ///
- /// </summary>
- private string selectTest;
- public string SelectTest
- {
- get { return selectTest; }
- set { selectTest = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 判定类型(前置项)
- /// </summary>
- private List<string> beforeJudgeKinds = new List<string>();
- public List<string> BeforeJudgeKinds
- {
- get { return beforeJudgeKinds; }
- set { beforeJudgeKinds = value; RaisePropertyChanged(); }
- }
- private string beforeSelectJudge;
- public string BeforeSelectJudge
- {
- get { return beforeSelectJudge; }
- set { beforeSelectJudge = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 逻辑判断
- /// </summary>
- private List<string> judgeLogicKinds = new List<string>();
- public List<string> JudgeLogicKinds
- {
- get { return judgeLogicKinds; }
- set { judgeLogicKinds = value; RaisePropertyChanged(); }
- }
- private string selectLogic;
- public string SelectLogic
- {
- get { return selectLogic; }
- set { selectLogic = value; RaisePropertyChanged(); }
- }
- private string beforeDetail;
- public string BeforeDetail
- {
- get { return beforeDetail; }
- set { beforeDetail = value; RaisePropertyChanged(); }
- }
- private ObservableCollection<BasPlcItemConfigDto> beforeConList;
- public ObservableCollection<BasPlcItemConfigDto> BeforeConList
- {
- get { return beforeConList; }
- set { beforeConList = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 判定类型(输入项)
- /// </summary>
- private List<string> inJudgeKinds = new List<string>();
- public List<string> InJudgeKinds
- {
- get { return inJudgeKinds; }
- set { inJudgeKinds = value; RaisePropertyChanged(); }
- }
- private string selectInJudge;
- public string SelectInJudge
- {
- get { return selectInJudge; }
- set { selectInJudge = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 逻辑判断
- /// </summary>
- private List<string> inJudgeLogicKinds = new List<string>();
- public List<string> InJudgeLogicKinds
- {
- get { return inJudgeLogicKinds; }
- set { inJudgeLogicKinds = value; RaisePropertyChanged(); }
- }
- private string inSelectLogic;
- public string InSelectLogic
- {
- get { return inSelectLogic; }
- set { inSelectLogic = value; RaisePropertyChanged(); }
- }
- private string inDetail;
- public string InDetail
- {
- get { return inDetail; }
- set { inDetail = value; RaisePropertyChanged(); }
- }
- private ObservableCollection<BasPlcItemConfigDto> inConList;
- public ObservableCollection<BasPlcItemConfigDto> InConList
- {
- get { return inConList; }
- set { inConList = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 判定类型(结果项)
- /// </summary>
- private List<string> outJudgeKinds = new List<string>();
- public List<string> OutJudgeKinds
- {
- get { return outJudgeKinds; }
- set { outJudgeKinds = value; RaisePropertyChanged(); }
- }
- private string selectOutJudge;
- public string SelectOutJudge
- {
- get { return selectOutJudge; }
- set { selectOutJudge = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 逻辑判断
- /// </summary>
- private List<string> outJudgeLogicKinds = new List<string>();
- public List<string> OutJudgeLogicKinds
- {
- get { return outJudgeLogicKinds; }
- set { outJudgeLogicKinds = value; RaisePropertyChanged(); }
- }
- private string outSelectLogic;
- public string OutSelectLogic
- {
- get { return outSelectLogic; }
- set { outSelectLogic = value; RaisePropertyChanged(); }
- }
- private string outDetail;
- public string OutDetail
- {
- get { return outDetail; }
- set { outDetail = value; RaisePropertyChanged(); }
- }
- private ObservableCollection<BasPlcItemConfigDto> outConList;
- public ObservableCollection<BasPlcItemConfigDto> OutConList
- {
- get { return outConList; }
- set { outConList = value; RaisePropertyChanged(); }
- }
- private int stepIndex = 0;
- public int StepIndex
- {
- get { return stepIndex; }
- set { stepIndex = value; RaisePropertyChanged(); }
- }
- private Visibility proVisibility = Visibility.Hidden;
- public Visibility ProVisibility
- {
- get { return proVisibility; }
- set { proVisibility = value; RaisePropertyChanged(); }
- }
- private bool startEnalbe = true;
- public bool StartEnalbe
- {
- get { return startEnalbe; }
- set { startEnalbe = value; RaisePropertyChanged(); }
- }
- //所有测试项列表
- private List<string> schItems = new List<string>();
- public List<string> SchItems
- {
- get { return schItems; }
- set { schItems = value; RaisePropertyChanged(); }
- }
- //所选测试方案
- private string selectItem;
- public string SelectItem
- {
- get { return selectItem; }
- set { selectItem = value; RaisePropertyChanged(); }
- }
- private int selectItemIndex;
- public int SelectItemIndex
- {
- get { return selectItemIndex; }
- set { selectItemIndex = value; RaisePropertyChanged(); }
- }
- #endregion
- }
- }
|