最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

T100——接口代码记录,jsonArray和json

后端代码 bron1984 2788浏览
{<section id="cs_t1client.description" >}
#應用 a00 樣板自動產生(Version:2)
#+ Version..: T100-ERP-1.01.00(SD版次:4,PR版次:4) Build-000143
#+ 
#+ Filename...: cs_t1client
#+ Description: T1雲
#+ Creator....: tiptop(2017-07-14 14:17:17)
#+ Modifier...: 00000() -SD/PR-

{</section>}

{<section id="cs_t1client.global" >}
#應用 p00 樣板自動產生(Version:3)
#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 0
  END IF
  
  RETURN 0
  
  
  
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(60)  # 設定 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() != 200 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=1 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 0
  END IF
  
  RETURN 0



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=1 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 0
  END IF
  
  #RETURN 0
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(60)  # 設定 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() != 200 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(60)  # 設定 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() != 200 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
       ###171013 add ljr s
       IF l_str NOT LIKE '%"success":true%' THEN
            LET l_succ = FALSE
            DISPLAY l_str
       END IF
       ###171013 add ljr e
     END IF
  CATCH
     #get error from genero
     LET l_succ = FALSE
     LET l_str = "ERROR :",STATUS||" ("||SQLCA.SQLERRM||")"
  END TRY
  
  ###171027 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=1 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=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                LET l_json2 = l_data.get(1) #用JsonObject接收JsonArray.get
                FOR j=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                LET l_json2 = l_data.get(1) #用JsonObject接收JsonArray.get
                FOR j=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                LET l_json2 = l_data.get(1) #用JsonObject接收JsonArray.get
                FOR j=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                LET l_json2 = l_data.get(1) #用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 0
  END IF
  
  RETURN 0

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=1 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=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                FOR k=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                FOR k=1 TO l_data.getLength()
                    LET l_json2 = l_data.get(k) #用JsonObject接收JsonArray.get
                    IF k != 1 THEN
                        LET r_id = ",",r_id
                    END IF
                    FOR j=1 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=1 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() > 0 THEN  
                    EXIT FOR
                END IF 
                FOR k=1 TO l_data.getLength()
                    LET l_json2 = l_data.get(k) #用JsonObject接收JsonArray.get
                    IF k != 1 THEN
                        LET r_id = ",",r_id
                    END IF
                    FOR j=1 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 0
    END IF
    CALL cs_t1client_checkToken(l_token) RETURNING l_rel
    IF l_rel = TRUE THEN
        RETURN l_token
    ELSE
        RETURN 0
    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,"00001"
#    ELSE
#     LET l_verno = l_verno + 1
#     LET l_docno = l_chr,l_verno USING '&&&&&'
#    END IF

    ##171114 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','0')
      CALL cl_err()
      RETURN
    END IF
    CALL s_transaction_end('Y','0')
    
END FUNCTION

{</section>}

 

转载请注明:赫非域 » T100——接口代码记录,jsonArray和json