Commit eb111dbe authored by frank.xa.zhang's avatar frank.xa.zhang

Merge branch 'dev' into dev_frank

parents e0ac49ad f30b0979
......@@ -95,4 +95,16 @@ public class BBParasBo {
this.year = curYear;
this.formulaExpression=otherBo.formulaExpression;
}
@Override
public String toString() {
return "BBParasBo{" +
"reportCode='" + reportCode + '\'' +
", columnIndex=" + columnIndex +
", rowIndex=" + rowIndex +
", period=" + period +
", year=" + year +
", formulaExpression='" + formulaExpression + '\'' +
'}';
}
}
......@@ -35,4 +35,12 @@ public class CurrentPeriodBo {
return new CurrentPeriodBo(parameterPeriod);
}
}
@Override
public String toString() {
return "CurrentPeriodBo{" +
"curYear=" + curYear +
", curPeriod=" + curPeriod +
'}';
}
}
......@@ -42,9 +42,9 @@ public class ReportCellDataSourceDto extends FormulaDataSourceDto {
dataSource.name = DataSourceName.ReportDataSource;
dataSource.year = currentPeriodBo.curYear;
dataSource.period = currentPeriodBo.curPeriod;
dataSource.columnIndex = bbParasBo.getColumnIndex();
dataSource.columnIndex = bbParasBo.getColumnIndex() - 1;
dataSource.columnName = cellTemplateData.getColumnName();
dataSource.rowIndex = bbParasBo.getRowIndex();
dataSource.rowIndex = bbParasBo.getRowIndex() - 1;
dataSource.rowName = cellTemplateData.getRowName();
dataSource.reportTemplateID = cellTemplateData.getReportTemplateID();
dataSource.cellDataID = cellData.getId() + "";
......
package pwc.taxtech.atms.exception;
public class Exceptions {
public static final FormulaException BB_CELL_TEMP_NULL = new FormulaException("cell template data is null");
public static final FormulaException BB_CELL_TEMP_NULL = new FormulaException("cell template group is null or empty");
public static final FormulaException BB_REPORT_NULL = new FormulaException("cell report is null");
public static final FormulaException BB_CELL_DATA_NULL = new FormulaException("cell data is null");
public static final FormulaException BB_CELL_DATA_EMPTY = new FormulaException("cell data is empty");
......
package pwc.taxtech.atms.vat.service.impl.report.functions;
import org.apache.poi.ss.formula.OperationEvaluationContext;
import org.apache.poi.ss.formula.WorkbookEvaluator;
import org.apache.poi.ss.formula.eval.NumberEval;
import org.apache.poi.ss.formula.eval.OperandResolver;
import org.apache.poi.ss.formula.eval.StringEval;
import org.apache.poi.ss.formula.eval.ValueEval;
import org.apache.poi.ss.formula.functions.FreeRefFunction;
......@@ -18,6 +20,7 @@ import pwc.taxtech.atms.exception.Exceptions;
import pwc.taxtech.atms.exception.FormulaException;
import pwc.taxtech.atms.vat.entity.CellData;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
......@@ -57,11 +60,14 @@ public class BB extends FunctionBase implements FreeRefFunction {
ReportCellDataSourceDto nullCellDto = ReportCellDataSourceDto.nullDataSource(bo, curPeriod);
ds.add(nullCellDto);
CellTemplatePerGroupDto cellTemplateData = agent.getCellTemplateGroupDto(formulaContext.getReportTemplateGroupID(),
formulaContext.getProjectID()).stream().filter(dto -> dto.getRowIndex() == bo.getColumnIndex() - 1
&& dto.getColumnIndex() == bo.getColumnIndex() - 1).findFirst().get();
BigDecimal cellValue = BigDecimal.ZERO;
try {
CellTemplatePerGroupDto cellTemplateData = agent.getCellTemplateGroupDto(formulaContext.getReportTemplateGroupID(),
formulaContext.getProjectID()).stream().filter(dto -> dto.getRowIndex() == bo.getColumnIndex() - 1
&& dto.getColumnIndex() == bo.getColumnIndex() - 1).findFirst().orElseThrow(() -> {
return Exceptions.BB_CELL_TEMP_NULL;
});
MyAsserts.assertNotNull(cellTemplateData, Exceptions.BB_CELL_TEMP_NULL);
nullCellDto.fixedWithGroup(cellTemplateData);
......@@ -85,13 +91,16 @@ public class BB extends FunctionBase implements FreeRefFunction {
return returnEval;
} else if (bo.getPeriod().intValue() == 0) {
cellValue = new BigDecimal(ec.getWorkbook().getSheet(ec.getWorkbook().getSheetIndex(bo.getReportCode()))
.getCell(bo.getRowIndex() - 1, bo.getColumnIndex() - 1).getNumericCellValue());
return cellValue;
Field evaluatorField= OperationEvaluationContext.class.getDeclaredField("_bookEvaluator");
evaluatorField.setAccessible(true);
WorkbookEvaluator evaluator=(WorkbookEvaluator)evaluatorField.get(ec);
ValueEval eval=evaluator.evaluate(ec.getWorkbook().getSheet(ec.getWorkbook().getSheetIndex(bo.getReportCode()))
.getCell(bo.getRowIndex() - 1, bo.getColumnIndex() - 1));
return cellValue=new BigDecimal(OperandResolver.coerceValueToDouble(eval));
}
bo.disCount();
// bo.disCount();
CellData cellData = null;
String dbName = agent.getPastProjectDbName(curPeriod.getCurYear(),
......@@ -129,8 +138,9 @@ public class BB extends FunctionBase implements FreeRefFunction {
LOGGER.debug("cell static value ");
return cellValue;
} finally {
LOGGER.warn("error for bb cacls for {} and current for {}", bo.toString(), curPeriod.toString());
Long dataSourceID = saveDataSource(ec, ds, FormulaDataSourceDetailType.ReportCellDataSourceDto,
cellValue, formulaContext.getPeriod(), formulaContext.getReportTemplateGroupID());
cellValue, formulaContext.getPeriod(), formulaContext.getReportTemplateGroupID(),bo.getColumnIndex()-1,bo.getRowIndex()-1);
saveFormulaBlock(formulaContext.getPeriod(), ec, bo.expression(curPeriod.getCurPeriod(), curPeriod.getCurYear()), cellValue, dataSourceID);
}
}
......
......@@ -10,10 +10,11 @@ import org.slf4j.LoggerFactory;
import pwc.taxtech.atms.common.util.SpringContextUtil;
import pwc.taxtech.atms.constant.enums.FormulaDataSourceDetailType;
import pwc.taxtech.atms.constant.enums.FormulaDataSourceType;
import pwc.taxtech.atms.vat.entity.*;
import pwc.taxtech.atms.vat.entity.DataSource;
import pwc.taxtech.atms.vat.entity.DataSourceDetail;
import pwc.taxtech.atms.vat.entity.PeriodFormulaBlock;
import pwc.taxtech.atms.vat.service.impl.FormulaAgent;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
......@@ -90,9 +91,14 @@ public class FunctionBase {
}
}
public Long saveDataSource(OperationEvaluationContext ec, List<Object> dataSourceList,
FormulaDataSourceDetailType formulaDataSourceDetailType, BigDecimal val, int period, Long templateGroupId) {
return saveDataSource(ec, dataSourceList, formulaDataSourceDetailType, val, period, templateGroupId, null, null);
}
public Long saveDataSource(OperationEvaluationContext ec, List<Object> dataSourceList,
FormulaDataSourceDetailType formulaDataSourceDetailType, BigDecimal val,
int period, Long templateGroupId) {
int period, Long templateGroupId, Integer colNumP, Integer rowNumP) {
String reportCode = ec.getWorkbook().getSheetName(ec.getSheetIndex());
int colNum = ec.getColumnIndex();
int rowNum = ec.getRowIndex();
......@@ -117,8 +123,8 @@ public class FunctionBase {
dataSource.setUpdateBy("Admin");
dataSource.setCreateTime(creatime);
dataSource.setUpdateTime(creatime);
dataSource.setRowIndex(ec.getRowIndex());
dataSource.setColumnIndex(ec.getColumnIndex());
dataSource.setRowIndex(rowNumP == null ? ec.getRowIndex() : rowNumP);
dataSource.setColumnIndex(colNumP == null ? ec.getColumnIndex() : colNumP);
dataSource.setRowName("");
dataSource.setColumnName("");
dataSource.setCellTemplateId(periodCellTemplateId);
......
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