Commit d53e31a3 authored by chase's avatar chase

fix 报表导出无法导出字符串bug

parent 7bdb4388
......@@ -44,7 +44,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static org.apache.poi.ss.usermodel.Cell.CELL_TYPE_FORMULA;
import static pwc.taxtech.atms.common.util.SpringContextUtil.reportMapper;
import static pwc.taxtech.atms.dto.vatdto.WrapPeriodJobDto.*;
......@@ -574,7 +573,26 @@ public class ReportGeneratorImpl {
List<AnalysisSalesValueDto> dataList = periodCellDataMapper.selectReportData(a.getTemplateId(),a.getProjectId(),a.getPeriod());
for(AnalysisSalesValueDto cellData:dataList){
Sheet sheet = tWorkbook.getSheetAt(0);
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getData());
try{
BigDecimal amount = new BigDecimal(cellData.getData());
BigDecimal manualAmount = new BigDecimal("0");
if(StringUtils.isNotBlank(cellData.getKeyinData())){
manualAmount = new BigDecimal(cellData.getKeyinData());
}else if(StringUtils.isNotBlank(cellData.getManualAmount())){
manualAmount = new BigDecimal(cellData.getManualAmount());
}
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(amount.add(manualAmount).setScale(2).toString());
}catch (NumberFormatException e){
//判断是否有手工数据源有得话以手工数据源为主
if(StringUtils.isNotBlank(cellData.getKeyinData())){
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getKeyinData());
}else if(StringUtils.isNotBlank(cellData.getManualAmount())){
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getManualAmount());
}else{
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getData());
}
}
}
POIUtil.cloneSheetAndStyle(tWorkbook.getSheetAt(0), workbook.createSheet(a.getCode()),workbook);
......@@ -642,7 +660,25 @@ public class ReportGeneratorImpl {
Cell cell = sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex());
sheet.getRow(cellData.getRowIndex()).removeCell(cell);
sheet.getRow(cellData.getRowIndex()).createCell(cellData.getColumnIndex());
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getData());
try{
BigDecimal amount = new BigDecimal(cellData.getData());
BigDecimal manualAmount = new BigDecimal("0");
if(StringUtils.isNotBlank(cellData.getKeyinData())){
manualAmount = new BigDecimal(cellData.getKeyinData());
}else if(StringUtils.isNotBlank(cellData.getManualAmount())){
manualAmount = new BigDecimal(cellData.getManualAmount());
}
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(amount.add(manualAmount).setScale(2).toString());
}catch (NumberFormatException e){
//判断是否有手工数据源有得话以手工数据源为主
if(StringUtils.isNotBlank(cellData.getKeyinData())){
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getKeyinData());
}else if(StringUtils.isNotBlank(cellData.getManualAmount())){
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getManualAmount());
}else{
sheet.getRow(cellData.getRowIndex()).getCell(cellData.getColumnIndex()).setCellValue(cellData.getData());
}
}
}
POIUtil.cloneSheetAndStyle(tWorkbook.getSheetAt(0), workbook.createSheet(a.getCode()),workbook);
......
......@@ -2047,9 +2047,9 @@ public class ReportServiceImpl extends BaseService {
cellData.setId(distributedIdService.nextId());
cellData.setReportId(data.getReportId());
cellData.setCellTemplateId(Long.parseLong(data.getCellTemplateId()));
cellData.setData(data.getAmount() == null ? null : data.getAmount().toString());
cellData.setData("0.0");
cellData.setKeyinData(data.getKeyinData());
cellData.setFormulaExp(data.getAmount() == null ? "0.0" : data.getAmount().toString());
cellData.setFormulaExp(data.getKeyinData() == null ? "0.0" : data.getKeyinData());
cellData.setCreateBy("admin");
cellData.setCreateTime(new Date());
cellData.setUpdateBy("admin");
......
......@@ -9,10 +9,30 @@ public class AnalysisSalesValueDto {
private String data;
private String manualAmount;
private String keyinData;
private Integer rowIndex;
private Integer columnIndex;
public String getManualAmount() {
return manualAmount;
}
public void setManualAmount(String manualAmount) {
this.manualAmount = manualAmount;
}
public String getKeyinData() {
return keyinData;
}
public void setKeyinData(String keyinData) {
this.keyinData = keyinData;
}
public String getData() {
return data;
}
......
......@@ -113,14 +113,9 @@
<select id = "selectReportData" resultType="pwc.taxtech.atms.dpo.AnalysisSalesValueDto">
select cell_template.row_index as rowIndex,
cell_template.column_index as columnIndex,
case
when (LOCATE('-', cell_data.data) > 0) then
cell_data.data
else
CONVERT(cell_data.data, decimal(18, 2)) +
CONVERT(if(data_source.amount is null, 0, data_source.amount), decimal(18, 2))
end as data
cell_data.data as data,
data_source.amount as manualAmount,
data_source.keyin_data as keyinData
from period_cell_data cell_data
left join period_cell_template cell_template
on cell_data.cell_template_id = cell_template.cell_template_id
......
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