吉安感知网项目-后端
linwei
6 days ago 05fb356099b5af472ee23d9164bca61962d9c2ed
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdTaskResultServiceImpl.java
@@ -20,6 +20,7 @@
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.sxkj.gd.workorder.dto.GdTaskResultDTO;
import org.sxkj.gd.workorder.entity.GdDeviceCallDetailEntity;
import org.sxkj.gd.workorder.entity.GdDeviceCallEntity;
@@ -85,9 +86,18 @@
      return page.setRecords(baseMapper.selectGdTaskResultPage(page, gdTaskResult));
   }
   /**
    * 根据巡查任务ID查询成果列表
    *
    * @param patrolTaskId    巡查任务ID
    * @param attachmentTypes 附件类型列表(可选,为null或空时查询全部)
    * @return 成果列表
    */
   @Override
   public List<GdTaskResultVO> listByPatrolTaskId(Long patrolTaskId) {
      List<GdTaskResultVO> gdTaskResultVOS = baseMapper.selectGdTaskResultListByPatrolTaskId(patrolTaskId);
   public List<GdTaskResultVO> listByPatrolTaskId(Long patrolTaskId, List<Integer> attachmentTypes) {
      // 步骤1:查询成果列表
      List<GdTaskResultVO> gdTaskResultVOS = baseMapper.selectGdTaskResultListByPatrolTaskId(patrolTaskId, attachmentTypes);
      // 步骤2:处理URL转义字符
      for (GdTaskResultVO gdTaskResultVO : gdTaskResultVOS) {
         gdTaskResultVO.setResultUrl(unescapeUrl(gdTaskResultVO.getResultUrl()));
      }
@@ -138,6 +148,47 @@
    * 保存普通成果数据(dateType != 4)
    *
    * @param gdTaskResults 成果DTO列表
    * @return 保存成功后的成果ID列表
    */
   @Override
   public List<Long> batchSaveWithIds(List<GdTaskResultDTO> gdTaskResults) {
      // 步骤1:转换DTO为实体
      List<GdTaskResultEntity> gdTaskResultEntities = GdTaskResultWrapper.build().listEntity(gdTaskResults);
      // 步骤2:处理每个实体的属性
      gdTaskResultEntities.forEach(gdTaskResult -> {
         String processedAreaCode = HeaderUtils.processAreaCode(gdTaskResult.getAreaCode());
         gdTaskResult.setAreaCode(processedAreaCode);
         // 如果resultCode为空,生成时间戳作为默认值
         if (StringUtil.isEmpty(gdTaskResult.getResultCode())) {
            gdTaskResult.setResultCode(String.valueOf(System.currentTimeMillis()));
         }
         if (gdTaskResult.getShootTime() == null) {
            gdTaskResult.setShootTime(new Date());
         }
         gdTaskResult.setStatus(0);
         gdTaskResult.setUpdateTime(new Date());
         gdTaskResult.setCreateTime(new Date());
         gdTaskResult.setIsDeleted(0);
         gdTaskResult.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
         gdTaskResult.setUpdateUser(AuthUtil.getUserId());
         gdTaskResult.setDistributeStatus(0);
      });
      // 步骤3:批量插入数据
      int insertCount = baseMapper.insertBatch(gdTaskResultEntities);
      // 步骤4:收集并返回保存后的ID列表
      return gdTaskResultEntities.stream()
            .map(GdTaskResultEntity::getId)
            .filter(Objects::nonNull)
            .collect(Collectors.toList());
   }
   /**
    * 保存普通成果数据(dateType != 4)
    *
    * @param gdTaskResults 成果DTO列表
    */
   private void saveNormalTaskResults(List<GdTaskResultDTO> gdTaskResults) {
      List<GdTaskResultEntity> gdTaskResultEntities = GdTaskResultWrapper.build().listEntity(gdTaskResults);