lzh
2025-06-19 3a6436e0c88042c6ce8dca2fe8adb0109f0ad9e4
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
--[[
    编码: GT-03-14
    名称: 装箱工单-按钮-设置为启动
    作者:HAN
    日期:2023-05-10
 
    函数: SetState
 
    功能:
       -- 设置为“启动”状态
 
    更改记录:
    V2.0 LZH 2024-06-06 设置状态后刷新页面
    V2.1 LZH 2024-06-06 同一工位同时只能有一个启动状态的装箱工单
 
--]]
json  = require("json")
mobox = require("OILua_JavelinExt")
m3    = require("oi_base_mobox")
 
function SetState(strLuaDEID)
    local nRet, strRetInfo, objs, nCount
 
    -- 获取当前选中的数据对象
    nRet, objs = m3.GetSysDataJson(strLuaDEID)
    if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), objs) end
    lua.Debug(strLuaDEID, debug.getinfo(1), '设置为启动参数:', objs)
 
    local obj_attrs
    local strCondition, strSetAttr
 
    for n = 1, #objs do
        obj_attrs = m3.KeyValueAttrsToObjAttr(objs[n].attrs)
        if (obj_attrs ~= nil and obj_attrs ~= '') then
            -- V2.1 判断该工位下面是否已经存在启用状态的装箱工单
            strCondition = "S_STATION = '" .. obj_attrs.S_STATION .. "' AND S_STATE = '启用'"
            nRet, nCount = mobox.getDBRecordCount(strLuaDEID, "TN_GT_Packing_Order", strCondition)
            if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), nCount) end
            if (tonumber(nCount) > 0) then
                lua.Error(strLuaDEID, debug.getinfo(1),
                    obj_attrs.S_STATION .. "工位已存在启用状态的装箱工单!")
            end
 
            if (obj_attrs.S_STATE == '新建') then
                strCondition = "S_PACK_NO = '" .. obj_attrs.S_PACK_NO .. "'"
                strSetAttr = "S_STATE = '启用'"
                nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, "GT_Packing_Order", strCondition,
                    strSetAttr)
                if (nRet ~= 0) then
                    lua.Error(strLuaDEID, debug.getinfo(1), "设置状态失败!" .. strRetInfo)
                end
 
                -- 如果启动的装箱工单是散装胶的,则调用WCS接口下发机器人规格
                if (obj_attrs.S_DISPERSOID == 'Y') then
                    -- 调用国自的任务下发接口
                    local strCode = lua.guid() -- 生产一个GUID字符串
                    local url = wms_base.Get_sConst(strLuaDEID, "WCS-url")
                    local strurl = url .. "/ChangeSpecifications"
                    local strHeader = ""
                    local data = {
                        req_no = strCode,
                        palletizing = obj_attrs.S_PALLETIZING
                    }
                    nRet, strRetInfo = CreateInterfaceExc(strLuaDEID, strurl, strHeader, data, "WCS", "机器人规格下发")
                    if (nRet ~= 0) then
                        lua.Error(strLuaDEID, debug.getinfo(1), "调用接口失败!" .. strRetInfo)
                    end
                end
            end
        end
    end
    -- V2.0 设置状态后刷新Grid页面
    local strAction = '[{"action_type":"refresh","value":""}]'
    nRet, strRetInfo = mobox.setAction(strLuaDEID, strAction)
    if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "setAction错误: " .. strRetInfo) end
end