@ -37,6 +37,7 @@ using System.Windows.Documents;
using Admin.Core.Common ;
using Aucma.Core.CodeBinding.Business ;
using Aucma.Core.Scanner ;
using LiveCharts.Defaults ;
/ *
* 首 页 信 息
* /
@ -70,26 +71,24 @@ namespace Aucma.Core.CodeBinding.ViewModels
_printBarCodeServices = App . ServiceProvider . GetService < IPrintBarCodeServices > ( ) ;
_iMaterialCompletionServices = App . ServiceProvider . GetService < IMaterialCompletionServices > ( ) ;
Business . MvCodeHelper . BindingReceiveCodeEvent + = ReceiveCode ;
GunBusiness . RefreshMaterialCodeStrEvent + = ReceiveCode ;
Business . MvCodeHelper . NoReadEvent + = ReceiveNoRead ;
LoadData ( ) ;
//实时绑定条码和实时下发plc放行信号
realBindingAndSendPlc ( ) ;
LoadCharts ( ) ;
//Task.Run(() =>
//{
// while (true)
// {
// Random result = new Random();
// Thread.Sleep(20000);
// receiveCode1("B24010181060282920"+ result.Next(100,999));
// Thread.Sleep(1000);
// receiveCode2("16160030000000910"+ result.Next(100, 999));
// }
// Thread.Sleep(4000);
// LoadCharts();
// Thread.Sleep(3000);
// LoadCharts();
//});
}
catch ( Exception ex )
@ -198,68 +197,80 @@ namespace Aucma.Core.CodeBinding.ViewModels
#region 加载DataGrid数据
private async void LoadData ( )
{
//try
//{
// ListItems.Clear();
// //// 赋值
// //Code1 = "B236000007811023002";
// //// Code1Time = "2023-10-23 16:05:23";
// //Code2 = "B236000007811023002";
// //// Code2Time = "2023-10-23 16:05:23";
// //BindingInfo = "条码[B236000007811023002]和SN条码[B236000007811023002]绑定成功!";
// LoadCharts();
try
{
// List<CodeBindingRecord> records = null;
// records = await _codeBindingRecordServices.QueryAsync(x => x.BoxCode != null, "RECORD_TIME2 desc");
// LoadCharts();
// if (records != null)
// {
// Application.Current.Dispatcher.Invoke(() =>
// {
// foreach (CodeBindingRecord record in records)
// {
// ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass == 2 ? "plc放行成功" : "待放行", RecordTime = record.RecordTime2.ToString() });
// }
// });
// }
//}
//catch (Exception)
//{
//}
List < CodeBindingRecord > records = null ;
records = _codeBindingRecordServices . QueryAsync ( x = > x . BoxCode ! = null & & x . RecordTime2 > = DateTime . Today & & x . RecordTime2 < DateTime . Today . AddDays ( 1 ) ) . Result ;
if ( records ! = null & & records . Count > 0 )
{
records = records . OrderBy ( x = > x . RecordTime2 ) . ToList ( ) ;
Application . Current . Dispatcher . Invoke ( ( ) = >
{
ListItems . Clear ( ) ;
foreach ( CodeBindingRecord record in records )
{
ListItems . Insert ( 0 , new ReaderInfo ( )
{
No = ListItems . Count + 1 ,
BoxCode = record . BoxCode ,
ProductCode = record . ProductCode ,
BoxName = record . BoxName ,
BindingResult = record . BindingResult ,
RecordTime = record . RecordTime2 . ToString ( )
} ) ;
}
} ) ;
}
}
catch ( Exception )
{
}
}
// 修改为统计近一天白班或夜班
private async void LoadCharts ( )
{
try
{
App . Current . Dispatcher . Invoke ( ( ) = >
List < CodeBindCharts > list = _codeBindingRecordServices . QueryCharts ( ) . Result ;
if ( list = = null | | list . Count = = 0 ) return ;
App . Current . Dispatcher . Invoke ( ( ) = >
{
ProductionHourList = new List < string > ( ) ;
// List<CodeBindCharts> list = _codeBindingRecordServices.QueryCharts().Result;
ProductionHourList . Clear ( ) ;
ModelStatistics . Clear ( ) ;
// 图表赋值
ChartValues < double > achievement = new ChartValues < double > ( ) ;
List < string > chartList = new List < string > ( ) ;
// if (list == null) return;
achievement . Add ( 74 ) ;
achievement . Add ( 78 ) ;
achievement . Add ( 69 ) ;
achievement . Add ( 43 ) ;
ProductionHourList . Add ( "SC-230,11W" ) ;
ProductionHourList . Add ( "SC-439, 箱体" ) ;
ProductionHourList . Add ( "SC-255,H" ) ;
ProductionHourList . Add ( "SC-317,箱体" ) ;
ChartValues < ObservablePoint > achievement = new ChartValues < ObservablePoint > ( ) ;
int i = 0 ;
double total = 0 ;
foreach ( var item in list )
{
ProductionHourList . Add ( GetSubstringBetweenCommas ( item . BoxName ) ) ;
// achievement.Add(item.Amount);
achievement . Add ( new ObservablePoint ( i , item . Amount ) ) ;
total + = item . Amount ;
i + + ;
}
//加一个汇总柱状图
ProductionHourList . Add ( "合计" ) ;
achievement . Add ( new ObservablePoint ( i , total ) ) ;
var column = new ColumnSeries ( ) ;
column . DataLabels = true ;
column . Title = "型号" ;
column . Values = achievement ;
column . Foreground = Brushes . White ;
ModelStatistics . Add ( column ) ;
ModelStatistics . Add ( column ) ;
} ) ;
}
catch ( Exception )
@ -267,22 +278,42 @@ namespace Aucma.Core.CodeBinding.ViewModels
throw ;
}
}
// 测试方法
private async void add ( )
{
//DateTime startTime = DateTime.Now;
//Thread.Sleep(5000);
//TimeSpan elapsedTime = DateTime.Now - startTime;
//Console.WriteLine(elapsedTime.TotalSeconds);
/// <summary>
/// 截取两个逗号之间的字符串
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
static string GetSubstringBetweenCommas ( string input )
{
if ( input = = null ) return null ;
// 找到第一个逗号的位置
int firstCommaIndex = input . IndexOf ( ',' ) ;
if ( firstCommaIndex ! = - 1 )
{
// 找到第二个逗号的位置
int secondCommaIndex = input . IndexOf ( ',' , firstCommaIndex + 1 ) ;
if ( secondCommaIndex ! = - 1 )
{
// 使用Substring截取第一个逗号和第二个逗号之间的字符
return input . Substring ( firstCommaIndex + 1 , secondCommaIndex - firstCommaIndex - 1 ) ;
}
else
{
return null ;
}
}
else
{
return null ;
}
}
# endregion
#region 参数定义
@ -359,7 +390,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
/// <summary>
/// 日产量柱状图X轴日期
/// </summary>
private List < string > productionHourList ;
private List < string > productionHourList = new List < string > ( ) ;
public List < string > ProductionHourList
{
@ -409,14 +440,20 @@ namespace Aucma.Core.CodeBinding.ViewModels
// 全局变量赋值
code1Str = string . Empty ;
code2Str = string . Empty ;
// 页面扫码信息清空
Code1 = code1Str ;
Code2 = code2Str ;
SendPlcStop ( ) ;
RefreshAndWriteLog ( "MES条码NoRead,线体停止" ) ;
}
else
else if ( model . Id = = 2 )
{
log. Info ( "MES 条码NoRead,线体停止") ;
RefreshAndWriteLog( "SN 条码NoRead,线体停止") ;
code1Str = string . Empty ;
code2Str = string . Empty ;
// 页面扫码信息清空
Code1 = code1Str ;
Code2 = code2Str ;
SendPlcStop ( ) ;
}
}
@ -429,8 +466,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
private void ReceiveCode ( string codeStr , string scannerIp )
{
Task . Run ( ( ) = >
{
ScannerModel model = allScanners . FirstOrDefault ( x = > x . Ip = = scannerIp ) ;
if ( model . Id = = 1 )
{
@ -446,8 +482,8 @@ namespace Aucma.Core.CodeBinding.ViewModels
// 全局变量赋值,mes条码扫描后使用
code2Str = codeStr ;
RefreshCode2 ( codeStr ) ;
}
} ) ;
# region
// 2.创建任务更新数据库条码1
@ -483,22 +519,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
DateTime time = System . DateTime . Now ;
Code2 = code2 ;
Code2Time = time . ToString ( ) ;
// Code2 = record.ProductCode;
//// Code2Time = record.RecordTime2.ToString();
// if (record.isPlcPass==2)
// {
// BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定成功,下发Plc放行成功";
// }
// else
// {
// BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】下发Plc放行失败";
// }
// Application.Current.Dispatcher.Invoke(() =>
// {
// // ReaderInfo readerToUpdate = (ReaderInfo)ListItems.Select(item => item.No == 2);
// ListItems.Add(new ReaderInfo() { No = ListItems.Count+1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName,BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass==2?"plc放行成功":"",RecordTime = record.RecordTime2.ToString() });
// });
}
@ -548,7 +569,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
}
record . BoxCode = code1 ;
record . ProductCode = code2 ;
record . RecordTime1 = System . DateTime . Now ;
//record.RecordTime1 = System.DateTime.Now ;
record . RecordTime2 = System . DateTime . Now ;
record . isPlcPass = 1 ;
record . BindingResult = "成功" ;
@ -581,6 +602,10 @@ namespace Aucma.Core.CodeBinding.ViewModels
# endregion
SendPlcPass ( ) ;
//刷新页面
LoadData ( ) ;
LoadCharts ( ) ;
}
else
{