| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- using System;
- using Prism.Mvvm;
- using System.Linq;
- using Prism.Events;
- using Prism.Commands;
- using System.Windows.Media;
- using SHJX.Service.Common.Event;
- using System.Collections.Generic;
- using SHJX.Service.Model.EventArgs;
- using SHJX.Service.Common.Interface;
- using SHJX.Service.Common.UserColor;
- using SHJX.Service.Model.XmlModules;
- using System.Collections.ObjectModel;
- using SHJX.Service.Control.Interface;
- using SHJX.Service.Model.CRUDModules;
- using SHJX.Service.Model.ControlModules;
- using SHJX.Service.Model.Enums;
- using SHJX.Service.Control.Extends;
- namespace SHJX.Service.Main.ViewModels
- {
- public class SampleLeftPosViewModel : BindableBase
- {
- #region Fields
- private readonly ILogService _log;
- private readonly ISampleService _sampleService;
- #endregion
- #region Properties
- public ObservableCollection<SampleDetailControl> DetailControls { get; set; }
- #endregion
- public SampleLeftPosViewModel(IEventAggregator ea, ISampleService sampleService, ILogService log)
- {
- _log = log;
- _sampleService = sampleService;
- DetailControls = new ObservableCollection<SampleDetailControl>();
- SamplePosition position = _sampleService.GetSamplePosition("Left");
- for (int i = 0; i < position.Count; i++)
- {
- SampleDetailControl sampleDetail = new()
- {
- Index = i,
- Name = $"{position.Value}{(i + 1)}",
- TagCurrentTagNo = $"{i + 1}"
- };
- DetailControls.Add(sampleDetail);
- }
- #region Subscribe Event
- ea.GetEvent<SampleDetailEvent>().Subscribe(SampleDetailReceived);
- ea.GetEvent<UpdateSampleDetailEvent>().Subscribe(UpdateSampleDetailReceived);
- ea.GetEvent<UpdateSampleDetailNullEvent>().Subscribe(UpdateSampleDetailReceivedNull);
- ea.GetEvent<TaskResultNoticeEvent>().Subscribe(UpdateTaskResult);
- ea.GetEvent<TaskFinishNoticeEvent>().Subscribe(TaskFinishNotice);
- ea.GetEvent<AdjustResultEvent>().Subscribe(AdjustResult);
- #endregion
- }
- #region Commands
- private DelegateCommand _loadingCommand;
- public DelegateCommand LoadingCommand => _loadingCommand ??= new DelegateCommand(ExecuteLoadingCommand);
- #endregion
- #region Executes
- private void ExecuteLoadingCommand()
- {
- List<SampleDetail> details = _sampleService.GetSampleDetailByPosition("Left");
- foreach (SampleDetail detail in details)
- {
- DetailControls.FirstOrDefault(item => item.Name.Equals(detail.NodeName, StringComparison.Ordinal)).SampleDetailInfo = detail.DetailInfo;
- DetailControls.FirstOrDefault(item => item.Name.Equals(detail.NodeName, StringComparison.Ordinal)).SampleTagColor =
- detail.TaskStatus.Equals(DetailState.New) ? UColor.CheckedColor : detail.TaskStatus.Equals(DetailState.Doing)
- ? UColor.SentColor : UColor.MainColor;
- }
- }
- #endregion
- #region Event Methods
- private void SampleDetailReceived(List<SampleDetail> detailArgs)
- {
- try
- {
- foreach (SampleDetail detailArg in detailArgs)
- {
- SampleDetailControl detail = DetailControls.FirstOrDefault(item => item.Name.Equals(detailArg.NodeName));
- if (detail is null)
- {
- continue;
- }
- SampleDetail sample = _sampleService.GetSampleDetailByName(detailArg.NodeName);
- if (sample.TaskStatus.Equals(DetailState.Doing))
- {
- continue;
- }
- sample.AcidBaseProp = detailArg.AcidBaseProp;
- sample.DetailInfo = detailArg.DetailInfo;
- sample.SampleType = detailArg.SampleType;
- sample.TaskStatus = detailArg.TaskStatus;
- sample.SampleVolume = detailArg.SampleVolume;
- sample.SampleMultiple = detailArg.SampleMultiple;
- sample.QuicklyTitration = detailArg.QuicklyTitration;
- sample.IsCalibration = detailArg.IsCalibration;
- (string detailinfo, SolidColorBrush tagColor) = detailArg.TaskStatus switch
- {
- DetailState.Init => (string.Empty, UColor.MainColor),
- DetailState.New => (detailArg.DetailInfo, UColor.CheckedColor),
- _ => throw new ArgumentException("未找到对应的枚举状态定义")
- };
- DetailControls[detail.Index].SampleTagColor = tagColor;
- DetailControls[detail.Index].SampleDetailInfo = detailinfo;
- DetailControls[detail.Index].SampleResultColor = "#000000";
- _sampleService.UpdateSampleDetail(sample);
- }
- }
- catch (Exception ex)
- {
- _log.ErrorFormat(ex.ToString());
- }
- }
- private void UpdateSampleDetailReceived(List<object> objs)
- {
- List<SampleDetailControl> details = DetailControls.Where(item => objs.Contains(item.Name)).ToList();
- foreach (SampleDetailControl detail in details)
- {
- DetailControls[detail.Index].SampleTagColor = UColor.SentColor;
- DetailControls[detail.Index].SampleDetailInfo = detail.SampleDetailInfo;
- }
- }
- private void UpdateSampleDetailReceivedNull(List<EquipmentArea> objs)
- {
- EquipmentArea obj = objs[0];
- List<SampleDetailControl> details = DetailControls.Where(item => obj.PointName.Contains(item.Name)).ToList();
- foreach (SampleDetailControl detail in details)
- {
- if (obj.Enable == true)
- {
- DetailControls[detail.Index].SampleTagColor = UColor.MainColor;
- }
- else
- {
- DetailControls[detail.Index].SampleTagColor = UColor.SentColor;
- }
- DetailControls[detail.Index].SampleDetailInfo = "";
- }
- }
- private void UpdateTaskResult(TaskResultArgs arg)
- {
- if (arg is null)
- {
- return;
- }
- SampleDetailControl detail = DetailControls.FirstOrDefault(item => item.Name.Equals(arg.Name));
- if (detail is null)
- {
- return;
- }
- DetailControls[detail.Index].SampleVolume = arg.Amount;
- DetailControls[detail.Index].SampleResult = arg.Result;
- DetailControls[detail.Index].SampleResultColor = arg.ResultColor;
- }
- private void TaskFinishNotice(string arg)
- {
- if (arg is null)
- {
- return;
- }
- SampleDetailControl detail = DetailControls.FirstOrDefault(item => item.Name.Equals(arg));
- if (detail is null)
- {
- return;
- }
- DetailControls[detail.Index].SampleTagColor = UColor.MainColor;
- }
- private void AdjustResult(AdjustResultArgs arg)
- {
- List<EquipmentTask> tasks = _sampleService.GetSampleTaskByWaveKey(arg.Key, "Left");
- foreach (EquipmentTask task in tasks)
- {
- SampleDetailControl detail = DetailControls.Where(item => item.Name.Equals(task.Source)).FirstOrDefault();
- if (detail is null)
- {
- continue;
- }
- task.Result = CalculationResult.CalculateSample(task, arg.Value);
- _sampleService.UpdateResult(task);
- DetailControls[detail.Index].SampleResult = task.Result.ToString("F2");
- }
- }
- #endregion
- }
- }
|