& http://m.sstd.com.cn PDM產(chǎn)品數(shù)據(jù)管理軟件、項(xiàng)目管理系統(tǒng) Sun, 22 Jun 2025 02:12:37 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.9.1 http://m.sstd.com.cn/wp-content/uploads/2022/11/cropped-plmico512-32x32.png 腳本 – 共好plm系統(tǒng) http://m.sstd.com.cn 32 32 SQLServer數(shù)據(jù)庫(kù)安全漏洞的防護(hù)(最重要一步) http://m.sstd.com.cn/3183/ Sun, 22 Jun 2025 01:46:03 +0000 http://m.sstd.com.cn/?p=3183 SQLServer數(shù)據(jù)庫(kù)安全漏洞攻擊思路

1.以管理員身份運(yùn)行數(shù)據(jù)庫(kù)服務(wù)

2.已經(jīng)獲得SQL數(shù)據(jù)庫(kù)的sysadmin權(quán)限

3.可以連接數(shù)據(jù)庫(kù)

SQLserver 的核心漏洞:MSSQL提權(quán)的關(guān)鍵是利用xp-cmdshell這個(gè)存儲(chǔ)過(guò)程

SQLServer 數(shù)據(jù)庫(kù)漏洞安全防護(hù)最基本的調(diào)整

考慮安全,一般可以禁用 sa 賬號(hào);連接數(shù)據(jù)庫(kù)的賬號(hào)密碼的強(qiáng)度也要足夠

一)禁用 xp_cmdshell

— 1. 查看 xp_cmdshell 是否啟用 (若 run_value 為 1 表示已啟用,為 0 表示已禁用

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

EXEC sp_configure ‘xp_cmdshell’;


— 1) 啟用高級(jí)選項(xiàng)(若未啟用)

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

— 2) 禁用 xp_cmdshell

EXEC sp_configure ‘xp_cmdshell’, 0;

RECONFIGURE;


二)禁用 xp_regwrite

USE master;

GO

— 撤銷 PUBLIC 角色對(duì) xp_regwrite 的執(zhí)行權(quán)限

DENY EXECUTE ON xp_regwrite TO PUBLIC;

GO


三)禁用 Ole Automation Procedures

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE; — 立即生效

GO

EXEC sp_configure ‘Ole Automation Procedures’, 0;

RECONFIGURE; — 立即生效

GO


最后: 重啟 sqlserver

 

]]>
mobox3 格式化日期 http://m.sstd.com.cn/3144/ Thu, 16 Jan 2025 07:04:46 +0000 http://m.sstd.com.cn/?p=3144  

–[[ 格式日期 2024-03-25T16:00:00.000Z 格式化為 2024-03-25?]]

function DayFromat(dateTimeStr)

local formattedDateStr =""
if (dateTimeStr == "" or dateTimeStr==nil ) then
return formattedDateStr
end

dateTimeStr = string.gsub(dateTimeStr, "T", " ")
print(dateTimeStr)

-- 使用模式匹配提取日期和時(shí)間部分
local dateStr, timeStr = dateTimeStr:match("(%d+-%d+-%d+) (%d+:%d+:%d+)")

if (dateStr == nil) then
formattedDateStr ="Date Format Error"
return formattedDateStr
end

-- 提取日期部分的年、月、日
local year, month, day = dateStr:match("(%d+)-(%d+)-(%d+)")

-- 將提取的月、日格式化為兩位數(shù)的字符串
month = string.format("%02d", tonumber(month))
day = string.format("%02d", tonumber(day))

-- 組合格式化后的日期和原始時(shí)間部分
local formattedDateStr = string.format("%s-%s-%s", year, month, day)
local formattedDateTime = string.format("%s %s", formattedDateStr, timeStr)

return formattedDateStr
end

— 示例使用
local date = “2024-03-25T16:00:00.000Z”
local formattedDate = DayFromat(date)
print(formattedDate) — 輸出: 2024-03-25

]]>
mobox3自定義參數(shù)的定義及獲取 http://m.sstd.com.cn/3084/ Sun, 08 Sep 2024 06:42:31 +0000 http://m.sstd.com.cn/?p=3084 mobox3運(yùn)行過(guò)程中系統(tǒng)可以定義很多運(yùn)行參數(shù)。這種運(yùn)行參數(shù)可以匹配企業(yè)個(gè)性化需求。在這個(gè)基礎(chǔ)上mobox3開放了一些非系統(tǒng)參數(shù)自定義配置方式。舉例

這個(gè)用戶部署了 Gungho系統(tǒng) ,而這個(gè)系統(tǒng)需要使用微信小程序。所以系統(tǒng)就會(huì)用到 gunghoAPI服務(wù)。(這個(gè)服務(wù)不是系統(tǒng)默認(rèn)安裝的服務(wù),需要手工單獨(dú)部署過(guò))

這個(gè)服務(wù)部署后,我們客戶端怎樣去調(diào)用這個(gè)服務(wù),我們就可以通過(guò)定義一個(gè)自定義參數(shù)來(lái)描述 gunghoAPI的的 IP及端口,方便客戶端調(diào)用

配置過(guò)程如下

這樣,我們就定義了一個(gè)編號(hào)為 9001 的參數(shù)。 這個(gè)參數(shù)可以通過(guò) lua腳本來(lái)獲取

lua 獲取自定義編號(hào)的參數(shù)定義

nRet, strCanSu= mobox.getParameter(strLuaDEID, ‘9001’)

 

]]>
mobox3對(duì)excel導(dǎo)入(表頭帶分組) http://m.sstd.com.cn/3079/ Thu, 05 Sep 2024 07:26:12 +0000 http://m.sstd.com.cn/?p=3079 mobox3對(duì)excel數(shù)據(jù)導(dǎo)入是一個(gè)非常重要的及常見的工作。但用戶為了excel更直觀,有可能會(huì)對(duì)excel表頭設(shè)置分組。參考下圖

我們可以看到,excel第一行是分組行(項(xiàng)目基礎(chǔ)信息,P1,P2)

在P1 下面有 計(jì)劃日期;在P2下面也有 計(jì)劃日期 ,2個(gè)字段名稱是一樣的。我們做讀取數(shù)據(jù)的時(shí)候必須要依賴分組 P1、P2的定義才能區(qū)分

我們?cè)谧鰁xcel導(dǎo)入的時(shí)候,針對(duì)這類表格。我們需要如下處理

1、導(dǎo)入按鈕設(shè)置

 

2、在導(dǎo)入腳本的地方主要通過(guò)分組屬性來(lái)區(qū)分字段

?if (strAttr == ‘計(jì)劃日期’) then
?strValue = ProcessDayTimeStr(strValue) –日期格式轉(zhuǎn)換
?if (ext_col_info[1]==”P0″) then? ? ? ? ? — 判斷是哪個(gè)分組的
strP0 = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”D_PX”,”value”:”‘ .. strP0 .. ‘”},’
elseif (ext_col_info[1] == ‘P1’) then
strP1 = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”D_P1″,”value”:”‘ .. strP1 .. ‘”},’
end
end
]]>
AM群消息歷史記錄服務(wù)器端清理 http://m.sstd.com.cn/2903/ Mon, 01 Jul 2024 04:11:03 +0000 http://m.sstd.com.cn/?p=2903 AM群消息默認(rèn)是永久保留,但數(shù)據(jù)過(guò)大后可能會(huì)影響速度。我們可以分析一下要保留的年限,按需要可以對(duì)群消息記錄做一下清理操作

Declare @strSQL as nvarchar(1024)
Declare @strTable as nchar(19)
Declare @nOrder as int
Declare @strTabOrder as nvarchar(3)
Set @nOrder = 1
While @nOrder < 1000
Begin
Set @strTabOrder = REPLACE( str( @nOrder, 3 ), N’ ‘, N’0’ )
Set @strTable= N’OI_CROWD_C_MSG_T’ + @strTabOrder
— 判斷數(shù)據(jù)表是否存在,不存在就結(jié)束
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[‘ + @strTable + ‘]’) AND OBJECTPROPERTY(id, N’IsUserTable’) = 1)
RETURN
— 執(zhí)行刪除記錄,刪除指定日期之前的記錄
Set @strSQL = N’Delete ‘ + @strTable + N’ Where T_C5 < ”2017-10-07”’
EXECUTE sp_executesql @strSQL
Set @nOrder = @nOrder + 1
End
腳本里面的 ”2017-10-07”’ ,是需要自己改的,意思是清理掉這個(gè)日期之前的記錄

 

]]>
Mobox數(shù)據(jù)庫(kù)版本的查看 http://m.sstd.com.cn/2875/ Thu, 20 Jun 2024 01:45:06 +0000 http://m.sstd.com.cn/?p=2875 Mobox數(shù)據(jù)庫(kù)版本的查看

— 20171220 以后用這個(gè)查詢,以前的用 showdbver20171226 – oldziduan.txt 查詢

— 使用前 請(qǐng)修改 老的數(shù)據(jù)庫(kù)名稱 目前用的是 OIOrg.dbo OIAm.dbo OIFile.dbo OIMobox.dbo (老庫(kù)用 DMS.dbo)

declare @OIOrgDBVer varchar(40)
declare @AMDBVer varchar(40)
declare @OIFileDBVer varchar(40)
declare @DMSDBVer varchar(40)
declare @CODEDBVer varchar(40)
declare @GunghoVer varchar(40)
declare @REMINDDBVer varchar(40)
declare @WMSDBVer varchar(40)
declare @ISSUEDBVer varchar(40)
declare @PRINTDBVer varchar(40)

select @OIOrgDBVer = ‘OIOrgDB ‘ +(select S_C1 from OIOrg.dbo.OI_ORG_DBVER) + ‘ New- 20230327’

select @AMDBVer = ‘AM8DB ‘ +(select S_C1 from OIAm.dbo.OI_STK_DBVER) + ‘ New- 20200327’

select @OIFileDBVer = ‘OIFileDB ‘ +(select S_C1 from OIFile.dbo.OI_FILE_DBVER) + ‘ New- 20151106’

select @DMSDBVer = ‘DMSDB ‘ +(select CN_S_DMS from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20240321’

select @GunghoVer = ‘GunghoDB ‘ +(select CN_S_GUNGHO from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20240516’

select @WMSDBVer = ‘WMSDB ‘ +(select CN_S_WMS from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20240419’

— select @ISSUEDBVer= ‘ISSUEDB ‘ +(select CN_S_ISSUE from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20171110’

select @PRINTDBVer = ‘PRINT ‘ +(select CN_S_PRINT from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20171110’

— select @CODEDBVer = ‘CODEDB ‘ +(select CN_S_CODE from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20171110’

print ‘列出目前所有數(shù)據(jù)庫(kù)版本日期’
print @OIOrgDBVer
print @AMDBVer
print @OIFileDBVer
print @DMSDBVer
print ‘———————- Mobox3Ver 20240613’
print @GunghoVer
— print @CODEDBVer
print @WMSDBVer
— print @ISSUEDBVer
print @PRINTDBVer

 

]]>
Mobox 3000功能點(diǎn)頁(yè)面按鈕隱藏的lua實(shí)現(xiàn)方法 http://m.sstd.com.cn/2590/ Thu, 18 Apr 2024 03:06:07 +0000 http://m.sstd.com.cn/?p=2590 需求,我們有一個(gè)任務(wù)執(zhí)行后,需要對(duì)這個(gè)任務(wù)做后做評(píng)價(jià)。為此與任務(wù)系統(tǒng)集成通過(guò)3000功能點(diǎn)定義了一個(gè)任務(wù)評(píng)分的功能點(diǎn)。任務(wù)評(píng)分后,不能通過(guò)新增,對(duì)這個(gè)任務(wù)再次增加一個(gè)評(píng)分。因此第一個(gè)任務(wù)評(píng)分后,需要將頁(yè)面按鈕(新增)隱藏掉

腳本列子

— 功能:
— 3000 功能點(diǎn) 列出與某一個(gè)taskid相關(guān)的數(shù)據(jù)
— 若列出數(shù)據(jù)已經(jīng)有,將 新增 頁(yè)面按鈕屏蔽 (這個(gè)功能是做任務(wù)評(píng)測(cè)結(jié)果的,結(jié)果只能有一個(gè),不可能多個(gè))
————————————————————————–
json = require (“json”)
mobox = require (“OILua_JavelinExt”)

function shownowtaskdata ( strLuaDEID )

local nRet, strRetInfo
local nType
local strTaskID
local bHidden=false
local strClsID=""
--拿到數(shù)據(jù)對(duì)象標(biāo)識(shí)
nRet, strRetInfo = mobox.getCurEditExtInfo( strLuaDEID )
if ( nRet ~= 0 ) then
    mobox.error( strLuaDEID, "系統(tǒng)獲取擴(kuò)展屬性失敗 "..strRetInfo )
    return
end
if ( strRetInfo =='' or strRetInfo==nil or strRetInfo=='{}' ) then
    mobox.error( strLuaDEID, "系統(tǒng)獲取擴(kuò)展屬性為空!" )
    return
end
local extinfo = json.decode( strRetInfo )
strClsID=extinfo.cls_id -- 得到當(dāng)前cls的id ,下面操作需要

— 獲取任務(wù)全局屬性 (這個(gè)案例是與 Gungho任務(wù)系統(tǒng)集成,所以需要這個(gè)參數(shù),別的環(huán)境這個(gè)可以忽略
nRet, strRetInfo = mobox.getGlobalAttr( strLuaDEID, “task_id” )
if ( nRet ~= 0 or strRetInfo == ” ) then
mobox.error( strLuaDEID, “系統(tǒng)無(wú)法獲取任務(wù)號(hào) “..strRetInfo )
return
end
local input_paramter = json.decode( strRetInfo )
local strTaskID = input_paramter[1].value

local strCondition
strCondition = "G_TASK_ID='"..strTaskID.."'"

--增加隱藏按鈕的依據(jù)-通過(guò)條件查詢返回符合數(shù)據(jù)>0 既隱藏
-- local strQeuryCondition="S_TESTITEM='X'" (定義grid某一個(gè)字段內(nèi)有某些數(shù)值 這里沒有啟用)
nRet, strRetInfo = mobox.getDataObjCount(strLuaDEID, strClsID, strCondition)
if (nRet ~= 0 ) then
    mobox.error(strLuaDEID, "得到數(shù)據(jù)數(shù)量失敗,原因:" .. strRetInfo)
    return
end

--轉(zhuǎn)為整數(shù)類型
local nDataCount = tonumber(strRetInfo)
if (nDataCount >0) then
    bHidden=true
end

--隱藏頁(yè)面按鈕 “新增”
local strHiddenButton = ''
if (bHidden) then
    strHiddenButton =
    ',{"action_type":"hidden_button","value":[{"name":"新增"}]}'
end

local strAction = '[{"action_type":"set_query_condition","value":{"where":"' .. strCondition .. '","order":""}}'
strAction = strAction .. strHiddenButton .. ']'
mobox.setAction( strLuaDEID, strAction )
end
這個(gè)列子也可以用于別的一些非法字符串的處理
]]>
lua 對(duì)回車(%3Cbr%3E)處理方法 http://m.sstd.com.cn/2537/ Thu, 11 Apr 2024 05:02:28 +0000 http://m.sstd.com.cn/?p=2537 我們?cè)贕ird列出數(shù)據(jù)的時(shí)候,若數(shù)據(jù)內(nèi)帶%3Cbr%3E,其實(shí)是回車的意思,若grid讀出數(shù)據(jù)不做任何處理,那么就會(huì)影響系統(tǒng)表達(dá)

為了解決這個(gè)問(wèn)題,我們可以編輯一個(gè)lua腳本,將這個(gè)數(shù)據(jù)做處理后再顯示(在顯示前事件里面定義這個(gè)lua腳本)

腳本列子

–[[
? ? 功能說(shuō)明:
? ? ? ? 1) 顯示前做一些字段的處理
? ? ? ? 2)前端導(dǎo)入,新增有換行符號(hào) %%3Cbr%%3E  ,替換成 <br> 前端html支持的換行內(nèi)容
? ? ? ? 3)內(nèi)容中有&,替換成 & 前端解析 &不支持,最好在輸入時(shí)進(jìn)行替換
–]]
json = require(“json”)
mobox = require(“OILua_JavelinExt”)
require(“oi_basestrfunc”)
function BeforeGridShow(strLuaDEID)
? ? local nRet, strRetInfo
? ? local arobjs, attrs, success
? ? — 獲取輸入的DataJson數(shù)據(jù)包
? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)
? ? if (nRet ~= 0) then
? ? ? ? mobox.error(strLuaDEID, “無(wú)法獲取數(shù)據(jù)包!”)
? ? ? ? return
? ? end
? ? if (strRetInfo == ” or strRetInfo == nil) then
? ? ? ? return
? ? end
? ? — 解析數(shù)據(jù)包,數(shù)據(jù)包格式
? ? — [{“id”:””,”attrs”:[{“attr”:””,”value”:””},..]},..]
? ? local n, nCount
? ? success, arobjs = pcall(json.decode, strRetInfo)
? ? if (success == false) then
? ? ? ? mobox.error(strLuaDEID, “非法的JSON格式!”)
? ? ? ? return
? ? end
? ? nCount = #arobjs
? ? if (nCount == 0) then
? ? ? ? return
? ? end
? ? local obj, attrs
? ? local nattr_count
? ? local strRow, strAttr, strItem
? ? local strDataJson
? ? local id, strValue
? ? local strAttrs
? ? strDataJson = ‘[‘
? ? local seg = {}
? ? local nSegCount = 0
? ? for n = 1, nCount do
? ? ? ? obj = arobjs[n]
? ? ? ? attrs = obj.attrs
? ? ? ? nattr_count = #attrs
? ? ? ? id = obj.id
? ? ? ? strAttrs=”
? ? ? ? — 開始過(guò)濾顯示數(shù)據(jù)對(duì)象屬性
? ? ? ? for nIndex = 1, nattr_count do
? ? ? ? ? ? strAttr = attrs[nIndex].attr
? ? ? ? ? ? strValue = attrs[nIndex].value
? ? ? ? ? ? strValue = strValue:gsub(“%%3Cbr%%3E”, “<br>”)
? ? ? ? ? ? strValue = strValue:gsub(“&”, “&”)
? ? ? ? ? ? strItem = ‘{“attr”:”‘ .. strAttr .. ‘”,”value”:”‘ .. strValue .. ‘”},’
? ? ? ? ? ? strAttrs = strAttrs .. strItem
? ? ? ? end
? ? ? ? — 取消最后一個(gè),號(hào)
? ? ? ? strAttrs = trim_laster_char(strAttrs)
? ? ? ? strRow = ‘{“id”:”‘ .. id .. ‘”,”attrs”:[‘ .. strAttrs .. ‘]},’
? ? ? ? strDataJson = strDataJson .. strRow
? ? end
? ? — 取消最后一個(gè),號(hào)
? ? strDataJson = trim_laster_char(strDataJson)
? ? strDataJson = strDataJson .. ‘]’
? ? local strAction = ‘[{“action_type”:”reset_data_attr”,”value”:’ .. strDataJson .. ‘}]’
? ? mobox.setAction(strLuaDEID, strAction)
end
這個(gè)列子也可以用于別的一些非法字符串的處理
]]>
SQLServer 2008 以上版本數(shù)據(jù)庫(kù)日志清理(親測(cè)) http://m.sstd.com.cn/2393/ Sun, 24 Mar 2024 07:54:25 +0000 http://m.sstd.com.cn/?p=2393 當(dāng)數(shù)據(jù)庫(kù)的日志文件太大的情況下,SQLServer 2008 以上版本進(jìn)行數(shù)據(jù)庫(kù)日志清理,需要采用的方法如下(執(zhí)行前 將數(shù)據(jù)庫(kù)名 改成你需要清理的數(shù)據(jù)名稱)


–1)查詢指定數(shù)據(jù)庫(kù)的 <數(shù)據(jù)庫(kù)日志文件名稱>? ,通過(guò)下面的sql的語(yǔ)句查詢到<數(shù)據(jù)庫(kù)日志文件名稱>,替換到下面sql的<數(shù)據(jù)庫(kù)日志文件名稱>
USE [數(shù)據(jù)庫(kù)名]
GO
SELECT name FROM SYS.database_files WHERE type_desc=’LOG’

–2)執(zhí)行后清理該數(shù)據(jù)庫(kù)日志文件
USE [master]
GO
ALTER DATABASE [數(shù)據(jù)庫(kù)名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [數(shù)據(jù)庫(kù)名] SET RECOVERY SIMPLE
GO
USE [數(shù)據(jù)庫(kù)名]
GO
DBCC SHRINKFILE (N’數(shù)據(jù)庫(kù)日志文件名稱‘ , 0,TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE [數(shù)據(jù)庫(kù)名] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [數(shù)據(jù)庫(kù)名] SET RECOVERY FULL
GO
]]>
Gungho任務(wù)二次開發(fā)-任務(wù)分類集成3000功能的擴(kuò)展屬性excel導(dǎo)入 http://m.sstd.com.cn/2176/ Mon, 26 Feb 2024 05:43:40 +0000 http://m.sstd.com.cn/?p=2176 Gungho任務(wù)二次開發(fā)-任務(wù)分類集成3000功能的清單導(dǎo)入

這個(gè)是一個(gè)標(biāo)準(zhǔn)的導(dǎo)入模板 ,使用前可以通過(guò)修改 表名,字段名稱,字段中文名,字段對(duì)應(yīng)賦值變量名稱。

–[[

這個(gè)是一個(gè)標(biāo)準(zhǔn)的腳本,可以

1、修改里面的數(shù)據(jù)對(duì)象名稱 樣品技術(shù)參數(shù)

2、字段相關(guān)名稱(字段中文名、字段名稱、字段賦值變量名稱)

字段名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? 字段中文名? ? ? ? ? 字段對(duì)應(yīng)賦值變量名

N_SN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?序號(hào)? ? ? ? ? ? ? ? ? ? ?nSN

S_ITEM_NAME? ? ? ? ? ? ? ? ?名稱? ? ? ? ? ? ? ? ? ? ?strItemName

S_ITEM_M_S_N? ? ? ? ? ? ? ?型號(hào)_規(guī)格_數(shù)量? ?strItemMSN

S_ITEM_CODE? ? ? ? ? ? ? ? ?編號(hào)? ? ? ? ? ? ? ? ? ? ?strItemCode

S_MANUFACTURER? ? ? ? 生產(chǎn)單位? ? ? ? ? ? ? strFacturer

3、若字段不夠多,或太多,需要調(diào)整程序

4、里面的唯一性判斷是 task_id + S_ITEM_NAME + S_ITEM_CODE (需要根據(jù)情況調(diào)整)

–]]

功能說(shuō)明: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, “系統(tǒng)無(wú)法獲取全局變量 “..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, “必須要有項(xiàng)目及任務(wù)相關(guān)信息” )

return

end

— 獲取導(dǎo)入的單條數(shù)據(jù), 返回 {“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, “無(wú)法獲取導(dǎo)入數(shù)據(jù)!”..strRetInfo)

return

end

local n, nCount, nValue

local strAddAttr = ”

local strAttr = ”

local strSetSQL = ”

— 一些關(guān)鍵屬性 (腳本 后期只需要改字段名稱就可以)

local nSN? ? ? ? ? ? ? ? ? ? ? ? ? ?— 對(duì)應(yīng) 序號(hào) N_SN

local strItemName = ”? ? ? ? — 對(duì)應(yīng) 名稱 S_ITEM_NAME

local strItemMSN = ”? ? ? ? ?— 對(duì)應(yīng) 型號(hào)_規(guī)格_數(shù)量 S_ITEM_M_S_N

local strItemCode = ”? ? ? ? ?— 對(duì)應(yīng) 編號(hào) S_ITEM_CODE

local strFacturer = ”? ? ? ? ? ? — 對(duì)應(yīng) 生產(chǎn)單位 S_MANUFACTURER

 

— 因?yàn)槊看螌?dǎo)入只傳一條記錄,所以當(dāng)前條寫入 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導(dǎo)入的一行數(shù)據(jù),根據(jù)excel的列定義進(jìn)行屬性組合 strAddAttr

nCount = #input_rows

for n = 1, nCount do

strAttr = input_rows[n].attr

strValue = input_rows[n].value

— 根據(jù)導(dǎo)入的excel列頭名稱進(jìn)行判斷

— 關(guān)鍵屬性判斷

if (strAttr == “名稱”) then

if (strValue == ”) then

mobox.error(strLuaDEID, strAttr .. “不能為空!”)

return

end

strItemName = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_NAME”,”value”:”‘ .. strItemName .. ‘”},’

 

— 常規(guī)屬性

elseif (strAttr == “序號(hào)”) then

nSN = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”N_SN”,”value”:”‘ .. nSN .. ‘”},’

elseif (strAttr == “型號(hào)_規(guī)格_數(shù)量”) then

strItemMSN = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_M_S_N”,”value”:”‘ .. strItemMSN .. ‘”},’

elseif (strAttr == “編 號(hào)”) then

strItemCode= strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_CODE”,”value”:”‘ .. strItemCode .. ‘”},’

elseif (strAttr == “生產(chǎn)廠家”) then

strFacturer = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_MANUFACTURER”,”value”:”‘ .. strFacturer .. ‘”},’

end

end
–去除最后一個(gè),
local strAddAttr1 = trim_laster_char(strAddAttr)

— 步驟2 根據(jù) (名稱+編號(hào)+taskid) 來(lái)判斷導(dǎo)入的檢測(cè)數(shù)據(jù)是否已經(jīng)存在
— 如果已經(jīng)存在,根據(jù)導(dǎo)入的數(shù)據(jù)進(jìn)行覆蓋
— 如果不存在需要?jiǎng)?chuàng)建
local attrs
local strCondition = “S_ITEM_NAME='” .. strItemName .. “‘ and G_TASK_ID='”..strTaskID..”‘ and S_ITEM_CODE='” .. strItemCode.. “‘”
nRet, strRetInfo = mobox.existThisData(strLuaDEID, “樣品技術(shù)參數(shù)”, strCondition)
if (nRet ~= 0 ) then

mobox.error(strLuaDEID, “在檢查樣品技術(shù)參數(shù)是否存在時(shí)失敗! ” .. strRetInfo)

return
end

if (strRetInfo == ‘yes’) then

— 已經(jīng)存在,根據(jù)導(dǎo)入的數(shù)據(jù)進(jìn)行覆蓋

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, “樣品技術(shù)參數(shù)”, strCondition, strSetSQL)

if (nRet ~= 0) then

mobox.error(strLuaDEID, strRetInfo)

return

end

elseif (strRetInfo == ‘no’) then

— 創(chuàng)建 樣品技術(shù)參數(shù)

— mobox.writeSysLog(“strAddAttr1”, strAddAttr1)

strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’

mobox.writeSysLog(“strAddAttr2”, strAddAttr1)

nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “樣品技術(shù)參數(shù)”, strAddAttr1)

if (nRet ~= 0) then

mobox.error(strLuaDEID, “創(chuàng)建樣品技術(shù)參數(shù)失敗! ” .. strRetInfo )

return
end

end
end

 

function
]]>
主站蜘蛛池模板: 岛国在线视频| 中文字幕第6页| 久久大陆| 国产五区| 最新国产中文字幕| 日本大乳高潮xxxxx| 森林影视官网在线观看| 欧美三区在线| 艾草av| 日日夜夜噜噜噜| 国产精品亚洲一区二区无码| 成人免费黄色av| 狠狠色hd久久| 日韩一级影片| 亚洲av日韩av永久无码色欲| 五月婷婷激情四射| 在线视频 一区二区| 欧美成人区| 美女流白浆视频| 国产精品日韩在线观看| 日老女人视频| 欧美激情视频免费观看| 日本一级黄色大片| 天天爱天天爽| 久久亚洲成人网| 深夜美女福利视频| 91精品啪在线观看国产| 综合久久精品| 99精品视频99| 黄色高潮视频| 国产农村妇女精品一二区| 亚洲欧美精品在线| 黄色应用在线观看| 国产一区二区三区福利| 99热这里只有精品在线观看| av在线天堂网| 一级成人免费视频| gogogo免费在线观看| 98自拍视频| 国产精品亚洲а∨天堂2021| 夜夜爱av| 亚洲精品乱| 国产精品久久9| 精品国产无码AV| 久久久99精品视频| 日韩精品首页| 懂色一区二区三区久久久| 天堂在线网| 一区二区av| 欧美日韩精品在线| av在线免费观看国产| 成人黄色在线观看| 夜夜精品视频| 99久久99九九99九九九| 人与野鲁交a欧美| 中文字幕第21页| 国产一区色| 黄色激情av| 黄色香蕉网| 最新中文字幕免费| 草草影院ccyycom| 91一区二区三区在线观看| 成人女人免费视频| jux888本庄优花在线| 午夜h视频| 国自产拍偷拍精品啪啪一区二区| 五月天免费网站| 久久久久久久久久久国产精品 | 午夜操操| 亚洲性天堂| 免费毛毛片| 中文字幕一区二区人妻| 插久久| 高清国产mv在线观看| 久久xxxx| 久久精品视频99| 久久久久成人精品无码| 爱爱视频图| 成人av网页| 最近的中文字幕大全免费版| av网站免费大全| 成人黄色a| 国产亚洲美女精品久久久2020| 三级性生活片| 久久久久逼| 国产三级无遮挡| 黄色小电影网址| 久久6视频| 99re最新| 中文字幕一区二区三区av| 日韩成人黄色| 在线免费观看av网址| 国产精品乱子伦| 国产一区二区久久| 欧美精品91| 国产麻豆一区二区三区在线观看| 伊人狼人综合| 成人激情四射| 国产十八熟妇av成人一区| 国产精品第2页| 欧美 日韩 国产 精品| 成人av国产| 国产日韩免费| 国产精品区一区二| 亚洲天堂伊人网| 国产熟妇搡bbbb搡bbbb搡| 成人h动漫在线| 国产三级a三级三级| yy6080午夜| av在线第一页| 日本不卡一区在线观看| 91禁蘑菇在线看| 午夜精品福利一区二区| 久久精品欧美日韩| 国产精品交换| 久久96| 国产做受69高潮| 黄色大片视频| 国产情侣一区| 超碰在线观看97| 91啦丨九色丨蝌蚪丨中文| 上原亚衣av在线| 久久久二| 欧美mv日韩mv国产网站app| 99re这里只有精品6| 国产成人精品一区| av网站免费大全| 少妇一边呻吟一边说使劲视频| 国产视频观看| www.夜夜| 香蕉网址| 97神马影院| 无码国精品一区二区免费蜜桃| 日本黄色片一级| 91超碰人人| 天天操操操操操| 日本一区免费| 亚洲一区在线观看视频| 欧美无人区码suv| 亚洲大片精品永久免费看网站 | 狼人综合av| 日本免费片| wwww欧美| 中文字幕乱码久久午夜不卡| 日本视频在线免费观看| 免费看片视频| 老黄网站在线观看| 国产精品情侣视频| 国产h在线| 欧美在线视频免费播放| 少妇3p视频| 偷看洗澡一二三区美女| 又色又爽又高潮免费视频国产| 国产精品免费一区二区三区| 日日摸日日碰夜夜爽av| 国产日产欧美一区二区| 又色又爽又黄gif动态图| 国产jk精品白丝av在线观看| 扒下小娇妻的内裤打屁股| 波多野结衣视频观看| 三级理伦| 超碰一区二区| 亚洲午夜在线| 欧美xxxx喷水| 免费日韩视频| 在线天堂1| 丁香色婷婷| www.com欧美| 天天插天天射| 亚洲av中文无码乱人伦在线观看| 人成精品| 日韩黄动漫| 精品久久一| 亚洲欧美精选| 午夜777| 色老大视频| 人人澡人人澡人人澡| 麻豆影音先锋| 国产自在线拍| 看一级大片| 高hnp视频| 尤物h湿1v1play| 91麻豆国产精品| 国产性自拍| 国产69久久| 99视频在线观看免费| 欧美日韩在线播放视频| 97伦伦午夜电影理伦片| 偷偷操不一样的经典| 双性尿奴穿贞c带憋尿| 4438x五月天| 美女日批网站| 国产黄色三级网站| 国产视频一区二区在线观看| 波多野结衣视频免费观看| 波多野结衣人妻| 韩国伦理在线| 日韩一区二区三区免费在线观看| 日韩免费在线视频| av一本在线| 国产对白在线| 黄色免费看片| 人妻丝袜一区二区| 美女福利视频导航| 超碰国产在线观看| 免费av观看| 91精品影视| 国产区第一页| 狠狠色hd久久| 香蕉日日| 日本美女动态图| 日本婷婷| 日韩白浆| 免费观看av的网站| 国产精品啪啪啪视频| 99在线观看| 玖玖玖精品| 四虎国产精品永久免费观看视频| 成人免费淫片视频观| 欧美尤物视频| 亚洲第一av| 精品无码久久久久久久久| 欧美熟妇交换久久久久久| 99热在线只有精品| 日韩av手机在线观看| 亚洲免费公开视频| 国产91免费看| 黄色片在线免费观看视频| 欧美日韩国产在线观看| 96看片| 亚洲天堂色| 亚洲午夜激情视频| 麻豆传媒在线免费| 国产视频首页| 韩国视频一区二区| 精品探花| 伊人久久久久久久久久| 北条麻妃av在线| 嫩模被强到高潮呻吟不断| 欧美色图17p| 精品午夜一区| 亚洲成人精品影视| 国产不卡在线视频| 天天综合中文字幕| 亚洲视频二区| 国产精品视频全国免费观看| 免费黄色高清网站| hs网站在线观看| 秋霞一级视频| 国产精品久久av| 综合亚洲视频| 国产又粗又长又黄视频| 日韩色在线| www.免费在线观看| 黄色www网站| 神马午夜国产| 婷婷俺来也| 国产精品婷婷久久爽一下| 在线观看岛国av| 中出亚洲| 吃奶av| 2014亚洲天堂| 91麻豆精品一二三区在线| 欧美va视频| 安徽妇搡bbbb搡bbbb| 免费一级suv好看的国产网站| 天天影视亚洲| 67194成人在线观看| 欧美一区三区三区高中清蜜桃| 亚洲逼网| 亚洲免费看片| av中字在线| 麻豆综合网| 黄色网址www| 蜜臀麻豆| 白白色2012年最新视频| 男人猛吃奶女人爽视频| 91精品在线观看视频| 成年人视频在线免费看| 日韩专区一区二区三区| 午夜视频在线免费看| 麻豆一区二区在线| 亚洲特黄毛片| 激情视频网站在线观看| 黑人无套内谢中国美女| 超碰99在线| 国产91福利| av影院在线播放| 亚洲第一视频在线| 香蕉久久一区二区三区| 亚洲欧美乱日韩乱国产| 日韩av首页| 中文字幕乱伦视频| 一本色综合亚洲精品| 精品色播| 国产一区二区日韩| 99成人在线| 长河落日| 日皮视频免费看| 久久综合国产| 深爱激情五月婷婷| 国产在线1| 在线观看av日韩| 黄色av免费| 色姑娘天天干| 湿妹子影院| aa黄色片| 人妻精品国产一区二区| 色四虎| 亚洲AV无码精品色毛片浪潮| 亚洲五月婷婷| 99久久影视| 亚洲av无码一区二区三区人| 无毒黄色网址| 亚洲自啪| 伊人草草| 超碰碰碰| 韩国三级在线看| 最新日韩av在线| 黄色成人在线免费观看| 中文字幕亚洲五码| 日韩av线| 精品国产区一区二| 一级性大片| 添b视频| 4388成人网| 乌克兰毛片| 国产爱搞| 亚洲一级一级| 欧美一级片在线播放| 国产成人午夜| 网友自拍视频一区| sprd在线播放| 日韩人体视频| 日韩av影视大全| 中午字幕在线观看| www插插插无码免费视频网站| 五月激情婷婷综合| 古装三级吃奶做爰| 色欲av无码一区二区三区| 长篇乱肉合集乱500小说日本| 国产欧美日韩精品在线| 国产123区| 欧美精品导航| 亚洲18禁av一区二区三区| 免费在线一级片| 亚洲第一免费网站| 毛片999| 久艹在线| 中文字幕一区二区三区小说| 免费av一级片| 97视频在线看| 免费色网站| 女人av网| 欧美黄色小视频| a色网站| 日本电影一区| 成人做爰69片免费观看| 26uuu国产精品| 黄91在线观看| 伊人院| 国产精伦| 黄色av大片| 亚洲色图综合区| 精品视频导航| japansexav| jiizzyou性欧美老片| 四虎精品永久在线| 五月天色网站| 2024av视频| 国产情侣av自拍| 丰满女邻居的色诱4hd| 亚洲精品少妇一区二区| 毛片网站有哪些| 中文字幕中文在线| 午夜小视频免费| 德国艳星videos极品hd| 国产成人中文字幕| 一级性感毛片| 好吊妞视频在线观看| 日本少妇激情舌吻| 歪歪视频在线观看| 久久精品激情| sm一区二区三区| 天天操精品| 国产乱码在线| 在线视频亚洲色图| 手机av在线播放| 91av一区| 亚洲综合精品久久| 国产精品亚洲精品| 国模小黎自慰gogo人体| 黄频在线观看| 免费看麻豆| 亚洲三页| 四虎一区二区| 久久婷婷网站| 国产欧美一区二区三区视频在线观看| 亚洲成色网| 国产一级黄色| 亚洲熟妇熟女久久精品综合一区| 日批视频在线| 免费看黄色的网址| 蜜美杏av| 亚洲成a人无码| 欧美嫩交| 黄色大片网| 91射射| 日韩精品一级二级| 欧美精品一区二区三| 国产淫| ,一级淫片a看免费| 日韩欧美视频二区| 免费一级做a爰片久久毛片潮| 少妇性生活视频| 爱爱视频网| 国产98色在线 | 日韩| 欧美日韩不卡一区二区| 精品乱子伦一区二区三区视频| 成年人免费看视频| 亚洲一区自拍| 黄色三级三级| 国偷自拍| 久久久精品国产免费爽爽爽| www在线观看免费视频| 欧美中文在线观看| 激情五月中文字幕| 九九色精品| 成人之间dvd| 福利亚洲| 91人人爽| 奇米影视一区二区三区| 国产精品亚洲欧美日韩| 亚洲成人欧美| 欧美91精品久久久久国产性生爱| 久久香蕉热| 国产欧美高清| 精品日韩一区二区三区四区| metart顶级尤物video| 亚洲久久一区二区| 四川少妇搡bbb搡ww嫩| 91色伦| 欧美日韩一区二区三区四区五区| 男女羞羞在线观看| 成人高清网站| 日韩毛片网| 久久久久人妻精品色欧美| 成人在线免费网站| 无码人妻aⅴ一区二区三区| 成年人网站免费| 久草色在线| 亚洲精品你懂的| jizz免费观看| 国产精品一二三四五| 国产91香蕉| 精品人妻一区二区三区免费| 天天爱天天射| 免费黄色a| 日韩精品一区二区三区视频在线观看| 国产三级漂亮女教师| 韩日av在线播放| 中国美女乱淫免费看视频| 日本最新中文字幕| 在线国产不卡| 国产精品久久久久久久久久久久午夜片| 欧美精品免费在线| 中文字幕一区二区人妻视频| 国产swag在线| 在线va视频| 欧美色图亚洲天堂| 四虎成人影视| 老外av| 欧美男优| 亚洲精品a| 中.国人xxxxxxxxx69| 国内精品久久99人妻无码| 日本啪啪片| 爱情岛论坛亚洲品质自拍视频| 日本一区二区三区四区五区| 亚洲日本va中文字幕| 欧美日韩妖精视频| 国产免费二区| 91免费官网| xxxxx亚洲| 国产亚洲精品久久久| 国产cao| 亚洲性生活| 好看的av电影| 黄视频免费在线观看| 嫩草国产| 男女午夜影院| 久久视频在线免费观看| 男女精品网站| 国产重口老太伦| 91精品丝袜| 国产精品1234区| 亚洲综合区| v11av在线播放| 午夜视频在线免费| 日韩av女优在线观看|