@ -23,11 +23,15 @@ using System.Threading;
using Aucma.Core.HwPLc ;
using Admin.Core.Model.ViewModels ;
using System.Windows ;
using Admin.Core.Model.Model_New ;
using Admin.Core.IService.IService_New ;
using Aucma.Core.BoxFoam.Config ;
namespace Aucma.Core.BoxFoam.ViewModels
{
public partial class FoamMonitorPageViewModel : ObservableObject
{
private readonly IRecordBoxFoamFixtureComplateServices ? _boxFoamCompleteServices ;
private readonly IBaseBomInfoServices ? _baseBomInfoServices ;
private readonly IBoxFoamDataServices _boxFoamDataServices ;
private readonly ICurrentTeamTimeServices _currentTeamTimeServices ;
@ -37,12 +41,13 @@ namespace Aucma.Core.BoxFoam.ViewModels
private readonly IBoxFoamDataRecordServices _boxFoamDataRecordServices ;
private readonly IBoxFoamDataRealTimeServices ? _boxFoamDataRealTimeServices ;
private readonly IBoxFoamDataRealTimeHistoryServices _boxFoamDataRealTimeHistoryServices ;
System . Timers . Timer timer2 = new System . Timers . Timer ( 5000 ) ;
private AppConfig appConfig = AppConfig . Instance ;
int totalAmount = 0 ;
public FoamMonitorPageViewModel ( )
{
_boxFoamCompleteServices = App . ServiceProvider . GetService < IRecordBoxFoamFixtureComplateServices > ( ) ;
_boxFoamPlanServices = App . ServiceProvider . GetService < IBoxFoamPlanServices > ( ) ;
_boxFoamDataRealTimeServices = App . ServiceProvider . GetService < IBoxFoamDataRealTimeServices > ( ) ;
_boxFoamDataRecordServices = App . ServiceProvider . GetService < IBoxFoamDataRecordServices > ( ) ;
@ -59,8 +64,7 @@ namespace Aucma.Core.BoxFoam.ViewModels
{
while ( true )
{
Thread . Sleep ( 5000 ) ;
Thread . Sleep ( 10000 ) ;
InitEveryDayMethod ( ) ;
}
@ -74,44 +78,39 @@ namespace Aucma.Core.BoxFoam.ViewModels
/// 每日生产
/// </summary>
/// <returns></returns>
private Task InitEveryDayMethod ( )
private void InitEveryDayMethod ( )
{
try
{
Application . Current . Dispatcher . Invoke ( ( ) = >
{
List < string > xList = new List < string > ( ) ;
List < WorkTime > listTime = _baseBomInfoServices . getWorkTime ( ) . Result ;
foreach ( WorkTime time in listTime )
{
xList . Add ( time . hourTime ) ;
}
ProductionHourList = xList ;
// 货道列表
List < BoxFoamData > list = _boxFoamDataServices . QueryAsync ( x = > x . ProductLineCode . Equals ( "CX_02" ) & & x . StationCode = = "1005" ) . Result ;
List < RecordBoxFoamFixtureComplate > list = _boxFoamCompleteServices . getTeamData ( appConfig . ProductlineCode , appConfig . TeamName ) ;
if ( list ! = null )
Application . Current . Dispatcher . Invoke ( ( ) = >
{
ProductionHourList . Clear ( ) ;
Achievement . Clear ( ) ;
MaterialNameList . Clear ( ) ;
ModelStatistics . Clear ( ) ;
} ) ;
#region 按时间统计
list = list . OrderBy ( x = > x . RecordTime ) . ToList ( ) ;
var result = list . GroupBy ( x = > x . RecordTime . Hour )
. Select ( g = > new {
Hour = g . Key ,
Amount = g . Count ( )
} ) ;
Application . Current . Dispatcher . Invoke ( ( ) = >
{
ChartValues < double > achievement = new ChartValues < double > ( ) ;
//Achievement.Clear();
#region 按时间统计
if ( list . Count > 0 )
foreach ( var item in result )
{
achievement . Add ( list . Sum ( x = > x . AnHour ) ) ;
achievement . Add ( list . Sum ( x = > x . TwoHour ) ) ;
achievement . Add ( list . Sum ( x = > x . ThreeHour ) ) ;
achievement . Add ( list . Sum ( x = > x . FourHour ) ) ;
achievement . Add ( list . Sum ( x = > x . FiveHour ) ) ;
achievement . Add ( list . Sum ( x = > x . SixHour ) ) ;
achievement . Add ( list . Sum ( x = > x . SevenHour ) ) ;
achievement . Add ( list . Sum ( x = > x . EightHour ) ) ;
achievement . Add ( list . Sum ( x = > x . NineHour ) ) ;
achievement . Add ( list . Sum ( x = > x . TenHour ) ) ;
achievement . Add ( list . Sum ( x = > x . ElevenHour ) ) ;
achievement . Add ( list . Sum ( x = > x . TwelveHour ) ) ;
ProductionHourList . Add ( $"{item.Hour}:00" ) ;
achievement . Add ( item . Amount ) ;
}
var column = new ColumnSeries ( ) ;
@ -119,67 +118,44 @@ namespace Aucma.Core.BoxFoam.ViewModels
column . Title = "当日小时产量统计" ;
column . Values = achievement ;
column . Foreground = Brushes . White ;
// Achievement.Add(column);
if ( Achievement . Count > 0 )
{
for ( int i = 0 ; i < achievement . Count ; i + + )
{
Achievement . FirstOrDefault ( ) . Values [ i ] = achievement [ i ] ;
}
}
else
{
Achievement . Add ( column ) ;
}
# endregion
Achievement . Add ( column ) ;
# endregion
#region 按类型统计
MaterialNameList = new List < string > ( ) ;
ChartValues < int > achievement2 = new ChartValues < int > ( ) ;
//foreach(BoxFoamData space in list)
//{
// MaterialNameList.Add(space.Fixtureboxtype);
//}
var grouped = list . 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 ( ) ;
MaterialNameList . Add ( item . Key ) ;
achievement2 . Add ( flattenedList . Sum ( ) ) ;
}
// ModelStatistics.Clear();
var column2 = new ColumnSeries ( ) ;
column2 . DataLabels = true ;
column2 . Title = "当日型号产量统计" ;
column2 . Values = achievement2 ;
column2 . Foreground = Brushes . White ;
// ModelStatistics.Add(column2);
if ( ModelStatistics . Count > 0 )
{
for ( int i = 0 ; i < achievement2 . Count ; i + + )
{
ModelStatistics . FirstOrDefault ( ) . Values [ i ] = achievement2 [ i ] ;
}
}
else
{
ModelStatistics . Add ( column2 ) ;
}
#region 按类型统计
ChartValues < int > achievement2 = new ChartValues < int > ( ) ;
var grouped = list . GroupBy ( x = > x . FixtureBoxType )
. Select ( y = > new {
Type = y . Key ,
Amount = y . Count ( )
} ) ;
foreach ( var item in grouped )
{
MaterialNameList . Add ( item . Type ) ;
achievement2 . Add ( item . Amount ) ;
}
var column2 = new ColumnSeries ( ) ;
column2 . DataLabels = true ;
column2 . Title = "当日型号产量统计" ;
column2 . Values = achievement2 ;
column2 . Foreground = Brushes . White ;
ModelStatistics . Add ( column2 ) ;
# endregion
}
} ) ;
} ) ;
}
catch ( Exception ex )
{
Console . WriteLine ( ex . Message . ToString ( ) ) ;
}
return Task . CompletedTask ;
}
@ -189,7 +165,7 @@ namespace Aucma.Core.BoxFoam.ViewModels
/// <summary>
/// 日产量柱状图X轴日期
/// </summary>
private List < string > productionHourList ;
private List < string > productionHourList = new List < string > ( ) ;
public List < string > ProductionHourList
{
@ -205,7 +181,7 @@ namespace Aucma.Core.BoxFoam.ViewModels
/// <summary>
/// 型号统计柱状图x轴物料类型
/// </summary>
private List < string > materialNameList ;
private List < string > materialNameList = new List < string > ( ) ;
public List < string > MaterialNameList
{