diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.java index e3faf36..2bcbeef 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.java @@ -107,6 +107,10 @@ public class BpmApprovalDetailRespVO { @Schema(description = "签名", example = "https://www.iocoder.cn/sign.png") private String signPicUrl; + // add by yanhuiqing 扩展审批图片 + @Schema(description = "审批附件url", example = "https://www.iocoder.cn/sign.png") + private List attattmentUrls; + } } diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskApproveReqVO.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskApproveReqVO.java index 6e85597..d921435 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskApproveReqVO.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskApproveReqVO.java @@ -21,6 +21,10 @@ public class BpmTaskApproveReqVO { @Schema(description = "签名", example = "https://www.iocoder.cn/sign.png") private String signPicUrl; + // add by yanhuiqing 扩展审批图片 + @Schema(description = "审批附件url", example = "https://www.iocoder.cn/sign.png") + private List attattmentUrls; + @Schema(description = "变量实例(动态表单)", requiredMode = Schema.RequiredMode.REQUIRED) private Map variables; diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java index a18d186..d41218e 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java @@ -35,6 +35,10 @@ public class BpmTaskRespVO { @Schema(description = "审批理由", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") private String reason; + // add by yanhuiqing 扩展审批图片 + @Schema(description = "审批附件url", example = "https://www.iocoder.cn/sign.png") + private List attattmentUrls; + @Schema(description = "任务负责人编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "2048") @JsonIgnore // 不返回,只是方便后续读取,赋值给 ownerUser private Long owner; diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.java index 8abdec0..7cf4325 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.java @@ -5,6 +5,8 @@ import lombok.Data; import jakarta.validation.constraints.NotEmpty; +import java.util.List; + @Schema(description = "管理后台 - 退回流程任务的 Request VO") @Data public class BpmTaskReturnReqVO { @@ -21,4 +23,8 @@ public class BpmTaskReturnReqVO { @NotEmpty(message = "退回意见不能为空") private String reason; + // add by yanhuiqing 扩展审批图片 + @Schema(description = "审批附件url", example = "https://www.iocoder.cn/sign.png") + private List attattmentUrls; + } diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/convert/task/BpmProcessInstanceConvert.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/convert/task/BpmProcessInstanceConvert.java index 09d4c0f..ab2b007 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/convert/task/BpmProcessInstanceConvert.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/convert/task/BpmProcessInstanceConvert.java @@ -206,7 +206,8 @@ public interface BpmProcessInstanceConvert { } return BeanUtils.toBean(task, BpmApprovalDetailRespVO.ActivityNodeTask.class) .setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task)) - .setSignPicUrl(FlowableUtils.getTaskSignPicUrl(task)); + .setSignPicUrl(FlowableUtils.getTaskSignPicUrl(task)) + .setAttattmentUrls(FlowableUtils.getTaskAttachPicUrl(task)); } default Set parseUserIds(HistoricProcessInstance processInstance, diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java index 041ee50..f1e2001 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java @@ -105,4 +105,9 @@ public class BpmnVariableConstants { */ public static final String TASK_SIGN_PIC_URL = "TASK_SIGN_PIC_URL"; + /** + * 审批附件 - 图片 URL + */ + public static final String TASK_APPROVE_PIC_URL = "TASK_APPROVE_PIC_URL"; + } diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/util/FlowableUtils.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/util/FlowableUtils.java index 5ee849c..7b5f3db 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/util/FlowableUtils.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/framework/flowable/core/util/FlowableUtils.java @@ -24,6 +24,7 @@ import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.flowable.engine.impl.util.CommandContextUtil; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.TaskInfo; +import org.flowable.task.api.history.HistoricTaskInstance; import java.util.HashMap; import java.util.List; @@ -359,4 +360,12 @@ public class FlowableUtils { return getExpressionValue(variableContainer, expressionString); } + /** + * add by yanhuiqing 新增获取审批任务附件图片 + * @param task + * @return + */ + public static List getTaskAttachPicUrl(TaskInfo task) { + return (List) task.getTaskLocalVariables().get(BpmnVariableConstants.TASK_APPROVE_PIC_URL); + } } diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmProcessInstanceServiceImpl.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmProcessInstanceServiceImpl.java index 8848dc0..dc7c796 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmProcessInstanceServiceImpl.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmProcessInstanceServiceImpl.java @@ -212,6 +212,54 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService historicProcessInstance, processInstanceStatus, activities, tasks); runActivityNodes = getRunApproveNodeList(startUserId, bpmnModel, processDefinition, processVariables, activities, tasks); + /** + * // ========== 新增:处理附件URL列表 add by yanhuiqing========== + */ + + // 步骤1:获取流程实例ID(转为字符串,适配Flowable的String类型ID) + String processInstanceId = reqVO.getProcessInstanceId() != null ? reqVO.getProcessInstanceId().toString() : null; + + // 步骤2:处理已结束节点的tasks附件URL + if (CollUtil.isNotEmpty(runActivityNodes)) { + runActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + // 传入流程实例ID和任务ID,查询附件URL + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); // 为task设置附件URL列表 + }); + } + }); + } + if (CollUtil.isNotEmpty(endActivityNodes)) { + endActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + // 传入流程实例ID和任务ID,查询附件URL + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); // 为task设置附件URL列表 + }); + } + }); + } + + // 步骤3:处理运行中节点的tasks附件URL + if (CollUtil.isNotEmpty(runActivityNodes)) { + runActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); + }); + } + }); + } + + /** + * // ========== end 新增:处理附件URL列表 add by yanhuiqing========== + */ + + } // 2.2 流程已经结束,直接 return,无需预测 @@ -242,6 +290,69 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService List simulateActivityNodes = getSimulateApproveNodeList(startUserId, bpmnModel, processDefinitionInfo, processVariables, activities, needSimulateTaskDefKeysByReturn); + /** + * // ========== 新增:处理附件URL列表 add by yanhuiqing========== + */ + + // 步骤1:获取流程实例ID(转为字符串,适配Flowable的String类型ID) + String processInstanceId = reqVO.getProcessInstanceId() != null ? reqVO.getProcessInstanceId().toString() : null; + + // 步骤2:处理已结束节点的tasks附件URL + if (CollUtil.isNotEmpty(runActivityNodes)) { + runActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + // 传入流程实例ID和任务ID,查询附件URL + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); // 为task设置附件URL列表 + }); + } + }); + } + if (CollUtil.isNotEmpty(endActivityNodes)) { + endActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + // 传入流程实例ID和任务ID,查询附件URL + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); // 为task设置附件URL列表 + }); + } + }); + } + + // 步骤3:处理运行中节点的tasks附件URL + if (CollUtil.isNotEmpty(runActivityNodes)) { + runActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); + }); + } + }); + } + + // 步骤4:处理模拟节点的tasks附件URL(如果有) + if (CollUtil.isNotEmpty(simulateActivityNodes)) { + simulateActivityNodes.forEach(activityNode -> { + if (CollUtil.isNotEmpty(activityNode.getTasks())) { + activityNode.getTasks().forEach(task -> { + List urlList = taskService.getAttachmentUrlList(processInstanceId, task.getId()); + task.setAttattmentUrls(urlList); + }); + } + }); + } + + // 步骤5:处理待办任务的附件URL + if (todoTask != null) { + List urlList = taskService.getAttachmentUrlList(processInstanceId, todoTask.getId()); + todoTask.setAttattmentUrls(urlList);; + } + /** + * // ========== end 新增:处理附件URL列表 add by yanhuiqing========== + */ // 4. 拼接最终数据 return buildApprovalDetail(reqVO, bpmnModel, processDefinition, processDefinitionInfo, historicProcessInstance, diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskService.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskService.java index 6f4b40e..a01b3cb 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskService.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskService.java @@ -7,6 +7,7 @@ import com.zteits.urbanops.module.bpm.enums.definition.BpmUserTaskTimeoutHandler import jakarta.validation.Valid; import org.flowable.bpmn.model.UserTask; import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.task.Attachment; import org.flowable.task.api.Task; import org.flowable.task.api.TaskInfo; import org.flowable.task.api.history.HistoricTaskInstance; @@ -329,4 +330,16 @@ public interface BpmTaskService { */ void triggerTask(String processInstanceId, String taskDefineKey); + + + //--------------------------------------------------------------- + //扩展芋道 bpm不支持,审批时上传的附件问题 add by yanhuiqing + + /** + * 扩展 功能支持 审批人上传的附件类型 + * @param taskId + * @param processInstanceId + * @return + */ + List getAttachmentUrlList(String processInstanceId, String taskId); } diff --git a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskServiceImpl.java b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskServiceImpl.java index 0c36dbe..d3cc3c8 100644 --- a/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/service/task/BpmTaskServiceImpl.java @@ -49,6 +49,7 @@ import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.runtime.ActivityInstance; import org.flowable.engine.runtime.Execution; import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.task.Attachment; import org.flowable.task.api.DelegationState; import org.flowable.task.api.Task; import org.flowable.task.api.TaskInfo; @@ -63,6 +64,7 @@ import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationManager; import java.util.*; +import java.util.stream.Collectors; import java.util.stream.Stream; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -586,6 +588,27 @@ public class BpmTaskServiceImpl implements BpmTaskService { // 2.2 添加评论 taskService.addComment(task.getId(), task.getProcessInstanceId(), BpmCommentTypeEnum.APPROVE.getType(), BpmCommentTypeEnum.APPROVE.formatComment(reqVO.getReason())); + /** + * add by yanhuiqing 审批附件 begin + */ + + List urlList = reqVO.getAttattmentUrls(); + if(ObjectUtil.isNotEmpty(urlList)){ + String targetUrls = CollUtil.isEmpty(urlList)?StrUtil.EMPTY:urlList.stream() + .filter(StrUtil::isNotEmpty) + .distinct() + .collect(Collectors.joining(",")); + String attachmentName = "审批附件-" + BpmCommentTypeEnum.APPROVE.getType(); + String attachmentType = "URL"; // 附件类型标记为URL(可自定义) + String description = BpmCommentTypeEnum.APPROVE.getName()+"的附件"; + taskService.createAttachment(attachmentType,task.getId(),task.getProcessInstanceId(),attachmentName,description,targetUrls); + taskService.setVariableLocal(task.getId(), BpmnVariableConstants.TASK_APPROVE_PIC_URL, reqVO.getAttattmentUrls()); + + } + /** + * add by yanhuiqing 审批附件 end + */ + // 3. 设置流程变量。如果流程变量前端传空,需要从历史实例中获取,原因:前端表单如果在当前节点无可编辑的字段时 variables 一定会为空 // 场景一:A 节点发起,B 节点表单无可编辑字段,审批通过时,C 节点需要流程变量获取下一个执行节点,但因为 B 节点无可编辑的字段,variables 为空,流程可能出现问题。 @@ -929,6 +952,24 @@ public class BpmTaskServiceImpl implements BpmTaskService { // 2.1.1 添加评论 taskService.addComment(task.getId(), currentTask.getProcessInstanceId(), BpmCommentTypeEnum.RETURN.getType(), BpmCommentTypeEnum.RETURN.formatComment(reqVO.getReason())); + /** + * add by yanhuiqing 审批附件 begin + */ + List urlList = reqVO.getAttattmentUrls(); + if(ObjectUtils.isNotAllEmpty()){ + String targetUrls = CollUtil.isEmpty(urlList)?StrUtil.EMPTY:urlList.stream() + .filter(StrUtil::isNotEmpty) + .distinct() + .collect(Collectors.joining(",")); + String attachmentName = "审批附件-" + BpmCommentTypeEnum.RETURN.getType(); + String attachmentType = "URL"; // 附件类型标记为URL(可自定义) + String description = BpmCommentTypeEnum.RETURN.getName()+"的附件"; + taskService.createAttachment(attachmentType,task.getId(),task.getProcessInstanceId(),attachmentName,description,targetUrls); + } + /** + * add by yanhuiqing 审批附件 end + */ + // 2.1.2 更新 task 状态 + 原因 updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.RETURN.getStatus(), reqVO.getReason()); } else { // 情况二:别人的任务,进行 CANCEL 标记 @@ -1643,6 +1684,28 @@ public class BpmTaskServiceImpl implements BpmTaskService { FlowableUtils.execute(execution.getTenantId(), () -> runtimeService.trigger(execution.getId())); } + //扩展 add by yanhuiqing + @Override + public List getAttachmentUrlList(String processInstanceId, String taskId) { + + List attachmentList = taskService.getProcessInstanceAttachments(processInstanceId); + // 空列表直接返回空集合(避免null) + if (CollUtil.isEmpty(attachmentList)) { + return CollUtil.empty(String.class); + } + + List targetList = new ArrayList<>(); + for(Attachment a : attachmentList){ + if(taskId.equals(a.getTaskId())){ + String urls = a.getUrl(); + String[] array = urls.split(","); + targetList.addAll(Arrays.asList(array)); + } + } + return targetList.stream() + .distinct() // 核心:去重 + .collect(Collectors.toList()); + } /** * 获得自身的代理对象,解决 AOP 生效问题 diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java index 108ac56..6615431 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java @@ -303,6 +303,8 @@ public class AppGardenWorkOrderController { rejReqVO.setCurTaskKey(reqVO.getTaskKey()); rejReqVO.setReason(reqVO.getReason()); rejReqVO.setWorkerDataId(reqVO.getWorkerDataId()); + List returnImgs = reqVO.getReturnImgs(); + rejReqVO.setReturnImgs(returnImgs); this.returnPreviousNode(rejReqVO); log.info("当前操作:"+OperateTypeEnum.YL_TEAM_LEADER_CONFIRM_REJECT.getDesc()+"<--结束"); return success(true); @@ -335,6 +337,7 @@ public class AppGardenWorkOrderController { returnApproveReqVO.setAgree(approveStatus); returnApproveReqVO.setReason(reqVO.getReason()); returnApproveReqVO.setId(reqVO.getTaskId()); + returnApproveReqVO.setReturnImgs(reqVO.getReturnImgs()); this.approveTask(returnApproveReqVO); log.info("当前操作:"+OperateTypeEnum.YL_TEAM_LEADER_RETURN.getDesc()+"<--结束"); return success(true); @@ -379,6 +382,7 @@ public class AppGardenWorkOrderController { inspectReqVO.setAgree(verifyStatus); inspectReqVO.setReason(reqVO.getReason()); inspectReqVO.setId(reqVO.getTaskId()); + inspectReqVO.setReturnImgs(reqVO.getReturnImgs()); this.approveTask(inspectReqVO); log.info("当前操作:"+OperateTypeEnum.YL_INSPECTOR_START_FINISH.getDesc()+"<--结束"); return success(true); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/process/AppGardenApprovalDetailRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/process/AppGardenApprovalDetailRespVO.java index c98df58..0001afa 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/process/AppGardenApprovalDetailRespVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/process/AppGardenApprovalDetailRespVO.java @@ -111,6 +111,9 @@ public class AppGardenApprovalDetailRespVO { @Schema(description = "签名", example = "https://www.iocoder.cn/sign.png") private String signPicUrl; + // add by yanhuiqing 扩展审批图片 + @Schema(description = "审批附件url", example = "https://www.iocoder.cn/sign.png") + private List attattmentUrls; } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskApproveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskApproveReqVO.java index 697cbc5..9738413 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskApproveReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskApproveReqVO.java @@ -37,4 +37,7 @@ public class AppGardenTaskApproveReqVO { //@NotEmpty(message = "工单的数据id不能为空") private Long workerDataId; + @Schema(description = "退回时的拍照图片") + private List returnImgs; + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java index 2b5fd9d..afea8a5 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java @@ -229,6 +229,7 @@ public class BpmGardenServiceImpl implements BpmGardenService{ //TODO 审批候选人需要赋值 Map> nextAssignees = new HashMap<>(); targetVO.setNextAssignees(nextAssignees); + targetVO.setAttattmentUrls(reqVO.getReturnImgs()); taskService.approveTask(SecurityFrameworkUtils.getLoginUserId(),targetVO); } @@ -314,6 +315,7 @@ public class BpmGardenServiceImpl implements BpmGardenService{ String currentTaskey = reqVO.getCurTaskKey(); targetVO.setTargetTaskDefinitionKey(TaskNodeUtils.getPreviousNodeName(currentTaskey)); Long userId = SecurityFrameworkUtils.getLoginUserId(); + targetVO.setAttattmentUrls(reqVO.getReturnImgs()); taskService.returnTask(userId, targetVO); }