--[[ 编码: GT-03-11 名称: 新增-点击确定按钮后 作者:HAN 日期:2023-05-05 函数: AfterClickOk 功能: -- 获取A、B、C、D 工位的装箱数量,如果不为0,新增一个装箱工单 更改记录: V2.0 LZH 2024-06-06 工位设置为12个 V2.1 LZH 2024-06-07 校验该工位是否存在同一批次号物料的启动装箱工单,存在则报错(佳通问题清单序号32) V2.2 LZH 2024-08-09 由于数据模型的调整,进行字段的代码优化 V2.3 LZH 2024-08-29 由于自定义表单的调整,进行代码优化 V2.4 LZH 2024-09-13 如果入库单的状态为新建则修改为启动 --]] json = require("json") mobox = require("OILua_JavelinExt") m3 = require("oi_base_mobox") function AfterClickOk(strLuaDEID) local nRet, strRetInfo, nCount -- V2.3 nRet, strRetInfo = mobox.getCurEditDataObjAttr(strLuaDEID, "S_ORDER_NO", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "S_BATCH_NO", "S_ITEM_CODE", "S_ITEM_NAME", "D_PRODUCT", "F_ACTUAL_QTY", "A_QTY", "B_QTY", "C_QTY", "D_QTY", "E_QTY", "F_QTY", "G_QTY", "H_QTY", "I_QTY", "J_QTY", "K_QTY", "L_QTY", "S_PALLETIZING", "S_DISPERSOID") if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! " .. strRetInfo) end lua.Debug(strLuaDEID, debug.getinfo(1), 'strRetInfo', strRetInfo) local obj_attrs = json.decode(strRetInfo) local order_no = obj_attrs[1].value -- 来料单号 local batch_no = obj_attrs[14].value local item_code = obj_attrs[15].value local item_name = obj_attrs[16].value local product_date = obj_attrs[17].value --生产日期 local actual_qty = lua.StrToNumber(obj_attrs[18].value) -- 批次号总重 local palletizing = obj_attrs[31].value local dispersoid = obj_attrs[32].value local station_array = {} -- 装箱工位 -- V2.0 获取启用的工位装箱数量 local i = 1 local switch = '' for n = 2, 13 do switch = obj_attrs[n].value if (switch == '启用') then local station = {} station.pos = obj_attrs[n].attr station.qty = obj_attrs[n + 17].value station_array[i] = station i = i + 1 end end lua.Debug(strLuaDEID, debug.getinfo(1), 'station_array', station_array) if (station_array == nil or station_array == '' or #station_array == 0) then lua.Error(strLuaDEID, debug.getinfo(1), '装箱工单未选择装箱工位!') end -- 创建装箱工单 for n = 1, #station_array do local packing_order = m3.AllocObject(strLuaDEID, "GT_Packing_Order") packing_order.order_no = order_no packing_order.item_code = item_code packing_order.product_date = product_date packing_order.batch_no = batch_no packing_order.item_name = item_name packing_order.actual_qty = actual_qty packing_order.palletizing = palletizing packing_order.dispersoid = dispersoid packing_order.station = station_array[n].pos packing_order.pack_qty = station_array[n].qty -- V2.0 校验该工位是否存在同一批次号物料的启动装箱工单 local strCondition = "S_STATION = '" .. packing_order.station .. "'AND S_ITEM_CODE = '" .. item_code .. "' AND S_BATCH_NO = '" .. batch_no .. "' 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), packing_order.station .. "工位已存在相同批次物料启用状态的装箱工单!") end nRet, packing_order = m3.CreateDataObj(strLuaDEID, packing_order) if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), 'mobox 创建【装箱工单】对象失败!' .. packing_order) end end -- V2.4 如果入库单的状态为新建则修改为启动 -- 查询条件 local strCondition = "S_ORDER_NO = '" .. order_no .. "'" nRet, strRetInfo = mobox.queryOneDataObjAttr(strLuaDEID, "GT_Incoming_Info", strCondition) if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "queryOneDataObjAttr 失败!" .. strRetInfo) end strRetInfo = json.decode(strRetInfo) if (strRetInfo.state == '新建') then local strSetAttr = "S_STATE = '启用'" nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, "GT_Incoming_Info", strCondition, strSetAttr) if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "设置状态失败!" .. strRetInfo) end -- 如果启动的装箱工单是散装胶的,则调用WCS接口下发机器人规格 if (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 = palletizing } nRet, strRetInfo = CreateInterfaceExc(strLuaDEID, strurl, strHeader, data, "WCS", "机器人规格下发") if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "调用接口失败!" .. strRetInfo) end end end end