Commit 134a19b4 LN

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

1 个父辈 3806a146
......@@ -117,9 +117,11 @@ PRO,压紧轴(轴4)七寸盘压紧前点相对压紧点的位置,CompAxis7_P
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
/// </summary>
public partial class AC_BOX_Bean : KTK_Store
{
private ShelfData serverShelfData = null;
private TaskData taskData = null;
public EnteryDoorBean DoorBean = null;
private bool IsIntSlvBlock = false;
public AutoInoutInfo AutoInout = new AutoInoutInfo();
......@@ -35,10 +35,7 @@ namespace OnlineStore.DeviceLibrary
/// 所有料架库位列表
/// </summary>
public List<string> ShelfPosList = new List<string>();
///// <summary>
///// 料架未放料盘的位置列表
///// </summary>
// public ConcurrentQueue<string> EmprtShelfList = new ConcurrentQueue<string>();
public HumitureBean humBean = null;
private System.Timers.Timer serverConnectTimer = new System.Timers.Timer();
......
......@@ -785,7 +785,7 @@ namespace OnlineStore.DeviceLibrary
return false;
}
serverShelfData = null;
taskData = null;
storeStatus = StoreStatus.OutStoreExecute;
storeRunStatus = StoreRunStatus.Busy;
MoveInfo.NewMove(StoreMoveType.OutStore, param);
......@@ -945,18 +945,17 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.Comp_Axis, moveP.ComPress_P1, Config.CompAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_LP101, Config.UpDownAxis_P101_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
serverShelfData = null;
taskData = null;
Task.Factory.StartNew(delegate
{
int posLoc = StoreManager.GetShelfPosIndex(MoveInfo.MoveParam.ShelfPosID, ShelfPosList);
//分盘料和紧急料发PutFinished
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))
{
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】【"+GetLastRfid()+"】PutShelfFinished 结果:" + msg);
serverShelfData = null;
LogUtil.error(Name + "[" + MoveInfo.MoveParam.WareCode + "] [" + CurrShelfID + "_" + GetLastRfid() + "] [" + posLoc + "] afterPutCut 结果:" + msg);
}
}
else
......@@ -965,8 +964,7 @@ namespace OnlineStore.DeviceLibrary
string msg = StoreManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, CurrShelfID + "@" + posLoc.ToString(), out newTaskCount);
if (String.IsNullOrEmpty(msg).Equals(false))
{
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】【" + GetLastRfid() + "】UpdateTrayLoc 结果:" + msg);
serverShelfData = null;
LogUtil.error(Name + "[" + MoveInfo.MoveParam.WareCode + "] [" + CurrShelfID + "_" + GetLastRfid() + "] [" + posLoc + "] UpdateTrayLoc 结果:" + msg);
}
if (newTaskCount > MoveInfo.MoveParam.taskCount)
{
......@@ -995,29 +993,42 @@ namespace OnlineStore.DeviceLibrary
{
//判断是否需要送出料架
bool isNeedSend = false;
string logName = "【" + CurrShelfID + "】【" + GetLastRfid() + "】";
string logName = "【" + CurrShelfID + "_" + GetLastRfid() + "】";
//只有rfid不为空才需要送出料架
if (String.IsNullOrEmpty(MoveInfo.MoveParam.rfid))
{
InOutStoreLog("出库完成,未设置rfid,不需要送出料架");
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;
}
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;
}
}
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;
}
if (isNeedSend)
......@@ -1029,7 +1040,7 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - startOutStoreTime;
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : "";
storeStatus = StoreStatus.StoreOnline;
LogInfo(" 【" + posId + "】 " + logName + " 整个出库流程结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
LogInfo(" 【" + posId + "】 " + logName + " 出库结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
if (!String.IsNullOrEmpty(MoveInfo.MoveParam.rfid))
{
if (StoreManager.Store.AutoShelfInstore)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!