Commit f3d2ceac authored by neo's avatar neo

[DEV] split mualt select to singel select

parent b422bd93
...@@ -270,104 +270,35 @@ public class ReportServiceImpl { ...@@ -270,104 +270,35 @@ 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(); } else {
example.createCriteria().andTemplateGroupIdEqualTo(templateGroupId); result.setResult(true);
List<Template> templates = templateMapper.selectByExample(example); result.setResultMsg("there is no templateGroup");
List<PeriodTemplate> periodTemplateList = new ArrayList<>(); return result;
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"); result.setResult(true);
} catch (Exception ex) {
List<Long> templateIdList = periodTemplateList.stream().map(PeriodTemplate::getTemplateId).collect(Collectors.toList()); result.setResult(false);
CellTemplateExample cellTemplateExample = new CellTemplateExample(); logger.error(ex.getMessage(), ex);
cellTemplateExample.createCriteria().andReportTemplateIdIn(templateIdList); }
List<CellTemplate> cellTemplateList = cellTemplateMapper.selectByExample(cellTemplateExample); return result;
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()); private void copyPeriodConfigFromCellTemplateConfig(String projectId, Long templateId, Integer period) {
CellTemplateConfigExample cellTemplateConfigExample = new CellTemplateConfigExample(); CellTemplateConfigExample cellTemplateConfigExample = new CellTemplateConfigExample();
cellTemplateConfigExample.createCriteria().andReportTemplateIdIn(templateIdList).andCellTemplateIdIn(cellTemplateIdList); cellTemplateConfigExample.createCriteria().andReportTemplateIdEqualTo(templateId);
List<CellTemplateConfig> cellTemplateConfigList = cellTemplateConfigMapper.selectByExample(cellTemplateConfigExample); List<CellTemplateConfig> cellTemplateConfigList = cellTemplateConfigMapper.selectByExample(cellTemplateConfigExample);
List<PeriodCellTemplateConfig> periodCellTemplateConfigList = new ArrayList<>(); List<PeriodCellTemplateConfig> periodCellTemplateConfigList = new ArrayList<>();
i = 0;
startTimeOut = System.currentTimeMillis();
logger.debug("cellTemplateConfigs copy start:" + startTimeOut);
for (CellTemplateConfig cellTemplateConfig : cellTemplateConfigList) { for (CellTemplateConfig cellTemplateConfig : cellTemplateConfigList) {
i++;
Long startTime = System.currentTimeMillis();
//logger.debug("cellTemplateConfig copy start: " + startTime);
PeriodCellTemplateConfig periodCellTemplateConfig = new PeriodCellTemplateConfig(); PeriodCellTemplateConfig periodCellTemplateConfig = new PeriodCellTemplateConfig();
CommonUtils.copyProperties(cellTemplateConfig, periodCellTemplateConfig); CommonUtils.copyProperties(cellTemplateConfig, periodCellTemplateConfig);
periodCellTemplateConfig.setId(distributedIdService.nextId()); periodCellTemplateConfig.setId(distributedIdService.nextId());
periodCellTemplateConfig.setPeriod(period); periodCellTemplateConfig.setPeriod(period);
periodCellTemplateConfig.setCellTemplateId(cellTemplateConfig.getCellTemplateId()); periodCellTemplateConfig.setCellTemplateId(cellTemplateConfig.getCellTemplateId());
...@@ -394,11 +325,41 @@ public class ReportServiceImpl { ...@@ -394,11 +325,41 @@ public class ReportServiceImpl {
periodCellTemplateConfig.setCellTemplateConfigId(cellTemplateConfig.getId()); periodCellTemplateConfig.setCellTemplateConfigId(cellTemplateConfig.getId());
periodCellTemplateConfig.setKeyValueParsedFormula(null); periodCellTemplateConfig.setKeyValueParsedFormula(null);
periodCellTemplateConfig.setProjectId(projectId); periodCellTemplateConfig.setProjectId(projectId);
if (cellTemplateConfig.getFormula() != null && cellTemplateConfig.getFormula().contains("@")) {
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.]+"; String regex = "@[0-9A-Z.]+";
Pattern pp = Pattern.compile(regex); Pattern pp = Pattern.compile(regex);
Matcher mm = pp.matcher(cellTemplateConfig.getFormula()); Matcher mm = pp.matcher(pctc.getFormula());
String replace_result = cellTemplateConfig.getFormula(); String replace_result = pctc.getFormula();
Boolean replace = true; Boolean replace = true;
while (mm.find()) { while (mm.find()) {
KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample(); KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample();
...@@ -412,55 +373,85 @@ public class ReportServiceImpl { ...@@ -412,55 +373,85 @@ public class ReportServiceImpl {
} }
if (replace) { if (replace) {
periodCellTemplateConfig.setKeyValueParsedFormula(replace_result); pctc.setKeyValueParsedFormula(replace_result);
} }
//todo: get the keyvalue from table add to keyvalue parsed formula //todo: get the keyvalue from table add to keyvalue parsed formula
// KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample(); // KeyValueConfigExample skeyValueConfigExample = new KeyValueConfigExample();
// keyValueConfigExample.createCriteria().andKeyCodeEqualTo(StringUtils.removeStart(cellTemplateConfig.getFormula(), "@")); // keyValueConfigExample.createCriteria().andKeyCodeEqualTo(StringUtils.removeStart(cellTemplateConfig.getFormula(), "@"));
// Optional<KeyValueConfig> keyValueConfig = keyValueConfigMapper.selectByExample(keyValueConfigExample).stream().findFirst(); // Optional<KeyValueConfig> keyValueConfig = keyValueConfigMapper.selectByExample(keyValueConfigExample).stream().findFirst();
// if (keyValueConfig.isPresent()) { // if (keyValueConfig.isPresent()) {
// periodCellTemplateConfig.setKeyValueParsedFormula(keyValueConfig.get().getFormula()); // 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) { private void copyPeriodCellTemplateFromCellTemplate(String projectId, Long templateId, Integer period) {
periodCellTemplateConfigList.forEach(a -> { CellTemplateExample cellTemplateExample = new CellTemplateExample();
if (StringUtils.isNotBlank(a.getAccountCodes())) { cellTemplateExample.createCriteria().andReportTemplateIdEqualTo(templateId);
String[] acctCodes = a.getAccountCodes().split(","); List<CellTemplate> cellTemplateList = cellTemplateMapper.selectByExample(cellTemplateExample);
EnterpriseAccountExample enterpriseAccountExample = new EnterpriseAccountExample(); List<PeriodCellTemplate> periodCellTemplateList = new ArrayList<>();
enterpriseAccountExample.createCriteria().andStdCodeIn(Arrays.asList(acctCodes));
List<EnterpriseAccount> enterpriseAccounts = enterpriseAccountMapper.selectByExample(enterpriseAccountExample); for (CellTemplate cellTemplate : cellTemplateList) {
if (!enterpriseAccounts.isEmpty()) { PeriodCellTemplate periodCellTemplate = new PeriodCellTemplate();
List<String> acctCodeList = enterpriseAccounts.stream().map(EnterpriseAccount::getCode).collect(Collectors.toList()); CommonUtils.copyProperties(cellTemplate, periodCellTemplate);
StringBuilder codes = new StringBuilder(); periodCellTemplate.setId(distributedIdService.nextId());
for (String code : acctCodeList) { periodCellTemplate.setPeriod(period);
codes.append(code).append(","); periodCellTemplate.setReportTemplateId(cellTemplate.getReportTemplateId());
} periodCellTemplate.setRowIndex(cellTemplate.getRowIndex());
a.setAccountCodes(StringUtils.removeEnd(codes.toString(), ",")); 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);
} }
//todo: save config data to DB
periodTemplateMapper.batchInsert(periodTemplateList);
periodCellTemplateMapper.batchInsert(periodCellTemplateList); periodCellTemplateMapper.batchInsert(periodCellTemplateList);
periodCellTemplateConfigMapper.batchInsert(periodCellTemplateConfigList);
} else {
result.setResult(true);
result.setResultMsg("there is no templateGroup");
return result;
} }
result.setResult(true);
} catch (Exception ex) { private void copyTemplateAndConfigFromAdmin(String projectId, Long templateGroupId, Integer period) {
result.setResult(false); TemplateExample example = new TemplateExample();
logger.error(ex.getMessage(), ex); 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);
} }
return result;
periodTemplateMapper.batchInsert(periodTemplateList);
} }
public OperationResultDto generateData(String projectId, EnumServiceType serviceType, Boolean ifDeleteManualDataSource, public OperationResultDto generateData(String projectId, EnumServiceType serviceType, Boolean ifDeleteManualDataSource,
...@@ -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