zhongrj
2023-08-22 5a3ad0aa9e5605d6ace8bda6acbb0642005bd24d
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResBaseServiceImpl.java
@@ -1,6 +1,8 @@
package cn.gistack.sm.sjztmd.service.impl;
import cn.gistack.common.config.MyThreadPoolConfig;
import cn.gistack.sm.feedback.service.IFeedbackService;
import cn.gistack.sm.intelligentCall.vo.CallTaskStatistic;
import cn.gistack.sm.sjztmd.entity.TbAttResBase;
import cn.gistack.sm.sjztmd.mapper.TbAttResBaseMapper;
import cn.gistack.sm.sjztmd.service.ITbAttResBaseService;
@@ -12,7 +14,10 @@
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
/**
 * @ClassName AttResBaseServiceImpl
@@ -27,6 +32,9 @@
   @Autowired
   private IUserClient userClient;
   @Autowired
   private MyThreadPoolConfig myThreadPoolConfig;
   /**
    * 查询水库填报详情信息
@@ -191,4 +199,105 @@
         newTbAttResBase.setLog(stringBuilder.toString());
      }
   }
   /**
    * 查询所有水库填报的状态信息
    * @param resGuid
    * @return
    */
   @Override
   public List<Map<String, Object>> getAllWaterFillInfoByResGuid(String resGuid) {
      List<Map<String, Object>> list = new ArrayList<>();
      ThreadPoolExecutor executor = myThreadPoolConfig.threadPoolExecutor();
      // 查询水库基础填报数据
      CompletableFuture<List<Map<String,Object>>> tbAttResBaseInfo = getTbAttResBaseInfo("tb_att_res_base",resGuid, executor);
      // 查询水库其他填报数据
      CompletableFuture<List<Map<String,Object>>> tbAttResBuildInfo = getTbInfo("tb_att_res_build_info",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResEngBene = getTbInfo("tb_att_res_eng_bene",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResInfomationProject = getTbInfo("tb_att_res_infomation_project",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResMgrSysB = getTbInfo("tb_att_res_mgr_sys_b",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResPowerStation = getTbInfo("tb_att_res_power_station",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResProjectUtilize = getTbInfo("tb_att_res_project_utilize",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResRsbNorspi = getTbInfo("tb_att_res_rsb_norspi",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResRsbSpillway = getTbInfo("tb_att_res_rsb_spillway",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResRsbVerspi = getTbInfo("tb_att_res_rsb_verspi",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResSafetyMonitor = getTbInfo("tb_att_res_safety_monitor",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResStagChar = getTbInfo("tb_att_res_stag_char",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResWaterBlock = getTbInfo("tb_att_res_water_block",resGuid,executor);
      CompletableFuture<List<Map<String,Object>>> tbAttResWaterDelivery = getTbInfo("tb_att_res_water_delivery",resGuid,executor);
      //等待所有任务执行完成
      try {
         CompletableFuture.allOf(
            tbAttResBaseInfo,
            tbAttResBuildInfo,
            tbAttResEngBene,
            tbAttResInfomationProject,
            tbAttResMgrSysB,
            tbAttResPowerStation,
            tbAttResProjectUtilize,
            tbAttResRsbNorspi,
            tbAttResRsbSpillway,
            tbAttResRsbVerspi,
            tbAttResSafetyMonitor,
            tbAttResStagChar,
            tbAttResWaterBlock,
            tbAttResWaterDelivery).get();
         // 数据处理
         list.addAll(tbAttResBaseInfo.get());
         list.addAll(tbAttResBuildInfo.get());
         list.addAll(tbAttResEngBene.get());
         list.addAll(tbAttResInfomationProject.get());
         list.addAll(tbAttResMgrSysB.get());
         list.addAll(tbAttResPowerStation.get());
         list.addAll(tbAttResProjectUtilize.get());
         list.addAll(tbAttResRsbNorspi.get());
         list.addAll(tbAttResRsbSpillway.get());
         list.addAll(tbAttResRsbVerspi.get());
         list.addAll(tbAttResSafetyMonitor.get());
         list.addAll(tbAttResStagChar.get());
         list.addAll(tbAttResWaterBlock.get());
         list.addAll(tbAttResWaterDelivery.get());
      } catch (InterruptedException e) {
         e.printStackTrace();
      } catch (ExecutionException e) {
         e.printStackTrace();
      }
      // 返回
      return list;
   }
   /**
    * 查询水库基础填报数据
    * @param tableName
    * @param resGuid
    * @param executor
    * @return
    */
   private CompletableFuture<List<Map<String,Object>>> getTbAttResBaseInfo(String tableName,String resGuid,ThreadPoolExecutor executor){
      return CompletableFuture.supplyAsync(()->{
         // 查询所有水库填报的状态信息
         return baseMapper.getTbAttResBaseInfo(resGuid,tableName);
      },executor);
   }
   /**
    * 查询水库其他填报数据
    * @param tableName
    * @param resGuid
    * @param executor
    * @return
    */
   private CompletableFuture<List<Map<String,Object>>> getTbInfo(String tableName,String resGuid,ThreadPoolExecutor executor){
      return CompletableFuture.supplyAsync(()->{
         // 查询所有水库填报的状态信息
         List<Map<String, Object>> tbInfo = baseMapper.getTbInfo(resGuid, tableName);
         if (tbInfo.size()==0){
            Map<String, Object> map = new HashMap<>(2);
            map.put("NAME",tableName);
            map.put("VALUE",-1);
            tbInfo.add(map);
         }
         return tbInfo;
      },executor);
   }
}