From a2861d59d2245b349ded89a6afe8249dd96c52e1 Mon Sep 17 00:00:00 2001 From: fy36 <1046342473@qq.com> Date: 星期一, 09 六月 2025 20:58:05 +0800 Subject: [PATCH] 1. 国科盘点信息同步功能代码校验 2. 小件收货信息同步 3. 完善SKU同步Grid料箱 --- lua_code/Lua/SKU_Sync.lua | 148 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 128 insertions(+), 20 deletions(-) diff --git a/lua_code/Lua/SKU_Sync.lua b/lua_code/Lua/SKU_Sync.lua index 6382c96..1ef0c6c 100644 --- a/lua_code/Lua/SKU_Sync.lua +++ b/lua_code/Lua/SKU_Sync.lua @@ -9,7 +9,8 @@ 鍔熻兘璇存槑: 1. 鎺ユ敹鏉ヨ嚜涓婃父绯荤粺鐨�XML 鏍煎紡鏁版嵁锛屽苟瑙f瀽璇ユ暟鎹� 鍒涘缓SKU鍙奡KU_UPC - + 鏇存柊锛�+ 2025/06/09 鏇存柊浜唘df01~udf04鐨勫睘鎬у彉鏇� <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header @@ -70,7 +71,23 @@ V2.1 Yuanfeng 1. 缁熶竴浜嗚繑鍥炵粨鏋滄牸寮忥紝浣跨敤Create_result鍑芥暟鍒涘缓鏍囧噯鍖栫殑杩斿洖缁撴瀯 2. 浼樺寲浜嗕唬鐮佺粨鏋�---]] wms_base = require("wms_base") +--]] --[[ + 缂栫爜: GK-API-001 + 鍚嶇О: 鐩樼偣璁″垝鍚屾 + 浣滆�: HAN + 鏃ユ湡: 2025-1-29 + + 鍏ュ彛鍑芥暟锛�SKU_Sync + 鏉ユ簮椤圭洰: 鍥界椤圭洰 + + 鍔熻兘璇存槑: + 1. 鎺ユ敹鏉ヨ嚜涓婃父绯荤粺鐨�XML 鏍煎紡鏁版嵁锛屽苟瑙f瀽璇ユ暟鎹� 鍒涘缓SKU鍙奡KU_UPC + + 鏇存敼璁板綍: + V2.0 HAN 20250402 浠g爜瑙勮寖 + V2.1 Yuanfeng 浼樺寲杩斿洖缁撴灉澶勭悊 + V2.2 浼樺寲閿欒澶勭悊鍜岃繑鍥為�杈�+ ]] wms_base = require("wms_base") xml = require("oi_base_xml") mobox = require("OILua_JavelinExt") m3 = require("oi_base_mobox") @@ -87,7 +104,6 @@ local function create_sku_upc(strLuaDEID, storer, item_code, upc_code) local nRet, strRetInfo - if (upc_code == '' or upc_code == nil) then return 0 end @@ -102,37 +118,109 @@ return nRet, strRetInfo end +-- 鍒涘缓/鏇存柊SKU瀵瑰簲鐨勮揣鍝佹枡绠辨牸鍙傛暟 +-- 杈撳叆鍙傛暟锛歴trLuaDEID - 鎵ц鐜ID +-- skuModel - SKU鏁版嵁妯″瀷锛堝寘鍚枡鏍煎弬鏁帮級 +local function create_or_update_sku_gridbox(strLuaDEID, skuModel) + local nRet, strRetInfo + local err_msg = '' + + -- 鑾峰彇榛樿瀹瑰櫒绫诲瀷瀹氫箟缂栫爜 + local nConstRet, CONST_CTD_CODE = wms_base.Get_sConst2("WMS_Default_CNTR_Type") + if nConstRet ~= 0 then + return 1, "鑾峰彇榛樿瀹瑰櫒绫诲瀷瀹氫箟缂栫爜澶辫触: " .. CONST_CTD_CODE + end + + -- 妫�煡蹇呭~瀛楁 + if not skuModel.item_code or not skuModel.storer then + return 1, "缂哄皯蹇呰鍙傛暟: item_code鎴杝torer" + end + + -- 璁剧疆榛樿鏂欐牸绫诲瀷 + skuModel.ctd_code = CONST_CTD_CODE + skuModel.cell_type = skuModel.cell_type -- 鏂欐牸绫诲瀷 + + -- 鏍规嵁鍟嗗搧缂栫爜(item_code)鍜岃揣涓�storer)浠ュ強瀹瑰櫒绫诲瀷瀹氫箟缂栫爜(ctd_code)鍏宠仈鏌ヨ璐у搧鏂欑鏍煎弬鏁�+ local strCondition = string.format("S_ITEM_CODE = '%s' AND S_STORER = '%s' AND S_CTD_CODE='%s'", skuModel.item_code, + skuModel.storer, skuModel.ctd_code) + lua.DebugEx(strLuaDEID, "鏌ヨSKU_GridBox_Parm鏉′欢", strCondition) + + local nRet, gridBoxParams = m3.GetDataObjByCondition(strLuaDEID, "SKU_GridBox_Parm", strCondition) + lua.DebugEx(strLuaDEID, "鏌ヨSKU_GridBox_Parm缁撴灉", gridBoxParams) + + if nRet == 0 then + -- 璁板綍宸插瓨鍦紝鎵ц鏇存柊鎿嶄綔 + local update_gridbox_obj = {{ + id = gridBoxParams.id, + attrs = {{ + attr = "N_LOADING_LIMIT", + value = skuModel.loading_limit -- 鏇存柊瀹瑰櫒瑁呰浇涓婇檺 + }, { + attr = "S_CELL_TYPE", + value = skuModel.cell_type -- 鏇存柊鏂欐牸绫诲瀷 + }} + }} + lua.DebugEx(strLuaDEID, "鍑嗗鏇存柊SKU_GridBox_Parm灞炴�", update_gridbox_obj) + nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, "SKU_GridBox_Parm", lua.table2str(update_gridbox_obj)) + lua.DebugEx(strLuaDEID, "鏇存柊SKU_GridBox_Parm缁撴灉", nRet .. " 杩斿洖鍊� .. strRetInfo) + if nRet ~= 0 then + return 1, "鏇存柊SKU_GridBox_Parm灞炴�澶辫触: " .. strRetInfo + end + elseif nRet == 1 then + -- 璁板綍涓嶅瓨鍦紝鍒涘缓鏂扮殑鏂欑鏍煎弬鏁�+ local gridbox = m3.AllocObject(strLuaDEID, "SKU_GridBox_Parm") + gridbox.item_code = skuModel.item_code -- 鍟嗗搧缂栫爜 + gridbox.storer = skuModel.storer -- 璐т富 + gridbox.ctd_code = skuModel.ctd_code -- 瀹瑰櫒绫诲瀷瀹氫箟缂栫爜 + gridbox.loading_limit = skuModel.loading_limit -- 璁剧疆瀹瑰櫒瑁呰浇涓婇檺 + gridbox.cell_type = skuModel.cell_type -- 鏍肩被鍨�+ lua.DebugEx(strLuaDEID, "鍑嗗鍒涘缓SKU_GridBox_Parm", gridbox) + nRet, strRetInfo = m3.CreateDataObj(strLuaDEID, gridbox) + if nRet ~= 0 then + return 1, "鍒涘缓SKU_GridBox_Parm澶辫触: " .. strRetInfo + end + else + -- 鏌ヨ鍑洪敊 + return 1, "鏌ヨSKU_GridBox_Parm鏃跺嚭閿� " .. strRetInfo + end + return 0, strRetInfo +end + local function create_sku(strLuaDEID, sku_input_data) local nRet, strRetInfo local err_msg = '' -- 鍒嗛厤SKU瀵硅薄 local sku = m3.AllocObject(strLuaDEID, "SKU") + lua.DebugEx(strLuaDEID, "SKU鍒嗛厤瀵硅薄", sku) sku.item_code = sku_input_data.skuId sku.storer = sku_input_data.storerId sku.short_name = sku_input_data.skuName sku.item_name = sku_input_data.skuDec sku.spec = sku_input_data.spec - sku.udf01 = sku_input_data.packageCode - sku.udf02 = sku_input_data.packageQty sku.unit = sku_input_data.goodsUnit - sku.long = lua.Get_NumAttrValue(sku_input_data.length) - sku.middle = lua.Get_NumAttrValue(sku_input_data.width) - sku.short = lua.Get_NumAttrValue(sku_input_data.height) - sku.abc_type = sku_input_data.abcType + sku.long = lua.Get_NumAttrValue(sku_input_data.length) or 0 + sku.middle = lua.Get_NumAttrValue(sku_input_data.width) or 0 + sku.short = lua.Get_NumAttrValue(sku_input_data.height) or 0 + sku.count_method = "Limit"; + sku.abc_type = sku_input_data.abcType or "" sku.is_life_mgt = (sku_input_data.isBatchMgr == "1" and 'Y') or 'N' sku.is_sn_mgt = (sku_input_data.isSnMgr == "1" and 'Y') or 'N' - sku.udf03 = sku_input_data.isSnStorageMgr - sku.img_url = sku_input_data.imgUrl + sku.img_url = sku_input_data.imgUrl or "" sku.cell_type = sku_input_data.cidtype - sku.prod_line = sku_input_data.productLine - sku.udf04 = sku_input_data.storageConditions sku.item_type = sku_input_data.skuType - sku.loading_limit = lua.Get_NumAttrValue(sku_input_data.maxCount) + sku.loading_limit = lua.Get_NumAttrValue(sku_input_data.maxCount) or 0 + --- 2025/6/9 鏂板/鏇存敼瀛楁 + sku.udf01 = sku_input_data.productLine or ""; + sku.udf03 = sku_input_data.isSnStorageMgr or "" + sku.udf02 = sku_input_data.storageConditions or "" + sku.udf04 = sku_input_data.packageCode or ""; + sku.udf05 = lua.Get_NumAttrValue(sku_input_data.packageQty) or 0; + lua.DebugEx(strLuaDEID, "SKU璧嬪�鍚�, sku) -- 妫�煡SKU鏄惁宸插瓨鍦� local id - local strCondition = "S_ITEM_CODE = '" .. sku.item_code .. "' AND S_STORER = '" .. sku.storer .. "'" + local strCondition = string.format("S_ITEM_CODE = '%s' AND S_STORER = '%s'", sku.item_code, sku.storer) nRet, id, strRetInfo = mobox.getDataObjAttrByKeyAttr(strLuaDEID, "SKU", strCondition) if nRet > 1 then @@ -180,9 +268,6 @@ attr = "S_CELL_TYPE", value = sku.cell_type }, { - attr = "S_PROD_LINE", - value = sku.prod_line - }, { attr = "N_LOADING_LIMIT", value = sku.loading_limit }, { @@ -206,6 +291,9 @@ }, { attr = "S_UDF04", value = sku.udf04 + }, { + attr = "S_UDF05", + value = sku.udf05 }} }} @@ -217,7 +305,7 @@ -- 澶勭悊SKU_UPC local upc_codes = {sku_input_data.sptm, sku_input_data.barcode1, sku_input_data.barcode2, sku_input_data.barcode3, - sku_input_data.barcode_pk} + sku_input_data.barcode_pk, sku_input_data.upc} for _, upc_code in ipairs(upc_codes) do if upc_code and upc_code ~= '' then @@ -228,22 +316,38 @@ end end + -- 澶勭悊SKU_GridBox_Parm + nRet, strRetInfo = create_or_update_sku_gridbox(strLuaDEID, sku) + if nRet ~= 0 then + return 1, "澶勭悊SKU_GridBox_Parm澶辫触: " .. strRetInfo + end + return 0 end +-- Main鍑芥暟 function SKU_Sync(strLuaDEID) + -- 鍒濆鍖栨渶缁堢粨鏋�+ local FinalRes = Create_result() + -- 1. 鑾峰彇xml鏁版嵁鍖� local nRet, soap_xml = mobox.getCurEditDataPacket(strLuaDEID) if nRet ~= 0 then FinalRes = Create_result("failure", "201", "鏃犳硶鑾峰彇鏁版嵁鍖� " .. soap_xml) + local xml_result = xml.json_to_xml(FinalRes, "response") + mobox.returnValue(strLuaDEID, 0, xml_result, 0) lua.Stop(strLuaDEID, "鑾峰彇鏁版嵁鍖呭け璐�, FinalRes) return end + + lua.DebugEx(strLuaDEID, "鑾峰彇鍒扮殑鏁版嵁鍖�, soap_xml) -- 2. 瑙f瀽xml local nRet, parsed_data = xml.parse(soap_xml) if nRet ~= 0 then FinalRes = Create_result("failure", "202", "xml鏍煎紡闈炴硶") + local xml_result = xml.json_to_xml(FinalRes, "response") + mobox.returnValue(strLuaDEID, 0, xml_result, 0) lua.Stop(strLuaDEID, "xml鏍煎紡闈炴硶", FinalRes) return end @@ -252,6 +356,8 @@ local sku_data = parsed_data.Envelope.Body.inCommodityReq.COMMODITY_Input.InputParameters.COMMODITY_TB if not sku_data or not sku_data.COMMODITY_TB_ITEM then FinalRes = Create_result("failure", "203", "xml鏁版嵁鏍煎紡閿欒锛岀己灏慍OMMODITY_TB_ITEM") + local xml_result = xml.json_to_xml(FinalRes, "response") + mobox.returnValue(strLuaDEID, 0, xml_result, 0) lua.Stop(strLuaDEID, "xml鏁版嵁鏍煎紡閿欒", FinalRes) return end @@ -263,7 +369,6 @@ end -- 5. 閬嶅巻鎵�湁SKU鏁版嵁 - local FinalRes = Create_result() for i = 1, #sku_items do local sku_item = sku_items[i] @@ -275,12 +380,15 @@ -- 璁剧疆閿欒缁撴灉骞跺仠姝㈠鐞� FinalRes = Create_result("failure", "204", "SKU鍚屾澶辫触", err_msg) + local xml_result = xml.json_to_xml(FinalRes, "response") + mobox.returnValue(strLuaDEID, 0, xml_result, 0) lua.Stop(strLuaDEID, "SKU鍚屾澶辫触: " .. sku_item.skuId, FinalRes) return end end -- 6. 杩斿洖鎴愬姛 + FinalRes = Create_result("success", "0", "SKU鍚屾鎴愬姛") local xml_result = xml.json_to_xml(FinalRes, "response") mobox.returnValue(strLuaDEID, 0, xml_result, 0) end -- Gitblit v1.9.1