|
|
|
@ -72,7 +72,8 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
private readonly IMaterialCompletionServices? _iMaterialCompletionServices = App.ServiceProvider.GetService<IMaterialCompletionServices>();
|
|
|
|
|
|
|
|
|
|
private readonly ICodeBindingRecordServices? _codeBindingServices = App.ServiceProvider.GetService<ICodeBindingRecordServices>();
|
|
|
|
|
|
|
|
|
|
// 质检记录
|
|
|
|
|
private readonly IReportQualityInspectionServices? _reportQualityInspectionServices = App.ServiceProvider.GetService<IReportQualityInspectionServices>();
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 委托事件
|
|
|
|
@ -104,23 +105,23 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
|
|
|
|
|
public void test()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// string result = await _productOffLineServices.QueryChecked("1531000AP0098DCU0481");
|
|
|
|
|
// Console.WriteLine(result);
|
|
|
|
|
|
|
|
|
|
// string tt = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000004899@BCD-160C,家电下乡@@BCD-160C@皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01";
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
{
|
|
|
|
|
while(true)
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(50000);
|
|
|
|
|
Random random = new Random();
|
|
|
|
|
MaterialBarScan("32160030000000912"+random.Next(100,999), "192.168.1.19");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Thread.Sleep(1000);
|
|
|
|
|
// MaterialBarScanEvent("33160030000000910780", "192.168.1.20");
|
|
|
|
|
});
|
|
|
|
|
//Task.Run(() =>
|
|
|
|
|
//{
|
|
|
|
|
// while(true)
|
|
|
|
|
// {
|
|
|
|
|
// Thread.Sleep(50000);
|
|
|
|
|
// Random random = new Random();
|
|
|
|
|
// MaterialBarScan("32160030000000912"+random.Next(100,999), "192.168.1.19");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// // Thread.Sleep(1000);
|
|
|
|
|
// // MaterialBarScanEvent("33160030000000910780", "192.168.1.20");
|
|
|
|
|
//});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -130,60 +131,57 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
/// <param name="scannerIp">扫码器IP</param>
|
|
|
|
|
public void MaterialBarScan(string code,string scannerIp)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
int ScannerNo = scannerIp == Appsettings.app("Middleware", "Scanner1", "Ip") ? 1 : 2; // 确定是哪个扫码器
|
|
|
|
|
log.Info("扫码器ip:" + scannerIp +"编号:["+ScannerNo+ "]扫描到条码:" + code);
|
|
|
|
|
|
|
|
|
|
log.Info("扫码器ip:" + scannerIp + "编号:[" + ScannerNo + "]扫描到条码:" + code);
|
|
|
|
|
|
|
|
|
|
string materialType = "";
|
|
|
|
|
bool BackResult = false;
|
|
|
|
|
if (ScannerNo == 1)
|
|
|
|
|
{
|
|
|
|
|
//1.扫描的SN条码去条码系统校验
|
|
|
|
|
BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo1); //扫码器1
|
|
|
|
|
materialType = TempOffLineInfo1.ProductCode;
|
|
|
|
|
TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + ",plc放行成功";
|
|
|
|
|
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
return;
|
|
|
|
|
if (!BackResult)
|
|
|
|
|
BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo1); //扫码器1
|
|
|
|
|
materialType = TempOffLineInfo1.ProductCode;
|
|
|
|
|
if (!BackResult)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 2.更新mes数据库
|
|
|
|
|
BackResult = updateMesData(TempOffLineInfo1);
|
|
|
|
|
BackResult = updateMesData(TempOffLineInfo1);
|
|
|
|
|
// 3.plc放行
|
|
|
|
|
if (BackResult)
|
|
|
|
|
{
|
|
|
|
|
bool plcResult =SendAndWaitSignal(ScannerNo, materialType);
|
|
|
|
|
if (plcResult)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行成功";
|
|
|
|
|
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行异常";
|
|
|
|
|
TempOffLineInfo1.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
}
|
|
|
|
|
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty));
|
|
|
|
|
bool plcResult = SendAndWaitSignal(ScannerNo, materialType);
|
|
|
|
|
if (plcResult)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行成功";
|
|
|
|
|
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行异常";
|
|
|
|
|
TempOffLineInfo1.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
}
|
|
|
|
|
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 扫码器2
|
|
|
|
|
else if (ScannerNo == 2)
|
|
|
|
|
{
|
|
|
|
|
BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo2); //扫码器2
|
|
|
|
|
BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo2); //扫码器2
|
|
|
|
|
materialType = TempOffLineInfo2.ProductCode;
|
|
|
|
|
if (!BackResult)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 2.更新mes数据库
|
|
|
|
|
BackResult = updateMesData(TempOffLineInfo2);
|
|
|
|
|
BackResult = updateMesData(TempOffLineInfo2);
|
|
|
|
|
// 3.plc放行
|
|
|
|
|
if (BackResult)
|
|
|
|
|
{
|
|
|
|
@ -191,7 +189,7 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
if (plcResult)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo2.MsgInfo = TempOffLineInfo2.MsgInfo + "plc放行成功";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo2.ProductRefreshFlag = true;
|
|
|
|
|
}
|
|
|
|
@ -204,8 +202,14 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
}
|
|
|
|
|
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo2.ProductOrderNo, TempOffLineInfo2.OrderQty));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
@ -300,7 +304,25 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// 1.质检
|
|
|
|
|
List<ReportQualityInsPection> qualityList = _reportQualityInspectionServices.JudgeIsQualified(BarCode);
|
|
|
|
|
if(qualityList != null)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.QualityResult = "失败";
|
|
|
|
|
TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1
|
|
|
|
|
TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2
|
|
|
|
|
TempOffLineInfo.MsgInfo = "条码质检失败:";
|
|
|
|
|
foreach(ReportQualityInsPection item in qualityList)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo += item.QualityDefectName;
|
|
|
|
|
}
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TempOffLineInfo.QualityResult = "成功";
|
|
|
|
|
|
|
|
|
|
TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1
|
|
|
|
|