Jianw
2025-05-13 3b39fe3810c3ee2ec9ec97236c1769c5c85e062c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--[[
    编码: WMS-100-04
    名称: EQAction
    作者:HAN    
    日期:2025-1-29
        
    入口函数: EQActionProcess
              处理和输送线相关的【MQ_EQAction】设备动作码
        
    功能说明:
            当入库线,出库线出口的线体有 10 动作码时标记输送线线体任务完成
 
    变更记录:
--]]
wms_task = require( "wms_task" )
 
function EQActionProcess ( strLuaDEID ) 
    local nRet, strRetInfo
 
    -- step1  获取设备动作队列 MQ_EQAction
    local mq_eq_action
    nRet, mq_eq_action = m3.GetSysCurEditDataObj( strLuaDEID, "MQ_EQAction ")
    if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), mq_eq_action ) end 
 
    lua.Debug( strLuaDEID, debug.getinfo(1), "mq_eq_action", lua.table2str(mq_eq_action))
    -- step2: 
    -- 获取任务信息,如果有任务编码检查一下任务是否存在
    -- 检查任务的状态是否=完成,已经完成的任务也不能继续接收 action
    local task = {}
    if ( mq_eq_action.task_code ~= '') then
        nRet, task = wms_task.GetInfo( strLuaDEID, mq_eq_action.task_code )
        -- 如果任务不存在或出错, 返回
        if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), task ) end
    else
        task = nil
    end
    if ( task == nil ) then lua.Error( strLuaDEID, debug.getinfo(1), "监听程序无法定位任务信息, 请检查任务编号是否存在! " ) end
 
    -- 任务已经完成
    if ( task.bs_state == wms_base.Get_nConst(strLuaDEID, "任务状态-完成") )  then return end
     
    -- step3  根据设备的动作码进行处理
    -- 以下这些动作要判断一下任务里是否已经有,有返回
    if ( mq_eq_action.action_code == wms_base.Get_nConst(strLuaDEID, "输送线-出库口到货") or
         mq_eq_action.action_code == wms_base.Get_nConst(strLuaDEID, "输送线-入库口到货") ) then
 
        nRet, strRetInfo = wms_task.Action_Exist( strLuaDEID, task.code, mq_eq_action.action_code )
        if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "任务动作检查时出错! "..strRetInfo ) end
        -- 如果这些动作码的任务动作已经存在就返回
        if ( strRetInfo == "yes" ) then return end   
 
        -- 设置任务完成
        nRet, strRetInfo = wms.wms_TaskFinish( strLuaDEID, task.code )
        if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "任务编码='"..task.code.."'的任务设置完成失败!"..strRetInfo ) end         
    end
 
    -- 增加 任务动作 对象
    local task_action = m3.AllocObject(strLuaDEID,"Task_Action")
 
    task_action.task_code = mq_eq_action.task_code
    task_action.action_code = mq_eq_action.action_code
    task_action.action = mq_eq_action.action
    task_action.eq_code = mq_eq_action.eq_code
    task_action.eq_type_name = mq_eq_action.eq_type_name
    task_action.data = lua.FormatJsonString( mq_eq_action.data )
    nRet, strRetInfo = m3.CreateDataObj( strLuaDEID, task_action )
 
    if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), '创建【任务动作】对象失败!'..strRetInfo ) end 
end