|
|
@@ -1,4 +1,6 @@
|
|
|
-namespace WCS.WorkEngineering.WebApi.Models.AGV.Request
|
|
|
+using WCS.Service;
|
|
|
+
|
|
|
+namespace WCS.WorkEngineering.WebApi.Models.AGV.Request
|
|
|
{
|
|
|
public class AgvCallbackRequest
|
|
|
{
|
|
|
@@ -111,5 +113,37 @@
|
|
|
/// 设备编号
|
|
|
/// </summary>
|
|
|
public string eqpCode { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 执行堆垛机任务 单例锁
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="act"></param>
|
|
|
+ public void EX(Action<AgvCallbackRequest> act)
|
|
|
+ {
|
|
|
+ var key = $"WCS:Lock:{act.}";
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (ProtocolProxy.YG150Redis.Get(key) != null) throw new WarnException($"[{Entity.CODE}]--触发并发管控");
|
|
|
+ ProtocolProxy.YG150Redis.Set(key, Entity.CODE);
|
|
|
+ act(this);
|
|
|
+ }
|
|
|
+ catch (DoException ex)
|
|
|
+ {
|
|
|
+ ex.DoExceptionEX(Entity);
|
|
|
+ }
|
|
|
+ catch (WarnException ex)
|
|
|
+ {
|
|
|
+ ex.WarnExceptionEX(Entity);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ ex.ExceptionEx(Entity);
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ ProtocolProxy.YG150Redis.Del(key);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|