You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
357 lines
14 KiB
357 lines
14 KiB
package com.fr.plugin.it.api; |
|
import com.fr.json.JSONArray; |
|
import com.fr.json.JSONObject; |
|
import com.fr.plugin.it.config.simple.account.PluginSimpleConfig; |
|
import com.fr.plugin.it.utils.*; |
|
|
|
import java.util.*; |
|
|
|
public class FlowApi { |
|
//启动流程 |
|
public static String startFlow(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getStart(); |
|
|
|
String workflowCode = String.valueOf(object[0]); |
|
String userCode = String.valueOf(object[1]); |
|
String finishStart = String.valueOf(object[2]); |
|
String jsonDataItems = String.valueOf(object[3]); |
|
String subJsonDataItems = ""; |
|
// String.valueOf(object[4]); |
|
|
|
String jsonDataItemsStr = getJSONDataStr(jsonDataItems); |
|
|
|
if(Utils.isNullStr(jsonDataItemsStr)){ |
|
jsonDataItemsStr = ""; |
|
} |
|
|
|
String subJsonDataItemsStr = getJSONDataStr(subJsonDataItems); |
|
|
|
if(Utils.isNullStr(subJsonDataItemsStr)){ |
|
subJsonDataItemsStr = ""; |
|
} |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("workflowCode",workflowCode); |
|
param.put("userCode",userCode); |
|
param.put("finishStart",finishStart); |
|
param.put("jsonDataItems",jsonDataItemsStr); |
|
param.put("subJsonDataItems",subJsonDataItemsStr); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
String re2 =XMLUtils.xmlToList(result); |
|
|
|
Map<String,String> param2 = new HashMap<String,String>(); |
|
|
|
param2.put("workflowCode",workflowCode); |
|
param2.put("userCode",userCode); |
|
param2.put("finishStart",finishStart); |
|
param2.put("jsonDataItems",jsonDataItems); |
|
param2.put("subJsonDataItems",subJsonDataItems); |
|
|
|
insertToDB(param2,"startWorkflow",re2); |
|
|
|
return re2; |
|
} |
|
|
|
//驳回工作任务 |
|
public static String return1(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getReturn1(); |
|
|
|
String userCode = String.valueOf(object[0]); |
|
String workItemId = String.valueOf(object[1]); |
|
String commentText = String.valueOf(object[2]); |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("userCode",userCode); |
|
param.put("workItemId",workItemId); |
|
param.put("commentText",commentText); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
|
|
return XMLUtils.xmlToList(result); |
|
} |
|
|
|
//3、驳回工作任务到开始 |
|
public static String returnToStart(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getReturnToStart(); |
|
|
|
String workItemId = String.valueOf(object[0]); |
|
String commentText = String.valueOf(object[1]); |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("workItemId",workItemId); |
|
param.put("commentText",commentText); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
|
|
return XMLUtils.xmlToList(result); |
|
} |
|
|
|
//4、提交工作任务 |
|
public static String submit(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getSubmit(); |
|
|
|
String userCode = String.valueOf(object[0]); |
|
String workItemId = String.valueOf(object[1]); |
|
String commentText = String.valueOf(object[2]); |
|
String approval = String.valueOf(object[3]); |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("userCode",userCode); |
|
param.put("workItemId",workItemId); |
|
param.put("commentText",commentText); |
|
param.put("approval",approval); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
String result2 =XMLUtils.xmlToList(result); |
|
insertToDB(param,"submitWorkItem",result2); |
|
|
|
return result2; |
|
} |
|
|
|
//5、5、批量取消流程 |
|
public static String cancel(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getCancel(); |
|
|
|
String userCode = String.valueOf(object[0]); |
|
String sequenceNos = String.valueOf(object[1]); |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("userCode",userCode); |
|
param.put("instanceId",sequenceNos); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
|
|
return XMLUtils.xmlToList(result); |
|
} |
|
|
|
//6、取消流程 |
|
public static String cancelWithRemark(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getCancelWithRemark(); |
|
|
|
String userCode = String.valueOf(object[0]); |
|
String sequenceNos = String.valueOf(object[1]); |
|
String remark = String.valueOf(object[2]); |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("userCode",userCode); |
|
param.put("instanceId",sequenceNos); |
|
param.put("remark",remark); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
String result2 =XMLUtils.xmlToList(result); |
|
|
|
insertToDB(param,"cancelInstanceWithRemark",result2); |
|
|
|
|
|
return result2; |
|
} |
|
|
|
//7、重新激活流程 |
|
public static String restart(Object[] object){ |
|
PluginSimpleConfig psc = PluginSimpleConfig.getInstance(); |
|
String startUrl = psc.getReStart(); |
|
|
|
String instanceId = String.valueOf(object[0]); |
|
String activityCode = String.valueOf(object[1]); |
|
|
|
Map<String,String> param = new HashMap<String,String>(); |
|
|
|
param.put("instanceId",instanceId); |
|
param.put("activityCode",activityCode); |
|
|
|
String result = HttpUtils.HttpPostWWWForm(startUrl,null,param); |
|
String result2 =XMLUtils.xmlToList2(result); |
|
insertToDB(param,"reStartWorkflow",result2); |
|
|
|
return result2; |
|
} |
|
|
|
private static String getJSONDataStr(String jsonDataItems) { |
|
JSONArray itemsJsons = new JSONArray(); |
|
|
|
if(Utils.isNotNullStr(jsonDataItems)){ |
|
String[] items = jsonDataItems.split(";"); |
|
|
|
for(String item : items){ |
|
String[] keyValue = item.split(","); |
|
JSONObject jsonObject = new JSONObject(); |
|
jsonObject.put(keyValue[0],keyValue[1]); |
|
itemsJsons.add(jsonObject); |
|
} |
|
|
|
return itemsJsons.toString(); |
|
} |
|
|
|
return ""; |
|
} |
|
|
|
private static List<String> getValues(String jsonDataItems) { |
|
List<String> result = new ArrayList<String>(); |
|
|
|
if(Utils.isNotNullStr(jsonDataItems)){ |
|
String[] items = jsonDataItems.split(";"); |
|
|
|
for(String item : items){ |
|
String[] keyValue = item.split(","); |
|
result.add(keyValue[1]); |
|
} |
|
} |
|
|
|
return result; |
|
} |
|
|
|
private static void insertToDB(Map<String,String> param,String flowName,String result){ |
|
String id = Utils.uuid(); |
|
Date date = new Date(); |
|
String yearMonth = DateUtilSelf.DateToString(date,"yyyyMM"); |
|
//是否成功调用 |
|
String isSuccess = "N"; |
|
String sql = ""; |
|
|
|
if("startWorkflow".equals(flowName)){ |
|
//请求参数 |
|
String workflowCode = param.get("workflowCode"); |
|
String userCode = param.get("userCode"); |
|
String finishStart = param.get("finishStart"); |
|
String jsonDataItems = param.get("jsonDataItems"); |
|
String subJsonDataItems = param.get("subJsonDataItems"); |
|
|
|
List<String> values = getValues(jsonDataItems); |
|
String field = getFileStr(values); |
|
String value2 = getValueStr(values); |
|
|
|
if(Utils.isNullStr(result)){ |
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,SUBMIT_DATA3"+field+")" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+workflowCode+"','"+userCode+"','"+finishStart+"'"+value2+")"; |
|
|
|
JDBCUtil.update(sql); |
|
return; |
|
} |
|
|
|
JSONObject resultJson = new JSONObject(result); |
|
isSuccess = resultJson.getBoolean("Success") ? "Y" : "N"; |
|
//返回值 |
|
String success = resultJson.getString("Success"); |
|
String instanceID = resultJson.getString("InstanceID"); |
|
String message = resultJson.getString("Message"); |
|
String workItemID = resultJson.getString("WorkItemID"); |
|
String workItemUrl = resultJson.getString("WorkItemUrl"); |
|
String SequenceNO = resultJson.getString("SequenceNO"); |
|
|
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,SUBMIT_DATA3"+field+",BACK_DATA1,BACK_DATA2,BACK_DATA3,BACK_DATA4,BACK_DATA5,BACK_DATA6)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+workflowCode+"','"+userCode+"','"+finishStart+"'"+value2+",'"+success+"','"+instanceID+"','"+message+"','"+workItemID+"','"+workItemUrl+"','"+SequenceNO+"')"; |
|
|
|
FRUtils.FRLogInfo("sql:"+sql); |
|
JDBCUtil.update(sql); |
|
}else if("reStartWorkflow".equals(flowName)){ |
|
//请求参数 |
|
String instanceId = param.get("instanceId"); |
|
String activityCode = param.get("activityCode"); |
|
|
|
if(Utils.isNullStr(result)){ |
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+instanceId+"','"+activityCode+"')"; |
|
|
|
JDBCUtil.update(sql); |
|
|
|
return; |
|
} |
|
|
|
JSONObject resultJson = new JSONObject(result); |
|
isSuccess = resultJson.getBoolean("Success") ? "Y" : "N"; |
|
//返回值 |
|
String success = resultJson.getString("Success"); |
|
String sequenceNo = resultJson.getString("SequenceNo"); |
|
String instanceId2 = resultJson.getString("InstanceId"); |
|
String message = resultJson.getString("Message"); |
|
String jsonList = resultJson.getString("JsonList"); |
|
|
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,BACK_DATA1,BACK_DATA2,BACK_DATA3,BACK_DATA4,BACK_DATA5)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+instanceId+"','"+activityCode+"','"+success+"','"+sequenceNo+"','"+instanceId2+"','"+message+"','"+jsonList+"')"; |
|
|
|
FRUtils.FRLogInfo("sql:"+sql); |
|
JDBCUtil.update(sql); |
|
}else if("cancelInstanceWithRemark".equals(flowName)){ |
|
//请求参数 |
|
String userCode = param.get("userCode"); |
|
String sequenceNos = param.get("sequenceNos"); |
|
String remark = param.get("remark"); |
|
|
|
if(Utils.isNullStr(result)){ |
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,SUBMIT_DATA3)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+userCode+"','"+sequenceNos+"','"+remark+"')"; |
|
|
|
JDBCUtil.update(sql); |
|
return; |
|
} |
|
|
|
|
|
isSuccess = result.equals("true") ? "Y" : "N"; |
|
|
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,SUBMIT_DATA3,BACK_DATA1)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+userCode+"','"+sequenceNos+"','"+remark+"','"+isSuccess+"')"; |
|
|
|
FRUtils.FRLogInfo("sql:"+sql); |
|
JDBCUtil.update(sql); |
|
}else if("submitWorkItem".equals(flowName)){ |
|
//请求参数 |
|
String userCode = param.get("userCode"); |
|
String workItemId = param.get("workItemId"); |
|
String commentText = param.get("commentText"); |
|
String approval = param.get("approval"); |
|
|
|
if(Utils.isNullStr(result)){ |
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,SUBMIT_DATA3,SUBMIT_DATA4)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+userCode+"','"+workItemId+"','"+commentText+"','"+approval+"')"; |
|
|
|
JDBCUtil.update(sql); |
|
return; |
|
} |
|
|
|
isSuccess = result.equals("true") ? "Y" : "N"; |
|
|
|
sql = "insert into FRSOURCEDATA10.RF_BPM_JYSGZ_TRIGGERLOG(ID,BPM_TYPE,YEARMONTH,STARTTIME,IS_SUCCESS,SUBMIT_DATA1,SUBMIT_DATA2,SUBMIT_DATA3,SUBMIT_DATA4,BACK_DATA1)" + |
|
" values('"+id+"','"+flowName+"','"+yearMonth+"',sysdate,'"+isSuccess+"','"+userCode+"','"+workItemId+"','"+commentText+"','"+approval+"','"+result+"')"; |
|
|
|
FRUtils.FRLogInfo("sql:"+sql); |
|
JDBCUtil.update(sql); |
|
} |
|
} |
|
|
|
private static String getFileStr(List<String> values){ |
|
String field = ""; |
|
String fieldStr = "SUBMIT_DATA"; |
|
int count = 4; |
|
|
|
for(String value : values){ |
|
field+= ","+fieldStr + count; |
|
|
|
count ++; |
|
} |
|
|
|
return field; |
|
} |
|
|
|
private static String getValueStr(List<String> values){ |
|
String result = ""; |
|
|
|
for(String value : values){ |
|
result +=",'"+value+"'"; |
|
} |
|
|
|
return result; |
|
} |
|
}
|
|
|