using Admin.Core.Common; using Admin.Core.IService; using Admin.Core.Model; using Admin.Core.Service; using Aucma.Core.SheetMetal.Models; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using log4net; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace Aucma.Core.SheetMetal.ViewModels { public partial class QuantityIssuedViewModel : ObservableObject { private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(QuantityIssuedViewModel)); private IBaseBomInfoServices _bomInfoServices; private IBaseSpaceDetailServices _spaceDetailServices; protected readonly IExecutePlanInfoServices? _executePlanInfoServices; #region 构造函数 public QuantityIssuedViewModel(ProductPlanInfoModel productPlanInfo) { _bomInfoServices = App.ServiceProvider.GetService(); _spaceDetailServices = App.ServiceProvider.GetService(); _executePlanInfoServices = App.ServiceProvider.GetService(); PlanInfo = productPlanInfo; } #endregion #region 属性 private ProductPlanInfoModel _PlanInfo = new ProductPlanInfoModel(); public ProductPlanInfoModel PlanInfo { get => _PlanInfo; set => SetProperty(ref _PlanInfo, value); } private string _TransmitAmount = string.Empty; public string TransmitAmount { get => _TransmitAmount; set => SetProperty(ref _TransmitAmount, value); } #endregion #region 下传计划 /// /// 下传计划 /// [RelayCommand] private async Task PlanInfoTransmit() { var productPlanInfo = _PlanInfo; if (productPlanInfo != null) { //下传到PLC string stationCode = Appsettings.app("StoreInfo", "StationCode"); var list = await _executePlanInfoServices.QueryAsync(d => d.ProductLineCode.Equals(stationCode)); ExecutePlanInfo task = new ExecutePlanInfo(); task.ExecutePlanCode = Guid.NewGuid().ToString(); task.ProductPlanCode = PlanInfo.PlanCode; task.OrderCode = PlanInfo.OrderCode; task.MaterialCode = PlanInfo.MaterialCode; task.MaterialName = PlanInfo.MaterialName; task.ProductLineCode = "1001";//计划工位 if (list.Count == 0) task.ExecuteOrder = 1; if (list.Count != 0) task.ExecuteOrder = list.Max(d => d.ExecuteOrder) + 1; task.ExecuteMethod = 1;//不做要求,系统自动确定 task.ExecuteStatus = 1; task.PlanAmount = PlanInfo.SpliteResidueAmount; task.CompleteAmount = PlanInfo.CompleteAmount; task.CreatedTime = DateTime.Now; task.PlanType= productPlanInfo.PlanType; var result = await _executePlanInfoServices.AddAsync(task); if (result > 0) { MessageBox.Show("计划拆分成功!", "系统提醒"); WeakReferenceMessenger.Default.Send("Refresh");//刷新窗口 } else { MessageBox.Show("计划拆分失败,请检查后重试!", "系统提醒"); } //拆分计划到任务表中 //bool result = PlanTransmitByProductPlan(_PlanInfo.PlanCode, Convert.ToInt32(_TransmitAmount)); //if (result) //{ // MessageBox.Show("执行计划维护成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); //} } else { MessageBox.Show("生产计划获取失败,加载为空", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); return; } } #endregion #region 清除 /// /// 清除 /// [RelayCommand] private void ClearTransmitAmount() { string amount = _TransmitAmount.ToString(); if (amount.Length > 0) { TransmitAmount = amount.Substring(0, amount.Length - 1); } } #endregion #region KeypadButton [RelayCommand] private void KeypadButton(object obj) { var info = obj as string; TransmitAmount += info; } #endregion #region 关闭 /// /// 关闭 /// /// [RelayCommand] private void CloseWindow(object parameter) { var window = parameter as Window; if (window != null) { window.Close(); } } #endregion } }