change-条码绑定完善提示,成品下线完善绑定数据

dev
liuwf 12 months ago
parent 37120d2994
commit bc67c93772

@ -72,5 +72,12 @@ namespace Admin.Core.Model
/// </summary>
[SugarColumn(ColumnName = "LOGIN_TEAM")]
public string LoginTeam { get; set; }
/// <summary>
/// 下传plc放行结果下传后为1plc应答后更新为2
/// </summary>
[SugarColumn(ColumnName = "PLC_RESULT")]
public int PlcResult { get; set; }
}
}

@ -443,17 +443,21 @@ namespace Aucma.Core.CodeBinding.ViewModels
// 页面扫码信息清空
Code1 = code1Str;
Code2 = code2Str;
Code1Time = string.Empty ;
Code2Time = string.Empty ;
SendPlcStop();
RefreshAndWriteLog("MES条码NoRead,线体停止");
RefreshAndWriteLog("MES条码未扫描到,NoRead报警,线体停止,请重新扫描!");
}
else if(model.Id == 2)
{
RefreshAndWriteLog("SN条码NoRead,线体停止");
RefreshAndWriteLog("SN条码未扫描到,NoRead报警,线体停止,请重新扫描!");
code1Str = string.Empty;
code2Str = string.Empty;
// 页面扫码信息清空
Code1 = code1Str;
Code2 = code2Str;
Code1Time = string.Empty;
Code2Time = string.Empty;
SendPlcStop();
}
}
@ -545,11 +549,23 @@ namespace Aucma.Core.CodeBinding.ViewModels
{
try
{
if (code1.Substring(0, 1) != "B")
{
RefreshAndWriteLog("MES码:"+code1+",扫描错误,请重新扫描!");
SendPlcStop();
return;
}
if (code2.Length!=20)
{
RefreshAndWriteLog("SN码:" + code2 + ",扫描错误,请重新扫描!");
SendPlcStop();
return;
}
RefreshAndWriteLog("开始绑定MES条码:" + code1 + " SN条码:" + code2);
// 1.数据库查询各个工序质检结果,不合格报警
//// 2.查询条码绑定记录表(内胆箱壳绑定处就应该插入记录)绑定SN码
CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.BoxCode == code1).Result;
CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.BoxCode == code1).Result;
if (record == null)
{
RefreshAndWriteLog("未查询到MES条码记录,集存库未绑定箱壳内胆");

@ -112,7 +112,7 @@ namespace Aucma.Core.ProductOffLine.Business
GunBusiness.RefreshMaterialCodeStrEvent += MaterialBarScan;
HandSendPlcWindow.SendPlcPassEvent += DownLoadPassFlag;
// test();
// test();
}
#region 变量定义
/// <summary>
@ -127,11 +127,19 @@ namespace Aucma.Core.ProductOffLine.Business
Task.Run(() =>
{
CodeBindingRecord bindingRecord1 = _codeBindingServices.FirstAsync(x => x.ProductCode == "1510080000099E3C0600").Result;
Thread.Sleep(5000);
TempOffLineInfo1.MsgInfo = "条码重复,上传间隔超过五分钟禁止放行,人工处理,上传时间:" + DateTime.Now;
TempOffLineInfo1.MsgAlarmFlag = true;
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo1);
//OffLineInfo info11 = new OffLineInfo();
//info11.ProductSNCode = "test11";
//info11.PlcResult = 1;
//int flag = _offLineInfoServices.AddAsync(info11).Result;
//OffLineInfo info = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == "test11").Result;
//info.PlcResult = 2;
//bool result = _offLineInfoServices.UpdateAsync(info).Result;
//Thread.Sleep(5000);
//TempOffLineInfo1.MsgInfo = "条码重复,上传间隔超过五分钟禁止放行,人工处理,上传时间:" + DateTime.Now;
//TempOffLineInfo1.MsgAlarmFlag = true;
//RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo1);
//OffLineInfo info11 = new OffLineInfo();
//info11.ProductSNCode = "test111";
//int flag = _offLineInfoServices.AddAsync(info11).Result;
@ -205,11 +213,10 @@ namespace Aucma.Core.ProductOffLine.Business
}
// TempOffLineInfo1.ProductRefreshFlag = true;
// 2.更新mes数据库
BackResult = updateMesData(TempOffLineInfo1);
bool MesResult = updateMesData(TempOffLineInfo1);
// BackResult = true; // 测试
// 3.plc放行
if (BackResult)
if (MesResult)
{
try
{
@ -221,20 +228,21 @@ namespace Aucma.Core.ProductOffLine.Business
log.Error("刷新统计图表出错:" + ex.Message.ToString());
}
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;
//}
if (plcResult)
{
// 更新数据库状态
OffLineInfo info = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == code).Result;
if (info != null)
{
info.PlcResult = 2;
bool plcFlag = _offLineInfoServices.UpdateAsync(info).Result;
if (!plcFlag)
{
log.Info("更新mes数据库应答字为2失败");
}
}
}
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty));
}
@ -258,13 +266,13 @@ namespace Aucma.Core.ProductOffLine.Business
log.Info("条码:" + TempOffLineInfo1.ProductSNCode + "对接条码系统处理失败,禁止放行,流程结束");
return;
}
// TempOffLineInfo2.ProductRefreshFlag = true;
// TempOffLineInfo2.ProductRefreshFlag = true;
// 2.更新mes数据库
BackResult = updateMesData(TempOffLineInfo2);
bool MesResult = updateMesData(TempOffLineInfo2);
//BackResult = true;
// 3.plc放行
if (BackResult)
if (MesResult)
{
try
{
@ -277,24 +285,23 @@ namespace Aucma.Core.ProductOffLine.Business
}
bool plcResult = SendAndWaitSignal(ScannerNo, materialType);
//if (plcResult)
//{
// TempOffLineInfo2.MsgInfo = TempOffLineInfo2.MsgInfo + "plc放行成功";
// //界面刷新
// TempOffLineInfo2.ProductRefreshFlag = true;
//}
//else
//{
// TempOffLineInfo2.MsgInfo = TempOffLineInfo2.MsgInfo + "plc放行异常";
// TempOffLineInfo2.MsgAlarmFlag = true;
// //界面刷新
// TempOffLineInfo2.ProductRefreshFlag = true;
//}
if (plcResult)
{
// 更新数据库状态
OffLineInfo info = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == code).Result;
if (info != null)
{
info.PlcResult = 2;
bool plcFlag = _offLineInfoServices.UpdateAsync(info).Result;
if (!plcFlag)
{
log.Info("更新mes数据库应答字为2失败");
}
}
}
log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo2.ProductOrderNo, TempOffLineInfo2.OrderQty));
}
else
{
@ -335,23 +342,24 @@ namespace Aucma.Core.ProductOffLine.Business
/// </summary>
/// <param name="BarCode"></param>
/// <returns></returns>
public bool updateMesData(TempInfo TempOffLineInfo)
public bool updateMesData(TempInfo TempOffLineInfo)
{
try
{
OffLineInfo info11 = MapperTwo(TempOffLineInfo);
// 添加成品下线表
CodeBindingRecord bindingRecord1 = _codeBindingServices.FirstAsync(x=>x.ProductCode == info11.ProductCode).Result;
CodeBindingRecord bindingRecord1 = _codeBindingServices.FirstAsync(x=>x.ProductCode == info11.ProductSNCode).Result;
if (bindingRecord1 == null)
{
log.Info("mes数据库未查询到条码绑定记录");
log.Info(info11.ProductCode + "mes数据库未查询到条码绑定记录");
// 条码绑定上位机运行以后打开
//return false;
}
else
{
// log.Info("条码绑定表查到记录:"+JsonHelper.ObjectToJson(bindingRecord1));
info11.BoxCode = bindingRecord1.BoxCode;
}
@ -360,6 +368,7 @@ namespace Aucma.Core.ProductOffLine.Business
info11.ProductLineCode = "CX_02";
info11.SaveRetuenInfo = TempOffLineInfo.MsgInfo;
info11.LoginTeam = appConfig.LoginTeam;
info11.PlcResult = 1;
// 查询本地数据库是否有数据
OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result;
if(offLineInfo == null)
@ -427,8 +436,9 @@ namespace Aucma.Core.ProductOffLine.Business
//}
#endregion
}
return true;
}
@ -639,9 +649,7 @@ namespace Aucma.Core.ProductOffLine.Business
{
return CodeRepeatProcess(TempOffLineInfo);
}
TempOffLineInfo.MsgAlarmFlag = true;
//界面刷新
// TempOffLineInfo.ProductRefreshFlag = true;
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
return false;
}
@ -679,6 +687,10 @@ namespace Aucma.Core.ProductOffLine.Business
/// 如果条码重复比对mes系统记录在五分钟以内重复视为短时间内员工重复推箱子或用扫码枪扫描可以放行
/// 超过五分钟,报警并显示已存在记录时间提示员工,
/// 员工判断如果是一码多用,搬下来换新条码重新扫描;如果是同一箱子因为吃饭或停班重复扫描,那么点击屏幕按钮进行放行
///
/// --------------------------------------------------------------------------
/// 20240315与郑总确认不需要超时5分钟判断条码重复判断数据库plc下发应答字如果是1可以再次放行如果是2说明plc已经应答箱体未走不可放行
/// 经武经理输入密码以后手动放行
/// </summary>
/// <returns></returns>
public bool CodeRepeatProcess(TempInfo TempOffLineInfo)
@ -688,41 +700,25 @@ namespace Aucma.Core.ProductOffLine.Business
// 查询本地数据库是否有数据
OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result;
if (offLineInfo != null)
if (offLineInfo != null && offLineInfo.PlcResult==1)
{
if (offLineInfo.ProductScanTime >= DateTime.Now.AddMinutes(-5)) // 五分钟以内
{
log.Info(TempOffLineInfo.ProductSNCode + "五分钟内重复上传条码系统,本地已存在,放行");
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "五分钟内重复上传条码系统,放行";
//界面刷新
// TempOffLineInfo.ProductRefreshFlag = true;
log.Info(TempOffLineInfo.ProductSNCode + "条码重复上传plc应答字为1未响应为2可以再次放行");
TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "条码重复plc应答字为1可以放行";
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
return true;
}
else
{
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;
int result = _offLineInfoServices.AddAsync(info11).Result;
Console.WriteLine("条码重复,本地不存在,插入结果:"+result);
return true;
log.Info(TempOffLineInfo.ProductSNCode + "条码重复上传plc应答字为2已经下传过不允许再次放行");
TempOffLineInfo.MsgAlarmFlag = true;
TempOffLineInfo.MsgInfo = "条码重复,plc应答字2,禁止重复放行,上传时间:" + offLineInfo.ProductScanTime;
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
return false;
}
}
catch (Exception ex)
@ -733,6 +729,62 @@ namespace Aucma.Core.ProductOffLine.Business
}
}
#region 条码重复历史处理方法
//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
// {
// 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;
// int result = _offLineInfoServices.AddAsync(info11).Result;
// Console.WriteLine("条码重复,本地不存在,插入结果:" + result);
// return true;
// }
// }
// catch (Exception ex)
// {
// log.Error("CodeRepeatProcess()异常" + ex.Message.ToString());
// return false;
// }
//}
#endregion
#region plc交互
/// <summary>
/// 下发plc放行信号,传进来扫码器编号分垛方向A或者B,返回plc反馈结果

Loading…
Cancel
Save