guoshilong
2023-05-16 d0a1fc499804f832f4c77bc80727340907cbfd4a
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/reportFlood/service/impl/ReportFloodRecordServiceImpl.java
@@ -50,30 +50,14 @@
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean startProcess(ReportFloodRecord reportFloodRecord) {
   public boolean startProcess(ReportFloodRecordVO reportFloodRecord) {
      String businessTable = FlowUtil.getBusinessTable(ProcessConstant.REPORT_FLOOD_KEY);
      if (Func.isEmpty(reportFloodRecord.getId())) {
         save(reportFloodRecord);
         // 启动流程
         Kv variables = Kv.create()
            .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, reportFloodRecord.getCreateUser());
         //无异常/自行解决,把任务指定给自己
         if (Func.equals(1,reportFloodRecord.getStatus())){
            //无异常
            variables.set("taskUser", TaskUtil.getTaskUser(reportFloodRecord.getCreateUser().toString()));
         }else {
            //异常
            if (reportFloodRecord.getSolution().equals("1")) {
               //自行解决
               variables.set("taskUser", TaskUtil.getTaskUser(reportFloodRecord.getCreateUser().toString()));
            }else{
               //上报给技术责任人处理
               User user = getUser(PersonType.TECH_PERSON, reportFloodRecord.getReservoirId());
               if (ObjectUtil.isNotEmpty(user)){
                  variables.set("taskUser", TaskUtil.getTaskUser(user.getId().toString()));
               }
            }
         }
            .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, reportFloodRecord.getCreateUser())
            .set("taskUser", StringUtil.format("{}{}", TASK_USR_PREFIX, reportFloodRecord.getTaskUser()));
         R<BladeFlow> result = flowClient.startProcessInstanceById(reportFloodRecord.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(reportFloodRecord.getId())), variables);
         if (result.isSuccess()) {
            log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId());
@@ -81,21 +65,34 @@
            reportFloodRecord.setProcessInstanceId(result.getData().getProcessInstanceId());
            updateById(reportFloodRecord);
            if (Func.equals(1,reportFloodRecord.getStatus())){
               //状态正常直接结束任务
               ReportFloodRecordVO reportFloodRecordVO = new ReportFloodRecordVO();
               reportFloodRecordVO.setReport(false);
               reportFloodRecordVO.setToDept(false);
               reportFloodRecordVO.setProcessInstanceId(reportFloodRecord.getProcessInstanceId());
               R<BladeFlow> res = flowClient.getBladeFlow(reportFloodRecord.getId().toString(),reportFloodRecord.getCreateUser().toString());
               if (res.isSuccess()){
                  reportFloodRecordVO.setFlow(res.getData());
                  completeTask(reportFloodRecordVO,reportFloodRecord.getCreateUser().toString(),reportFloodRecord.getCreateUser().toString());
               }else {
                  throw new ServiceException("完成报汛失败");
//            //状态正常直接结束任务
            ReportFloodRecordVO reportFloodRecordVO = new ReportFloodRecordVO();
            reportFloodRecordVO.setProcessInstanceId(reportFloodRecord.getProcessInstanceId());
            //业务id
            String businessId = reportFloodRecord.getId().toString();
            //当前用户id
            String currentUserId = reportFloodRecord.getCreateUser().toString();
            //指定下一人
            String taskUser = reportFloodRecord.getTaskUser();
            R<BladeFlow> res = flowClient.getBladeFlow(businessId,currentUserId);
            //参数设置
            if (res.isSuccess()){
               reportFloodRecordVO.setFlow(res.getData());
               if (Func.equals(reportFloodRecord.getStatus(),1)){
                  //状态正常结束任务
                  reportFloodRecordVO.setReport(false);
               }else{
                  //异常
                  if (Func.equals(reportFloodRecord.getSolution(),"1")){
                     //自行处理
                     return true;
                  }else {
                     //上报给技术责任人
                     reportFloodRecordVO.setReport(true);
                  }
               }
            }
            completeTask(reportFloodRecordVO,taskUser,currentUserId);
         } else {
            throw new ServiceException("开启流程失败");
         }
@@ -120,8 +117,6 @@
         variables.put(ProcessConstant.REPORT_KEY,reportFloodRecord.isReport());
         //指定转交人
         variables.put("taskUser", StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser));
         //指定是否上报给部门
         variables.put(ProcessConstant.TODEPT_KEY,reportFloodRecord.isToDept());
         // 完成任务
         flowClient.completeTask(taskId,processInstanceId,comment,variables);
         return true;