Przeglądaj źródła

任务上报bug

Signed-off-by: liuyc <56808083@qq.com>
liuyc 1 rok temu
rodzic
commit
d0a82cbe49

+ 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
      */

+ 24 - 4
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,8 +290,12 @@ public class ArchiveFileController extends BladeController {
             json.put("operationObjName", title);
             this.operationLogClient.saveUserOperationLog(25, "其它文件", "工程文件", json);
 
-            //启动流程
-            this.taskClient.startTask(taskVO);
+            taskVO.setReportUserId(SecureUtil.getUserId().toString());
+            taskVO.setReportUserName(SecureUtil.getNickName());
+
+            //启动流程(不清楚为什么之前的开发在同一个服务内用feign调用)
+            /*this.taskClient.startTask(taskVO);*/
+            this.iTaskService.startApproval(taskVO);
             //修改状态为待审批
             String[] archiveTaskIdArray = archiveTaskIds.split(",");
             boolean update = this.archiveFileService.update(Wrappers.<ArchiveFile>lambdaUpdate().set(ArchiveFile::getStatus, 1).in(ArchiveFile::getId, Arrays.asList(archiveTaskIdArray)));
@@ -309,6 +321,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,8 +341,13 @@ public class ArchiveFileController extends BladeController {
                 taskVO.setApprovalType(2);
                 ArchiveFile archiveFile = this.archiveFileService.getBaseMapper().selectById(id);
                 taskVO.setTaskName(archiveFile.getFileName());
-                //启动流程
-                this.taskClient.startTask(taskVO);
+
+                taskVO.setReportUserId(SecureUtil.getUserId().toString());
+                taskVO.setReportUserName(SecureUtil.getNickName());
+
+                //启动流程(不清楚为什么之前的开发在同一个服务内用feign调用)
+                /*this.taskClient.startTask(taskVO);*/
+                this.iTaskService.startApproval(taskVO);
                 //修改状态为待审批
                 String[] archiveTaskIdArray = id.split(",");
                 boolean update = this.archiveFileService.update(Wrappers.<ArchiveFile>lambdaUpdate().set(ArchiveFile::getStatus, 1).in(ArchiveFile::getId, Arrays.asList(archiveTaskIdArray)));

+ 40 - 32
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,8 +1267,13 @@ public class InformationWriteQueryController extends BladeController {
                         taskVO.setFormDataId(id);
                         //设置上报类型
                         taskVO.setApprovalType(1);
-                        //上报
-                        if (this.taskClient.startTask(taskVO).getData()) {
+
+                        taskVO.setReportUserId(SecureUtil.getUserId().toString());
+                        taskVO.setReportUserName(SecureUtil.getNickName());
+
+                        //启动流程(不清楚为什么之前的开发在同一个服务内用feign调用)
+                        /*if (this.taskClient.startTask(taskVO).getData()) {*/
+                        if (iTaskService.startApproval(taskVO)) {
                             LambdaUpdateWrapper<InformationQuery> wrappers = Wrappers.lambdaUpdate();
                             wrappers.set(InformationQuery::getReportNumber, taskVO.getBatch()).set(InformationQuery::getStatus, 1);
 
@@ -1380,7 +1388,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 +1436,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 +1604,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 +1678,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 +1707,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 +1724,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 +1787,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 +1826,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 +2183,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 +2215,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 +2322,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);

+ 10 - 6
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -584,7 +584,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);
@@ -593,7 +593,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(() -> {
@@ -654,7 +654,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时就需要重新提交请求
@@ -929,6 +929,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())) {
@@ -1004,9 +1008,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