src/main/java/org/springblade/flow/core/constant/ProcessConstant.java
@@ -49,6 +49,11 @@ String PASS_ALIAS = "ok"; /** * 完善意见标识 */ String SUGGESTION_KEY="isSuggestion"; /** * 同意默认批复 */ String PASS_COMMENT = "同意"; src/main/java/org/springblade/modules/application/controller/ApplicationController.java
@@ -176,14 +176,27 @@ } /** * 完成任务 * 审批人员完成任务 * * @param flow 审核信息 */ @PostMapping("complete-task") @ApiOperationSupport(order = 7) @ApiOperation(value = "完成任务", notes = "传入流程信息") @ApiOperation(value = "审批人员完成任务", notes = "传入流程信息") public R completeTask(@ApiParam("任务信息") @RequestBody BladeFlow flow, @RequestBody ApplicationEntity applicationEntity, @RequestBody RejectEntity rejectEntity) { return R.status(applicationService.completeTask(flow,applicationEntity,rejectEntity)); } /** * 申请人员完成任务 * * @param flow 审核信息 */ @PostMapping("user-complete-task") @ApiOperationSupport(order = 7) @ApiOperation(value = "申请人员完成任务", notes = "传入流程信息") public R userCompleteTask(@ApiParam("任务信息") @RequestBody BladeFlow flow, @RequestBody ApplicationEntity applicationEntity,@RequestBody BasicInfoEntity basicInfoEntity, @RequestBody CarEntity carEntity, @RequestBody PlanEntity planEntity, @RequestBody SchemeEntity schemeEntity, @RequestBody GoodsEntity goodsEntity, @RequestBody RejectEntity rejectEntity) { return R.status(applicationService.userCompleteTask(flow,applicationEntity,basicInfoEntity,carEntity,planEntity,schemeEntity,goodsEntity,rejectEntity)); } } src/main/java/org/springblade/modules/application/entity/ApplicationEntity.java
@@ -25,6 +25,7 @@ import java.util.Date; import lombok.EqualsAndHashCode; import org.springblade.core.tenant.mp.TenantEntity; import org.springblade.core.tool.utils.StringUtil; import org.springblade.flow.core.entity.FlowEntity; /** @@ -105,4 +106,9 @@ * 审批人 */ private String taskUser; /** * 工作流标识 */ @TableField(exist = false) private Boolean isSuggestion; } src/main/java/org/springblade/modules/application/entity/BasicInfoEntity.java
@@ -70,14 +70,14 @@ * 通行开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @ApiModelProperty(value = "通行开始时间") private Date startTime; /** * 通行结束时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @ApiModelProperty(value = "通行结束时间") private Date endTime; /** src/main/java/org/springblade/modules/application/service/IApplicationService.java
@@ -69,4 +69,6 @@ * @return */ Boolean completeTask(BladeFlow flow, ApplicationEntity applicationEntity, RejectEntity rejectEntity); Boolean userCompleteTask(BladeFlow flow, ApplicationEntity application, BasicInfoEntity basicInfoEntity, CarEntity carEntity, PlanEntity planEntity, SchemeEntity schemeEntity, GoodsEntity goodsEntity, RejectEntity rejectEntity); } src/main/java/org/springblade/modules/application/service/impl/ApplicationServiceImpl.java
@@ -43,6 +43,10 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.application.wrapper.ApplicationWrapper; import org.springblade.modules.enterprise.wrapper.EnterpriseWrapper; import org.springblade.modules.evaluation.entity.EvaluationEntity; import org.springblade.modules.evaluation.service.IEvaluationService; import org.springblade.modules.pass.entity.PassEntity; import org.springblade.modules.pass.service.IPassService; import org.springblade.modules.reject.entity.RejectEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -66,6 +70,8 @@ private final ISchemeService schemeService; private final IGoodsService goodsService; private final ICarService carService; private final IPassService passService; private final IEvaluationService evaluationService; private final IFlowService flowService; private final TaskService taskService; @@ -203,6 +209,7 @@ } @Override @Transactional public Boolean completeTask(BladeFlow flow, ApplicationEntity applicationEntity, RejectEntity rejectEntity) { String taskId = flow.getTaskId(); @@ -234,7 +241,7 @@ if (variables == null) { variables = Kv.create(); } variables.put("suggestion",Func.toStr(applicationEntity.getSuggestion(),"")); variables.put(ProcessConstant.SUGGESTION_KEY,applicationEntity.getIsSuggestion()); variables.put(ProcessConstant.PASS_KEY, flow.isPass()); // 完成任务 taskService.complete(taskId, variables); @@ -247,11 +254,46 @@ //改变业务状态 entity.setStatus(10); //生成通行证 PassEntity passEntity = new PassEntity(); passEntity.setNo(entity.getNo()); passService.save(passEntity); //添加评价 EvaluationEntity evaluationEntity = new EvaluationEntity(); evaluationEntity.setNo(entity.getNo()); evaluationService.save(evaluationEntity); } } updateById(entity); boolean update = updateById(entity); return update; } @Override @Transactional public Boolean userCompleteTask(BladeFlow flow,ApplicationEntity applicationEntity, BasicInfoEntity basicInfoEntity, CarEntity carEntity, PlanEntity planEntity, SchemeEntity schemeEntity, GoodsEntity goodsEntity, RejectEntity rejectEntity) { String taskId = flow.getTaskId(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); String processInstanceId = flow.getProcessInstanceId(); String comment = Func.toStr(flow.getComment(), ProcessConstant.PASS_COMMENT); // 增加评论 if (StringUtil.isNoneBlank(processInstanceId, comment)) { taskService.addComment(taskId, processInstanceId, comment); } // 创建变量 Map<String, Object> variables = flow.getVariables(); if (variables == null) { variables = Kv.create(); } variables.put(ProcessConstant.SUGGESTION_KEY,applicationEntity.getIsSuggestion()); variables.put(ProcessConstant.PASS_KEY, flow.isPass()); if (flow.isPass()&&applicationEntity.getIsSuggestion()){ updateVoById(applicationEntity,basicInfoEntity,carEntity,planEntity,schemeEntity,goodsEntity); } // 完成任务 taskService.complete(taskId, variables); return true; } @@ -264,16 +306,29 @@ return baseMapper.getMaxNoEntity(); } /** * 判断是否包含最终节点且为倒数第二个节点 * @param task * @param definitionId * @return */ public boolean getEndNode(Task task,String definitionId){ boolean isEnd=false; boolean isAuditTask2 = false; BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId); FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey()); List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows(); for (SequenceFlow outgoingFlow : outgoingFlows) { FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement(); FlowElement sourceFlowElement = outgoingFlow.getSourceFlowElement(); if (sourceFlowElement.getId().equals("auditTask_2")){ isAuditTask2 = true; } if (targetFlowElement instanceof EndEvent){ return true; isEnd = true; break; } } return false; return isEnd&&isAuditTask2; } } src/main/java/org/springblade/modules/evaluation/entity/EvaluationEntity.java
@@ -37,24 +37,28 @@ public class EvaluationEntity extends TenantEntity { /** * 申请表主键 * 申请表编号 */ @ApiModelProperty(value = "申请表主键") private String applicationId; @ApiModelProperty(value = "申请表编号") private String no; /** * 评分 */ @ApiModelProperty(value = "评分") private String score; /** * 评价 * 好评 */ @ApiModelProperty(value = "评价") private String evaluation; private String comment; /** * 建议与反馈 */ @ApiModelProperty(value = "建议与反馈") private String feedback; /** * 差评 */ @ApiModelProperty(value = "差评确认") private String badCommentConfirm; } src/main/java/org/springblade/modules/pass/entity/PassEntity.java
@@ -41,5 +41,9 @@ */ @ApiModelProperty(value = "名字") private String name; /** * 编号 */ @ApiModelProperty(value = "编号") private String no; }