yxm
2024-06-25 cf4b6a52e4d4ba672147a7cb4c822631e6d28aa9
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResGeneralInvestigationServiceImpl.java
@@ -1,12 +1,43 @@
package cn.gistack.sm.sjztmd.service.impl;
import cn.gistack.sm.sjztmd.util.DownloadZipUtils;
import cn.gistack.sm.sjztmd.entity.TbResGeneralInvestigation;
import cn.gistack.sm.sjztmd.entity.TbResGeneralInvestigationState;
import cn.gistack.sm.sjztmd.mapper.TbResGeneralInvestigationMapper;
import cn.gistack.sm.sjztmd.service.ITbResGeneralInvestigationService;
import cn.gistack.sm.sjztmd.service.ITbResGeneralInvestigationStateService;
import cn.gistack.sm.sjztmd.statisticsVO.StatisticsBar;
import cn.gistack.sm.sjztmd.statisticsVO.StatisticsParams;
import cn.gistack.sm.sjztmd.statisticsVO.StatisticsPie;
import cn.gistack.sm.sjztmd.statisticsVO.StatisticsTable;
import cn.gistack.sm.sjztmd.util.CalculateUtils;
import cn.gistack.sm.sjztmd.util.DownloadZipUtils;
import cn.gistack.sm.sjztmd.vo.AttResBaseGeneralInvestigationVO;
import cn.gistack.sm.sjztmd.vo.ImageAndVideoVO;
import cn.gistack.sm.sjztmd.vo.TbResGeneralInvestigationParam;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.alibaba.nacos.shaded.com.google.gson.JsonArray;
import com.alibaba.nacos.shaded.com.google.gson.JsonElement;
import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.val;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
/**
 * @PROJECT_NAME: skjcmanager
@@ -19,4 +50,162 @@
@Transactional(rollbackFor = Exception.class)
public class TbResGeneralInvestigationServiceImpl extends ServiceImpl<TbResGeneralInvestigationMapper, TbResGeneralInvestigation> implements ITbResGeneralInvestigationService {
   @Autowired
   private ITbResGeneralInvestigationStateService tbResGeneralInvestigationStateService;
   @Autowired
   private HttpServletRequest request;
   @Autowired
   private HttpServletResponse response;
   @Override
   @Transactional
   public R saveOrUpdateBy(TbResGeneralInvestigation entity) {
      QueryWrapper queryWrapper = new QueryWrapper();
      queryWrapper.eq("\"res_guid\"", entity.getResGuid());
      queryWrapper.eq("\"tb_year\"", entity.getTbYear());
//      queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter());
      TbResGeneralInvestigationState state = tbResGeneralInvestigationStateService.getOne(queryWrapper);
      if (null == state) {
         state = new TbResGeneralInvestigationState();
         state.setResGuid(entity.getResGuid());
         state.setTbQuarter(entity.getTbQuarter());
         state.setTbYear(entity.getTbYear());
         state.setCreateTime(entity.getCreateTime());
         state.setCreateUser(entity.getCreateUser());
      } else {
         if (state.getCheckState() == 1 || state.getCheckState() == 2) {
            return R.fail(entity.getResName() + "本年度已经普查完成,不能在提交了。");
         }
      }
      // 是否普查完成 1是 0否
      if (entity.getCheckState() != 0) {
         state.setCheckState(entity.getIsInvCom());
      } else {
         state.setCheckState(0);
      }
      tbResGeneralInvestigationStateService.saveOrUpdate(state);
      entity.setTbStateId(state.getGuid());
//      return R.status(this.saveOrUpdate(entity));
      this.saveOrUpdate(entity);
      return R.data(entity);
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public R saveOrUpdateByBatch(TbResGeneralInvestigationParam tbResGeneralInvestigationParam) {
      List<TbResGeneralInvestigation> list = tbResGeneralInvestigationParam.getList();
      TbResGeneralInvestigation entity = list.get(0);
      //查询该水库本年度是否有填报状态记录
      QueryWrapper queryWrapper = new QueryWrapper();
      queryWrapper.eq("\"res_guid\"", entity.getResGuid());
      queryWrapper.eq("\"tb_year\"", entity.getTbYear());
      TbResGeneralInvestigationState state = tbResGeneralInvestigationStateService.getOne(queryWrapper);
      if (null == state) {
         //无填报状态记录则新建
         state = new TbResGeneralInvestigationState();
         state.setResGuid(entity.getResGuid());
         state.setTbQuarter(entity.getTbQuarter());
         state.setTbYear(entity.getTbYear());
         state.setCreateTime(entity.getCreateTime());
         state.setCreateUser(entity.getCreateUser());
      } else {
         //查看填报状态,只有0填报中才可以一直填报
         if (state.getCheckState() == 1 || state.getCheckState() == 2) {
            return R.fail(entity.getResName() + "本年度已经普查完成,不能在提交了。");
         }
      }
      state.setCheckState(tbResGeneralInvestigationParam.getCheckState());
      tbResGeneralInvestigationStateService.saveOrUpdate(state);
//      //先把数据移除
//      QueryWrapper delete = new QueryWrapper();
//      delete.eq("\"tb_state_id\"",state.getGuid());
//      boolean remove = remove(delete);
//
//      if (remove){
//
//      }
      for (int i = 0; i < list.size(); i++) {
         TbResGeneralInvestigation tbResGeneralInvestigation = list.get(i);
         //id清空方便批量新增
//         tbResGeneralInvestigation.setGuid("");
         if (tbResGeneralInvestigation.getCreateTime() == null) {
            tbResGeneralInvestigation.setCreateTime(DateUtil.now());
         }
         if (tbResGeneralInvestigation.getCreateUser() == null) {
            tbResGeneralInvestigation.setCreateUser(AuthUtil.getUserId().toString());
         }
         //设置状态表id
         tbResGeneralInvestigation.setTbStateId(state.getGuid());
      }
      return R.status(saveOrUpdateBatch(list));
   }
   @Override
   public StatisticsPie statisticsPie(StatisticsParams statisticsParams) {
      return baseMapper.statisticsPie(statisticsParams);
   }
   @Override
   public List<StatisticsBar> statisticsBar(StatisticsParams statisticsParams) {
      List<StatisticsBar> list = baseMapper.getStatisticsBar(statisticsParams);
      return list;
   }
   @Override
   public List<StatisticsTable> statisticsTable(StatisticsParams statisticsParams) {
      List<StatisticsTable> list = baseMapper.getStatisticsTable(statisticsParams);
      list.forEach(statisticsTable -> {
         statisticsTable.setUnInvestigationResNum(statisticsTable.getResNum() - statisticsTable.getInvestigationResNum());
         statisticsTable.setUnInvestigationDykeNum(statisticsTable.getDykeNum() - statisticsTable.getInvestigationDykeNum());
      });
      return list;
   }
   @Override
   public List<String> downZip(IPage<ImageAndVideoVO> page,String type) throws IOException {
      List<String> urls = new ArrayList<>();
      List<ImageAndVideoVO> iamgeAndVideoUrls;
      if (type.equals("1")) {
         iamgeAndVideoUrls = baseMapper.getIamgeAndVideoUrl(page);
      }else {
         iamgeAndVideoUrls = baseMapper.getIamgeAndVideoUrl(null);
      }
      for (ImageAndVideoVO iamgeAndVideoUrl : iamgeAndVideoUrls) {
         urls.add(iamgeAndVideoUrl.getImagesUrl());
         urls.add(iamgeAndVideoUrl.getVideosUrl());
      }
      List<String> urlss =DownloadZipUtils.getUrls(urls);
      if (urlss.isEmpty()) {
         return null;
      }else {
         // 打印提取的URLs
//         for (String url1 : urlss) {
//            //System.out.println(url1+"ssss");
//
//            DownloadZipUtils.downloadFile(url1);
//         }
         //DownloadZipUtils.downloadZip(request, response,1);
         return urlss;
      }
   }
}