166 lines
5.3 KiB
C#
166 lines
5.3 KiB
C#
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<object> 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<object> { "否", "是" };
|
||
SelectedOption = "否";
|
||
}
|
||
|
||
public DelegateCommand<object> AddCommand => new DelegateCommand<object>((x) =>
|
||
{
|
||
if (string.IsNullOrEmpty(BatteryCode))
|
||
{
|
||
HandyControl.Controls.MessageBox.Warning("请输入电芯条码!");
|
||
return;
|
||
}
|
||
|
||
if (_unityContainer.Resolve<BatteryInfoService>().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<BatteryInfoService>().Insert(batteryInfo))
|
||
{
|
||
LogHelper.Instance.Debug($"手动增加电芯:【{BatteryCode}】失败!", true);
|
||
}
|
||
else
|
||
{
|
||
LogHelper.Instance.Info($"手动增加电芯:【{BatteryCode}】成功!", true);
|
||
_unityContainer.Resolve<LogService>().AddLog($"手动增加电芯成功,{ JSON.SerializeObject(batteryInfo)}", E_LogType.Operate.ToString());
|
||
_unityContainer.Resolve<PalletInfoService>().ModifyBatteryQty(_palletID); //数据减1
|
||
}
|
||
});
|
||
|
||
public List<KeyValuePair<EBatteryStatus, string>> EnumOptions
|
||
{
|
||
get
|
||
{
|
||
var enumType = typeof(EBatteryStatus);
|
||
var options = new List<KeyValuePair<EBatteryStatus, string>>();
|
||
|
||
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, string>((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<int> PositionYRange
|
||
{
|
||
get
|
||
{
|
||
List<int> numbers = new List<int>();
|
||
for (int i = 1; i <= Global.PALLET_COLS; i++)
|
||
{
|
||
numbers.Add(i);
|
||
}
|
||
return numbers;
|
||
}
|
||
}
|
||
|
||
public List<int> PositionXRange
|
||
{
|
||
get
|
||
{
|
||
List<int> numbers = new List<int>();
|
||
for (int i = 1; i <= Global.PALLET_ROWS; i++)
|
||
{
|
||
numbers.Add(i);
|
||
}
|
||
return numbers;
|
||
}
|
||
}
|
||
}
|
||
}
|