change-成品下线完善流程

dev
liuwf 1 year ago
parent 01711a373c
commit 015f9fcc82

@ -24,7 +24,7 @@ using System.Threading.Tasks;
namespace Aucma.Core.ProductOffLine.Business
{
/// <summary>
/// 入库业务逻辑
/// 成品下线业务逻辑
/// </summary>
public class OffLineBusiness
{
@ -93,35 +93,13 @@ namespace Aucma.Core.ProductOffLine.Business
public async void test()
{
string tt = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000000807@BCD-160C,家电下乡@@BCD-160C@皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01";
string[] FArrayList = tt.Split('@');
if (FArrayList[0].ToUpper() == "Y") //查询数据成功
// string tt = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000004899@BCD-160C,家电下乡@@BCD-160C@皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01";
Task.Run(() =>
{
#region 实体赋值
TempOffLineInfo1.ProductFactoryCode = FArrayList[1];
TempOffLineInfo1.ProductSNCode = FArrayList[2];
TempOffLineInfo1.ProductOrderNo = DBToString(FArrayList[3]);
TempOffLineInfo1.ProductSaleNo = DBToString(FArrayList[4]);
TempOffLineInfo1.ProductSaleLineNo = DBToString(FArrayList[5]);
TempOffLineInfo1.ProductCheckInfo = DBToString(FArrayList[6]); //验证组合
TempOffLineInfo1.ProductCode = DBToString(FArrayList[7]);
TempOffLineInfo1.ProductName = DBToString(FArrayList[8]); //产品描述
TempOffLineInfo1.ProductType = FArrayList[9];
TempOffLineInfo1.ProductModel = FArrayList[10]; //产品型号
TempOffLineInfo1.ProductRemark = DBToString(FArrayList[11]);
TempOffLineInfo1.ProductBarNo = FArrayList[12];
TempOffLineInfo1.ProductMasterModel = FArrayList[13]; //产品主型号
TempOffLineInfo1.ProductVersion = FArrayList[14];
TempOffLineInfo1.ProductUseInfo = FArrayList[15];//产品用途
TempOffLineInfo1.ProductCirculate = FArrayList[16];//流通特性
TempOffLineInfo1.ProductCreateDate = FArrayList[17];
#endregion
TempOffLineInfo1.ProductScanTime = System.DateTime.Now;
TempOffLineInfo1.number1 = "111";
// OffLineInfo info11 = MapperTwo(TempOffLineInfo);
// int a = await _offLineInfoServices.AddAsync(info11);
// Console.WriteLine(a);
}
Thread.Sleep(5000);
MaterialBarScanEvent("32160030000000910780", "192.168.1.19");
// MaterialBarScanEvent("33160030000000910780", "192.168.1.20");
});
}
/// <summary>
/// 处理条码
@ -129,30 +107,50 @@ namespace Aucma.Core.ProductOffLine.Business
/// <param name="code"></param>
/// <param name="direction">扫码器方向</param>
public async void MaterialBarScanEvent(string code,string scannerIp)//接收条码数据
{
Task.Run(async () =>
{
int ScannerNo = scannerIp == Appsettings.app("Middleware", "Scanner1", "Ip") ? 1 : 2; // 确定是哪个扫码器
string materialType = "";
bool BackResult = false;
if (ScannerNo == 1)
{
//1.扫描的SN条码去条码系统校验
BackResult = await HandleMaterialBarCode(code.Trim(), TempOffLineInfo1); //扫码器1
materialType = TempOffLineInfo1.ProductCode;
if (!BackResult)
{
return;
}
// 2.更新mes数据库
await updateMesData(TempOffLineInfo1);
BackResult = await updateMesData(TempOffLineInfo1);
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty));
}
else
{
BackResult = await HandleMaterialBarCode(code.Trim(), TempOffLineInfo2); //扫码器2
materialType = TempOffLineInfo2.ProductCode;
if (!BackResult)
{
return;
}
// 2.更新mes数据库
await updateMesData(TempOffLineInfo1);
BackResult = await updateMesData(TempOffLineInfo2);
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo2.ProductOrderNo, TempOffLineInfo2.OrderQty));
}
if (BackResult == true)
{
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty));
// 先查询分垛方向A或者B
string direction = getDirectioneEvent?.Invoke(TempOffLineInfo1.ProductCode);
DownLoadPassFlag(ScannerNo,direction); //下发plc放行信号,分垛AB库
string direction = getDirectioneEvent?.Invoke(materialType);
bool plcResult = DownLoadPassFlag(ScannerNo, direction); //下发plc放行信号,分垛AB库
if (plcResult == false)
{
sendPlcError();
}
log.Info("plc放行反馈成功");
}
});
}
/// <summary>
@ -164,7 +162,6 @@ namespace Aucma.Core.ProductOffLine.Business
{
try
{
// TempOffLineInfo.ProductRefreshFlag = true;
OffLineInfo info11 = MapperTwo(TempOffLineInfo);
// 添加成品下线表
await _offLineInfoServices.AddAsync(info11);
@ -172,8 +169,8 @@ namespace Aucma.Core.ProductOffLine.Business
////6.更新mes 数据库完成数量和时间(BASE_ORDERINFO,PRODUCT_PLANINFO) 注意:查询的字段可能需要修改,确保数据一致
////6.1截取订单号去查询更新BASE_ORDERINFO,全放到service处理
//string orderCode = "11215484";
//List<BaseOrderInfo> orders = await _baseOrderInfoServices.QueryAsync(x => x.OrderCode == orderCode);
List<BaseOrderInfo> orders = await _baseOrderInfoServices.QueryAsync(x => x.OrderCode == TempOffLineInfo.ProductOrderNo);
//BaseOrderInfo order = orders.FirstOrDefault();
//if (order.CompleteAmount == 0)
//{
@ -220,34 +217,34 @@ namespace Aucma.Core.ProductOffLine.Business
{
try
{
TempOffLineInfo.ProductSNCode = BarCode.Trim(); //SN码
TempOffLineInfo.ProductScanTime = System.DateTime.Now;
Thread.Sleep(10000);
TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1
TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2
TempOffLineInfo.ProductOrderNo = "";
log.Info("条码验证开始:" + BarCode);
//1.查询条码系统
string result = await _productOffLineServices.QueryChecked(BarCode);
// string result = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000000807@BCD-160C,家电下乡@@BCD-160C@皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01";
// string result = await _productOffLineServices.QueryChecked(BarCode);
string result = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000004899@BCD-160C,家电下乡@@BCD-160C@test皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01";
//查询到的数据分割处理,结果中用"@"号分隔,刷新页面显示
string[] FArrayList = result.Split('@');
if (FArrayList[0].ToUpper() == "Y") //查询数据成功
{
log.Info(BarCode + "成功返回验证信息:" + result);
#region 实体赋值
TempOffLineInfo.MsgInfo = "获取信息成功" + BarCode + " 返回值:" + FArrayList[0].ToUpper();
TempOffLineInfo.MsgInfo = "获取信息成功" + BarCode + " 返回值:" + FArrayList[0].ToUpper(); // 提示信息*7
TempOffLineInfo.ProductFactoryCode = FArrayList[1];
TempOffLineInfo.ProductSNCode = FArrayList[2];
TempOffLineInfo.ProductOrderNo = DBToString(FArrayList[3]).Replace("0000", "");
TempOffLineInfo.ProductOrderNo = DBToString(FArrayList[3]).Replace("0000", ""); // 订单编号*4
TempOffLineInfo.ProductSaleNo = DBToString(FArrayList[4]);
TempOffLineInfo.ProductSaleLineNo = DBToString(FArrayList[5]);
TempOffLineInfo.ProductCheckInfo = DBToString(FArrayList[6]); //验证组合
TempOffLineInfo.ProductCode = DBToString(FArrayList[7]).Replace("00000000", "");
TempOffLineInfo.ProductName = DBToString(FArrayList[8]); //产品描述
TempOffLineInfo.ProductType = FArrayList[9];
TempOffLineInfo.ProductModel = FArrayList[10]; //产品型号
TempOffLineInfo.ProductModel = FArrayList[10]; //产品型号*3
TempOffLineInfo.ProductRemark = DBToString(FArrayList[11]);
TempOffLineInfo.ProductBarNo = FArrayList[12];
TempOffLineInfo.ProductMasterModel = FArrayList[13]; //产品主型号
@ -256,7 +253,8 @@ namespace Aucma.Core.ProductOffLine.Business
TempOffLineInfo.ProductCirculate = FArrayList[16];//流通特性
TempOffLineInfo.ProductCreateDate = FArrayList[17];
#endregion
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
// 多码系统校验,是否需要待定,现场看情况
// bool flag = TestBarCode(TempOffLineInfo);
// if (!flag)
@ -268,8 +266,8 @@ namespace Aucma.Core.ProductOffLine.Business
else
{
log.Info(BarCode + "失败返回验证信息:" + FArrayList[1]);
#region 实体赋值
// TempOffLineInfo.ProductDataFlag = true;
TempOffLineInfo.MsgAlarmFlag = true;
TempOffLineInfo.MsgInfo = "获取信息失败. " + BarCode + " 返回值:" + FArrayList[0].ToString();
TempOffLineInfo.ProductOrderNo = "";
@ -293,6 +291,8 @@ namespace Aucma.Core.ProductOffLine.Business
TempOffLineInfo.sim = "";
TempOffLineInfo.number1 = "";
#endregion
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
return false;
}
// mes查询订单数据, 异常处理后期可能根据SN码查箱体码查订单号并检查更新订单数据
@ -300,18 +300,21 @@ namespace Aucma.Core.ProductOffLine.Business
//2.上传条码系统
if (!string.IsNullOrEmpty(TempOffLineInfo.ProductOrderNo))
{
string strSave = await _productOffLineServices.SaveBarcodeInfo(BarCode.Trim(), "ILS_SORT", TempOffLineInfo.ProductOrderNo, 1);
// string strSave = await _productOffLineServices.SaveBarcodeInfo(BarCode.Trim(), "ILS_SORT", TempOffLineInfo.ProductOrderNo, 1);
string strSave = "Y";
if (!string.IsNullOrEmpty(strSave))
{
if (strSave == "Y")
{
log.Info(BarCode + "上传条码成功:" + strSave);
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码成功" + strSave;
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码成功";
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
if (order != null)
{
TempOffLineInfo.OrderQty = order.OrderAmount;
TempOffLineInfo.ActQty = order.CompleteAmount;
TempOffLineInfo.OrderQty = order.OrderAmount; // 订单数量*5
TempOffLineInfo.ActQty = order.CompleteAmount; // 订单已上传*6
}
return true;
}
@ -319,40 +322,53 @@ namespace Aucma.Core.ProductOffLine.Business
{
log.Info(BarCode + "上传条码失败:" + strSave);
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码失败" + strSave;
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
if (strSave.Contains("条码重复"))
{
// 查询本地数据库是否有数据
OffLineInfo offLineInfo = await _offLineInfoServices.FirstAsync(x => x.ProductSNCode == BarCode);
if (offLineInfo != null)
{
log.Info(BarCode + "条码重复,本地已存在");
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码失败" + strSave + "上传日期:" + DBToString(offLineInfo.ProductScanTime);
// chkout:条码重复是否允许放行
if (TempOffLineInfo.ChkOut == true)
{
log.Info(BarCode + "条码重复,本地已存在,放行");
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "条码重复,本地已存在,放行";
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
return true;
}
// chkout:条码重复是否允许放行
//if (TempOffLineInfo.ChkOut == true)
//{
// return true;
//}
}
else
{
log.Info(BarCode + "条码重复,本地不存在,已上传中");
log.Info(BarCode + "条码重复,本地不存在,已插入,放行");
OffLineInfo info11 = MapperTwo(TempOffLineInfo);
await _offLineInfoServices.AddAsync(info11);
return true;
}
}
TempOffLineInfo.MsgAlarmFlag = false;
return false;
}
}
else
{
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",条码系统保存接口异常";
TempOffLineInfo.MsgAlarmFlag = true;
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
return false;
}
}
else
{
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",生产单号异常";
TempOffLineInfo.MsgAlarmFlag = true;
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
return false;
}
}
@ -360,14 +376,11 @@ namespace Aucma.Core.ProductOffLine.Business
{
TempOffLineInfo.MsgInfo = "获取产品条码异常:" + ex.Message;
TempOffLineInfo.MsgAlarmFlag = true;
//界面刷新
TempOffLineInfo.ProductRefreshFlag = true;
log.Info(BarCode + "条码验证异常:" + ex.Message.ToString());
return false;
}
finally
{
TempOffLineInfo.ProductRefreshFlag = true;
}
}
#region plc交互
@ -402,7 +415,7 @@ namespace Aucma.Core.ProductOffLine.Business
// 往plc写入放行信号
obj.plc.WriteInt32("D202", 1);
}
DateTime targetTime = DateTime.Now.AddSeconds(8);
DateTime targetTime = DateTime.Now.AddSeconds(60);
// 等待plc反馈信号
while (true)
{

@ -95,14 +95,7 @@ namespace Aucma.Core.ProductOffLine.Models
/// 刷新标志定时器检测true刷新
/// </summary>
public bool ProductRefreshFlag { get; set; }
/// <summary>
/// 朗读标志1放行扫码成功2保存条码失败3条码验证失败
/// </summary>
public int ReadFlag { get; set; }
/// <summary>
/// 刷新页面信息标志
/// </summary>
public bool ProductDataFlag { get; set; }
/// <summary>
/// 界面提示信息
/// </summary>
@ -119,11 +112,14 @@ namespace Aucma.Core.ProductOffLine.Models
/// 已生产数量
/// </summary>
public int ActQty { get; set; }
#region 多码验证属性
public string oneCode { get; set; }
public string serialNumber { get; set; }
public string rfid { get; set; }
public string sim { get; set; }
public string number1 { get; set; }
#endregion
/// <summary>
/// 扫码重复是否允许放行,界面加选择栏
/// </summary>

@ -34,6 +34,7 @@ using NPOI.HSSF.Record;
using System.Windows;
using System.Collections.ObjectModel;
using Aucma.Core.ProductOffLine.Models;
using System.Globalization;
/*
@ -49,59 +50,125 @@ namespace Aucma.Core.ProductOffLine.ViewModels
// 成品下线操作mes数据
private readonly IOffLineInfoServices? _offLineInfoServices = App.ServiceProvider.GetService<IOffLineInfoServices>();
System.Timers.Timer timer = new System.Timers.Timer(1000 * 1);//界面刷新定时器
private OffLineBusiness offLineBusiness = OffLineBusiness.Instance;
int a = 0;
public IndexPageViewModel()
{
offLineBusiness.test();
_offLineInfoServices = App.ServiceProvider.GetService<IOffLineInfoServices>();
// test33();
InitEveryDayMethod();
// 刷新界面信息
RefreshPageListen();
}
#region 参数定义
#region 扫描信息
#region 物料条码
private string _stationName;
public string StationName
#region 产品条码
private string _productSNCode;
public string ProductSNCode
{
get { return _productSNCode; }
set
{
_productSNCode = value;
OnPropertyChanged(nameof(ProductSNCode));
}
}
#endregion
#region 扫描时间
private string _productScanTime;
public string ProductScanTime
{
get { return _productScanTime; }
set
{
_productScanTime = value;
OnPropertyChanged(nameof(ProductScanTime));
}
}
#endregion
#region 产品型号
private string _productModel;
public string ProductModel
{
get { return _stationName; }
get { return _productModel; }
set
{
_stationName = value;
SetProperty(ref _stationName, value);
_productModel = value;
OnPropertyChanged(nameof(ProductModel));
}
}
#endregion
#region 物料名称
private string _materialName;
public string MaterialName
#region 订单编号
private string _productOrderNo;
public string ProductOrderNo
{
get { return _productOrderNo; }
set
{
_productOrderNo = value;
OnPropertyChanged(nameof(ProductOrderNo));
}
}
#endregion
#region 订单数量
private string _orderQty;
public string OrderQty
{
get { return _orderQty; }
set
{
_orderQty = value;
OnPropertyChanged(nameof(OrderQty));
}
}
#endregion
#region 订单已上传
private string _actQty;
public string ActQty
{
get { return _materialName; }
get { return _actQty; }
set
{
_materialName = value;
SetProperty(ref _materialName, value);
_actQty = value;
OnPropertyChanged(nameof(ActQty));
}
}
#endregion
#region 订单信息
private string _orderNo;
public string OrderNo
#region 界面提示信息
private string _msgInfo;
public string MsgInfo
{
get { return _msgInfo; }
set
{
_msgInfo = value;
OnPropertyChanged(nameof(MsgInfo));
}
}
private Brush _msgColor;
public Brush MsgColor
{
get { return _orderNo; }
get { return _msgColor; }
set
{
_orderNo = value;
SetProperty(ref _orderNo, value);
_msgColor = value;
OnPropertyChanged(nameof(MsgColor));
}
}
#endregion
#region 开始时间
private string _beginTime;
public string BeginTime
@ -110,42 +177,135 @@ namespace Aucma.Core.ProductOffLine.ViewModels
set
{
_beginTime = value;
SetProperty(ref _beginTime, value);
OnPropertyChanged(nameof(BeginTime));
}
}
#endregion
#endregion
private void LoadProduct()
#region 日产量柱状图
/// <summary>
/// 日产量柱状图
/// </summary>
private SeriesCollection achievement = new SeriesCollection();
public SeriesCollection Achievement
{
ChartValues<double> achievement = new ChartValues<double>();
get { return achievement; }
set { achievement = value; }
}
App.Current.Dispatcher.BeginInvoke((Action)(() =>
#endregion
#region 型号统计柱状图
/// <summary>
/// 型号统计柱状图
/// </summary>
private SeriesCollection modelStatistics = new SeriesCollection();
public SeriesCollection ModelStatistics
{
Achievement.Clear();
for (int i = 0; i < 5; i++)
get { return modelStatistics; }
set { modelStatistics = value; }
}
#endregion
#region 日产量柱状图X轴日期
/// <summary>
/// 日产量柱状图X轴日期
/// </summary>
private List<string> productionHourList;
public List<string> ProductionHourList
{
ProductionHourList.Add(i.ToString());
achievement.Add(1 + i * 10);
get { return productionHourList; }
set { productionHourList = value; }
}
#endregion
var column = new ColumnSeries();
column.DataLabels = true;
column.Title = "泡后库";
column.Values = achievement;
#region 型号统计柱状图X轴日期
/// <summary>
/// 型号统计柱状图X轴日期
/// </summary>
private List<string> materialNameList;
Achievement.Add(column);
ModelStatistics.Add(column);
}));
public List<string> MaterialNameList
{
get { return materialNameList; }
set { materialNameList = value; }
}
#endregion
#region 初始化datagrid
private ObservableCollection<TempInfo> listItems = new ObservableCollection<TempInfo>() { };
public ObservableCollection<TempInfo> ListItems
{
get { return listItems; }
set
{
listItems = value;
OnPropertyChanged();//属性通知
}
}
#endregion
#endregion
#region 界面刷新定时器
public void RefreshPageListen()
{
timer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshPage);
timer.AutoReset = true;
timer.Enabled = true;
timer.Start();
}
/// <summary>
/// 定时检测两个扫码实体是否需要刷新
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
public void RefreshPage(object source, System.Timers.ElapsedEventArgs e)
{
if (OffLineBusiness.TempOffLineInfo1.ProductRefreshFlag == true)
{
ModelToPage(OffLineBusiness.TempOffLineInfo1);
OffLineBusiness.TempOffLineInfo1.ProductRefreshFlag = false;
}
else if(OffLineBusiness.TempOffLineInfo2.ProductRefreshFlag == true)
{
ModelToPage(OffLineBusiness.TempOffLineInfo2);
OffLineBusiness.TempOffLineInfo2.ProductRefreshFlag = false;
}
}
public void ModelToPage(TempInfo tempInfo)
{
App.Current.Dispatcher.Invoke(() =>
{
ProductSNCode = tempInfo.ProductSNCode;
ProductScanTime = tempInfo.ProductScanTime.ToString();
ProductModel = tempInfo.ProductModel;
ProductOrderNo = tempInfo.ProductOrderNo;
OrderQty = tempInfo.OrderQty.ToString();
ActQty = tempInfo.ActQty.ToString();
MsgInfo = tempInfo.MsgInfo;
if (tempInfo.MsgAlarmFlag==null || tempInfo.MsgAlarmFlag==false)
{
MsgColor = Brushes.White;
}
else
{
MsgColor = Brushes.Red;
}
tempInfo.MsgAlarmFlag = false;
});
}
#endregion
private void InitEveryDayMethod()
{
LoadData();
StationName = "成品下线扫描";
MaterialName = "SC-AUCMA-农夫山泉SC 门体";
OrderNo = "8512365486";
BeginTime = DateTime.Now.ToString("yyyy-mm-dd HH:mm:ss");
ChartValues<double> achievement = new ChartValues<double>();
Random random = new Random();
@ -209,75 +369,6 @@ namespace Aucma.Core.ProductOffLine.ViewModels
}
}
#region 初始化datagrid
private ObservableCollection<TempInfo> listItems = new ObservableCollection<TempInfo>() { };
public ObservableCollection<TempInfo> ListItems
{
get { return listItems; }
set
{
listItems = value;
OnPropertyChanged();//属性通知
}
}
#endregion
#region 日产量柱状图
/// <summary>
/// 日产量柱状图
/// </summary>
private SeriesCollection achievement = new SeriesCollection();
public SeriesCollection Achievement
{
get { return achievement; }
set { achievement = value; }
}
#endregion
#region 型号统计柱状图
/// <summary>
/// 型号统计柱状图
/// </summary>
private SeriesCollection modelStatistics = new SeriesCollection();
public SeriesCollection ModelStatistics
{
get { return modelStatistics; }
set { modelStatistics = value; }
}
#endregion
#region 日产量柱状图X轴日期
/// <summary>
/// 日产量柱状图X轴日期
/// </summary>
private List<string> productionHourList;
public List<string> ProductionHourList
{
get { return productionHourList; }
set { productionHourList = value; }
}
#endregion
#region 型号统计柱状图X轴日期
/// <summary>
/// 型号统计柱状图X轴日期
/// </summary>
private List<string> materialNameList;
public List<string> MaterialNameList
{
get { return materialNameList; }
set { materialNameList = value; }
}
#endregion
}

@ -163,48 +163,50 @@
<Border Grid.Row="1" Grid.RowSpan="3" Grid.Column="0" Background="#1157b9">
<TextBlock Text="成品下线" Foreground="White" FontWeight="Bold" FontSize="25"/>
</Border>
<Border Grid.Row="0" Grid.Column="1" Background="#1157b9">
<TextBlock Text="产品条码" Foreground="White" />
</Border>
<Border Grid.Row="1" Grid.Column="1" Background="#1157b9">
<TextBlock Text="产品型号" Foreground="White" />
<Border Grid.Row="0" Grid.Column="2">
<TextBlock Text="{Binding ProductSNCode}" Foreground="White"/>
</Border>
<Border Grid.Row="2" Grid.Column="1" Background="#1157b9">
<TextBlock Text="订单数量" Foreground="White" />
<Border Grid.Row="0" Grid.Column="3" Background="#1157b9">
<TextBlock Text="扫描时间" Foreground="White" />
</Border>
<Border Grid.Row="3" Grid.Column="1" Background="#1157b9">
<TextBlock Text="提示信息" Foreground="White" />
<Border Grid.Row="0" Grid.Column="4">
<TextBlock Text="{Binding ProductScanTime}" Foreground="White"/>
</Border>
<Border Grid.Row="0" Grid.Column="2">
<TextBlock Text="312799000093D8U0050" Foreground="White"/>
<Border Grid.Row="1" Grid.Column="1" Background="#1157b9">
<TextBlock Text="产品型号" Foreground="White" />
</Border>
<Border Grid.Row="1" Grid.Column="2">
<TextBlock Text="SC-279,C,特许" Foreground="White"/>
<TextBlock Text="{Binding ProductModel}" Foreground="White"/>
</Border>
<Border Grid.Row="2" Grid.Column="2">
<TextBlock Text="76" Foreground="White"/>
<Border Grid.Row="1" Grid.Column="3" Background="#1157b9">
<TextBlock Text="订单编号" Foreground="White" />
</Border>
<Border Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="3">
<TextBlock Text="获取信息成功3127991000093D8U0050 返回值 : Y.上传条码失败E,条码重复,上传条码失败E,条码重复上传" Foreground="White"/>
<Border Grid.Row="1" Grid.Column="4">
<TextBlock Text="{Binding ProductOrderNo}" Foreground="White"/>
</Border>
<Border Grid.Row="0" Grid.Column="3" Background="#1157b9">
<TextBlock Text="扫描时间" Foreground="White" />
<Border Grid.Row="2" Grid.Column="1" Background="#1157b9">
<TextBlock Text="订单数量" Foreground="White" />
</Border>
<Border Grid.Row="1" Grid.Column="3" Background="#1157b9">
<TextBlock Text="订单编号" Foreground="White" />
<Border Grid.Row="2" Grid.Column="2">
<TextBlock Text="{Binding OrderQty}" Foreground="White"/>
</Border>
<Border Grid.Row="2" Grid.Column="3" Background="#1157b9">
<TextBlock Text="订单已上传" Foreground="White" />
</Border>
<Border Grid.Row="0" Grid.Column="4">
<TextBlock Text="2023-08-29 13:10:53" Foreground="White"/>
<Border Grid.Row="2" Grid.Column="4">
<TextBlock Text="{Binding ActQty}" Foreground="White"/>
</Border>
<Border Grid.Row="1" Grid.Column="4">
<TextBlock Text="000011203687" Foreground="White"/>
<Border Grid.Row="3" Grid.Column="1" Background="#1157b9">
<TextBlock Text="提示信息" Foreground="White" />
</Border>
<Border Grid.Row="2" Grid.Column="4">
<TextBlock Text="48" Foreground="White"/>
<Border Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="3">
<TextBlock Text="{Binding MsgInfo}" Foreground="{Binding MsgColor}"/>
</Border>
<Border Grid.Row="0" Grid.Column="5" Background="#1157b9">
<TextBlock Text="下线产量" Foreground="White" />
</Border>

Loading…
Cancel
Save