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

Merge branch 'dev' into dev_frank

# Conflicts:
#	atms-api/src/main/java/pwc/taxtech/atms/service/impl/CellTemplateServiceImpl.java
parents 1ca129e1 51d7bf58
......@@ -16,20 +16,20 @@ public class BBParasBo {
private Integer period;
private Integer year;
public BBParasBo(ValueEval[] args, OperationEvaluationContext ec) throws EvaluationException {
public BBParasBo(ValueEval[] args, OperationEvaluationContext ec) throws EvaluationException {
reportCode = resolverString(args, ec, 0);
columnIndex = resolverInteger(args, ec, 1);
rowIndex = resolverInteger(args, ec, 3);
period = resolverInteger(args, ec, 4);
year = resolverInteger(args, ec, 5);
rowIndex = resolverInteger(args, ec, 2);
period = args.length == 4 ? resolverInteger(args, ec, 3) : 0;
year = args.length == 5 ? resolverInteger(args, ec, 4) : 0;
}
public void disCount(){
public void disCount() {
rowIndex--;
columnIndex--;
}
public BBParasBo(BBParasBo otherBo,int period,int curYear) {
public BBParasBo(BBParasBo otherBo, int period, int curYear) {
this.reportCode = otherBo.reportCode;
this.columnIndex = otherBo.getColumnIndex();
this.rowIndex = otherBo.rowIndex;
......
......@@ -28,7 +28,7 @@ public class CloseableFormulaDataSource implements AutoCloseable{
@Override
public void close() throws Exception {
if(!dataSourceList.isEmpty()){
// agent.save(dataSourceList);//TODO: save datasources;
agent.save(dataSourceList);//TODO: save datasources;
}
}
}
......@@ -72,7 +72,7 @@ public class CellTemplateServiceImpl extends AbstractService implements CellTemp
}
@Override
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public OperationResultDto saveOrEdit(CellTemplateConfigDto cellTemplateConfig) {
OperationResultDto result = new OperationResultDto();
CellTemplate cellTemplate = cellTemplateMapper.selectByPrimaryKey(cellTemplateConfig.getCellTemplateID());
......@@ -132,7 +132,6 @@ public class CellTemplateServiceImpl extends AbstractService implements CellTemp
cellTemplateConfig.setFormulaDataSource(operationResultDto.getResultMsg());
cellTemplateConfig.setFormula(cellTemplateConfigDto.getFormula());
cellTemplateConfig.setFormulaDescription(cellTemplateConfigDto.getFormulaDescription());
cellTemplateConfig.setAccountCodes(StringUtils.EMPTY);
cellTemplateConfigList.add(cellTemplateConfig);
}
......
......@@ -5,7 +5,7 @@ import pwc.taxtech.atms.dto.vatdto.CellCalcInfoDto;
import java.util.List;
public interface ReportGenerator {
String generateData(String projectId, List<Long> templateIds, Boolean ifDeleteManualDataSource, List<String> exceptCellTemplates,Integer periodParam, String generator);
String generateData(String projectId, List<Long> templateIds, Boolean ifDeleteManualDataSource, List<String> exceptCellTemplates, Integer periodParam, String generator);
List<CellCalcInfoDto> getCellCalcInfo(List<Long> templateIDList, Integer periodParam);
}
......@@ -6,6 +6,7 @@ import pwc.taxtech.atms.constant.enums.EnumServiceType;
import pwc.taxtech.atms.dao.FormulaAdminMapper;
import pwc.taxtech.atms.dto.GroupId;
import pwc.taxtech.atms.dto.vatdto.CellTemplatePerGroupDto;
import pwc.taxtech.atms.dto.vatdto.FormulaDataSourceDto;
import pwc.taxtech.atms.entitiy.ProjectServiceType;
import pwc.taxtech.atms.entitiy.ProjectServiceTypeExample;
import pwc.taxtech.atms.vat.dao.CellDataMapper;
......@@ -13,6 +14,7 @@ import pwc.taxtech.atms.vat.dao.FormulaProjectMapper;
import pwc.taxtech.atms.vat.dao.ReportMapper;
import pwc.taxtech.atms.vat.entity.CellData;
import pwc.taxtech.atms.vat.entity.CellDataExample;
import pwc.taxtech.atms.vat.entity.DataSource;
import pwc.taxtech.atms.vat.entity.Report;
import pwc.taxtech.atms.vat.entity.ReportExample;
......@@ -58,7 +60,7 @@ public class FormulaAgent extends VatAbstractService {
.andPeriodEqualTo(periodId);
List<Report> reports = reportMapper.selectByExample(example);
if (reports != null || !reports.isEmpty()) return reports.get(FIRST_OR_DEFAULT);
if (reports != null && !reports.isEmpty()) return reports.get(FIRST_OR_DEFAULT);
return null;
}
......@@ -67,8 +69,27 @@ public class FormulaAgent extends VatAbstractService {
dataExample.createCriteria().andCellTemplateIdEqualTo(Long.valueOf(templateId));
List<CellData> cellDataList = cellDataMapper.selectByExample(dataExample);
if (cellDataList != null || !cellDataList.isEmpty()) return cellDataList.get(FIRST_OR_DEFAULT);
if (cellDataList != null && !cellDataList.isEmpty()) return cellDataList.get(FIRST_OR_DEFAULT);
return null;
}
public void save(List<FormulaDataSourceDto> dataSourceDtos){
dataSourceDtos.forEach(m->{
DataSource ds = new DataSource();
ds.setAmount(m.getAmount());
ds.setCreateBy(m.getCreator());
ds.setCreateTime(m.getCreateTime());
ds.setDescription(m.getDescription());
ds.setKeyValueDataId(m.getKeyValueDataID());
ds.setName(m.getName());
ds.setId(m.getId());
ds.setType(m.getType());
ds.setUpdateBy(m.getUpdater());
ds.setUpdateTime(m.getUpdateTime());
dataSourceMapper.insert(ds);
});
}
}
......@@ -109,7 +109,7 @@ public class ReportFormulaFactory {
ShardingContextHolder.setDataSourceKey(dbName);
try {
Report report = agent.getReportByTemplate(cellTemplateData.getCellTemplateID(), curPeriod.getCurPeriod());
Report report = agent.getReportByTemplate(cellTemplateData.getReportTemplateID(), curPeriod.getCurPeriod());
MyAsserts.assertNotNull(report, Exceptions.BB_REPORT_NULL);
CellData cellData = agent.getCellDataListByTemplate(cellTemplateData.getCellTemplateID(), report.getId());
......
......@@ -6,17 +6,32 @@ import org.apache.poi.ss.formula.functions.FreeRefFunction;
import org.apache.poi.ss.formula.udf.AggregatingUDFFinder;
import org.apache.poi.ss.formula.udf.DefaultUDFFinder;
import org.apache.poi.ss.formula.udf.UDFFinder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pwc.taxtech.atms.common.POIUtil;
import pwc.taxtech.atms.constant.enums.CellDataSourceType;
import pwc.taxtech.atms.dao.ProjectMapper;
import pwc.taxtech.atms.dto.vatdto.CellCalcInfoDto;
import pwc.taxtech.atms.dto.vatdto.CellTemplateConfigGroupDto;
import pwc.taxtech.atms.dto.vatdto.PeriodCellTemplateConfigExtendDto;
import pwc.taxtech.atms.vat.entity.*;
import pwc.taxtech.atms.entitiy.Project;
import pwc.taxtech.atms.vat.entity.CellData;
import pwc.taxtech.atms.vat.entity.PeriodCellTemplate;
import pwc.taxtech.atms.vat.entity.PeriodCellTemplateConfig;
import pwc.taxtech.atms.vat.entity.PeriodCellTemplateConfigExample;
import pwc.taxtech.atms.vat.entity.PeriodCellTemplateExample;
import pwc.taxtech.atms.vat.entity.PeriodTemplate;
import pwc.taxtech.atms.vat.entity.PeriodTemplateExample;
import pwc.taxtech.atms.vat.entity.Report;
import pwc.taxtech.atms.vat.service.ReportGenerator;
import pwc.taxtech.atms.vat.service.impl.report.functions.FSJZ;
import pwc.taxtech.atms.vat.service.impl.report.functions.FormulaContext;
......@@ -26,7 +41,12 @@ import pwc.taxtech.atms.vat.service.impl.report.functions.SGSR;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import static pwc.taxtech.atms.constant.Constant.EMPTY;
......@@ -35,14 +55,17 @@ import static pwc.taxtech.atms.constant.Constant.EMPTY;
public class ReportGeneratorImpl extends VatAbstractService implements ReportGenerator {
private static final Logger logger = LoggerFactory.getLogger(ReportGeneratorImpl.class);
@Autowired
private ProjectMapper projectMapper;
@Override
public String generateData(String projectId, List<Long> templateIds
, Boolean ifDeleteManualDataSource, List<String> exceptCellTemplates
, Integer periodParam, String generator) {
public String generateData(String projectId, List<Long> templateIds, Boolean ifDeleteManualDataSource,
List<String> exceptCellTemplates, Integer periodParam, String generator) {
Date createTime = new Date();
int period = periodParam != null ? periodParam : 0;
Project project = projectMapper.selectByPrimaryKey(projectId);
PeriodTemplateExample periodTemplateExample = new PeriodTemplateExample();
periodTemplateExample.createCriteria().andIdIn(templateIds);
List<PeriodTemplate> periodTemplateList = periodTemplateMapper.selectByExample(periodTemplateExample);
......@@ -65,9 +88,15 @@ public class ReportGeneratorImpl extends VatAbstractService implements ReportGen
if (workbook != null) {
Workbook newWorkbook = workbook.get();
FormulaContext formulaContext = new FormulaContext();
formulaContext.setFormulaAgent(formulaAgent);
formulaContext.setPeriod(6);//todo: assign value later
formulaContext.setReportTemplateGroupID(templateGroupID);
formulaContext.setProjectID(project.getID());
formulaContext.setYear(project.getYear());//todo: assign value later
formulaContext.setOrganizationID(project.getOrganizationID());
addFunctionsToWorkbook(newWorkbook, templateGroupID);
addFunctionsToWorkbook(newWorkbook, formulaContext);
int sheetCount = newWorkbook.getNumberOfSheets();
for (int i = 0; i < sheetCount; i++) {
Sheet sheet = newWorkbook.getSheetAt(i);
......@@ -225,12 +254,8 @@ public class ReportGeneratorImpl extends VatAbstractService implements ReportGen
*
* @param workbook 工作簿
*/
private void addFunctionsToWorkbook(Workbook workbook, Long templateGroupID) {
private void addFunctionsToWorkbook(Workbook workbook, FormulaContext formulaContext) {
String[] functionNames = {"SGSR", "FSJZ", "ND", "BB"};
FormulaContext formulaContext = new FormulaContext();
formulaContext.setFormulaAgent(formulaAgent);
formulaContext.setPeriod(6);//todo: assign value later
formulaContext.setReportTemplateGroupID(templateGroupID);
FreeRefFunction[] functionImpls = {new SGSR(formulaContext), new FSJZ(formulaContext), new ND(formulaContext),
new ReportFormulaFactory.BB(formulaContext)};
UDFFinder udfs = new DefaultUDFFinder(functionNames, functionImpls);
......
......@@ -270,7 +270,6 @@ public class ReportServiceImpl extends VatAbstractService implements ReportServi
templateIds = periodTemplateMapper.selectByExample(periodTemplateExample).stream().map(PeriodTemplate::getId).collect(Collectors.toList());
}
String rslt = reportGenerator.generateData(projectId, templateIds, ifDeleteManualDataSource, null, periodParam, generator);
if (StringUtils.isBlank(rslt)) {
operationResultDto.setResultMsg("ReportGenerateFailed!");
......
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