JEPaaS 社区

 找回密码
 立即注册
JEPaaS低代码平台-官网
查看: 460|回复: 0

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

[复制链接]

10

主题

11

帖子

123

积分

凯特员工

积分
123
发表于 2022-4-18 18:13:57 | 显示全部楼层 |阅读模式
在使用JEPaaS低代码平台过程中,会遇到一些功能不需要使用工作流,不需要处理人审核的数据,只是需要使用简易的审核对数据进行确认,确认后无法修改,当然确认后有可能需要回写值等其他业务操作,那么本章就给大家带来一下JEPaaS标准的处理方法。
一、实现思路
1.启用功能的审核配置项

2.重写功能的action路径

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

1.png
2.当然,通过第一步的配置和说明,大家已经了解了基础的审核是怎么完成和实现的,但是好多小伙伴又说了,那我审核结束之后可不可以做一些自己的业务操作呢,对于这个问题,我的回答是当然可以的,那就是需要咱们重写功能的doUpdate方法,当然了,重写了后端的controller,前端需要怎么指定呢,大家需要在功能配置的action这里配置上自己写的controller路径。
2.png
3.重写平台的基础controller这里只讲解重新doUpdate的方法,其他方法可以参考这里:
逻辑讲解及解析:
    当点击提交按钮时会将SY_ACKFLAG值设置为1,并触发表单的保存按钮
    当点击撤销提交按钮时会将SY_ACKFLAG值设置为0,并触发表单的保存按钮
    在保存前取出数据库保存的数据,跟传入的数据进行对比,即可获得本次是提交还是撤销提交操作,然后执行自己的业务操作即可。
  1. @RequestMapping(
  2.             value = {"/doUpdate"},
  3.             method = {RequestMethod.POST},
  4.             produces = {"application/json; charset=utf-8"}
  5.     )
  6.     @ResponseBody
  7.     @Override
  8.     public BaseRespResult doUpdate(MethodArgument param) {
  9.         //构建修改信息
  10.         DynaBean dynaBean = param.getDynaBean();
  11.         commonService.buildModelModifyInfo(dynaBean);
  12.         //处理单附件多附件上传
  13.         commonService.doSaveFileMetadata(dynaBean, param.getBatchFilesFields(), param.getUploadableFields(), param.getFuncCode());
  14.         //处理视图保存
  15.         String funcType = param.getParameter("funcType");
  16.         String funcCode = param.getParameter("funcCode");
  17.         String doExecuteTask = param.getParameter("doExecuteTask");
  18.         if("1".equals(doExecuteTask)){
  19.             DynaBean oldBean=metaService.selectOneByPk(param.getTableCode(),dynaBean.getStr(dynaBean.getStr(BeanUtils.KEY_PK_CODE)),dynaBean.getStr(BeanUtils.KEY_PK_CODE)+",SY_ACKFLAG");
  20.             if(oldBean!=null && !oldBean.getStr("SY_ACKFLAG","").equals(dynaBean.getStr("SY_ACKFLAG")) && "1".equals(dynaBean.getStr("SY_ACKFLAG"))){
  21.                 Object bean= SpringContextHolder.getBean("xdTaskService");
  22.                 ReflectionUtils.getInstance().invokeMethod(bean, "doSunmitTask", new Object[]{dynaBean,param.getFuncCode()});
  23.             }
  24.         }
  25.         /**-------------业务逻辑开始-------------------*/
  26.         String pkCode=BeanUtils.getInstance().getPKeyFieldNames(param.getTableCode());
  27.         DynaBean oldBean=serviceTemplate.selectOneByPk(param.getTableCode(),dynaBean.getStr(pkCode));
  28.         if(!oldBean.getStr("SY_ACKFLAG").equals(dynaBean.getStr("SY_ACKFLAG")) && "1".equals(dynaBean.getStr("SY_ACKFLAG"))){
  29.             //这里处理提交逻辑
  30.             System.out.println("这次是提交操作");
  31.         }else if(!oldBean.getStr("SY_ACKFLAG").equals(dynaBean.getStr("SY_ACKFLAG")) && "0".equals(dynaBean.getStr("SY_ACKFLAG"))){
  32.             //这里处理撤销提交逻辑
  33.             System.out.println("这次是撤销提交操作");
  34.         }
  35.         /**-------------业务逻辑结束-------------------*/
  36.         if ("view".equals(funcType) && StringUtil.isNotEmpty(funcCode)) {
  37.             commonService.doViewData(funcCode, dynaBean);
  38.         } else {
  39.             //更新数据
  40.             metaService.update(dynaBean);
  41.         }
  42.         //如果是操作视图,则数据重新查询
  43.         String viewTableCode = param.getParameter("viewTableCode");
  44.         if (StringUtil.isNotEmpty(viewTableCode)) {
  45.             String pkName = BeanUtils.getInstance().getPKeyFieldNames(viewTableCode);
  46.             String pkVal = param.getParameter(pkName);
  47.             if (StringUtil.isNotEmpty(pkVal)) {
  48.                 dynaBean = metaService.selectOneByPk(viewTableCode, pkVal);
  49.             }
  50.         }
  51.         if (param.getFuncEdit()) {
  52.             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());
  53.         }
  54.         BaseRespResult baseRespResult  = BaseRespResult.successResult(dynaBean.getValues());
  55.         return baseRespResult;
  56.     }
复制代码


三、总结

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

审核,重写,doUpdate,SY_ACKFLAG








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|JEPaaS 低代码平台社区 ( 京ICP备18023569号-1 )

GMT+8, 2022-8-11 08:16 , Processed in 0.060854 second(s), 24 queries .

Powered by 北京凯特伟业科技有限公司

Copyright © 2001-2021, JEPaaS.COM

快速回复 返回顶部 返回列表