add-添加RFID读取校验

master
liuwf 7 months ago
parent c8e9dea514
commit 938c87e6a6

@ -145,6 +145,7 @@ namespace SlnMesnac.Business.@base
List<TagInfo> tagInfoList = await rfidEquip.GetRFIDAsync();
if (tagInfoList == null || tagInfoList.Count == 0) return "";
tagInfoList = tagInfoList.Where(X => X.EPCstring.Length == 12).ToList();
epcStr = tagInfoList.OrderByDescending(x => x.Count).First().EPCstring;
epcStr = epcStr.Replace(" ", "").Replace("\r\n", "").Replace("\0", "").Replace("\n", "");
return epcStr;

@ -29,19 +29,19 @@ namespace SlnMesnac.Model.domain
[SugarColumn(ColumnName = "task_status", ColumnDescription = "任务状态,字典表")]
public int TaskStatus { get; set; }
[SugarColumn(ColumnName = "start_point_no", ColumnDescription = "起始点编号")]
[SugarColumn(ColumnName = "start_point_no", ColumnDescription = "未使用")]
public string StartPointNo { get; set; }
[SugarColumn(ColumnName = "start_point_id", ColumnDescription = "起始点id")]
public int StartPointId { get; set; }
[SugarColumn(ColumnName = "curr_point_no", IsNullable = false, ColumnDescription = "当前点编号")]
[SugarColumn(ColumnName = "curr_point_no", IsNullable = false, ColumnDescription = "任务起点")]
public string CurrPointNo { get; set; }
[SugarColumn(ColumnName = "curr_point_id", IsNullable = false, ColumnDescription = "当前点id")]
public string CurrPointId { get; set; }
[SugarColumn(ColumnName = "next_point_no", IsNullable = false, ColumnDescription = "下一点编号")]
[SugarColumn(ColumnName = "next_point_no", IsNullable = false, ColumnDescription = "执行的agv编号")]
public string NextPointNo { get; set; }
[SugarColumn(ColumnName = "next_point_id", IsNullable = false, ColumnDescription = "下一点id")]

@ -161,7 +161,6 @@ namespace SlnMesnac.Rfid.Factory
}
catch (Exception e)
{
Console.WriteLine($"设备{ip}:{port}连接异常:{e.Message}");
return false;
}
}

@ -159,7 +159,7 @@ namespace SlnMesnac.WCS
rfidDb.IsOnline = status ? 1 : 0;
}
}
SqlSugarClient.Updateable(rfidDbList).ExecuteCommand();
SqlSugarClient.Updateable(rfidDbList).UpdateColumns(it => new { it.IsOnline }).ExecuteCommand();
#endregion RFID状态
//色粉库位有未取走色粉声光报警

@ -82,7 +82,7 @@ namespace SlnMesnac.WCS.WCS
break;
//3#车间从下料点到1-16机台送料任务
case StaticTaskType.TransferMaterialBoxTask:
await TransferMaterialBoxTaskHandlerAsync(item);
TransferMaterialBoxTaskHandler(item);
break;
//1-12号机台之间空料箱移库任务
case StaticTaskType.MoveLocationTask:
@ -90,7 +90,10 @@ namespace SlnMesnac.WCS.WCS
break;
//3#接驳位到2#计量室接驳位的送料任务
case StaticTaskType.TransferMaterialMetrologyRoomBoxTask:
await TransferMaterialMetrologyRoomBoxTaskHandlerAsync(item);
lock (string.Empty)
{
TransferMaterialMetrologyRoomBoxTaskHandler(item);
}
break;
//3#车间从2#接驳位补充小托盘任务
case StaticTaskType.SupplySmallPalletTask:
@ -176,25 +179,8 @@ namespace SlnMesnac.WCS.WCS
//通知plc已经放下了料箱
workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#四宫格空托盘就绪信号"), true);
//解锁终点库位
WcsBaseEquip? baseEquip = sqlSugarClient.Queryable<WcsBaseEquip>().First(t => t.AgvPositionCode == task.EndPointNo);
if (baseEquip != null)
{
sqlSugarClient.AsTenant().BeginTran();
try
{
baseEquip.EquipStatus = 0;
sqlSugarClient.Deleteable(task).ExecuteCommand();
sqlSugarClient.Updateable(baseEquip).ExecuteCommand();
sqlSugarClient.AsTenant().CommitTran();
_logger.Agv($"Agv:{task.NextPointNo};完成{task.TaskName},起点:{task.CurrPointNo},终点:{task.EndPointNo}");
}
catch (Exception ex)
{
sqlSugarClient.AsTenant().RollbackTran();
_logger.Error("SupplyEmptyPalletTaskHandlerAsync提交事务异常:" + ex.Message);
}
}
sqlSugarClient.Deleteable(task).ExecuteCommand();
_logger.Agv($"Agv:{task.NextPointNo};完成{task.TaskName},起点:{task.CurrPointNo},终点:{task.EndPointNo}");
}
}
catch (Exception ex)
@ -208,11 +194,11 @@ namespace SlnMesnac.WCS.WCS
/// </summary>
/// <param name="task"></param>
/// <returns></returns>
private async Task TransferMaterialBoxTaskHandlerAsync(WcsTask task)
private void TransferMaterialBoxTaskHandler(WcsTask task)
{
try
{
WcsTaskLog wcsTaskLog = await sqlSugarClient.Queryable<WcsTaskLog>().FirstAsync(t => t.Id == task.Id);
WcsTaskLog wcsTaskLog = sqlSugarClient.Queryable<WcsTaskLog>().First(t => t.Id == task.Id);
if (task.TaskStatus == 0)
{
TaskStatus0Handle(task);
@ -251,13 +237,19 @@ namespace SlnMesnac.WCS.WCS
WmsBaseLocation? endLocation = sqlSugarClient.Queryable<WmsBaseLocation>().First(t => t.AgvPositionCode == task.EndPointNo);
if (endLocation != null)
{
//入库校验RFID --todo解开屏蔽
//string readEpc = await ReadEpcStrByRfidKeyAsync(endLocation.EquipKey);
//test使用
string? readEpc = task.PalletInfoCode;
//入库校验RFID
string readEpc = ReadEpcStrByRfidKey(endLocation.EquipKey);
_logger.Agv($"读到RFID:{readEpc}");
//todo:12号机台装上RFID以后删除--------------------------------
if (endLocation.MachineId == 12)
{
readEpc = task.PalletInfoCode;
}
//----------------------------------
if (string.IsNullOrEmpty(readEpc) || readEpc != task.PalletInfoCode)
{
workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#机台校验失败提示"), true);
// workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#机台校验失败提示"), true);
_logger.Error("入库校验RFID失败,当前库位RFID:" + readEpc + ",任务RFID:" + task.PalletInfoCode);
return;
}
@ -437,11 +429,11 @@ namespace SlnMesnac.WCS.WCS
/// 3#接驳位到2#计量室接驳位的送料任务
/// </summary>
/// <param name="task"></param>
private async Task TransferMaterialMetrologyRoomBoxTaskHandlerAsync(WcsTask task)
private void TransferMaterialMetrologyRoomBoxTaskHandler(WcsTask task)
{
try
{
WcsTaskLog wcsTaskLog = await sqlSugarClient.Queryable<WcsTaskLog>().FirstAsync(t => t.Id == task.Id);
WcsTaskLog wcsTaskLog = sqlSugarClient.Queryable<WcsTaskLog>().First(t => t.Id == task.Id);
if (task.TaskStatus == 0)
{
TaskStatus0Handle(task);
@ -461,15 +453,14 @@ namespace SlnMesnac.WCS.WCS
}
else if (outFlag == 1)
{ //已经出来就绪wcs通知agv取走托盘
bool result = await ContinueTaskHandle(task);
bool result = ContinueTaskHandle(task).Result;
if (result)
{
//从下料点直接取清空RFID及机台号条码等信息--ok
//workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 0);
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#接驳位到位信号"), 0);
workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#出接驳位信号"), false);
workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#小料箱agv已取走反馈"), true);
_logger.Agv($"agv取走料{task.PalletInfoCode}3#忙碌状态清0");
_logger.Agv($"agv取走料{task.PalletInfoCode}3#已取走反馈");
}
}
}
@ -480,17 +471,9 @@ namespace SlnMesnac.WCS.WCS
_logger.Plc(DateTime.Now + "3#PLC未连接,请检查网络!");
return;
}
//解锁起始库位忙碌状态
WcsBaseEquip? startEquip = sqlSugarClient.Queryable<WcsBaseEquip>().First(it => it.AgvPositionCode == task.CurrPointNo);
sqlSugarClient.AsTenant().BeginTran();
try
{
if (startEquip != null)
{
startEquip.EquipStatus = 0;
sqlSugarClient.Updateable<WcsBaseEquip>(startEquip).ExecuteCommand();
}
task.TaskStatus = 5;
task.UpdatedTime = DateTime.Now;
if (wcsTaskLog != null)
@ -522,15 +505,25 @@ namespace SlnMesnac.WCS.WCS
}
if (busyFlag == 0)
{
Thread.Sleep(2500);
int amount = sqlSugarClient.Queryable<WcsTask>().Where(x => x.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask).Count();
if (amount < 2)
{
Thread.Sleep(3500);
}
else //优先级最高释放掉一个agv
{
Thread.Sleep(300);
}
busyFlag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
if (busyFlag == 0)
{
bool result = await ContinueTaskHandle(task);
if (result)
//抢占线体状态agv进入接驳位
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
bool result = ContinueTaskHandle(task).Result;
if (!result)
{
//抢占线体状态agv进入接驳位
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 0);
}
}
}
@ -552,7 +545,7 @@ namespace SlnMesnac.WCS.WCS
}
else if (!outFlag)
{ //托盘已经离开wcs通知agv离开
bool result = await ContinueTaskHandle(task);
bool result = ContinueTaskHandle(task).Result;
if (result) //已经离开
{
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#放完成反馈"), false);
@ -624,19 +617,9 @@ namespace SlnMesnac.WCS.WCS
_logger.Plc(DateTime.Now + "2#PLC未连接,请检查网络!");
return;
}
//从下料点直接取清空RFID及机台号条码等信息--ok
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 0);
//解锁起始库位忙碌状态
WcsBaseEquip? startEquip = sqlSugarClient.Queryable<WcsBaseEquip>().First(it => it.AgvPositionCode == task.CurrPointNo);
sqlSugarClient.AsTenant().BeginTran();
try
{
if (startEquip != null)
{
startEquip.EquipStatus = 0;
sqlSugarClient.Updateable<WcsBaseEquip>(startEquip).ExecuteCommand();
}
task.TaskStatus = 5;
task.UpdatedTime = DateTime.Now;
if (wcsTaskLog != null)
@ -672,11 +655,12 @@ namespace SlnMesnac.WCS.WCS
busyFlag = workShop3Plc.readInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"));
if (busyFlag == 0)
{
//抢占线体状态agv进入接驳位
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 1);
bool result = await ContinueTaskHandle(task);
if (result)
if (!result)
{
//抢占线体状态agv进入接驳位
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 1);
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 0);
}
}
}
@ -700,7 +684,6 @@ namespace SlnMesnac.WCS.WCS
if (result)
{
//从下料点直接取清空RFID及机台号条码等信息--ok
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 0);
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#接驳位到位信号"), 0);
workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#出接驳位信号"), false);
workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#小料箱agv已取走反馈"), true);
@ -784,19 +767,23 @@ namespace SlnMesnac.WCS.WCS
busyFlag = workShop3Plc.readInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"));
if (busyFlag == 0)
{
//解锁起始库位
WcsBaseEquip? baseEquip = sqlSugarClient.Queryable<WcsBaseEquip>().First(t => t.AgvPositionCode == task.CurrPointNo);
if (baseEquip != null)
{
baseEquip.EquipStatus = 0;
baseEquip.ContainerCode = null;
sqlSugarClient.Updateable(baseEquip).ExecuteCommand();
}
//抢占线体状态agv进入接驳位
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 1);
bool result = await ContinueTaskHandle(task);
if (result)
{
//抢占线体状态agv进入接驳位
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 1);
//解锁起始色粉库位
WcsBaseEquip? baseEquip = sqlSugarClient.Queryable<WcsBaseEquip>().First(t => t.AgvPositionCode == task.CurrPointNo);
if (baseEquip != null)
{
baseEquip.EquipStatus = 0;
baseEquip.ContainerCode = null;
sqlSugarClient.Updateable(baseEquip).ExecuteCommand();
}
}
else //下发任务继续失败
{
workShop3Plc.writeInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"), 0);
}
}
}
@ -1207,30 +1194,61 @@ namespace SlnMesnac.WCS.WCS
taskCode = task.TaskCode
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.ServerIp, baseEquip.ServerPort, "rcms/services/rest/hikRpcService/continueTask", message);
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
try
{
sqlSugarClient.AsTenant().BeginTran();
_logger.Agv($"下发agv任务继续,任务名称:{task.TaskName},任务id:{task.Id},任务状态:{task.TaskStatus}");
task.TaskStatus += 1;
task.UpdatedTime = DateTime.Now;
sqlSugarClient.Updateable<WcsTask>(task).ExecuteCommand();
if (wcsTaskLog != null)
string result = HttpHelper.SendPostMessage(baseEquip.ServerIp, baseEquip.ServerPort, "rcms/services/rest/hikRpcService/continueTask", message);
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
wcsTaskLog.UpdatedTime = DateTime.Now;
wcsTaskLog.TaskStatus = task.TaskStatus;
sqlSugarClient.Updateable<WcsTaskLog>(wcsTaskLog).ExecuteCommand();
sqlSugarClient.AsTenant().BeginTran();
_logger.Agv($"下发agv任务继续,任务名称:{task.TaskName},任务id:{task.Id},任务状态:{task.TaskStatus}");
task.TaskStatus += 1;
task.UpdatedTime = DateTime.Now;
sqlSugarClient.Updateable<WcsTask>(task).ExecuteCommand();
if (wcsTaskLog != null)
{
wcsTaskLog.UpdatedTime = DateTime.Now;
wcsTaskLog.TaskStatus = task.TaskStatus;
sqlSugarClient.Updateable<WcsTaskLog>(wcsTaskLog).ExecuteCommand();
}
sqlSugarClient.AsTenant().CommitTran();
continueResult = true;
}
}
catch (Exception ex)
{
_logger.Error($"第一次下发agv任务继续异常,任务名称:{task.TaskName},任务id:{task.Id},异常信息:{ex.StackTrace}");
_logger.Error("开始尝试第二次下发");
await Task.Delay(1000 * 2);
string result = HttpHelper.SendPostMessage(baseEquip.ServerIp, baseEquip.ServerPort, "rcms/services/rest/hikRpcService/continueTask", message);
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
sqlSugarClient.AsTenant().BeginTran();
_logger.Agv($"下发agv任务继续,任务名称:{task.TaskName},任务id:{task.Id},任务状态:{task.TaskStatus}");
task.TaskStatus += 1;
task.UpdatedTime = DateTime.Now;
sqlSugarClient.Updateable<WcsTask>(task).ExecuteCommand();
if (wcsTaskLog != null)
{
wcsTaskLog.UpdatedTime = DateTime.Now;
wcsTaskLog.TaskStatus = task.TaskStatus;
sqlSugarClient.Updateable<WcsTaskLog>(wcsTaskLog).ExecuteCommand();
}
sqlSugarClient.AsTenant().CommitTran();
continueResult = true;
}
else
{
_logger.Error($"下发第二次agv任务继续失败任务名称:{task.TaskName},任务id:{task.Id},异常信息:{ex.StackTrace}");
}
sqlSugarClient.AsTenant().CommitTran();
continueResult = true;
}
#endregion 下发AGV信号放料箱
}
catch (Exception ex)
{
_logger.Error($"下发agv任务继续异常,任务名称:{task.TaskName},任务id:{task.Id},异常信息:{ex.StackTrace}");
_logger.Error($"下发agv任务第二次继续异常,任务名称:{task.TaskName},任务id:{task.Id},异常信息:{ex.StackTrace}");
}
return continueResult;
}

@ -114,7 +114,7 @@ namespace SlnMesnac.WCS.WCS
int work3EmptyAmount = workShop3Plc.readInt16ByAddress(StaticData.GetPlcAddress("3#缓存皮带线库存数"));
int busy3Flag = workShop3Plc.readInt16ByAddress(StaticData.GetPlcAddress("3#线体忙碌状态"));
if (work3EmptyAmount < 2 && busy3Flag == 0)
if ((work3EmptyAmount == 1 && busy3Flag == 0) || work3EmptyAmount == 0)
{
//3#车间从色粉存放点补充小托盘任务 或者 3#车间从2#接驳位补充小托盘任务
CreateSupplySmallPalletToWorkshop3Task();
@ -128,7 +128,7 @@ namespace SlnMesnac.WCS.WCS
}
finally
{
Thread.Sleep(2000);
Thread.Sleep(1000);
}
}
});
@ -171,9 +171,9 @@ namespace SlnMesnac.WCS.WCS
{
Thread.Sleep(2000);
}
else if (anyTonerPallet)
else if (anyTonerPallet) //有色粉空转
{
Thread.Sleep(7000);
Thread.Sleep(4500);
}
busy2Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
@ -205,7 +205,7 @@ namespace SlnMesnac.WCS.WCS
}
else if (wmsPalletInfo != null && wmsPalletInfo.Amount > 0 && wmsPalletInfo.TonerFlag == 0) //携带满料
{
//2空箱转运
//2转运
_logger.Info($"2#移栽===={rfid}携带满料,空转一圈");
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
@ -351,7 +351,7 @@ namespace SlnMesnac.WCS.WCS
}
finally
{
Thread.Sleep(1000 * 2);
Thread.Sleep(1000 * 1);
}
}
}
@ -424,8 +424,6 @@ namespace SlnMesnac.WCS.WCS
task.CurrPointNo = startLocation.AgvPositionCode;
startLocation.LocationStatus = 1;
sqlSugarClient.Updateable(startLocation).ExecuteCommand();
endEquip.EquipStatus = 1;
sqlSugarClient.Updateable(endEquip).ExecuteCommand();
// task.NextPointNo = agvEquip.AgvPositionCode;
task.EndPointNo = endEquip.AgvPositionCode;
task.TaskStatus = 0;
@ -456,7 +454,7 @@ namespace SlnMesnac.WCS.WCS
bool hasMachineCode = StaticData.WmsMachineInfos.Any(x => x.MachineCode == machineCode);
if (!string.IsNullOrEmpty(rfid) && hasMachineCode)
{
//判断agv是否有来这里的任务
//判断该料箱是否已经有送料任务
bool hasTask = sqlSugarClient.Queryable<WcsTask>().Any(it => it.TaskType == StaticTaskType.TransferMaterialBoxTask && it.PalletInfoCode == rfid);
if (hasTask)
{
@ -500,8 +498,6 @@ namespace SlnMesnac.WCS.WCS
int id = sqlSugarClient.Insertable(task).ExecuteReturnIdentity();
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
wcsTaskLog.Id = id;
startEquip.EquipStatus = 1;
sqlSugarClient.Updateable(startEquip).ExecuteCommand();
targetLocation.LocationStatus = 1;
sqlSugarClient.Updateable(targetLocation).ExecuteCommand();
sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
@ -574,11 +570,6 @@ namespace SlnMesnac.WCS.WCS
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
wcsTaskLog.Id = id;
startEquip.EquipStatus = 1;
// endEquip.EquipStatus = 1; 终点无需锁,其他地方还可以用
//sqlSugarClient.Updateable(endEquip).ExecuteCommand();
sqlSugarClient.Updateable(startEquip).ExecuteCommand();
sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
#region 修改托盘信息
@ -623,7 +614,7 @@ namespace SlnMesnac.WCS.WCS
//判断色粉存放处是否有空托盘
WcsBaseEquip? emptyPalletEquip = sqlSugarClient.Queryable<WcsBaseEquip>().InnerJoin<WmsPalletInfo>(
(wbe, wpi) => wbe.ContainerCode == wpi.PalletInfoCode && wpi.Amount == 0 && wbe.EquipStatus == 0)
.Where(wbe => wbe.EquipType == 7 && !string.IsNullOrEmpty(wbe.ContainerCode)).OrderByDescending(wbe => wbe.Id).First();
.Where(wbe => wbe.EquipType == 7 && !string.IsNullOrEmpty(wbe.ContainerCode)).OrderBy(wbe => wbe.Id).First();
if (emptyPalletEquip != null) //从色粉存放处生成补充空托盘任务
{
WcsTask task = new WcsTask();
@ -643,7 +634,7 @@ namespace SlnMesnac.WCS.WCS
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
wcsTaskLog.Id = id;
sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
//锁住起止库位
//锁住开始色粉库位
emptyPalletEquip.EquipStatus = 1;
sqlSugarClient.Updateable(emptyPalletEquip).ExecuteCommand();
sqlSugarClient.AsTenant().CommitTran();
@ -690,15 +681,14 @@ namespace SlnMesnac.WCS.WCS
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
wcsTaskLog.Id = id;
sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
//锁住起止库位
//emptyPalletEquip.EquipStatus = 1;
//sqlSugarClient.Updateable(emptyPalletEquip).ExecuteCommand();
sqlSugarClient.AsTenant().CommitTran();
}
catch (Exception ex)
{
sqlSugarClient.AsTenant().RollbackTran();
_logger.Error($"3#车间从2#接驳位补充小托盘任务生成提交事务异常{ex.Message}");
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 0);
}
_logger.Agv($"生成{task.TaskName},起点:{task.CurrPointNo},终点:{task.EndPointNo}");
return;
@ -783,7 +773,7 @@ namespace SlnMesnac.WCS.WCS
//起点库位 2#计量室车间小料箱取送货接驳点
WcsBaseEquip startEquip = sqlSugarClient.Queryable<WcsBaseEquip>().First(it => it.EquipNo == "2DeliverMetrologyRoomPoint");
//终点库位 2#返程色粉人工拿取点
WcsBaseEquip? endEquip = sqlSugarClient.Queryable<WcsBaseEquip>().Where(it => it.EquipStatus == 0 && it.EquipType == 7 && string.IsNullOrEmpty(it.ContainerCode)).OrderByDescending(x => x.Id).First();
WcsBaseEquip? endEquip = sqlSugarClient.Queryable<WcsBaseEquip>().Where(it => it.EquipStatus == 0 && it.EquipType == 7 && string.IsNullOrEmpty(it.ContainerCode)).OrderBy(x => x.Id).First();
if (endEquip == null)
{
//todo推送报警

Loading…
Cancel
Save