You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
441 lines
14 KiB
C#
441 lines
14 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using Aucma.Core.SheetMetal.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using Admin.Core.IService;
|
|
using log4net;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Admin.Core.Model;
|
|
using Castle.Core.Internal;
|
|
using CommunityToolkit.Mvvm.Messaging;
|
|
using Aucma.Core.SheetMetal.Views;
|
|
using Aucma.Core.SheetMetal.Common;
|
|
using Admin.Core.Common;
|
|
using Admin.Core.Service;
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
namespace Aucma.Core.SheetMetal.ViewModels
|
|
{
|
|
public partial class CorrespondingModelPageViewModel : ObservableObject
|
|
{
|
|
#region 刷新创建计划
|
|
/// <summary>
|
|
/// 刷新创建计划
|
|
/// </summary>
|
|
public delegate void RefreshSetBomDataGrid();
|
|
public static event RefreshSetBomDataGrid RefreshSetBomDataGridEvent;
|
|
#endregion
|
|
|
|
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(SplitPlanViewModel));
|
|
protected readonly IProductPlanInfoServices? _productPlanInfoServices;
|
|
protected readonly IExecutePlanInfoServices? _executePlanInfoServices;
|
|
private readonly ISmSyncModelSubServices _smSyncModelSubServices;
|
|
private readonly IBaseMaterialInfoServices _baseMaterialInfoServices;
|
|
private readonly ISmSyncModelServices _smSyncModelServices;
|
|
private AppConfigHelper appConfig = new AppConfigHelper();//读取配置文件保存的查询内容
|
|
|
|
#region 构造函数
|
|
public CorrespondingModelPageViewModel() { }
|
|
|
|
public CorrespondingModelPageViewModel(string productId)
|
|
{
|
|
_productPlanInfoServices = App.ServiceProvider.GetService<IProductPlanInfoServices>();
|
|
_executePlanInfoServices = App.ServiceProvider.GetService<IExecutePlanInfoServices>();
|
|
_baseMaterialInfoServices = App.ServiceProvider.GetService<IBaseMaterialInfoServices>();
|
|
_smSyncModelServices = App.ServiceProvider.GetService<ISmSyncModelServices>();
|
|
Task.WaitAll(LoadData());
|
|
//加载快捷方式
|
|
SaveSearchCriteria();
|
|
//WeakReferenceMessenger.Default.Register<string>(this, SaveSearchCriteria);
|
|
_radioButtonStatus = 1;
|
|
ProductId = productId;
|
|
}
|
|
#endregion
|
|
|
|
#region 加载DataGrid数据
|
|
private async Task LoadData()
|
|
{
|
|
try
|
|
{
|
|
MaterialDataGrid.Clear();
|
|
int i = 1;
|
|
string station = Appsettings.app("StationInfo", "StationCode");
|
|
var materialList = _baseMaterialInfoServices.QueryAsync().Result;
|
|
|
|
var modelList = from d in materialList
|
|
select new
|
|
{
|
|
d.MaterialCode,
|
|
d.MaterialName,
|
|
d.MaterialSpecifications
|
|
};
|
|
if (modelList == null) return;
|
|
foreach (var item in modelList)
|
|
{
|
|
MaterialDataGrid.Add(new BaseMaterialInfoModel()
|
|
{
|
|
No = i,
|
|
MaterialCode = item.MaterialCode,
|
|
MaterialName = item.MaterialName,
|
|
MaterialSpecificatons = item.MaterialSpecifications
|
|
});
|
|
i++;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error($"初始化查询:{ex.Message}");
|
|
}
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
private async Task LoadData(string obj)
|
|
{
|
|
try
|
|
{
|
|
string station = Appsettings.app("StationInfo", "StationCode");
|
|
MaterialDataGrid.Clear();
|
|
int i = 1;
|
|
var materialList = _baseMaterialInfoServices.QueryAsync(d=>d.MaterialSpecifications.Contains(obj)).Result;
|
|
|
|
var modelList =( from d in materialList
|
|
select new BaseMaterialInfoModel
|
|
{
|
|
MaterialCode= d.MaterialCode,
|
|
MaterialName= d.MaterialName,
|
|
MaterialSpecificatons = d.MaterialSpecifications
|
|
}).ToList();
|
|
if (modelList == null) return;
|
|
foreach (var item in modelList)
|
|
{
|
|
MaterialDataGrid.Add(new BaseMaterialInfoModel()
|
|
{
|
|
No = i,
|
|
MaterialCode = item.MaterialCode,
|
|
MaterialName = item.MaterialName,
|
|
MaterialSpecificatons = item.MaterialSpecificatons
|
|
});
|
|
i++;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error($"根据搜索条件查询:{ex.Message}");
|
|
}
|
|
await Task.CompletedTask;
|
|
}
|
|
#endregion
|
|
|
|
#region 初始化datagrid
|
|
private ObservableCollection<BaseMaterialInfoModel> materialDataGrid = new ObservableCollection<BaseMaterialInfoModel>();
|
|
public ObservableCollection<BaseMaterialInfoModel> MaterialDataGrid
|
|
{
|
|
get => materialDataGrid;
|
|
set => SetProperty(ref materialDataGrid, value);
|
|
}
|
|
#endregion
|
|
|
|
#region 查询
|
|
/// <summary>
|
|
/// 查询
|
|
/// </summary>
|
|
[RelayCommand]
|
|
private async Task QueryPlan(string obj)
|
|
{
|
|
if (obj.IsNullOrEmpty())
|
|
{
|
|
System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
|
|
{
|
|
MaterialDataGrid.Clear();
|
|
await LoadData();
|
|
}));
|
|
return;
|
|
}
|
|
MaterialDataGrid.Clear();
|
|
await LoadData(obj);
|
|
}
|
|
#endregion
|
|
|
|
#region 绑定BOM
|
|
/// <summary>
|
|
/// 绑定BOM
|
|
/// </summary>
|
|
[RelayCommand]
|
|
private async void AddBom(string materialSpecificatons)
|
|
{
|
|
if (!materialSpecificatons.IsNullOrEmpty())
|
|
{
|
|
//添加BOM对应
|
|
var smSyncModel=_smSyncModelServices.FirstAsync(d=>d.ObjId==int.Parse(ProductId)).Result;
|
|
|
|
smSyncModel.MaterialSpecifications = materialSpecificatons;
|
|
var result = await _smSyncModelServices.UpdateAsync(smSyncModel);
|
|
if (result)
|
|
{
|
|
MessageBox.Show("设置成功!","系统提醒",MessageBoxButton.OK);
|
|
RefreshSetBomDataGridEvent?.Invoke();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 获取当前行数据 赋值到textbox
|
|
private ProductPlanInfoModel selectedCells;
|
|
public ProductPlanInfoModel SelectedCells
|
|
{
|
|
get { return selectedCells; }
|
|
set
|
|
{
|
|
selectedCells = value;
|
|
SetProperty(ref selectedCells, value);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 关闭当前窗口
|
|
/// <summary>
|
|
/// 关闭当前窗口
|
|
/// </summary>
|
|
public void CloseWindow()
|
|
{
|
|
WeakReferenceMessenger.Default.Send<object>("close");
|
|
}
|
|
#endregion
|
|
|
|
#region 参数定义
|
|
|
|
private string _productId = string.Empty;
|
|
public string ProductId
|
|
{
|
|
get => _productId;
|
|
set => SetProperty(ref _productId, value);
|
|
}
|
|
|
|
private string _search = string.Empty;
|
|
public string Search
|
|
{
|
|
get => _search;
|
|
set => SetProperty(ref _search, value);
|
|
}
|
|
/// <summary>
|
|
/// 下拉框
|
|
/// </summary>
|
|
public string _materialTypeCombox;
|
|
public string MaterialTypeCombox
|
|
{
|
|
get => _materialTypeCombox;
|
|
set => SetProperty(ref _materialTypeCombox, value);
|
|
}
|
|
|
|
#region 多选按钮
|
|
/// <summary>
|
|
/// 多选按钮
|
|
/// </summary>
|
|
public int _radioButtonStatus;
|
|
public int RadioButtonStatus
|
|
{
|
|
get => _radioButtonStatus;
|
|
set => SetProperty(ref _radioButtonStatus, value);
|
|
}
|
|
#endregion
|
|
|
|
private ObservableCollection<string> _configurations = new ObservableCollection<string>();
|
|
public ObservableCollection<string> Configurations
|
|
{
|
|
get => _configurations;
|
|
set => SetProperty(ref _configurations, value);
|
|
}
|
|
|
|
private ProductPlanInfoModel selectedDataItem;
|
|
public ProductPlanInfoModel SelectedDataItem
|
|
{
|
|
get => selectedDataItem;
|
|
set => SetProperty(ref selectedDataItem, value);
|
|
}
|
|
#endregion
|
|
|
|
#region 重置
|
|
/// <summary>
|
|
/// 重置
|
|
/// </summary>
|
|
[RelayCommand]
|
|
public async Task Reset()
|
|
{
|
|
Search = string.Empty;
|
|
MaterialTypeCombox = string.Empty;
|
|
await this.LoadData();
|
|
}
|
|
#endregion
|
|
|
|
#region 搜索条件设置
|
|
/// <summary>
|
|
/// 搜索条件设置
|
|
/// </summary>
|
|
[RelayCommand]
|
|
public async Task SearchCriteriaSet()
|
|
{
|
|
SearchCriteriaView searchCriteriaWindow = new SearchCriteriaView();
|
|
bool? dialogResult = searchCriteriaWindow.ShowDialog();
|
|
if (dialogResult == false) // 用户点击了“取消”按钮或关闭窗口
|
|
{
|
|
await LoadData();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 查询快捷查询方式
|
|
|
|
private void SaveSearchCriteria(object recipient, string message)
|
|
{
|
|
if (message == "RefreshSearchItems")
|
|
{
|
|
Configurations = new ObservableCollection<string>();
|
|
var searchItems = appConfig.searchItems;
|
|
var split = searchItems.Split('%');
|
|
|
|
foreach (var item in split)
|
|
{
|
|
if (!string.IsNullOrEmpty(item))
|
|
{
|
|
Configurations.Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
private void SaveSearchCriteria()
|
|
{
|
|
Configurations = new ObservableCollection<string>();
|
|
var searchItems = appConfig.searchItems;
|
|
var split = searchItems.Split('%');
|
|
|
|
foreach (var item in split)
|
|
{
|
|
if (!string.IsNullOrEmpty(item))
|
|
{
|
|
Configurations.Add(item);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 双击事件
|
|
public void MouseClick(object obj)
|
|
{
|
|
var info = SelectedDataItem as ProductPlanInfoModel;
|
|
if (info != null)
|
|
{
|
|
info.PlanType = _radioButtonStatus;
|
|
QuantityIssuedView quantityIssuedWindow = new QuantityIssuedView(info);
|
|
quantityIssuedWindow.ShowDialog();
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 鼠标双击事件
|
|
/// </summary>
|
|
[RelayCommand]
|
|
public void DoubleMouseClick()
|
|
{
|
|
MessageBox.Show("双击事件");
|
|
}
|
|
#endregion
|
|
|
|
#region 快捷查询
|
|
/// <summary>
|
|
/// 快捷查询
|
|
/// </summary>
|
|
/// <param name="selectedOption"></param>
|
|
/// <returns></returns>
|
|
[RelayCommand]
|
|
public async Task RadioButton(string selectedOption)
|
|
{
|
|
string productLineCode = Appsettings.app("StationInfo", "StationCode");
|
|
MaterialDataGrid.Clear();
|
|
if (!string.IsNullOrEmpty(selectedOption))
|
|
{
|
|
await LoadData(selectedOption);
|
|
}
|
|
else
|
|
{
|
|
await LoadData();
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 按钮
|
|
/// <summary>
|
|
/// 按钮
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RelayCommand]
|
|
public void UpdateRadioButtonStatus(string status)
|
|
{
|
|
if (status == "status1")
|
|
{
|
|
_radioButtonStatus = 1;
|
|
}
|
|
if (status == "status2")
|
|
{
|
|
_radioButtonStatus = 2;
|
|
}
|
|
if (status == "status3")
|
|
{
|
|
_radioButtonStatus = 3;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 获取最大值
|
|
/// <summary>
|
|
/// 获取最大值
|
|
/// </summary>
|
|
/// <param name="taskCode">MES编码</param>
|
|
/// <returns></returns>
|
|
public string GetMaxNum(string mesId)
|
|
{
|
|
try
|
|
{
|
|
List<int> tempList = new List<int>();
|
|
var list = _executePlanInfoServices.QueryAsync(d => d.TaskCode.Contains(mesId)).Result;
|
|
if (list.Count() == 0)
|
|
{
|
|
return mesId + "0001";
|
|
}
|
|
foreach (var item in list)
|
|
{
|
|
string code = item.TaskCode.Substring(item.TaskCode.Length - 4);
|
|
int num = Convert.ToInt32(code);
|
|
tempList.Add(num);
|
|
}
|
|
string maxStr = (tempList.Max() + 1).ToString();
|
|
string taskCode = maxStr.PadLeft(4, '0');
|
|
return taskCode;
|
|
}
|
|
catch
|
|
{
|
|
return mesId + "0001";
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
public class BaseMaterialInfoModel
|
|
{
|
|
public int No { get; set; }
|
|
public string MaterialCode { get; set; }
|
|
public string MaterialName { get; set; }
|
|
public string MaterialSpecificatons { get; set; }
|
|
}
|
|
}
|