{<section id="cs_t1client.description" >}
#應用 a00 樣板自動產生(Version:)
#+ Version..: T100-ERP-1.01.(SD版次:,PR版次:) Build-
#+
#+ Filename...: cs_t1client
#+ Description: T1雲
#+ Creator....: tiptop(-- ::)
#+ Modifier...: () -SD/PR- {</section>} {<section id="cs_t1client.global" >}
#應用 p00 樣板自動產生(Version:)
#add-point:註解編寫項目 #end add-point IMPORT os
#add-point:增加匯入項目
IMPORT util
IMPORT xml
IMPORT com
#end add-point SCHEMA ds GLOBALS "../../cfg/top_global.inc"
#add-point:增加匯入變數檔 #end add-point {</section>} {<section id="cs_t1client.free_style_variable" >}
#add-point:free_style模組變數(Module Variable) #end add-point {</section>} {<section id="cs_t1client.global_variable" >}
#add-point:自定義模組變數(Module Variable) #end add-point {</section>} {<section id="cs_t1client.other_dialog" >} {</section>} {<section id="cs_t1client.other_function" readonly="Y" >} ################################################################################
# Descriptions...: 通过账号密码获取令牌
# Memo...........:
# Usage..........: CALL cs_t1client_get_token()
# RETURNING r_success,r_token
# Input parameter:
# Return code....: r_success 成功否
# : r_token 回传的令牌
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_get_token()
##此函数给作业czzi001调用,其他别调用,避免造成token与数据表的不一致
DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
DEFINE ls_url STRING
DEFINE r_token STRING LET ls_url = "http://***.***.*.*.***:8080",
"/api/getToken",
"?user=*********&password=**********&appid=***********&clientType=pc"
DISPLAY "URL=\n" , ls_url , "\n" CALL cs_t1client_http_posturl(ls_url) RETURNING lb_result,ls_resp
IF lb_result=TRUE THEN
#解析JSON
CALL cs_t1client_parse_json(ls_resp) RETURNING r_token
DISPLAY ls_resp #显示一下回传的JSON
DISPLAY r_token
RETURN r_token
ELSE
# 顯示錯誤訊息
DISPLAY ls_resp
RETURN
END IF RETURN END FUNCTION ################################################################################
# Descriptions...: 提交url
# Memo...........:
# Usage..........: CALL cs_t1client_http_posturl(p_url)
# RETURNING r_body
# Input parameter: p_url url内容
# Return code....: r_body body内容
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_http_posturl(p_url)
DEFINE l_http_req com.HTTPRequest
DEFINE l_http_res com.HTTPResponse
DEFINE p_url STRING
DEFINE l_succ BOOLEAN
DEFINE l_str STRING
DEFINE l_body STRING # initial parameter
LET l_succ = FALSE
LET l_str = "" TRY
# 設置 HttpRequest START
LET l_http_req = com.HttpRequest.Create(p_url) # 建立請求 requesst 物件
CALL l_http_req.setTimeOut() # 設定 request timeout
CALL l_http_req.setMethod("GET") # 設定Http method
CALL l_http_req.setCharset("UTF-8") # 設定編碼
CALL l_http_req.doRequest() # send request LET l_http_res = l_http_req.getResponse() #取得回傳 response 物件
IF l_http_res.getStatusCode() != THEN
# server 回傳報錯
LET l_succ = FALSE
LET l_str = "HTTP Error ("||l_http_res.getStatusCode()||") ", l_http_res.getStatusDescription()
ELSE
# 取得 server 回傳 body content string
LET l_succ = TRUE
LET l_str = l_http_res.getTextResponse() # 取得 response body字串
#DISPLAY l_str
END IF
CATCH
#get error from genero
LET l_succ = FALSE
LET l_str = "ERROR :",STATUS||" ("||SQLCA.SQLERRM||")"
END TRY # 回傳結果
RETURN l_succ,l_str END FUNCTION ################################################################################
# Descriptions...: 解析回传的json
# Memo...........:
# Usage..........: CALL cs_t1client_parse_json(p_str)
# RETURNING
# Input parameter: p_str json 字符串
# :
# Return code....:
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_parse_json(p_str)
DEFINE p_str STRING
DEFINE l_json util.JSONObject
DEFINE r_token STRING
DEFINE i INTEGER
DISPLAY p_str
LET l_json = util.JSONObject.parse(p_str) FOR i= TO l_json.getLength()
DISPLAY i, ": ", l_json.name(i), "=", l_json.get(l_json.name(i))
IF l_json.name(i) = "token" THEN
LET r_token = l_json.get(l_json.name(i))
END IF
END FOR
RETURN r_token
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL cs_t1client_get_create(p_type,p_token)
# RETURNING 回传参数
# Input parameter: p_type 类型
# : p_token 令牌
# Return code....: 数据包(STRING类的JSON)
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_get_create(p_type,p_token)
DEFINE p_type LIKE type_t.chr1000
DEFINE p_token STRING
DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
DEFINE ls_url STRING
DEFINE r_token STRING
DEFINE l_json util.JSONObject LET ls_url = "http://***.***.*.*.***:8080",
"/apiData/getCreate",
"?token=",p_token,"&itemType=",p_type,""
DISPLAY "URL=\n" , ls_url , "\n" CALL cs_t1client_http_get(ls_url) RETURNING lb_result,ls_resp
IF lb_result=TRUE THEN
#解析JSON
LET l_json = util.JSONObject.parse(ls_resp)
CALL cs_t1client_http_prasejsontest(l_json)
#CALL cs_t1client_parse_json(ls_resp) RETURNING r_token
DISPLAY ls_resp #显示一下回传的JSON
DISPLAY ls_resp
RETURN ls_resp
ELSE
# 顯示錯誤訊息
DISPLAY ls_resp
RETURN
END IF RETURN END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_modify_data(p_str,p_itemcode,p_itemname,p_createtype,p_remark)
DEFINE p_str STRING
DEFINE l_json util.JSONObject
DEFINE r_str STRING
DEFINE rec RECORD
value STRING,
text STRING,
css util.JSONObject
END RECORD
DEFINE p_itemcode LIKE type_t.chr1000
DEFINE p_itemname LIKE type_t.chr1000
DEFINE p_createtype LIKE type_t.chr1000
DEFINE p_remark LIKE type_t.chr1000
DEFINE i,j INTEGER
DISPLAY p_str
LET l_json = util.JSONObject.parse(p_str)
FOR i= TO l_json.getLength()
#DISPLAY i, ": ", l_json.name(i), "=", l_json.get(l_json.name(i))
IF l_json.name(i) = "ItemCode" THEN
LET rec.value = p_itemcode
LET rec.text = p_itemcode
LET rec.css = util.JSONObject.parse("{}")
CALL l_json.put(l_json.name(i),rec)
END IF
IF l_json.name(i) = "ItemName" THEN
LET rec.value = p_itemname
LET rec.text = p_itemname
LET rec.css = util.JSONObject.parse("{}")
CALL l_json.put(l_json.name(i),rec)
END IF
IF l_json.name(i) = "CreateType" THEN
LET rec.value = p_createtype
LET rec.text = p_createtype
LET rec.css = util.JSONObject.parse("{}")
CALL l_json.put(l_json.name(i),rec)
END IF
IF l_json.name(i) = "Remark" THEN
LET rec.value = p_remark
LET rec.text = p_remark
LET rec.css = util.JSONObject.parse("{}")
CALL l_json.put(l_json.name(i),rec)
END IF
END FOR LET r_str = l_json.toString()
RETURN r_str
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_i193_create(p_token,p_itemtype,p_str)
DEFINE p_itemtype LIKE type_t.chr1000
DEFINE p_token STRING
DEFINE p_str STRING
DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
DEFINE ls_url STRING
DEFINE r_token STRING LET ls_url = "http://***.***.*.*.***:8080",
"/apiData/create"
# "?token=",p_token,"&itemType=",p_itemtype,"" DISPLAY "URL=\n" , ls_url , "\n"
LET p_str = "token=",p_token,"&itemType=",p_itemtype,"&dataString=",p_str,""
#LET p_str = " "
CALL cs_t1client_http_post(ls_url,p_str) RETURNING lb_result,ls_resp IF lb_result=TRUE THEN
#解析JSON
#CALL cs_t1client_parse_json(ls_resp) RETURNING r_token DISPLAY ls_resp #显示一下回传的JSON
DISPLAY ls_resp
#RETURN ls_resp
ELSE
# 顯示錯誤訊息
DISPLAY ls_resp
#RETURN
END IF #RETURN
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_http_get(p_url)
DEFINE l_http_req com.HTTPRequest
DEFINE l_http_res com.HTTPResponse
DEFINE p_url STRING
DEFINE l_succ BOOLEAN
DEFINE l_str STRING
DEFINE l_body STRING
DEFINE p_method LIKE type_t.chr100 # initial parameter
LET l_succ = FALSE
LET l_str = "" TRY
# 設置 HttpRequest START
LET l_http_req = com.HttpRequest.Create(p_url) # 建立請求 requesst 物件
CALL l_http_req.setTimeOut() # 設定 request timeout
CALL l_http_req.setMethod("GET") # 設定Http method
CALL l_http_req.setCharset("UTF-8") # 設定編碼
DISPLAY l_http_req
CALL l_http_req.doRequest() # 設定Http method LET l_http_res = l_http_req.getResponse() #取得回傳 response 物件
IF l_http_res.getStatusCode() != THEN
# server 回傳報錯
LET l_succ = FALSE
LET l_str = "HTTP Error ("||l_http_res.getStatusCode()||") ", l_http_res.getStatusDescription()
ELSE
# 取得 server 回傳 body content string
LET l_succ = TRUE
LET l_str = l_http_res.getTextResponse() # 取得 response body字串
#DISPLAY l_str
END IF
CATCH
#get error from genero
LET l_succ = FALSE
LET l_str = "ERROR :",STATUS||" ("||SQLCA.SQLERRM||")"
END TRY # 回傳結果
RETURN l_succ,l_str
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_http_post(p_url,p_str)
DEFINE l_http_req com.HTTPRequest
DEFINE l_http_res com.HTTPResponse
DEFINE p_url STRING
DEFINE l_succ BOOLEAN
DEFINE l_str STRING
DEFINE l_body STRING
DEFINE p_str STRING # initial parameter
LET l_succ = FALSE
LET l_str = "" TRY
# 設置 HttpRequest START
LET l_http_req = com.HttpRequest.Create(p_url) # 建立請求 requesst 物件
CALL l_http_req.setTimeOut() # 設定 request timeout
CALL l_http_req.setMethod("POST")
CALL l_http_req.setCharset("UTF-8") # 設定編碼
DISPLAY l_http_req
CALL l_http_req.doFormEncodedRequest(p_str,true) # send request LET l_http_res = l_http_req.getResponse() #取得回傳 response 物件
IF l_http_res.getStatusCode() != THEN
# server 回傳報錯
LET l_succ = FALSE
LET l_str = "HTTP Error ("||l_http_res.getStatusCode()||") ", l_http_res.getStatusDescription()
ELSE
# 取得 server 回傳 body content string
LET l_succ = TRUE
LET l_str = l_http_res.getTextResponse() # 取得 response body字串
#DISPLAY l_str
### add ljr s
IF l_str NOT LIKE '%"success":true%' THEN
LET l_succ = FALSE
DISPLAY l_str
END IF
### add ljr e
END IF
CATCH
#get error from genero
LET l_succ = FALSE
LET l_str = "ERROR :",STATUS||" ("||SQLCA.SQLERRM||")"
END TRY ### LJR ADD 记录错误信息
#IF l_succ = FALSE THEN
CALL cs_t1client_log_insert(p_url,p_str,l_succ,l_str)
#END IF # 回傳結果
RETURN l_succ,l_str
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_parse_output_json(p_str)
DEFINE p_str STRING
DEFINE l_json util.JSONObject
DEFINE r_token STRING
DEFINE i INTEGER
DEFINE r_success LIKE type_t.chr100
DEFINE r_error LIKE type_t.chr100
DEFINE r_errcode LIKE type_t.chr1000 DISPLAY p_str
LET l_json = util.JSONObject.parse(p_str) FOR i= TO l_json.getLength()
DISPLAY i, ": ", l_json.name(i), "=", l_json.get(l_json.name(i))
IF l_json.name(i) = "success" THEN
LET r_success = l_json.get(l_json.name(i))
END IF
IF l_json.name(i) = "error" THEN
LET r_error = l_json.get(l_json.name(i))
END IF
IF l_json.name(i) = "errcode" THEN
LET r_errcode = l_json.get(l_json.name(i))
END IF
END FOR
RETURN r_success,r_error,r_errcode
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_http_prasejsontest(p_str)
DEFINE p_str util.JSONObject
DEFINE l_json util.JSONObject
DEFINE r_token STRING
DEFINE i,j INTEGER
DEFINE r_success LIKE type_t.chr100
DEFINE r_error LIKE type_t.chr100
DEFINE r_errcode LIKE type_t.chr1000
DEFINE l_jsona util.JSONObject #DISPLAY p_str
#LET l_json = util.JSONObject.parse(p_str)
LET l_json = p_str
FOR i= TO l_json.getLength() IF l_json.getType(l_json.name(i)) = "json" THEN
LET l_jsona = l_json.get(l_json.name(i))
CALL cs_t1client_http_prasejsontest(l_jsona)
ELSE
DISPLAY i, ": ", l_json.name(i), "=", l_json.get(l_json.name(i))
END IF END FOR END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getId_byItemCode(p_token,p_itemType,p_itemCode)
###根据ItemCode获取内码Id,针对lookup和dropdown类型字段
DEFINE p_itemType STRING
DEFINE p_itemCode STRING
DEFINE p_token STRING
###
DEFINE l_url STRING
DEFINE l_wc STRING
DEFINE l_str STRING
###
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
DEFINE l_json3 util.JSONObject
DEFINE i,j INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/query"
###
LET l_wc = "{\"logic\":\"and\",condition :[{\"property\":\"ItemCode\",\"operators\":\"doubleEqual\",\"valueType\":\"string\",\"value\":\"",p_itemCode,"\" }]}"
LET l_str = "token=",p_token,"&itemType=",p_itemType,"&filterString=",l_wc
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
LET l_json2 = l_data.get() #用JsonObject接收JsonArray.get
FOR j= TO l_json2.getLength() #遍历2
IF l_json2.name(j) = "Id" THEN
LET l_json3 = l_json2.get(l_json2.name(j)) #jsonArray是[]的,json是{}的,注意用哪个来接收
LET r_id = l_json3.get("value")
EXIT FOR
END IF
END FOR
END IF
END FOR
RETURN r_id
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_create(p_token,p_itemtype,p_str)
DEFINE p_itemtype LIKE type_t.chr1000
DEFINE p_token STRING
DEFINE p_str STRING
DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
DEFINE ls_url STRING
###
LET ls_url = "http://***.***.*.*.***:8080",
"/apiData/create"
###
LET p_str = "token=",p_token,"&itemType=",p_itemtype,"&dataString=",p_str,""
###
CALL cs_t1client_http_post(ls_url,p_str) RETURNING lb_result,ls_resp
###
IF lb_result=TRUE THEN
DISPLAY ls_resp #显示一下回传的JSON
RETURN TRUE
ELSE
DISPLAY ls_resp
RETURN FALSE
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getId_byBillNo(p_token,p_itemType,p_BillNo)
###根据 T1的订单单号BillNo 获取订单内码Id
DEFINE p_itemType STRING
DEFINE p_BillNo STRING
DEFINE p_token STRING
###
DEFINE l_url STRING
DEFINE l_wc STRING
DEFINE l_str STRING
###
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
DEFINE l_json3 util.JSONObject
DEFINE i,j INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/query"
###
LET l_wc = "{\"logic\":\"and\",condition :[{\"property\":\"BillNo\",\"operators\":\"doubleEqual\",\"valueType\":\"string\",\"value\":\"",p_BillNo,"\" }]}"
LET l_str = "token=",p_token,"&itemType=",p_itemType,"&filterString=",l_wc
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
LET l_json2 = l_data.get() #用JsonObject接收JsonArray.get
FOR j= TO l_json2.getLength() #遍历2
IF l_json2.name(j) = "Id" THEN
LET l_json3 = l_json2.get(l_json2.name(j)) #jsonArray是[]的,json是{}的,注意用哪个来接收
LET r_id = l_json3.get("value")
EXIT FOR
END IF
END FOR
END IF
END FOR
RETURN r_id
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_delete(p_token,p_itemtype,p_str)
DEFINE p_itemtype LIKE type_t.chr1000
DEFINE p_token STRING
DEFINE p_str STRING
DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
DEFINE ls_url STRING
###
LET ls_url = "http://***.***.*.*.***:8080",
"/apiData/delete"
###
LET p_str = "token=",p_token,"&itemType=",p_itemtype,"&idString=",p_str,""
###
CALL cs_t1client_http_post(ls_url,p_str) RETURNING lb_result,ls_resp
###
IF lb_result=TRUE THEN
DISPLAY ls_resp #显示一下回传的JSON
RETURN TRUE
ELSE
DISPLAY ls_resp
RETURN FALSE
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getWhat_bywhat(p_token,p_itemType,p_itemW,p_itemStr,p_get)
###
DEFINE p_token STRING #令牌
DEFINE p_itemType STRING #T1表单类型
DEFINE p_itemW STRING #where 条件
DEFINE p_itemStr STRING #where 条件 值
DEFINE p_get STRING #取T1的值
##
DEFINE l_url STRING
DEFINE l_wc STRING
DEFINE l_str STRING
###
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
DEFINE l_json3 util.JSONObject
DEFINE i,j INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/query"
###
LET l_wc = "{\"logic\":\"and\",condition :[{\"property\":\"",p_itemW,"\",\"operators\":\"doubleEqual\",\"valueType\":\"string\",\"value\":\"",p_itemStr,"\" }]}"
LET l_str = "token=",p_token,"&itemType=",p_itemType,"&filterString=",l_wc
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
LET l_json2 = l_data.get() #用JsonObject接收JsonArray.get
FOR j= TO l_json2.getLength() #遍历2
IF l_json2.name(j) = p_get THEN
LET l_json3 = l_json2.get(l_json2.name(j)) #jsonArray是[]的,json是{}的,注意用哪个来接收
LET r_id = l_json3.get("value")
EXIT FOR
END IF
END FOR
END IF
END FOR
RETURN r_id
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_query(p_token,p_itemType,p_filterString)
DEFINE p_token STRING #令牌
DEFINE p_itemType STRING #单据类型
DEFINE p_filterString STRING #过滤json数据表
DEFINE l_url STRING
DEFINE l_str STRING
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
DEFINE i INTEGER
DEFINE r_json STRING
INITIALIZE r_json TO NULL
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/query" LET l_str = "token=",p_token,"&itemType=",p_itemType,"&filterString=",p_filterString
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp ###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
LET l_json2 = l_data.get() #用JsonObject接收JsonArray.get
LET r_json = l_json2.tostring()
EXIT FOR
END IF
END FOR
RETURN r_json
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_update(p_token,p_itemType,p_id,p_dataString)
DEFINE p_token STRING #令牌
DEFINE p_itemType STRING #单据类型
DEFINE p_id STRING #内码ID
DEFINE p_dataString STRING #表单JSON数据包 DEFINE l_url STRING
DEFINE l_str STRING
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/update" LET l_str = "token=",p_token,"&itemType=",p_itemType,"&id=",p_id,"&dataString=",p_dataString
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
DISPLAY l_resp
RETURN TRUE
ELSE
DISPLAY l_resp
RETURN FALSE
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_get_entryCreate(p_token,p_itemType,p_entryName)
DEFINE p_itemType STRING
DEFINE p_token STRING
DEFINE p_entryName STRING DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
DEFINE ls_url STRING
DEFINE r_token STRING
DEFINE l_json util.JSONObject LET ls_url = "http://***.***.*.*.***:8080",
"/apiData/getEntryCreate",
"?token=",p_token,"&itemType=",p_itemType,"&entryName=",p_entryName,""
DISPLAY "URL=\n" , ls_url , "\n" CALL cs_t1client_http_get(ls_url) RETURNING lb_result,ls_resp
IF lb_result=TRUE THEN
#解析JSON
LET l_json = util.JSONObject.parse(ls_resp)
CALL cs_t1client_http_prasejsontest(l_json)
#CALL cs_t1client_parse_json(ls_resp) RETURNING r_token
DISPLAY ls_resp #显示一下回传的JSON
DISPLAY ls_resp
RETURN ls_resp
ELSE
# 顯示錯誤訊息
DISPLAY ls_resp
RETURN
END IF RETURN END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getId_fromStr(p_str)
###获取STRING里的内码Id
DEFINE p_str STRING
###
DEFINE l_json util.JSONObject
DEFINE l_json2 util.JSONObject
DEFINE i INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
IF NOT cl_null(p_str) THEN
#解析JSON
LET l_json = util.JSONObject.parse(p_str)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "Id" THEN
LET l_json2 = l_json.get(l_json.name(i))
LET r_id = l_json2.get("value")
EXIT FOR
END IF
END FOR
RETURN r_id
ELSE
RETURN NULL
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getWhat_fromStr(p_str,p_w)
###获取STRING里的内码Id
DEFINE p_str STRING
DEFINE p_w STRING
###
DEFINE l_json util.JSONObject
DEFINE l_json2 util.JSONObject
DEFINE i INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
IF NOT cl_null(p_str) THEN
#解析JSON
LET l_json = util.JSONObject.parse(p_str)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = p_w THEN
LET l_json2 = l_json.get(l_json.name(i))
LET r_id = l_json2.get("value")
EXIT FOR
END IF
END FOR
RETURN r_id
ELSE
RETURN NULL
END IF
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getId_fromDropDown(p_token,p_typeId,p_name)
###从T1 DropDown类型中,根据NAME获取内码ID
DEFINE p_token STRING
DEFINE p_typeId STRING
DEFINE p_name STRING
DEFINE l_url STRING
DEFINE l_str STRING
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE r_id STRING #返回ID
DEFINE i,k INT
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/getDropDowItems"
###
LET l_str = "token=",p_token,"&typeId=",p_typeId
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
FOR k= TO l_data.getLength()
LET l_json2 = l_data.get(k) #用JsonObject接收JsonArray.get
IF l_json2.get("name") = p_name THEN
LET r_id = l_json2.get("id")
EXIT FOR
END IF
END FOR
END IF
END FOR
RETURN r_id
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getWhats_byWhat(p_token,p_itemType,p_itemW,p_itemStr,p_get)
##返回JsonArray的ID集合
DEFINE p_token STRING
DEFINE p_itemType STRING #类型
DEFINE p_itemW STRING #参数
DEFINE p_itemStr STRING #参数值
DEFINE p_get STRING #取值
##
DEFINE l_url STRING
DEFINE l_wc STRING
DEFINE l_str STRING
###
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
DEFINE l_json3 util.JSONObject
DEFINE i,j,k INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/query"
###
LET l_wc = "{\"logic\":\"and\",condition :[{\"property\":\"",p_itemW,"\",\"operators\":\"doubleEqual\",\"valueType\":\"string\",\"value\":\"",p_itemStr,"\" }]}"
LET l_str = "token=",p_token,"&itemType=",p_itemType,"&filterString=",l_wc
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
FOR k= TO l_data.getLength()
LET l_json2 = l_data.get(k) #用JsonObject接收JsonArray.get
IF k != THEN
LET r_id = ",",r_id
END IF
FOR j= TO l_json2.getLength() #遍历2
IF l_json2.name(j) = p_get THEN
LET l_json3 = l_json2.get(l_json2.name(j)) #jsonArray是[]的,json是{}的,注意用哪个来接收
LET r_id = l_json3.get("value"),r_id
EXIT FOR
END IF
END FOR
END FOR
END IF
END FOR
RETURN r_id
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getIds_byKBillNo(p_token,p_itemType,p_KBillNo)
##根据T1 采购申请的返回单号,获取内码ID,可能存在多个内码ID,返回JsonArray的ID集合
DEFINE p_token STRING
DEFINE p_KBillNo STRING
DEFINE p_itemType STRING
##
DEFINE l_url STRING
DEFINE l_wc STRING
DEFINE l_str STRING
###
DEFINE l_result BOOLEAN
DEFINE l_resp STRING # 應用服務回傳XML
DEFINE l_json util.JSONObject
DEFINE l_data util.JSONArray
DEFINE l_json2 util.JSONObject
DEFINE l_json3 util.JSONObject
DEFINE i,j,k INTEGER
DEFINE r_id STRING
INITIALIZE r_id TO NULL
###
LET l_url = "http://***.***.*.*.***:8080","/apiData/query"
###
LET l_wc = "{\"logic\":\"and\",condition :[{\"property\":\"KBillNo\",\"operators\":\"doubleEqual\",\"valueType\":\"string\",\"value\":\"",p_KBillNo,"\" }]}"
LET l_str = "token=",p_token,"&itemType=",p_itemType,"&filterString=",l_wc
###
CALL cs_t1client_http_post(l_url,l_str) RETURNING l_result,l_resp
###
IF l_result=TRUE THEN
#解析JSON
DISPLAY l_resp
LET l_json = util.JSONObject.parse(l_resp)
FOR i= TO l_json.getLength() #遍历1
IF l_json.name(i) = "data" THEN
LET l_data = l_json.get(l_json.name(i)) #获取到data的jsonArray
IF NOT l_data.getLength() > THEN
EXIT FOR
END IF
FOR k= TO l_data.getLength()
LET l_json2 = l_data.get(k) #用JsonObject接收JsonArray.get
IF k != THEN
LET r_id = ",",r_id
END IF
FOR j= TO l_json2.getLength() #遍历2
IF l_json2.name(j) = "Id" THEN
LET l_json3 = l_json2.get(l_json2.name(j)) #jsonArray是[]的,json是{}的,注意用哪个来接收
LET r_id = "\"",l_json3.get("value"),"\"",r_id
EXIT FOR
END IF
END FOR
END FOR
END IF
END FOR
IF NOT cl_null(r_id) THEN
LET r_id = "[",r_id,"]"
END IF
RETURN r_id
ELSE
# 顯示錯誤訊息
DISPLAY l_resp
RETURN NULL
END IF
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_getToken()
###从数据表zztcuc_t中获取TOKEN
DEFINE l_token LIKE zztcuc_t.zztcuc001
DEFINE l_rel BOOLEAN #检测token是否有效
##
SELECT zztcuc001 INTO l_token FROM zztcuc_t WHERE zztcucent=g_enterprise
IF cl_null(l_token) THEN
# INITIALIZE g_errparam TO NULL
# LET g_errparam.extend = ""
# LET g_errparam.code = 'cwss-00001' #获取令牌失败
# LET g_errparam.popup = FALSE
# CALL cl_err()
RETURN
END IF
CALL cs_t1client_checkToken(l_token) RETURNING l_rel
IF l_rel = TRUE THEN
RETURN l_token
ELSE
RETURN
END IF
END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_checkToken(p_token)
##检测token是否有效,返回TRUE/FALSE
DEFINE p_token STRING
DEFINE l_url STRING
DEFINE lb_result BOOLEAN
DEFINE ls_resp STRING # 應用服務回傳XML
###
LET l_url = "http://***.***.*.*.***:8080","/api/checkToken",
"?token=",p_token
CALL cs_t1client_http_posturl(l_url) RETURNING lb_result,ls_resp
###
IF lb_result=TRUE THEN
#解析JSON
IF NOT cl_null(ls_resp) THEN
IF ls_resp LIKE '%凭证无效%' THEN
DISPLAY ls_resp
RETURN FALSE
ELSE
RETURN TRUE
END IF
ELSE #为空,返回FALSE
DISPLAY ls_resp
RETURN FALSE
END IF
ELSE
# 顯示錯誤訊息
DISPLAY ls_resp
RETURN FALSE
END IF END FUNCTION ################################################################################
# Descriptions...: 描述说明
# Memo...........:
# Usage..........: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code....: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify.........:
################################################################################
PUBLIC FUNCTION cs_t1client_log_insert(p_url,p_str,p_succ,p_rel)
###记录T1日志,xmtcuc_t
DEFINE p_url LIKE xmtcuc_t.xmtcuc001
DEFINE p_str LIKE xmtcuc_t.xmtcuc002
DEFINE p_succ LIKE xmtcuc_t.xmtcuc003
DEFINE p_rel LIKE xmtcuc_t.xmtcuc004
DEFINE l_docno LIKE xmtcuc_t.xmtcucdocno
DEFINE l_user LIKE xmtcuc_t.xmtcuc005
DEFINE l_time LIKE xmtcuc_t.xmtcuc006
DEFINE
l_date LIKE type_t.chr30,
l_chr LIKE type_t.chr30,
l_verno LIKE type_t.chr30,
l_sql string ###单号自增
# LET l_date = g_today using 'yyyymmdd'
# LET l_chr = l_date CLIPPED
#
# LET l_sql = "SELECT MAX(SUBSTR(xmtcucdocno,LENGTH(xmtcucdocno)-4,5)) ",
# " FROM xmtcuc_t ",
# " WHERE SUBSTR(xmtcucdocno,1,LENGTH(xmtcucdocno)-5) = '",l_chr,"'"
# PREPARE t101_pr2 FROM l_sql
# EXECUTE t101_pr2 INTO l_verno
# IF SQLCA.sqlcode THEN
# INITIALIZE g_errparam TO NULL
# LET g_errparam.extend = "xmtcuc_t: ",SQLERRMESSAGE
# LET g_errparam.code = SQLCA.sqlcode
# LET g_errparam.popup = TRUE
# CALL cl_err()
# RETURN
# END IF
#
# IF cl_null(l_verno) THEN
# LET l_docno = l_chr,""
# ELSE
# LET l_verno = l_verno +
# LET l_docno = l_chr,l_verno USING '&&&&&'
# END IF ## LJR 单号自增并发多重复出错,采用时间毫秒级做单号
LET l_sql = "select to_char(systimestamp, 'yymmddhh24missff') from dual"
PREPARE t101_pr2 FROM l_sql
EXECUTE t101_pr2 INTO l_verno
IF SQLCA.sqlcode THEN
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = "xmtcuc_t: ",SQLERRMESSAGE
LET g_errparam.code = SQLCA.sqlcode
LET g_errparam.popup = TRUE
CALL cl_err()
RETURN
END IF
LET l_docno = l_verno ###插入到数据表
LET l_user = g_user
LET l_time = cl_get_current() CALL s_transaction_begin()
INSERT INTO xmtcuc_t (xmtcucent,xmtcucsite,xmtcucdocno,xmtcuc001,xmtcuc002,xmtcuc003,xmtcuc004,xmtcuc005,xmtcuc006)
VALUES (g_enterprise,g_site,l_docno,p_url,p_str,p_succ,p_rel,l_user,l_time)
IF SQLCA.sqlcode THEN
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = "xmtcuc_t: ",SQLERRMESSAGE
LET g_errparam.code = SQLCA.sqlcode
LET g_errparam.popup = TRUE
CALL s_transaction_end('N','')
CALL cl_err()
RETURN
END IF
CALL s_transaction_end('Y','') END FUNCTION {</section>}

最新文章

  1. 解读发布:.NET Core RC2 and .NET Core SDK Preview 1
  2. WebApp 里Meta标签大全,webappmeta标签大全
  3. iOS9 HTTP 不能正常使用的解决办法
  4. java.lang.NoClassDefFoundError: org/apache/avro/ipc/Responder
  5. asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
  6. bzoj1655 [Usaco2006 Jan] Dollar Dayz 奶牛商店
  7. 纯CSS3打造七巧板
  8. 【BZOJ4554】游戏(二分图匹配,网络流)
  9. OAF开发概念和案例总结(项目总结)
  10. &lt;自动化测试方案_9&gt;第九章、持续集成平台搭建
  11. LeetCode算法题-Reshape the Matrix(Java实现)
  12. FCC-js算法题解题笔记
  13. 在notepad++中修改换行符
  14. bootstrap改变上传文件按钮样式,并显示已上传文件名
  15. mxnet 查看 Sym shape
  16. Ajax 学习 第三篇
  17. python 开发学习
  18. Shell脚本 | 一键卸载安卓App
  19. OSCache-缓存对象
  20. 单元测试或main方法 进行单元测试时 idea检查其他类的语法是否正确的去除方法

热门文章

  1. matlab 计算灰度图像的一阶矩、二阶矩、三阶矩
  2. SRS之SrsTsContext::encode_pes详解
  3. incredibuild(分布式任务软件)脚本
  4. leetcode探索高级算法
  5. [z]curl使用指南
  6. JVM学习笔记之JDK、JRE、JVM的关系(二)
  7. powershell获取mac地址
  8. Cetos 7 命令行登陆与图形界面登陆相互切换
  9. Python3 循环_break和continue语句及循环中的else子句
  10. 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause