Browse Source

财报获取修复

main
lgl 2 months ago
parent
commit
b17dceb7f3
  1. 48
      irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/FinanceReportServiceImpl.java

48
irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/FinanceReportServiceImpl.java

@ -11,12 +11,16 @@ import irbs.cust.rating.jpa.repository.FinanceReportRepository;
import irbs.cust.rating.jpa.repository.RatingCompanyCustomerRepository;
import irbs.cust.rating.jpa.vo.FinanceReportVo;
import irbs.cust.rating.service.FinanceReportService;
import irbs.cust.rating.service.support.Subject;
import irbs.financialTemplate.enums.AccountingStanard;
import irbs.financialTemplate.enums.FinancialTemplate;
import irbs.financialTemplate.jpa.vo.MappingFinancialReportVo;
import irbs.financialTemplate.jpa.vo.OriginalFinancialReportVo;
import irbs.financialTemplate.service.FinancialMappingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
@Service("financeReportService")
@ -102,14 +106,24 @@ public class FinanceReportServiceImpl extends DaoServiceImpl<FinanceReport, Stri
OriginalFinancialReportVo ofr = null;
for(int i=0; i<num; i++) {
if (null !=reportList && reportList.size() > i) {
ofr = new OriginalFinancialReportVo();
ofr.setFinancialTemplate(financialTemplateType);
// 判断新旧会计准则
if (reportList.get(i).getAccountingStandard().equals(AccountingStanard.NEW.name())) {
ofr.setAccountingStanard(AccountingStanard.NEW);
} else {
ofr.setAccountingStanard(AccountingStanard.OLD);
}
// 获取财报及数据准备
List<FinanceReportDetail> reportDataList = financeReportDetailRepository.findByReportId(reportList.get(i).getId());
Subject subject = getSubject(reportDataList);
ofr.setItemCodes(subject.getCodeList());
// 转换财报科目
MappingFinancialReportVo mfr = financialMappingService.getMappingResult(ofr);
// 组装新的科目号对应的数据值
// Map<String, Object> dataMap = buildSubjectData(subject.dataMap, mfr.getMappedItemCodes());
Map<String, Object> dataMap = getSubject(reportDataList);
Map<String, Object> dataMap = buildSubjectData(subject.dataMap, mfr.getMappedItemCodes());
// 科目数据map中追加该期财报新旧会计准则标识
dataMap.put("_ACCOUNTING_STANDARD_", reportList.get(i).getAccountingStandard());
dataMap.put("_TEMPLATE_TYPE_", financialTemplateType);
dataMap.put("_ACCOUNTING_STANDARD_", ofr.getAccountingStanard().name());
result[i] = dataMap;
} else {
result[i] = null;
@ -118,17 +132,27 @@ public class FinanceReportServiceImpl extends DaoServiceImpl<FinanceReport, Stri
return result;
}
// 根据科目数据map与转换结果map,使用转换结果的科目号重新组装科目数据。
public Map<String, Object> buildSubjectData(Map<String, BigDecimal> subjectDataMap, LinkedHashMap<String, String> mappedMap) {
Map<String, Object> map = new HashMap<>();
Iterator<java.util.Map.Entry<String, String>> it = mappedMap.entrySet().iterator();
while(it.hasNext()) {
java.util.Map.Entry<String,String> entry = it.next();
if (entry.getValue()!=null) {
map.put(entry.getValue(), subjectDataMap.get(entry.getKey()));
}
}
return map;
}
// 根据财报数据,获得科目编码集合与科目数据map组装的java类
public Map<String, Object> getSubject(List<FinanceReportDetail> list) throws Exception {
Map<String, Object> dataMap = new HashMap<>();
public Subject getSubject(List<FinanceReportDetail> list) throws Exception {
List<String> codeList = new ArrayList<>();
Map<String, BigDecimal> dataMap = new HashMap<>();
for (FinanceReportDetail detail: list) {
Double itemValue=null;
if(detail.getProjectValue()!=null){
itemValue=detail.getProjectValue().doubleValue();
}
dataMap.put(detail.getProjectCode(), itemValue);
codeList.add(detail.getProjectCode());
dataMap.put(detail.getProjectCode(), detail.getProjectValue());
}
return dataMap;
return new Subject(codeList, dataMap);
}
}

Loading…
Cancel
Save