From d1081f1c022023253a9ff68c2d60a09422e7179f Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 29 Jan 2026 15:43:14 +0800
Subject: [PATCH] 数据异议优化

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/orderdata/service/impl/GdDataObjectionServiceImpl.java |   41 +++++++++++++++++++++++++++++++----------
 1 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/orderdata/service/impl/GdDataObjectionServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/orderdata/service/impl/GdDataObjectionServiceImpl.java
index 2fe0790..be2a3ac 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/orderdata/service/impl/GdDataObjectionServiceImpl.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/orderdata/service/impl/GdDataObjectionServiceImpl.java
@@ -16,27 +16,29 @@
  */
 package org.sxkj.gd.orderdata.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.sxkj.gd.orderdata.dto.GdDataObjectionDTO;
 import org.sxkj.gd.orderdata.entity.GdDataObjectionAttachmentEntity;
 import org.sxkj.gd.orderdata.entity.GdDataObjectionEntity;
+import org.sxkj.gd.orderdata.excel.GdDataObjectionExcel;
+import org.sxkj.gd.orderdata.mapper.GdDataObjectionMapper;
 import org.sxkj.gd.orderdata.param.GdDataObjectionDetailParam;
 import org.sxkj.gd.orderdata.param.GdDataObjectionPageParam;
 import org.sxkj.gd.orderdata.service.IGdDataObjectionAttachmentService;
-import org.sxkj.gd.orderdata.vo.GdDataObjectionVO;
-import org.sxkj.gd.orderdata.excel.GdDataObjectionExcel;
-import org.sxkj.gd.orderdata.mapper.GdDataObjectionMapper;
 import org.sxkj.gd.orderdata.service.IGdDataObjectionService;
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseServiceImpl;
+import org.sxkj.gd.orderdata.vo.GdDataObjectionVO;
 import org.sxkj.gd.orderdata.wrapper.GdDataObjectionWrapper;
 import org.sxkj.gd.orderdata.wrapper.GdSupplyDemandAuditAttachmentWrapper;
 import org.sxkj.system.cache.SysCache;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 数据异议申请表 服务实现类
@@ -77,11 +79,30 @@
 		boolean result = saveOrUpdate(gdDataObjectionEntity);
 		if (result) {
 			if (gdDataEvaluationDTO.getAttachmentList() != null) {
-				List<GdDataObjectionAttachmentEntity> gdDataObjectionAttachmentEntities = GdSupplyDemandAuditAttachmentWrapper.build().entityDTO(gdDataEvaluationDTO.getAttachmentList());
-				gdDataObjectionAttachmentEntities.forEach(gdDataObjectionAttachmentEntity -> {
+				List<GdDataObjectionAttachmentEntity> entityList = GdSupplyDemandAuditAttachmentWrapper.build().entityDTO(gdDataEvaluationDTO.getAttachmentList());
+
+				List<GdDataObjectionAttachmentEntity> list = gdDataObjectionAttachmentService.list(Wrappers.<GdDataObjectionAttachmentEntity>lambdaQuery()
+					.eq(GdDataObjectionAttachmentEntity::getObjectionId, gdDataObjectionEntity.getId())
+					.eq(GdDataObjectionAttachmentEntity::getIsDeleted, 0));
+
+				// 过滤出list中存在但entityList不包含的数据(根据ID进行比较)
+				List<GdDataObjectionAttachmentEntity> toDeleteList = list.stream()
+					.filter(item -> !entityList.stream()
+						.anyMatch(entityItem -> item.getId() != null && entityItem.getId() != null && item.getId().equals(entityItem.getId())))
+					.collect(Collectors.toList());
+
+				// 删除过滤出的数据
+				if (!toDeleteList.isEmpty()) {
+					List<Long> idsToDelete = toDeleteList.stream()
+						.map(GdDataObjectionAttachmentEntity::getId)
+						.collect(Collectors.toList());
+					gdDataObjectionAttachmentService.deleteLogic(idsToDelete);
+				}
+
+				entityList.forEach(gdDataObjectionAttachmentEntity -> {
 					gdDataObjectionAttachmentEntity.setObjectionId(gdDataObjectionEntity.getId());
 				});
-				return gdDataObjectionAttachmentService.saveOrUpdateBatch(gdDataObjectionAttachmentEntities);
+				return gdDataObjectionAttachmentService.saveOrUpdateBatch(entityList);
 			}
 			return true;
 		}

--
Gitblit v1.9.3