|
|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
using CommunityToolkit.Mvvm.Messaging;
|
|
|
|
|
using GalaSoft.MvvmLight;
|
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Serilog;
|
|
|
|
|
using SlnMesnac.Common;
|
|
|
|
|
@ -15,6 +16,7 @@ using SlnMesnac.Rfid.Enum;
|
|
|
|
|
using SlnMesnac.Serilog;
|
|
|
|
|
using SlnMesnac.WPF.Attribute;
|
|
|
|
|
using SlnMesnac.WPF.Model;
|
|
|
|
|
using SlnMesnac.WPF.Page.IndexPage;
|
|
|
|
|
using SqlSugar;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
@ -36,7 +38,7 @@ using Task = System.Threading.Tasks.Task;
|
|
|
|
|
namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
[RegisterAsSingletonAttribute]
|
|
|
|
|
public class ProductionLineViewModel : ViewModelBase
|
|
|
|
|
public class ProductionLineViewModel : ObservableObject
|
|
|
|
|
{
|
|
|
|
|
private static StringChange _StringChange;
|
|
|
|
|
private String SerialNo = "";
|
|
|
|
|
@ -49,36 +51,51 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
|
|
|
|
|
#region 关联属性
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 历史遗留的达芬
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ObservableCollection<Real_DataInfo> _Deviceinfo = new ObservableCollection<Real_DataInfo>();
|
|
|
|
|
public ObservableCollection<Real_DataInfo> Deviceinfo
|
|
|
|
|
{
|
|
|
|
|
get { return _Deviceinfo; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_Deviceinfo = value;
|
|
|
|
|
RaisePropertyChanged(() => Deviceinfo);
|
|
|
|
|
if (_Deviceinfo != value)
|
|
|
|
|
{
|
|
|
|
|
SetProperty(ref _Deviceinfo, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 准备写入的列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ObservableCollection<real_readdata> _preparedWriteList = new ObservableCollection<real_readdata>();
|
|
|
|
|
public ObservableCollection<real_readdata> PreparedWriteList
|
|
|
|
|
{
|
|
|
|
|
get { return _preparedWriteList; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_preparedWriteList = value;
|
|
|
|
|
RaisePropertyChanged(() => PreparedWriteList);
|
|
|
|
|
if (_preparedWriteList != value)
|
|
|
|
|
{
|
|
|
|
|
SetProperty(ref _preparedWriteList, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 写入记录
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ObservableCollection<real_readdata> _tempRecordList = new ObservableCollection<real_readdata>();
|
|
|
|
|
public ObservableCollection<real_readdata> TempRecordList
|
|
|
|
|
{
|
|
|
|
|
get { return _tempRecordList; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_tempRecordList = value;
|
|
|
|
|
RaisePropertyChanged(() => TempRecordList);
|
|
|
|
|
if (_tempRecordList != value)
|
|
|
|
|
{
|
|
|
|
|
SetProperty(ref _tempRecordList, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -93,8 +110,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_currentDateTime != value)
|
|
|
|
|
{
|
|
|
|
|
_currentDateTime = value;
|
|
|
|
|
RaisePropertyChanged(() => CurrentDateTime);
|
|
|
|
|
SetProperty(ref _currentDateTime, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -110,8 +126,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_lastWriteState != value)
|
|
|
|
|
{
|
|
|
|
|
_lastWriteState = value;
|
|
|
|
|
RaisePropertyChanged(() => LastWriteState);
|
|
|
|
|
SetProperty(ref _lastWriteState, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -127,8 +142,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_rfidConnectState != value)
|
|
|
|
|
{
|
|
|
|
|
_rfidConnectState = value;
|
|
|
|
|
RaisePropertyChanged(() => RFIDConnectState);
|
|
|
|
|
SetProperty(ref _rfidConnectState, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -144,8 +158,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_orderNo != value)
|
|
|
|
|
{
|
|
|
|
|
_orderNo = value;
|
|
|
|
|
RaisePropertyChanged(() => OrderNo);
|
|
|
|
|
SetProperty(ref _orderNo, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -161,8 +174,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_lineNo != value)
|
|
|
|
|
{
|
|
|
|
|
_lineNo = value;
|
|
|
|
|
RaisePropertyChanged(() => LineNo);
|
|
|
|
|
SetProperty(ref _lineNo, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -178,8 +190,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_bindNo != value)
|
|
|
|
|
{
|
|
|
|
|
_bindNo = value;
|
|
|
|
|
RaisePropertyChanged(() => BindNo);
|
|
|
|
|
SetProperty(ref _bindNo, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -195,8 +206,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
{
|
|
|
|
|
if (_writeCount != value)
|
|
|
|
|
{
|
|
|
|
|
_writeCount = value;
|
|
|
|
|
RaisePropertyChanged(() => WriteCount);
|
|
|
|
|
SetProperty(ref _writeCount, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -258,9 +268,10 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(int i = 1; i <= count; i++)
|
|
|
|
|
{
|
|
|
|
|
string writeString = OrderNo + LineNo + DateTime.Now.ToString("yy") + BindNo + i.ToString("D2");
|
|
|
|
|
|
|
|
|
|
PreparedWriteList.Add(new real_readdata()
|
|
|
|
|
{
|
|
|
|
|
objid = Guid.NewGuid().ToString(),
|
|
|
|
|
@ -268,7 +279,8 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
lineno = LineNo,
|
|
|
|
|
bindno = BindNo,
|
|
|
|
|
serialno = i.ToString("D2"),
|
|
|
|
|
|
|
|
|
|
rfidascii = writeString,
|
|
|
|
|
writestatus = "等待"
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -279,7 +291,10 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void ListClear(object obj)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if(MessageBox.Show("确认", "确定要清除已生成的数据吗?(该操作不可还原)", MessageBoxButtons.OKCancel) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
PreparedWriteList.Clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -288,7 +303,10 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void HistoryClear(object obj)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (MessageBox.Show("确认", "确定要清除本次写入的数据吗?(可在查看历史中查询以往写入的标签)", MessageBoxButtons.OKCancel) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
TempRecordList.Clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -297,7 +315,8 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void HistoryPage(object obj)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
HistorySearch window = new HistorySearch();
|
|
|
|
|
window.Show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -310,12 +329,22 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 自动写入
|
|
|
|
|
/// 手动写入
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void RFIDWrite(object obj)
|
|
|
|
|
{
|
|
|
|
|
real_readdata? data;
|
|
|
|
|
if (obj is real_readdata)
|
|
|
|
|
{
|
|
|
|
|
data = obj as real_readdata;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//rfidList.FirstOrDefault(x => x.deviceid == iCombineId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -334,7 +363,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//读到停止连续盘点
|
|
|
|
|
//bool stopflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_StopIdentify();
|
|
|
|
|
bool stopflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_StopIdentify();
|
|
|
|
|
//查询数据库是否已存在记录
|
|
|
|
|
bool iflag = false;
|
|
|
|
|
string epcascii = Encoding.ASCII.GetString(tagInfos[0].EPC);
|
|
|
|
|
@ -433,17 +462,17 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
|
|
|
|
|
App.Current.Dispatcher.Invoke(() =>
|
|
|
|
|
{
|
|
|
|
|
RFIDHistoryRecords.Insert(0, new RFIDRecord
|
|
|
|
|
{
|
|
|
|
|
OrderNumber = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).OrderNo,
|
|
|
|
|
LineNumber = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).LineNo,
|
|
|
|
|
ProductType = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ProductType,
|
|
|
|
|
OriginalEPC = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidEPC,
|
|
|
|
|
RFIDCode = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidASCII,
|
|
|
|
|
ReadTime = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime,
|
|
|
|
|
WriteTime = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime,
|
|
|
|
|
WriteStatus = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteStatus // 模拟1条失败数据
|
|
|
|
|
});
|
|
|
|
|
//RFIDHistoryRecords.Insert(0, new RFIDRecord
|
|
|
|
|
//{
|
|
|
|
|
// OrderNumber = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).OrderNo,
|
|
|
|
|
// LineNumber = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).LineNo,
|
|
|
|
|
// ProductType = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ProductType,
|
|
|
|
|
// OriginalEPC = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidEPC,
|
|
|
|
|
// RFIDCode = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidASCII,
|
|
|
|
|
// ReadTime = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime,
|
|
|
|
|
// WriteTime = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime,
|
|
|
|
|
// WriteStatus = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteStatus // 模拟1条失败数据
|
|
|
|
|
//});
|
|
|
|
|
//RFIDHistoryRecords.OrderByDescending(x => x.ReadTime).ToList();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
@ -520,6 +549,10 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
await Reconnect(device);
|
|
|
|
|
RFIDConnectState = "已连接";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
RFIDConnectState = "已连接";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|