Selaa lähdekoodia

一键重签,单个保存

qianxb 1 vuosi sitten
vanhempi
commit
54e8112160

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1602,6 +1602,9 @@ public class TaskController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "任务管理-一键重签", notes = "传入taskIds、下拉框的contractId、projectId")
     public R<Object> reSigningEVisa(@RequestParam String taskIds, @RequestParam String contractId, @RequestParam String projectId, HttpServletRequest request) {
+        if (ObjectUtil.isEmpty(taskIds)) {
+            return R.fail("请选择一条记录");
+        }
         String header = request.getHeader("Blade-Auth");
         taskService.reSigningEVisa(taskIds, contractId, projectId, header);
         return R.success("任务已经成功提交重签,请耐心等待!");

+ 124 - 60
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1299,76 +1299,140 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         }
     }
 
+//    @Override
+//    public void reSigningEVisa(String taskIds, String contractId, String projectId,String header) {
+//        List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
+//        if (taskList.size() > 0) {
+//            List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+//            List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
+//            if (informationQueryList.size() > 0) {
+//                List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+//                if (nodePKeyIdList.size() > 0) {
+//                    try {
+//                        //重新保存
+//                        long startTime_1 = System.currentTimeMillis();
+//                        R result = this.saveNodePdf(StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
+//                        long endTime_1 = System.currentTimeMillis();
+//                        long executionTime_1 = endTime_1 - startTime_1;
+//                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
+//
+//                        //重新电签
+//                        if (result != null && "成功".equals(result.getData())) {
+//
+//                            List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
+//                            //获取任务详情信息Map
+//                            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
+//                            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
+//                            if (processInstanceIds.size() > 0) {
+//                                String resultIds = processInstanceIds.stream()
+//                                        .map(id -> "'" + id + "'")
+//                                        .collect(Collectors.joining(","));
+//                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+//                            }
+//                            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
+//
+//                            for (Task task : taskList) {
+//                                List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
+//                                for (TaskParallel taskParallel : taskParallelList) {
+//                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+//                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
+//                                        TaskApprovalVO approvalVO = new TaskApprovalVO();
+//                                        approvalVO.setTaskId(task.getId().toString());
+//                                        approvalVO.setFlag("OK");
+//                                        approvalVO.setComment("重新发起电签");
+//                                        approvalVO.setApprovalType(1);
+//                                        approvalVO.setFormDataId(task.getFormDataId());
+//                                        approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+//                                        approvalVO.setYsNickName(taskParallel.getTaskUserName());
+//                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
+//                                        taskApprovalVOS.add(approvalVO);
+//                                    }
+//                                }
+//                            }
+//                            long startTime_2 = System.currentTimeMillis();
+//                            this.batchCompleteApprovalTask(taskApprovalVOS);
+//                            long endTime_2 = System.currentTimeMillis();
+//                            long executionTime_2 = endTime_2 - startTime_2;
+//                            log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
+//                        } else {
+//                            throw new ServiceException("重新保存PDF信息失败");
+//                        }
+//
+//                    } catch (Exception e) {
+//                        e.printStackTrace();
+//                        throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
+//                    }
+//                }
+//            }
+//        }
+//        throw new ServiceException("未获取到任务信息,操作失败!");
+//    }
+
     @Override
     public void reSigningEVisa(String taskIds, String contractId, String projectId,String header) {
-        if (ObjectUtil.isEmpty(taskIds)) {
-            throw new ServiceException("请选择至少一条任务进行重签");
-        }
+        //查询任务信息
         List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
         if (taskList.size() > 0) {
+            //获取任务详情信息Map
+            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
+            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
+            if (processInstanceIds.size() > 0) {
+                String resultIds = processInstanceIds.stream()
+                        .map(id -> "'" + id + "'")
+                        .collect(Collectors.joining(","));
+                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+            }
+            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
+            //获取每条任务对应的节点信息
             List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
-            List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
-            if (informationQueryList.size() > 0) {
-                List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
-                if (nodePKeyIdList.size() > 0) {
-                    try {
-                        //重新保存
-                        long startTime_1 = System.currentTimeMillis();
-                        R result = this.saveNodePdf(StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
-                        long endTime_1 = System.currentTimeMillis();
-                        long executionTime_1 = endTime_1 - startTime_1;
-                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
-
-                        //重新电签
-                        if (result != null && "成功".equals(result.getData())) {
-
-                            List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
-                            //获取任务详情信息Map
-                            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
-                            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
-                            if (processInstanceIds.size() > 0) {
-                                String resultIds = processInstanceIds.stream()
-                                        .map(id -> "'" + id + "'")
-                                        .collect(Collectors.joining(","));
-                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
-                            }
-                            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
-
-                            for (Task task : taskList) {
-                                List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
-                                for (TaskParallel taskParallel : taskParallelList) {
-                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
-                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
-                                        TaskApprovalVO approvalVO = new TaskApprovalVO();
-                                        approvalVO.setTaskId(task.getId().toString());
-                                        approvalVO.setFlag("OK");
-                                        approvalVO.setComment("重新发起电签");
-                                        approvalVO.setApprovalType(1);
-                                        approvalVO.setFormDataId(task.getFormDataId());
-                                        approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
-                                        approvalVO.setYsNickName(taskParallel.getTaskUserName());
-                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
-                                        taskApprovalVOS.add(approvalVO);
-                                    }
-                                }
+            Map<String, String> queryMap = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class)).stream().collect(Collectors.toMap(l -> l.getId()+"", l -> l.getWbsId()+""));
+            try {
+                for (Task task : taskList) {
+                    //重新保存
+                    long startTime_1 = System.currentTimeMillis();
+                    R result = this.saveNodePdf(queryMap.get(task.getFormDataId()), contractId, projectId, header);
+                    long endTime_1 = System.currentTimeMillis();
+                    long executionTime_1 = endTime_1 - startTime_1;
+                    log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
+
+                    //重新电签
+                    if (result != null && "成功".equals(result.getData())) {
+                        List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
+                        List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
+                        for (TaskParallel taskParallel : taskParallelList) {
+                            //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+                            if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
+                                TaskApprovalVO approvalVO = new TaskApprovalVO();
+                                approvalVO.setTaskId(task.getId().toString());
+                                approvalVO.setFlag("OK");
+                                approvalVO.setComment("重新发起电签");
+                                approvalVO.setApprovalType(1);
+                                approvalVO.setFormDataId(task.getFormDataId());
+                                approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+                                approvalVO.setYsNickName(taskParallel.getTaskUserName());
+                                approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
+                                taskApprovalVOS.add(approvalVO);
                             }
-                            long startTime_2 = System.currentTimeMillis();
-                            this.batchCompleteApprovalTask(taskApprovalVOS);
-                            long endTime_2 = System.currentTimeMillis();
-                            long executionTime_2 = endTime_2 - startTime_2;
-                            log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
-
-                            throw new ServiceException("任务已经成功提交重签,请耐心等待!");
-                        } else {
-                            throw new ServiceException("重新保存PDF信息失败");
                         }
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
+                        long startTime_2 = System.currentTimeMillis();
+                        this.batchCompleteApprovalTask(taskApprovalVOS);
+                        long endTime_2 = System.currentTimeMillis();
+                        long executionTime_2 = endTime_2 - startTime_2;
+                        log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
+                    } else {
+                        //修改重签状态为保存PDF失败
+                        this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
+                                .set(TaskParallel::getEVisaContent, "重新保存PDF失败")
+                                .eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId())
+                                .eq(TaskParallel::getEVisaStatus,"99"));
                     }
                 }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
             }
+
         }
         throw new ServiceException("未获取到任务信息,操作失败!");
     }

+ 33 - 30
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -3909,7 +3909,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "classify", value = "classify", required = true),
             @ApiImplicitParam(name = "projectId", value = "projectId", required = true)
     })
-    public R synPDFInfo(String contractId,String nodeIds, String classify, String projectId) throws Exception {
+    public R synPDFInfo(String contractId,String nodeIds, String classify, String projectId) {
 
         if( contractId==null && StringUtils.isEmpty(contractId)){
             return R.data("contractId不能为空");
@@ -3928,38 +3928,41 @@ public class ExcelTabController extends BladeController {
         }
 
         String nodeId[] = Func.toStrArray(nodeIds);
-
-        for(String noId : nodeId){
-            JSONObject js = new JSONObject();
-            JSONObject js2 = new JSONObject();
-            List<AppWbsTreeContractVO> tableAll = wbsTreeContractService.searchNodeAllTable(noId, classify, contractId, projectId);
-            JSONArray array = new JSONArray();
-            if(tableAll!=null && tableAll.size()>=1){
-                for(AppWbsTreeContractVO tab:tableAll){
-                    try {
-                        R bussDataInfo = excelTabService.getBussDataInfo(tab.getPKeyId(), 0);
-                        Map<String, Object> jo = (Map<String, Object>) bussDataInfo.getData();
-                        String s = new Gson().toJson(jo);
-                        //字符串转jsonobject
-                        JSONObject obj = JSON.parseObject(s);
-                        obj.put("classify",classify);
-                        obj.put("nodeId",noId);
-                        obj.put("contractId",contractId);
-                        obj.put("pkeyId",tab.getPKeyId());
-                        obj.put("projectId",projectId);
-                        obj.put("isCollapseLoad",true);
-                        obj.put("isRenderForm",true);
-                        array.add(obj);
-                    }catch (Exception e){
-                        e.printStackTrace();
-                    }finally {
-                        continue;
+        try {
+            for (String noId : nodeId) {
+                JSONObject js = new JSONObject();
+                JSONObject js2 = new JSONObject();
+                List<AppWbsTreeContractVO> tableAll = wbsTreeContractService.searchNodeAllTable(noId, classify, contractId, projectId);
+                JSONArray array = new JSONArray();
+                if (tableAll != null && tableAll.size() >= 1) {
+                    for (AppWbsTreeContractVO tab : tableAll) {
+                        try {
+                            R bussDataInfo = excelTabService.getBussDataInfo(tab.getPKeyId(), 0);
+                            Map<String, Object> jo = (Map<String, Object>) bussDataInfo.getData();
+                            String s = new Gson().toJson(jo);
+                            //字符串转jsonobject
+                            JSONObject obj = JSON.parseObject(s);
+                            obj.put("classify", classify);
+                            obj.put("nodeId", noId);
+                            obj.put("contractId", contractId);
+                            obj.put("pkeyId", tab.getPKeyId());
+                            obj.put("projectId", projectId);
+                            obj.put("isCollapseLoad", true);
+                            obj.put("isRenderForm", true);
+                            array.add(obj);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        } finally {
+                            continue;
+                        }
                     }
                 }
+                js2.put("orderList", array);
+                js.put("dataInfo", js2);
+                this.saveBussData2(js);
             }
-            js2.put("orderList",array);
-            js.put("dataInfo",js2);
-            this.saveBussData2(js);
+        }catch (Exception e){
+            return null;
         }
         return R.data("成功");
     }