Commit 134a19b4 LN

紧急料分盘料送出料架逻辑修改

1 个父辈 3806a146
...@@ -117,9 +117,11 @@ PRO,压紧轴(轴4)七寸盘压紧前点相对压紧点的位置,CompAxis7_P ...@@ -117,9 +117,11 @@ PRO,压紧轴(轴4)七寸盘压紧前点相对压紧点的位置,CompAxis7_P
agv到达时,根据rfid判断是否有料架 agv到达时,根据rfid判断是否有料架
20200411
出库时未读到料架号,直接送出料架 出库时未读到料架号,直接送出料架
紧急料分盘料料架送出逻辑修改。
分盘料/紧急料放上料串或料架时调用

/rest/api/qisda/device/afterPutCut

参数:
cid: 料仓cid,流水线可传入空
barcode : 条码
rfid : RFID
rfidLoc: 料架位置,流水线可传-1

> 返回: 
>>` {"code": 0, "msg":"ok", "data":{"cutPackageTask":"0","urgentPackageTask":"20","cutTask":"21","urgentTask":"22"}} `
>>
>> - code: 0为正常,其他为异常, 
>> - msg:消息, 
>> - data:为包装料仓的空闲仓位数(key为与客户端一致的料仓标识,value为空闲仓位)
>> - cutPackageTask: 表示当前包装仓的分盘任务数
>> - urgentPackageTask: 表示当前包装仓的紧急料任务数
>> - cutTask: 表示流水线分盘任务数
>> - urgentTask: 表示流水线紧急料任务数
......
...@@ -18,7 +18,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -18,7 +18,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary> /// </summary>
public partial class AC_BOX_Bean : KTK_Store public partial class AC_BOX_Bean : KTK_Store
{ {
private ShelfData serverShelfData = null; private TaskData taskData = null;
public EnteryDoorBean DoorBean = null; public EnteryDoorBean DoorBean = null;
private bool IsIntSlvBlock = false; private bool IsIntSlvBlock = false;
public AutoInoutInfo AutoInout = new AutoInoutInfo(); public AutoInoutInfo AutoInout = new AutoInoutInfo();
...@@ -35,10 +35,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -35,10 +35,7 @@ namespace OnlineStore.DeviceLibrary
/// 所有料架库位列表 /// 所有料架库位列表
/// </summary> /// </summary>
public List<string> ShelfPosList = new List<string>(); public List<string> ShelfPosList = new List<string>();
///// <summary>
///// 料架未放料盘的位置列表
///// </summary>
// public ConcurrentQueue<string> EmprtShelfList = new ConcurrentQueue<string>();
public HumitureBean humBean = null; public HumitureBean humBean = null;
private System.Timers.Timer serverConnectTimer = new System.Timers.Timer(); private System.Timers.Timer serverConnectTimer = new System.Timers.Timer();
......
...@@ -785,7 +785,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -785,7 +785,7 @@ namespace OnlineStore.DeviceLibrary
return false; return false;
} }
serverShelfData = null; taskData = null;
storeStatus = StoreStatus.OutStoreExecute; storeStatus = StoreStatus.OutStoreExecute;
storeRunStatus = StoreRunStatus.Busy; storeRunStatus = StoreRunStatus.Busy;
MoveInfo.NewMove(StoreMoveType.OutStore, param); MoveInfo.NewMove(StoreMoveType.OutStore, param);
...@@ -945,18 +945,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -945,18 +945,17 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.Comp_Axis, moveP.ComPress_P1, Config.CompAxis_P1_Speed); ACAxisMove(Config.Comp_Axis, moveP.ComPress_P1, Config.CompAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_LP101, Config.UpDownAxis_P101_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_LP101, Config.UpDownAxis_P101_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
serverShelfData = null; taskData = null;
Task.Factory.StartNew(delegate Task.Factory.StartNew(delegate
{ {
int posLoc = StoreManager.GetShelfPosIndex(MoveInfo.MoveParam.ShelfPosID, ShelfPosList); int posLoc = StoreManager.GetShelfPosIndex(MoveInfo.MoveParam.ShelfPosID, ShelfPosList);
//分盘料和紧急料发PutFinished //分盘料和紧急料发PutFinished
if (MoveInfo.MoveParam.cutReel || MoveInfo.MoveParam.urgentReel) if (MoveInfo.MoveParam.cutReel || MoveInfo.MoveParam.urgentReel)
{ {
string msg = StoreManager.PutShelfFinished(Name, MoveInfo.MoveParam.WareCode, CurrShelfID, posLoc.ToString(), out serverShelfData); string msg = StoreManager.afterPutCut(Name, CurrShelfID, MoveInfo.MoveParam.WareCode, CID, posLoc, out taskData);
if (String.IsNullOrEmpty(msg).Equals(false)) if (String.IsNullOrEmpty(msg).Equals(false))
{ {
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】【"+GetLastRfid()+"】PutShelfFinished 结果:" + msg); LogUtil.error(Name + "[" + MoveInfo.MoveParam.WareCode + "] [" + CurrShelfID + "_" + GetLastRfid() + "] [" + posLoc + "] afterPutCut 结果:" + msg);
serverShelfData = null;
} }
} }
else else
...@@ -965,8 +964,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -965,8 +964,7 @@ namespace OnlineStore.DeviceLibrary
string msg = StoreManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, CurrShelfID + "@" + posLoc.ToString(), out newTaskCount); string msg = StoreManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, CurrShelfID + "@" + posLoc.ToString(), out newTaskCount);
if (String.IsNullOrEmpty(msg).Equals(false)) if (String.IsNullOrEmpty(msg).Equals(false))
{ {
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】【" + GetLastRfid() + "】UpdateTrayLoc 结果:" + msg); LogUtil.error(Name + "[" + MoveInfo.MoveParam.WareCode + "] [" + CurrShelfID + "_" + GetLastRfid() + "] [" + posLoc + "] UpdateTrayLoc 结果:" + msg);
serverShelfData = null;
} }
if (newTaskCount > MoveInfo.MoveParam.taskCount) if (newTaskCount > MoveInfo.MoveParam.taskCount)
{ {
...@@ -995,29 +993,42 @@ namespace OnlineStore.DeviceLibrary ...@@ -995,29 +993,42 @@ namespace OnlineStore.DeviceLibrary
{ {
//判断是否需要送出料架 //判断是否需要送出料架
bool isNeedSend = false; bool isNeedSend = false;
string logName = "【" + CurrShelfID + "】【" + GetLastRfid() + "】"; string logName = "【" + CurrShelfID + "_" + GetLastRfid() + "】";
//只有rfid不为空才需要送出料架 //只有rfid不为空才需要送出料架
if (String.IsNullOrEmpty(MoveInfo.MoveParam.rfid)) if (String.IsNullOrEmpty(MoveInfo.MoveParam.rfid))
{ {
InOutStoreLog("出库完成,未设置rfid,不需要送出料架"); InOutStoreLog("出库完成,未设置rfid,不需要送出料架");
isNeedSend = false; isNeedSend = false;
} }
else if (serverShelfData != null) else if (MoveInfo.MoveParam.cutReel)
{ {
if (serverShelfData.packageEmpty <= 0) if (taskData != null && taskData.cutPackageTask <= 0)
{ {
InOutStoreLog("出库完成,料架"+ logName + "没有位置,packageEmpty=" + serverShelfData.packageEmpty + ",送出料架"); InOutStoreLog(logName + "分盘料出库完成,cutPackageTask=" + taskData.cutPackageTask + ",送出料架");
isNeedSend = true; isNeedSend = true;
} }
else if ((serverShelfData.cutPackageTask + serverShelfData.packageTask) <= 0) else if (taskData == null)
{ {
InOutStoreLog("出库完成,料架" + logName + "没有出库任务,cutPackageTask=" + serverShelfData.cutPackageTask + ",packageTask=" + serverShelfData.packageTask + ",送出料架"); InOutStoreLog(logName + "分盘料出库完成,taskData=null,送出料架");
isNeedSend = true; isNeedSend = true;
} }
} }
else if (MoveInfo.MoveParam.taskCount <=0) else if (MoveInfo.MoveParam.urgentReel)
{ {
InOutStoreLog("出库完成,料架" + logName + "没有出库任务,taskCount=" + MoveInfo.MoveParam.taskCount + " 送出料架"); if (taskData != null && taskData.urgentPackageTask <= 0)
{
InOutStoreLog(logName + "紧急料出库完成,urgentPackageTask=" + taskData.urgentPackageTask + ",送出料架");
isNeedSend = true;
}
else if (taskData == null)
{
InOutStoreLog(logName + "紧急料出库完成,taskData=null,送出料架");
isNeedSend = true;
}
}
else if (MoveInfo.MoveParam.taskCount <= 0)
{
InOutStoreLog(logName + "出库完成,taskCount=" + MoveInfo.MoveParam.taskCount + " 送出料架");
isNeedSend = true; isNeedSend = true;
} }
if (isNeedSend) if (isNeedSend)
...@@ -1029,7 +1040,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1029,7 +1040,7 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - startOutStoreTime; TimeSpan span = DateTime.Now - startOutStoreTime;
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : ""; string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : "";
storeStatus = StoreStatus.StoreOnline; storeStatus = StoreStatus.StoreOnline;
LogInfo(" 【" + posId + "】 " + logName + " 整个出库流程结束,耗时【" + FormUtil.GetSpanStr(span) + "】!"); LogInfo(" 【" + posId + "】 " + logName + " 出库结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
if (!String.IsNullOrEmpty(MoveInfo.MoveParam.rfid)) if (!String.IsNullOrEmpty(MoveInfo.MoveParam.rfid))
{ {
if (StoreManager.Store.AutoShelfInstore) if (StoreManager.Store.AutoShelfInstore)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!