|
@@ -130,7 +130,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/*检查是否有跨节点数据*/
|
|
|
/*获取type=1的检验单或者type=4的监表*/
|
|
|
List<Map<String,Object>> inspectionElementMaps = new ArrayList<>();
|
|
|
- Optional<AppWbsTreeContractVO> wop=tableList.stream().filter(e->e.getTableType()==1).findAny();
|
|
|
+ Optional<AppWbsTreeContractVO> wop=tableList.stream().filter(e->e.getFullName().contains("检验单")).findAny();
|
|
|
if(wop.isPresent()){
|
|
|
/*检验单或者监表的*/
|
|
|
inspectionElementMaps= this.jdbcTemplate.queryForList(" select c.e_name name ,b.tab_en_name tableName,c.e_key ekey from m_wbs_tree_contract a join m_table_info b on a.init_table_name=b.tab_en_name join m_wbs_form_element c on c.f_id= b.id where a.p_key_id=" + wop.get().getPKeyId());
|
|
@@ -189,11 +189,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
for(String s:cki){
|
|
|
FormData fdTmp=this.formDataMap.get(s);
|
|
|
- if(fdTmp!=null&&fdTmp.getValues().stream().anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isEquals("/",e))){
|
|
|
- sb.append(fdTmp.getEName().split("\\(.+\\)")[0]).append(",");
|
|
|
+ if(fdTmp!=null&&fdTmp.getValues().stream().map(ElementData::getValue).anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isNotEquals("/",e))){
|
|
|
+ sb.append(fdTmp.getEName().split("[((].+[))]")[0]).append(",");
|
|
|
}
|
|
|
}
|
|
|
if(sb.length()>1){
|
|
|
+ sb.deleteCharAt(sb.length()-1);
|
|
|
this.constantMap.put(CHECK_ITEMS,sb.toString());
|
|
|
}
|
|
|
}
|
|
@@ -224,6 +225,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/*数据池里面没有任何元素匹配和当前依赖匹配*/
|
|
|
if(Func.isNotEmpty(missingList)){
|
|
|
StaticLog.info("缺失元素{}", String.join(";", missingList));
|
|
|
+ Map<String, Object> elementInfoMap=this.getElementInfoByCodes(String.join(",",missingList));
|
|
|
/*1从当前节点其它表格中查找匹配的元素*/
|
|
|
List<String> removeList=new ArrayList<>();
|
|
|
for(String r:missingList){
|
|
@@ -231,6 +233,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
String key =r.substring(r.indexOf(StringPool.COLON)+1);
|
|
|
List<AppWbsTreeContractVO> nodeList = this.tec.getTableAll().stream().filter(e->e.getInitTableName().equals(tn)).collect(Collectors.toList());
|
|
|
if(Func.isNotEmpty(nodeList)){
|
|
|
+ Map<String,Object> elementInfo= (Map<String, Object>) elementInfoMap.get(r);
|
|
|
String tableName = nodeList.get(0).getInitTableName();
|
|
|
try {
|
|
|
if(!this.tec.getCoordinateMap().containsKey(tableName)){
|
|
@@ -240,7 +243,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tableName+" where p_key_id in("+nodeList.stream().map(AppWbsTreeContractVO::getPKeyId).map(StringUtils::handleNull).collect(Collectors.joining(","))+")");
|
|
|
- fill(tableDatas,removeList,tn,key);
|
|
|
+ fill(tableDatas,removeList,tn,key,StringUtils.handleNull(elementInfo.get("ename")));
|
|
|
}
|
|
|
}
|
|
|
if(Func.isNotEmpty(removeList)){
|
|
@@ -254,12 +257,13 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(Func.isNotEmpty(tableNamePkIdsMaps)){
|
|
|
removeList.clear();
|
|
|
missingList.forEach(miss->{
|
|
|
+ Map<String,Object> elementInfo= (Map<String, Object>) elementInfoMap.get(miss);
|
|
|
String tn = miss.substring(0,miss.indexOf(StringPool.COLON));
|
|
|
String key =miss.substring(miss.indexOf(StringPool.COLON)+1);
|
|
|
String targetIds=tableNamePkIdsMaps.stream().filter(m->StringUtils.isEquals(m.get("tableName"),tn)).map(m->m.get("pkId")).map(StringUtils::handleNull).collect(Collectors.joining(","));
|
|
|
if(Func.isNotEmpty(targetIds)){
|
|
|
List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tn+" where p_key_id in ("+targetIds+")");
|
|
|
- fill(tableDatas,removeList,tn,key);
|
|
|
+ fill(tableDatas,removeList,tn,key,StringUtils.handleNull(elementInfo.get("ename")));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -271,7 +275,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void fill(List<Map<String,Object>> tableDatas,List<String> removeList,String tn,String key){
|
|
|
+ public void fill(List<Map<String,Object>> tableDatas,List<String> removeList,String tn,String key,String name){
|
|
|
if(Func.isNotEmpty(tableDatas)){
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
tableDatas.forEach(m->{
|
|
@@ -285,7 +289,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
String values= StringUtils.handleNull(map.get(key));
|
|
|
String r= tn+StringPool.COLON+key;
|
|
|
if(StringUtils.isNotEmpty(values)){
|
|
|
- FormData tmp=createFormDataFast(r,values);
|
|
|
+ FormData tmp=createFormDataFast(name,r,values);
|
|
|
if(tmp!=null){
|
|
|
removeList.add(r);
|
|
|
this.formDataMap.put(r,tmp);
|
|
@@ -293,13 +297,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- public FormData createFormDataFast(String code,String values){
|
|
|
+ public FormData createFormDataFast(String name,String code,String values){
|
|
|
if(StringUtils.isNotEmpty(code,values)){
|
|
|
- return new FormData(code, Arrays.stream(values.split("☆")).map(s->{
|
|
|
+ FormData one= new FormData(code, Arrays.stream(values.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);
|
|
|
+ one.setEName(name);
|
|
|
+ return one;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
@@ -975,6 +981,22 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ public Map<String,Object> getElementInfoByCodes(String codes){
|
|
|
+ if(StringUtils.isNotEmpty(codes)){
|
|
|
+ String[] relyArr = codes.split(StringPool.COMMA);
|
|
|
+ List<Map<String,Object>> mapList =this.jdbcTemplate.queryForList("select CONCAT(a.tab_en_name,':',b.e_key) ekey,a.tab_ch_name tableName,b.e_name ename ,b.e_length elength,c.dict_value type f" +
|
|
|
+ "rom m_table_info a JOIN m_wbs_form_element b on a.id=b.f_id " +
|
|
|
+ "LEFT JOIN (select dict_key, dict_value from blade_dict where code ='data_type' and parent_id > 0 and is_sealed = 0 and is_deleted = 0 )c on b.e_type=c.dict_key" +
|
|
|
+ " where a.tab_en_name in( "+ Arrays.stream(relyArr).map(e->e.split(StringPool.COLON)[0]).distinct().collect(Collectors.joining(StringPool.COMMA,"'","'"))+")");
|
|
|
+ if(ListUtils.isNotEmpty(mapList)){
|
|
|
+ return mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get("ekey"),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get("ekey")), e->e));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+
|
|
|
public void batch(){
|
|
|
List<Map<String,Object>> list = this.jdbcTemplate.queryForList("select id,formula from m_formula where (formula like '%reasonable%' or formula like '%proportion%' or formula like '%goodSize%')");
|
|
|
if(ListUtils.isNotEmpty(list)){
|