From 70eedd3bf9810bc022967da6446dd8a0ff6f43b7 Mon Sep 17 00:00:00 2001 From: wsz <w1832984788@outlook.com> Date: 星期二, 10 六月 2025 14:28:23 +0800 Subject: [PATCH] 提交03、 --- lua_code/Lua/GK-API-03.lua | 401 +++++++++++++++++ lua_code/Lua/GK-API-08.lua | 330 ++++++++++++++ lua_code/Lua/GK-API-07.lua | 603 ++++++++++++++++++++++++++ 3 files changed, 1,334 insertions(+), 0 deletions(-) diff --git a/lua_code/Lua/GK-API-03.lua b/lua_code/Lua/GK-API-03.lua new file mode 100644 index 0000000..db80358 --- /dev/null +++ b/lua_code/Lua/GK-API-03.lua @@ -0,0 +1,401 @@ +--- +--- Created by wsz. +--- DateTime: 2025/5/13 涓婂崍9:02 +--- +--[[ + 缂栫爜:GK-API-03 + 鍚嶇О: 鍟嗗搧鎵规鍚屾鎺ュ彛 + 浣滆�: + 鍏ュ彛鍑芥暟锛欱atch_Sync + 鍔熻兘璇存槑:鍒涘缓銆佽鐩朑K_BATCH瀹炰綋 鍚屾椂鏇存柊CG_Detail鐩稿叧鑷畾涔夊瓧娈�+ 鍙樻洿鍘嗗彶: + + v0.0.2 + 鏍煎紡楠岃瘉涓嶉�杩囩殑杩斿洖鎶ユ枃 + 绯荤粺寮傚父闇�error鎶涘嚭 + resp + + v0.0.3 + CG_Detail寮冪敤锛屽彉鏇翠负 搴撳瓨琛�INV_Detail + + --]] + +local json = require("json") +local mobox = require("OILua_JavelinExt") +local m3 = require("oi_base_mobox") + +local xml = require("oi_base_xml") + +--- 瀹炰綋鏍囪瘑-鍟嗗搧鎵规鍚屾 TN_GK_BATCH +local CLSID_GKbatch = "GK_BATCH" +--- 瀹炰綋鏍囪瘑-璐т綅瀹瑰櫒璐у搧鏄庣粏 TN_CG_Detail | 鍙樻洿涓� 搴撳瓨琛�INV_Detail +local CLSID_INVdetail = "INV_Detail" + +-- local apiDesc = "鍟嗗搧鎵规鍚屾鎺ュ彛" + + +--鏍规爣绛�+local RootTag = "response" + + + +--[[ +desc:澶勭悊xml->table 閮ㄥ垎绌鸿妭鐐硅杞寲涓簕} +parameter: + value-瀛楃涓叉垨绌簍able{} +return: nil/瀛楃涓�+-- 澶�闆嗕腑澶勭悊 +--]] +local function getStrHandle(value) + --if (type(value) == "table" and #value == 0) then + -- return nil + --else + -- return lua.Get_StrAttrValue(value) + --end + return lua.Get_StrAttrValue(value) +end + + +-- mergeTablesDeep杈呭姪-閫掑綊 +local function deepCopy(original) + if type(original) ~= 'table' then + return original + end + local copy = {} + for key, value in pairs(original) do + copy[key] = deepCopy(value) + end + return copy +end + +-- 灏唗ableb鍚堝苟鍒皌ablea +local function mergeTablesDeep(tablea, tableb) + local bCopy = deepCopy(tableb) + for key, value in pairs(bCopy) do + tablea[key] = value + end + return tablea +end + + +--[[ +-- 浜嬪姟鍥炴粴-杩斿洖淇℃伅鍚庣粓姝㈡墽琛�+]] +local function result_transaction_back(strLuaDEID, msg) + + -- 鍥炴粴褰撴澶勭悊 + lua.Stop(strLuaDEID, msg) + + local result = {} + result.flag = "failure" -- success|failure + result.code = 5 + result.message = msg + + do + local nRet = mobox.returnValue(strLuaDEID, 1, xml.json_to_xml(result, RootTag), result.code) + if nRet ~= 0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_transaction_back-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end + + lua.Error(strLuaDEID, debug.getinfo(1), msg) +end + + +--[[ +-- 鎵ц鎴愬姛 +]] +local function result_success(strLuaDEID) + + local result = {} + result.flag = "success" -- success|failure + result.code = 0 + result.message = "" + do + local nRet = mobox.returnValue(strLuaDEID, 1, xml.json_to_xml(result, RootTag), result.code) + if nRet ~= 0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_success-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end +end + + + + +--[[ +缁勮涓存椂瀵硅薄 +]] +local function buildTemp(dataSet) + local temp = {} -- 鏀剧疆寰呭垱寤烘暟鎹�+ + -- 鐗╂枡缂栫爜/鍟嗗搧浠g爜 + temp.storer_no = getStrHandle(dataSet.storerId)-- getStrHandle(dataSet.skuId) + -- 璐т富缂栫爜 + temp.item_code = getStrHandle(dataSet.skuId) --getStrHandle(dataSet.storerId) + -- 鐗╂潈 + temp.owner_no = getStrHandle(dataSet.ownerId) + -- 鎵规缂栫爜 + temp.wms_bn = getStrHandle(dataSet.batchNo) + -- 鎵瑰彿 + temp.batch_no = getStrHandle(dataSet.produceCode) + -- 鐢熶骇鏃ユ湡 + temp.product_date = getStrHandle(dataSet.productDate) + -- 鏈夋晥鏃ユ湡 + temp.expiry_date = getStrHandle(dataSet.expiryDate) + -- 娉ㄥ唽璇佸彿 + temp.register_no = getStrHandle(dataSet.registerNo) + -- 鐢熶骇浼佷笟 + temp.company_name = getStrHandle(dataSet.companyName) + -- 璇佷欢鐢熶骇鍘傚 + temp.cert_company_name = getStrHandle(dataSet.certCompanyName) + -- 濮旀墭鐢熶骇鍘傚 + temp.consign_company_name = getStrHandle(dataSet.consignCompanyWTName) + -- 鐏弻鏃ユ湡 + temp.sterilization_date = getStrHandle(dataSet.sterilizationData) + -- 澶囨敞 + temp.note = getStrHandle(dataSet.memo) + -- 澶囨敞 + temp.ex1 = getStrHandle(dataSet.ex1) + -- 澶囨敞 + temp.ex2 = getStrHandle(dataSet.ex2) + -- 澶囨敞 + temp.ex3 = getStrHandle(dataSet.ex3) + + return temp +end + + +--[[ + +strClsID: 鏁版嵁绫籭d +dataObj锛氬緟鍒涘缓鐨勬暟鎹璞�+ +--]] +local function create_obj(strLuaDEID, strClsID, dataObj) + + -- 鍩虹楠岃瘉 + if (nil == strClsID or strClsID == '') then + result_transaction_back(strLuaDEID, "[鍟嗗搧鎵规鍚屾鎺ュ彛]-鍒涘缓瀵硅薄澶辫触,strClsID涓嶅彲涓虹┖") + end + if type(dataObj) ~= 'table' then + result_transaction_back(strLuaDEID, "[鍟嗗搧鎵规鍚屾鎺ュ彛]-鍒涘缓瀵硅薄澶辫触,dataObj蹇呴』涓簍able绫诲瀷") + end + + -- + local creatobj = m3.AllocObject(strLuaDEID, strClsID) + + mergeTablesDeep(creatobj, dataObj) + local nRet, resultData = m3.CreateDataObj(strLuaDEID, creatobj) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format("鍒涘缓瀵硅薄[%s]澶辫触,msg锛�s", strClsID, resultData)) + end +end + + +--[[ +desc:鏇存柊鐩爣鏁版嵁 +]] +local function updateBussData(strLuaDEID, dataSet, id) + local temp = buildTemp(dataSet) + + local attrValueObj + do + -- 鍙栧緱 鍙敤鏉ユ洿鏂版暟鎹簱鐨�attr-value 鐨�table 绫诲瀷 [attrValueObj] + -- luaJsonToObjAttrs 鎵ц鍚庤繑鍥炵殑str_data_attrset 鏄瓧绗︿覆锛屼笖attr 鏄暟鎹簱瀛楃涓�闇�弽搴忓垪鍖栧鐞嗕负table + local nRet, str_data_attrset = mobox.luaJsonToObjAttrs(CLSID_GKbatch, json.encode(temp)) + + if nRet ~= 0 then + result_transaction_back(strLuaDEID, 'upd-goodsbatsh item 鏃秎uaJsonToObjAttrs鎵ц澶辫触锛岃缁嗭細' .. str_data_attrset) + end + -- 鍙嶅簭鍒楀寲涓虹洰鏍囨牸寮�+ attrValueObj = json.decode(str_data_attrset) + end + -- 褰撶▼搴忓彲浠ヨ繍琛屼互涓嬫椂 - 璁や负 if nRet == 0 --- 鎵цupd閫昏緫 + lua.Debug(strLuaDEID, debug.getinfo(1), "attrValueObj", attrValueObj) + -- 缁勮鎵归噺鏇存柊鐨勬暟鎹牸寮�+ local updateObj = {} + + local updateObj_item = {} + updateObj_item.id = id + updateObj_item.attrs = attrValueObj + table.insert(updateObj, updateObj_item) + + --local updateObj = { + -- { + -- id = id, + -- attrs = attrValueObj + -- } + --} + + local updateStrDataJson = lua.table2str(updateObj) + lua.Debug(strLuaDEID, debug.getinfo(1), "goodsbatch-update鍑嗗瑕嗙洊宸叉湁鏁版嵁", updateStrDataJson) + local nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, CLSID_GKbatch, updateStrDataJson) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format("goodbatch鏇存柊鎿嶄綔澶辫触銆俢ode锛�s锛宮sg锛�s", nRet, strRetInfo)) + end +end + + +--[[ +desc:鍒涘缓鐩爣鏁版嵁 +]] +local function creatBussData(strLuaDEID, dataSet) + local temp = buildTemp(dataSet) + + lua.Debug(strLuaDEID, debug.getinfo(1), "goodsbatch寰呮柊澧炴暟鎹�temp", temp) + + create_obj(strLuaDEID, CLSID_GKbatch, temp) +end + + +--[[ +鍗曟潯 +]] +local function bussHandle(strLuaDEID, dataSet) + + -- 瀵逛簬 闈炴暟缁勮〃 杩斿洖0 璁ゅ畾浠呭崟鏉�?? + lua.Debug(strLuaDEID, debug.getinfo(1), "dataSet", dataSet) + + -- 缁勮sql杩囨护鏉′欢 + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_STORER", getStrHandle(dataSet.storerId)))--getStrHandle(dataSet.skuId))) + table.insert(filters, string.format([[ %s = '%s' ]], "S_ITEM_CODE", getStrHandle(dataSet.skuId)))--getStrHandle(dataSet.storerId))) + table.insert(filters, string.format([[ %s = '%s' ]], "S_OWNER", getStrHandle(dataSet.ownerId))) + table.insert(filters, string.format([[ %s = '%s' ]], "S_WMS_BN", getStrHandle(dataSet.batchNo))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮鐨刧oodsbatch鐨剋here鏉′欢", strCondition) + end + + local nRet, id, strRetInfo = mobox.getDataObjAttrByKeyAttr(strLuaDEID, CLSID_GKbatch, strCondition) + lua.Debug(strLuaDEID, debug.getinfo(1), "getDataObjAttrByKeyAttr", strRetInfo) + if nRet == 0 then + -- key宸插瓨鍦紝鏇存柊鍘熸暟鎹�+ lua.Debug(strLuaDEID, debug.getinfo(1), "add", "鏁版嵁鏇存柊锛� .. strRetInfo) + updateBussData(strLuaDEID, dataSet, id) + elseif nRet == 1 then + -- key涓嶅瓨鍦紝鏂板 + lua.Debug(strLuaDEID, debug.getinfo(1), "upd", "鏁版嵁鏂板") + creatBussData(strLuaDEID, dataSet) + else + result_transaction_back(strLuaDEID, string.format("鏌ヨ鐩爣鏁版嵁澶辫触锛宑ode锛�s锛宮sg锛�s", nRet, strRetInfo)) + end +end + +--[[ +缁勮鏁版嵁key +skuId+storerId+ownerId+batchNo鍞竴锛堝繀濉級 +]] +local function getId(dataSet) + return getStrHandle(dataSet.skuId) + .. getStrHandle(dataSet.storerId) + .. getStrHandle(dataSet.ownerId) + .. getStrHandle(dataSet.batchNo) +end + + + + + + + + +--[[ +鍚屾椂鏇存柊 CGDetail 瀛楁 +绛栫暐锛氭煡鎵�skuId+storerId+ownerId+batchNo 鏁版嵁锛岀劧鍚庣殑 +]] +local function updateCG_Detail(strLuaDEID, dataSet) + + lua.Debug(strLuaDEID, debug.getinfo(1), "寮�鏇存柊updateCG_Detail", '') + -- 1. 缁勮鏌ヨ鏉′欢 type:str + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_STORER", getStrHandle(dataSet.storerId))) + table.insert(filters, string.format([[ %s = '%s' ]], "S_OWNER", getStrHandle(dataSet.ownerId))) + table.insert(filters, string.format([[ %s = '%s' ]], "S_ITEM_CODE", getStrHandle(dataSet.skuId))) + table.insert(filters, string.format([[ %s = '%s' ]], "S_WMS_BN", getStrHandle(dataSet.batchNo))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮鐨刢g-detail鐨剋here鏉′欢", strCondition) + end + + -- 2. 缁勮寰呮洿鏂板瓧娈�type:str + local strUpdateSql + do + local updater = {} + table.insert(updater, string.format([[ %s = '%s' ]], "S_BATCH_NO", getStrHandle(dataSet.produceCode))) -- 鎵瑰彿 | 鎵瑰彿 + table.insert(updater, string.format([[ %s = '%s' ]], "D_PRD_DATE", getStrHandle(dataSet.productDate))) -- 鐢熶骇鏃ユ湡 | 鐢熶骇鏃ユ湡 + table.insert(updater, string.format([[ %s = '%s' ]], "D_EXP_DATE", getStrHandle(dataSet.expiryDate))) -- 鏈夋晥鏃ユ湡 | 鏈夋晥鏃ユ湡 + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF01", getStrHandle(dataSet.registerNo))) -- 娉ㄥ唽璇佸彿 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF02", getStrHandle(dataSet.companyName))) -- 鐢熶骇浼佷笟 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF03", getStrHandle(dataSet.certCompanyName))) -- 璇佷欢鐢熶骇鍘傚 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF04", getStrHandle(dataSet.consignCompanyWTName))) -- 濮旀墭鐢熶骇鍘傚 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF05", getStrHandle(dataSet.sterilizationDate))) -- 鐏弻鏃ユ湡 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF06", getStrHandle(dataSet.ex1))) -- 鎵╁睍瀛楁1 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF07", getStrHandle(dataSet.ex2))) -- 鎵╁睍瀛楁2 | 鑷畾涔夊瓧娈� + table.insert(updater, string.format([[ %s = '%s' ]], "S_UDF08", getStrHandle(dataSet.ex3))) -- 鎵╁睍瀛楁3 | 鑷畾涔夊瓧娈� + strUpdateSql = table.concat(updater, " , ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮鐨刢g-detail鐨剆et瀛楁", strUpdateSql) + end + -- 3. 鏇存柊鎵ц + do + local nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, CLSID_INVdetail, strCondition, strUpdateSql) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, CLSID_INVdetail .. "鏇存柊淇℃伅澶辫触!" .. strRetInfo) + end + end +end + +function Batch_Sync(strLuaDEID) + + -- 1.1 getxml + local soap_xml + do + local nRet, data = mobox.getCurEditDataPacket(strLuaDEID) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, "鏃犳硶鑾峰彇鏁版嵁鍖�datajson !" .. data) + end + soap_xml = data + lua.Debug(strLuaDEID, debug.getinfo(1), "GK-API-03xml鎶ユ枃", soap_xml) + end + + -- 1.2 xml->luaobj + local parsed_data + do + local nRet, data = xml.parse(soap_xml) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, "鎺ュ彛杈撳叆鐨刋ML鏍煎紡闈炴硶!") + end + parsed_data = data + end + + + -- 1.3 鍙栧緱鍟嗗搧鎵规琛╥tem鐨則ableObj + local dataSet = parsed_data["Envelope"]["Body"] + ["InBatchGoodsReq"] + ["BatchGoods_Input"] + ["InputParameters"] + ["BATCHGOODS_TB"] + ["BATCHGOODS_TB_ITEM"] + + if nil == dataSet then + -- wms_base.Warning( strLuaDEID, 1, 601, err_msg, "浠嶨K-WMS绯荤粺鍚屾SKU淇℃伅" ) + --wms_base.Warning(strLuaDEID, 2, 201, "[鍟嗗搧鎵规鍚屾鎺ュ彛]-鏈В鏋愬埌soap鍟嗗搧鎵规鑺傜偣!", json.encode(dataSet), "", "[鍟嗗搧鎵规鍚屾鎺ュ彛]-dataSet") + result_transaction_back(strLuaDEID, "[鍟嗗搧鎵规鍚屾鎺ュ彛]-鏈В鏋愬埌soap鍟嗗搧鎵规鑺傜偣!") + elseif #dataSet == 0 then + -- 浠呭崟鏉℃暟鎹�+ lua.Debug(strLuaDEID, debug.getinfo(1), "鍗曟潯", "") + bussHandle(strLuaDEID, dataSet) + updateCG_Detail(strLuaDEID, dataSet) + else + for i = 1, #dataSet do + lua.Debug(strLuaDEID, debug.getinfo(1), "澶氭潯", "") + bussHandle(strLuaDEID, dataSet[i]) + updateCG_Detail(strLuaDEID, dataSet) + end + end + + result_success(strLuaDEID) + +end \ No newline at end of file diff --git a/lua_code/Lua/GK-API-07.lua b/lua_code/Lua/GK-API-07.lua new file mode 100644 index 0000000..6f1913f --- /dev/null +++ b/lua_code/Lua/GK-API-07.lua @@ -0,0 +1,603 @@ +--- +--- Created by wsz. +--- DateTime: 2025/5/15 涓嬪崍3:31 +--- + +--[[ + 缂栫爜: GK-API-07 + 鍚嶇О: 璁㈠崟鍙栨秷鎺ュ彛 + 浣滆�: wsz + 鍏ュ彛鍑芥暟锛歄rder_Sync + 鍔熻兘璇存槑: 鎺ユ敹鎶ユ枃鍒涘缓 Order_Hold 瀹炰綋 锛屽浜庡凡瀛樺湪鐨勬暟鎹棤鏉′欢鏇存柊锛岃繑鍥炴姤鏃犻渶鍒涘缓杩樿揣鍗�锛涙柊澧炵殑鏁版嵁璁剧疆闇�鍒涘缓杩樿揣鍗�+ 鍙樻洿鍘嗗彶:v0.0.1 + +娉ㄦ剰锛�+ 1銆佹寜鐓ф鎶ユ枃褰㈠紡,杩欏簲鏄崟鏉″彂閫�+ 2銆佹姤鏂囪В鏋愰」灏戜簡鏉ユ簮鍗曞彿銆佹嫤鎴被鍨嬨�锛氬瓨鍌ㄦ椂 鏉ユ簮鍗曞彿涓嶅~锛屾嫤鎴被鍨嬪~Interface + 3銆乶eedReturnOrder 浠�鏍规嵁鍑哄簱鍗曠殑鐘舵�浼氭秹鍙婂埌 + + 璁㈠崟绫诲瀷锛�asn 鍏ュ簱璁㈠崟 so鍑哄簱璁㈠崟 inventory 鐩樼偣鍗�+ 涓夎�鍗曟嵁鐨勪富閿畁o-涓庢姤鏂囩殑taskId 瀵瑰簲 + 鍏ュ簱鍗曞拰鐩樼偣鍗曞凡鎵ц涓嶅厑璁稿彇娑堬紝鍑哄簱鍗曡鍗曟湭瀹屾垚閮藉厑璁稿彇娑堬紝鍏佽鍙栨秷鎵嶆彃鍏rder_Hold + +----------------------------------------- + +鍏ュ簱鍗�Inbound_Order no | b_state +鐘舵�涓篘_B_STATE>=20 AND N_B_STATE<=55 涓嶅厑璁稿彇娑�+鍙栨秷鎻掑叆Order_Hold 琛� 鍚屾椂鏇存柊N_BSTATE=91 + +鐩樼偣鍗� Count_Order count_no | b_state +鐘舵�涓篘_B_STATE>=20 AND N_B_STATE<=50涓嶅厑璁稿彇娑堬紝 +鍙栨秷鎻掑叆Order_Hold 琛� 鍚屾椂鏇存柊N_BSTATE=91 + +鍑哄簱鍗�Outbound_Order no | b_state +鐘舵�涓篘_B_STATE IN(50,55,90,91)涓嶅厑璁稿彇娑堬紝 +锛屽彇娑堟彃鍏rder_Hold 琛� +濡傛灉鐘舵�N_B_STATE>=25 AND N_B_STATE<=55,鍑哄弬needReturnOrder=1 + + + + --]] + +local json = require("json") +local mobox = require("OILua_JavelinExt") +local m3 = require("oi_base_mobox") + +local xml = require("oi_base_xml") + +--- 瀹炰綋鏍囪瘑-璁㈠崟鍙栨秷鍚屾 TN_ORDER_CANCEL +local CLSID_OrderHold = "Order_Hold" + +local CLSID_OrderHold_desc = "璁㈠崟鍙栨秷鎺ュ彛" + +--- 瀹炰綋鏍囪瘑-鍏ュ簱鍗�+local CLSID_InboundOrder = "Inbound_Order" +--- 瀹炰綋鏍囪瘑-鍑哄簱鍗�+local CLSID_OutboundOrder = "Outbound_Order" +--- 瀹炰綋鏍囪瘑-鐩樼偣鍗�+local CLSID_CountOrder = "Count_Order" + +--鏍规爣绛�+local RootTag = "response" + + +----- 鍑哄簱鍗�-鐘舵�鍒楄〃 +--local STATUS_array_OutboundOrder = {"0"} +----- 鍏ュ簱鍗�- 鐘舵�鍒楄〃 +--local STATUS_array_Inbound_Order = {"0"} +----- 鐩樼偣鍗�- 鐘舵�鍒楄〃 +--local STATUS_array_Count_Order = {"0"} + +-- +local luaDEID + +local ERR + + +-- 杩斿洖閮ㄥ垎----------------------------------------- +--[[ +-- 浜嬪姟鍥炴粴-杩斿洖淇℃伅鍚庣粓姝㈡墽琛�+]] +local function result_transaction_back(strLuaDEID, msg) + + -- 鍥炴粴褰撴澶勭悊 + lua.Stop(strLuaDEID, msg) + lua.Debug(strLuaDEID, debug.getinfo(1), "result_transaction_back-Stop 鎵ц瀹屾瘯", "") + + local result = {} + result.flag = "failure" -- success|failure + result.code = 5 + result.message = msg + + local xmlstr = xml.json_to_xml(result,RootTag) + + do + local nRet = mobox.returnValue(strLuaDEID, 1, xmlstr, result.code) + if nRet ~= 0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_transaction_back-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end + error(msg,0) + -- lua.Error(strLuaDEID, debug.getinfo(1), xmlstr) +end + + +--[[ +-- 鎵ц鎴愬姛 +]] +local function result_success(strLuaDEID,needReturnOrder,msg) + + local result = {} + result.flag = "success" -- success|failure + result.code = 0 + result.message = msg + if needReturnOrder then -- nil false + result.needReturnOrder = needReturnOrder + end + + do + local nRet = mobox.returnValue(strLuaDEID, 1, xml.json_to_xml(result,RootTag), result.code) + if nRet ~= 0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_success-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end +end + + + +--[[ +-- 鎵ц澶辫触- 缁堟鎵ц +]] +local function result_failure(strLuaDEID,msg) + + local result = {} + result.flag = "failure" -- success|failure + result.code = 0 + result.message = msg + do + local nRet = mobox.returnValue(strLuaDEID, 1, xml.json_to_xml(result,RootTag), result.code) + if nRet~=0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_failure-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end +end + + +------------------------------------------- + +-- util-------------------- + +------------------------ +-- mergeTablesDeep杈呭姪-閫掑綊 +local function deepCopy(original) + if type(original) ~= 'table' then + return original + end + local copy = {} + for key, value in pairs(original) do + copy[key] = deepCopy(value) + end + return copy +end + +-- 灏唗ableb鍚堝苟鍒皌ablea +local function mergeTablesDeep(tablea, tableb) + local bCopy = deepCopy(tableb) + for key, value in pairs(bCopy) do + tablea[key] = value + end + return tablea +end + + +--[[ + +strClsID: 鏁版嵁绫籭d +dataObj锛氬緟鍒涘缓鐨勬暟鎹璞�+ +--]] +local function create_obj(strLuaDEID, strClsID, dataObj) + + -- 鍩虹楠岃瘉 + if (nil == strClsID or strClsID == '') then + result_transaction_back(strLuaDEID, CLSID_OrderHold_desc .. "-鍒涘缓瀵硅薄澶辫触,strClsID涓嶅彲涓虹┖") + end + if type(dataObj) ~= 'table' then + result_transaction_back(strLuaDEID, CLSID_OrderHold_desc .. "-鍒涘缓瀵硅薄澶辫触,dataObj蹇呴』涓簍able绫诲瀷") + end + + -- + local creatobj = m3.AllocObject(strLuaDEID, strClsID) + + mergeTablesDeep(creatobj, dataObj) + local nRet, resultData = m3.CreateDataObj(strLuaDEID, creatobj) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format("鍒涘缓瀵硅薄[%s]澶辫触,msg锛�s", strClsID, resultData)) + end +end + + +--[[ +param + table:瀛楃涓叉暟缁�+ value:瑕佸垽鏂槸鍚﹀瓨鍦ㄧ殑鍊�+return + true锛氬瓨鍦�+ false锛氫笉瀛樺湪 +]] +local function contains(table, value) + for _, v in ipairs(table) do + if v == value then return true end + end + return false +end + + + +--[[ +缁勮涓存椂瀵硅薄 +]] +local function buildTemp(dataSet) + local temp = {} -- 鏀剧疆寰呭垱寤烘暟鎹�+ + -- 浠诲姟缂栧彿 + temp.no = lua.Get_StrAttrValue(dataSet.taskId) + -- 璁㈠崟绫诲瀷 + temp.no_type = lua.Get_StrAttrValue(dataSet.taskType) + -- 鏉ユ簮鍗曞彿 + temp.bs_no = "" + -- 璐т富缂栫爜 + temp.storer = lua.Get_StrAttrValue(dataSet.storerId) + -- 鐗╂潈 + temp.owner = lua.Get_StrAttrValue(dataSet.ownerId) + -- 鎷︽埅绫诲瀷 + temp.hold_type = "Interface" + -- 鐘舵� + temp.state = "10" + -- 鍙栨秷鍘熷洜 + temp.note = lua.Get_StrAttrValue(dataSet.reason) + + return temp +end + + + +--[[ +desc:鏇存柊鐩爣鏁版嵁 +]] +local function updateBussData(strLuaDEID, dataSet, id) + local temp = buildTemp(dataSet) + + local attrValueObj + do + -- 鍙栧緱 鍙敤鏉ユ洿鏂版暟鎹簱鐨�attr-value 鐨�table 绫诲瀷 [attrValueObj] + -- luaJsonToObjAttrs 鎵ц鍚庤繑鍥炵殑str_data_attrset 鏄瓧绗︿覆锛屼笖attr 鏄暟鎹簱瀛楃涓�闇�弽搴忓垪鍖栧鐞嗕负table + local nRet, str_data_attrset = mobox.luaJsonToObjAttrs(CLSID_OrderHold, json.encode(temp)) + + if nRet ~= 0 then + result_transaction_back(strLuaDEID, CLSID_OrderHold ..' 鏇存柊鏃秎uaJsonToObjAttrs鎵ц澶辫触锛岃缁嗭細' .. str_data_attrset) + end + -- 鍙嶅簭鍒楀寲涓虹洰鏍囨牸寮�+ attrValueObj = json.decode(str_data_attrset) + end + -- 褰撶▼搴忓彲浠ヨ繍琛屼互涓嬫椂 - 璁や负 if nRet == 0 --- 鎵цupd閫昏緫 + lua.Debug(strLuaDEID, debug.getinfo(1), "attrValueObj", attrValueObj) + -- 缁勮鎵归噺鏇存柊鐨勬暟鎹牸寮�+ local updateObj = {} + + local updateObj_item = {} + updateObj_item.id = id + updateObj_item.attrs = attrValueObj + table.insert(updateObj, updateObj_item) + + local updateStrDataJson = lua.table2str(updateObj) + lua.Debug(strLuaDEID, debug.getinfo(1), CLSID_OrderHold .."-update鍑嗗瑕嗙洊宸叉湁鏁版嵁", updateStrDataJson) + local nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, CLSID_OrderHold, updateStrDataJson) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format(CLSID_OrderHold .."鏇存柊鎿嶄綔澶辫触銆俢ode锛�s锛宮sg锛�s", nRet, strRetInfo)) + end +end + + +--[[ +desc:鍒涘缓鐩爣鏁版嵁 +]] +local function creatBussData(strLuaDEID, dataSet) + + -- 鍓嶇疆鍒ゆ柇 + if dataSet.taskType == nil and lua.trim(dataSet.taskType) == "" then + result_transaction_back(strLuaDEID, string.format([[ %s 鏁版嵁楠岃瘉-鎿嶄綔澶辫触銆�s ]], CLSID_OrderHold, "鎶ユ枃鈥樿鍗曠被鍨�taskType)鈥�瀛楁锛屼笉鍙负绌�)) + end + + -- 鍏佽鍒涘缓鈥樿鍗曞彇娑堝疄浣撯�鏍囪 - 鏆傜暀 + local FLAG = false + -- 浠呯敤浜庡嚭搴撳崟缁勮杩斿洖鎶ユ枃鐢� nil銆�0銆�1 + local needReturnOrder + + -- 1. 鍑哄簱璁㈠崟鍒ゆ柇-Outbound_Order + if dataSet.taskType == "so" then + lua.Debug(strLuaDEID, debug.getinfo(1), "璁㈠崟绫诲瀷-鍑哄簱璁㈠崟", dataSet.taskType) + + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_NO", lua.Get_StrAttrValue(dataSet.taskId))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮 鍑哄簱璁㈠崟 鐨剋here鏉′欢", strCondition) + end + -- strRetInfo:str attr-value 鍨嬬殑鏁版嵁 + local nRet, id, strRetInfo = mobox.getDataObjAttrByKeyAttr(strLuaDEID, CLSID_OutboundOrder, strCondition) + if nRet == 0 then + local luaDataArray = json.decode(strRetInfo) + lua.Debug(strLuaDEID, debug.getinfo(1), "鍑哄簱鍗�luaDataArray", luaDataArray) + local luaData = m3.KeyValueAttrsToObjAttr(luaDataArray) + lua.Debug(strLuaDEID, debug.getinfo(1), "鍑哄簱鍗�luaData", luaData) + --local state = lua.Get_StrAttrValue( luaData.b_state) + local state = lua.Get_StrAttrValue( luaData.N_B_STATE) + lua.Debug(strLuaDEID, debug.getinfo(1), "鍑哄簱璁㈠崟 b_state", state) + + FLAG = not contains( { "50","55","90","91" },state ) --鍖呭惈鐘舵�涓嶅噯鍙栨秷 + + if FLAG then + local state_toNum = lua.Get_NumAttrValue(state) + needReturnOrder = (state_toNum >=25 and state_toNum <= 55 ) and 1 or 0 + end + + elseif nRet == 1 then + --鐩爣鍗曟嵁涓嶅瓨鍦�+ result_transaction_back(strLuaDEID, string.format([[鍑哄簱璁㈠崟-鍑哄簱鍗曞彿:%s,涓嶅瓨鍦紒]],lua.Get_StrAttrValue(dataSet.taskId))) + else + result_transaction_back(strLuaDEID, string.format([[寮傚父:鏌ヨ鍑哄簱璁㈠崟-鍑哄簱鍗曞彿:%s锛屾椂澶辫触锛�s]],lua.Get_StrAttrValue(dataSet.taskId),strRetInfo)) + end + end + + + -- 2. 鍏ュ簱鍗�Inbound_Order + if dataSet.taskType == "asn" then + lua.Debug(strLuaDEID, debug.getinfo(1), "璁㈠崟绫诲瀷-鍏ュ簱鍗�, dataSet.taskType) + + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_NO", lua.Get_StrAttrValue(dataSet.taskId))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮 鍏ュ簱鍗�鐨剋here鏉′欢", strCondition) + end + -- strRetInfo:str attr-value 鍨嬬殑鏁版嵁 + local nRet, id, strRetInfo = mobox.getDataObjAttrByKeyAttr(strLuaDEID, CLSID_InboundOrder, strCondition) + --local nRet, id, strRetInfo = mobox.GetDataObjByCondition(strLuaDEID, CLSID_InboundOrder, strCondition) + + if nRet == 0 then + local luaDataArray = json.decode(strRetInfo) + --lua.Debug(strLuaDEID, debug.getinfo(1), "鍏ュ簱鍗�strRetInfo 绫诲瀷", type(strRetInfo)) + --lua.Debug(strLuaDEID, debug.getinfo(1), "鍏ュ簱鍗�strRetInfo", strRetInfo) + --local luaJson = m3.objAttrsToLuaJson(CLSID_InboundOrder,strRetInfo) + --lua.Debug(strLuaDEID, debug.getinfo(1), "鍏ュ簱鍗�luaJson", luaJson) + local luaData = m3.KeyValueAttrsToObjAttr(luaDataArray) + lua.Debug(strLuaDEID, debug.getinfo(1), "鍏ュ簱鍗�luaData", luaData) + --FLAG = contains( STATUS_array_OutboundOrder, lua.Get_StrAttrValue( luaData.b_state)) + --local state = lua.Get_StrAttrValue( luaData.b_state) + local state = lua.Get_StrAttrValue( luaData.N_B_STATE) + lua.Debug(strLuaDEID, debug.getinfo(1), "鍏ュ簱鍗�b_state", state) + local state_toNum = lua.Get_NumAttrValue(state) + FLAG = not (state_toNum >=20 and state_toNum <= 55 ) + + if FLAG then -- 闇�鏇存柊 鍏ュ簱鍗�N_BSTATE=91 + local temp = {} + temp.b_state = 91 + local nRet, str_data_attrset = mobox.luaJsonToObjAttrs(CLSID_InboundOrder, json.encode(temp)) + if nRet ~= 0 then + result_transaction_back(strLuaDEID, '鏇存柊鍏ュ簱鍗曠姸鎬乥_state鏃�luaJsonToObjAttrs 鍑芥暟鎵ц澶辫触锛乵sg锛� .. str_data_attrset) + end + -- 鍙嶅簭鍒楀寲涓虹洰鏍囨牸寮�+ local attrValueObj = json.decode(str_data_attrset) + + -- 缁勮鎵归噺鏇存柊鐨勬暟鎹牸寮�+ local updateObj = {} + + local updateObj_item = {} + updateObj_item.id = id + updateObj_item.attrs = attrValueObj + table.insert(updateObj, updateObj_item) + + local updateStrDataJson = lua.table2str(updateObj) + lua.Debug(strLuaDEID, debug.getinfo(1), "鍏ュ簱鍗�update鍑嗗瑕嗙洊宸叉湁鏁版嵁", updateStrDataJson) + local nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, CLSID_InboundOrder, updateStrDataJson) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format("鍏ュ簱鍗曟洿鏂版搷浣滃け璐ワ紒code锛�s锛宮sg锛�s", nRet, strRetInfo)) + end + end + + elseif nRet == 1 then + --鐩爣鍗曟嵁涓嶅瓨鍦�+ result_transaction_back(strLuaDEID, string.format([[鍏ュ簱鍗�鍏ュ簱鍗曞彿:%s,涓嶅瓨鍦紒]],lua.Get_StrAttrValue(dataSet.taskId))) + else + result_transaction_back(strLuaDEID, string.format([[寮傚父:鏌ヨ鍏ュ簱鍗�鍏ュ簱鍗曞彿:%s锛屾椂澶辫触锛�s]],lua.Get_StrAttrValue(dataSet.taskId),strRetInfo)) + end + end + + + -- 3. 鐩樼偣鍗�Count_Order + if dataSet.taskType == "inventory" then + lua.Debug(strLuaDEID, debug.getinfo(1), "璁㈠崟绫诲瀷-鐩樼偣鍗�, dataSet.taskType) + + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_COUNT_NO", lua.Get_StrAttrValue(dataSet.taskId))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮 鐩樼偣鍗�鐨剋here鏉′欢", strCondition) + end + -- strRetInfo:str attr-value 鍨嬬殑鏁版嵁 + local nRet, id, strRetInfo = mobox.getDataObjAttrByKeyAttr(strLuaDEID, CLSID_CountOrder, strCondition) + if nRet == 0 then + local luaDataArray = json.decode(strRetInfo) + lua.Debug(strLuaDEID, debug.getinfo(1), "鐩樼偣鍗�luaDataArray", luaDataArray) + local luaData = m3.KeyValueAttrsToObjAttr(luaDataArray) + + local state = lua.Get_StrAttrValue( luaData.N_B_STATE) + + lua.Debug(strLuaDEID, debug.getinfo(1), "鐩樼偣鍗�b_state", state) + + local state_toNum = lua.Get_NumAttrValue(state) + FLAG = not (state_toNum >=20 and state_toNum <= 50 ) + + if FLAG then -- 闇�鏇存柊 鐩樼偣鍗�N_BSTATE=91 + local temp = {} + temp.b_state = 91 + local nRet, str_data_attrset = mobox.luaJsonToObjAttrs(CLSID_CountOrder, json.encode(temp)) + if nRet ~= 0 then + result_transaction_back(strLuaDEID, '鏇存柊鐩樼偣鍗曠姸鎬乥_state鏃�luaJsonToObjAttrs 鍑芥暟鎵ц澶辫触锛乵sg锛� .. str_data_attrset) + end + -- 鍙嶅簭鍒楀寲涓虹洰鏍囨牸寮�+ local attrValueObj = json.decode(str_data_attrset) + + -- 缁勮鎵归噺鏇存柊鐨勬暟鎹牸寮�+ local updateObj = {} + + local updateObj_item = {} + updateObj_item.id = id + updateObj_item.attrs = attrValueObj + table.insert(updateObj, updateObj_item) + + local updateStrDataJson = lua.table2str(updateObj) + lua.Debug(strLuaDEID, debug.getinfo(1), "鐩樼偣鍗�update鍑嗗瑕嗙洊宸叉湁鏁版嵁", updateStrDataJson) + local nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, CLSID_CountOrder, updateStrDataJson) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format("鐩樼偣鍗曟洿鏂版搷浣滃け璐ワ紒code锛�s锛宮sg锛�s", nRet, strRetInfo)) + end + end + + elseif nRet == 1 then + --鐩爣鍗曟嵁涓嶅瓨鍦�+ result_transaction_back(strLuaDEID, string.format([[鐩樼偣鍗�鐩樼偣鍗曞彿:%s,涓嶅瓨鍦紒]],lua.Get_StrAttrValue(dataSet.taskId))) + else + result_transaction_back(strLuaDEID, string.format([[寮傚父:鏌ヨ鐩樼偣鍗�鐩樼偣鍗曞彿:%s锛屾椂澶辫触锛�s]],lua.Get_StrAttrValue(dataSet.taskId),strRetInfo)) + end + end + + + ------ + if not FLAG then + result_failure(strLuaDEID, "鐩爣鍗曟嵁鐘舵�涓嶆弧瓒冲彇娑堟潯浠讹紒涓嶄細鐢熸垚鈥樺崟鎹彇娑堚�璁板綍锛�) + return -- 缁撴潫鍚庣画鎵ц + end + + -- 鍒涘缓鍙栨秷鍗曡褰�+ local temp = buildTemp(dataSet) + lua.Debug(strLuaDEID, debug.getinfo(1), "OrderHold寰呮柊澧炴暟鎹�temp", temp) + create_obj(strLuaDEID, CLSID_OrderHold, temp) + + -- 杩斿洖鏁版嵁 + result_success(strLuaDEID,needReturnOrder) + +end + + + + + + + + + +--[[ +涓氬姟鏁版嵁澶勭悊 +]] +local function bussHandle(strLuaDEID, dataSet) + + -- 缁勮sql杩囨护鏉′欢 + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_NO", lua.Get_StrAttrValue(dataSet.taskId))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮鐨刼rdercancel鐨剋here鏉′欢", strCondition) + end + + local nRet, id, strRetInfo = mobox.getDataObjAttrByKeyAttr(strLuaDEID, CLSID_OrderHold, strCondition) + + if nRet == 0 then + -- key宸插瓨鍦�+ lua.Debug(strLuaDEID, debug.getinfo(1), "add", "鏁版嵁鏇存柊锛� .. strRetInfo) + -- updateBussData(strLuaDEID, dataSet, id) + + --result_failure(strLuaDEID, string.format("浠诲姟id锛�s 宸插瓨鍦�,id)) + result_success(strLuaDEID, nil,string.format("浠诲姟id锛�s 宸插瓨鍦�,id)) + + + elseif nRet == 1 then + -- key涓嶅瓨鍦�+ + lua.Debug(strLuaDEID, debug.getinfo(1), "upd", "鏁版嵁鏂板") + creatBussData(strLuaDEID, dataSet) + + else + result_transaction_back(strLuaDEID, string.format("鏌ヨ鐩爣鏁版嵁澶辫触锛宑ode锛�s锛宮sg锛�s", nRet, strRetInfo)) + end + + -- result_success(strLuaDEID,1) -- 鏇存柊鐨勬暟鎹笉闇�鍒涘缓 WMS杩樿揣鍏ュ簱鍗�+ +end + + + + +local function Order_Cancel_main(strLuaDEID) + -- 1.1 getxml + local soap_xml + do + local nRet, data = mobox.getCurEditDataPacket(strLuaDEID) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, "鏃犳硶鑾峰彇鏁版嵁鍖�datajson !" .. data) + end + soap_xml = data + lua.Debug(strLuaDEID, debug.getinfo(1), "GK-API-07xml鎶ユ枃", soap_xml) + end + + -- 1.2 xml->luaobj + local parsed_data + do + local nRet, data = xml.parse(soap_xml) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, "鎺ュ彛杈撳叆鐨刋ML鏍煎紡闈炴硶!") + end + parsed_data = data + end + + -- 1.3 鍙栧緱鍟嗗搧鎵规琛╥tem鐨則ableObj + local dataSet = parsed_data["Envelope"]["Body"] + ["OrderCancellationReq"] + ["OrderCancellation_Input"] + ["InputParameters"] + ["OrderCancellation_TB"] + + if nil == dataSet then + -- wms_base.Warning(strLuaDEID, 2, 201, CLSID_OrderHold_desc .."-鏈В鏋愬埌soap鐩爣鑺傜偣!", json.encode(dataSet), "", CLSID_OrderHold_desc .."-dataSet") + result_transaction_back(strLuaDEID, CLSID_OrderHold_desc .."-鏈В鏋愬埌soap鐩爣鑺傜偣!") + elseif #dataSet == 0 then + -- 浠呭崟鏉℃暟鎹�+ lua.Debug(strLuaDEID, debug.getinfo(1), "鍗曟潯", dataSet) + bussHandle(strLuaDEID, dataSet) + else + for i = 1, #dataSet do + lua.Debug(strLuaDEID, debug.getinfo(1), "澶氭潯", "") + bussHandle(strLuaDEID, dataSet[i]) + end + end + + + +end + +--[[ +鍥哄畾-閿欒鎹曡幏澶勭悊 +]] +local function errorHandler(err) + ERR = err + lua.Debug(luaDEID, debug.getinfo(1), "err-璁板綍", err) + --lua.Error(strLuaDEID, debug.getinfo(1), "err-璁板綍:" .. err) + return err +end + +--[[ 鍏ュ彛鍑芥暟 ]] +function Order_Cancel(strLuaDEID) + luaDEID = strLuaDEID + local success, result = xpcall(Order_Cancel_main, errorHandler,strLuaDEID) + + if not success then + -- lua.Error(strLuaDEID, debug.getinfo(1), ERR) + end + +end + + + + + + + + + + + diff --git a/lua_code/Lua/GK-API-08.lua b/lua_code/Lua/GK-API-08.lua new file mode 100644 index 0000000..40e9d13 --- /dev/null +++ b/lua_code/Lua/GK-API-08.lua @@ -0,0 +1,330 @@ +--- Created by w1832. +--- DateTime: 2025/5/20 涓婂崍8:57 +--- + +--[[ + 缂栫爜: GK-API-08 + 鍚嶇О: Outbound_Priority_Change + 浣滆�:wsz + 鍏ュ彛鍑芥暟锛歄utbound_Priority_Change + 鍔熻兘璇存槑:鏇存柊鍙戣揣鍗�Shipping_Order 浼樺厛绾э紝宸插垎閰嶅悗涓嶅厑璁告洿鏂�+ 鍙樻洿鍘嗗彶: +v0.0.1 鍒濆 + +v0.0.2 CLSID 涓哄嚭搴撳崟锛岄潪Shipping_Order鍙戣揣鍗�+ 娉ㄦ剰锛�+ 1銆佹鎶ユ枃缁撴瀯搴旀槸鍗曟潯鎺ㄩ� + 2銆丼_BS_NO鏌ュ埌鐨勬暟鎹笉涓�畾鍞竴锛屽悓S_BS_NO鏁版嵁鐨凬_B_STATE鐘舵�涔熶笉涓�畾鍏ㄩ儴婊¤冻瑕佹眰锛屼粎澶勭悊婊¤冻鏉′欢鐨勬暟鎹�+v0.0.3 淇敼鏄犲皠瀛楁S_BS_NO -> S_NO + --]] + + + json = require("json") + mobox = require("OILua_JavelinExt") + m3 = require("oi_base_mobox") + + xml = require("oi_base_xml") + +--- 瀹炰綋鏍囪瘑-鍑哄簱璁㈠崟浼樺厛绾ц皟鏁存帴鍙�+local CLSID_OutboundOrder = "Outbound_Order" +-- 琛ㄥ悕 +local TB_NAME_OutboundOrder = "TN_Outbound_Order" + +local CLSID_OutboundOrder_desc = "鍑哄簱璁㈠崟浼樺厛绾ц皟鏁存帴鍙� + +local luaDEID + + + +--鏍规爣绛�+local RootTag = "response" + + + + +-- 绠�寲 debug.info璁板綍 +local function DebugInfo(desc, param) + if param == nil then + param = "" + end + lua.Debug(luaDEID, debug.getinfo(1), desc, param) +end + + +--[[ +-- 鎵ц鎴愬姛 +]] +local function result_success(strLuaDEID) + + local result = {} + result.flag = "success" -- success|failure + result.code = 0 + result.message = "" + + do + local nRet = mobox.returnValue(strLuaDEID, 1, xml.json_to_xml(result,RootTag), result.code) + if nRet ~= 0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_success-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end +end + +--[[ +-- 浜嬪姟鍥炴粴-杩斿洖淇℃伅鍚庣粓姝㈡墽琛�+]] +local function result_transaction_back(strLuaDEID, msg) + + -- 鍥炴粴褰撴澶勭悊 + lua.Stop(strLuaDEID, msg) + -- + --local result = {} + --result.flag = "failure" -- success|failure + --result.code = 5 + --result.message = msg + -- + --local xmlstr = xml.json_to_xml(result) + -- + --do + -- local nRet = mobox.returnValue(strLuaDEID, 1, xmlstr, result.code) + -- if nRet ~= 0 then + -- lua.Error(strLuaDEID, debug.getinfo(1), 'result_transaction_back-鎵цmobox.returnValue澶辫触 ' .. nRet) + -- end + --end + error(msg, 0) + -- lua.Error(strLuaDEID, debug.getinfo(1), xmlstr) +end + + +--[[ +param + CLSID:鐩爣瀹炰緥calssid + id鐩爣鏁版嵁鐨凷_ID + temp:寰呮洿鏂板瓧娈靛璞★紝lua灞炴�table + + +--]] +local function butchUpdateData(strLuaDEID,CLSID,id,temp) + + local nRet, str_data_attrset = mobox.luaJsonToObjAttrs(CLSID_OutboundOrder, json.encode(temp)) + if nRet ~= 0 then + result_transaction_back(strLuaDEID, "luaJsonToObjAttrs 鍑芥暟 杞寲鏍煎紡澶辫触" .. nRet .. str_data_attrset) + end + -- 鍙嶅簭鍒楀寲涓虹洰鏍囨牸寮�+ local attrValueObj = json.decode(str_data_attrset) + + -- 缁勮鎵归噺鏇存柊鐨勬暟鎹牸寮�+ local updateObj = {} + + local updateObj_item = {} + updateObj_item.id = id + updateObj_item.attrs = attrValueObj + table.insert(updateObj, updateObj_item) + + local updateStrDataJson = lua.table2str(updateObj) + lua.Debug(strLuaDEID, debug.getinfo(1), CLSID .. "update鍑嗗瑕嗙洊宸叉湁鏁版嵁", updateStrDataJson) + local nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, CLSID, updateStrDataJson) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, string.format(CLSID.."鏇存柊鎿嶄綔澶辫触锛乧ode锛�s锛宮sg锛�s", nRet, strRetInfo)) + end + +end + + +--[[ +涓氬姟鏁版嵁澶勭悊 +1銆佹煡璇� orderNo锛歋_BS_NO 璁板綍 鏉ユ簮鍗曞彿闈炰富閿紝鍙兘瀛樺湪澶氭潯鏁版嵁 +2.鍒ゆ柇 N_B_STATE 鐘舵� 鏇存柊鍑哄簱鍗�Outbound_Order 浼樺厛绾э紝宸插垎閰嶅悗涓嶅厑璁告洿鏂�N_B_STATE>=25 AND N_B_STATE<=55) + +]] +local function bussHandle(strLuaDEID, dataSet) + + local strCondition + do + local filters = {} + table.insert(filters, string.format([[ %s = '%s' ]], "S_NO", lua.Get_StrAttrValue(dataSet.orderNo))) + strCondition = table.concat(filters, " and ") + lua.Debug(strLuaDEID, debug.getinfo(1), "filters-缁勮鐨凷hipping_Order鐨剋here鏉′欢", strCondition) + end + + + -- 鏌ユ壘鎬绘暟閲�+ local nRetCount + do + local nRet, nCount = mobox.getDataObjCount(strLuaDEID, CLSID_OutboundOrder, strCondition) + if nRet == 0 then + nRetCount = nCount + DebugInfo(string.format("%s-鏌ヨ鎬绘暟閲忎负%s", CLSID_OutboundOrder, nCount)) + else + result_transaction_back(strLuaDEID, string.format("鏌ヨ鐩爣鏁版嵁澶辫触锛宑ode锛�s锛宮sg锛�s", nRet, nCount)) + end + + if nCount == "0" then + result_transaction_back(strLuaDEID, dataSet.orderNo .. "鏌ユ壘涓嶅埌鎶ユ枃瀵瑰簲鐨勫嚭搴撳崟鏁版嵁锛�) + end + end + + + -- 鏌ヨ鐩爣鏁版嵁, 瀛樺偍lua鏁扮粍锛屽唴閮ㄤ负鏁版嵁搴撳瓧娈垫牸寮忓璞�+ local datas = {} + do + local strFieldList = { "S_ID", "S_NO", "S_BS_NO", "N_PRIORITY", "S_NOTE", "N_PRIORITY" } + -- 杩斿洖 json鍨�str锛屾牸寮�[ { "attr1": "xxx", "attr2": "xxx1", 鈥�}, 鈥�+ local nRet, strRetInfo = mobox.queryTable(strLuaDEID, TB_NAME_OutboundOrder, json.encode(strFieldList), nRetCount, strCondition) + if nRet == 0 then + DebugInfo(string.format("%s-queryTable鍑芥暟杩斿洖", CLSID_OutboundOrder), strRetInfo) + local tableData = json.decode(strRetInfo) + DebugInfo("tableData", tableData) + + datas = tableData + + --for n = 1, #tableData do + -- -- local nRet1, strObjJson = mobox.objAttrToObjJson(CLSID_ShippingOrder, tableData[n]) + -- -- local nRet1, strObjJson = mobox.objJsonToLuaJson(CLSID_ShippingOrder, tableData[n]) + -- + -- if nRet1 == 0 then + -- table.insert(datas, strObjJson) + -- else + -- result_transaction_back(strLuaDEID, string.format("queryTable-objAttrToObjJson杞寲澶辫触锛宑ode锛�s锛宮sg锛�s", nRet1, strObjJson)) + -- end + --end + else + result_transaction_back(strLuaDEID, string.format("queryTable鏌ヨ鐩爣鏁版嵁澶辫触锛宑ode锛�s锛宮sg锛�s", nRet, strRetInfo)) + end + end + + DebugInfo(string.format("%s-queryTable-鍙栧緱datas鏁版嵁", CLSID_OutboundOrder), datas) + + -- 杩唬鏇存柊婊¤冻鏉′欢鐨勬暟鎹�+ for n = 1, #datas do + + local b_state = lua.Get_NumAttrValue(datas[n].N_B_STATE) + local id = datas[n].S_ID + local flag = b_state >= 25 and b_state <= 55 + DebugInfo("b_state", b_state) + DebugInfo("id", id) + DebugInfo("flag", flag) + + if not flag then + -- 鎵ц鏇存柊 + local temp = {} + temp.priority = dataSet.priority --浼樺厛绾�+ temp.note = dataSet.memo -- 澶囨敞 + + butchUpdateData(strLuaDEID, CLSID_OutboundOrder,id,temp) + + --local nRet, str_data_attrset = mobox.luaJsonToObjAttrs(CLSID_ShippingOrder, json.encode(temp)) + --if nRet ~= 0 then + -- result_transaction_back(strLuaDEID, "luaJsonToObjAttrs 鍑芥暟 杞寲鏍煎紡澶辫触" .. nRet .. str_data_attrset) + --end + ---- 鍙嶅簭鍒楀寲涓虹洰鏍囨牸寮�+ --local attrValueObj = json.decode(str_data_attrset) + -- + ---- 缁勮鎵归噺鏇存柊鐨勬暟鎹牸寮�+ --local updateObj = {} + -- + --local updateObj_item = {} + --updateObj_item.id = id + --updateObj_item.attrs = attrValueObj + --table.insert(updateObj, updateObj_item) + -- + --local updateStrDataJson = lua.table2str(updateObj) + --lua.Debug(strLuaDEID, debug.getinfo(1), CLSID_ShippingOrder .. "update鍑嗗瑕嗙洊宸叉湁鏁版嵁", updateStrDataJson) + --local nRet, strRetInfo = mobox.updateDataObj(strLuaDEID, CLSID_ShippingOrder, updateStrDataJson) + --if (nRet ~= 0) then + -- result_transaction_back(strLuaDEID, string.format("鍙戣揣鍗曟洿鏂版搷浣滃け璐ワ紒code锛�s锛宮sg锛�s", nRet, strRetInfo)) + --end + end + + end + +end + + + +local function Outbound_Priority_Change_main(strLuaDEID) + -- 1.1 getxml + local soap_xml + do + local nRet, data = mobox.getCurEditDataPacket(strLuaDEID) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, "鏃犳硶鑾峰彇鏁版嵁鍖�datajson !" .. data) + end + soap_xml = data + lua.Debug(strLuaDEID, debug.getinfo(1), "GK-API-08xml鎶ユ枃", soap_xml) + end + + -- 1.2 xml->luaobj + local parsed_data + do + local nRet, data = xml.parse(soap_xml) + if (nRet ~= 0) then + result_transaction_back(strLuaDEID, "鎺ュ彛杈撳叆鐨刋ML鏍煎紡闈炴硶!") + end + parsed_data = data + end + + -- 1.3 鍙栧緱鍟嗗搧鎵规琛╥tem鐨則ableObj + local dataSet = parsed_data["Envelope"]["Body"] + ["OrderAdjustmentsReq"] + ["OrderAdjustments_Input"] + ["InputParameters"] + ["OrderAdjustments_TB"] + + if nil == dataSet then + -- wms_base.Warning(strLuaDEID, 2, 201, CLSID_OutboundOrder_desc .. "-鏈В鏋愬埌soap鐩爣鑺傜偣!", json.encode(dataSet), "", CLSID_OutboundOrder_desc .. "-dataSet") + result_transaction_back(strLuaDEID, CLSID_OutboundOrder_desc .. "-鏈В鏋愬埌soap鐩爣鑺傜偣!") + elseif #dataSet == 0 then + -- 浠呭崟鏉℃暟鎹�+ lua.Debug(strLuaDEID, debug.getinfo(1), "鍗曟潯", dataSet) + bussHandle(strLuaDEID, dataSet) + else + for i = 1, #dataSet do + lua.Debug(strLuaDEID, debug.getinfo(1), "澶氭潯", "") + bussHandle(strLuaDEID, dataSet[i]) + end + end + + result_success(strLuaDEID) +end + + +--[[ +鍥哄畾-閿欒鎹曡幏澶勭悊 +]] +local ERR +local function errorHandler(err) + ERR = err + lua.Debug(luaDEID, debug.getinfo(1), "err-璁板綍", err) + return err +end + +--[[ 鍏ュ彛鍑芥暟 ]] +function Outbound_Priority_Change(strLuaDEID) + + m3.PrintLuaDEInfo(strLuaDEID) + + luaDEID = strLuaDEID + --Outbound_Priority_Change_main(strLuaDEID) + local success, result = xpcall(Outbound_Priority_Change_main, errorHandler, strLuaDEID) + + if not success then + + + local result = {} + result.flag = "failure" -- success|failure + result.code = 5 + result.message = ERR + + local xmlstr = xml.json_to_xml(result,RootTag) + + do + local nRet = mobox.returnValue(strLuaDEID, 1, xmlstr, result.code) + if nRet ~= 0 then + lua.Error(strLuaDEID, debug.getinfo(1), 'result_transaction_back-鎵цmobox.returnValue澶辫触 ' .. nRet) + end + end + + -- lua.Error(strLuaDEID, debug.getinfo(1), ERR) + end + +end \ No newline at end of file -- Gitblit v1.9.1