Jianw
2025-05-14 29f8b36ebb718d2051bf0e7e701973ec4419ee80
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
--[[
    编码: JX-110-02
    名称: 调度系统-输送线-任务推送
    作者:HAN    
    日期: 2025-1-29
    入口函数: Push
 
    功能说明:
              推送搬运任务到输送线
              {
                "requestPk": "pk2022120614242376",
                "contNo": "60001",
                "contType": "D",
                "trkPrty": "5",
                "trkType": "02",
                "frmPos": "HW-01K010101",
                "toPos": "2F_OUT_ST21",
                "trkSt": 0,
                "clientCode": "wms",
                "reqTime": "2022-11-11 11:32:08"
            }
    变更记录:
 
--]]
 
wms_task = require( "wms_task" )
wms_op = require( "wms_operation" )
 
function Push( strLuaDEID ) 
    local nRet, strRetInfo, strObjJson
    local task
    -- step1: 获取需要推送的任务对象
    nRet, task = m3.GetSysCurEditDataObj( strLuaDEID, "Task" )
    if ( nRet ~= 0  ) then lua.Error( strLuaDEID, debug.getinfo(1), "m3.GetSysCurEditDataObj 失败!"..task ) end
 
    -- step2: 调用NDC接口
    -- 如果任务的类型 = 搬运
    local strXml = ''
    local state_wait = wms_base.Get_nConst( strLuaDEID, "任务状态-等待" )
    -- 如果任务状态 不等于 "等待" 状态就返回,不需要推送
    if (task.bs_state ~= state_wait ) then return end
 
    local wcs_url
    nRet, wcs_url = wms_base.Get_sConst2( strLuaDEID, "WCS服务地址")
    if ( nRet ~= 0 ) then
        lua.Stop( strLuaDEID, "系统无法获取常量'WCS服务地址'")
        return
    end
 
    local trkType = ""  -- 任务类型
    local trkPrty = tostring( task.priority )
    if ( task.type == wms_base.Get_nConst( strLuaDEID, "任务类型-输送线入库搬运" ) or
         task.type == wms_base.Get_nConst( strLuaDEID, "任务类型-堆垛机入库搬运" ) ) then
        trkType = "1"
    elseif ( task.type == wms_base.Get_nConst( strLuaDEID, "任务类型-输送线出库搬运" ) or
             task.type == wms_base.Get_nConst( strLuaDEID, "任务类型-堆垛机出库搬运" ) or
             task.type == wms_base.Get_nConst( strLuaDEID, "任务类型-立库出库搬运" ) ) then
        trkType = "2"
    else
        mobox.stopProgram( strLuaDEID, "任务类型值 = "..task.type..", 不能推送给输送线!")
        return
    end
    --巨沃的料箱需要给WCS传来源系统的值
    local curTime = os.date("%Y-%m-%d %H:%M:%S")
    local strurl =  wcs_url..'/wcs-admin/api/receive'
    local body = {
                    requestPk = task.code,
                    contNo = task.cntr_code,
                    trkType = trkType,
                    trkPrty = trkPrty,
                    frmPos = task.start_loc_code,
                    toPos = task.end_loc_code,
                    clientCode = "wms",
                    reqTime = curTime,
                    souRce = task.source_sys    --来源系统
                }
    lua.Debug( strLuaDEID, debug.getinfo(1), "调WCS接口-->", strurl )                     
    lua.Debug( strLuaDEID, debug.getinfo(1), "body", body )
 
    --[[
    nRet, strRetInfo = mobox.sendHttpRequest( strurl, "",lua.table2str(body) )
    if ( nRet ~= 0 or strRetInfo == '' ) then 
        lua.Error( strLuaDEID, debug.getinfo(1), "调用WCS /wcs-admin/api/receive 接口失败! "..strRetInfo ) 
    end   
    local ret_info = json.decode( strRetInfo ) 
    ]]
    local ret_info = {}
    ret_info.code = "0"
 
    -- step3 设置任务状态=已推送
    if ( ret_info.code == "0" ) then
        nRet, strRetInfo = wms_task.SetStateByCode( strLuaDEID, task.code, "任务状态-已推送" )
        if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), strRetInfo ) end
        -- 1 表示任务已经推送到设备
        nRet, strRetInfo = wms_op.SetTaskState( strLuaDEID, task.op_code, 1 )
        if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), strRetInfo ) end        
 
        local task_action = m3.AllocObject(strLuaDEID,"Task_Action")
        task_action.task_code = task_code
        task_action.action_code = 0
        task_action.action = "任务推送"
        task_action.eq_code = "XXX"
        task_action.eq_type_name = "XXX"
        m3.CreateDataObj( strLuaDEID, task_action ) 
 
    else
        lua.Debug( strLuaDEID, debug.getinfo(1), "调用WCS /wcs-admin/api/receive 接口失败", ret_info.msg ) 
    end
end