123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using Mapster;
- using Prism.Commands;
- using Prism.Events;
- using ProjectManagementSystem.Common.Extenions;
- using ProjectManagementSystem.Common.Logger;
- using ProjectManagementSystem.Common.Models.Crms;
- using ProjectManagementSystem.Common.Service;
- using ProjectManagementSystem.Language;
- using ProjectManagementSystemView.Infrastructure.Events;
- using ProjectManagementSystemView.Infrastructure.Extensions;
- using ProjectManagementSystemView.Infrastructure.Models;
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace ProjectManagementSystemView.ViewModels
- {
- public class CurrentTaskViewModel
- {
- private ConcurrentDictionary<int, OperateInfo> operateInfoDict = new ConcurrentDictionary<int, OperateInfo>();
- public bool IsVisible { get; set; }
- public VmTaskData SelectedVmData { get; set; }
- public ObservableCollection<VmTaskData> VmDatas { get; set; } = new ObservableCollection<VmTaskData>();
- public ObservableCollection<VmStepData> StepVmDatas { get; set; } = new ObservableCollection<VmStepData>();
- public DelegateCommand<object> TaskCancelCommand { get; set; }
- public CurrentTaskViewModel(IEventAggregator eventAggregator)
- {
- TaskCancelCommand = new DelegateCommand<object>(arg =>
- {
- TaskOpreate(arg, Crms.PmsApi.TaskCancel);
- });
- eventAggregator.GetEvent<UpdateViewEvent>().Subscribe(UpdateView);
- }
- private void GetBehaviorRemark(VmStepData v)
- {
- if (operateInfoDict.TryGetValue(v.AgvBehavior, out var operateInfo1))
- {
- v.StepMoveName = $"{operateInfo1.Remark} {v.Param1}-{v.Param2}-{v.Param3}";
- return;
- }
- if (operateInfoDict.TryGetValue(v.PmsBehavior, out var operateInfo2))
- {
- v.StepMoveName = operateInfo2.Remark;
- return;
- }
- }
- private void UpdateView()
- {
- if (!IsVisible) return;
- var dataList = Crms.PmsApi.GetTaskDataList();
- if (dataList != null)
- {
- for (int i = 0; i < dataList.Count; i++)
- {
- var item = dataList[i];
- item.AllWarehouse = item.AllWarehouse.ToShortPosString();
- }
- if (operateInfoDict.Count == 0)
- {
- var operateList = Crms.PmsApi.GetOperateList(string.Empty);
- if (operateList != null)
- {
- foreach (var item in operateList)
- {
- operateInfoDict.AddOrUpdate(item.Code, item, (key, value) => item);
- }
- }
- }
- }
- VmDatas.Update(dataList, (s, v) => s.TaskID == v.TaskID,
- (data, vm) =>
- {
- var log1 = ProjectManagementSystem.Common.Core.TaskBehavior.GetTempLog(data.TaskID);
- var log2 = ProjectManagementSystem.Common.Core.AsyncBehavior.GetTempLog(data.TaskID);
- vm.Message = $"{log1}{log2}";
- });
- var selectedTask = SelectedVmData == null ? null : dataList?.FirstOrDefault(d => d.TaskID == SelectedVmData?.TaskID);
- StepVmDatas.Update(selectedTask?.StepList?.OrderBy(d => d.StepID), (s, v) => s.ID == v.ID,
- (data, vm) =>
- {
- GetBehaviorRemark(vm);
- });
- }
- private void TaskOpreate(object sender, Predicate<string> predicate)
- {
- string taskId = SelectedVmData?.TaskID;
- if (string.IsNullOrEmpty(taskId)) return;
- string allWarehouse = SelectedVmData.AllWarehouse;
- string text = $"{sender} {taskId}?({allWarehouse})";
- var dialogResult = MessageBox.Show(text, Langs.Prompt, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
- if (dialogResult != MessageBoxResult.OK)
- {
- return;
- }
- bool result = predicate(taskId);
- CLog.Instance.TaskLog.WriteInfo(Langs.CurrentTaskViewManualOperation, $"{taskId},{sender}{result.ToChineseString()}");
- }
- }
- }
|