using Cowain.Bake.BLL; using Cowain.Bake.Common; using Cowain.Bake.Common.Core; using Cowain.Bake.Common.Enums; using Cowain.Bake.Model; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Unity; using JSON = Newtonsoft.Json.JsonConvert; namespace Cowain.Bake.Main.ViewModels { public class AddBatteryViewModel : BindableBase { private EBatteryStatus selectedEnum; public EBatteryStatus SelectedEnum { get { return selectedEnum; } set { SetProperty(ref selectedEnum, value); } } public List Options { get; set; } private object selectedOption; public object SelectedOption { get { return selectedOption; } set { SetProperty(ref selectedOption, value); } } public string batteryCode; public string BatteryCode { get => batteryCode; set => SetProperty(ref batteryCode, value); } int _palletID = 0; int _palletVID = 0; private IUnityContainer _unityContainer; public AddBatteryViewModel(IUnityContainer unityContainer, int palletId, int VID) { _unityContainer = unityContainer; _palletID = palletId; _palletVID = VID; SelectedEnum = EBatteryStatus.ToPallet; SelectedPositionX = 1; SelectedPositionY = 2; Options = new List { "否", "是" }; SelectedOption = "否"; } public DelegateCommand AddCommand => new DelegateCommand((x) => { if (string.IsNullOrEmpty(BatteryCode)) { HandyControl.Controls.MessageBox.Warning("请输入电芯条码!"); return; } if (_unityContainer.Resolve().IsExistBattery(_palletVID, SelectedPositionX, SelectedPositionY)) { HandyControl.Controls.MessageBox.Warning("夹具位置存在电芯,此位置不能再增加电芯!"); return; } if (0 == _palletVID) { HandyControl.Controls.MessageBox.Warning("此夹具的虚拟ID为0,不能增加电芯!"); return; } TBatteryInfo batteryInfo = new TBatteryInfo() { PalletVirtualId = _palletVID, BatteryCode = BatteryCode, BatteryStatus = (sbyte)SelectedEnum, PositionX = (sbyte)SelectedPositionX, PositionY = (sbyte)SelectedPositionY, ScanTime = DateTime.Now, BindingTime = DateTime.Now, DummyFlag = (SelectedOption?.ToString() == "是") ? true : false }; if(0 == _unityContainer.Resolve().Insert(batteryInfo)) { LogHelper.Instance.Debug($"手动增加电芯:【{BatteryCode}】失败!", true); } else { LogHelper.Instance.Info($"手动增加电芯:【{BatteryCode}】成功!", true); _unityContainer.Resolve().AddLog($"手动增加电芯成功,{ JSON.SerializeObject(batteryInfo)}", E_LogType.Operate.ToString()); _unityContainer.Resolve().ModifyBatteryQty(_palletID); //数据减1 } }); public List> EnumOptions { get { var enumType = typeof(EBatteryStatus); var options = new List>(); foreach (var value in Enum.GetValues(enumType)) { var field = enumType.GetField(value.ToString()); var attributes = field.GetCustomAttributes(typeof(DescriptionAttribute), false); var description = ((DescriptionAttribute)attributes[0]).Description; options.Add(new KeyValuePair((EBatteryStatus)value, description)); } return options; } } private int selectedPositionY; public int SelectedPositionY { get { return selectedPositionY; } set { SetProperty(ref selectedPositionY, value); } } private int selectedPositionX; public int SelectedPositionX { get { return selectedPositionX; } set { SetProperty(ref selectedPositionX, value); } } public List PositionYRange { get { List numbers = new List(); for (int i = 1; i <= Global.PALLET_COLS; i++) { numbers.Add(i); } return numbers; } } public List PositionXRange { get { List numbers = new List(); for (int i = 1; i <= Global.PALLET_ROWS; i++) { numbers.Add(i); } return numbers; } } } }