Bladeren bron

Merge remote-tracking branch 'origin/master'

liuyc 2 jaren geleden
bovenliggende
commit
0845be47d2

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

@@ -22,9 +22,11 @@ import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.*;
 import org.springblade.manager.entity.ElementFormulaMapping;
 import org.springblade.manager.entity.Formula;
+import org.springblade.manager.entity.TextdictInfo;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.service.IElementFormulaMappingService;
 import org.springblade.manager.service.IExcelTabService;
+import org.springblade.manager.service.ITextdictInfoService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.service.impl.FormulaServiceImpl;
 import org.springblade.manager.wrapper.FormulaWrapper;
@@ -53,7 +55,7 @@ public class FormulaController {
     private final IExcelTabService tabService;
     private final IElementFormulaMappingService elementFormulaMappingService;
     private final JdbcTemplate jdbcTemplate;
-    private final IWbsTreeService wbsTreeService;
+    private final ITextdictInfoService textdictInfoService;
     /**
      * 新增或修改
      */
@@ -242,6 +244,17 @@ public class FormulaController {
                     }
                 }
             }
+            /*保存实测值参数*/
+            TextdictInfo ti =  this.textdictInfoService.getOne(Wrappers.<TextdictInfo>lambdaQuery().eq(TextdictInfo::getType,8).eq(TextdictInfo::getTabId,info.getPkId()).eq(TextdictInfo::getColKey,info.getKey()));
+            if(ti==null){
+                ti= new TextdictInfo();
+            }
+            ti.setTabId(Func.toStr(info.getPkId()));
+            ti.setType(8);
+            ti.setName("公式参数");
+            ti.setColKey(info.getKey());
+            ti.setColName(JSON.toJSONString(info));
+            this.textdictInfoService.saveOrUpdate(ti);
             return R.data(result);
         }
         return R.fail("无数据");

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

@@ -196,7 +196,7 @@ public class WbsTreeController extends BladeController {
     public R<List<WbsFormElementVO>> selectFormElements(@RequestParam("id") String id,Long nodeId) {
         List<WbsFormElementVO> wbsFormElements = null;
         if (StringUtils.isNotEmpty(id)) {
-            wbsFormElements = wbsTreeService.selectFormElements(id);
+            wbsFormElements = wbsTreeService.selectFormElements(id,nodeId);
             if (wbsFormElements.size() > 0) {
                 return R.data(wbsFormElements);
             }

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -96,8 +96,8 @@ public class TableElementConverter implements ITableElementConverter {
                 KeyMapper one = kms.get(0);
                 Formula formula =formulaMap.get(one.getFormulaId());
                 /*过滤掉本节点的前缀信息*/
-                String sf= formula.getFormula().replace(this.wbsTreeId+StringPool.COLON,StringPool.EMPTY);
-                formula.setFormula(sf);
+//                String sf= formula.getFormula().replace(this.wbsTreeId+StringPool.COLON,StringPool.EMPTY);
+//                formula.setFormula(sf);
                 relyParse(formula);
                 FormData fd=new FormData(codeAndId[0],new ArrayList<>(),formula,this.coordinateMap.get(one.getTableName()).get(one.getField()));
                 /*初始化元素数据集*/

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -378,6 +378,7 @@
     </select>
     <select id="selectFormElements" resultMap="wbsFormElementMap">
         select f_id,e_key,a.id,e_name,e_type,e_length,e_allow_deviation,e_Inspection_method,CONCAT(b.parent_id,':',b.init_table_name,':',e_key) as tableElementKey,init_table_name as initTableName,
+        select   f_id as fId,e_key,a.id,e_name,e_type,e_length,e_allow_deviation,e_Inspection_method,CONCAT(b.init_table_name,':',e_key) as tableElementKey,init_table_name as initTableName,
                b.parent_id as nodeId
         from m_wbs_form_element a inner join m_wbs_tree b on a.f_id=b.init_table_id
         where b.id=#{id} and a.is_deleted=0

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

@@ -33,7 +33,7 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     boolean removeTableById(String id);
 
-    List<WbsFormElementVO> selectFormElements(String id);
+    List<WbsFormElementVO> selectFormElements(String id,Long nodeId);
     // 项目级
     List<WbsFormElementVO> selectPrivateFormElements(String id);
 

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

@@ -132,25 +132,26 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                Matcher matcher=P2.matcher(fd.getFormula().getFormula());
                while (matcher.find()){
                    String[] arr = matcher.group().split(StringPool.COLON);
-                   List<WbsTreeContract> targets=this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getContractId,info.getId()).eq(WbsTreeContract::getId,Long.parseLong(arr[0])));
-                   /*暂时先只取第一个满足条件的*/
-                   if(Func.isNotEmpty(targets)){
-                       WbsTreeContract cross = targets.get(0);
-                       Map<String,Object> dataMap= this.env.crossDataMap.computeIfAbsent(cross.getPKeyId(),(k)->this.jdbcTemplate.queryForMap("select * from " + arr[1] + " where p_key_id=" + k));
-                       if(dataMap.size()>0){
-                           String v= StringUtils.handleNull(dataMap.get(arr[2]));
-                           if(StringUtils.isNotEmpty(v)){
-                               crossNodeFd.add(new FormData(matcher.group(), Arrays.stream(v.split("☆")).map(s->{
-                                   String[] t = s.split("_\\^_");
-                                   String[] c =t[1].split("_");
-                                   return  new ElementData(0,0,t[0],Func.toInt(c[1]),Func.toInt(c[0]));
-                               }).collect(Collectors.toList()), null,StringPool.EMPTY));
-                           }else{
-                               crossNodeFd.add(new FormData(matcher.group(),new ArrayList<>(),null,StringPool.EMPTY));
+                   if(arr.length>=3){
+                       List<WbsTreeContract> targets=this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getContractId,info.getId()).eq(WbsTreeContract::getId,Long.parseLong(arr[0])));
+                       /*暂时先只取第一个满足条件的*/
+                       if(Func.isNotEmpty(targets)){
+                           WbsTreeContract cross = targets.get(0);
+                           Map<String,Object> dataMap= this.env.crossDataMap.computeIfAbsent(cross.getPKeyId(),(k)->this.jdbcTemplate.queryForMap("select * from " + arr[1] + " where p_key_id=" + k));
+                           if(dataMap.size()>0){
+                               String v= StringUtils.handleNull(dataMap.get(arr[2]));
+                               if(StringUtils.isNotEmpty(v)){
+                                   crossNodeFd.add(new FormData(matcher.group(), Arrays.stream(v.split("☆")).map(s->{
+                                       String[] t = s.split("_\\^_");
+                                       String[] c =t[1].split("_");
+                                       return  new ElementData(0,0,t[0],Func.toInt(c[1]),Func.toInt(c[0]));
+                                   }).collect(Collectors.toList()), null,StringPool.EMPTY));
+                               }else{
+                                   crossNodeFd.add(new FormData(matcher.group(),new ArrayList<>(),null,StringPool.EMPTY));
+                               }
                            }
                        }
                    }
-
                }
             }
         });
@@ -254,8 +255,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                    List<WbsTreeContract> tableList= (List<WbsTreeContract>) this.env.getConstantMap().get(TABLE_LIST);
                    Optional<WbsTreeContract> wop=tableList.stream().filter(e->e.getTableType()==1||e.getTableType()==4).findAny();
                    if(wop.isPresent()){
-                      this.jdbcTemplate.queryForList("select *" +
-                              " from m_wbs_form_element");
+                      this.jdbcTemplate.queryForList("select c.e_name name ,c.init_table_name tableName,c.e_key ekey from m_wbs_tree_contract a INNER JOIN m_wbs_tree b on (a.id=b.id or a.old_id=b.id) INNER join m_wbs_form_element c on b.init_table_id=c.f_id where a.id={}  \n");
                    }
                 }
                 fd.getFormula().setFormula(tmp);
@@ -387,12 +387,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
     @Override
     public List<KeyMapper> getKeyMapperList(List<Long> ids) {
-        List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList("select b.init_table_name as tableName,c.p_key_id as pkId ,a.e_key as field,a.id  as fieldId,d.scope,d.formula_id as formulaId " +
-                "from m_wbs_form_element a " +
-                "INNER JOIN m_wbs_tree b on a.f_id=b.init_table_id " +
-                "INNER JOIN m_wbs_tree_contract c on (c.old_id=b.id or c.id=b.id) " +
-                "INNER JOIN m_element_formula_mapping d on a.id=d.element_id  " +
-                "where c.p_key_id in("+ids.stream().map(String::valueOf).collect(Collectors.joining(","))+") " +
+        List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList("select b.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,a.id  as fieldId,d.scope,d.formula_id as formulaId " +
+                "from m_wbs_tree_contract a " +
+                "INNER JOIN m_wbs_tree b on (a.old_id=b.id or a.id=b.id)  " +
+                "INNER JOIN m_wbs_form_element c on  c.f_id=b.init_table_id " +
+                "INNER JOIN m_element_formula_mapping d on c.id=d.element_id  " +
+                "where a.p_key_id in("+ids.stream().map(String::valueOf).collect(Collectors.joining(","))+") " +
                 "ORDER BY b.init_table_name,d.scope");
         if(Func.isNotEmpty(listMap)){
             Map<Long,List<KeyMapper>> groupList= listMap.stream().map(m->BeanUtil.toBean(m, KeyMapper.class)).collect(Collectors.groupingBy(KeyMapper::getFormulaId,LinkedHashMap::new,Collectors.toList()));

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -308,7 +308,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public List<WbsFormElementVO> selectFormElements(String id) {
+    public List<WbsFormElementVO> selectFormElements(String id,Long nodeId) {
         List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectFormElements(id);
         wbsFormElements.forEach(elements -> {
             String eAllowDeviation = elements.getEAllowDeviation();
@@ -317,6 +317,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             if (escapeChar != null) {
                 elements.setEAllowDeviation(escapeChar);
             }
+            if(nodeId!=null&&com.mixsmart.utils.StringUtils.isNotEquals(nodeId,elements.getNodeId())){
+                /*与当前节点不相同,则认为是跨节点取数,当然跨节点位置的标记不仅有绑定节点id一种方式*/
+                elements.setTableElementKey(elements.getNodeId()+StringPool.COLON+elements.getTableElementKey());
+            }
         });
              String elementIds = wbsFormElements.stream().map(WbsFormElement::getId).map(String::valueOf).collect(Collectors.joining(","));
              if(Func.isNotEmpty(elementIds)) {