123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- using AutoMapper;
- using BizService;
- using LiveCharts;
- using LiveCharts.Defaults;
- using LiveCharts.Wpf;
- using Microsoft.Extensions.Logging;
- using Model.Dto;
- using Model.Entities;
- using Prism.Commands;
- 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;
- namespace BlankApp1.ViewModels
- {
- public class StatisticsViewModel:BindableBase
- {
- private readonly IDialogService _dialog;
- private readonly IOptionConfigService _optionConfigService;
- private readonly IBasicPlcTestSchemeService _basicPlcTestSchemeService;
- private readonly IBasicPlcTestSchemeDtlService _basicPlcTestSchemeDtlService;
- private readonly IBizTestRecordDtlService _iBizTestRecordDtlService;
- private readonly ILogger _logger;
- private readonly IMapper _mapper;
- private List<SchDtlWithResultModel> allConfigList = new List<SchDtlWithResultModel>();//所有方案
- private List<SchDtlWithResultModel> conditionConfig = new List<SchDtlWithResultModel>();//符合条件的方案
- private int allSchCount = 0; //所有测试项
- public StatisticsViewModel(IDialogService dialog, IMenuService menuService, IOptionConfigService optionConfigService, IBasicPlcTestSchemeService basicPlcTestSchemeService, IBasicPlcTestSchemeDtlService basicPlcTestSchemeDtlService, IBizTestRecordDtlService iBizTestRecordDtlService, IMapper mapper, ILogger logger)
- {
- _dialog = dialog;
- _optionConfigService = optionConfigService;
- _basicPlcTestSchemeService = basicPlcTestSchemeService;
- _basicPlcTestSchemeDtlService = basicPlcTestSchemeDtlService;
- _iBizTestRecordDtlService = iBizTestRecordDtlService;
- _logger = logger;
- _mapper = mapper;
- PieSeriesCollectionDone = new SeriesCollection();
- PieSeriesCollectionFail= new SeriesCollection();
- PieSeriesCollectionEveryday = new SeriesCollection();
- PieSeriesCollectionPLC = new SeriesCollection();
- OnLoadCommand = new DelegateCommand(OnLoad);
-
- }
- private void OnLoad()
- {
- GetContent();
- GetPieSeriesDone();
- GetPieSeriesPLC();
- GetPieSeriesEveryDay();
- GetPieSeriesFail();
- }
- /// <summary>
- /// 获取解决方案
- /// </summary>
- private void GetContent()
- {
- allSchCount = 0;
- //所有测试方案
- var schlist = _basicPlcTestSchemeService.QueryList();
- var configList = _mapper.Map<List<bas_plc_test_scheme>, List<BasicPlcTestSchemeDto>>(schlist);
- //清空集合
- BaseConfigList.Clear();
- allConfigList.Clear();
- conditionConfig.Clear();
- //查找测试项名称
- foreach (var sch in configList)
- {
- long schId = sch.SchemeId;
- //在解决方案详细表中查找所有的测试项
- var items = _basicPlcTestSchemeDtlService.FindAllBySchId(schId);
- foreach (var item in items)
- {
- //上面是测试方案明细
- SchDtlWithResultModel basicPlcTestSchemeDto = new SchDtlWithResultModel();
- basicPlcTestSchemeDto.SchemeId = item.scheme_dtl_id;
- basicPlcTestSchemeDto.SchemeName = sch.SchemeName;
- basicPlcTestSchemeDto.DeviceKindName = sch.DeviceKindName;
- switch (item.item_type)
- {
- case 0:
- basicPlcTestSchemeDto.ItemType = "前置项";
- break;
- case 1:
- basicPlcTestSchemeDto.ItemType = "PLC点位测试项";
- break;
- case 2:
- basicPlcTestSchemeDto.ItemType = "Robot动作测试";
- break;
- }
- basicPlcTestSchemeDto.ItemName = item.item_name;
- basicPlcTestSchemeDto.CreateBy = sch.CreateBy;
- basicPlcTestSchemeDto.CreateTime = sch.CreateTime;
- //这里是测试项 结果和 测试记录明细状态
- var recordDetail = _iBizTestRecordDtlService.FindRecordDetailBySchDtlID(item.scheme_dtl_id);
- if (recordDetail != null)
- {
- basicPlcTestSchemeDto.StartTestTime = recordDetail.start_test_time.Value;
- basicPlcTestSchemeDto.FinishTestTime = recordDetail.finish_test_time.Value;
- basicPlcTestSchemeDto.TestMode = recordDetail.test_mode;
- switch (recordDetail.test_result)
- {
- case 0:
- basicPlcTestSchemeDto.TestResult = "不通过";
- break;
- case 1:
- basicPlcTestSchemeDto.TestResult = "通过";
- break;
- }
- switch (recordDetail.status)
- {
- case 0:
- basicPlcTestSchemeDto.TestStatus = "未测试";
- break;
- case 99:
- basicPlcTestSchemeDto.TestStatus = "已测试";
- break;
- }
- allConfigList.Add(basicPlcTestSchemeDto);
- conditionConfig.Add(basicPlcTestSchemeDto);
- }
- //统计所有测试项个数
- allSchCount++;
- }
- conditionConfig = conditionConfig.OrderBy(x => x.SchemeName).ThenBy(x=>x.SchemeId).ToList();
- //默认显示的第一页
- Getpage();
- }
- }
- /// <summary>
- /// 获取页面
- /// </summary>
- private void Getpage()
- {
- CurrentPage = 1;
- TotalCount = conditionConfig.Count;
- CurrentPageChanged();
- }
- /// <summary>
- /// 页面变化
- /// </summary>
- private void CurrentPageChanged()
- {
- BaseConfigList.Clear();
- foreach (var i in conditionConfig.Skip((CurrentPage - 1) * CountPerPage).Take(CountPerPage))
- {
- BaseConfigList.Add(i);
- }
- }
- private void GetPieSeriesDone()
- {
- PieSeriesCollectionDone.Clear();
-
- int tesNoDone = allSchCount-TotalCount;
-
- ChartValues<int> chartvalue = new ChartValues<int>();
- chartvalue.Add(TotalCount);
- ChartValues<int> noChartvalue = new ChartValues<int>();
- noChartvalue.Add(tesNoDone);
- PieSeries series = new PieSeries();
- series.DataLabels = true;
- series.Title = "已测试";
- series.Values = chartvalue;
- PieSeries series2 = new PieSeries();
- series2.DataLabels = true;
- series2.Title = "未测试";
- series2.Values = noChartvalue;
- PieSeriesCollectionDone.Add(series);
- PieSeriesCollectionDone.Add(series2);
- }
-
- private void GetPieSeriesPLC()
- {
- PieSeriesCollectionPLC.Clear();
- int succTest = allConfigList.FindAll(x => x.TestResult == "通过").Count;
- int noSuccTest = allConfigList.FindAll(x => x.TestResult == "不通过").Count;
- ChartValues<int> chartvalue = new ChartValues<int>();
- chartvalue.Add(succTest);
- ChartValues<int> nochartvalue = new ChartValues<int>();
- nochartvalue.Add(noSuccTest);
- PieSeries series = new PieSeries();
- series.DataLabels = true;
- series.Title = "通过率";
- series.Values = chartvalue;
- PieSeries series2 = new PieSeries();
- series2.DataLabels = true;
- series2.Title = "不通过率";
- series2.Values = nochartvalue;
- PieSeriesCollectionPLC.Add(series);
- PieSeriesCollectionPLC.Add(series2);
- }
- private void GetPieSeriesFail()
- {
- PieSeriesCollectionFail.Clear();
- int succTest = allConfigList.FindAll(x => x.TestResult == "通过").Count;
- int noSuccTest = allConfigList.FindAll(x => x.TestResult == "不通过").Count;
- ChartValues<int> chartvalue = new ChartValues<int>();
- chartvalue.Add(succTest);
- ChartValues<int> noChartvalue = new ChartValues<int>();
- noChartvalue.Add(noSuccTest);
-
- PieSeries series = new PieSeries();
- series.DataLabels = true;
- series.Title = "通过";
- series.Values = chartvalue;
- PieSeries series2 = new PieSeries();
- series2.DataLabels = true;
- series2.Title = "不通过";
- series2.Values = noChartvalue;
- PieSeriesCollectionFail.Add(series);
- PieSeriesCollectionFail.Add(series2);
- }
- private void GetPieSeriesEveryDay()
- {
- PieSeriesCollectionEveryday.Clear();
- int dayTest = allConfigList.FindAll(x => x.StartTestTime.Date == DateTime.Now.Date).Count;
- ChartValues<int> chartvalue = new ChartValues<int>();
- chartvalue.Add(dayTest);
- PieSeries series = new PieSeries();
- series.DataLabels = true;
- series.Title = "测试数量";
- series.Values = chartvalue;
- PieSeriesCollectionEveryday.Add(series);
- }
- #region 数据绑定
- /// <summary>
- /// 图标数据
- /// </summary>
- private SeriesCollection pieSeriesCollectionDone;
- public SeriesCollection PieSeriesCollectionDone
- {
- get { return pieSeriesCollectionDone; }
- set { pieSeriesCollectionDone = value; RaisePropertyChanged(); }
- }
- private SeriesCollection pieSeriesCollectionPLC;
- public SeriesCollection PieSeriesCollectionPLC
- {
- get { return pieSeriesCollectionPLC; }
- set { pieSeriesCollectionPLC = value; RaisePropertyChanged(); }
- }
- private SeriesCollection pieSeriesCollectionEveryday;
- public SeriesCollection PieSeriesCollectionEveryday
- {
- get { return pieSeriesCollectionEveryday; }
- set { pieSeriesCollectionEveryday = value; RaisePropertyChanged(); }
- }
- private SeriesCollection pieSeriesCollectionFail;
- public SeriesCollection PieSeriesCollectionFail
- {
- get { return pieSeriesCollectionFail; }
- set { pieSeriesCollectionFail = value; RaisePropertyChanged(); }
- }
- /// <summary>
- /// 总条数
- /// </summary>
- private int totalCount;
- public int TotalCount
- {
- get { return totalCount; }
- set { totalCount = value; RaisePropertyChanged(); CurrentPageChanged(); }
- }
- /// <summary>
- /// 每页数量
- /// </summary>
- private int countPerPage = 15;
- public int CountPerPage
- {
- get { return countPerPage; }
- set { countPerPage = value; RaisePropertyChanged(); CurrentPageChanged(); }
- }
- /// <summary>
- /// 单前页
- /// </summary>
- private int currentPage = 1;
- public int CurrentPage
- {
- get { return currentPage; }
- set { currentPage = value; RaisePropertyChanged(); CurrentPageChanged(); }
- }
- private ObservableCollection<SchDtlWithResultModel> baseConfigList = new ObservableCollection<SchDtlWithResultModel>();
- public ObservableCollection<SchDtlWithResultModel> BaseConfigList
- {
- get { return baseConfigList; }
- set { SetProperty(ref baseConfigList, value); }
- }
- #endregion
- #region 命令绑定
- public DelegateCommand OnLoadCommand { set; get; }
- #endregion
- }
- }
|