From f25b26d2c8f8739322614099f468fde4f08b5c30 Mon Sep 17 00:00:00 2001 From: pengqiang <1067496116@qq.com> Date: Wed, 10 Aug 2022 18:24:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E7=AD=BE=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProjectController.java | 20 +-- .../palmte/work/model/ProjectTaskRecord.java | 6 + .../work/service/ActProcInsService.java | 2 +- .../work/service/ActTaskDefService.java | 22 +-- .../palmte/work/service/ProjectService.java | 17 ++- .../service/ProjectTaskRecordService.java | 3 +- .../java/cn/palmte/work/utils/UploadUtil.java | 2 +- src/main/resources/application.properties | 8 +- .../templates/admin/project_approve.ftl | 129 +++++++++++++++--- .../admin/project_task_record_list.ftl | 1 + 10 files changed, 162 insertions(+), 48 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index b9bd648..1c3c773 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -4,10 +4,7 @@ import cn.palmte.work.bean.*; import cn.palmte.work.model.*; import cn.palmte.work.pojo.ActHisTask; import cn.palmte.work.service.*; -import cn.palmte.work.utils.ActUtil; -import cn.palmte.work.utils.FreeMarkerUtil; -import cn.palmte.work.utils.InterfaceUtil; -import cn.palmte.work.utils.Utils; +import cn.palmte.work.utils.*; import cn.palmte.work.utils.excel.ExportExcelUtils; import cn.palmte.work.utils.excel.ExportUtils; import com.alibaba.fastjson.JSON; @@ -33,9 +30,7 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -551,10 +546,15 @@ public class ProjectController extends BaseController { //审核记录 List list = projectTaskRecordService.list(id); + String huiQianFile = ""; if (!list.isEmpty()) { + Optional first = list.stream().filter(r -> StrKit.notBlank(r.getFileUrl())).max(Comparator.comparingInt(ProjectTaskRecord::getId)); + if (first.isPresent()) { + huiQianFile = first.get().getFileUrl(); + } model.put("taskRecords", list); } - + model.put("huiQianFile", huiQianFile); //当前审批任务 Task currentTask = actUtil.getCurrentTask(project.getId()); model.put("currentTaskName", currentTask==null ? "" : currentTask.getName()); @@ -577,8 +577,8 @@ public class ProjectController extends BaseController { */ @ResponseBody @RequestMapping("/skipTask/{projectId}/{approvetype}") - public ResponseMsg skipTask(@PathVariable int projectId, @PathVariable int approvetype) { - return projectService.skipTask(projectId, approvetype); + public ResponseMsg skipTask(@PathVariable int projectId, @PathVariable int approvetype, @RequestBody String json) { + return projectService.skipTask(projectId, json, approvetype); } /** diff --git a/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java b/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java index 639a75d..f53dbbe 100644 --- a/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java +++ b/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java @@ -69,4 +69,10 @@ public class ProjectTaskRecord { @Column(name = "task_index") private int taskIndex; + /** + * 会签单文件访问地址 + */ + @Column(name = "file_url") + private String fileUrl; + } diff --git a/src/main/java/cn/palmte/work/service/ActProcInsService.java b/src/main/java/cn/palmte/work/service/ActProcInsService.java index 8485068..35f3250 100644 --- a/src/main/java/cn/palmte/work/service/ActProcInsService.java +++ b/src/main/java/cn/palmte/work/service/ActProcInsService.java @@ -105,7 +105,7 @@ public class ActProcInsService { taskService.complete(taskId); projectTaskRecordService.saveTaskRecord(Integer.parseInt(instance.getBusinessKey()), - task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), ActConstant.TASK_INDEX_FIRST_USER_TASK, comment); + task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), ActConstant.TASK_INDEX_FIRST_USER_TASK, comment, ""); return instance.getId(); } diff --git a/src/main/java/cn/palmte/work/service/ActTaskDefService.java b/src/main/java/cn/palmte/work/service/ActTaskDefService.java index f0595c1..4af7270 100644 --- a/src/main/java/cn/palmte/work/service/ActTaskDefService.java +++ b/src/main/java/cn/palmte/work/service/ActTaskDefService.java @@ -1,6 +1,7 @@ package cn.palmte.work.service; import cn.palmte.work.bean.ApproveStatusEnum; +import cn.palmte.work.bean.ResponseMsg; import cn.palmte.work.config.activiti.ActConstant; import cn.palmte.work.model.*; @@ -58,10 +59,10 @@ public class ActTaskDefService { String message = json.getString("message"); int type = json.getInteger("type"); - completeTask(taskId, procInsId, message, type); + completeTask(taskId, procInsId, message, type, ""); } - private void completeTask(String taskId, String procInsId, String message, int type) { + private void completeTask(String taskId, String procInsId, String message, int type, String fileUrl) { String userId = InterfaceUtil.getAdminId() + ""; Authentication.setAuthenticatedUserId(userId); taskService.addComment(taskId, procInsId, message); @@ -78,7 +79,7 @@ public class ActTaskDefService { //保存审批记录 projectTaskRecordService.saveTaskRecord(Integer.parseInt(processInstance.getBusinessKey()), - currentTask, type, actTaskDef.getTaskIndex(), message); + currentTask, type, actTaskDef.getTaskIndex(), message, fileUrl); } @@ -92,7 +93,7 @@ public class ActTaskDefService { public void completeTaskByProcInsId(String procInsId, int type, String comment) { List taskList = taskService.createTaskQuery().processInstanceId(procInsId).list(); for (Task task : taskList) { - completeTask(task.getId(), procInsId, comment, type); + completeTask(task.getId(), procInsId, comment, type, ""); } } @@ -100,19 +101,18 @@ public class ActTaskDefService { * 预算跳过剩下审批任务直接到执行董事节点 * @param procInsId */ - public void skipTaskByProcInsId(String procInsId) { + public ResponseMsg skipTaskByProcInsId(String procInsId, String fileUrl, int approvetype) { ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(procInsId).singleResult(); - if (ActConstant.PROCESS_DEFKEY_BUDGET.equals(processInstance.getProcessDefinitionKey())) { - throw new RuntimeException("只有预算审批流程才能执行会签"); + if (!ActConstant.PROCESS_DEFKEY_BUDGET.equals(processInstance.getProcessDefinitionKey())) { + return ResponseMsg.buildFailedMsg("只有预算审批流程才能执行会签"); } //完成当前任务 Task task = taskService.createTaskQuery().processInstanceId(procInsId).singleResult(); if ("执行董事".equals(task.getName())) { - throw new RuntimeException("当前状态不能用会签功能,请使用审批功能。"); + return ResponseMsg.buildFailedMsg("当前状态不能用会签功能,请使用审批功能。"); } - completeTask(task.getId(), procInsId, "申请会签", ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus()); - + completeTask(task.getId(), procInsId, "申请会签", ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(), fileUrl); //非执行董事节点自动跳过 task = taskService.createTaskQuery().processInstanceId(procInsId).singleResult(); @@ -120,6 +120,8 @@ public class ActTaskDefService { completeSkipTask(task, processInstance, "会签,任务自动审批通过", ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus()); task = taskService.createTaskQuery().processInstanceId(procInsId).singleResult(); } + + return ResponseMsg.buildSuccessMsg("会签成功", approvetype); } diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index 7a0e7b0..fb48a2c 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -222,16 +222,25 @@ public class ProjectService { } - public ResponseMsg skipTask(int projectId, int approvetype) { + /** + * 会签 + * + * @param projectId + * @param json + * @param approvetype + * @return + */ + public ResponseMsg skipTask(int projectId, String json, int approvetype) { List relationList = projectInstanceRelationRepository.findByProjectIdOrderByCreateTimeDesc(projectId); if (relationList == null || relationList.isEmpty()) { return ResponseMsg.buildFailedMsg("会签失败"); } - ProjectInstanceRelation projectInstanceRelation = relationList.get(0); - actTaskDefService.skipTaskByProcInsId(projectInstanceRelation.getProcessInsId()); + JSONObject obj = JSON.parseObject(json); + String fileUrl = obj.getString("fileUrl"); - return ResponseMsg.buildSuccessMsg("会签成功", approvetype); + ProjectInstanceRelation projectInstanceRelation = relationList.get(0); + return actTaskDefService.skipTaskByProcInsId(projectInstanceRelation.getProcessInsId(), fileUrl, approvetype); } /** diff --git a/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java b/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java index 70ad724..e9b56f1 100644 --- a/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java +++ b/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java @@ -36,7 +36,7 @@ public class ProjectTaskRecordService { * @param status * @param comment */ - public void saveTaskRecord(int projectId, Task task, int status, int taskIndex, String comment) { + public void saveTaskRecord(int projectId, Task task, int status, int taskIndex, String comment, String fileUrl) { task.getProcessDefinitionId(); ProjectTaskRecord record = new ProjectTaskRecord(); record.setProjectId(projectId); @@ -50,6 +50,7 @@ public class ProjectTaskRecordService { record.setAssigneeName(InterfaceUtil.getAdmin().getRealName()); record.setTaskIndex(taskIndex); record.setCreateTime(new Date()); + record.setFileUrl(fileUrl); try { projectTaskRecordRepository.save(record); } catch (Exception e) { diff --git a/src/main/java/cn/palmte/work/utils/UploadUtil.java b/src/main/java/cn/palmte/work/utils/UploadUtil.java index ddb0267..63aab88 100644 --- a/src/main/java/cn/palmte/work/utils/UploadUtil.java +++ b/src/main/java/cn/palmte/work/utils/UploadUtil.java @@ -115,7 +115,7 @@ public class UploadUtil { boolean ispic = isPic(suffix); String dateString = new SimpleDateFormat("yyyyMMdd").format(new Date()); //保存的新名字 - String newName = uuid + "." + suffix; + String newName = prefix + "_" + DateKit.toStr(new Date(), "yyyyMMddHHmmss") + "." + suffix; result.setNewName(newName); String path = "file/" + dateString + "/" + newName; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fb2157e..7b25a97 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -29,10 +29,10 @@ spring.freemarker.expose-session-attributes=true spring.freemarker.allow-request-override=true spring.freemarker.allow-session-override=true -multipart.maxFileSize=10Mb -multipart.maxRequestSize=10Mb -spring.http.multipart.maxFileSize=10Mb -spring.http.multipart.maxRequestSize=10Mb +multipart.maxFileSize=20Mb +multipart.maxRequestSize=20Mb +spring.http.multipart.maxFileSize=20Mb +spring.http.multipart.maxRequestSize=20Mb diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index 0799660..96a8fd0 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -453,7 +453,9 @@
- + <#if huiQianFile! !=""> + +
${node.taskComment} + <#if node.fileUrl! !="">下载会签单
@@ -2479,24 +2482,31 @@
-
-
+
-
-
会签单
- -
- - -
- -
-
-
+
*会签单
+
+
+ +
+ + +
+ + +
+
+
+
+
+
+
@@ -2545,6 +2555,13 @@ + + + + + + +