Browse Source

同步-单表同步-逻辑调整为先判断元素一致,有excelid再判断是否一致

LHB 1 tháng trước cách đây
mục cha
commit
d12f53b41d

+ 6 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -51,14 +51,17 @@ public class WbsSynchronousEViSaServiceImpl {
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void updateSyncPrivateForm(String htmlUrl, List<Long> collect, Long id) {
+    public void updateSyncPrivateForm(WbsTreePrivate wbsTreePrivate, List<Long> collect, Long id,String errorMsg) {
         wbsTreePrivateMapper.update(null, Wrappers.<WbsTreePrivate>lambdaUpdate()
-                .set(WbsTreePrivate::getHtmlUrl, htmlUrl)
+                .set(WbsTreePrivate::getHtmlUrl, wbsTreePrivate.getHtmlUrl())
+                .set(wbsTreePrivate.getExcelId()!=null,WbsTreePrivate::getIsLinkTable, 2)
+                .set(WbsTreePrivate::getExcelId, wbsTreePrivate.getExcelId())
+                .set(WbsTreePrivate::getInitTableId, wbsTreePrivate.getInitTableId())
                 .in(WbsTreePrivate::getPKeyId, collect)
         );
         synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
                 .set(WbsTreeSynchronousRecord::getStatus, 2)
-                .set(WbsTreeSynchronousRecord::getErrorMsg, null)
+                .set(WbsTreeSynchronousRecord::getErrorMsg, errorMsg)
                 .set(WbsTreeSynchronousRecord::getNodeNumEnd, 1)
                 .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
                 .eq(WbsTreeSynchronousRecord::getId, id));

+ 13 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -138,14 +138,23 @@ public class WbsSynchronousServiceImpl {
         if (CollectionUtil.isEmpty(wbsTreePrivates)) {
             throw new ServiceException("当前项目没有相同实体表的其他表单");
         }
+
+        //筛选出有excelid的数据和无excelid的数据
+        List<WbsTreePrivate> collect1 = wbsTreePrivates.stream().filter(f -> f.getExcelId() == null).collect(Collectors.toList());
+        List<WbsTreePrivate> collect2 = wbsTreePrivates.stream().filter(f -> f.getExcelId() != null).collect(Collectors.toList());
+
         //清表也相同的数据
-        List<WbsTreePrivate> collect = wbsTreePrivates.stream().filter(f ->
+        List<WbsTreePrivate> collect = collect2.stream().filter(f ->
                 Objects.equals(f.getExcelId(), wbsTreePrivate.getExcelId())
         ).collect(Collectors.toList());
+
+        if(CollectionUtil.isNotEmpty(collect1)){
+            collect.addAll(collect1);
+        }
         //清表不同的数据
         List<WbsTreePrivate> noExcelIdEq = wbsTreePrivates.stream().filter(f -> !Objects.equals(f.getExcelId(), wbsTreePrivate.getExcelId())).collect(Collectors.toList());
+        StringBuilder sb = new StringBuilder();
         if (CollectionUtil.isNotEmpty(noExcelIdEq)) {
-            StringBuilder sb = new StringBuilder();
             for (WbsTreePrivate treePrivate : noExcelIdEq) {
                 List<WbsTreePrivate> list = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, Func.toLongList(treePrivate.getAncestorsPId())));
                 List<String> nodeNames = list.stream().map(WbsTreePrivate::getNodeName).collect(Collectors.toList());
@@ -154,9 +163,10 @@ public class WbsSynchronousServiceImpl {
             }
             throw new ServiceException("清表绑定错误:" + sb);
         }
+
         List<Long> ids = collect.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
         //修改数据
-        wbsSynchronousEViSaService.updateSyncPrivateForm(wbsTreePrivate.getHtmlUrl(), ids, wbsTreeSynchronousRecord.getId());
+        wbsSynchronousEViSaService.updateSyncPrivateForm(wbsTreePrivate, ids, wbsTreeSynchronousRecord.getId(),sb.toString());
     }
 
     /**