|
@@ -542,21 +542,18 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
|
|
|
@Override
|
|
|
public List<KeyMapper> getKeyMapperList(List<Long> ids,Long projectId) {
|
|
|
+ /*表名,pkeyId,元素名,元素id 映射对象*/
|
|
|
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 " +
|
|
|
"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 " +
|
|
|
"where a.p_key_id in("+ids.stream().map(String::valueOf).collect(Collectors.joining(","))+") ORDER BY a.init_table_name");
|
|
|
- /*当前节点的参数可以是私有级和公有级*/
|
|
|
-
|
|
|
if(Func.isNotEmpty(listMap)){
|
|
|
- /*根据元素id分组*/
|
|
|
+ /*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
|
|
|
List<KeyMapper> list= listMap.stream().map(m->BeanUtil.toBean(m,KeyMapper.class)).collect(Collectors.toList());
|
|
|
Set<KeyMapper> set = new HashSet<>(list.size()*2);
|
|
|
- StringBuilder sb = new StringBuilder("select element_id elementId,formula_id formulaId,scope from m_element_formula_mapping where scope<30 and element_id in("+list.stream().map(KeyMapper::getFieldId).map(Func::toStr).collect(Collectors.joining(","))+") and is_deleted=0 ");
|
|
|
- if(projectId!=null){
|
|
|
- sb.append(" and project_id=").append(projectId);
|
|
|
- }
|
|
|
+ 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) ");
|
|
|
List<Map<String,Object>> efMap= this.jdbcTemplate.queryForList(sb.toString());
|
|
|
if(Func.isNotEmpty(efMap)){
|
|
|
Map<Long,List<Map<String,Object>>> efGroup= efMap.stream().collect(Collectors.groupingBy(e->Func.toLong(e.get("elementId"))));
|