|
|
|
@ -1,11 +1,14 @@
|
|
|
|
|
using Admin.Core.Common;
|
|
|
|
|
using Admin.Core.Common.Config;
|
|
|
|
|
using Admin.Core.IService;
|
|
|
|
|
using Admin.Core.Model;
|
|
|
|
|
using Admin.Core.Model.Model_New;
|
|
|
|
|
using Admin.Core.Service;
|
|
|
|
|
using Aucma.Core.HwPLc;
|
|
|
|
|
using Aucma.Core.ProductOffLine;
|
|
|
|
|
using Aucma.Core.ProductOffLine.Config;
|
|
|
|
|
using Aucma.Core.ProductOffLine.Models;
|
|
|
|
|
using Aucma.Core.ProductOffLine.Views;
|
|
|
|
|
using Aucma.Core.Scanner;
|
|
|
|
|
using log4net;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
@ -23,6 +26,7 @@ using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Reflection.Metadata.Ecma335;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
@ -62,6 +66,7 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 接口引用
|
|
|
|
|
private AppConfig appConfig = AppConfig.Instance;
|
|
|
|
|
|
|
|
|
|
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(OffLineBusiness));
|
|
|
|
|
|
|
|
|
@ -104,7 +109,8 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
public OffLineBusiness()
|
|
|
|
|
{
|
|
|
|
|
MvCodeHelper.RefreshMaterialCodeStrEvent += MaterialBarScan;
|
|
|
|
|
// test();
|
|
|
|
|
ChooseDirectionWindow.SendPlcPassEvent += DownLoadPassFlag;
|
|
|
|
|
test();
|
|
|
|
|
}
|
|
|
|
|
#region 变量定义
|
|
|
|
|
/// <summary>
|
|
|
|
@ -128,14 +134,23 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
//while (true)
|
|
|
|
|
//{
|
|
|
|
|
Thread.Sleep(5000);
|
|
|
|
|
Random random = new Random();
|
|
|
|
|
MaterialBarScan("32160030000000912" + random.Next(100, 999), "10.10.92.141");
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
Random random1 = new Random();
|
|
|
|
|
MaterialBarScan("99160030000000912" + random1.Next(100, 999), "10.10.92.141");
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
Random random2 = new Random();
|
|
|
|
|
MaterialBarScan("44160030000000912" + random2.Next(100, 999), "10.10.92.141");
|
|
|
|
|
// string aa = appConfig.BarCodeAccount;
|
|
|
|
|
// string bb = appConfig.ProductlineCode;
|
|
|
|
|
// appConfig.BarCodeAccount = "123";
|
|
|
|
|
//TempOffLineInfo1.QualityResult = "失败";
|
|
|
|
|
//TempOffLineInfo1.ProductSNCode = "323222444"; //产品SN条码*1
|
|
|
|
|
//TempOffLineInfo1.ProductScanTime = System.DateTime.Now; // 扫码时间*2
|
|
|
|
|
//TempOffLineInfo1.MsgInfo = "条码质检失败:";
|
|
|
|
|
//RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo1);
|
|
|
|
|
// Random random = new Random();
|
|
|
|
|
// MaterialBarScan("32160030000000912" + random.Next(100, 999), "10.10.92.141");
|
|
|
|
|
|
|
|
|
|
//Thread.Sleep(3000);
|
|
|
|
|
//Random random1 = new Random();
|
|
|
|
|
//MaterialBarScan("99160030000000912" + random1.Next(100, 999), "10.10.92.141");
|
|
|
|
|
//Thread.Sleep(3000);
|
|
|
|
|
//Random random2 = new Random();
|
|
|
|
|
//MaterialBarScan("44160030000000912" + random2.Next(100, 999), "10.10.92.141");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// Thread.Sleep(1000);
|
|
|
|
@ -173,16 +188,26 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
if (!BackResult)
|
|
|
|
|
{
|
|
|
|
|
log.Info("条码:" + TempOffLineInfo1.ProductSNCode + "对接条码系统处理失败,禁止放行,流程结束");
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
// 2.更新mes数据库
|
|
|
|
|
BackResult = updateMesData(TempOffLineInfo1);
|
|
|
|
|
BackResult = true; // 测试
|
|
|
|
|
|
|
|
|
|
// BackResult = true; // 测试
|
|
|
|
|
// 3.plc放行
|
|
|
|
|
if (BackResult)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//刷新统计图表
|
|
|
|
|
RefreshChartsEvent?.Invoke();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error("刷新统计图表出错:" + ex.Message.ToString());
|
|
|
|
|
}
|
|
|
|
|
bool plcResult = SendAndWaitSignal(ScannerNo, materialType);
|
|
|
|
|
//if (plcResult)
|
|
|
|
|
//{
|
|
|
|
@ -199,15 +224,7 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
// TempOffLineInfo1.ProductRefreshFlag = true;
|
|
|
|
|
//}
|
|
|
|
|
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty));
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//刷新统计图表
|
|
|
|
|
RefreshChartsEvent?.Invoke();
|
|
|
|
|
}
|
|
|
|
|
catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error("刷新统计图表出错:"+ex.Message.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -232,11 +249,20 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
// TempOffLineInfo2.ProductRefreshFlag = true;
|
|
|
|
|
// 2.更新mes数据库
|
|
|
|
|
BackResult = updateMesData(TempOffLineInfo2);
|
|
|
|
|
BackResult = true;
|
|
|
|
|
|
|
|
|
|
//BackResult = true;
|
|
|
|
|
// 3.plc放行
|
|
|
|
|
if (BackResult)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//刷新统计图表
|
|
|
|
|
RefreshChartsEvent?.Invoke();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error("刷新统计图表出错:" + ex.Message.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool plcResult = SendAndWaitSignal(ScannerNo, materialType);
|
|
|
|
|
//if (plcResult)
|
|
|
|
@ -254,14 +280,7 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
// TempOffLineInfo2.ProductRefreshFlag = true;
|
|
|
|
|
//}
|
|
|
|
|
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo2.ProductOrderNo, TempOffLineInfo2.OrderQty));
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//刷新统计图表
|
|
|
|
|
RefreshChartsEvent?.Invoke();
|
|
|
|
|
}catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error("刷新页面异常"+ex.Message.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -327,27 +346,53 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
|
|
|
|
|
// 产线
|
|
|
|
|
info11.ProductLineCode = "CX_02";
|
|
|
|
|
info11.SaveRetuenInfo = TempOffLineInfo.MsgInfo;
|
|
|
|
|
info11.LoginTeam = appConfig.LoginTeam;
|
|
|
|
|
// 查询本地数据库是否有数据
|
|
|
|
|
OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result;
|
|
|
|
|
if(offLineInfo == null)
|
|
|
|
|
{
|
|
|
|
|
_offLineInfoServices.AddAsync(info11);
|
|
|
|
|
info11.ProductOrderNo = "0000" + info11.ProductOrderNo;
|
|
|
|
|
int flag = _offLineInfoServices.AddAsync(info11).Result;
|
|
|
|
|
if (flag < 0)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "插入下线记录失败";
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
RefreshScanMateriaCodeEvent(TempOffLineInfo);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 不重复上传的条码才更新mes订单完成数
|
|
|
|
|
// 修改订单表
|
|
|
|
|
////6.更新mes 数据库完成数量和时间(BASE_ORDERINFO) 注意:查询的字段可能需要修改,确保数据一致
|
|
|
|
|
|
|
|
|
|
////6.1截取订单号去查询更新BASE_ORDERINFO,全放到service处理
|
|
|
|
|
BaseOrderInfo order = _baseOrderInfoServices.FirstAsync(x => x.OrderCode == TempOffLineInfo.ProductOrderNo).Result;
|
|
|
|
|
if (order == null)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "查询mes订单失败";
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
RefreshScanMateriaCodeEvent(TempOffLineInfo);
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
order.CompleteAmount++;
|
|
|
|
|
if (order.CompleteAmount == order.OrderAmount)
|
|
|
|
|
{
|
|
|
|
|
order.CompleteDate = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
order.UpdatedTime = DateTime.Now;
|
|
|
|
|
_baseOrderInfoServices.UpdateAsync(order);
|
|
|
|
|
|
|
|
|
|
bool uploadOrder = _baseOrderInfoServices.UpdateAsync(order).Result;
|
|
|
|
|
if(!uploadOrder)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "更新mes订单完成数失败";
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
RefreshScanMateriaCodeEvent(TempOffLineInfo);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 暂时不启用,因为还没打箱体码,查不到数据,更新过点数据
|
|
|
|
|
//PrintBarCode print = _printBarCodeServices.FirstAsync(x => x.MaterialBarcode == bindingRecord1.BoxCode).Result;
|
|
|
|
@ -368,8 +413,9 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
@ -396,6 +442,7 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1
|
|
|
|
|
TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2
|
|
|
|
|
TempOffLineInfo.MsgInfo = "条码质检失败:";
|
|
|
|
|
|
|
|
|
|
foreach(ReportQualityInsPection item in qualityList)
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo += item.QualityDefectName;
|
|
|
|
@ -526,35 +573,42 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
int orderType = 1; // ZP03为在库返工订单,传参数3,默认正常订单1
|
|
|
|
|
// 先查订单
|
|
|
|
|
if (!string.IsNullOrEmpty(TempOffLineInfo.ProductOrderNo))
|
|
|
|
|
{
|
|
|
|
|
// 条码系统保存接口
|
|
|
|
|
string strSave = _productOffLineServices.SaveBarcodeInfo(TempOffLineInfo.ProductSNCode, "6945", TempOffLineInfo.ProductOrderNo, 1);
|
|
|
|
|
// string strSave = "Y";
|
|
|
|
|
if (!string.IsNullOrEmpty(strSave))
|
|
|
|
|
{
|
|
|
|
|
if (strSave == "Y" || strSave=="S")
|
|
|
|
|
{
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "上传条码成功:" + strSave);
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码成功";
|
|
|
|
|
|
|
|
|
|
// mes查询订单数据, 异常处理:后期可能根据SN码查箱体码,查订单号并检查更新订单数据
|
|
|
|
|
// mes查询订单数据,
|
|
|
|
|
BaseOrderInfo order = _baseOrderInfoServices.FirstAsync(x => x.OrderCode == TempOffLineInfo.ProductOrderNo.Replace("0000", "")).Result;
|
|
|
|
|
if (order != null)
|
|
|
|
|
{
|
|
|
|
|
if (order.OrderType == "ZP03")
|
|
|
|
|
{
|
|
|
|
|
orderType = 3;
|
|
|
|
|
}
|
|
|
|
|
TempOffLineInfo.OrderQty = order.OrderAmount; // 订单数量*5
|
|
|
|
|
TempOffLineInfo.ActQty = order.CompleteAmount; // 订单已上传*6
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",MES查询订单数据异常";
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",MES未查询到订单数据";
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
|
|
|
|
|
// return false;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 条码系统保存接口
|
|
|
|
|
string strSave = _productOffLineServices.SaveBarcodeInfo(TempOffLineInfo.ProductSNCode, appConfig.BarCodeAccount, TempOffLineInfo.ProductOrderNo, orderType);
|
|
|
|
|
// string strSave = "Y";
|
|
|
|
|
if (!string.IsNullOrEmpty(strSave))
|
|
|
|
|
{
|
|
|
|
|
if (strSave == "Y" || strSave=="S")
|
|
|
|
|
{
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "上传条码成功:" + strSave);
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码成功";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
|
|
|
|
@ -568,43 +622,29 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
|
|
|
|
|
if (strSave.Contains("条码重复"))
|
|
|
|
|
{
|
|
|
|
|
// 查询本地数据库是否有数据
|
|
|
|
|
OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result;
|
|
|
|
|
if (offLineInfo != null)
|
|
|
|
|
{
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "条码重复,本地已存在,放行");
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "条码重复,本地已存在,放行";
|
|
|
|
|
return CodeRepeatProcess(TempOffLineInfo);
|
|
|
|
|
}
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
|
|
|
|
|
return true;
|
|
|
|
|
// chkout:条码重复是否允许放行
|
|
|
|
|
//if (TempOffLineInfo.ChkOut == true)
|
|
|
|
|
//{
|
|
|
|
|
// return true;
|
|
|
|
|
//}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "条码重复,本地不存在,已插入,可以放行");
|
|
|
|
|
OffLineInfo info11 = MapperTwo(TempOffLineInfo);
|
|
|
|
|
// 产线
|
|
|
|
|
info11.ProductLineCode = "CX_02";
|
|
|
|
|
_offLineInfoServices.AddAsync(info11);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",条码系统保存接口异常";
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",条码系统保存接口异常";
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",生产单号异常";
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
@ -612,25 +652,76 @@ namespace Aucma.Core.ProductOffLine.Business
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message.ToString());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 条码系统上传重复逻辑20240305经aucma负责人商讨确定
|
|
|
|
|
/// 如果条码重复,比对mes系统记录,在五分钟以内重复,视为短时间内员工重复推箱子或用扫码枪扫描,可以放行
|
|
|
|
|
/// 超过五分钟,报警并显示已存在记录时间提示员工,
|
|
|
|
|
/// 员工判断如果是一码多用,搬下来换新条码重新扫描;如果是同一箱子因为吃饭或停班重复扫描,那么点击屏幕按钮进行放行
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public bool CodeRepeatProcess(TempInfo TempOffLineInfo)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
// 查询本地数据库是否有数据
|
|
|
|
|
OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result;
|
|
|
|
|
|
|
|
|
|
if (offLineInfo != null)
|
|
|
|
|
{
|
|
|
|
|
if (offLineInfo.ProductScanTime >= DateTime.Now.AddMinutes(-5)) // 五分钟以内
|
|
|
|
|
{
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "五分钟内重复上传条码系统,本地已存在,放行");
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "五分钟内重复上传条码系统,放行";
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",生产单号异常";
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "条码重复,并且距离上次上传超过五分钟,报警并显示已存在记录时间提示员工操作处理");
|
|
|
|
|
TempOffLineInfo.MsgAlarmFlag = true;
|
|
|
|
|
|
|
|
|
|
TempOffLineInfo.MsgInfo = "条码重复,上传间隔超过五分钟禁止放行,人工处理,上传时间:" + offLineInfo.ProductScanTime;
|
|
|
|
|
//界面刷新
|
|
|
|
|
// TempOffLineInfo.ProductRefreshFlag = true;
|
|
|
|
|
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.Info(TempOffLineInfo.ProductSNCode + "条码重复,本地不存在,已插入,放行");
|
|
|
|
|
OffLineInfo info11 = MapperTwo(TempOffLineInfo);
|
|
|
|
|
// 产线
|
|
|
|
|
info11.ProductLineCode = "CX_02";
|
|
|
|
|
info11.ProductOrderNo = "0000" + info11.ProductOrderNo;
|
|
|
|
|
info11.SaveRetuenInfo = TempOffLineInfo.MsgInfo;
|
|
|
|
|
info11.LoginTeam = appConfig.LoginTeam;
|
|
|
|
|
_offLineInfoServices.AddAsync(info11);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message.ToString());
|
|
|
|
|
|
|
|
|
|
log.Error("CodeRepeatProcess()异常" + ex.Message.ToString());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#region plc交互
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 下发plc放行信号,传进来扫码器编号,分垛方向A或者B,返回plc反馈结果
|
|
|
|
|
/// scannerNo == 1内侧,scannerNo == 2外侧
|
|
|
|
|
/// strDirection "A" ? 1 : 2;入库方向A,B
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="materialType"></param>
|
|
|
|
|
private bool DownLoadPassFlag(int scannerNo,string strDirection)
|
|
|
|
|