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