|
@@ -78,10 +78,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
private TableElementConverter tec;
|
|
|
// private Map<String,Object> constantMap;
|
|
|
// private List<FormData> formDataList;
|
|
|
- private Map<String,FormData> formDataMap;
|
|
|
- private Map<String,Map<String,Object>> tableDataMaps;
|
|
|
-
|
|
|
-
|
|
|
+// private Map<String,FormData> formDataMap;
|
|
|
+// private Map<String,Map<String,Object>> tableDataMaps;
|
|
|
public final static String WP="WP";
|
|
|
public final static String CHAIN="trees";
|
|
|
public final static String FC="FC.";
|
|
@@ -116,27 +114,47 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
|
|
|
@Override
|
|
|
public IFormulaService init() {
|
|
|
- this.tableDataMaps=this.tec.getTableDataMaps();
|
|
|
- this.formDataMap=this.tec.getFormDataMap();
|
|
|
+ /*基础数据*/
|
|
|
+ baseData();
|
|
|
+ /*依赖加载*/
|
|
|
+ checkingMissingList();
|
|
|
+ /*实测值参数*/
|
|
|
+ textInfo();
|
|
|
+ /*公式参数*/
|
|
|
+ option();
|
|
|
+ /*评定表*/
|
|
|
+ assessmentForm();
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void option(){
|
|
|
+ FormulaOption formulaOption = this.formulaOptionService.getOne(Wrappers.<FormulaOption>lambdaQuery().eq(FormulaOption::getParentId,tec.getCurrentNode().getRelateId()).eq(FormulaOption::getContractId,tec.getContractId()));
|
|
|
+ if(formulaOption!=null){
|
|
|
+ tec.constantMap.put(FMOT,JSON.parseObject(formulaOption.getVal(),LinkedHashMap.class));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void textInfo(){
|
|
|
+ List<Map<String,Object>> textInfoMap= this.jdbcTemplate.queryForList("SELECT b.tab_id pkId,b.col_name val ,CONCAT(a.init_table_name,':',b.col_key)code from m_wbs_tree_contract a inner join m_textdict_info b on a.p_key_id=b.tab_id " +
|
|
|
+ "where a.p_key_id in("+this.tec.getTableAll().stream().map(NodeTable::getPKeyId).map(Func::toStr).collect(Collectors.joining(","))+") and b.type=8 ");
|
|
|
+ if(Func.isNotEmpty(textInfoMap)){
|
|
|
+ Map<String,List<Map<String,Object>>> tmap = textInfoMap.stream().collect(Collectors.groupingBy(m->m.get("code").toString()));
|
|
|
+ tec.constantMap.put(TEXT_INFO_MAP,tmap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void baseData(){
|
|
|
List<FormData> list =this.tec.getFds();
|
|
|
- Long contractId=this.tec.getContractId();
|
|
|
CurrentNode one=this.tec.getCurrentNode();
|
|
|
- Long id =one.getId();
|
|
|
- Long primaryKeyId=one.getPkId();
|
|
|
tec.formDataList=list;
|
|
|
- tec.constantMap.put("contractId",contractId);
|
|
|
keyWord(tec.constantMap);
|
|
|
- ContractInfo info =this.contractInfoService.getById(contractId);
|
|
|
- /*合同段信息*/
|
|
|
- tec.constantMap.put(CTI,info);
|
|
|
- /*项目信息*/
|
|
|
+ ContractInfo info =this.contractInfoService.getById(tec.getContractId());
|
|
|
ProjectInfo pji=this.projectInfoService.getById(info.getPId());
|
|
|
tec.setProjectId(pji.getId());
|
|
|
- tec.constantMap.put(PJI,pji);
|
|
|
/*wbs节点链*/
|
|
|
- List<WbsTreeContract> nodes = wpService.chain(contractId,id,primaryKeyId,null);
|
|
|
+ List<WbsTreeContract> nodes = wpService.chain(tec.getContractId(),one.getId(),one.getPkId(),null);
|
|
|
if(Func.isEmpty(nodes)){
|
|
|
- nodes=wpService.chain(contractId,one.getRelateId(),primaryKeyId,null);
|
|
|
+ nodes=wpService.chain(tec.getContractId(),one.getRelateId(),one.getPkId(),null);
|
|
|
}
|
|
|
if(Func.isEmpty(nodes)){
|
|
|
this.tec.getLog().append("【WBS信息缺失】");
|
|
@@ -145,51 +163,39 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/*节点参数*/
|
|
|
tec.constantMap.put(WP,getWpMap(one));
|
|
|
/*表格名称*/
|
|
|
- List<AppWbsTreeContractVO> tableList =wbsTreeContractService.searchNodeAllTable(primaryKeyId.toString(), "1", contractId.toString(),info.getPId());
|
|
|
+ List<AppWbsTreeContractVO> tableList =wbsTreeContractService.searchNodeAllTable(one.getPkId().toString(), "1", tec.getContractId().toString(),info.getPId());
|
|
|
tec.constantMap.put(TABLE_LIST,tableList);
|
|
|
/*通过判断元素名称来确定,加入汇总公式延后执行*/
|
|
|
- // tec.constantMap.put("tableNames",tableList.stream().filter(e->StringUtils.isEquals(e.getIsBussShow(),1)).map(WbsTreeContract::getNodeName).collect(Collectors.toList()));
|
|
|
+ /*tec.constantMap.put("tableNames",tableList.stream().filter(e->StringUtils.isEquals(e.getIsBussShow(),1)).map(WbsTreeContract::getNodeName).collect(Collectors.toList()));*/
|
|
|
tec.constantMap.put("tableNames",tableList.stream().map(WbsTreeContract::getNodeName).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
|
|
|
- List<String> missingList = new ArrayList<>();
|
|
|
- tec.formDataList.forEach(fd->{
|
|
|
- if(fd.executable()){
|
|
|
- relyParse(fd.getFormula());
|
|
|
- Formula f= fd.getFormula();
|
|
|
- List<String> relyList=f.getRelyList();
|
|
|
- if(Func.isNotEmpty(relyList)){
|
|
|
- relyList.forEach(r->{
|
|
|
- if(this.formDataMap.values().stream().map(FormData::getCode).noneMatch(k->StringUtils.isEquals(k,r))){
|
|
|
- missingList.add(r);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- missingFill(missingList);
|
|
|
- if(Func.isNotEmpty(missingList)){
|
|
|
- this.tec.getLog().append("【没有能加载的跨节点数据:").append(missingList.stream().map(e->e.replaceAll("'","")).collect(Collectors.joining(","))).append("】");
|
|
|
- }
|
|
|
|
|
|
+ /**补充确实的原始依赖*/
|
|
|
+ public void checkingMissingList(){
|
|
|
+ List<String> missingList = new ArrayList<>();
|
|
|
+ tec.formDataList.forEach(fd->{
|
|
|
+ if(fd.executable()){
|
|
|
+ relyParse(fd.getFormula());
|
|
|
+ Formula f= fd.getFormula();
|
|
|
+ List<String> relyList=f.getRelyList();
|
|
|
+ if(Func.isNotEmpty(relyList)){
|
|
|
+ relyList.forEach(r->{
|
|
|
+ if(tec.formDataMap.values().stream().map(FormData::getCode).noneMatch(k->StringUtils.isEquals(k,r))){
|
|
|
+ missingList.add(r);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- /*实测值参数*/
|
|
|
- List<Map<String,Object>> textInfoMap= this.jdbcTemplate.queryForList("SELECT b.tab_id pkId,b.col_name val ,CONCAT(a.init_table_name,':',b.col_key)code from m_wbs_tree_contract a inner join m_textdict_info b on a.p_key_id=b.tab_id " +
|
|
|
- "where a.p_key_id in("+this.tec.getTableAll().stream().map(AppWbsTreeContractVO::getPKeyId).map(Func::toStr).collect(Collectors.joining(","))+") and b.type=8 ");
|
|
|
- if(Func.isNotEmpty(textInfoMap)){
|
|
|
- Map<String,List<Map<String,Object>>> tmap = textInfoMap.stream().collect(Collectors.groupingBy(m->m.get("code").toString()));
|
|
|
- tec.constantMap.put(TEXT_INFO_MAP,tmap);
|
|
|
- }
|
|
|
- /*公式参数*/
|
|
|
- FormulaOption formulaOption = this.formulaOptionService.getOne(Wrappers.<FormulaOption>lambdaQuery().eq(FormulaOption::getParentId,one.getRelateId()).eq(FormulaOption::getContractId,contractId));
|
|
|
- if(formulaOption!=null){
|
|
|
- tec.constantMap.put(FMOT,JSON.parseObject(formulaOption.getVal(),LinkedHashMap.class));
|
|
|
- }
|
|
|
- /*评定表*/
|
|
|
- assessmentForm();
|
|
|
- return this;
|
|
|
+ missingFill(missingList);
|
|
|
+ if(Func.isNotEmpty(missingList)){
|
|
|
+ tec.getLog().append("【没有能加载的跨节点数据:").append(missingList.stream().map(e->e.replaceAll("'","")).collect(Collectors.joining(","))).append("】");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
public FormulaDataBlock findFdb(){
|
|
|
/*查找第一个包含分项评定子节点的父节点*/
|
|
|
Long ancestor=findFirstParentId();
|
|
@@ -222,7 +228,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
return parentId;
|
|
|
}
|
|
|
- /*评定表处理*/
|
|
|
+ /**评定表处理*/
|
|
|
public void assessmentForm(){
|
|
|
try {
|
|
|
if (tec.getTableAll().stream().anyMatch(e -> StringUtils.isEquals(e.getTableType(), 5))) {
|
|
@@ -231,7 +237,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if (!StringUtils.isEquals("[]", fdb.getVal())) {
|
|
|
List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
|
|
|
Map<String, Measurement> itemsMap = new HashMap<>();
|
|
|
- this.formDataMap.values().stream().filter(FormData::getIsCurrentNodeElement).forEach(e -> {
|
|
|
+ tec.formDataMap.values().stream().filter(FormData::getIsCurrentNodeElement).forEach(e -> {
|
|
|
String eName = e.getEName();
|
|
|
if (eName.contains("实测") && !eName.contains("平均") && !eName.contains("合格率") && !eName.contains("判")) {
|
|
|
String point = FormulaUtils.parseItemName(eName);
|
|
@@ -327,64 +333,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**评定表自动匹配*/
|
|
|
-// public void doForAssessmentForm(){
|
|
|
-// try {
|
|
|
-// List<String> tableNames = tec.getTableAll().stream().filter(e->StringUtils.isEquals(e.getTableType(),5)).map(AppWbsTreeContractVO::getInitTableName).collect(Collectors.toList());
|
|
|
-// if(Func.isNotEmpty(tableNames)){
|
|
|
-// List<Map<String,Object>> mapList=this.jdbcTemplate.queryForList("select k.node_name nodeName,k.p_key_id nodeId ,c.node_name tabName,c.sort,c.init_table_name initTableName,c.p_key_id tabId,c.html_url url from (select b.id,b.node_name,b.sort ,b.p_key_id from (select * from m_wbs_tree_contract where p_key_id="+tec.getCurrentNode().getPkId()+") a join m_wbs_tree_contract b on b.parent_id=a.parent_id where b.contract_id="+tec.getContractId()+" and b.is_deleted=0 and b.node_type=6 ) k join m_wbs_tree_contract c on c.parent_id = k.id where c.contract_id="+tec.getContractId()+" and c.is_deleted=0 and c.table_owner in(1,2,3) ORDER BY k.sort ,c.sort,c.p_key_id");
|
|
|
-// if(Func.isNotEmpty(mapList)){
|
|
|
-// List<NodeTable> nodeTables =mapList.stream().map(e->BeanUtil.toBean(e,NodeTable.class)).collect(Collectors.toList());
|
|
|
-// List<String> exclude=tec.getTableAll().stream().map(AppWbsTreeContractVO::getInitTableName).collect(Collectors.toList());
|
|
|
-// List<Map<String,Object>> keyMapList= this.jdbcTemplate.queryForList("select a.tab_ch_name tabName,a.tab_en_name initTableName,b.e_name eName,b.id elementId,b.e_key eKey from m_table_info a join m_wbs_form_element b on b.f_id=a.id where a.tab_en_name in ('"+nodeTables.stream().map(NodeTable::getInitTableName).distinct().filter(e->!exclude.contains(e)).collect(Collectors.joining("','"))+"') and b.is_deleted=0");
|
|
|
-// List<TableEleKey> tableEleKeys=keyMapList.stream().map(e->BeanUtil.toBean(e,TableEleKey.class)).collect(Collectors.toList());
|
|
|
-// Map<String, Measurement> itemsMap = new HashMap<>();
|
|
|
-// this.formDataMap.values().forEach(e->{
|
|
|
-// String eName=e.getEName();
|
|
|
-// if(eName.contains("实测")&&!eName.contains("平均")){
|
|
|
-// String point =FormulaUtils.parseItemName(eName);
|
|
|
-// Measurement measurement = itemsMap.computeIfAbsent(point,k->new Measurement(point));
|
|
|
-// if(eName.contains("偏差")){
|
|
|
-// measurement.setValue(e);
|
|
|
-// }else if(eName.contains("率")){
|
|
|
-// measurement.setPass(e);
|
|
|
-// }else if(eName.contains("判")){
|
|
|
-// measurement.setJudge(e);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// });
|
|
|
-//
|
|
|
-// Map<Boolean,List<TableEleKey>> tmpMap= tableEleKeys.stream().collect(Collectors.partitioningBy(t->t.getTabName().contains("质量检验")));
|
|
|
-// List<TableEleKey> tableEleKeysA= tmpMap.get(false);
|
|
|
-// List<TableEleKey> tableEleKeysB=tmpMap.get(true);
|
|
|
-// itemsMap.values().forEach(e->{
|
|
|
-// //tableEleKeys.stream().filter(tk -> !tk.getTabName().contains("质量检验")).reduce((a, b) -> FormulaUtils.getJaccardSimilarity(e.getValue().getEName(), a.getEName()) - FormulaUtils.getJaccardSimilarity(e.getValue().getEName(), b.getEName()) >= 0 ? a : b).ifPresent(source -> e.setValueCode(source.getCode()));
|
|
|
-// List<TableEleKey> target=tableEleKeysA.stream().sorted(Comparator.comparingDouble(tk->FormulaUtils.getJaccardSimilarity(e.getPoint(),FormulaUtils.parseItemName(tk.getEName())))).collect(Collectors.toList());
|
|
|
-// //List<TableEleKey> target1=tableEleKeysA.stream().sorted(Comparator.comparingDouble(TableEleKey::getDegree).reversed()).collect(Collectors.toList());
|
|
|
-// Collections.reverse(target);
|
|
|
-// target=target.stream().limit(3).collect(Collectors.toList());
|
|
|
-// target.forEach(g->{
|
|
|
-// String eName=g.getEName();
|
|
|
-// String code =g.getCode();
|
|
|
-// if(eName.contains("实测")&&!eName.contains("设计")&&!eName.contains("偏")){
|
|
|
-// e.setValueCode(code);
|
|
|
-// e.setValueName(eName);
|
|
|
-// }else if(eName.contains("设计")&&!eName.contains("偏")){
|
|
|
-// e.setDesignCode(code);
|
|
|
-// e.setDesignName(eName);
|
|
|
-// }else if(eName.contains("偏")){
|
|
|
-//
|
|
|
-// }
|
|
|
-// });
|
|
|
-// });
|
|
|
-// tec.getLog().append("【评定表实测项目匹配度】");
|
|
|
-// System.out.println();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }catch (Exception e){
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
+
|
|
|
|
|
|
public void missingFill(List<String> missingList){
|
|
|
/*数据池里面没有任何元素匹配和当前依赖匹配*/
|
|
@@ -397,15 +346,16 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
for (String r : missingList) {
|
|
|
String tn = r.substring(0, r.indexOf(StringPool.COLON));
|
|
|
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());
|
|
|
+ List<NodeTable> nodeList = this.tec.getTableAll().stream().filter(e -> e.getInitTableName().equals(tn)).collect(Collectors.toList());
|
|
|
if (Func.isNotEmpty(nodeList)) {
|
|
|
removeList.add(r);
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
Map<String, Object> elementInfo = (Map<String, Object>) elementInfoMap.get(r);
|
|
|
String tableName = nodeList.get(0).getInitTableName();
|
|
|
if (!this.tec.getCoordinateMap().containsKey(tableName)) {
|
|
|
- this.tec.getCoordinateMap().put(tableName, CustomFunction.getElementCell(nodeList.get(0).getHtmlUrl()));
|
|
|
+ this.tec.getCoordinateMap().put(tableName, FormulaUtils.getElementCell(nodeList.get(0).getHtmlUrl()));
|
|
|
}
|
|
|
- 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(",")) + ")");
|
|
|
+ List<Map<String, Object>> tableDatas = this.jdbcTemplate.queryForList("select * from " + tableName + " where p_key_id in(" + nodeList.stream().map(NodeTable::getPKeyId).map(StringUtils::handleNull).collect(Collectors.joining(",")) + ")");
|
|
|
fill(tableDatas, removeList, tn, key, StringUtils.handleNull(elementInfo.get("ename")));
|
|
|
}
|
|
|
}
|
|
@@ -421,6 +371,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(Func.isNotEmpty(tableNamePkIdsMaps)){
|
|
|
// removeList.clear();
|
|
|
missingList.forEach(miss->{
|
|
|
+ @SuppressWarnings("unckecked")
|
|
|
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);
|
|
@@ -428,7 +379,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(Func.isNotEmpty(targetIds)){
|
|
|
if(!this.tec.getCoordinateMap().containsKey(tn)){
|
|
|
tableNamePkIdsMaps.stream().filter(m->StringUtils.isEquals(m.get("tableName"),tn)).findAny().ifPresent(m->{
|
|
|
- this.tec.getCoordinateMap().put(tn,CustomFunction.getElementCell(StringUtils.handleNull(m.get("url"))));
|
|
|
+ this.tec.getCoordinateMap().put(tn,FormulaUtils.getElementCell(StringUtils.handleNull(m.get("url"))));
|
|
|
});
|
|
|
}
|
|
|
List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tn+" where p_key_id in ("+targetIds+")");
|
|
@@ -455,12 +406,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
- this.tableDataMaps.put(tn,map);
|
|
|
+ tec.tableDataMaps.put(tn,map);
|
|
|
String values= StringUtils.handleNull(map.get(key));
|
|
|
String r= tn+StringPool.COLON+key;
|
|
|
FormData tmp=createFormDataFast(name,r,values);
|
|
|
if(tmp!=null){
|
|
|
- this.formDataMap.put(r,tmp);
|
|
|
+ tec.formDataMap.put(r,tmp);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -544,7 +495,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
this.tec.getLog().append("【本节点参数情况:").append(result.entrySet().stream().map(p->logMap.get(p.getKey())+":"+p.getValue()).collect(Collectors.joining(";"))).append("】");
|
|
|
/*元素动态绑定*/
|
|
|
- this.formDataMap.values().stream().filter(e->e.getIsCurrentNodeElement()&&e.getFormula()==null).forEach(e->{
|
|
|
+ tec.formDataMap.values().stream().filter(e->e.getIsCurrentNodeElement()&&e.getFormula()==null).forEach(e->{
|
|
|
/*执行列表里不存在,且元素的名称和节点参数名称匹配成功*/
|
|
|
total.stream().filter(p->e.getEName().contains(p.getName().replace("【水】","").trim())&&!tec.formDataList.contains(e)).findAny().ifPresent(d->{
|
|
|
Formula formula=new Formula();
|
|
@@ -596,28 +547,28 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
tec.formDataList.stream().filter(FormData::executable).filter(e->StringUtils.isEquals("CKI",e.getFormula().getNumber())||StringUtils.isEquals("CKD",e.getFormula().getNumber())).forEach(t->tec.summary.add(t));
|
|
|
tec.formDataList.removeAll(tec.summary);
|
|
|
/*监表的处理*/
|
|
|
- Optional<AppWbsTreeContractVO> aop=tec.getTableAll().stream().filter(e->e.getNodeName().contains("A15")).findAny();
|
|
|
+ Optional<NodeTable> aop=tec.getTableAll().stream().filter(e->e.getNodeName().contains("A15")).findAny();
|
|
|
if(aop.isPresent()){
|
|
|
/*存在监表,则需要收集检查项目和检查时间等元素*/
|
|
|
- List<String> wop=tec.getTableAll().stream().filter(e->e.getNodeName().contains("检验单")||e.getNodeName().contains("检验表")).map(AppWbsTreeContractVO::getInitTableName).distinct().collect(Collectors.toList());
|
|
|
+ List<String> wop=tec.getTableAll().stream().filter(e->e.getNodeName().contains("检验单")||e.getNodeName().contains("检验表")).map(NodeTable::getInitTableName).distinct().collect(Collectors.toList());
|
|
|
if(wop.size()>0){
|
|
|
/*存在检验表*/
|
|
|
- tec.getKeyMappers().stream().filter(e->wop.contains(e.getTableName())&&this.formDataMap.containsKey(e.getCode())).forEach(k->{
|
|
|
+ tec.getKeyMappers().stream().filter(e->wop.contains(e.getTableName())&&tec.formDataMap.containsKey(e.getCode())).forEach(k->{
|
|
|
if(k.getEName().contains("实测值")&&k.getEName().contains("偏差值")){
|
|
|
- tec.checkItems.add(this.formDataMap.get(k.getCode()));
|
|
|
+ tec.checkItems.add(tec.formDataMap.get(k.getCode()));
|
|
|
}else if(k.getEName().contains("检验日期")){
|
|
|
- tec.checkDate.add(this.formDataMap.get(k.getCode()));
|
|
|
+ tec.checkDate.add(tec.formDataMap.get(k.getCode()));
|
|
|
}
|
|
|
});
|
|
|
}else{
|
|
|
/*不存在检验表的的情况则获取记录表*/
|
|
|
- List<String> recordTable=tec.getTableAll().stream().filter(e->StringUtils.isEquals(2,e.getTableType())).map(AppWbsTreeContractVO::getInitTableName).distinct().collect(Collectors.toList());
|
|
|
+ List<String> recordTable=tec.getTableAll().stream().filter(e->StringUtils.isEquals(2,e.getTableType())).map(NodeTable::getInitTableName).distinct().collect(Collectors.toList());
|
|
|
tec.getKeyMappers().stream().filter(k->recordTable.contains(k.getTableName())).map(k->k.getCode()+"@"+k.getEName()).distinct().forEach(k->{
|
|
|
String[] ka=k.split("@");
|
|
|
if(ka[1].contains("实测值")){
|
|
|
- tec.checkItems.add(this.formDataMap.get(ka[0]));
|
|
|
+ tec.checkItems.add(tec.formDataMap.get(ka[0]));
|
|
|
}else if(ka[1].contains("日期")||ka[1].contains("年月日")){
|
|
|
- tec.checkDate.add(this.formDataMap.get(ka[0]));
|
|
|
+ tec.checkDate.add(tec.formDataMap.get(ka[0]));
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -625,7 +576,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
if(tec.checkItems.size()>0){
|
|
|
/**排序*/
|
|
|
- List<String> iniTableNames=tec.getTableAll().stream().map(AppWbsTreeContractVO::getInitTableName).distinct().collect(Collectors.toList());
|
|
|
+ List<String> iniTableNames=tec.getTableAll().stream().map(NodeTable::getInitTableName).distinct().collect(Collectors.toList());
|
|
|
tec.checkItems= tec.checkItems.stream().sorted(Comparator.comparingInt((FormData i)->iniTableNames.indexOf(i.getTableName())).thenComparingInt(FormData::getMaxRow)).collect(Collectors.toList());
|
|
|
}
|
|
|
System.out.println();
|
|
@@ -667,7 +618,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
fd.getFormula().setFormula(tmp);
|
|
|
- this.formDataMap.put(fd.getCode(),fd);
|
|
|
+ tec.formDataMap.put(fd.getCode(),fd);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -705,7 +656,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/**通用计算*/
|
|
|
public void generalCalc(){
|
|
|
String checkTable ="";
|
|
|
- Optional<AppWbsTreeContractVO> op=tec.getTableAll().stream().filter(e->StringUtils.isEquals(1,e.getTableType())).findAny();
|
|
|
+ Optional<NodeTable> op=tec.getTableAll().stream().filter(e->StringUtils.isEquals(1,e.getTableType())).findAny();
|
|
|
if(op.isPresent()){
|
|
|
checkTable=op.get().getInitTableName();
|
|
|
}
|
|
@@ -733,16 +684,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
if(fd.getCoordsList().size()>1&&f.split("[/+\\-*]").length>1){
|
|
|
LinkedHashMap<String,FormData> fdMap =new LinkedHashMap<>();
|
|
|
-// Optional<FormData> tto= ele.stream().max(Comparator.comparingInt(fe->fe.getValues().size()));
|
|
|
-// Optional<FormData> tts= ele.stream().min(Comparator.comparingInt(fe->fe.getValues().size()));
|
|
|
-// if(tto.isPresent()&&tts.isPresent()){
|
|
|
-// if(tto.get().getValues().size()!=tts.get().getValues().size()){
|
|
|
-// int baseLength=tto.get().getValues().size();
|
|
|
-// ele.forEach(e->{
|
|
|
-// e.setStep(baseLength/e.getValues().size());
|
|
|
-// });
|
|
|
-// }
|
|
|
-// }
|
|
|
FormData maxFormData = Collections.max(ele, Comparator.comparingInt((FormData ef)->ef.getValues().size()));
|
|
|
FormData minFormData = Collections.min(ele, Comparator.comparingInt((FormData ef)->ef.getValues().size()));
|
|
|
if (maxFormData.getValues().size() != minFormData.getValues().size()) {
|
|
@@ -817,7 +758,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/*获取所有挂在表里的元素映射关系*/
|
|
|
this.tec.getKeyMappers().stream().filter(p -> p.getPkId().equals(e.getPKeyId())).forEach(k -> {
|
|
|
/*元素长度筛选超页的元素*/
|
|
|
- List<FormData> target = this.formDataMap.values().stream().filter(f -> f.getCode().equals(k.getCode()) && f.getAddPages() > 0).collect(Collectors.toList());
|
|
|
+ List<FormData> target = tec.formDataMap.values().stream().filter(f -> f.getCode().equals(k.getCode()) && f.getAddPages() > 0).collect(Collectors.toList());
|
|
|
if (Func.isNotEmpty(target)) {
|
|
|
inspectionList.addAll(target);
|
|
|
}
|
|
@@ -825,7 +766,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
});
|
|
|
if (Func.isNotEmpty(inspectionList)) {
|
|
|
/*检查是否存在附表,不存在挂载*/
|
|
|
- List<AppWbsTreeContractVO> subTabList = this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表")).collect(Collectors.toList());
|
|
|
+ List<NodeTable> subTabList = this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表")).collect(Collectors.toList());
|
|
|
if (subTabList.size() == 0) {
|
|
|
boolean pd=tec.getTableAll().stream().anyMatch(e->e.getNodeName().contains("评定表"));
|
|
|
WbsTreePrivate sub = wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().and(e->e.eq(WbsTreePrivate::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreePrivate::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")).eq(WbsTreePrivate::getProjectId, tec.getProjectId()).eq(WbsTreePrivate::getIsLinkTable,2));
|
|
@@ -833,27 +774,27 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
this.tec.getLog().append("该项目没有挂有附表信息");
|
|
|
} else {
|
|
|
this.wbsTreePrivateService.addWbsTreeContractInfo(this.tec.getCurrentNode().getPkId().toString(), sub.getPKeyId().toString(), tec.getContractId());
|
|
|
- AppWbsTreeContractVO one = this.tec.getTableAll().get(0);
|
|
|
- WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, one.getParentId()).eq(WbsTreeContract::getContractId,one.getContractId()).eq(WbsTreeContract::getWbsId, one.getWbsId()).and(e->e.eq(WbsTreeContract::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreeContract::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")));
|
|
|
+ NodeTable one = this.tec.getTableAll().get(0);
|
|
|
+ WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, one.getParentId()).eq(WbsTreeContract::getContractId,tec.getContractId()).eq(WbsTreeContract::getWbsId, one.getWbsId()).and(e->e.eq(WbsTreeContract::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreeContract::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")));
|
|
|
if (wtc != null) {
|
|
|
/*附表的顺序在检验单或者评定表之后*/
|
|
|
- int sort=this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(AppWbsTreeContractVO::getSort).max(Integer::compareTo).orElse(30);
|
|
|
+ int sort=this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
|
|
|
this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate()
|
|
|
.set(WbsTreeContract::getSort,sort).set(WbsTreeContract::getContractType,-1).set(WbsTreeContract::getAncestors,one.getAncestors())
|
|
|
.set(WbsTreeContract::getIsCopeTab,2)
|
|
|
.eq(WbsTreeContract::getPKeyId,wtc.getPKeyId()));
|
|
|
/*只需要挂载一张*/
|
|
|
- AppWbsTreeContractVO obj = BeanUtil.copy(wtc, AppWbsTreeContractVO.class);
|
|
|
- this.tec.getTableAll().add(obj);
|
|
|
+ NodeTable obj = BeanUtil.copy(wtc, NodeTable.class);
|
|
|
+ tec.getTableAll().add(obj);
|
|
|
subTabList.add(obj);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- AppWbsTreeContractVO first = subTabList.get(0);
|
|
|
+ NodeTable first = subTabList.get(0);
|
|
|
if (tec.getTableInfoList().stream().noneMatch(e -> StringUtils.isEquals(e.getPkeyId(), first.getPKeyId()))) {
|
|
|
/*找不到附表表单数据,则从数据库加载*/
|
|
|
JSONArray dataArray = new JSONArray();
|
|
|
- for (WbsTreeContract data : subTabList) {
|
|
|
+ for (NodeTable data : subTabList) {
|
|
|
/*自动挂载附表情况下,装配TableInfo数据*/
|
|
|
R bussDataInfo = this.getBussDataInfo(data.getPKeyId(), 1);
|
|
|
@SuppressWarnings("unchecked")
|
|
@@ -873,7 +814,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
});
|
|
|
tec.getTableInfoList().addAll(subTableInfo);
|
|
|
/*获取附表元素定位集*/
|
|
|
- tec.getCoordinateMap().put(subTabList.get(0).getInitTableName(), CustomFunction.getElementCell(first.getHtmlUrl()));
|
|
|
+ tec.getCoordinateMap().put(subTabList.get(0).getInitTableName(), FormulaUtils.getElementCell(first.getHtmlUrl()));
|
|
|
/*附表元素关键信息*/
|
|
|
List<Map<String, Object>> elementMaps = this.jdbcTemplate.queryForList("select b.e_name ename , CONCAT(a.tab_en_name,':',b.e_key) code , b.e_key ekey ,b.id fieldId,a.tab_en_name tableName from m_table_info a join m_wbs_form_element b on a.id = b.f_id where a.tab_en_name='" + first.getInitTableName() + "' and b.is_deleted=0 ");
|
|
|
if (Func.isNotEmpty(elementMaps)) {
|
|
@@ -883,7 +824,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
FormData tmp= createFormDataFast(StringUtils.handleNull(e.get("ename")),StringUtils.handleNull(e.get("code")),values);
|
|
|
if(tmp!=null){
|
|
|
tmp.setIsCurrentNodeElement(true);
|
|
|
- this.formDataMap.put(tmp.getCode(),tmp);
|
|
|
+ tec.formDataMap.put(tmp.getCode(),tmp);
|
|
|
tec.formDataList.add(tmp);
|
|
|
}
|
|
|
});
|
|
@@ -902,7 +843,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
/*获取封装好的附表元素*/
|
|
|
- List<FormData> subTableFds=this.formDataMap.values().stream().filter(e->StringUtils.isEquals(first.getInitTableName(),e.getTableName())).collect(Collectors.toList());
|
|
|
+ List<FormData> subTableFds=tec.formDataMap.values().stream().filter(e->StringUtils.isEquals(first.getInitTableName(),e.getTableName())).collect(Collectors.toList());
|
|
|
/*初始化附表对象*/
|
|
|
SubTable sta=new SubTable(subTableFds);
|
|
|
/*根据行号排序*/
|
|
@@ -915,7 +856,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
String itemName=FormulaUtils.parseItemName(f.getEName());
|
|
|
String key=itemName.trim();
|
|
|
/*同项目*/
|
|
|
- Optional<FormData> designFdOp= this.formDataMap.values().stream().filter(o->o.getTableName().equals(f.getTableName())&&StringUtils.isEquals(itemName,FormulaUtils.parseItemName(o.getEName()))&&o.getEName().contains("设计值")&&!o.getEName().contains("判定")).findAny();
|
|
|
+ Optional<FormData> designFdOp= tec.formDataMap.values().stream().filter(o->o.getTableName().equals(f.getTableName())&&StringUtils.isEquals(itemName,FormulaUtils.parseItemName(o.getEName()))&&o.getEName().contains("设计值")&&!o.getEName().contains("判定")).findAny();
|
|
|
if(designFdOp.isPresent()){
|
|
|
key+="@"+designFdOp.get().getValues().stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).findAny().orElse("");
|
|
|
}
|
|
@@ -925,7 +866,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/*把附表数据刷入对应的附表元素对象*/
|
|
|
sta.flush();
|
|
|
}
|
|
|
- String mainTableName = this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(AppWbsTreeContractVO::getInitTableName).findFirst().orElse("");
|
|
|
+ String mainTableName = this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(NodeTable::getInitTableName).findFirst().orElse("");
|
|
|
if(Func.isNotBlank(mainTableName)){
|
|
|
List<FormData> sourceFds=tec.getFormDataMap().values().stream().filter(s->!s.empty()).filter(s->StringUtils.isEquals(s.getTableName(),mainTableName)).collect(Collectors.toList());
|
|
|
Map<String,Object> copyMap= new HashMap<>();
|
|
@@ -1089,7 +1030,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
predicate= predicate.and((FormData t)->t.getEName().contains("合格"));
|
|
|
}
|
|
|
predicate= predicate.and((FormData t)->FormulaUtils.similarity(t.getEName(),measured.getEName())>0.75);
|
|
|
- //FormData target=tec.getFormDataMap().values().stream().filter(t->StringUtils.isEquals(t.getTableName(),measured.getTableName())&&t.getEName().contains("设计")&&FormulaUtils.similarity(t.getEName(),measured.getEName())>0.75).max(Comparator.comparingDouble((FormData t)->FormulaUtils.similarity(t.getEName(),measured.getEName()))).orElse(null);
|
|
|
return tec.getFormDataMap().values().stream().filter(predicate).max(Comparator.comparingDouble((FormData t)->FormulaUtils.similarity(t.getEName(),measured.getEName()))).orElse(null);
|
|
|
}
|
|
|
|
|
@@ -1161,7 +1101,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
//enlarge(fd,pageAdd);
|
|
|
}
|
|
|
/*复制只有一个单元格的元素*/
|
|
|
- this.formDataMap.values().stream().filter(e->StringUtils.isEquals(e.getTableName(),fd.getTableName())&&fd.getCoordsList().size()==1).forEach(t->{
|
|
|
+ tec.formDataMap.values().stream().filter(e->StringUtils.isEquals(e.getTableName(),fd.getTableName())&&fd.getCoordsList().size()==1).forEach(t->{
|
|
|
ElementData data=t.getValues().get(t.getValues().size()-1);
|
|
|
int start =data.getIndex();
|
|
|
for(int i=0;i<pageAdd;i++){
|
|
@@ -1195,7 +1135,7 @@ public List<ElementData> setScale(Integer scale,List<ElementData> data){
|
|
|
}
|
|
|
}
|
|
|
/*检查超页情况*/
|
|
|
- this.formDataMap.values().stream().filter(e->e.getIsCurrentNodeElement()&&e.getUpdate()==1&&e.getAddPages()>0).sorted(Comparator.comparing(FormData::getAddPages).reversed())
|
|
|
+ tec.formDataMap.values().stream().filter(e->e.getIsCurrentNodeElement()&&e.getUpdate()==1&&e.getAddPages()>0).sorted(Comparator.comparing(FormData::getAddPages).reversed())
|
|
|
.collect(Collectors.groupingBy(FormData::getTableName,LinkedHashMap::new,Collectors.toList())).values()
|
|
|
.forEach(l->copy(l.get(0)));
|
|
|
}
|
|
@@ -1482,8 +1422,8 @@ public List<ElementData> setScale(Integer scale,List<ElementData> data){
|
|
|
data= d.getPassList().stream().mapToInt(Func::toInt).count();
|
|
|
}
|
|
|
}else{
|
|
|
- FormData dataFd=this.formDataMap.get(codeList.get(0));
|
|
|
- FormData designFd=this.formDataMap.get(codeList.get(1));
|
|
|
+ FormData dataFd=tec.formDataMap.get(codeList.get(0));
|
|
|
+ FormData designFd=tec.formDataMap.get(codeList.get(1));
|
|
|
if(dataFd!=null&&designFd!=null){
|
|
|
if(dataFd.getValues().stream().map(ElementData::getValue).anyMatch(StringUtils::isNotEmpty)&&(designFd.getValues().size()>1||designFd.getValues().stream().map(ElementData::getValue).anyMatch(StringUtils::isEmpty))){
|
|
|
/*多少个设计值暂时默认全部合格,满足绝大部分结果*/
|
|
@@ -1595,7 +1535,7 @@ public List<ElementData> setScale(Integer scale,List<ElementData> data){
|
|
|
String[] tfa=codes.split(",");
|
|
|
for(String code:tfa){
|
|
|
code=code.replace("E['","").replace("']","");
|
|
|
- FormData fdt=this.formDataMap.get(code);
|
|
|
+ FormData fdt=tec.formDataMap.get(code);
|
|
|
if(fdt!=null){
|
|
|
target.add(fdt);
|
|
|
}
|