yangyj 1 year ago
parent
commit
1f627de61d

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -39,6 +39,10 @@ public class FormData {
      * 元素名称
      */
     private String eName;
+    /**
+     * 元素名称
+     */
+    private String tableChName;
 
     /**
      * 元素类型

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

@@ -96,6 +96,8 @@ public class TableElementConverter implements ITableElementConverter {
     /**汇总公式*/
     public List<FormData> summary = new ArrayList<>();
 
+    /*优化测试新增属性start*/
+    /*优化测试新增属性end*/
 
     public TableElementConverter(List<TableInfo> tableInfoList, List<KeyMapper> keyMappers, List<Formula> formulas, Map<String, Map<String, String>> coordinateMap, CurrentNode wtc, List<NodeTable> tableAll) {
         this.tableInfoList = tableInfoList;

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

@@ -9,6 +9,7 @@ import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.TableElementConverter;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.Map;
 
@@ -62,6 +63,10 @@ public interface IFormulaService extends BaseService<Formula> {
     /**根据wbs_tree_private的pkeyId获取公共树*/
     WbsTreePrivate getOriginWtp(Long pkeyId);
 
+    <T> T getSqlOne(@NotNull  String sql, Object[] args,@NotNull Class<T> clazz);
+    <T> T getSqlOne(@NotNull String sql, @NotNull Class<T> clazz);
+    <T> List<T> getSqlList(@NotNull String sql,Object[] args, @NotNull Class<T> clazz);
+    <T> List<T> getSqlList(@NotNull String sql,@NotNull Class<T> clazz);
 
 
 }

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

@@ -54,6 +54,7 @@ import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.*;
 import org.springblade.manager.bean.TableInfo;
+import org.springblade.manager.dto.FormData;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.formula.FormulaLog;
@@ -401,10 +402,16 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                Long nodeId=tableInfo.getLong("nodeId");
                List<TableInfo> tableInfoList = this.getTableInfoList(dataArray);
                List<NodeTable> tableAll = createNodeTables(nodeId, tableInfoList.get(0).getContractId(), tableInfoList.get(0).getProjectId(), type);
+                                   this.formulaService.getSqlList(
+                                           "select d.id,c.tab_ch_name tableChName,d.e_type eType,d.e_name eName,d.e_length eLength,d.e_allow_deviation eAllowDeviation,CONCAT(c.tab_en_name,':',d.e_key) code from m_table_info c join m_wbs_form_element d  on  c.id=d.f_id where d.is_deleted=0 and c.tab_en_name in(?)"
+                                           ,new Object[]{tableAll.stream().map(NodeTable::getInitTableName).distinct().collect(Collectors.joining(","))}
+                                           , FormData.class
+                                   );
                List<KeyMapper> keyMappers = this.formulaService.getKeyMapperList(tableInfoList.stream().map(TableInfo::getPkeyId).filter(Func::isNotEmpty).map(Long::parseLong).collect(Collectors.toList()), tableInfoList.get(0).getProjectId(), String.valueOf(nodeId), type);
                if (Func.isNotEmpty(keyMappers) && Func.isNotEmpty(tableAll)) {
                    Map<String, Map<String, String>> coordinateMap = createCoordinateMap(keyMappers, type);
                    List<Formula> formulas = this.formulaService.getFormulaList(keyMappers);
+                   /*判断哪些元素是可部分执行和整体执行*/
                    CurrentNode currentNode = null;
                    Long pKeyId = null;
                    Long contractId = null;
@@ -422,7 +429,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                        projectId = Long.parseLong(wtp.getProjectId());
                    }
                    if (currentNode != null) {
-                       ElementConverter tec = new ElementConverter(tableInfoList, keyMappers, formulas, coordinateMap, currentNode, tableAll);
+                       TableElementConverter tec = new TableElementConverter(tableInfoList, keyMappers, formulas, coordinateMap, currentNode, tableAll);
                        tec.setLog(log);
                        tec.setExecuteType(type);
                        tec.setContractId(contractId);

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

@@ -1384,6 +1384,43 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
        return wtp;
     }
 
+    @Override
+    public <T> T getSqlOne(String sql, Object[] args, Class<T> clazz) {
+        List<Map<String,Object>> listMaps=this.jdbcTemplate.queryForList(sql,args);
+        if(listMaps.size()>0){
+            Map<String,Object> target = listMaps.get(0);
+            if (Map.class.equals(clazz)) {
+                return (T) target;
+            }
+            return BeanUtil.toBean(target,clazz);
+        }
+        return null;
+    }
+
+
+
+    @Override
+    public <T> T getSqlOne(String sql, Class<T> clazz) {
+        return getSqlOne(sql,null,clazz);
+    }
+
+    @Override
+    public <T> List<T> getSqlList(String sql, Object[] args, Class<T> clazz) {
+        List<Map<String,Object>> listMaps=this.jdbcTemplate.queryForList(sql,args);
+        if(listMaps.size()>0){
+            if (Map.class.equals(clazz)) {
+                return (List<T>) listMaps;
+            }
+          return listMaps.stream().map(o->BeanUtil.toBean(o,clazz)).collect(Collectors.toList());
+        }
+        return null;
+    }
+
+    @Override
+    public <T> List<T> getSqlList(String sql, Class<T> clazz) {
+        return getSqlList(sql,null,clazz);
+    }
+
     @Override
     public WbsTreePrivate wtpId(Long pkeyId){
        WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
@@ -1400,10 +1437,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
        return this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()));
     }
     private List<KeyMapper> listForContract(List<Long> ids,String projectId,String nodeId){
-        String pkIds=ids.stream().map(String::valueOf).collect(Collectors.joining(","));
         List<Map<String,Object>> listMap = listMap(ids,ExecuteType.INSPECTION);
         WbsTreePrivate wtp =wtpId(Long.parseLong(nodeId));
-        //Map<String,Object> wtpMap= this.jdbcTemplate.queryForMap("select b.id parentId,b.wbs_id wbsId from  m_wbs_tree_private b where is_deleted=0 and id="+originId+" and project_id="+projectId);
         if(Func.isNotEmpty(listMap)){
             /*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
             List<KeyMapper> list= listMap.stream().map(m->BeanUtil.toBean(m,KeyMapper.class)).collect(Collectors.toList());