Переглянути джерело

表单相关:汇总公式优化\参数公式异常

yangyj 2 роки тому
батько
коміт
c893197f78

+ 6 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java

@@ -48,10 +48,12 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
         *  2)右键随机值融入说明:参数名RG 每个元素可以进行若干次右键,每次右键只要范围不跟已知的冲突就会保留,但这并不一定和表单最后保存的内容100%一样
         * 如果要计算合格率或者模仿数据需要结合实际内容
         * */
+        long start = System.currentTimeMillis();
         if (StringUtils.isNotEmpty(contractId, parentId, pkeyId, key)) {
             WbsTreeContract wbc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, pkeyId));
-            FormulaOption fo = this.getOne(Wrappers.<FormulaOption>lambdaQuery().eq(FormulaOption::getParentId, parentId).eq(FormulaOption::getContractId, contractId));
-            if (fo != null && wbc != null) {
+            WbsTreeContract parent = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId, wbc.getParentId()).eq(WbsTreeContract::getContractId, wbc.getContractId()));
+            FormulaOption fo =this.getById(parent.getPKeyId());
+            if (fo != null) {
                 JSONObject jo = JSON.parseObject(fo.getVal());
                 if (jo.containsKey(wbc.getInitTableName())) {
                     JSONObject tableJson = jo.getJSONObject(wbc.getInitTableName());
@@ -61,6 +63,7 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
                             JSONObject excel = tableJson.getJSONObject(cellKey);
                             if (excel.containsKey("TF")) {
                                 /*暂时只有TF:是或否*/
+                                System.out.println(this.getClass()+"参数查询耗时:"+(System.currentTimeMillis()-start)+"ms");
                                 return excel.getString("TF");
                             }
                         }
@@ -69,6 +72,7 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
                             JSONObject excel = tableJson.getJSONObject(key);
                             if (excel.containsKey("TF")) {
                                 /*暂时只有TF:是或否*/
+                                System.out.println(this.getClass()+"参数查询耗时:"+(System.currentTimeMillis()-start)+"ms");
                                 return excel.getString("TF");
                             }
                         }

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

@@ -1008,6 +1008,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     /*执行公式*/
                     Object data = Expression.parse(e.getFormula().getFormula()).calculate(tec.constantMap);
                     if(data!=null){
+                        e.getFormula().setOutm(1);
                         FormulaUtils.write(e,data,false);
                         e.setUpdate(1);
                     }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -249,6 +249,11 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
         Map<String,Long> fkMap= formulaIdKeyMap(ks);
         if(fkMap.size()>0) {
            List<Formula> list =  this.formulaService.listByIds(fkMap.values());
+           if(list.size()<fkMap.size()){
+               /*this.formulaService.update(Wrappers.<Formula>lambdaUpdate().set(Formula::getIsDeleted,0).eq(Formula::getIsDeleted,1).in(Formula::getId,fkMap.values()));*/
+               this.jdbcTemplate.execute("update m_formula set is_deleted = 0 where is_deleted = 1 and id in ("+fkMap.values().stream().map(Object::toString).collect(Collectors.joining(","))+")");
+               list =  this.formulaService.listByIds(fkMap.values());
+           }
            Map<Long,Formula> idMap=list.stream().collect(Collectors.toMap(BaseEntity::getId, f->f));
            fkMap.forEach((k,v)->{
                result.put(k,idMap.get(v));