Browse Source

计量重新计算支付项重复

cr 14 hours ago
parent
commit
b70c9422cc

+ 19 - 6
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateItemServiceImpl.java

@@ -18,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
 
 /**
  * @author yangyj
@@ -127,13 +129,24 @@ public class InterimPayCertificateItemServiceImpl extends BaseServiceImpl<Interi
 
     @Override
     public void saveOrUpdateBatchList(List<InterimPayCertificateItem> items,Long reportId) {
-        List<InterimPayCertificateItem> list = baseMapper.selectList(new QueryWrapper<InterimPayCertificateItem>().eq("certificate_id", reportId).ne("chapter_seq","施工单位送审金额"));
-        if(list.size()>0){
-            for (InterimPayCertificateItem item : items) {
-                baseMapper.updateById(item);
+        if(!items.isEmpty()){
+            items = items.stream()
+                    .collect(Collectors.toMap(
+                            item -> item.getChapterSeq() == null ? UUID.randomUUID().toString() : item.getChapterSeq(),
+                            item -> item,
+                            (existing, replacement) -> existing
+                    ))
+                    .values()
+                    .stream()
+                    .collect(Collectors.toList());
+            List<InterimPayCertificateItem> list = baseMapper.selectList(new QueryWrapper<InterimPayCertificateItem>().eq("certificate_id", reportId).ne("chapter_seq","施工单位送审金额"));
+            if(list.size()>0){
+                for (InterimPayCertificateItem item : items) {
+                    baseMapper.updateById(item);
+                }
+            }else {
+                saveBatch(items);
             }
-        }else {
-            saveBatch(items);
         }
     }