--[[
|
编码: WMS-32-11
|
名称: 巷道-重置货位权重
|
作者:HAN
|
日期:2025-1-29
|
|
级别:固定 (说明本段代码在项目中不太会变化)
|
|
函数: ResetLocWeight
|
|
功能:
|
-- 重新计算一下巷道内货位的 weight, weight2
|
--]]
|
|
json = require ("json")
|
mobox = require ("OILua_JavelinExt")
|
m3 = require("oi_base_mobox")
|
|
local function reset_lane_loc_weight( strLuaDEID, sql_condition )
|
local nRet, strRetInfo
|
|
-- 多页查询
|
local strOrder = "N_COL desc"
|
local max_col = 0
|
|
nRet, strRetInfo = mobox.queryDataObjAttr2( strLuaDEID, "Location", sql_condition, strOrder, 100, "S_CODE","N_COL","N_LAYER" )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "queryDataObjAttr2: "..strRetInfo) end
|
if ( strRetInfo == '' ) then return 0 end
|
|
local success
|
local queryInfo
|
success, queryInfo = pcall( json.decode, strRetInfo )
|
if ( success == false ) then lua.Error( strLuaDEID, debug.getinfo(1), "queryDataObjAttr2 返回结果啊非法的JSON格式!" ) end
|
|
local queryID = queryInfo.queryID
|
local nPageCount = queryInfo.pageCount
|
local nPage = 1
|
local dataSet = queryInfo.dataSet -- 查询出来的数据集
|
local loc_code, col, layer, weight, weight2
|
local strCondition, strSetAttr
|
|
while (nPage <= nPageCount) do
|
|
for n = 1, #dataSet do
|
loc_code = lua.Get_StrAttrValue( dataSet[n].attrs[1].value )
|
col = lua.Get_NumAttrValue( dataSet[n].attrs[2].value )
|
layer = lua.Get_NumAttrValue( dataSet[n].attrs[3].value )
|
if ( max_col == 0 ) then max_col = col end
|
weight = col+layer
|
weight2 = (max_col-col+1)+layer
|
-- 更新货位权重
|
strCondition = "S_CODE = '"..loc_code.."'"
|
strSetAttr = "N_POS_WEIGHT = "..weight..", N_POS_WEIGHT_2 = "..weight2
|
nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Location", strCondition, strSetAttr )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "updateDataAttrByCondition失败"..strRetInfo ) end
|
end
|
|
nPage = nPage + 1
|
if ( nPage <= nPageCount ) then
|
-- 取下一页
|
nRet, strRetInfo = mobox.queryDataObjAttr2( queryID, nPage)
|
if ( nRet ~= 0 ) then
|
lua.Error( strLuaDEID, debug.getinfo(1), "queryDataObjAttr2失败! nPage="..nPage.." "..strRetInfo )
|
end
|
queryInfo = json.decode(strRetInfo)
|
dataSet = queryInfo.dataSet
|
end
|
end
|
|
return 0
|
end
|
|
function ResetLocWeight ( strLuaDEID )
|
local nRet, strRetInfo, n, m
|
local objs
|
|
-- step1 获取当前需要进行重置的数据对象
|
nRet, objs = m3.GetSysDataJson( strLuaDEID )
|
if ( nRet ~=0 ) then lua.Error( strLuaDEID, debug.getinfo(1), objs ) end
|
-- [{"id":"","attrs":[{"attr":"","value":""},..]},..]
|
local nCount = #objs
|
if (nCount == 0) then return end
|
|
local obj_attrs
|
local wh_code, area_codel, lane_no
|
local strCondition
|
local loc_objs, col, layer, max_col, weight, weight2
|
|
for n = 1, nCount do
|
obj_attrs = m3.KeyValueAttrsToObjAttr( objs[n].attrs )
|
wh_code = lua.Get_StrAttrValue( obj_attrs.S_WH_CODE )
|
if ( wh_code == '' ) then
|
mobox.setInfo( strLuaDEID, "Grid中必须有仓库编码列!")
|
return
|
end
|
area_code = lua.Get_StrAttrValue( obj_attrs.S_AREA_CODE )
|
if ( area_code == '' ) then
|
mobox.setInfo( strLuaDEID, "Grid中必须有库区编码列!")
|
return
|
end
|
lane_no = lua.Get_NumAttrValue( obj_attrs.N_AISLE )
|
if ( lane_no == 0 ) then
|
mobox.setInfo( strLuaDEID, "Grid中必须有巷道列!")
|
return
|
end
|
|
-- 重置巷道内货位权重
|
strCondition = "S_WH_CODE = '"..wh_code.."' AND S_AREA_CODE = '"..area_code.."' AND N_AISLE = "..lane_no
|
nRet, strRetInfo = reset_lane_loc_weight( strLuaDEID, strCondition )
|
if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "reset_lane_loc_weight失败! " .. strRetInfo) end
|
end
|
end
|