Kaynağa Gözat

解决后管同步表单排序错误的问题

lvy 1 gün önce
ebeveyn
işleme
a9d0b17662

+ 2 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -183,9 +183,7 @@ public class WbsSynchronousEViSaServiceImpl {
                     .eq(WbsTreeContract::getPId, pId)
                     .eq(WbsTreeContract::getIsDeleted, 0)
                     .notIn(WbsTreeContract::getPKeyId, pKeyIds)
-//                    .orderByAsc(WbsTreeContract::getSort));
-                    // 确保顺序与 blade-manager/wbsPrivate/get-group-node-tables 查询接口一致
-                    .last(" order by sort, ifnull(if(length(trim(full_name)) > 0, full_name, node_name), node_name)"));
+                    .orderByAsc(WbsTreeContract::getSort));
             if (CollectionUtil.isNotEmpty(resourceData)) {
                 for (int i = 0; i < resourceData.size(); i++) {
                     resourceData.get(i).setSort(i + 1);
@@ -212,9 +210,7 @@ public class WbsSynchronousEViSaServiceImpl {
                     .select(WbsTreeContract::getPKeyId, WbsTreeContract::getSort)
                     .eq(WbsTreeContract::getPId, pId)
                     .eq(WbsTreeContract::getIsDeleted, 0)
-//                    .orderByAsc(WbsTreeContract::getSort));
-                    // 确保顺序与 blade-manager/wbsPrivate/get-group-node-tables 查询接口一致
-                    .last(" order by sort, ifnull(if(length(trim(full_name)) > 0, full_name, node_name), node_name)"));
+                    .orderByAsc(WbsTreeContract::getSort));
             if (CollectionUtil.isNotEmpty(resourceData)) {
                 for (int i = 0; i < resourceData.size(); i++) {
                     resourceData.get(i).setSort(i + 1);
@@ -222,7 +218,6 @@ public class WbsSynchronousEViSaServiceImpl {
                 //修改排序为连续排序
                 wbsTreeContractMapper.updateSortBatchByPKeyId(resourceData);
             }
-            wbsTreeContractMapper.update(null, Wrappers.<WbsTreeContract>lambdaUpdate().eq(WbsTreeContract::getPKeyId, pId).set(WbsTreeContract::getIsUseSort, 1));
         }
 
         //处理html 复制之后记录在新表中w

+ 15 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -677,6 +677,18 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         if(!resultTabs.isEmpty()){
            StringBuilder ids=new StringBuilder("");
             List<Integer>sorts1=new ArrayList<>();
+            Map<Long, Integer> sortMap;
+            String idsStr = resultTabs.stream().map(AppWbsTreeContractVO::getIsTypePrivatePid).filter(Objects::nonNull).map(id -> id + "").collect(Collectors.joining(","));
+            if (!idsStr.isEmpty()) {
+                List<WbsTreePrivate> query = jdbcTemplate.query("select p_key_id, ifnull(sort, 1000) as sort from m_wbs_tree_private where is_deleted = 0 and p_key_id in (" + idsStr + ") order by sort, full_name",
+                        new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+                for (int i = 0; i < query.size(); i++) {
+                    query.get(i).setSort(i);
+                }
+                sortMap = query.stream().collect(Collectors.toMap(WbsTreePrivate::getPKeyId, WbsTreePrivate::getSort));
+            } else {
+                sortMap = new HashMap<>();
+            }
             for (AppWbsTreeContractVO resultTab : resultTabs) {
                 if(resultTab.getExcelId()==null){
                     continue;
@@ -690,8 +702,9 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 if(resultTab.getIsTypePrivatePid()!=null){
                     Integer sort=1000;
                     try{
-                        String sql="select IFNULL(sort,1000) from m_wbs_tree_private where p_key_id="+resultTab.getIsTypePrivatePid()+" and is_deleted=0";
-                        sort= jdbcTemplate.queryForObject(sql,Integer.class);
+//                        String sql="select IFNULL(sort,1000) from m_wbs_tree_private where p_key_id="+resultTab.getIsTypePrivatePid()+" and is_deleted=0";
+//                        sort= jdbcTemplate.queryForObject(sql,Integer.class);
+                        sort = sortMap.get(resultTab.getIsTypePrivatePid());
                     }catch (Exception e){
                         System.out.println("未找到p_key_id"+resultTab.getIsTypePrivatePid()+"的数据");
                     }