燕山石化溯源三维电子沙盘-【后端】-服务
1
13693261870
2023-06-16 5b17ccbbe08971f861ff097c62241d2b79e4b5f6
src/main/java/com/yssh/service/impl/SuYuanServiceImpl.java
@@ -1,17 +1,15 @@
package com.yssh.service.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import com.yssh.dao.QxshMapper;
import com.yssh.entity.*;
import com.yssh.utils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -19,58 +17,62 @@
import com.yssh.dao.DictRecordMapper;
import com.yssh.dao.FeedbackMapper;
import com.yssh.dao.SuYuanMapper;
import com.yssh.entity.DictRecord;
import com.yssh.entity.DistanceSuYuan;
import com.yssh.entity.FeedbackDetail;
import com.yssh.entity.MonitorPointPosition;
import com.yssh.entity.SuYuan;
import com.yssh.entity.SuYuan2d;
import com.yssh.entity.SuYuan3d;
import com.yssh.entity.SuYuanMonitorData;
import com.yssh.service.IAsyncService;
import com.yssh.service.ICommonService;
import com.yssh.service.ISuYuanService;
import com.yssh.utils.CalculateUtils;
import com.yssh.utils.DateUtils;
import com.yssh.utils.StringUtils;
import com.yssh.utils.TableStrategy;
import javax.annotation.Resource;
@Service
public class SuYuanServiceImpl implements ISuYuanService {
   protected final Logger logger = LoggerFactory.getLogger(this.getClass());
   @Autowired
   @Resource
   private SuYuanMapper suYuanMapper;
   @Autowired
   private  IAsyncService asyncService;
   @Autowired
   @Resource
   private IAsyncService asyncService;
   @Resource
   private DictRecordMapper dictRecordMapper;
   @Autowired
   @Resource
   private ICommonService commonService;
   @Autowired
   @Resource
   private FeedbackMapper feedbackMapper;
   @Resource
   private QxshMapper qxshMapper;
   private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHH");
   //@Transactional
   @Override
   //@Override
   @Async("threadPoolTaskExecutor")
   public void insertSuYuanDatas(List<SuYuan> lists, String time) throws Exception{
   public void insertSuYuanDatasAsync(List<SuYuan> lists, String time) throws Exception {
      //插入数据
      List<List<SuYuan>> list = Lists.partition(lists, IAsyncService.BATCH_INSERT_NUMBER);
      CountDownLatch countDownLatch = new CountDownLatch(list.size());
      for (List<SuYuan> corpReserveList : list) {
         asyncService.executeAsync(TableStrategy.getTableStrategy(time), corpReserveList, suYuanMapper, countDownLatch);
      }
      countDownLatch.await();
      countDownLatch.await();
      logger.info(lists.size() + "条数据入库完成-----");
   }
   @Override
   public Integer isTableExists(String tableName){
   public void insertSuYuanDatas(List<SuYuan> lists, String time) {
      List<List<SuYuan>> subLists = Lists.partition(lists, IAsyncService.BATCH_INSERT_NUMBER);
      for (List<SuYuan> sub : subLists) {
         suYuanMapper.batchInsert(TableStrategy.getTableStrategy(time), sub);
      }
      logger.info("------ " + time + ".csv," + lists.size() + " 条数据已入库 ------");
   }
   @Override
   public Integer isTableExists(String tableName) {
      return suYuanMapper.isTableExists(tableName);
   }
@@ -122,11 +124,15 @@
      }
      List<DistanceSuYuan> list = suYuanMapper.getDistanceSuYuan(dictRecord.getTableName(), ids3d);
      AtomicInteger i = new AtomicInteger(0);
      list.stream().forEach(s->{s.setName(checkPoint.getName());i.getAndIncrement();s.setVocsName(checkPoint.getName()+ "-" + i.longValue());});
      list.stream().forEach(s -> {
         s.setName(checkPoint.getName());
         i.getAndIncrement();
         s.setVocsName(checkPoint.getName() + "-" + i.longValue());
      });
      if (StringUtils.isNotEmpty(list)) {
         Collections.sort(list);
         DistanceSuYuan max = list.get(0);
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
               max.getName(), max.getId(), max.getVocsName(), max.getVocsValue(), null, null, null, DateUtils.getNowDate());
         feedbackMapper.insert(feedbackDetail);
         result.put("feedbackId", feedbackDetail.getId());
@@ -151,11 +157,15 @@
      }
      List<DistanceSuYuan> list = suYuanMapper.getDistanceSuYuan(dictRecord.getTableName(), ids3d);
      AtomicInteger i = new AtomicInteger(0);
      list.stream().forEach(s->{s.setName(checkPoint.getName());i.getAndIncrement();s.setVocsName(checkPoint.getName()+ "-" + i.longValue());});
      list.stream().forEach(s -> {
         s.setName(checkPoint.getName());
         i.getAndIncrement();
         s.setVocsName(checkPoint.getName() + "-" + i.longValue());
      });
      if (StringUtils.isNotEmpty(list)) {
         Collections.sort(list);
         DistanceSuYuan max = list.get(0);
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
               max.getName(), max.getId(), max.getVocsName(), max.getVocsValue(), null, null, null, DateUtils.getNowDate());
         feedbackMapper.insert(feedbackDetail);
         result.put("feedbackId", feedbackDetail.getId());
@@ -163,7 +173,7 @@
      result.put("data", list);
      return result;
   }
   @Override
   public Map<String, Object> selectSuYuan300(String name, Date date) {
      Map<String, Object> result = new HashMap<String, Object>();
@@ -180,11 +190,15 @@
      }
      List<DistanceSuYuan> list = suYuanMapper.getDistanceSuYuan(dictRecord.getTableName(), ids3d);
      AtomicInteger i = new AtomicInteger(0);
      list.stream().forEach(s->{s.setName(checkPoint.getName());i.getAndIncrement();s.setVocsName(checkPoint.getName()+ "-" + i.longValue());});
      list.stream().forEach(s -> {
         s.setName(checkPoint.getName());
         i.getAndIncrement();
         s.setVocsName(checkPoint.getName() + "-" + i.longValue());
      });
      if (StringUtils.isNotEmpty(list)) {
         Collections.sort(list);
         DistanceSuYuan max = list.get(0);
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
               max.getName(), max.getId(), max.getVocsName(), max.getVocsValue(), null, null, null, DateUtils.getNowDate());
         feedbackMapper.insert(feedbackDetail);
         result.put("feedbackId", feedbackDetail.getId());
@@ -192,7 +206,7 @@
      result.put("data", list);
      return result;
   }
   @Override
   public Map<String, Object> selectSuYuan500(String name, Date date) {
      Map<String, Object> result = new HashMap<String, Object>();
@@ -209,11 +223,15 @@
      }
      List<DistanceSuYuan> list = suYuanMapper.getDistanceSuYuan(dictRecord.getTableName(), ids3d);
      AtomicInteger i = new AtomicInteger(0);
      list.stream().forEach(s->{s.setName(checkPoint.getName());i.getAndIncrement();s.setVocsName(checkPoint.getName()+ "-" + i.longValue());});
      list.stream().forEach(s -> {
         s.setName(checkPoint.getName());
         i.getAndIncrement();
         s.setVocsName(checkPoint.getName() + "-" + i.longValue());
      });
      if (StringUtils.isNotEmpty(list)) {
         Collections.sort(list);
         DistanceSuYuan max = list.get(0);
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
         FeedbackDetail feedbackDetail = new FeedbackDetail(null, dictRecord.getTableName(),
               max.getName(), max.getId(), max.getVocsName(), max.getVocsValue(), null, null, null, DateUtils.getNowDate());
         feedbackMapper.insert(feedbackDetail);
         result.put("feedbackId", feedbackDetail.getId());
@@ -228,10 +246,44 @@
      if (StringUtils.isNull(checkPoint)) {
         return null;
      }
      List<DictRecord> recordList = dictRecordMapper.selectDictRecordList(new DictRecord());
      /*List<DictRecord> recordList = dictRecordMapper.selectDictRecordList(new DictRecord());
      List<String> tableNames = new ArrayList<String>();
      recordList.stream().forEach(s -> {tableNames.add(s.getTableName());});
      return suYuanMapper.getMonitorData(tableNames, checkPoint.getX() + "_" + checkPoint.getY() + "_" + checkPoint.getZ());
      for (DictRecord dr : recordList) {
         if (suYuanMapper.isTableExists(dr.getTableName()) > 0) {
            tableNames.add(dr.getTableName());
         }
      }
      return suYuanMapper.getMonitorData(tableNames, checkPoint.getX() + "_" + checkPoint.getY() + "_" + checkPoint.getZ());*/
      Calendar calendar = Calendar.getInstance();
      calendar.set(Calendar.HOUR_OF_DAY, 23);
      String end = dateFormat.format(calendar.getTime());
      calendar.set(Calendar.HOUR_OF_DAY, 0);
      calendar.add(Calendar.DATE, -7);
      String start = dateFormat.format(calendar.getTime());
      return suYuanMapper.getNewMonitorData(checkPoint.getName(), start, end);
   }
   @Override
   public int updateVocsName(Date date, String id, String vocsName) {
      String table = "su_yuan_" + dateFormat.format(date); // new Date()
      if (isTableExists(table) == 0) {
         return 0;
      }
      //return suYuanMapper.updateVocsName(table, id, vocsName);
      return 1;
   }
   @Override
   public List<Qxsh> queryQxsh(Date date) {
      String time = dateFormat.format(date);
      return qxshMapper.selectByTime(time);
   }
}