Gungho任务二次开发-任务分类集成3000功能的清单导入
这个是一个标准的导入模板 ,使用前可以通过修改 表名,字段名称,字段中文名,字段对应赋值变量名称。
–[[
这个是一个标准的脚本,可以
1、修改里面的数据对象名称 样品技术参数
2、字段相关名称(字段中文名、字段名称、字段赋值变量名称)
字段名称 字段中文名 字段对应赋值变量名
N_SN 序号 nSN
S_ITEM_NAME 名称 strItemName
S_ITEM_M_S_N 型号_规格_数量 strItemMSN
S_ITEM_CODE 编号 strItemCode
S_MANUFACTURER 生产单位 strFacturer
3、若字段不够多,或太多,需要调整程序
4、里面的唯一性判断是 task_id + S_ITEM_NAME + S_ITEM_CODE (需要根据情况调整)
–]]
功能说明:json = require(“json”)
mobox = require(“OILua_JavelinExt”)
require(“oi_basestrfunc”)
function ImportExcle(strLuaDEID)
local nRet, strRetInfo
local strPrjID = ”
local strTaskID = ”
— 获取全局变量 prj_id, task_id
nRet, strRetInfo = mobox.getGlobalAttr( strLuaDEID, “task_id”,”prj_id” )
if ( nRet ~= 0 or strRetInfo == ” ) then
mobox.error( strLuaDEID, “系统无法获取全局变量 “..strRetInfo )
return
end
local input_paramter = json.decode( strRetInfo )
strTaskID = input_paramter[1].value
strPrjID = input_paramter[2].value
if ( strTaskID == ” ) then
mobox.error( strLuaDEID, “必须要有项目及任务相关信息” )
return
end
— 获取导入的单条数据, 返回 {“id”:”xxx”,”attrs”:[{“attr”:”attr1″,”value”:”xxx1″},{“attr”:”attr2″,”value”:”xxx2″}, …]}
nRet, strRetInfo = mobox.getInputParameter(strLuaDEID)
if (nRet ~= 0 or strRetInfo == ” ) then
mobox.error(strLuaDEID, “无法获取导入数据!”..strRetInfo)
return
end
local n, nCount, nValue
local strAddAttr = ”
local strAttr = ”
local strSetSQL = ”
— 一些关键属性 (脚本 后期只需要改字段名称就可以)
local nSN — 对应 序号 N_SN
local strItemName = ” — 对应 名称 S_ITEM_NAME
local strItemMSN = ” — 对应 型号_规格_数量 S_ITEM_M_S_N
local strItemCode = ” — 对应 编号 S_ITEM_CODE
local strFacturer = ” — 对应 生产单位 S_MANUFACTURER
— 因为每次导入只传一条记录,所以当前条写入 prj_id 及 task_id
strAddAttr = strAddAttr .. ‘{“attr”:”G_TASK_ID”,”value”:”‘ .. strTaskID .. ‘”},’
strAddAttr = strAddAttr .. ‘{“attr”:”G_PRJ_ID”,”value”:”‘ .. strPrjID .. ‘”},’
local retJson =json.decode(strRetInfo)
local input_rows =retJson[“parameter”]
— 步骤1 获取从excel导入的一行数据,根据excel的列定义进行属性组合 strAddAttr
nCount = #input_rows
for n = 1, nCount do
strAttr = input_rows[n].attr
strValue = input_rows[n].value
— 根据导入的excel列头名称进行判断
— 关键属性判断
if (strAttr == “名称”) then
if (strValue == ”) then
mobox.error(strLuaDEID, strAttr .. “不能为空!”)
return
end
strItemName = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_NAME”,”value”:”‘ .. strItemName .. ‘”},’
— 常规属性
elseif (strAttr == “序号”) then
nSN = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”N_SN”,”value”:”‘ .. nSN .. ‘”},’elseif (strAttr == “型号_规格_数量”) then
strItemMSN = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_M_S_N”,”value”:”‘ .. strItemMSN .. ‘”},’elseif (strAttr == “编 号”) then
strItemCode= strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_CODE”,”value”:”‘ .. strItemCode .. ‘”},’elseif (strAttr == “生产厂家”) then
strFacturer = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_MANUFACTURER”,”value”:”‘ .. strFacturer .. ‘”},’end
end
–去除最后一个,
local strAddAttr1 = trim_laster_char(strAddAttr)— 步骤2 根据 (名称+编号+taskid) 来判断导入的检测数据是否已经存在
— 如果已经存在,根据导入的数据进行覆盖
— 如果不存在需要创建
local attrs
local strCondition = “S_ITEM_NAME='” .. strItemName .. “‘ and G_TASK_ID='”..strTaskID..”‘ and S_ITEM_CODE='” .. strItemCode.. “‘”
nRet, strRetInfo = mobox.existThisData(strLuaDEID, “样品技术参数”, strCondition)
if (nRet ~= 0 ) thenmobox.error(strLuaDEID, “在检查样品技术参数是否存在时失败! ” .. strRetInfo)
return
endif (strRetInfo == ‘yes’) then
— 已经存在,根据导入的数据进行覆盖
strCondition = “S_ITEM_NAME='” .. strItemName .. “‘ and G_TASK_ID='”..strTaskID..”‘ and S_ITEM_CODE='” .. strItemCode.. “‘”
strSetSQL = “N_SN='” ..nSN.. “‘, S_ITEM_NAME = ‘” .. strItemName ..”‘ , S_ITEM_CODE ='” ..strItemCode .. “‘ , S_ITEM_M_S_N = ‘” .. strItemMSN ..”‘ “
nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, “样品技术参数”, strCondition, strSetSQL)
if (nRet ~= 0) then
mobox.error(strLuaDEID, strRetInfo)
return
end
elseif (strRetInfo == ‘no’) then
— 创建 样品技术参数
— mobox.writeSysLog(“strAddAttr1”, strAddAttr1)
strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’
mobox.writeSysLog(“strAddAttr2”, strAddAttr1)
nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “样品技术参数”, strAddAttr1)
if (nRet ~= 0) then
mobox.error(strLuaDEID, “创建样品技术参数失败! ” .. strRetInfo )
return
endend
end
function