import groovy.json.*
class QueryCashParam{
String cashId
}
class CancelCashInfoParam{
String creator
String updater
String settleUserId
String settleUserName
String systemModule
String cashId
String cashType
String returnCardFlag
String patiRecordId
String orgCode
}
class CancelInvoiceParam{
String id
String reason
String operator
String busDateTime
}
class PayRefundParam{
String appId
String czyh
String cdly
String ddlx
String ddly
String discountableAmount
int expiretime
String hzxm
String ksmc
String lxdh
String orderId
String outerOrderNo
String paytype
String personId
String outRefundNo
String sfzh
String tfje
String yydm
String remark
String sign
String refundAmount
String orgName
String settleClassId
String patiMediaId
String patiMediaNum
String patiRecordNum
String patiIdType
String creatorName
String creator
String tradeBusyType
String systemModule
String tradeComputerName
}
def paramConvert(param){
def now = new Date()
def nowFormat = now.format('yyyy-MM-dd HH:mm:ss')
def json = new JsonSlurper()
def queryCashParam = new QueryCashParam(cashId:param.hisPaymentCode)
def queryCashParamJson = JsonOutput.toJson(queryCashParam)
def queryCashConn = new URL('https://test-his-gateway.rubikstack.com/ms-rcs/fi/queryCashInfoRecord').openConnection()
queryCashConn.setRequestProperty("Content-Type", "application/json")
queryCashConn.setRequestMethod("POST")
queryCashConn.doOutput = true
def queryCashWriter = new OutputStreamWriter(queryCashConn.outputStream)
queryCashWriter.write(queryCashParamJson)
queryCashWriter.flush()
queryCashWriter.close()
def queryCashResult = json.parseText(queryCashConn.content.text)
assert queryCashResult.code == 200 : '获取结算信息失败'+queryCashResult.message
assert queryCashResult.data.size() > 0 : "未查询到结算信息"
def cashInfoRecord = queryCashResult.data[0]
def cancelCashInfoParam = new CancelCashInfoParam(creator:'4435ebe366314358936c2e7bf751abdb',updater:'4435ebe366314358936c2e7bf751abdb',settleUserId:'4435ebe366314358936c2e7bf751abdb',settleUserName:'沈德红',systemModule:'PES',cashId:cashInfoRecord.cashId,cashType:cashInfoRecord.cashType,returnCardFlag:'0',patiRecordId:cashInfoRecord.cashInfoRecord,orgCode:'1sy5aa62f9b544d7acca5331dd4a0028')
def cancelCashParamJson = JsonOutput.toJson(cancelCashInfoParam)
def cancelCashConn = new URL('https://test-his-gateway.rubikstack.com/ms-rcs/fi/cancelCashInfo').openConnection()
cancelCashConn.setRequestProperty("Content-Type", "application/json")
cancelCashConn.setRequestMethod("POST")
cancelCashConn.doOutput = true
def cancelCashhWriter = new OutputStreamWriter(cancelCashConn.outputStream)
cancelCashhWriter.write(cancelCashParamJson)
cancelCashhWriter.flush()
cancelCashhWriter.close()
def cancelCashResult = json.parseText(cancelCashConn.content.text)
assert cancelCashResult.code == 200 : '取消结算失败'+cancelCashResult.message
try{
def cancelInvoiceParam = new CancelInvoiceParam(id:cashInfoRecord.cashId,reason:'退费,取消结算',operator:'4435ebe366314358936c2e7bf751abdb',busDateTime:nowFormat)
def cancelInvoiceParamJson = JsonOutput.toJson(cancelInvoiceParam)
def cancelInvoiceConn = new URL('https://test-his-gateway.rubikstack.com/ms-di/invoice/cancelOutpatientInvoice').openConnection()
cancelInvoiceConn.setRequestProperty("Content-Type", "application/json")
cancelInvoiceConn.setRequestMethod("POST")
cancelInvoiceConn.doOutput = true
def queryCashWriter = new OutputStreamWriter(cancelInvoiceConn.outputStream)
queryCashWriter.write(cancelInvoiceParamJson)
queryCashWriter.flush()
queryCashWriter.close()
def queryCashResult = json.parseText(cancelInvoiceConn.content.text)
println queryCashResult
}catch(Exception e){
println e
}
def oldOrderId = cashInfoRecord.systemModule+cashInfoRecord.cashId
def nextCashIdUrl = 'https://test-his-gateway.rubikstack.com/ms-pcs/sys/getNextSequence?seqName=patiMediaNum'
def nextCashIdRes = nextCashIdUrl.toURL().text
def nextCashIdResJson = json.parseText(nextCashIdRes)
def newOrderId = 'PES'+nextCashIdResJson.data
def payRefundParam = new PayRefundParam(appId:'21',cdly:'1',ddlx:'16',ddly:'3',discountableAmount:'0',expiretime:7200,hzxm:cashInfoRecord.patiName,ksmc:cashInfoRecord.departmentName,lxdh:phone,orderId:oldOrderId,orgCode:'1sy5aa62f9b544d7acca5331dd4a0028',outerOrderNo:oldOrderId,paytype)
}