acitivity7 表单渲染,高亮、表单数据保存

/**
     * @Des: 渲染表单
     * @Author: liut
     * @Date: 2020/11/24 10:38
     */
    @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]);
//                hashMap.put("controlDefvalue", splitFP[3]);
                //如果默认值是表单控件ID
                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());
        }
    }
/**
     * @Des: 表单数据保存
     * @Author: liut
     * @Date: 2020/11/24 11:36
     */
    @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]);
//                hashMap.put("Control_PARAM_",splitFP[2]);
                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());
        }
    }

渲染效果如下:

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值