guoshilong
2023-05-23 1df02b011c951ed5f57e40663e014fd913cbbe20
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java
@@ -15,6 +15,7 @@
import cn.gistack.sm.patrol.util.EnhancementServicesTool;
import cn.gistack.sm.patrol.util.IdWorker;
import cn.gistack.sm.patrol.vo.BladeFlowTask;
import cn.gistack.sm.patrol.vo.PatrolTaskReport;
import cn.gistack.sm.patrol.vo.PatrolTaskVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
@@ -32,10 +33,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.net.http.HttpRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
@@ -137,8 +135,8 @@
   }
   @Override
   @Transactional
   public boolean patrolCompleteTask(PatrolTask patrolTask,String currentUserId) {
   @Transactional(rollbackFor = Exception.class)
   public boolean patrolCompleteTask(PatrolTaskVO patrolTask,String currentUserId,String taskUser) {
      R<BladeFlow> res = flowClient.getBladeFlow(patrolTask.getId().toString(),currentUserId);
      if (res.isSuccess()){
         BladeFlow flow = res.getData();
@@ -152,9 +150,10 @@
            variables = Kv.create();
         }
         variables.put(ProcessConstant.REPORT_KEY,patrolTask.getReport());
         variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, "1650048152667467777"));
         variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser));
         // 完成任务
         flowClient.completeTask(taskId,processInstanceId,comment,variables);
         patrolRecordService.saveBatch(patrolTask.getPatrolRecordList());
         saveReport(patrolTask);
         return baseMapper.updateById(patrolTask) >0;
      }else {
@@ -165,13 +164,18 @@
   @Override
   public boolean chargeCompletePerson(BladeFlowTask bladeFlowTask) {
      //判断是否上报
//      boolean isReport = false;
//      List<PatrolReport> collect = bladeFlowTask.getPatrolReportList().stream().filter(report -> Func.equals(report.getStatus(), 2)).collect(Collectors.toList());
//      if (collect.size()>0){
//         isReport = true;
//      }
//      //更新report表
//      boolean update = patrolReportService.updateBatchById(bladeFlowTask.getPatrolReportList());
      boolean isReport = false;
      List<PatrolReport> collect = bladeFlowTask.getPatrolReportList().stream().filter(report -> Func.equals(report.getStatus(), 2)).collect(Collectors.toList());
      if (collect.size()>0){
      if (StringUtil.isNoneBlank(bladeFlowTask.getTaskUser())){
         isReport = true;
      }
      //更新report表
      boolean update = patrolReportService.updateBatchById(bladeFlowTask.getPatrolReportList());
      String taskId = bladeFlowTask.getTaskId();
      String processInstanceId = bladeFlowTask.getProcessInstanceId();
@@ -191,7 +195,7 @@
      variables.put(ProcessConstant.TOTECH_KEY,bladeFlowTask.getToTech());
      //完成任务
      flowClient.completeTask(taskId, processInstanceId, comment, variables);
      return update;
      return true;
   }
   @Override
@@ -199,6 +203,48 @@
      return baseMapper.customizeGetById(businessId);
   }
   @Override
   public List<PatrolTask> getAll(PatrolTaskVO patrolTaskVO) {
      return baseMapper.getAll(patrolTaskVO);
   }
   @Override
   public IPage<PatrolTaskReport> getTaskReport(IPage<PatrolTaskReport> page,PatrolTaskReport patrolTaskReport) {
      List<PatrolTaskReport> list = new ArrayList();
      if (Func.equals(patrolTaskReport.getRegionFlag(),"0")){
         //省  返回市
         list =  baseMapper.getTaskReportProvince(page,patrolTaskReport);
      }else if (Func.equals(patrolTaskReport.getRegionFlag(),"1")){
         //市 返回区
         list = baseMapper.getTaskReportRegion(page,patrolTaskReport);
      }else if (Func.equals(patrolTaskReport.getRegionFlag(),"2")){
         //区 返回水库
         list = baseMapper.getTaskReportReservoir(page,patrolTaskReport);
      }
      return page.setRecords(list);
   }
   @Override
   public IPage<PatrolTaskReport> getTaskReportDetail(IPage<PatrolTaskReport> page, PatrolTaskReport patrolTaskReport) {
      List<PatrolTaskReport> list = new ArrayList();
      if (Func.isNotEmpty(patrolTaskReport.getReservoirId())){
         //获取该水库的巡查
         list = baseMapper.getTaskReportDetailRegion(page,patrolTaskReport);
      }else {
         String code = patrolTaskReport.getAdCode();
         if (code.substring(0,4).indexOf("00") > -1) {
            //前4位包含00 =》省
            patrolTaskReport.setAdCode(code.substring(0,2));
         } else if (code.substring(0,6).indexOf("00") > -1) {
            //前六位包含00 =》市
            patrolTaskReport.setAdCode(code.substring(0,4));
         }
         list = baseMapper.getTaskReportDetailRegion(page,patrolTaskReport);
      }
      return page.setRecords(list);
   }
   public void saveReport(PatrolTask patrolTask){
      //拿到当前任务下的异常巡查记录
      PatrolRecord patrolRecord = new PatrolRecord();