|
@@ -541,19 +541,22 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<KeyMapper> getKeyMapperList(List<Long> ids,Long projectId) {
|
|
|
|
|
|
+ public List<KeyMapper> getKeyMapperList(List<Long> ids,String projectId) {
|
|
/*表名,pkeyId,元素名,元素id 映射对象*/
|
|
/*表名,pkeyId,元素名,元素id 映射对象*/
|
|
|
|
+ String pkIds=ids.stream().map(String::valueOf).collect(Collectors.joining(","));
|
|
List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id as fieldId " +
|
|
List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id as fieldId " +
|
|
"from m_wbs_tree_contract a " +
|
|
"from m_wbs_tree_contract a " +
|
|
"inner join m_table_info b on a.init_table_name=b.tab_en_name " +
|
|
"inner join m_table_info b on a.init_table_name=b.tab_en_name " +
|
|
"INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
|
|
"INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
|
|
- "where a.p_key_id in("+ids.stream().map(String::valueOf).collect(Collectors.joining(","))+") ORDER BY a.init_table_name");
|
|
|
|
|
|
+ "where a.p_key_id in("+pkIds+") ORDER BY a.init_table_name");
|
|
|
|
+ List<Long> nodeIds= this.jdbcTemplate.queryForList("select b.parent_id from m_wbs_tree_contract a join m_wbs_tree_private b on a.is_type_private_pid=b.p_key_id where a.p_key_id in("+pkIds+")",Long.class);
|
|
if(Func.isNotEmpty(listMap)){
|
|
if(Func.isNotEmpty(listMap)){
|
|
/*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
|
|
/*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
|
|
List<KeyMapper> list= listMap.stream().map(m->BeanUtil.toBean(m,KeyMapper.class)).collect(Collectors.toList());
|
|
List<KeyMapper> list= listMap.stream().map(m->BeanUtil.toBean(m,KeyMapper.class)).collect(Collectors.toList());
|
|
Set<KeyMapper> set = new HashSet<>(list.size()*2);
|
|
Set<KeyMapper> set = new HashSet<>(list.size()*2);
|
|
|
|
+ String nodeIdStr=nodeIds.stream().map(Object::toString).collect(Collectors.joining(StringPool.COMMA));
|
|
StringBuilder sb = new StringBuilder("select element_id elementId,formula_id formulaId,scope from m_element_formula_mapping where element_id in("+list.stream().map(KeyMapper::getFieldId).map(Func::toStr).collect(Collectors.joining(","))+") and is_deleted=0 ");
|
|
StringBuilder sb = new StringBuilder("select element_id elementId,formula_id formulaId,scope from m_element_formula_mapping where element_id in("+list.stream().map(KeyMapper::getFieldId).map(Func::toStr).collect(Collectors.joining(","))+") and is_deleted=0 ");
|
|
- sb.append(" and ( scope<2 or (scope =10 and node_id) ");
|
|
|
|
|
|
+ sb.append(" and ( scope<2 or (scope=2 and node_id in(").append(nodeIdStr).append(")) or (scope =10 and project_id = ").append(projectId).append(") or (scope=20 and project_id =").append(projectId).append(" and node_id in (").append(nodeIdStr).append(")))");
|
|
List<Map<String,Object>> efMap= this.jdbcTemplate.queryForList(sb.toString());
|
|
List<Map<String,Object>> efMap= this.jdbcTemplate.queryForList(sb.toString());
|
|
if(Func.isNotEmpty(efMap)){
|
|
if(Func.isNotEmpty(efMap)){
|
|
Map<Long,List<Map<String,Object>>> efGroup= efMap.stream().collect(Collectors.groupingBy(e->Func.toLong(e.get("elementId"))));
|
|
Map<Long,List<Map<String,Object>>> efGroup= efMap.stream().collect(Collectors.groupingBy(e->Func.toLong(e.get("elementId"))));
|