Commit 8e7fed59 authored by frank.xa.zhang's avatar frank.xa.zhang

fixed formula cell data can't display issue

parent eb111dbe
......@@ -243,7 +243,7 @@ public class ReportGeneratorImpl extends VatAbstractService implements ReportGen
List<PeriodFormulaBlock> periodFormulaBlocks = periodFormulaBlockMapper.selectByExample(periodFormulaBlockExample2);
//TODO:如果formula 为 ND(100) +ND(22) ,需要使用正则表达式拆分出自定义公式,然后根据自定义公式取formulablock 的数据进行替换
String regex = "[A-Z]*\\([A-Za-z0-9\\\"\\,\\.\\u4e00-\\u9fa5\\%]*\\)";
String regex = "[A-Z]*\\([\\-A-Za-z0-9\\\"\\,\\.\\u4e00-\\u9fa5\\%]*\\)";
Pattern p = Pattern.compile(regex);
String sourceFormula = periodCellTemplateConfig.getFormula();
String resultFormula = periodCellTemplateConfig.getFormula();
......@@ -348,7 +348,7 @@ public class ReportGeneratorImpl extends VatAbstractService implements ReportGen
} else {
data = EMPTY;
}
cellData.setData(data);
cellData.setData(new BigDecimal(data).toString());
PeriodFormulaBlockExample periodFormulaBlockExample = new PeriodFormulaBlockExample();
periodFormulaBlockExample.createCriteria().andPeriodEqualTo(period)
.andCellTemplateIdEqualTo(tempPeriodCellTemplate.get().getCellTemplateId());
......
......@@ -213,7 +213,7 @@ public class ReportServiceImpl extends VatAbstractService implements ReportServi
for (CellTemplateConfig cellTemplateConfig : cellTemplateConfigList) {
i++;
Long startTime = System.currentTimeMillis();
logger.debug("cellTemplateConfig copy start: " + startTime);
//logger.debug("cellTemplateConfig copy start: " + startTime);
PeriodCellTemplateConfig periodCellTemplateConfig = new PeriodCellTemplateConfig();
CommonUtils.copyProperties(cellTemplateConfig, periodCellTemplateConfig);
periodCellTemplateConfig.setId(distributedIDService.nextId());
......@@ -252,7 +252,7 @@ public class ReportServiceImpl extends VatAbstractService implements ReportServi
}
}
periodCellTemplateConfigList.add(periodCellTemplateConfig);
logger.debug("cellTemplateConfig copy end,used time: " + (System.currentTimeMillis() - startTime) + " ms");
//logger.debug("cellTemplateConfig copy end,used time: " + (System.currentTimeMillis() - startTime) + " ms");
}
logger.debug("cellTemplateConfigs copy end,used: " + (System.currentTimeMillis() - startTimeOut) + " ms, copy: " + i + " items");
......
......@@ -15,11 +15,10 @@ import pwc.taxtech.atms.vat.entity.DataSourceDetail;
import pwc.taxtech.atms.vat.entity.PeriodFormulaBlock;
import pwc.taxtech.atms.vat.service.impl.FormulaAgent;
import javax.tools.JavaCompiler;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
public class FunctionBase {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
......@@ -131,12 +130,23 @@ public class FunctionBase {
dataSource.setPeriod(period);
SpringContextUtil.dataSourceMapper.insertSelective(dataSource);
for (Object obj : dataSourceList) {
DataSourceDetail dataSourceDetail = new DataSourceDetail();
dataSourceDetail.setId(SpringContextUtil.distributedIDService.nextId());
dataSourceDetail.setDataSourceId(dataSourceID);
dataSourceDetail.setDataSourceType(formulaDataSourceDetailType.getCode());
dataSourceDetail.setItemValue(JSON.toJSONString(obj));
SpringContextUtil.dataSourceDetailMapper.insertSelective(dataSourceDetail);
if (obj.getClass()==java.util.ArrayList.class) {
for (Object obj2 : (ArrayList<Object>)obj) {
DataSourceDetail dataSourceDetail = new DataSourceDetail();
dataSourceDetail.setId(SpringContextUtil.distributedIDService.nextId());
dataSourceDetail.setDataSourceId(dataSourceID);
dataSourceDetail.setDataSourceType(formulaDataSourceDetailType.getCode());
dataSourceDetail.setItemValue(JSON.toJSONString(obj2));
SpringContextUtil.dataSourceDetailMapper.insertSelective(dataSourceDetail);
}
} else {
DataSourceDetail dataSourceDetail = new DataSourceDetail();
dataSourceDetail.setId(SpringContextUtil.distributedIDService.nextId());
dataSourceDetail.setDataSourceId(dataSourceID);
dataSourceDetail.setDataSourceType(formulaDataSourceDetailType.getCode());
dataSourceDetail.setItemValue(JSON.toJSONString(obj));
SpringContextUtil.dataSourceDetailMapper.insertSelective(dataSourceDetail);
}
}
return dataSourceID;
}
......
......@@ -150,21 +150,21 @@ public class JXFP extends FunctionBase implements FreeRefFunction {
double val = dataSource.stream().mapToDouble(a -> a.getAmount().doubleValue()).sum();
Long dataSourceId = saveDataSource(ec, Collections.singletonList(dataSource),
FormulaDataSourceDetailType.InputInvoiceDataSourceDto,
BigDecimal.valueOf(val),period,formulaContext.getReportTemplateGroupID());
saveFormulaBlock(period, ec, formulaExpression, BigDecimal.valueOf(val), dataSourceId);
BigDecimal.valueOf(val),formulaContext.getPeriod(),formulaContext.getReportTemplateGroupID());
saveFormulaBlock(formulaContext.getPeriod(), ec, formulaExpression, BigDecimal.valueOf(val), dataSourceId);
return new NumberEval(val);
} else if (resultType == 1) {
double val = dataSource.stream().mapToDouble(a -> a.getTaxAmount().doubleValue()).sum();
Long dataSourceId = saveDataSource(ec, Collections.singletonList(dataSource),
FormulaDataSourceDetailType.InputInvoiceDataSourceDto,
BigDecimal.valueOf(val),period,formulaContext.getReportTemplateGroupID());
saveFormulaBlock(period, ec, formulaExpression, BigDecimal.valueOf(val), dataSourceId);
BigDecimal.valueOf(val),formulaContext.getPeriod(),formulaContext.getReportTemplateGroupID());
saveFormulaBlock(formulaContext.getPeriod(), ec, formulaExpression, BigDecimal.valueOf(val), dataSourceId);
return new NumberEval(val);
} else if (resultType == 2) {
double val = dataSource.size();
Long dataSourceId = saveDataSource(ec, Collections.singletonList(dataSource),
FormulaDataSourceDetailType.InputInvoiceDataSourceDto,
BigDecimal.valueOf(val),period,formulaContext.getReportTemplateGroupID());
BigDecimal.valueOf(val),formulaContext.getPeriod(),formulaContext.getReportTemplateGroupID());
saveFormulaBlock(period, ec, formulaExpression, BigDecimal.valueOf(val), dataSourceId);
return new NumberEval(val);
}
......
......@@ -958,7 +958,7 @@ CREATE TABLE IF NOT EXISTS `DBKeyword_ProjectDbName`.`data_source_detail` (
`id` bigint(18) unsigned NOT NULL,
`data_source_id` bigint(18) unsigned NOT NULL DEFAULT '0',
`data_source_type` int(11) unsigned NOT NULL DEFAULT '0',
`item_value` varchar(500) NOT NULL DEFAULT '',
`item_value` varchar(1000) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment