|
|
|
|
using Admin.Core.IService;
|
|
|
|
|
using Admin.Core.Model.Model_New;
|
|
|
|
|
using Admin.Core.Service;
|
|
|
|
|
using Aucma.Core.OldBoxFoam.Business;
|
|
|
|
|
using Aucma.Core.OldBoxFoam.Models;
|
|
|
|
|
using Aucma.Core.OldBoxFoam.Views;
|
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
using CommunityToolkit.Mvvm.Messaging;
|
|
|
|
|
using LiveCharts.Wpf;
|
|
|
|
|
using LiveCharts;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Timers;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using Admin.Core.Model;
|
|
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
|
using System.Windows.Documents;
|
|
|
|
|
using static Npgsql.Replication.PgOutput.Messages.RelationMessage;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
using log4net;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using Aucma.Core.HwPLc;
|
|
|
|
|
using Aucma.Core.PLc;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
|
|
|
|
namespace Aucma.Core.OldBoxFoam.ViewModels
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* 发泡计划
|
|
|
|
|
*
|
|
|
|
|
* */
|
|
|
|
|
public partial class RealRoadPageViewModel : ObservableObject
|
|
|
|
|
{
|
|
|
|
|
private readonly log4net.ILog log = LogManager.GetLogger(typeof(RealRoadPageViewModel));
|
|
|
|
|
protected readonly IBoxFoamPlanServices? _boxFoamPlanServices;
|
|
|
|
|
private IOldBoxFoamTypeServices? _oldBoxFoamTypeServices;
|
|
|
|
|
private IBoxFoamDataServices? _boxFoamDataServices;
|
|
|
|
|
System.Timers.Timer timer2 = new System.Timers.Timer(3000);
|
|
|
|
|
|
|
|
|
|
public RealRoadPageViewModel()
|
|
|
|
|
{
|
|
|
|
|
YAxisLabelFormatter = value => Math.Round(value, 2).ToString();
|
|
|
|
|
|
|
|
|
|
_boxFoamPlanServices = App.ServiceProvider.GetService<IBoxFoamPlanServices>();
|
|
|
|
|
_oldBoxFoamTypeServices = App.ServiceProvider.GetService<IOldBoxFoamTypeServices>();
|
|
|
|
|
_boxFoamDataServices = App.ServiceProvider.GetService<IBoxFoamDataServices>();
|
|
|
|
|
//InitData();
|
|
|
|
|
Collection.RefreshSpaceEvent += InitData;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 参数定义
|
|
|
|
|
private Func<double, string> _yAxisLabelFormatter;
|
|
|
|
|
public Func<double, string> YAxisLabelFormatter
|
|
|
|
|
{
|
|
|
|
|
get { return _yAxisLabelFormatter; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_yAxisLabelFormatter = value;
|
|
|
|
|
OnPropertyChanged(nameof(YAxisLabelFormatter));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 小时产量统计图表
|
|
|
|
|
/// </summary>
|
|
|
|
|
private SeriesCollection _hourAchievement = new SeriesCollection();
|
|
|
|
|
|
|
|
|
|
public SeriesCollection HourAchievement
|
|
|
|
|
{
|
|
|
|
|
get { return _hourAchievement; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_hourAchievement = value;
|
|
|
|
|
OnPropertyChanged(nameof(HourAchievement));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 小时产量统计图表X轴
|
|
|
|
|
/// </summary>
|
|
|
|
|
private List<string> _hourOutPutList;
|
|
|
|
|
|
|
|
|
|
public List<string> HourOutPutList
|
|
|
|
|
{
|
|
|
|
|
get { return _hourOutPutList; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_hourOutPutList = value;
|
|
|
|
|
OnPropertyChanged(nameof(HourOutPutList));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 型号统计图表
|
|
|
|
|
/// </summary>
|
|
|
|
|
private SeriesCollection _materialTypeAchievement = new SeriesCollection();
|
|
|
|
|
public SeriesCollection MaterialTypeAchievement
|
|
|
|
|
{
|
|
|
|
|
get { return _materialTypeAchievement; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_materialTypeAchievement = value;
|
|
|
|
|
OnPropertyChanged(nameof(MaterialTypeAchievement));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private List<string> _materialTypeOutPutList;
|
|
|
|
|
|
|
|
|
|
public List<string> MaterialTypeOutPutList
|
|
|
|
|
{
|
|
|
|
|
get { return _materialTypeOutPutList; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_materialTypeOutPutList = value;
|
|
|
|
|
OnPropertyChanged(nameof(MaterialTypeOutPutList));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 原货道信息刷新 Delete By wenjy 2024-01-13
|
|
|
|
|
//public async void InitData(object? sender, ElapsedEventArgs e)
|
|
|
|
|
//{
|
|
|
|
|
// List<OldBoxFoamType> list = await _oldBoxFoamTypeServices.QueryAsync();
|
|
|
|
|
|
|
|
|
|
// if(list != null)
|
|
|
|
|
// {
|
|
|
|
|
// if(list.Count > 0)
|
|
|
|
|
// {
|
|
|
|
|
// list = list.OrderBy(x=>x.ObjId).ToList();
|
|
|
|
|
// int totalItems = list.Count;
|
|
|
|
|
// int half = totalItems / 2;
|
|
|
|
|
|
|
|
|
|
// List<OldBoxFoamType> spaceInfoLeft = list.Take(half).ToList();
|
|
|
|
|
// List<OldBoxFoamType> spaceInfoRight = list.Skip(half).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// System.Windows.Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
|
|
|
// {
|
|
|
|
|
// ListItems.Clear();
|
|
|
|
|
// if (spaceInfoLeft == null) return;
|
|
|
|
|
// for (int i = 0; i < spaceInfoLeft.Count; i++)
|
|
|
|
|
// {
|
|
|
|
|
// if (i != 1)
|
|
|
|
|
// {
|
|
|
|
|
// spaceInfoLeft[i].Local = "";
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// ListItems.Add(new OldBoxFoamTypeModel()
|
|
|
|
|
// {
|
|
|
|
|
// SpaceName = $"{i + 1}#货道",
|
|
|
|
|
// Local = spaceInfoLeft[i].Local,
|
|
|
|
|
// Status = spaceInfoLeft[i].Storeamount == 3 ? "1" : "0",
|
|
|
|
|
// Storeamount = spaceInfoLeft[i].Storeamount > 3 ? 0 : spaceInfoLeft[i].Storeamount,
|
|
|
|
|
// MaterialCode = spaceInfoLeft[i].MaterialCode,
|
|
|
|
|
// MaterialName = spaceInfoLeft[i].MaterialName,
|
|
|
|
|
// Boxtype = spaceInfoLeft[i].Boxtype,
|
|
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// if (spaceInfoRight == null) return;
|
|
|
|
|
// for (int i = 0; i < spaceInfoRight.Count; i++)
|
|
|
|
|
// {
|
|
|
|
|
// if (i != 1)
|
|
|
|
|
// {
|
|
|
|
|
// spaceInfoRight[i].Local = "";
|
|
|
|
|
// }
|
|
|
|
|
// ListItems.Add(new OldBoxFoamTypeModel()
|
|
|
|
|
// {
|
|
|
|
|
// SpaceName = $"{i + 1}#货道",
|
|
|
|
|
// Local = spaceInfoRight[i].Local,
|
|
|
|
|
// Status = spaceInfoRight[i].Storeamount == 3 ? "1" : "0",
|
|
|
|
|
// Storeamount = spaceInfoRight[i].Storeamount > 3 ? 0 : spaceInfoRight[i].Storeamount,
|
|
|
|
|
// MaterialCode = spaceInfoRight[i].MaterialCode,
|
|
|
|
|
// MaterialName = spaceInfoRight[i].MaterialName,
|
|
|
|
|
// Boxtype = spaceInfoRight[i].Boxtype,
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// }));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 初始化datagrid
|
|
|
|
|
private ObservableCollection<OldBoxFoamTypeModel> listItems = new ObservableCollection<OldBoxFoamTypeModel>();
|
|
|
|
|
public ObservableCollection<OldBoxFoamTypeModel> ListItems
|
|
|
|
|
{
|
|
|
|
|
get { return listItems; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
listItems = value;
|
|
|
|
|
OnPropertyChanged();//属性通知
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新货道信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="spaceDetailModel"></param>
|
|
|
|
|
public async void InitData(List<SpaceDetailModel> spaceDetailModel, List<FixtureStatus> fixtureStatus)
|
|
|
|
|
{
|
|
|
|
|
if (spaceDetailModel == null) return;
|
|
|
|
|
var spaceList = _oldBoxFoamTypeServices.QueryAsync().Result;
|
|
|
|
|
List<OldBoxFoamType> storeList = new List<OldBoxFoamType>();
|
|
|
|
|
foreach (var item in spaceDetailModel)
|
|
|
|
|
{
|
|
|
|
|
var space = spaceList.FirstOrDefault(x=>x.ObjId == item.ObjId);
|
|
|
|
|
if(spaceList != null)
|
|
|
|
|
{
|
|
|
|
|
if(spaceDetailModel.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var spaceInfo = space;
|
|
|
|
|
spaceInfo.Storeamount = item.StoreAmount;
|
|
|
|
|
spaceInfo.Boxtype = item.StoreType;
|
|
|
|
|
storeList.Add(spaceInfo);
|
|
|
|
|
//_oldBoxFoamTypeServices.UpdateAsync(spaceInfo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (storeList!=null&&storeList.Count>0)
|
|
|
|
|
{
|
|
|
|
|
await _oldBoxFoamTypeServices.UpdateAsync(storeList);
|
|
|
|
|
}
|
|
|
|
|
RefreshSpaceInfoDataGrid(spaceDetailModel, fixtureStatus);
|
|
|
|
|
RefreshHourOutPutChart();
|
|
|
|
|
RefreshMaterialTypeChart();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void RefreshSpaceInfoDataGrid(List<SpaceDetailModel> spaceDetailModel, List<FixtureStatus> fixtureStatus)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (spaceDetailModel != null)
|
|
|
|
|
{
|
|
|
|
|
if (spaceDetailModel.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
spaceDetailModel = spaceDetailModel.OrderBy(x => x.ObjId).ToList();
|
|
|
|
|
int totalItems = spaceDetailModel.Count;
|
|
|
|
|
int half = totalItems / 2;
|
|
|
|
|
|
|
|
|
|
List<SpaceDetailModel> spaceInfoLeft = spaceDetailModel.Take(half).ToList();
|
|
|
|
|
List<SpaceDetailModel> spaceInfoRight = spaceDetailModel.Skip(half).ToList();
|
|
|
|
|
List<OldBoxFoamType> list = _oldBoxFoamTypeServices.QueryAsync().Result;
|
|
|
|
|
|
|
|
|
|
System.Windows.Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
|
|
|
{
|
|
|
|
|
ListItems.Clear();
|
|
|
|
|
if (spaceInfoLeft == null) return;
|
|
|
|
|
for (int i = 0; i < spaceInfoLeft.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
var spaceInfo = list.Where(x => x.ObjId == spaceInfoLeft[i].ObjId).ToList().First();
|
|
|
|
|
if (i != 1)
|
|
|
|
|
{
|
|
|
|
|
spaceInfo.Local = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var boxType = spaceInfo.Boxtype;
|
|
|
|
|
int fixtureAmount = fixtureStatus.Where(x => x.FixtureBoxType == boxType && x.Status != 3 && x.Status != 0).ToList().Count();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ListItems.Add(new OldBoxFoamTypeModel()
|
|
|
|
|
{
|
|
|
|
|
ObjId = spaceInfoLeft[i].ObjId,
|
|
|
|
|
SpaceName = $"{i + 1}#货道",
|
|
|
|
|
Local = spaceInfo.Local,
|
|
|
|
|
Status = spaceInfoLeft[i].StoreAmount == 3 ? "1" : "0",
|
|
|
|
|
Storeamount = spaceInfoLeft[i].StoreAmount > 3 ? 0 : spaceInfoLeft[i].StoreAmount,
|
|
|
|
|
MaterialCode = spaceInfo.MaterialCode,
|
|
|
|
|
MaterialName = spaceInfo.MaterialName,
|
|
|
|
|
Boxtype = spaceInfoLeft[i].StoreType,
|
|
|
|
|
QualityResult = fixtureAmount,
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (spaceInfoRight == null) return;
|
|
|
|
|
for (int i = 0; i < spaceInfoRight.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
var spaceInfo = list.Where(x => x.ObjId == spaceInfoRight[i].ObjId).ToList().First();
|
|
|
|
|
if (i != 1)
|
|
|
|
|
{
|
|
|
|
|
spaceInfo.Local = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var boxType = spaceInfo.Boxtype;
|
|
|
|
|
int fixtureAmount = fixtureStatus.Where(x => x.FixtureBoxType == boxType && x.Status != 3 && x.Status != 0).ToList().Count();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ListItems.Add(new OldBoxFoamTypeModel()
|
|
|
|
|
{
|
|
|
|
|
ObjId = spaceInfoRight[i].ObjId,
|
|
|
|
|
SpaceName = $"{i + 1}#货道",
|
|
|
|
|
Local = spaceInfo.Local,
|
|
|
|
|
Status = spaceInfoRight[i].StoreAmount == 3 ? "1" : "0",
|
|
|
|
|
Storeamount = spaceInfoRight[i].StoreAmount > 3 ? 0 : spaceInfoRight[i].StoreAmount,
|
|
|
|
|
MaterialCode = spaceInfo.MaterialCode,
|
|
|
|
|
MaterialName = spaceInfo.MaterialName,
|
|
|
|
|
Boxtype = spaceInfoRight[i].StoreType,
|
|
|
|
|
QualityResult = fixtureAmount,
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error($"货道信息列表刷新异常:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 小时统计图表
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void RefreshHourOutPutChart()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ChartValues<double> hourAchievement = new ChartValues<double>();
|
|
|
|
|
HourOutPutList = new List<string>();
|
|
|
|
|
App.Current.Dispatcher.BeginInvoke((Action)(() =>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
DateTime now = DateTime.Now;
|
|
|
|
|
|
|
|
|
|
// 判断当前是否是白班时间段
|
|
|
|
|
if (now.Hour >= 8 && now.Hour < 20)
|
|
|
|
|
{
|
|
|
|
|
HourOutPutList = new List<string>() { "8:00", "9:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00" };
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HourOutPutList = new List<string>() { "20:00", "21:00", "22:00", "23:00", "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "0:007" };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var hourFoamDataList = _boxFoamDataServices.Query(x => x.ProductLineCode == "CX_01" && x.StationCode == "1105");
|
|
|
|
|
|
|
|
|
|
List<int> hours = new List<int>();
|
|
|
|
|
|
|
|
|
|
if (hourFoamDataList != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.AnHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.TwoHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.ThreeHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.FourHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.FiveHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.SixHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.SevenHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.EightHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.NineHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.TenHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.ElevenHour));
|
|
|
|
|
hourAchievement.Add(hourFoamDataList.Sum(x => x.TwelveHour));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var shellColumn = new ColumnSeries();
|
|
|
|
|
shellColumn.DataLabels = true;
|
|
|
|
|
shellColumn.Title = "小时产量";
|
|
|
|
|
shellColumn.Values = hourAchievement;
|
|
|
|
|
shellColumn.Foreground = Brushes.White;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (HourAchievement.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < hourAchievement.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
//hours
|
|
|
|
|
HourAchievement.FirstOrDefault().Values[i] = hourAchievement.ElementAt(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HourAchievement.Add(shellColumn);
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error($"小时统计图表刷新异常:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 型号统计图表
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void RefreshMaterialTypeChart()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ChartValues<double> materialTypeAchievement = new ChartValues<double>();
|
|
|
|
|
MaterialTypeOutPutList = new List<string>();
|
|
|
|
|
App.Current.Dispatcher.BeginInvoke((Action)(() =>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
DateTime now = DateTime.Now;
|
|
|
|
|
|
|
|
|
|
var hourFoamDataList = _boxFoamDataServices.Query(x => x.ProductLineCode == "CX_01" && x.StationCode == "1105");
|
|
|
|
|
|
|
|
|
|
if (hourFoamDataList != null)
|
|
|
|
|
{
|
|
|
|
|
var grouped = hourFoamDataList.GroupBy(x => x.Fixtureboxtype);
|
|
|
|
|
foreach (var item in grouped)
|
|
|
|
|
{
|
|
|
|
|
var flattenedList = item.SelectMany(p => new[] { p.AnHour, p.TwoHour, p.ThreeHour, p.FourHour, p.FiveHour, p.SixHour, p.SevenHour, p.EightHour, p.NineHour, p.TenHour, p.ElevenHour, p.TwelveHour }).ToList();
|
|
|
|
|
|
|
|
|
|
MaterialTypeOutPutList.Add(item.Key);
|
|
|
|
|
materialTypeAchievement.Add(flattenedList.Sum());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var shellColumn = new ColumnSeries();
|
|
|
|
|
shellColumn.DataLabels = true;
|
|
|
|
|
shellColumn.Title = "型号统计";
|
|
|
|
|
shellColumn.Values = materialTypeAchievement;
|
|
|
|
|
shellColumn.Foreground = Brushes.White;
|
|
|
|
|
if (MaterialTypeAchievement.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < materialTypeAchievement.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
MaterialTypeAchievement.FirstOrDefault().Values[i] = materialTypeAchievement.ElementAt(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MaterialTypeAchievement.Add(shellColumn);
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error($"型号统计图表刷新异常:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private OldBoxFoamTypeModel selectedDataItem;
|
|
|
|
|
public OldBoxFoamTypeModel SelectedDataItem
|
|
|
|
|
{
|
|
|
|
|
get => selectedDataItem;
|
|
|
|
|
set => SetProperty(ref selectedDataItem, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置夹具箱型
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
public void BoxTypeClick(object obj)
|
|
|
|
|
{
|
|
|
|
|
var info = SelectedDataItem as OldBoxFoamTypeModel;
|
|
|
|
|
if (info != null)
|
|
|
|
|
{
|
|
|
|
|
SetBoxTypeView setBoxTypeView = new SetBoxTypeView(info.Boxtype);
|
|
|
|
|
setBoxTypeView.ShowDialog();
|
|
|
|
|
|
|
|
|
|
if(setBoxTypeView.boxTypeResult != info.Boxtype)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(setBoxTypeView.boxTypeResult))
|
|
|
|
|
{
|
|
|
|
|
HwPLc.PlcModel plc = null;
|
|
|
|
|
//下发给PLC
|
|
|
|
|
var address = GetSpaceBoxTypeAddress(Convert.ToInt32(info.ObjId));
|
|
|
|
|
if (info.ObjId <= 4)
|
|
|
|
|
{
|
|
|
|
|
plc = HwPLc.PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc1"));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
plc = HwPLc.PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc3"));
|
|
|
|
|
}
|
|
|
|
|
if(plc != null)
|
|
|
|
|
{
|
|
|
|
|
bool isFlag = plc.plc.WriteInt16(address, setBoxTypeView.boxTypeResult);
|
|
|
|
|
|
|
|
|
|
if (isFlag)
|
|
|
|
|
{
|
|
|
|
|
System.Windows.MessageBox.Show("货道型号设置成功");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
System.Windows.MessageBox.Show("货道型号设置失败");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string GetSpaceBoxTypeAddress(int spaceCode)
|
|
|
|
|
{
|
|
|
|
|
string address = string.Empty;
|
|
|
|
|
switch(spaceCode)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
address = "D2010";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
address = "D2020";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
address = "D2030";
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
address = "D2040";
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
address = "D2010";
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
address = "D2020";
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
address = "D2030";
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
address = "D2040";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return address;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置夹具箱型
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
public void MaterialCodeClick(object obj)
|
|
|
|
|
{
|
|
|
|
|
var info = SelectedDataItem as OldBoxFoamTypeModel;
|
|
|
|
|
if (info != null)
|
|
|
|
|
{
|
|
|
|
|
//SelectType selectType = new SelectType(info.ObjId.ToString(),info.Boxtype);
|
|
|
|
|
//selectType.ShowDialog();
|
|
|
|
|
|
|
|
|
|
SplitPlanView splitPlanView = new SplitPlanView("1", 1, info.Boxtype,info.ObjId.ToString());
|
|
|
|
|
splitPlanView.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|