|
在使用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
|
|