Files
6098/Cowain.Bake.Main/ViewModels/MoistureValueViewMode.cs

157 lines
6.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Cowain.Bake.BLL;
using Cowain.Bake.Common.Core;
using Cowain.Bake.Common.Enums;
using Cowain.Bake.Model;
using Cowain.Bake.Model.Models;
using Newtonsoft.Json;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using Unity;
namespace Cowain.Bake.Main.ViewModels
{
internal class MoistureValueViewMode: BindableBase//, Prism.Services.Dialogs.IDialogAware
{
private readonly IUnityContainer _unityContainer;
private float? septumwaterJudge;
private float? cathodewaterJudge;
private float? anodewaterJudge ;
//public string WaterValueModel;
List<WaterModel> waterModels = null;
public CavityDtlViewModel thatParent = null;
//public string Title => "输入水含量值";
//// 弹窗打开时触发:读取传递的参数
//public void OnDialogOpened(IDialogParameters parameters)
//{
// thatParent = parameters.GetValue<CavityDtlViewModel>("this");
// WaterValueModel = thatParent.WaterValueModel ?? "";
//}
//// 允许关闭弹窗返回true即可
//public bool CanCloseDialog() => true;
//// 弹窗关闭后清理资源(可选)
//public void OnDialogClosed() { }
//// Prism 8中用于触发弹窗关闭的事件
//public event Action<IDialogResult> RequestClose;
//public DelegateCommand CloseCommand =>
// new DelegateCommand(() =>
// RequestClose?.Invoke(new DialogResult(ButtonResult.OK)));
public MoistureValueViewMode(IUnityContainer unityContainer)
{
_unityContainer = unityContainer;
}
public float? SeptumWaterJudge //隔离膜水分
{
get => septumwaterJudge;
set => SetProperty(ref septumwaterJudge, value);
}
public float? AnodeWaterJudge //正极水分
{
get => anodewaterJudge;
set => SetProperty(ref anodewaterJudge, value);
}
public float? CathodeWaterJudge //负极水分
{
get => cathodewaterJudge;
set => SetProperty(ref cathodewaterJudge, value);
}
public DelegateCommand<object> Judge => new DelegateCommand<object>((x) =>
{
int septumwaterTargetValue = int.Parse(_unityContainer.Resolve<SysSetupService>().GetValueByParaID(ESysSetup.SeptumwaterTargetJudge.ToString()));
int cathodewaterTargetValue = int.Parse(_unityContainer.Resolve<SysSetupService>().GetValueByParaID(ESysSetup.CathodewaterTargetJudge.ToString()));
int anodewaterTargetValue = int.Parse(_unityContainer.Resolve<SysSetupService>().GetValueByParaID(ESysSetup.AnodewaterTargetJudge.ToString()));
//MessageBoxResult result = HandyControl.Controls.MessageBox.Ask($@"是否确定为手动输入的水含量值?", "操作提示");
//if (result == System.Windows.MessageBoxResult.Cancel)
//{
// return;
//}
LogHelper.Instance.Warn($"开始测水含量0!");
if (!septumwaterJudge.HasValue
|| !anodewaterJudge.HasValue
|| !cathodewaterJudge.HasValue
)
{
HandyControl.Controls.MessageBox.Warning("数值为空, 请人工输入!");
return;
}
var WaterModel = new WaterModel();
WaterModel.AnodeWaterValue = anodewaterJudge.ToString();
WaterModel.CathodeWaterValue = cathodewaterJudge.ToString();
WaterModel.SeptumWaterValue = septumwaterJudge.ToString();
int palletStatus = (int)EPalletStatus.TestOK;
if (septumwaterJudge >= septumwaterTargetValue
|| cathodewaterJudge >= cathodewaterTargetValue
|| anodewaterJudge >= anodewaterTargetValue)
{
palletStatus = (int)EPalletStatus.TestNG;
MessageBoxResult judgeResult = HandyControl.Controls.MessageBox.Ask($@"本次判定水含量值为NG,请确认!", "判定提示");
if (judgeResult == System.Windows.MessageBoxResult.Cancel)
{
return;
}
}
//WaterValueModel,在这个界面点【判定】,会刷新这个值。也就是这个判断结果会累加,但在【工站明细】中不会
waterModels = JsonConvert.DeserializeObject<List<WaterModel>>(thatParent.WaterValueModel??""); //WaterValueModel:数据库中的水含量数据
WaterModel.BatteryCode = GetBatteryCode(waterModels);
if (null == waterModels)
{
waterModels = new List<WaterModel>();
}
else
{
WaterModel.Id = waterModels.Max(w => w.Id) + 1;
}
waterModels.Add(WaterModel);
thatParent.MoistureRuturn(palletStatus, JsonConvert.SerializeObject(waterModels));
HandyControl.Controls.MessageBox.Info("设置测试水含量成功");
});
string GetBatteryCode(List<WaterModel> waterList)
{
var dummys = _unityContainer.Resolve<BatteryInfoService>().GetWaterBatteryCode(thatParent.VirtualId);
if (0 == dummys.Count)
{
return "";
}
if (waterList == null
|| 0 == waterList.Count)
{
return dummys[0].BatteryCode;
}
List<string> dummyCodes = dummys.Select(x => x.BatteryCode).ToList();
List<string> waterCodes = waterList.Select(x => x.BatteryCode).ToList();
// 查找 list1 中不在 list2 中的字符串 var notInList2 = list1.Except(list2);
var batteryCode = dummyCodes.Except(waterCodes);
if (0 ==batteryCode.Count())
{
return waterList.OrderByDescending(x => x.Id).FirstOrDefault().BatteryCode;//最后一次的假电芯码
}
return batteryCode.First();
}
}
}