凯特-姚帅龙 发表于 2022-4-18 18:13:57

JEPaaS实现基础功能之审核功能

在使用JEPaaS低代码平台过程中,会遇到一些功能不需要使用工作流,不需要处理人审核的数据,只是需要使用简易的审核对数据进行确认,确认后无法修改,当然确认后有可能需要回写值等其他业务操作,那么本章就给大家带来一下JEPaaS标准的处理方法。
一、实现思路
1.启用功能的审核配置项

2.重写功能的action路径

3.重写平台的基础controller
二、具体操作
1.启用功能的审核配置项,勾选上功能的审核功能配置项后刷新此功能,会发现表单按钮多了两个,分别是审核(formSubmitBtn)和撤销审核(formCacelBtn),记得去对这两个按钮进行授权哦。同样会发现表字段增加了审核标识(SY_ACKFLAG)、审核人(SY_ACKUSERNAME)、审核人ID(SY_ACKUSERID)、审核时间(SY_ACKTIME)。默认情况下,当数据保存后会审核按钮,当审核完成后审核标识会变为已审核、审核人、审核人ID和审核时间也会进行赋值,这时候会出现撤销审核按钮,撤销审核后审核状态改为未审核,审核人、审核人ID、审核时间也都会置为空。


2.当然,通过第一步的配置和说明,大家已经了解了基础的审核是怎么完成和实现的,但是好多小伙伴又说了,那我审核结束之后可不可以做一些自己的业务操作呢,对于这个问题,我的回答是当然可以的,那就是需要咱们重写功能的doUpdate方法,当然了,重写了后端的controller,前端需要怎么指定呢,大家需要在功能配置的action这里配置上自己写的controller路径。

3.重写平台的基础controller这里只讲解重新doUpdate的方法,其他方法可以参考这里:
逻辑讲解及解析:
    当点击提交按钮时会将SY_ACKFLAG值设置为1,并触发表单的保存按钮。
    当点击撤销提交按钮时会将SY_ACKFLAG值设置为0,并触发表单的保存按钮。
    在保存前取出数据库保存的数据,跟传入的数据进行对比,即可获得本次是提交还是撤销提交操作,然后执行自己的业务操作即可。
@RequestMapping(
            value = {"/doUpdate"},
            method = {RequestMethod.POST},
            produces = {"application/json; charset=utf-8"}
    )
    @ResponseBody
    @Override
    public BaseRespResult doUpdate(MethodArgument param) {
      //构建修改信息
      DynaBean dynaBean = param.getDynaBean();
      commonService.buildModelModifyInfo(dynaBean);
      //处理单附件多附件上传
      commonService.doSaveFileMetadata(dynaBean, param.getBatchFilesFields(), param.getUploadableFields(), param.getFuncCode());
      //处理视图保存
      String funcType = param.getParameter("funcType");
      String funcCode = param.getParameter("funcCode");
      String doExecuteTask = param.getParameter("doExecuteTask");
      if("1".equals(doExecuteTask)){
            DynaBean oldBean=metaService.selectOneByPk(param.getTableCode(),dynaBean.getStr(dynaBean.getStr(BeanUtils.KEY_PK_CODE)),dynaBean.getStr(BeanUtils.KEY_PK_CODE)+",SY_ACKFLAG");
            if(oldBean!=null && !oldBean.getStr("SY_ACKFLAG","").equals(dynaBean.getStr("SY_ACKFLAG")) && "1".equals(dynaBean.getStr("SY_ACKFLAG"))){
                Object bean= SpringContextHolder.getBean("xdTaskService");
                ReflectionUtils.getInstance().invokeMethod(bean, "doSunmitTask", new Object[]{dynaBean,param.getFuncCode()});
            }
      }
      /**-------------业务逻辑开始-------------------*/
      String pkCode=BeanUtils.getInstance().getPKeyFieldNames(param.getTableCode());
      DynaBean oldBean=serviceTemplate.selectOneByPk(param.getTableCode(),dynaBean.getStr(pkCode));
      if(!oldBean.getStr("SY_ACKFLAG").equals(dynaBean.getStr("SY_ACKFLAG")) && "1".equals(dynaBean.getStr("SY_ACKFLAG"))){
            //这里处理提交逻辑
            System.out.println("这次是提交操作");
      }else if(!oldBean.getStr("SY_ACKFLAG").equals(dynaBean.getStr("SY_ACKFLAG")) && "0".equals(dynaBean.getStr("SY_ACKFLAG"))){
            //这里处理撤销提交逻辑
            System.out.println("这次是撤销提交操作");
      }
      /**-------------业务逻辑结束-------------------*/
      if ("view".equals(funcType) && StringUtil.isNotEmpty(funcCode)) {
            commonService.doViewData(funcCode, dynaBean);
      } else {
            //更新数据
            metaService.update(dynaBean);
      }
      //如果是操作视图,则数据重新查询
      String viewTableCode = param.getParameter("viewTableCode");
      if (StringUtil.isNotEmpty(viewTableCode)) {
            String pkName = BeanUtils.getInstance().getPKeyFieldNames(viewTableCode);
            String pkVal = param.getParameter(pkName);
            if (StringUtil.isNotEmpty(pkVal)) {
                dynaBean = metaService.selectOneByPk(viewTableCode, pkVal);
            }
      }
      if (param.getFuncEdit()) {
            metaService.executeSql("UPDATE JE_CORE_FUNCEDIT set FUNCEDIT_NEW='1' where FUNCEDIT_NEW='0' AND FUNCEDIT_FUNCCODE={0} AND FUNCEDIT_PKVALUE={1}", param.getFuncCode(), dynaBean.getPkValue());
      }
      BaseRespResult baseRespResult= BaseRespResult.successResult(dynaBean.getValues());
      return baseRespResult;
    }

三、总结

使用该方法可以实现JEPaaS的审核功能,不需要复杂的工作流,简易的审核就完成了。
四、关键字

审核,重写,doUpdate,SY_ACKFLAG








页: [1]
查看完整版本: JEPaaS实现基础功能之审核功能