Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

qianxb 1 anno fa
parent
commit
84360469d6

+ 6 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TaskVO.java

@@ -56,6 +56,12 @@ public class TaskVO extends Task {
     @ApiModelProperty("电签状态")
     private String eVisaContent;
 
+    @ApiModelProperty("上报人id")
+    private String reportUserId;
+
+    @ApiModelProperty("上报人名称")
+    private String reportUserName;
+
     /**
      * 试验自检记录id
      */

+ 18 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java

@@ -19,12 +19,15 @@ import org.springblade.business.feign.MessageWarningClient;
 import org.springblade.business.feign.OperationLogClient;
 import org.springblade.business.feign.RecycleBinClient;
 import org.springblade.business.feign.TaskClient;
+import org.springblade.business.service.ITaskService;
 import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.MessageWarningVO;
 import org.springblade.business.vo.StartTaskVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.common.constant.ClientIdConstant;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
@@ -70,6 +73,8 @@ public class ArchiveFileController extends BladeController {
 
     private final TaskClient taskClient;
 
+    private final ITaskService iTaskService;
+
     private final OperationLogClient operationLogClient;
 
     private final EVisaClient eVisaClient;
@@ -257,6 +262,9 @@ public class ArchiveFileController extends BladeController {
     @ApiOperation(value = "批量上报")
     @PushMessage(clientId = ClientIdConstant.BUSINESS_CLIENT_ID)
     public R<Object> batchApproval(@RequestBody StartTaskVO startTaskVO) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId() == -1L) {
+            throw new ServiceException("未获取到当前用户信息");
+        }
         String archiveTaskIds = startTaskVO.getIds();
         if (StringUtils.isNotEmpty(archiveTaskIds)) {
             //生成流程实体
@@ -282,7 +290,9 @@ public class ArchiveFileController extends BladeController {
             json.put("operationObjName", title);
             this.operationLogClient.saveUserOperationLog(25, "其它文件", "工程文件", json);
 
-            //启动流程
+            taskVO.setReportUserId(SecureUtil.getUserId().toString());
+            taskVO.setReportUserName(SecureUtil.getNickName());
+
             this.taskClient.startTask(taskVO);
             //修改状态为待审批
             String[] archiveTaskIdArray = archiveTaskIds.split(",");
@@ -309,6 +319,9 @@ public class ArchiveFileController extends BladeController {
     @ApiOperation(value = "批量上报")
     @PushMessage(clientId = ClientIdConstant.BUSINESS_CLIENT_ID)
     public R<Object> batchApproval2(@RequestBody StartTaskVO startTaskVO) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId() == -1L) {
+            throw new ServiceException("未获取到当前用户信息");
+        }
         String archiveTaskIds = startTaskVO.getIds();
         if (StringUtils.isNotEmpty(archiveTaskIds)) {
             Set<String> aopParamsSet = new HashSet<>();
@@ -326,7 +339,10 @@ public class ArchiveFileController extends BladeController {
                 taskVO.setApprovalType(2);
                 ArchiveFile archiveFile = this.archiveFileService.getBaseMapper().selectById(id);
                 taskVO.setTaskName(archiveFile.getFileName());
-                //启动流程
+
+                taskVO.setReportUserId(SecureUtil.getUserId().toString());
+                taskVO.setReportUserName(SecureUtil.getNickName());
+
                 this.taskClient.startTask(taskVO);
                 //修改状态为待审批
                 String[] archiveTaskIdArray = id.split(",");

+ 37 - 31
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1209,6 +1209,9 @@ public class InformationWriteQueryController extends BladeController {
     @ApiOperation(value = "批量上报")
     @PushMessage(clientId = ClientIdConstant.BUSINESS_CLIENT_ID)
     public R<Object> batchTask(@RequestBody StartTaskVO startTaskVO) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId() == -1L) {
+            throw new ServiceException("未获取到当前用户信息");
+        }
         if (StringUtils.isNotEmpty(startTaskVO.getIds())) {
             //获取数据源id
             String[] ids = startTaskVO.getIds().split(",");
@@ -1264,7 +1267,10 @@ public class InformationWriteQueryController extends BladeController {
                         taskVO.setFormDataId(id);
                         //设置上报类型
                         taskVO.setApprovalType(1);
-                        //上报
+
+                        taskVO.setReportUserId(SecureUtil.getUserId().toString());
+                        taskVO.setReportUserName(SecureUtil.getNickName());
+
                         if (this.taskClient.startTask(taskVO).getData()) {
                             LambdaUpdateWrapper<InformationQuery> wrappers = Wrappers.lambdaUpdate();
                             wrappers.set(InformationQuery::getReportNumber, taskVO.getBatch()).set(InformationQuery::getStatus, 1);
@@ -1380,7 +1386,7 @@ public class InformationWriteQueryController extends BladeController {
             tabOwner = "1,2,3,4,5,6"; //如果选择的是否复制数据=0(否),默认所属方123456
         }
         /*用来标识新旧工序结对*/
-        Map<Long,Long> peerMap = new HashMap<>();
+        Map<Long, Long> peerMap = new HashMap<>();
         //TODO 单份复制
         if (("1").equals(vo.getCopyType())) {
             //首先查询需要复制的节点及其下级所有子节点的信息
@@ -1428,8 +1434,8 @@ public class InformationWriteQueryController extends BladeController {
                     //重塑关键信息
                     //重塑primaryKeyId
                     newData.setPKeyId(SnowFlakeUtil.getId());
-                    if(nodeOld.getNodeType()!=null&&nodeOld.getNodeType()==6){
-                        peerMap.put(newData.getPKeyId(),nodeOld.getPKeyId());
+                    if (nodeOld.getNodeType() != null && nodeOld.getNodeType() == 6) {
+                        peerMap.put(newData.getPKeyId(), nodeOld.getPKeyId());
                     }
                     //设置旧ID
                     if (StringUtils.isNotEmpty(nodeOld.getOldId())) {
@@ -1596,7 +1602,7 @@ public class InformationWriteQueryController extends BladeController {
                 this.addCopyTabFile(new HashSet<>(newTabs), oldTabs);
             }
             /*复制formulaOption*/
-            this.copyFormulaOptions(saveList,peerMap);
+            this.copyFormulaOptions(saveList, peerMap);
             //更新redis缓存
             informationQueryService.delAsyncWbsTree(needCopyNode.getContractId());
 
@@ -1670,7 +1676,7 @@ public class InformationWriteQueryController extends BladeController {
                                         List<WbsTreeContract> needCopyTab = needCopyNodeAndTabMap.get("tab:" + needCopyNodeRoot.getPKeyId());
 
                                         //构造新的节点、表、数据
-                                        this.addCopyNodesAndTabsBuildData(addNodeList, addTabList, needCopyNodes, needCopyTab, needCopyNode, toCopyNode, resultTablesData, 1, tabOwner, vo.getIsCopyData(),peerMap);
+                                        this.addCopyNodesAndTabsBuildData(addNodeList, addTabList, needCopyNodes, needCopyTab, needCopyNode, toCopyNode, resultTablesData, 1, tabOwner, vo.getIsCopyData(), peerMap);
 
                                         //附件
                                         addNewFileTabs.addAll(addTabList);
@@ -1699,7 +1705,7 @@ public class InformationWriteQueryController extends BladeController {
                                             List<WbsTreeContract> needCopyTab = needCopyNodeAndTabMap.get("tab:" + needCopyNodeRoot.getPKeyId());
 
                                             //构造新的节点、表、数据
-                                            this.addCopyNodesAndTabsBuildData(addNodeList, addTabList, needCopyNodes, needCopyTab, needCopyNode, toCopyNode, resultTablesData, 0, tabOwner, vo.getIsCopyData(),peerMap);
+                                            this.addCopyNodesAndTabsBuildData(addNodeList, addTabList, needCopyNodes, needCopyTab, needCopyNode, toCopyNode, resultTablesData, 0, tabOwner, vo.getIsCopyData(), peerMap);
 
                                             //附件
                                             addNewFileTabs.addAll(addTabList);
@@ -1716,7 +1722,7 @@ public class InformationWriteQueryController extends BladeController {
                                             List<WbsTreeContract> needCopyTab = needCopyNodeAndTabMap.get("tab:" + needCopyNodeRoot.getPKeyId());
 
                                             //构造新的节点、表、数据
-                                            this.addCopyNodesAndTabsBuildData(addNodeList, addTabList, needCopyNodes, needCopyTab, needCopyNode, toCopyNode, resultTablesData, 0, tabOwner, vo.getIsCopyData(),peerMap);
+                                            this.addCopyNodesAndTabsBuildData(addNodeList, addTabList, needCopyNodes, needCopyTab, needCopyNode, toCopyNode, resultTablesData, 0, tabOwner, vo.getIsCopyData(), peerMap);
 
                                             //附件
                                             addNewFileTabs.addAll(addTabList);
@@ -1779,9 +1785,9 @@ public class InformationWriteQueryController extends BladeController {
                             throw new ServiceException("保存数据异常,请联系管理员");
                         }
                     }
-                    if(nodes.size()>0){
+                    if (nodes.size() > 0) {
                         /*复制formulaOpion*/
-                        this.copyFormulaOptions(nodes,peerMap);
+                        this.copyFormulaOptions(nodes, peerMap);
                     }
                     if (row) {
                         //更新redis缓存
@@ -1818,24 +1824,24 @@ public class InformationWriteQueryController extends BladeController {
     }
 
     @Async
-    public void copyFormulaOptions( List<WbsTreeContract>  saveList,Map<Long,Long> peerMap){
-        if(peerMap.size()>0){
+    public void copyFormulaOptions(List<WbsTreeContract> saveList, Map<Long, Long> peerMap) {
+        if (peerMap.size() > 0) {
             try {
-            String sqlTemplate="INSERT INTO m_formula_option (id,parent_id,contract_id,val) select #1,#2,contract_id,val from m_formula_option where id=#3";
-            Map<Long,Long> idMap = saveList.stream().filter(e->e.getNodeType()!=null&&e.getNodeType()==6).collect(Collectors.toMap(WbsTreeContract::getPKeyId,WbsTreeContract::getId));
-            List<String> sqlList= new ArrayList<>();
-            for(Map.Entry<Long,Long> p:peerMap.entrySet()){
-                try {
-                    String newPkeyId=p.getKey().toString();
-                    String oldPkeyId=p.getValue().toString();
-                    String newId=idMap.get(p.getKey()).toString();
-                    sqlList.add(sqlTemplate.replace("#1", newPkeyId).replace("#2", newId).replace("#3", oldPkeyId));
-                }catch (Exception e){
-                    e.printStackTrace();
+                String sqlTemplate = "INSERT INTO m_formula_option (id,parent_id,contract_id,val) select #1,#2,contract_id,val from m_formula_option where id=#3";
+                Map<Long, Long> idMap = saveList.stream().filter(e -> e.getNodeType() != null && e.getNodeType() == 6).collect(Collectors.toMap(WbsTreeContract::getPKeyId, WbsTreeContract::getId));
+                List<String> sqlList = new ArrayList<>();
+                for (Map.Entry<Long, Long> p : peerMap.entrySet()) {
+                    try {
+                        String newPkeyId = p.getKey().toString();
+                        String oldPkeyId = p.getValue().toString();
+                        String newId = idMap.get(p.getKey()).toString();
+                        sqlList.add(sqlTemplate.replace("#1", newPkeyId).replace("#2", newId).replace("#3", oldPkeyId));
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
                 }
-            }
-            BaseUtils.splitList(sqlList,50).parallelStream().map(l->String.join(";",l)).forEach(this.jdbcTemplate::execute);
-            }catch (Exception e){
+                BaseUtils.splitList(sqlList, 50).parallelStream().map(l -> String.join(";", l)).forEach(this.jdbcTemplate::execute);
+            } catch (Exception e) {
                 StaticLog.error("formulaOption复制失败");
             }
         }
@@ -2175,7 +2181,7 @@ public class InformationWriteQueryController extends BladeController {
     private void addCopyNodesAndTabsBuildData
     (List<WbsTreeContract> addNodeList, List<WbsTreeContract> addTabList, List<WbsTreeContract> needNodes, List<WbsTreeContract> needTabs, WbsTreeContract
             needCopyNode, WbsTreeContract toCopyNode, List<String> resultTablesData, Integer isSameNode, String
-             tabOwner, Integer isCopyData,Map<Long,Long> peerMap ) {
+             tabOwner, Integer isCopyData, Map<Long, Long> peerMap) {
         int var = 0;
         if (needNodes.size() == 1) {
             //判断是否为最下级节点
@@ -2207,8 +2213,8 @@ public class InformationWriteQueryController extends BladeController {
                     //获取当前复制的节点的sort
                     obj.setSort(ObjectUtils.isNotEmpty(needNode.getSort()) ? needNode.getSort() : 0);
                     addNodeList.add(obj);
-                    if(obj.getNodeType()!=null&&obj.getNodeType()==6){
-                        peerMap.put(obj.getPKeyId(),needNode.getPKeyId());
+                    if (obj.getNodeType() != null && obj.getNodeType() == 6) {
+                        peerMap.put(obj.getPKeyId(), needNode.getPKeyId());
                     }
                     break;
                 }
@@ -2314,8 +2320,8 @@ public class InformationWriteQueryController extends BladeController {
                     obj.setSort(ObjectUtils.isNotEmpty(node.getSort()) ? node.getSort() : 0);
 
                     addNodeList.add(obj);
-                    if(obj.getNodeType()!=null&&obj.getNodeType()==6){
-                        peerMap.put(obj.getPKeyId(),node.getPKeyId());
+                    if (obj.getNodeType() != null && obj.getNodeType() == 6) {
+                        peerMap.put(obj.getPKeyId(), node.getPKeyId());
                     }
                     //构造当前节点下所有元素表
                     List<WbsTreeContract> tabs = tabMap.get(oldId);

+ 16 - 12
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -585,7 +585,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         //执行代码
         logger.debug("扫描开始");
         List<TaskBatch> maps = taskBatchService.queryDataInfo();
-        if (maps != null && maps.size() >= 1 && executor.getQueue().size()<=200) {
+        if (maps != null && maps.size() >= 1 && executor.getQueue().size() <= 200) {
             for (TaskBatch dataInfo : maps) {
                 String jsonData = dataInfo.getJsonData();
                 TaskApprovalVO taskApprovalVO = JSON.parseObject(jsonData, TaskApprovalVO.class);
@@ -594,7 +594,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 String nickName = dataInfo.getNickName();
 
                 Boolean aBoolean = RedisTemplate.hasKey("sign-" + taskApprovalVO.getFormDataId());
-                System.out.println("---------"+aBoolean);
+                System.out.println("---------" + aBoolean);
                 if (!aBoolean) {
                     RedisTemplate.opsForValue().set("sign-" + taskApprovalVO.getFormDataId(), "1");
                     CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
@@ -655,7 +655,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             //电签状态
             System.out.println("++buess-开始+++" + taskApprovalVO.getFormDataId());
             String eVisaStatus = eVisaClient.eVisa(JSONObject.parseObject(JSONObject.toJSONString(taskApprovalVO), EVisaTaskApprovalVO.class));
-            System.out.println("+++evsin-返回++"+ taskApprovalVO.getFormDataId()+"--"+ eVisaStatus);
+            System.out.println("+++evsin-返回++" + taskApprovalVO.getFormDataId() + "--" + eVisaStatus);
             //todo ============================ 执行电签区域 ============================
 
             //电签状态分为success/notPfxOrFile/error,当状态为error时就需要重新提交请求
@@ -930,6 +930,10 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     @Override
     public Boolean startApproval(TaskVO vo) {
+        if (ObjectUtil.isEmpty(vo.getReportUserId()) || ObjectUtil.isEmpty(vo.getReportUserName())) {
+            vo.setReportUserId(SecureUtil.getUserId().toString());
+            vo.setReportUserName(SecureUtil.getNickName());
+        }
         //获取业务表
         String businessTable = FlowUtil.getBusinessTable(ProcessConstant.EXAMINATION_AND_APPROVAL);
         if (Func.isEmpty(vo.getId())) {
@@ -960,14 +964,14 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 return false;
             }
             //获取选择的固定流程
-            List<FixedFlowLink> links;
+            List<FixedFlowLink> links = new ArrayList<>();
             if (Long.valueOf("0").equals(vo.getFixedFlowId())) {
-                //自定义流程
-                links = new ArrayList<>();
                 //获取自定义流程
                 List<TaskVO.CustomUserTask> userTasks = vo.getUserTasks();
                 //设置人员及姓名
-                userTasks.forEach(userTask -> links.add(new FixedFlowLink(userTask.getUserName(), userTask.getUserId())));
+                for (TaskVO.CustomUserTask userTask : userTasks) {
+                    links.add(new FixedFlowLink(userTask.getUserName(), userTask.getUserId()));
+                }
 
             } else {
                 //预设流程
@@ -1005,9 +1009,9 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             }
             //设置流程信息
             vo.setProcessDefinitionId(taskFlowId);
-            vo.setReportUser(AuthUtil.getUserId().toString());
-            vo.setReportUserName(AuthUtil.getNickName());
-            vo.setCreateUser(AuthUtil.getUserId());
+            vo.setReportUser(vo.getReportUserId());
+            vo.setReportUserName(vo.getReportUserName());
+            vo.setCreateUser(Long.parseLong(vo.getReportUserId()));
             vo.setCreateTime(nowTime);
 
             //bean Copy
@@ -1413,7 +1417,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 for (Task task : taskList) {
                     //重新保存
                     long startTime_1 = System.currentTimeMillis();
-                    R result = this.saveNodePdf(classify,queryMap.get(task.getFormDataId()), contractId, projectId, header);
+                    R result = this.saveNodePdf(classify, queryMap.get(task.getFormDataId()), contractId, projectId, header);
                     long endTime_1 = System.currentTimeMillis();
                     long executionTime_1 = endTime_1 - startTime_1;
                     log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
@@ -1459,7 +1463,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         throw new ServiceException("未获取到任务信息,操作失败!");
     }
 
-    R saveNodePdf(String classify,String nodePKeyIds, String contractId, String projectId, String header) throws Exception {
+    R saveNodePdf(String classify, String nodePKeyIds, String contractId, String projectId, String header) throws Exception {
         return excelTabClient.synPDFInfo(contractId, nodePKeyIds, classify, projectId, header);
     }