diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/controller/api/ActivitiUserTaskController.java b/module-activiti/src/main/java/ink/wgink/module/activiti/controller/api/ActivitiUserTaskController.java deleted file mode 100644 index 1f6285b3..00000000 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/controller/api/ActivitiUserTaskController.java +++ /dev/null @@ -1,40 +0,0 @@ -package ink.wgink.module.activiti.controller.api; - -import ink.wgink.common.base.DefaultBaseController; -import ink.wgink.interfaces.consts.ISystemConstant; -import ink.wgink.module.activiti.service.activiti.IActivitiUserTaskService; -import ink.wgink.pojo.result.SuccessResult; -import io.swagger.annotations.Api; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: ActivitiUserTaskController - * @Description: 流程用户任务 - * @Author: WangGeng - * @Date: 2021/7/12 21:56 - * @Version: 1.0 - **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "流程用户任务接口") -@RestController -@RequestMapping(ISystemConstant.API_PREFIX + "/activiti/user-task") -public class ActivitiUserTaskController extends DefaultBaseController { - - @Autowired - private IActivitiUserTaskService activitiUserTaskService; - - @GetMapping("get-next-user-task/{userTaskId}") - public SuccessResult getNextUserTask(@PathVariable("userTaskId") String userTaskId) { - activitiUserTaskService.getNextUserTask(userTaskId); - return new SuccessResult(); - } - -} diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/controller/route/oa/OaRouteController.java b/module-activiti/src/main/java/ink/wgink/module/activiti/controller/route/oa/OaRouteController.java index 1ca8b1cb..fec5a0e6 100644 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/controller/route/oa/OaRouteController.java +++ b/module-activiti/src/main/java/ink/wgink/module/activiti/controller/route/oa/OaRouteController.java @@ -37,4 +37,10 @@ public class OaRouteController extends DefaultBaseController { return mv; } + @GetMapping("list-log") + public ModelAndView listLog() { + ModelAndView mv = new ModelAndView("oa/list-log"); + return mv; + } + } diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/IActivitiUserTaskService.java b/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/IActivitiUserTaskService.java deleted file mode 100644 index 1629571f..00000000 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/IActivitiUserTaskService.java +++ /dev/null @@ -1,14 +0,0 @@ -package ink.wgink.module.activiti.service.activiti; - -/** - * @ClassName: IActivitiUserTaskService - * @Description: 流程用户任务 - * @Author: wanggeng - * @Date: 2022/3/29 17:43 - * @Version: 1.0 - */ -public interface IActivitiUserTaskService { - - void getNextUserTask(String userTaskId); - -} diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiUserTaskServiceImpl.java b/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiUserTaskServiceImpl.java deleted file mode 100644 index fe62303c..00000000 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiUserTaskServiceImpl.java +++ /dev/null @@ -1,115 +0,0 @@ -package ink.wgink.module.activiti.service.activiti.impl; - -import ink.wgink.common.base.DefaultBaseService; -import ink.wgink.module.activiti.service.activiti.IActivitiUserTaskService; -import org.activiti.bpmn.model.*; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.task.Task; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @ClassName: ActivitiUserTaskServiceImpl - * @Description: 流程用户任务 - * @Author: wanggeng - * @Date: 2022/3/29 17:44 - * @Version: 1.0 - */ -@Service -public class ActivitiUserTaskServiceImpl extends DefaultBaseService implements IActivitiUserTaskService { - - @Autowired - private TaskService taskService; - @Autowired - private RuntimeService runtimeService; - @Autowired - private RepositoryService repositoryService; - - @Override - public void getNextUserTask(String userTaskId) { - Task task = taskService.createTaskQuery().taskId(userTaskId).singleResult(); - String taskDefinitionKey = task.getTaskDefinitionKey(); - String processInstanceId = task.getProcessInstanceId(); - String processDefinitionId = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId(); - - BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); - - FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(taskDefinitionKey); - - // 流入线 - List incomingFlows = flowNode.getIncomingFlows(); - - // 流出线 - List outgoingFlows = flowNode.getOutgoingFlows(); - HashMap vars = new HashMap<>(); - vars.put("message", ""); - for (SequenceFlow outgoingFlow : outgoingFlows) { - //获取输出节点元素 - FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement(); - //排除非用户任务接点 - if (targetFlowElement instanceof UserTask) { - LOG.debug("UserTask"); - UserTask userTask = (UserTask) targetFlowElement; - System.out.println(userTask); - //判断输出节点的el表达式 -// if (isCondition(outgoingFlow.getConditionExpression(), vars)) { -// //true 获取输出节点名称 -// // nameList.add(outgoingFlow.getTargetFlowElement().getName()); -// } - } else if (targetFlowElement instanceof ExclusiveGateway) { - LOG.debug("排他网关"); - - } else if (targetFlowElement instanceof ParallelGateway) { - LOG.debug("并行网关"); - - } - } - - System.out.println(flowNode); - } - - /** - * el表达式判断 - * - * @param expression - * @param vars - * @return - */ - private static boolean isCondition(String expression, Map vars) { - if (expression == null || expression == "") { - return false; - } - - //分割表达式 - String[] exprArr = expression.split("[{}$&]"); - for (String expr : exprArr) { - //是否包含键message - if (expr.contains("message")) { - if (!vars.containsKey("message")) { - continue; - } - if (expr.contains("==")) { - String[] primes = expr.split("=="); - String valExpr = primes[1].trim(); - if (valExpr.startsWith("'")) { - valExpr = valExpr.substring(1); - } - if (valExpr.endsWith("'")) { - valExpr = valExpr.substring(0, valExpr.length() - 1); - } - if (primes.length == 2 && valExpr.equals(vars.get("message"))) { - return true; - } - } - } - } - return false; - } - -} diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaFormReportRouteServiceImpl.java b/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaFormReportRouteServiceImpl.java index e64d116f..a0ea62ed 100644 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaFormReportRouteServiceImpl.java +++ b/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaFormReportRouteServiceImpl.java @@ -80,17 +80,7 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements List confirmAssigneeVOs = listConfirmAssignee(deploymentId, firstUserTask); model.put("confirmAssignees", JSON.toJSONString(confirmAssigneeVOs)); - LOG.debug("查询节点字段信息"); - List nodeFieldDTOs = nodeFieldService.listByDeploymentIdAndNodeId(deploymentId, firstUserTask.getId()); - List fieldVOs = nodeFieldDTOs.stream().map(nodeFieldDTO -> { - FieldVO fieldVO = new FieldVO(); - fieldVO.setFieldName(nodeFieldDTO.getFieldName()); - fieldVO.setIsEditable(nodeFieldDTO.getIsEditable()); - fieldVO.setIsVisible(nodeFieldDTO.getIsVisible()); - return fieldVO; - }).collect(Collectors.toList()); - model.put("fields", JSONObject.toJSONString(fieldVOs)); - + setPageFields(deploymentId, firstUserTask, model); formReportRouteService.save(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse, model); } @@ -117,6 +107,7 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements List confirmAssigneeVOs = listConfirmAssignee(deploymentId, currentUserTask); model.put("confirmAssignees", JSON.toJSONString(confirmAssigneeVOs)); + setPageFields(deploymentId, currentUserTask, model); // 设置代理人 formReportRouteService.update(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse, model); } @@ -148,6 +139,25 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements formReportRouteService.appShow(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse, model); } + /** + * 设置页面字段 + * + * @param deploymentId + * @param userTask + * @param model + */ + private void setPageFields(String deploymentId, UserTask userTask, Map model) { + LOG.debug("查询节点字段信息"); + List nodeFieldDTOs = nodeFieldService.listByDeploymentIdAndNodeId(deploymentId, userTask.getId()); + List fieldVOs = nodeFieldDTOs.stream().map(nodeFieldDTO -> { + FieldVO fieldVO = new FieldVO(); + fieldVO.setFieldName(nodeFieldDTO.getFieldName()); + fieldVO.setIsEditable(nodeFieldDTO.getIsEditable()); + fieldVO.setIsVisible(nodeFieldDTO.getIsVisible()); + return fieldVO; + }).collect(Collectors.toList()); + model.put("fields", JSONObject.toJSONString(fieldVOs)); + } /** * 确认代理人列表 @@ -245,7 +255,7 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements for (int i = 0; i < userTasks.size(); i++) { UserTask userTask = userTasks.get(i); boolean isExist = false; - for (int j = 1; j < userTasks.size(); j++) { + for (int j = i + 1; j < userTasks.size(); j++) { if (StringUtils.equals(userTask.getId(), userTasks.get(j).getId())) { isExist = true; userTasks.remove(i); diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaServiceImpl.java b/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaServiceImpl.java index c41a1077..f57545bc 100644 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaServiceImpl.java +++ b/module-activiti/src/main/java/ink/wgink/module/activiti/service/oa/impl/OaServiceImpl.java @@ -65,7 +65,7 @@ public class OaServiceImpl extends DefaultBaseService implements IOaService { @Override public SuccessResultList> listPageProcdef(int page, int rows) { ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); - List processDefinitions = processDefinitionQuery.listPage(page - 1, rows); + List processDefinitions = processDefinitionQuery.latestVersion().listPage(page - 1, rows); List oaProcdefDTOs = listOaProcdef(processDefinitions); return new SuccessResultList<>(oaProcdefDTOs, page, processDefinitionQuery.count()); } @@ -89,6 +89,7 @@ public class OaServiceImpl extends DefaultBaseService implements IOaService { oaProcdefDTO.setDeploymentId(processDefinition.getDeploymentId()); oaProcdefDTO.setName(processDefinition.getName()); oaProcdefDTO.setProcessDefinitionId(processDefinition.getId()); + oaProcdefDTO.setVersion(processDefinition.getVersion()); oaProcdefDTO.setFormKey(formKey); oaProcdefDTOs.add(oaProcdefDTO); if (StringUtils.isBlank(formKey)) { diff --git a/module-activiti/src/main/resources/templates/oa/list-history-task-of-mine.html b/module-activiti/src/main/resources/templates/oa/list-history-task-of-mine.html index eea6ff65..c6973699 100644 --- a/module-activiti/src/main/resources/templates/oa/list-history-task-of-mine.html +++ b/module-activiti/src/main/resources/templates/oa/list-history-task-of-mine.html @@ -75,11 +75,10 @@ return rowData; } }, - {field: 'form', width: 150, title: '操作', align:'center', fixed: 'right', + {field: 'form', width: 100, title: '操作', align:'center', fixed: 'right', templet: function(row) { return '
' + ''+ - ''+ '
'; } } @@ -126,9 +125,9 @@ var layEvent = obj.event; if(layEvent === 'logEvent') { top.dialog.open({ - url: top.restAjax.path('route/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}?uid={reportUid}', [data.taskId, data.formCode, data.formVersion, data.isNeedClaim, data.reportUid]), - title: '编辑', - width: '500px', + url: top.restAjax.path('route/oa/list-log?processInstanceId={processInstanceId}', [data.processInstanceId]), + title: '流转日志', + width: '800px', height: '80%', onClose: function() {} }); diff --git a/module-activiti/src/main/resources/templates/oa/list-log.html b/module-activiti/src/main/resources/templates/oa/list-log.html new file mode 100644 index 00000000..fafb5afa --- /dev/null +++ b/module-activiti/src/main/resources/templates/oa/list-log.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + +
+
+
+
+
    +
  • 流转日志
  • +
  • 流转图
  • +
+
+
+
    +
  • + +
    +

    8月18日

    +

    + layui 2.0 的一切准备工作似乎都已到位。发布之弦,一触即发。 +
    不枉近百个日日夜夜与之为伴。因小而大,因弱而强。 +
    无论它能走多远,抑或如何支撑?至少我曾倾注全心,无怨无悔 +

    +
    +
  • +
  • + +
    +

    8月16日

    +

    杜甫的思想核心是儒家的仁政思想,他有“致君尧舜上,再使风俗淳”的宏伟抱负。个人最爱的名篇有:

    +
      +
    • 《登高》
    • +
    • 《茅屋为秋风所破歌》
    • +
    +
    +
  • +
  • + +
    +

    8月15日

    +

    + 中国人民抗日战争胜利72周年 +
    常常在想,尽管对这个国家有这样那样的抱怨,但我们的确生在了最好的时代 +
    铭记、感恩 +
    所有为中华民族浴血奋战的英雄将士 +
    永垂不朽 +

    +
    +
  • +
  • + +
    +
    过去
    +
    +
  • +
+
+
+
+ 流转图 +
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/module-activiti/src/main/resources/templates/oa/list-task-of-mine.html b/module-activiti/src/main/resources/templates/oa/list-task-of-mine.html index 9f37e404..24c123c7 100644 --- a/module-activiti/src/main/resources/templates/oa/list-task-of-mine.html +++ b/module-activiti/src/main/resources/templates/oa/list-task-of-mine.html @@ -132,7 +132,9 @@ title: '编辑', width: '500px', height: '80%', - onClose: function() {} + onClose: function() { + reloadTable(); + } }); } });