using Admin.Core.IService; using Admin.Core.Service; using Aucma.Core.BoxFoam.Views; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; namespace Aucma.Core.BoxFoam.ViewModels { /** * 发泡计划 * * */ public partial class FoamPlanPageViewModel : ObservableObject { protected readonly IBoxFoamPlanServices? _boxFoamPlanServices; public FoamPlanPageViewModel() { _boxFoamPlanServices = App.ServiceProvider.GetService(); WeakReferenceMessenger.Default.Register(this, Recive); Task.Run(() => { while (true) { InitData(); Thread.Sleep(3000); } }); } public void InitData() { try { MaterialCode.Clear(); MaterialName.Clear(); PlanAmount.Clear(); ComplateAmount.Clear(); DifferenceAmount.Clear(); var task = _boxFoamPlanServices.QueryAsync(x => x.ProductLineCode == "CX_02" && x.StationCode == "1005" && x.ShiftType == 1).Result; if (task == null) return; task.OrderBy(d => d.ObjId); foreach (var item in task) { Id.Add(item.ObjId); MaterialCode.Add(item.MaterialCode); MaterialName.Add(item.MaterialName); PlanAmount.Add(item.PlanAmount); ComplateAmount.Add(item.CompleteAmount); DifferenceAmount.Add(item.PlanAmount - item.CompleteAmount); } }catch(Exception ex) { Console.WriteLine($"刷新计划列表异常:{ex.Message}"); } } #region MyRegion private ObservableCollection _id = new ObservableCollection(); public ObservableCollection Id { get => _id; set => SetProperty(ref _id, value); } private ObservableCollection _materialCode = new ObservableCollection(); public ObservableCollection MaterialCode { get => _materialCode; set => SetProperty(ref _materialCode, value); } private ObservableCollection _materialName = new ObservableCollection(); public ObservableCollection MaterialName { get => _materialName; set => SetProperty(ref _materialName, value); } private ObservableCollection _planAmount = new ObservableCollection(); public ObservableCollection PlanAmount { get => _planAmount; set => SetProperty(ref _planAmount, value); } private ObservableCollection _complateAmount = new ObservableCollection(); public ObservableCollection ComplateAmount { get => _complateAmount; set => SetProperty(ref _complateAmount, value); } //difference private ObservableCollection _differenceAmount = new ObservableCollection(); public ObservableCollection DifferenceAmount { get => _differenceAmount; set => SetProperty(ref _differenceAmount, value); } #endregion [RelayCommand] public void AddPlan(string objId) { SplitPlanView plan = new SplitPlanView(objId); plan.Show(); } [RelayCommand] public async void ClearPlan(string objId) { int id=int.Parse(objId); var obj=await _boxFoamPlanServices.FirstAsync(d=>d.ObjId== id); obj.MaterialCode = ""; obj.MaterialName = ""; obj.PlanAmount = 0; var result= await _boxFoamPlanServices.UpdateAsync(obj); if (result) { ClearData(); MessageBox.Show("清除计划成功!", "系统提醒"); } else { MessageBox.Show("清除计划失败!", "系统提醒"); } } private void Recive(object recipient, string message) { if (message == "RefreshTask") { ClearData(); } } public void ClearData() { Id.Clear(); MaterialCode.Clear(); MaterialName.Clear(); PlanAmount.Clear(); ComplateAmount.Clear(); DifferenceAmount.Clear(); } } }