using ivf_tl_Entity.DebugEntitys;
using ivf_tl_Operate.Converts;
using ivf_tl_Operate.ViewModel;
using ivf_tl_Operate.Windows;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ivf_tl_Operate.View
{
///
/// AutoFocusSettingView.xaml 的交互逻辑
///
public partial class AutoFocusSettingView : UserControl
{
private AutoFocusSettingViewModel vm = null;
public AutoFocusSettingView(AutoFocusSettingViewModel _vm)
{
InitializeComponent();
vm = _vm;
this.DataContext = vm;
}
private void Return_Click(object sender, RoutedEventArgs e)
{
SettingPageView settingPageView = new SettingPageView();
AppData.Instance.MainWindow.LoadPage(settingPageView);
}
private void SettCheck_Click(object sender, RoutedEventArgs e)
{
string newValueString = this._newValue_TextBox.Text.Trim();
if (string.IsNullOrEmpty(newValueString))
{
//new MessagePrompt().ShowCenterOwnerDefeat(AppData.Instance.MainWindow, "请输入数字");
new MessagePrompt().ShowCenterOwnerDefeat(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("C0259"));
return;
}
// M8-G3-1:批量校验/赋值对焦设置命令入口埋点。
using var _op = Aivfo.OperationLog.OperationLogger.Begin("对焦设置", "批量校验对焦设置");
_op.Input(new
{
输入值 = newValueString,
应用对焦次数 = this._newAutoFocus_CheckBox.IsChecked == true,
应用更新对焦起点 = this._updateFocusNumber_CheckBox.IsChecked == true,
应用更新拍照位置 = this._updateClearestNumber_CheckBox.IsChecked == true,
舱室总数 = vm?.HouseInfoList?.Count ?? 0
});
try
{
if (int.TryParse(newValueString, out int newValue))
{
foreach (var item in vm.HouseInfoList)
{
if (this._newAutoFocus_CheckBox.IsChecked == true) item.NewAutoFocusNumber = newValue;
if (this._updateFocusNumber_CheckBox.IsChecked == true)
item.NewUpdateFocusNumber = newValue;
if (this._updateClearestNumber_CheckBox.IsChecked == true)
item.NewUpdateClearestNumber = newValue;
}
if (this._newAutoFocus_CheckBox.IsChecked == true)
this._newAutoFocus_CheckBox.IsChecked = false;
if (this._updateFocusNumber_CheckBox.IsChecked == true)
this._updateFocusNumber_CheckBox.IsChecked = false;
if (this._updateClearestNumber_CheckBox.IsChecked == true)
this._updateClearestNumber_CheckBox.IsChecked = false;
_op.Success();
}
else
{
//new MessagePrompt().ShowCenterOwnerDefeat(AppData.Instance.MainWindow, "请输入正确的数字");
new MessagePrompt().ShowCenterOwnerDefeat(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("C0259"));
_op.Fail("输入值非法,无法解析为整数:" + newValueString);
return;
}
}
catch (Exception ex)
{
_op.Fail(ex.GetType().Name + ": " + ex.Message);
throw;
}
}
private void SaveHouse_Click(object sender, RoutedEventArgs e)
{
// M8-G3-1:保存对焦设置命令入口埋点。
using var _op = Aivfo.OperationLog.OperationLogger.Begin("对焦设置", "保存对焦设置");
_op.Input(new { 舱室总数 = vm?.HouseInfoList?.Count ?? 0 });
try
{
bool isUp = false;
bool isUpHouse = false;
List upList = new List();
foreach (var item in vm.HouseInfoList)
{
isUpHouse = false;
if(item.autoFocus != item.autoFocusNew)
{
item.autoFocus = item.autoFocusNew;
isUpHouse = true;
}
if (item.NewPhotographPictureNumber.HasValue && item.NewPhotographPictureNumber >=0 && item.NewPhotographPictureNumber != item.photographPictureNumber)
{
item.photographPictureNumber = item.NewPhotographPictureNumber.Value;
item.autoFocus = 1;
isUpHouse = true;
}
if (item.NewAutoFocusNumber.HasValue && item.NewAutoFocusNumber >= 0 && item.NewAutoFocusNumber != item.autoFocusNumber)
{
item.autoFocusNumber = item.NewAutoFocusNumber.Value;
item.autoFocus = 1;
isUpHouse = true;
}
if (item.NewUpdateFocusNumber.HasValue && item.NewUpdateFocusNumber >= 0 && item.NewUpdateFocusNumber != item.updateFocusNumber)
{
item.updateFocusNumber = item.NewUpdateFocusNumber.Value;
item.autoFocus = 1;
isUpHouse = true;
}
if (item.NewUpdateClearestNumber.HasValue && item.NewUpdateClearestNumber >= 0 && item.NewUpdateClearestNumber != item.updateClearestNumber)
{
item.updateClearestNumber = item.NewUpdateClearestNumber.Value;
item.autoFocus = 1;
isUpHouse = true;
}
if (item.updateFocusNumber > item.autoFocusNumber)
{
_op.Fail($"{item.houseSn}号舱室校验失败:更新对焦起点不能大于对焦次数");
MessageBox.Show($"{item.houseSn}号舱室抠图成功数-更新对焦起点不能大于对焦次数");
return;
}
if (item.updateClearestNumber > item.autoFocusNumber)
{
_op.Fail($"{item.houseSn}号舱室校验失败:更新拍照位置不能大于对焦次数");
MessageBox.Show($"{item.houseSn}号舱室抠图成功数-更新拍照位置不能大于对焦次数");
return;
}
AutoFocusHouseInfoRequest autoFocusHouseInfoRequest = null;
if (isUpHouse)
{
autoFocusHouseInfoRequest = new AutoFocusHouseInfoRequest
{
photographPictureNumber = item.photographPictureNumber,
autoFocusNumber = item.autoFocusNumber,
updateFocusNumber = item.updateFocusNumber,
updateClearestNumber = item.updateClearestNumber,
autoFocus = item.autoFocus,
tlSn=item.tlSn,
houseSn=item.houseSn,
};
upList.Add(autoFocusHouseInfoRequest);
}
if(item.wellFocusSetting != null && item.wellFocusSetting.Any())
{
List wellList = new List();
foreach (var itemWell in item.wellFocusSetting)
{
isUp = false;
if (itemWell.NewFocusStartingPoint.HasValue && itemWell.NewFocusStartingPoint >= 0 && itemWell.NewFocusStartingPoint != itemWell.focusStartingPoint)
{
itemWell.focusStartingPoint = itemWell.NewFocusStartingPoint.Value;
isUp = true;
}
if (itemWell.NewMoveDownLayer.HasValue && itemWell.NewMoveDownLayer >= 0 && itemWell.NewMoveDownLayer != itemWell.moveDownLayer)
{
itemWell.moveDownLayer = itemWell.NewMoveDownLayer.Value;
isUp = true;
}
if (itemWell.NewLeftOffset.HasValue && itemWell.NewLeftOffset >= 0 && itemWell.NewLeftOffset != itemWell.leftOffset)
{
itemWell.leftOffset = itemWell.NewLeftOffset.Value;
isUp = true;
}
if (itemWell.NewBottomOffset.HasValue && itemWell.NewBottomOffset >= 0 && itemWell.NewBottomOffset != itemWell.bottomOffset)
{
itemWell.bottomOffset = itemWell.NewBottomOffset.Value;
isUp = true;
}
if (isUp)
{
wellList.Add(itemWell);
}
}
if (wellList.Any())
{
if(autoFocusHouseInfoRequest == null)
{
autoFocusHouseInfoRequest = new AutoFocusHouseInfoRequest
{
photographPictureNumber = item.photographPictureNumber,
autoFocusNumber = item.autoFocusNumber,
updateFocusNumber = item.updateFocusNumber,
updateClearestNumber = item.updateClearestNumber,
autoFocus = item.autoFocus,
tlSn = item.tlSn,
houseSn = item.houseSn,
};
upList.Add(autoFocusHouseInfoRequest);
}
autoFocusHouseInfoRequest.wellFocusSetting = wellList;
}
}
}
if (AppData.Instance.HttpHelper.HouseImmediatelyAPi(upList))
{
//new MessagePrompt().ShowCenterOwnerSuccess(AppData.Instance.MainWindow, "保存成功");
new MessagePrompt().ShowCenterOwnerSuccess(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("C0242"));
_op.Success();
}
else
{
//new MessagePrompt().ShowCenterOwnerDefeat(AppData.Instance.MainWindow, "保存失败");
new MessagePrompt().ShowCenterOwnerDefeat(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("C0243"));
_op.Fail("后端下发保存失败:HouseImmediatelyAPi 返回 false");
}
}
catch (Exception ex)
{
_op.Fail(ex.GetType().Name + ": " + ex.Message);
throw;
}
}
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !Regex.IsMatch(e.Text, @"[0-9]");
}
}
}