|
@@ -2529,32 +2529,43 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- String[] tabArr=new String[]{"计量报表","动员预付款报表","材料预付款报表"};
|
|
|
|
@Override
|
|
@Override
|
|
public List<ReportResult> execute3(Long contractId,Long periodId ,Integer type) {
|
|
public List<ReportResult> execute3(Long contractId,Long periodId ,Integer type) {
|
|
ContractInfo contractInfo = this.contractInfoService.getById(contractId);
|
|
ContractInfo contractInfo = this.contractInfoService.getById(contractId);
|
|
- Map<String,String> parent= this.getSqlOne("select id,wbs_id wbsId,CONCAT(ancestors,',',id) path from m_wbs_tree_private a where a.node_name=? and a.project_id=?",Map.class,tabArr[type],contractInfo.getPId());
|
|
|
|
|
|
+ MeterType meterType = MeterType.getByIndex(type);
|
|
|
|
+
|
|
|
|
+ /*元素创建*/
|
|
|
|
+ Map<String,String> parent= this.getSqlOne("select id,wbs_id wbsId,CONCAT(ancestors,',',id) path from m_wbs_tree_private a where a.node_name=? and a.project_id=?",Map.class,meterType.name(),contractInfo.getPId());
|
|
List<NodeTable> tableList= this.getSqlList("select p_key_id pkeyId, node_name nodeName ,init_table_name initTableName,html_url htmlUrl from m_wbs_tree_private where ancestors like ? and LENGTH(html_url)>0 and is_deleted=0 and project_id=? and wbs_id=?",NodeTable.class,parent.get("path")+"%",contractInfo.getPId(),parent.get("wbsId"));
|
|
List<NodeTable> tableList= this.getSqlList("select p_key_id pkeyId, node_name nodeName ,init_table_name initTableName,html_url htmlUrl from m_wbs_tree_private where ancestors like ? and LENGTH(html_url)>0 and is_deleted=0 and project_id=? and wbs_id=?",NodeTable.class,parent.get("path")+"%",contractInfo.getPId(),parent.get("wbsId"));
|
|
Map<String,Map<String,String>> coordinateMap=tableList.stream().collect(Collectors.toMap(NodeTable::getInitTableName,m->FormulaUtils.getElementCell(m.getHtmlUrl()),(v1,v2)->v2));
|
|
Map<String,Map<String,String>> coordinateMap=tableList.stream().collect(Collectors.toMap(NodeTable::getInitTableName,m->FormulaUtils.getElementCell(m.getHtmlUrl()),(v1,v2)->v2));
|
|
List<FormData> processFds = this.createFormDataByTableName(tableList.stream().map(NodeTable::getInitTableName).collect(Collectors.joining("','")));
|
|
List<FormData> processFds = this.createFormDataByTableName(tableList.stream().map(NodeTable::getInitTableName).collect(Collectors.joining("','")));
|
|
listForMeter(processFds,contractInfo.getPId(),parent.get("id"));
|
|
listForMeter(processFds,contractInfo.getPId(),parent.get("id"));
|
|
|
|
+
|
|
|
|
+ /*转换器声明*/
|
|
TableElementConverter tec = new TableElementConverter(processFds,coordinateMap,tableList);
|
|
TableElementConverter tec = new TableElementConverter(processFds,coordinateMap,tableList);
|
|
tec.setProjectId(Long.parseLong(contractInfo.getPId()));
|
|
tec.setProjectId(Long.parseLong(contractInfo.getPId()));
|
|
tec.setContractId(contractInfo.getId());
|
|
tec.setContractId(contractInfo.getId());
|
|
tec.setPeriodId(periodId);
|
|
tec.setPeriodId(periodId);
|
|
tec.setLog(new FormulaLog());
|
|
tec.setLog(new FormulaLog());
|
|
|
|
+ tec.setMeterType(meterType);
|
|
tec.before();
|
|
tec.before();
|
|
|
|
+
|
|
|
|
+ /*执行链*/
|
|
List<FormulaHandleChain> formulaHandleChains = new ArrayList<>();
|
|
List<FormulaHandleChain> formulaHandleChains = new ArrayList<>();
|
|
|
|
+ /*初始化*/
|
|
ExecutorInit init= new ExecutorInit(tec);
|
|
ExecutorInit init= new ExecutorInit(tec);
|
|
- init.setBaseInfoFc(this.formulaDao.getBaseInfo());
|
|
|
|
- init.setMeterPeriodFc(this.formulaDao.getMeterPeriod());
|
|
|
|
|
|
+ init.setGetBaseInfo(this.formulaDao.getBaseInfo());
|
|
|
|
+ init.setGetMeterPeriod(this.formulaDao.getMeterPeriod());
|
|
formulaHandleChains.add(init);
|
|
formulaHandleChains.add(init);
|
|
formulaHandleChains.add(new ExecutorSort(tec));
|
|
formulaHandleChains.add(new ExecutorSort(tec));
|
|
formulaHandleChains.add(new ExecutorPre(tec));
|
|
formulaHandleChains.add(new ExecutorPre(tec));
|
|
|
|
+ /*特殊公式*/
|
|
ExecutorSpecial special = new ExecutorSpecial(tec);
|
|
ExecutorSpecial special = new ExecutorSpecial(tec);
|
|
special.setMaterialListFc(this.formulaDao.getMaterialForm());
|
|
special.setMaterialListFc(this.formulaDao.getMaterialForm());
|
|
formulaHandleChains.add(special);
|
|
formulaHandleChains.add(special);
|
|
|
|
+ /*通用计算*/
|
|
formulaHandleChains.add(new ExecutorCalc(tec));
|
|
formulaHandleChains.add(new ExecutorCalc(tec));
|
|
|
|
+ /*格式化*/
|
|
formulaHandleChains.add(new ExecutorFormat(tec));
|
|
formulaHandleChains.add(new ExecutorFormat(tec));
|
|
formulaHandleChains.forEach(FormulaHandleChain::handle);
|
|
formulaHandleChains.forEach(FormulaHandleChain::handle);
|
|
tec.after();
|
|
tec.after();
|