Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

liuyc před 1 rokem
rodič
revize
405a9241d4

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -2135,7 +2135,7 @@ public class ExcelTabController extends BladeController {
                 JSONArray extra = new JSONArray();
                 for (Long pk : tableAllIds) {
                     if (!exclude.contains(pk)) {
-                        R bussDataInfo = this.excelTabService.getBussDataInfo(pk, 1);
+                        R bussDataInfo = this.excelTabService.getBussDataInfo(pk, 1,false);
                         @SuppressWarnings("unchecked")
                         Map<String, Object> jo = (Map<String, Object>) bussDataInfo.getData();
                         if (ObjectUtils.isNotEmpty(jo)) {

+ 27 - 56
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java

@@ -417,62 +417,7 @@ public class WbsParamController {
         return formula;
     }
 
-    /*private R<Object> duplicate() {删除重复节点参数配置,方法已经过时无法直接使用
-        try {
-            StopWatch stopWatch = new StopWatch();
-            stopWatch.start("节点参数查重及删除");
-            List<Map<String, Object>> mapList = this.jdbcTemplate.queryForList("select  node_id nodeId,k,count(*) num from m_wbs_param  where is_deleted=0 and type=1 GROUP BY node_id,k HAVING count(*)>1");
-            if (!mapList.isEmpty()) {
-                List<WbsParam> list = this.service.list(Wrappers.<WbsParam>lambdaQuery().in(WbsParam::getNodeId, mapList.stream().map(m -> m.get("nodeId")).collect(Collectors.toList())));
-                List<Long> removeWpIds = new ArrayList<>();
-                List<Long> removeMapingIds = new ArrayList<>();
-                List<Long> removeFormulaIds = new ArrayList<>();
-                Map<Long, Map<String, List<WbsParam>>> group = list.stream().collect(Collectors.groupingBy(WbsParam::getNodeId, LinkedHashMap::new, Collectors.groupingBy(WbsParam::getK)));
-                group.values().forEach(m -> {
-                    m.forEach((k, v) -> {
-                        List<Map<String, Object>> relationMap = this.jdbcTemplate.queryForList("select a.id paramId,b.id mappingId,b.formula_id formulaId from m_wbs_param a join m_element_formula_mapping b on a.id=b.param_id where b.scope=35 and a.id in(" + v.stream().map(WbsParam::getId).map(String::valueOf).collect(Collectors.joining("','", "'", "'")) + ") order by  b.update_time desc");
-                        if (!relationMap.isEmpty()) {
-                            Object id = relationMap.get(0).get("paramId");
-                            removeWpIds.addAll(v.stream().map(WbsParam::getId).filter(eId -> !StringUtils.isNotEquals(id, eId)).collect(Collectors.toList()));
-                            *//*同一道工序下,一个节点参数可能会关联多个元素,除了保留参数关联的以外全部添加到待删除列表*//*
-                            relationMap.stream().filter(x -> StringUtils.isNotEquals(x.get("paramId"), id)).forEach(e -> {
-                                removeMapingIds.add(Long.parseLong(e.get("mappingId").toString()));
-                                removeFormulaIds.add(Long.parseLong(e.get("formulaId").toString()));
-                            });
-                        } else {
-                            removeWpIds.addAll(v.stream().skip(1).map(WbsParam::getId).collect(Collectors.toList()));
-                        }
-                    });
-                });
-                System.out.println("查找到重复参数" + list.size() + "个");
-                System.out.println("待删除参数" + removeWpIds.size() + "个");
-                System.out.println("待删除中间关联" + removeMapingIds.size() + "个");
-                System.out.println("待删除公式" + removeFormulaIds.size() + "个");
-//                    batchDel(this.service,removeWpIds);
-//                    batchDel(this.elementFormulaMappingService,removeMapingIds);
-//                    batchDel(this.formulaService,removeFormulaIds);
-                Map<String, Integer> result = new HashMap<>();
-                result.put("查找到重复参数", list.size());
-                result.put("待删除参数", removeWpIds.size());
-                result.put("待删除中间关联", removeMapingIds.size());
-                result.put("待删除公式", removeFormulaIds.size());
-                stopWatch.stop();
-                Long totalTime = stopWatch.getTotalTimeMillis();
-                StaticLog.info("公式执行用时:{}", totalTime);
-                return R.data(result);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return R.fail("执行异常");
-    }*/
 
-    public <T> void  batchDel(BaseService<T> sv,List<Long> list){
-        if(sv!=null&&Func.isNotEmpty(list)) {
-            List<List<Long>> removeWpIdsList = BaseUtils.splitList(list, 1000);
-            removeWpIdsList.forEach(sv::deleteLogic);
-        }
-    }
 
     @GetMapping("/createFormulaForWp")
     public R<Object> createFormulaForWp() {
@@ -617,7 +562,33 @@ public class WbsParamController {
     }
 
 
-
+    @GetMapping("/remove-element-mapping")
+    public R<Object> removeMapping(){
+        long s = System.currentTimeMillis();
+        List<Map<String,Object>> listMap =this.jdbcTemplate.queryForList("select element_id elementId,param_id paramId,count(*) total,max(id) id  from m_element_formula_mapping  where is_deleted=0 and scope=35 GROUP BY element_id,param_id  HAVING count(*)>1 ORDER BY count(*) desc");
+        if(listMap.size()>0){
+            List<String> sqlList = new ArrayList<>();
+            for(Map<String,Object> map:listMap){
+                try {
+                    String sql = "update m_element_formula_mapping set is_deleted=1 ,update_time='2023-11-20 00:00:00' where element_id="+map.get("elementId")+" and param_id="+map.get("paramId")+" and id <>"+map.get("id");
+                    sqlList.add(sql);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+            List<List<String>> segmentList = BaseUtils.splitList(sqlList,250);
+            segmentList.stream().map(l->String.join(";",l)).forEach(sl->{
+                try {
+                   // System.out.println(s);
+                    this.jdbcTemplate.execute(sl);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            });
+            return R.data("处理语句"+listMap.size()+"条,耗时"+(System.currentTimeMillis()-s)+"ms");
+        }
+        return R.data("无数据");
+    }
 
 
 

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -114,7 +114,8 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
 
     // 获取用户端 单个表单接口数据
     R getBussDataInfo(Long pkeyId, int type);
-
+    // 获取用户端 单个表单接口数据
+    R getBussDataInfo(Long pkeyId, int type,Boolean isFormLoading);
     // 单个pdf 生成
     R getBussPdfInfo(Long pkeyId) throws Exception;
 

+ 7 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1233,6 +1233,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public R getBussDataInfo(Long pkeyId, int type) {
+        return this.getBussDataInfo(pkeyId,type,true);
+    }
+    @Override
+    public R getBussDataInfo(Long pkeyId, int type,Boolean isFormLoading) {
         Document document=null;
         Map<String, Object> reData = new HashMap<>();
 
@@ -1482,7 +1486,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
         reData.put("tabGroupId", wbsTreeContract.getTabGroupId());
         /*表单公式*/
-        this.formulaService.paramFormula(wbsTreeContract,reData,document);
+        if(!isFormLoading) {
+            this.formulaService.paramFormula(wbsTreeContract, reData, document);
+        }
         return R.data(reData);
     }
 

+ 12 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1165,7 +1165,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         JSONArray dataArray = new JSONArray();
         for (NodeTable data : subTabList) {
             /*自动挂载附表情况下,装配TableInfo数据*/
-            R bussDataInfo = this.excelTabService.getBussDataInfo(data.getPKeyId(), 1);
+            R bussDataInfo = this.excelTabService.getBussDataInfo(data.getPKeyId(), 1,false);
             @SuppressWarnings("unchecked")
             Map<String, Object>  data1 = (Map<String, Object>) bussDataInfo.getData();
             data1.put("pkeyId",data.getPKeyId());
@@ -1657,20 +1657,18 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public WbsTreePrivate getOriginWtp(Long pkeyId) {
         WbsTreePrivate wtp = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId,pkeyId));
         int i=10;
-        WbsTreePrivate publicWtp = null;
+        WbsTreePrivate publicWtp = wtp;
         while (i>0) {
-            WbsTreePrivate tmp=  this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, wtp.getWbsId()));
+            WbsTreePrivate tmp=  this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, publicWtp.getWbsId()));
             if (tmp == null) {
                 break;
             }
             publicWtp = tmp;
             i--;
         }
-        if(publicWtp!=null){
-            /*私有引用项目的wbsId其实是被复制的项目的根节点p_key_id,只有溯源才能找到真正的wbsId*/
-            wtp.setWbsId(publicWtp.getWbsId());
-        }
-       return wtp;
+        /*私有引用项目的wbsId其实是被复制的项目的根节点p_key_id,只有溯源才能找到真正的wbsId*/
+        wtp.setWbsId(publicWtp.getWbsId());
+        return wtp;
     }
 
     @Override
@@ -2347,9 +2345,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }else{
                 return;
             }
-            /*元素动态绑定*/
+
             Map<String,Formula> formulaIdMap = this.wpService.formulaKeyMap(total.stream().map(WbsParam::getK).collect(Collectors.toList()));
-            /*获取已配置节点公式*/
+             /*元素动态绑定  获取已配置节点公式   未查明的bug暂时关闭
             Map<Long,String> paramIdKeyMap=  total.stream().collect(Collectors.toMap(WbsParam::getId,WbsParam::getK));
             List<ElementFormulaMapping> mappingList =  this.elementFormulaMappingService.list(Wrappers.<ElementFormulaMapping>lambdaQuery().in(ElementFormulaMapping::getParamId,total.stream().map(WbsParam::getId).collect(Collectors.toList())));
             if(Func.isNotEmpty(mappingList)){
@@ -2364,11 +2362,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     });
                 });
             }
-            /*检查是否可以自动绑定参数公式*/
+
+            检查是否可以自动绑定参数公式
             List<FormData> notFormulaFds=fds.stream().filter(f->f.getFormulaId()==null).collect(Collectors.toList());
             if(notFormulaFds.size()>0){
                 notFormulaFds.forEach(e->{
-                    /*暂时用参数名称是否包含元素名称作为匹配规则*/
+                    暂时用参数名称是否包含元素名称作为匹配规则
                     total.stream().filter(p->e.getEName().contains(p.getName().replaceAll("【[\\u4E00-\\u9FFF]+】|\\s+",""))).findAny().ifPresent(d->{
                         Formula tf= formulaIdMap.get(d.getK());
                         if(tf!=null&&e.getId()!=null) {
@@ -2383,6 +2382,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     });
                 });
             }
+            */
             fds.removeIf(f->f.getFormula()==null);
             if(fds.size()>0) {
                 /*执行结果放回数据集合*/