Commit f3d2ceac authored by neo's avatar neo

[DEV] split mualt select to singel select

parent b422bd93
...@@ -270,186 +270,11 @@ public class ReportServiceImpl { ...@@ -270,186 +270,11 @@ public class ReportServiceImpl {
} }
List<Long> exceptTemplateIds = templateMapper.getIdsForExceptTemplate(); List<Long> exceptTemplateIds = templateMapper.getIdsForExceptTemplate();
// String strExceptTemplateIds = StringUtils.EMPTY;
// if (exceptTemplateIds != null && exceptTemplateIds.size() > 0) {
// strExceptTemplateIds = StringUtils.join(exceptTemplateIds, ",");
// } else {
// strExceptTemplateIds = "''";
// }
//todo: according to projectId get the templateGroupId
Long templateGroupId = projectMapper.getTemplateGroupIdByProject(projectId, EnumServiceType.VAT.getCode()); Long templateGroupId = projectMapper.getTemplateGroupIdByProject(projectId, EnumServiceType.VAT.getCode());
if (templateGroupId != null && templateGroupId != 0) { if (templateGroupId != null && templateGroupId != 0) {
// 先进行数据清理,包括period开头的所有报表配置表 条件Period // 先进行数据清理,包括period开头的所有报表配置表 条件Period
clearPeriodData(projectId, period, exceptTemplateIds, isMergeManualData); clearPeriodData(projectId, period, exceptTemplateIds, isMergeManualData);
// 根据templategroupid 把 template 插入到 periodTemplate copyTemplateAndConfigFromAdmin(projectId, templateGroupId, period);
TemplateExample example = new TemplateExample();
example.createCriteria().andTemplateGroupIdEqualTo(templateGroupId);
List<Template> templates = templateMapper.selectByExample(example);
List<PeriodTemplate> periodTemplateList = new ArrayList<>();
int i = 0;
Long startTimeOut = System.currentTimeMillis();
logger.debug("templates copy start: " + startTimeOut);
for (Template template : templates) {
i++;
Long startTime = System.currentTimeMillis();
logger.debug("template copy start: " + startTime);
PeriodTemplate periodTemplate = new PeriodTemplate();
CommonUtils.copyProperties(template, periodTemplate);
periodTemplate.setId(distributedIdService.nextId());
periodTemplate.setPeriod(period);
periodTemplate.setName(template.getName());
periodTemplate.setCode(template.getCode());
periodTemplate.setPath(template.getPath());
periodTemplate.setReportType(template.getReportType());
periodTemplate.setTemplateGroupId(template.getTemplateGroupId());
periodTemplate.setOrderIndex(template.getOrderIndex());
periodTemplate.setCreateTime(template.getCreateTime());
periodTemplate.setUpdateTime(template.getUpdateTime());
periodTemplate.setIsSystemType(template.getIsSystemType());
periodTemplate.setIsActiveAssociation(template.getIsActiveAssociation());
periodTemplate.setParentId(Utils.isEmpty(template.getParentId()) ? null : template.getParentId());
periodTemplate.setTemplateId(template.getId());
periodTemplate.setCreateBy(Utils.isEmpty(template.getCreateBy()) ? "admin" : template.getCreateBy());
periodTemplate.setUpdateBy(Utils.isEmpty(template.getUpdateBy()) ? "admin" : template.getUpdateBy());
periodTemplate.setProjectId(projectId);
periodTemplateList.add(periodTemplate);
logger.debug("template copy end,used time: " + (System.currentTimeMillis() - startTime) + " ms");
}
logger.debug("templates copy end,used: " + (System.currentTimeMillis() - startTimeOut) + " ms, copy: " + i + " items");
List<Long> templateIdList = periodTemplateList.stream().map(PeriodTemplate::getTemplateId).collect(Collectors.toList());
CellTemplateExample cellTemplateExample = new CellTemplateExample();
cellTemplateExample.createCriteria().andReportTemplateIdIn(templateIdList);
List<CellTemplate> cellTemplateList = cellTemplateMapper.selectByExample(cellTemplateExample);
List<PeriodCellTemplate> periodCellTemplateList = new ArrayList<>();
i = 0;
startTimeOut = System.currentTimeMillis();
logger.debug("cellTemplates copy start: " + startTimeOut);
for (CellTemplate cellTemplate : cellTemplateList) {
i++;
Long startTime = System.currentTimeMillis();
//logger.debug("celltemplate copy start: " + startTime);
PeriodCellTemplate periodCellTemplate = new PeriodCellTemplate();
CommonUtils.copyProperties(cellTemplate, periodCellTemplate);
periodCellTemplate.setId(distributedIdService.nextId());
periodCellTemplate.setPeriod(period);
periodCellTemplate.setReportTemplateId(cellTemplate.getReportTemplateId());
periodCellTemplate.setRowIndex(cellTemplate.getRowIndex());
periodCellTemplate.setRowName(cellTemplate.getRowName());
periodCellTemplate.setColumnIndex(cellTemplate.getColumnIndex());
periodCellTemplate.setColumnName(cellTemplate.getColumnName());
periodCellTemplate.setComment(cellTemplate.getComment());
periodCellTemplate.setCreateTime(cellTemplate.getCreateTime());
periodCellTemplate.setUpdateTime(cellTemplate.getUpdateTime());
periodCellTemplate.setCellTemplateId(cellTemplate.getId());
periodCellTemplate.setDataType(cellTemplate.getDataType());
periodCellTemplate.setIsReadOnly(cellTemplate.getIsReadOnly() ? 1 : 0);
periodCellTemplate.setCopyFromId(cellTemplate.getCopyFromId());
periodCellTemplate.setCreateBy(Utils.isEmpty(cellTemplate.getCreateBy()) ? "admin" : cellTemplate.getCreateBy());
periodCellTemplate.setUpdateBy(Utils.isEmpty(cellTemplate.getUpdateBy()) ? "admin" : cellTemplate.getUpdateBy());
periodCellTemplate.setProjectId(projectId);
periodCellTemplateList.add(periodCellTemplate);
//logger.debug("celltemplate copy end,used time: " + (System.currentTimeMillis() - startTime) + " ms");
}
logger.debug("templates copy end,used: " + (System.currentTimeMillis() - startTimeOut) + " ms, copy: " + i + " items");
List<Long> cellTemplateIdList = periodCellTemplateList.stream().map(PeriodCellTemplate::getCellTemplateId).collect(Collectors.toList());
CellTemplateConfigExample cellTemplateConfigExample = new CellTemplateConfigExample();
cellTemplateConfigExample.createCriteria().andReportTemplateIdIn(templateIdList).andCellTemplateIdIn(cellTemplateIdList);
List<CellTemplateConfig> cellTemplateConfigList = cellTemplateConfigMapper.selectByExample(cellTemplateConfigExample);
List<PeriodCellTemplateConfig> periodCellTemplateConfigList = new ArrayList<>();
i = 0;
startTimeOut = System.currentTimeMillis();
logger.debug("cellTemplateConfigs copy start:" + startTimeOut);
for (CellTemplateConfig cellTemplateConfig : cellTemplateConfigList) {
i++;
Long startTime = System.currentTimeMillis();
//logger.debug("cellTemplateConfig copy start: " + startTime);
PeriodCellTemplateConfig periodCellTemplateConfig = new PeriodCellTemplateConfig();
CommonUtils.copyProperties(cellTemplateConfig, periodCellTemplateConfig);
periodCellTemplateConfig.setId(distributedIdService.nextId());
periodCellTemplateConfig.setPeriod(period);
periodCellTemplateConfig.setCellTemplateId(cellTemplateConfig.getCellTemplateId());
periodCellTemplateConfig.setReportTemplateId(cellTemplateConfig.getReportTemplateId());
periodCellTemplateConfig.setDataSourceType(cellTemplateConfig.getDataSourceType());
periodCellTemplateConfig.setFormula(Utils.isEmpty(cellTemplateConfig.getFormula()) ? null : cellTemplateConfig.getFormula());
periodCellTemplateConfig.setParsedFormula(null);
periodCellTemplateConfig.setFormulaDescription(cellTemplateConfig.getFormulaDescription());
periodCellTemplateConfig.setAccountCodes(cellTemplateConfig.getAccountCodes());
periodCellTemplateConfig.setInvoiceType(cellTemplateConfig.getInvoiceType());
periodCellTemplateConfig.setTaxRate(cellTemplateConfig.getTaxRate());
periodCellTemplateConfig.setInvoiceAmountType(cellTemplateConfig.getInvoiceAmountType());
periodCellTemplateConfig.setModelIds(cellTemplateConfig.getModelIds());
periodCellTemplateConfig.setCreateBy(Utils.isEmpty(cellTemplateConfig.getCreateBy()) ? "admin" : cellTemplateConfig.getCreateBy());
periodCellTemplateConfig.setCreateTime(cellTemplateConfig.getCreateTime());
periodCellTemplateConfig.setUpdateBy(Utils.isEmpty(cellTemplateConfig.getUpdateBy()) ? "admin" : cellTemplateConfig.getUpdateBy());
periodCellTemplateConfig.setUpdateTime(cellTemplateConfig.getUpdateTime());
periodCellTemplateConfig.setInvoiceCategory(cellTemplateConfig.getInvoiceCategory());
periodCellTemplateConfig.setFormulaDataSource(cellTemplateConfig.getFormulaDataSource());
periodCellTemplateConfig.setValidation(cellTemplateConfig.getValidation());
periodCellTemplateConfig.setParsedValidation(null);
periodCellTemplateConfig.setValidationDescription(cellTemplateConfig.getValidationDescription());
periodCellTemplateConfig.setVoucherKeyword(cellTemplateConfig.getVoucherKeyword());
periodCellTemplateConfig.setCellTemplateConfigId(cellTemplateConfig.getId());
periodCellTemplateConfig.setKeyValueParsedFormula(null);
periodCellTemplateConfig.setProjectId(projectId);
if (cellTemplateConfig.getFormula() != null && cellTemplateConfig.getFormula().contains("@")) {
String regex = "@[0-9A-Z.]+";
Pattern pp = Pattern.compile(regex);
Matcher mm = pp.matcher(cellTemplateConfig.getFormula());
String replace_result = cellTemplateConfig.getFormula();
Boolean replace = true;
while (mm.find()) {
KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample();
keyValueConfigExample.createCriteria().andKeyCodeEqualTo(StringUtils.removeStart(mm.group(), "@"));
Optional<KeyValueConfig> keyValueConfig = keyValueConfigMapper.selectByExample(keyValueConfigExample).stream().findFirst();
if (keyValueConfig.isPresent() && StringUtils.isNotBlank(keyValueConfig.get().getFormula())) {
replace_result = replace_result.replace(mm.group(), keyValueConfig.get().getFormula());
} else {
replace = false;
}
}
if (replace) {
periodCellTemplateConfig.setKeyValueParsedFormula(replace_result);
}
//todo: get the keyvalue from table add to keyvalue parsed formula
// KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample();
// keyValueConfigExample.createCriteria().andKeyCodeEqualTo(StringUtils.removeStart(cellTemplateConfig.getFormula(), "@"));
// Optional<KeyValueConfig> keyValueConfig = keyValueConfigMapper.selectByExample(keyValueConfigExample).stream().findFirst();
// if (keyValueConfig.isPresent()) {
// periodCellTemplateConfig.setKeyValueParsedFormula(keyValueConfig.get().getFormula());
// }
}
periodCellTemplateConfigList.add(periodCellTemplateConfig);
//logger.debug("cellTemplateConfig copy end,used time: " + (System.currentTimeMillis() - startTime) + " ms");
}
logger.debug("cellTemplateConfigs copy end,used: " + (System.currentTimeMillis() - startTimeOut) + " ms, copy: " + i + " items");
if (periodCellTemplateConfigList != null) {
periodCellTemplateConfigList.forEach(a -> {
if (StringUtils.isNotBlank(a.getAccountCodes())) {
String[] acctCodes = a.getAccountCodes().split(",");
EnterpriseAccountExample enterpriseAccountExample = new EnterpriseAccountExample();
enterpriseAccountExample.createCriteria().andStdCodeIn(Arrays.asList(acctCodes));
List<EnterpriseAccount> enterpriseAccounts = enterpriseAccountMapper.selectByExample(enterpriseAccountExample);
if (!enterpriseAccounts.isEmpty()) {
List<String> acctCodeList = enterpriseAccounts.stream().map(EnterpriseAccount::getCode).collect(Collectors.toList());
StringBuilder codes = new StringBuilder();
for (String code : acctCodeList) {
codes.append(code).append(",");
}
a.setAccountCodes(StringUtils.removeEnd(codes.toString(), ","));
}
}
});
}
//todo: save config data to DB
periodTemplateMapper.batchInsert(periodTemplateList);
periodCellTemplateMapper.batchInsert(periodCellTemplateList);
periodCellTemplateConfigMapper.batchInsert(periodCellTemplateConfigList);
} else { } else {
result.setResult(true); result.setResult(true);
result.setResultMsg("there is no templateGroup"); result.setResultMsg("there is no templateGroup");
...@@ -463,6 +288,172 @@ public class ReportServiceImpl { ...@@ -463,6 +288,172 @@ public class ReportServiceImpl {
return result; return result;
} }
private void copyPeriodConfigFromCellTemplateConfig(String projectId, Long templateId, Integer period) {
CellTemplateConfigExample cellTemplateConfigExample = new CellTemplateConfigExample();
cellTemplateConfigExample.createCriteria().andReportTemplateIdEqualTo(templateId);
List<CellTemplateConfig> cellTemplateConfigList = cellTemplateConfigMapper.selectByExample(cellTemplateConfigExample);
List<PeriodCellTemplateConfig> periodCellTemplateConfigList = new ArrayList<>();
for (CellTemplateConfig cellTemplateConfig : cellTemplateConfigList) {
PeriodCellTemplateConfig periodCellTemplateConfig = new PeriodCellTemplateConfig();
CommonUtils.copyProperties(cellTemplateConfig, periodCellTemplateConfig);
periodCellTemplateConfig.setId(distributedIdService.nextId());
periodCellTemplateConfig.setPeriod(period);
periodCellTemplateConfig.setCellTemplateId(cellTemplateConfig.getCellTemplateId());
periodCellTemplateConfig.setReportTemplateId(cellTemplateConfig.getReportTemplateId());
periodCellTemplateConfig.setDataSourceType(cellTemplateConfig.getDataSourceType());
periodCellTemplateConfig.setFormula(Utils.isEmpty(cellTemplateConfig.getFormula()) ? null : cellTemplateConfig.getFormula());
periodCellTemplateConfig.setParsedFormula(null);
periodCellTemplateConfig.setFormulaDescription(cellTemplateConfig.getFormulaDescription());
periodCellTemplateConfig.setAccountCodes(cellTemplateConfig.getAccountCodes());
periodCellTemplateConfig.setInvoiceType(cellTemplateConfig.getInvoiceType());
periodCellTemplateConfig.setTaxRate(cellTemplateConfig.getTaxRate());
periodCellTemplateConfig.setInvoiceAmountType(cellTemplateConfig.getInvoiceAmountType());
periodCellTemplateConfig.setModelIds(cellTemplateConfig.getModelIds());
periodCellTemplateConfig.setCreateBy(Utils.isEmpty(cellTemplateConfig.getCreateBy()) ? "admin" : cellTemplateConfig.getCreateBy());
periodCellTemplateConfig.setCreateTime(cellTemplateConfig.getCreateTime());
periodCellTemplateConfig.setUpdateBy(Utils.isEmpty(cellTemplateConfig.getUpdateBy()) ? "admin" : cellTemplateConfig.getUpdateBy());
periodCellTemplateConfig.setUpdateTime(cellTemplateConfig.getUpdateTime());
periodCellTemplateConfig.setInvoiceCategory(cellTemplateConfig.getInvoiceCategory());
periodCellTemplateConfig.setFormulaDataSource(cellTemplateConfig.getFormulaDataSource());
periodCellTemplateConfig.setValidation(cellTemplateConfig.getValidation());
periodCellTemplateConfig.setParsedValidation(null);
periodCellTemplateConfig.setValidationDescription(cellTemplateConfig.getValidationDescription());
periodCellTemplateConfig.setVoucherKeyword(cellTemplateConfig.getVoucherKeyword());
periodCellTemplateConfig.setCellTemplateConfigId(cellTemplateConfig.getId());
periodCellTemplateConfig.setKeyValueParsedFormula(null);
periodCellTemplateConfig.setProjectId(projectId);
fixedParsedFormula(periodCellTemplateConfig);
fixedAccountCode(periodCellTemplateConfig);
periodCellTemplateConfigList.add(periodCellTemplateConfig);
}
periodCellTemplateConfigMapper.batchInsert(periodCellTemplateConfigList);
}
private void fixedAccountCode(PeriodCellTemplateConfig pctc) {
if (StringUtils.isNotBlank(pctc.getAccountCodes())) {
String[] acctCodes = pctc.getAccountCodes().split(",");
EnterpriseAccountExample enterpriseAccountExample = new EnterpriseAccountExample();
enterpriseAccountExample.createCriteria().andStdCodeIn(Arrays.asList(acctCodes));
List<EnterpriseAccount> enterpriseAccounts = enterpriseAccountMapper.selectByExample(enterpriseAccountExample);
if (!enterpriseAccounts.isEmpty()) {
List<String> acctCodeList = enterpriseAccounts.stream().map(EnterpriseAccount::getCode).collect(Collectors.toList());
StringBuilder codes = new StringBuilder();
for (String code : acctCodeList) {
codes.append(code).append(",");
}
pctc.setAccountCodes(StringUtils.removeEnd(codes.toString(), ","));
}
}
}
private void fixedParsedFormula(PeriodCellTemplateConfig pctc) {
if (pctc.getFormula() != null && pctc.getFormula().contains("@")) {
String regex = "@[0-9A-Z.]+";
Pattern pp = Pattern.compile(regex);
Matcher mm = pp.matcher(pctc.getFormula());
String replace_result = pctc.getFormula();
Boolean replace = true;
while (mm.find()) {
KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample();
keyValueConfigExample.createCriteria().andKeyCodeEqualTo(StringUtils.removeStart(mm.group(), "@"));
Optional<KeyValueConfig> keyValueConfig = keyValueConfigMapper.selectByExample(keyValueConfigExample).stream().findFirst();
if (keyValueConfig.isPresent() && StringUtils.isNotBlank(keyValueConfig.get().getFormula())) {
replace_result = replace_result.replace(mm.group(), keyValueConfig.get().getFormula());
} else {
replace = false;
}
}
if (replace) {
pctc.setKeyValueParsedFormula(replace_result);
}
//todo: get the keyvalue from table add to keyvalue parsed formula
// KeyValueConfigExample skeyValueConfigExample = new KeyValueConfigExample();
// keyValueConfigExample.createCriteria().andKeyCodeEqualTo(StringUtils.removeStart(cellTemplateConfig.getFormula(), "@"));
// Optional<KeyValueConfig> keyValueConfig = keyValueConfigMapper.selectByExample(keyValueConfigExample).stream().findFirst();
// if (keyValueConfig.isPresent()) {
// periodCellTemplateConfig.setKeyValueParsedFormula(keyValueConfig.get().getFormula());
// }
}
}
private void copyPeriodCellTemplateFromCellTemplate(String projectId, Long templateId, Integer period) {
CellTemplateExample cellTemplateExample = new CellTemplateExample();
cellTemplateExample.createCriteria().andReportTemplateIdEqualTo(templateId);
List<CellTemplate> cellTemplateList = cellTemplateMapper.selectByExample(cellTemplateExample);
List<PeriodCellTemplate> periodCellTemplateList = new ArrayList<>();
for (CellTemplate cellTemplate : cellTemplateList) {
PeriodCellTemplate periodCellTemplate = new PeriodCellTemplate();
CommonUtils.copyProperties(cellTemplate, periodCellTemplate);
periodCellTemplate.setId(distributedIdService.nextId());
periodCellTemplate.setPeriod(period);
periodCellTemplate.setReportTemplateId(cellTemplate.getReportTemplateId());
periodCellTemplate.setRowIndex(cellTemplate.getRowIndex());
periodCellTemplate.setRowName(cellTemplate.getRowName());
periodCellTemplate.setColumnIndex(cellTemplate.getColumnIndex());
periodCellTemplate.setColumnName(cellTemplate.getColumnName());
periodCellTemplate.setComment(cellTemplate.getComment());
periodCellTemplate.setCreateTime(cellTemplate.getCreateTime());
periodCellTemplate.setUpdateTime(cellTemplate.getUpdateTime());
periodCellTemplate.setCellTemplateId(cellTemplate.getId());
periodCellTemplate.setDataType(cellTemplate.getDataType());
periodCellTemplate.setIsReadOnly(cellTemplate.getIsReadOnly() ? 1 : 0);
periodCellTemplate.setCopyFromId(cellTemplate.getCopyFromId());
periodCellTemplate.setCreateBy(Utils.isEmpty(cellTemplate.getCreateBy()) ? "admin" : cellTemplate.getCreateBy());
periodCellTemplate.setUpdateBy(Utils.isEmpty(cellTemplate.getUpdateBy()) ? "admin" : cellTemplate.getUpdateBy());
periodCellTemplate.setProjectId(projectId);
periodCellTemplateList.add(periodCellTemplate);
}
periodCellTemplateMapper.batchInsert(periodCellTemplateList);
}
private void copyTemplateAndConfigFromAdmin(String projectId, Long templateGroupId, Integer period) {
TemplateExample example = new TemplateExample();
example.createCriteria().andTemplateGroupIdEqualTo(templateGroupId);
List<Template> templates = templateMapper.selectByExample(example);
List<PeriodTemplate> periodTemplateList = new ArrayList<>();
for (Template template : templates) {
Long startTime = System.currentTimeMillis();
logger.debug("template copy start: " + startTime);
PeriodTemplate periodTemplate = new PeriodTemplate();
CommonUtils.copyProperties(template, periodTemplate);
periodTemplate.setId(distributedIdService.nextId());
periodTemplate.setPeriod(period);
periodTemplate.setName(template.getName());
periodTemplate.setCode(template.getCode());
periodTemplate.setPath(template.getPath());
periodTemplate.setReportType(template.getReportType());
periodTemplate.setTemplateGroupId(template.getTemplateGroupId());
periodTemplate.setOrderIndex(template.getOrderIndex());
periodTemplate.setCreateTime(template.getCreateTime());
periodTemplate.setUpdateTime(template.getUpdateTime());
periodTemplate.setIsSystemType(template.getIsSystemType());
periodTemplate.setIsActiveAssociation(template.getIsActiveAssociation());
periodTemplate.setParentId(Utils.isEmpty(template.getParentId()) ? null : template.getParentId());
periodTemplate.setTemplateId(template.getId());
periodTemplate.setCreateBy(Utils.isEmpty(template.getCreateBy()) ? "admin" : template.getCreateBy());
periodTemplate.setUpdateBy(Utils.isEmpty(template.getUpdateBy()) ? "admin" : template.getUpdateBy());
periodTemplate.setProjectId(projectId);
periodTemplateList.add(periodTemplate);
copyPeriodCellTemplateFromCellTemplate(projectId, template.getId(), period);
copyPeriodConfigFromCellTemplateConfig(projectId, template.getId(), period);
}
periodTemplateMapper.batchInsert(periodTemplateList);
}
public OperationResultDto generateData(String projectId, EnumServiceType serviceType, Boolean ifDeleteManualDataSource, public OperationResultDto generateData(String projectId, EnumServiceType serviceType, Boolean ifDeleteManualDataSource,
Integer periodParam, Integer reportType, Optional<String> generator) { Integer periodParam, Integer reportType, Optional<String> generator) {
OperationResultDto operationResultDto = new OperationResultDto(); OperationResultDto operationResultDto = new OperationResultDto();
...@@ -1206,7 +1197,7 @@ public class ReportServiceImpl { ...@@ -1206,7 +1197,7 @@ public class ReportServiceImpl {
private String getAcctProp(Integer acctProp) { private String getAcctProp(Integer acctProp) {
switch (acctProp) { switch (acctProp) {
case 1: case 1:
return "资产"; return "资产
case 2: case 2:
return "负债"; return "负债";
case 3: case 3:
......
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