|
@ -11,12 +11,16 @@ import irbs.cust.rating.jpa.repository.FinanceReportRepository; |
|
|
import irbs.cust.rating.jpa.repository.RatingCompanyCustomerRepository; |
|
|
import irbs.cust.rating.jpa.repository.RatingCompanyCustomerRepository; |
|
|
import irbs.cust.rating.jpa.vo.FinanceReportVo; |
|
|
import irbs.cust.rating.jpa.vo.FinanceReportVo; |
|
|
import irbs.cust.rating.service.FinanceReportService; |
|
|
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.enums.FinancialTemplate; |
|
|
|
|
|
import irbs.financialTemplate.jpa.vo.MappingFinancialReportVo; |
|
|
import irbs.financialTemplate.jpa.vo.OriginalFinancialReportVo; |
|
|
import irbs.financialTemplate.jpa.vo.OriginalFinancialReportVo; |
|
|
import irbs.financialTemplate.service.FinancialMappingService; |
|
|
import irbs.financialTemplate.service.FinancialMappingService; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
@Service("financeReportService") |
|
|
@Service("financeReportService") |
|
@ -102,14 +106,24 @@ public class FinanceReportServiceImpl extends DaoServiceImpl<FinanceReport, Stri |
|
|
OriginalFinancialReportVo ofr = null; |
|
|
OriginalFinancialReportVo ofr = null; |
|
|
for(int i=0; i<num; i++) { |
|
|
for(int i=0; i<num; i++) { |
|
|
if (null !=reportList && reportList.size() > 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()); |
|
|
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 = buildSubjectData(subject.dataMap, mfr.getMappedItemCodes()); |
|
|
Map<String, Object> dataMap = getSubject(reportDataList); |
|
|
|
|
|
// 科目数据map中追加该期财报新旧会计准则标识
|
|
|
// 科目数据map中追加该期财报新旧会计准则标识
|
|
|
dataMap.put("_ACCOUNTING_STANDARD_", reportList.get(i).getAccountingStandard()); |
|
|
dataMap.put("_ACCOUNTING_STANDARD_", ofr.getAccountingStanard().name()); |
|
|
dataMap.put("_TEMPLATE_TYPE_", financialTemplateType); |
|
|
|
|
|
result[i] = dataMap; |
|
|
result[i] = dataMap; |
|
|
} else { |
|
|
} else { |
|
|
result[i] = null; |
|
|
result[i] = null; |
|
@ -118,17 +132,27 @@ public class FinanceReportServiceImpl extends DaoServiceImpl<FinanceReport, Stri |
|
|
return result; |
|
|
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类
|
|
|
// 根据财报数据,获得科目编码集合与科目数据map组装的java类
|
|
|
public Map<String, Object> getSubject(List<FinanceReportDetail> list) throws Exception { |
|
|
public Subject getSubject(List<FinanceReportDetail> list) throws Exception { |
|
|
Map<String, Object> dataMap = new HashMap<>(); |
|
|
List<String> codeList = new ArrayList<>(); |
|
|
|
|
|
Map<String, BigDecimal> dataMap = new HashMap<>(); |
|
|
for (FinanceReportDetail detail: list) { |
|
|
for (FinanceReportDetail detail: list) { |
|
|
Double itemValue=null; |
|
|
codeList.add(detail.getProjectCode()); |
|
|
if(detail.getProjectValue()!=null){ |
|
|
dataMap.put(detail.getProjectCode(), detail.getProjectValue()); |
|
|
itemValue=detail.getProjectValue().doubleValue(); |
|
|
|
|
|
} |
|
|
|
|
|
dataMap.put(detail.getProjectCode(), itemValue); |
|
|
|
|
|
} |
|
|
} |
|
|
return dataMap; |
|
|
return new Subject(codeList, dataMap); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|