@GetMapping("/formDataShow")
public AjaxResponse formDataShow(@RequestParam("taskID") String taskID) {
try {
if (GlobalConfig.Test) {
securityUtil.logInAs("bajie");
}
Task task = taskRuntime.task(taskID);
HashMap<String, String> controlMapList = new HashMap<>();
List<HashMap<String,Object>> tempControlList = mapper.selectFormData(task.getProcessInstanceId());
for (HashMap<String, Object> hashMap : tempControlList) {
controlMapList.put(hashMap.get("Control_ID_").toString(),hashMap.get("Control_VALUE_").toString());
}
UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId())
.getFlowElement(task.getFormKey());
if (userTask == null) {
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.SUCCESS.getCode(),
GlobalConfig.ResponseCode.SUCCESS.getDes(), "无表单");
}
List<HashMap<String, Object>> listMap = new ArrayList<>();
List<FormProperty> formProperties = userTask.getFormProperties();
for (FormProperty fp : formProperties) {
String[] splitFP = fp.getId().split("-_!");
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("id", splitFP[0]);
hashMap.put("controlType", splitFP[1]);
hashMap.put("controlLable", splitFP[2]);
if (splitFP[3].startsWith("FormProperty_")){
if (controlMapList. containsKey(splitFP[3])){
hashMap.put("controlDefvalue",controlMapList.get(splitFP[3]));
}else {
hashMap.put("controlDefvalue","读取失败,检查" + splitFP[0] + "配置");
}
}else {
hashMap.put("controlDefvalue",splitFP[3]);
}
hashMap.put("controlIsParam", splitFP[4]);
listMap.add(hashMap);
}
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.SUCCESS.getCode(),
GlobalConfig.ResponseCode.SUCCESS.getDes(), listMap);
} catch (Exception e) {
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.ERROR.getCode(),
"获取表单数据失败", e.getMessage());
}
}
@PostMapping("/formDataSave")
public AjaxResponse formDataSave(@RequestParam("taskID") String taskID,
@RequestParam("formData") String formData) {
try {
if (GlobalConfig.Test) {
securityUtil.logInAs("bajie");
}
List<HashMap<String, Object>> listMap = new ArrayList<>();
Task task = taskRuntime.task(taskID);
HashMap<String, Object> variables = new HashMap<>();
Boolean hasVariables = false;
String[] formDataList = formData.split("!_!");
for (String controlItem : formDataList) {
String[] splitFP = controlItem.split("-_!");
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("PROC_DEF_ID_", task.getProcessDefinitionId());
hashMap.put("PROC_INST_ID_", task.getProcessInstanceId());
hashMap.put("FORM_KEY_", task.getFormKey());
hashMap.put("Control_ID_", splitFP[0]);
hashMap.put("Control_VALUE_", splitFP[1]);
listMap.add(hashMap);
switch (splitFP[2]) {
case "f":
System.out.println("控件值不作为参数");
break;
case "s":
variables.put(splitFP[0], splitFP[1]);
hasVariables = true;
break;
case "t":
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm");
variables.put(splitFP[0], format.parse(splitFP[1]));
hasVariables = true;
break;
case "b":
variables.put(splitFP[0], BooleanUtils.toBoolean(splitFP[1]));
hasVariables = true;
default:
System.out.println("控件参数类型配置错误:" + splitFP[0] + "的参数类型不存在," + splitFP[2]);
}
}
if (hasVariables) {
taskRuntime.complete(TaskPayloadBuilder.complete()
.withTaskId(taskID)
.withVariables(variables)
.build()
);
}else {
taskRuntime.complete(TaskPayloadBuilder.complete()
.withTaskId(taskID)
.build()
);
}
mapper.insertFormData(listMap);
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.SUCCESS.getCode(),
GlobalConfig.ResponseCode.SUCCESS.getDes(), listMap);
} catch (Exception e) {
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.ERROR.getCode(),
"表单数据保存失败", e.getMessage());
}
}
渲染效果如下: