--[[
|
编码:
|
名称: LocStateFeedBack
|
作者:
|
入口函数:LocStateFeedBack
|
功能说明:
|
变更历史:
|
--]]
|
require("WMS-Equipment")
|
wms_cntr = require("wms_container")
|
wms_wh = require("wms_wh")
|
require("GT-Base")
|
require("GT_InAndOutboundPolicies")
|
function LocStateFeedBack(strLuaDEID)
|
local nRet, in_date, strRetInfo
|
-- step1 获取接口数据
|
nRet, in_date = m3.GetSysDataJson(strLuaDEID)
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "无法获取数据包!" .. in_date) end
|
lua.Debug(strLuaDEID, debug.getinfo(1), '参数:', in_date)
|
|
-- step2 判断 必填项 是否都有值?没值报错返回
|
local loc_code = in_date.loc_code -- 货位
|
local type = lua.StrToNumber(in_date.type) -- 1 允许取货 2 允许放货 3 取货完成允许离开 4 放货完成允许离开
|
local req_no = lua.StrToNumber(in_date.req_no) -- 唯一码
|
if (loc_code == nil or loc_code == '') then lua.Error(strLuaDEID, debug.getinfo(1), "站点不能为空!") end
|
if (type == nil) then lua.Error(strLuaDEID, debug.getinfo(1), "类型不能为空!") end
|
|
-- 根据WCS站点获取货位
|
loc_code = wms_base.Get_sConst(strLuaDEID, loc_code)
|
|
-- 根据类型和站点 获取对应的AGV任务
|
local task_no
|
if (type == 1 or type == 3) then
|
-- 站点为起点,任务状态为已推送
|
local condition = "S_START_LOC = '" ..
|
loc_code ..
|
"' AND N_B_STATE = 1 AND S_CODE IN (SELECT S_TASK_CODE FROM TN_Task_Action WHERE N_ACTION_CODE = " .. type .. ")"
|
nRet, strRetInfo = m3.GetDataObjByCondition(strLuaDEID, "Task", condition, "T_CREATE")
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "获取【任务】信息失败! " .. strRetInfo) end
|
task_no = strRetInfo.code
|
elseif (type == 2) then
|
-- 站点为终点,任务状态为已推送
|
local condition = "S_END_LOC = '" ..
|
loc_code ..
|
"' AND N_B_STATE = 1 AND S_CODE IN (SELECT S_TASK_CODE FROM TN_Task_Action WHERE N_ACTION_CODE = " .. type .. ")"
|
nRet, strRetInfo = m3.GetDataObjByCondition(strLuaDEID, "Task", condition, "T_CREATE")
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "获取【任务】信息失败! " .. strRetInfo) end
|
task_no = strRetInfo.code
|
elseif (type == 4) then
|
-- 站点为终点,任务状态为已推送
|
local condition = "S_END_LOC = '" ..
|
loc_code .. "' AND S_CODE IN (SELECT S_TASK_CODE FROM TN_Task_Action WHERE N_ACTION_CODE = " .. type .. ")"
|
nRet, strRetInfo = m3.GetDataObjByCondition(strLuaDEID, "Task", condition, "T_CREATE")
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "获取【任务】信息失败! " .. strRetInfo) end
|
if (strRetInfo.op_name == '退料入库' or strRetInfo.op_name == 'AGV空托回库') then
|
-- 解锁货位
|
nRet, strRetInfo = wms.wms_UnlockByTask(strLuaDEID, loc_code)
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "wms_UnlockByTask 失败! " .. strRetInfo) end
|
end
|
else
|
lua.Error(strLuaDEID, debug.getinfo(1), "未定义的状态反馈类型!")
|
end
|
|
-- 调用AGV的安全交互接口
|
local url = wms_base.Get_sConst(strLuaDEID, "AGV-url")
|
local strurl = url .. "/AllowThrough"
|
local strHeader = ""
|
local data = {
|
task_no = task_no,
|
type = type, -- 1 允许取货 2 允许放货 3 取货完成允许离开 4 放货完成允许离开
|
loc = loc_code,
|
req_no = req_no
|
}
|
nRet, strRetInfo = CreateInterfaceExc(strLuaDEID, strurl, strHeader, data, "AGV", "货位状态反馈")
|
if (nRet ~= 0) then
|
lua.Error(strLuaDEID, debug.getinfo(1), "调用接口失败!" .. strRetInfo)
|
end
|
end
|