|
@@ -1125,34 +1125,49 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(Func.isEmpty(mainTable)){
|
|
|
return;
|
|
|
}
|
|
|
- NodeTable main = mainTable.get(0);
|
|
|
+ List<NodeTable> mainTableList= mainTable.stream().collect(Collectors.groupingBy(NodeTable::getInitTableName)).values().stream().map(l->l.get(0)).collect(Collectors.toList());
|
|
|
+ /*NodeTable main = mainTable.get(0);*/
|
|
|
+ List<Long> pkeyIdsMain=mainTableList.stream().map(NodeTable::getPKeyId).collect(Collectors.toList());
|
|
|
if(mainTable.size()>1){
|
|
|
- /*超过一页全部删除*/
|
|
|
- List<Long> removeIds = mainTable.stream().skip(1L).map(NodeTable::getPKeyId).collect(Collectors.toList());
|
|
|
- tec.getKeyMappers().removeIf(e->removeIds.contains(e.getPkId()));
|
|
|
- this.wbsTreeContractMapper.deleteByIds(removeIds);
|
|
|
+ List<Long> removeIds = mainTable.stream().map(NodeTable::getPKeyId).filter(x ->!pkeyIdsMain.contains(x)).collect(Collectors.toList());
|
|
|
+ if(removeIds.size()>0) {
|
|
|
+ /*每种检验单,除了第一页都删掉*/
|
|
|
+ tec.getKeyMappers().removeIf(e -> removeIds.contains(e.getPkId()));
|
|
|
+ /*同时tableAll里也要删除*/
|
|
|
+ tec.getTableAll().removeIf(e -> removeIds.contains(e.getPKeyId()));
|
|
|
+ this.wbsTreeContractMapper.deleteByIds(removeIds);
|
|
|
+ /*this.wbsTreeContractMapper.deleteLogicByIds(removeIds);*/
|
|
|
+ }
|
|
|
/*多余的表删除之后需要,裁剪多余表头数据保留全部实测数据然后重新设置增页大小*/
|
|
|
- tec.getKeyMappers().stream().filter(e->e.getPkId().equals(main.getPKeyId())).map(KeyMapper::getCode).forEach(e->{
|
|
|
- FormData target= tec.formDataMap.get(e);
|
|
|
- int capacity=target.getCoordsList().size();
|
|
|
- List<ElementData> eds = target.getValues();
|
|
|
- if(eds.size()>capacity){
|
|
|
- if(capacity>1){
|
|
|
- target.setAddPages((eds.size()/capacity)-1);
|
|
|
- }else{
|
|
|
- target.setValues(eds.stream().limit(capacity).collect(Collectors.toList()));
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ for(NodeTable mt:mainTableList) {
|
|
|
+ tec.getKeyMappers().stream().filter(e -> e.getPkId().equals(mt.getPKeyId())).map(KeyMapper::getCode).forEach(e -> {
|
|
|
+ FormData target = tec.formDataMap.get(e);
|
|
|
+ int capacity = target.getCoordsList().size();
|
|
|
+ List<ElementData> eds = target.getValues();
|
|
|
+ if (eds.size() > capacity) {
|
|
|
+ if (capacity > 1) {
|
|
|
+ /*元素每页单元格数量大于1则重新视为业务数据,重新计算增页*/
|
|
|
+ target.setAddPages((eds.size() / capacity) - 1);
|
|
|
+ } else {
|
|
|
+ /*表头表尾元素只留首页的内容*/
|
|
|
+ target.setValues(eds.stream().limit(capacity).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(target.getAddPages()>0){
|
|
|
+ /*筛选元素长度超1页的元素*/
|
|
|
+ inspectionList.add(target);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
/*获取所有挂在检验单、评定表里的元素映射关系*/
|
|
|
- tec.getKeyMappers().stream().filter(p -> p.getPkId().equals(main.getPKeyId())).forEach(k -> {
|
|
|
- /*筛选元素长度超1页的元素*/
|
|
|
+/* tec.getKeyMappers().stream().filter(p -> p.getPkId().equals(main.getPKeyId())).forEach(k -> {
|
|
|
+ *//*筛选元素长度超1页的元素*//*
|
|
|
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);
|
|
|
}
|
|
|
- });
|
|
|
+ });*/
|
|
|
if (Func.isNotEmpty(inspectionList)) {
|
|
|
/*检查是否存在附表,不存在挂载*/
|
|
|
List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表")).collect(Collectors.toList());
|
|
@@ -1166,11 +1181,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
/*名称,设计值,实测值 附表元素*/
|
|
|
List<FormData> subTableFds=tec.pick(e->StringUtils.isEquals(first.getInitTableName(),e.getTableName()));
|
|
|
- /*主表的所有项目,附表的输出排序*/
|
|
|
- List<FormData> mainList=tec.pick(e->StringUtils.isEquals(main.getInitTableName(),e.getTableName())&&e.getCoordsList().size()>1);
|
|
|
/*初始化附表对象*/
|
|
|
- SubTable sta=new SubTable(subTableFds,mainList);
|
|
|
- sta.put(inspectionList,tec.formDataMap);
|
|
|
+ SubTable sta=new SubTable(subTableFds,tec, mainTableList);
|
|
|
+ sta.put(inspectionList);
|
|
|
/*把附表数据刷入对应的附表元素对象*/
|
|
|
sta.flush();
|
|
|
/*把主表的表头表尾信息拷贝*/
|
|
@@ -1725,26 +1738,29 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(wtc!=null) {
|
|
|
System.out.println("A0耗时"+(System.currentTimeMillis()-start));
|
|
|
List<Map<String, Object>> listMap = this.jdbcTemplate.queryForList("select init_table_name number ,node_name nodeName ,b.tab_ch_name tableName from m_wbs_tree_contract a join m_table_info b on a.init_table_name = b.tab_en_name where parent_id =? and a.is_deleted=0 and contract_id = ?", wtc.getId(), wtc.getContractId());
|
|
|
- Predicate<Map<String, Object>> tableNameFilter = map ->true;
|
|
|
- if(Func.isNotEmpty(tableName)){
|
|
|
- tableNameFilter=map->map.get("nodeName").toString().contains(tableName);
|
|
|
- }
|
|
|
- Map<String, Map<String, Object>> tablesMap = listMap.stream().filter(tableNameFilter).collect(Collectors.toMap(m -> m.get("number").toString(), m -> m, (m1, m2) -> m1));
|
|
|
+ Map<String, Map<String, Object>> tablesMap = listMap.stream().collect(Collectors.toMap(m -> m.get("number").toString(), m -> m, (m1, m2) -> m1));
|
|
|
System.out.println("A1耗时"+(System.currentTimeMillis()-start));
|
|
|
if(tablesMap.size()>0) {
|
|
|
String tableNames = String.join("','", tablesMap.keySet());
|
|
|
List<FormData> processFds = this.createFormDataByTableName(tableNames);
|
|
|
System.out.println("B耗时"+(System.currentTimeMillis()-start));
|
|
|
if(processFds.size()>0) {
|
|
|
+ Map<String,String> dictMap = processFds.stream().collect(Collectors.toMap(FormData::getCode,fd->fd.getTableChName()+":"+fd.getEName(),(p,n)->p));
|
|
|
Predicate<FormData> elementFilter = ele ->true;
|
|
|
+ if(Func.isNotEmpty(tableName)){
|
|
|
+ Map<String,Map<String, Object>> initTableNamesMap= listMap.stream().filter(map->map.get("nodeName").toString().contains(tableName)).collect(Collectors.toMap(m -> m.get("number").toString(), m -> m, (m1, m2) -> m1));
|
|
|
+ if(initTableNamesMap.size()>0){
|
|
|
+ List<String> initTableNames = new ArrayList<>(initTableNamesMap.keySet());
|
|
|
+ elementFilter=ele->initTableNames.contains(ele.getTableName());
|
|
|
+ }
|
|
|
+ }
|
|
|
if(Func.isNotEmpty(elementName)){
|
|
|
- elementFilter=ele->ele.getEName().contains(elementName);
|
|
|
+ elementFilter= elementFilter.and(ele->ele.getEName().contains(elementName));
|
|
|
}
|
|
|
- Map<String,String> dictMap = processFds.stream().collect(Collectors.toMap(FormData::getCode,fd->fd.getTableChName()+":"+fd.getEName(),(p,n)->p));
|
|
|
- processFds=processFds.stream().filter(elementFilter).collect(Collectors.toList());
|
|
|
- this.formulaInto(processFds, wtc.getProjectId(), String.valueOf(pkeyId), ExecuteType.INSPECTION);
|
|
|
+ List<FormData> result=processFds.stream().filter(elementFilter).collect(Collectors.toList());
|
|
|
+ this.formulaInto(result, wtc.getProjectId(), String.valueOf(pkeyId), ExecuteType.INSPECTION);
|
|
|
System.out.println("C耗时"+(System.currentTimeMillis()-start));
|
|
|
- Map<String, List<Map<String, Object>>> fdGroup = processFds.stream()
|
|
|
+ Map<String, List<Map<String, Object>>> fdGroup = result.stream()
|
|
|
.filter(FormData::executable)
|
|
|
.collect(Collectors.groupingBy(
|
|
|
FormData::getTableChName,
|