|
|
@@ -23,12 +23,14 @@ import com.jzg.commons.entity.po.EsmInsCompany;
|
|
|
import com.jzg.commons.entity.po.InsFeeOrders;
|
|
|
import com.jzg.commons.entity.po.PtlAgreement;
|
|
|
import com.jzg.commons.entity.po.SysUploadFiles;
|
|
|
+import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
|
|
|
import com.jzg.commons.exception.ServiceException;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.*;
|
|
|
import com.jzg.commons.util.idgen.IdGenerate;
|
|
|
import com.jzg.organization.client.EsmInsCompanyClient;
|
|
|
import com.jzg.organization.client.InsFeeOrdersClient;
|
|
|
+import com.jzg.organization.client.InsOrdersClient;
|
|
|
import com.jzg.organization.excel.listener.*;
|
|
|
import com.jzg.organization.mapper.*;
|
|
|
import com.jzg.organization.service.ReceivableService;
|
|
|
@@ -107,6 +109,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
|
|
|
@Autowired
|
|
|
private InsFeeOrdersClient insFeeOrdersClient;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersClient insOrdersClient;
|
|
|
|
|
|
@Value("${upload.file.path}")
|
|
|
private String uploadPath;
|
|
|
@@ -1067,6 +1071,28 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ // 查询订单
|
|
|
+ HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
|
|
|
+ InsOrdersVo data = insOrdersVoHttpResult.getData();
|
|
|
+ if (null == data){
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("订单号不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询数据库中是否已存在该协议
|
|
|
+ PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
|
|
|
+ .eq(PtlAgreement::getId, data.getAgreementId()));
|
|
|
+
|
|
|
+ // 数据库不存在 → 直接失败
|
|
|
+ if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("协议编码在协议中不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
// 封装修改数据
|
|
|
InsPlyIncome insPlyIncome = new InsPlyIncome();
|
|
|
insPlyIncome.setId(existIncome.getId());
|
|
|
@@ -1081,6 +1107,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
|
|
|
insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
|
|
|
insPlyIncome.setContactPerson(vo.getDockingPerson());
|
|
|
+ insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
|
|
|
+ // 协议编号
|
|
|
+ insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
+ insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
|
|
|
+ insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
|
|
|
+ insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
|
|
|
|
|
|
// 加入修改列表
|
|
|
updateExcel.add(insPlyIncome);
|
|
|
@@ -1187,13 +1219,22 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ // 查询订单
|
|
|
+ HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
|
|
|
+ InsOrdersVo data = insOrdersVoHttpResult.getData();
|
|
|
+ if (null == data){
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("订单号不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
// 查询数据库中是否已存在该协议
|
|
|
PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
|
|
|
- .eq(PtlAgreement::getAgreementCode, vo.getAgreementCode())
|
|
|
- .eq(PtlAgreement::getAgreementType, vo.getAgreementType()));
|
|
|
+ .eq(PtlAgreement::getId, data.getAgreementId()));
|
|
|
|
|
|
// 数据库不存在 → 直接失败
|
|
|
- if (Objects.isNull(ptlAgreement)) {
|
|
|
+ if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
|
|
|
failedNumber++;
|
|
|
vo.setErrorMessage("协议编码在协议中不存在");
|
|
|
failedExcel.add(vo);
|
|
|
@@ -1224,12 +1265,16 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
|
|
|
insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
|
|
|
+ insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
|
|
|
// 险种编号
|
|
|
insPlyIncome.setProductId(vo.getProductId());
|
|
|
// 险种名称
|
|
|
insPlyIncome.setProductName(vo.getProductName());
|
|
|
// 被保险人姓名
|
|
|
insPlyIncome.setInsuredPerson(vo.getInsuredPerson());
|
|
|
+ // 对接人信息
|
|
|
+ insPlyIncome.setContactPerson(vo.getContactPerson());
|
|
|
+ insPlyIncome.setContactPersonPhone(vo.getContactPersonPhone());
|
|
|
|
|
|
// 数据库不存在 → 直接失败
|
|
|
if (Objects.isNull(existIncome)) {
|
|
|
@@ -1290,6 +1335,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
return importExcelResultVo;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean deleteSettlementById(String id) {
|
|
|
+ log.info("私有协议-结算记录-删除: id=[{}]",id);
|
|
|
+ return insPlyIncomeInvoiceSettlementMapper.deleteById(id) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@@ -1458,10 +1509,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- //匹配协议号
|
|
|
+ // 查询订单
|
|
|
+ HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
|
|
|
+ InsOrdersVo data = insOrdersVoHttpResult.getData();
|
|
|
+ if (null == data){
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("订单号不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询数据库中是否已存在该协议
|
|
|
PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
|
|
|
- .eq(PtlAgreement::getAgreementCode, vo.getAgreementCode()));
|
|
|
- if (Objects.isNull(ptlAgreement)) {
|
|
|
+ .eq(PtlAgreement::getId, data.getAgreementId()));
|
|
|
+
|
|
|
+ if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
|
|
|
failedNumber++;
|
|
|
vo.setErrorMessage("匹配协议编号失败");
|
|
|
failedExcel.add(vo);
|
|
|
@@ -1508,11 +1570,17 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
insPlyIncome.setCompanyId(matchCompany.getId());
|
|
|
insPlyIncome.setCompanyName(matchCompany.getName());
|
|
|
// insPlyIncome.setSigningTime(signDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
- insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
insPlyIncome.setLicenseNo(vo.getLicenseNo());
|
|
|
insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
|
|
|
insPlyIncome.setJqPremium(vo.getJqPremium().toString());
|
|
|
insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseRatio().toString());
|
|
|
+ insPlyIncome.setContactPerson(vo.getContactPerson());
|
|
|
+ insPlyIncome.setContactPersonPhone(vo.getContactPersonPhone());
|
|
|
+ // 协议编号
|
|
|
+ insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
+ insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
|
|
|
+ insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
|
|
|
+ insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
|
|
|
successExcel.add(insPlyIncome);
|
|
|
}
|
|
|
|
|
|
@@ -1552,10 +1620,20 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- //匹配协议号
|
|
|
+ // 查询订单
|
|
|
+ HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
|
|
|
+ InsOrdersVo data = insOrdersVoHttpResult.getData();
|
|
|
+ if (null == data){
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("订单号不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询数据库中是否已存在该协议
|
|
|
PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
|
|
|
- .eq(PtlAgreement::getAgreementCode, vo.getAgreementCode()));
|
|
|
- if (Objects.isNull(ptlAgreement)) {
|
|
|
+ .eq(PtlAgreement::getId, data.getAgreementId()));
|
|
|
+ if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
|
|
|
failedNumber++;
|
|
|
vo.setErrorMessage("匹配协议编号失败");
|
|
|
failedExcel.add(vo);
|
|
|
@@ -1601,11 +1679,17 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
insPlyIncome.setId(IdGenerate.nextId());
|
|
|
insPlyIncome.setCompanyId(matchCompany.getId());
|
|
|
// insPlyIncome.setSigningTime(signDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
- insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
insPlyIncome.setLicenseNo(vo.getLicenseNo());
|
|
|
insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
|
|
|
insPlyIncome.setJqPremium(vo.getJqPremium().toString());
|
|
|
insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherRatio().toString());
|
|
|
+ insPlyIncome.setContactPerson(vo.getContactPerson());
|
|
|
+ insPlyIncome.setContactPersonPhone(vo.getContactPersonPhone());
|
|
|
+ // 协议编号
|
|
|
+ insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
+ insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
|
|
|
+ insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
|
|
|
+ insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
|
|
|
successExcel.add(insPlyIncome);
|
|
|
}
|
|
|
|
|
|
@@ -1670,6 +1754,28 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ // 查询订单
|
|
|
+ HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
|
|
|
+ InsOrdersVo data = insOrdersVoHttpResult.getData();
|
|
|
+ if (null == data){
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("订单号不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询数据库中是否已存在该协议
|
|
|
+ PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
|
|
|
+ .eq(PtlAgreement::getId, data.getAgreementId()));
|
|
|
+
|
|
|
+ // 数据库不存在 → 直接失败
|
|
|
+ if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("协议编码在协议中不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
// 3. 查询数据库中是否已存在该保单号
|
|
|
InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
|
|
|
.eq(InsPlyIncome::getJqPolicyNo, vo.getJqPolicyNo()));
|
|
|
@@ -1708,6 +1814,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
|
|
|
insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
|
|
|
insPlyIncome.setContactPerson(vo.getDockingPerson());
|
|
|
+ insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
|
|
|
+ // 协议编号
|
|
|
+ insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
+ insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
|
|
|
+ insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
|
|
|
+ insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
|
|
|
|
|
|
// 加入修改列表
|
|
|
updateExcel.add(insPlyIncome);
|
|
|
@@ -1763,10 +1875,20 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- //匹配协议号
|
|
|
+ // 查询订单
|
|
|
+ HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
|
|
|
+ InsOrdersVo data = insOrdersVoHttpResult.getData();
|
|
|
+ if (null == data){
|
|
|
+ failedNumber++;
|
|
|
+ vo.setErrorMessage("订单号不存在");
|
|
|
+ failedExcel.add(vo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询数据库中是否已存在该协议
|
|
|
PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
|
|
|
- .eq(PtlAgreement::getAgreementCode, vo.getAgreementCode()));
|
|
|
- if (Objects.isNull(ptlAgreement)) {
|
|
|
+ .eq(PtlAgreement::getId, data.getAgreementId()));
|
|
|
+ if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
|
|
|
failedNumber++;
|
|
|
vo.setErrorMessage("匹配协议编号失败");
|
|
|
failedExcel.add(vo);
|
|
|
@@ -1818,6 +1940,13 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
insPlyIncome.setJyPremium(vo.getJyPremium().toString());
|
|
|
insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseRatio().toString());
|
|
|
insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherRatio().toString());
|
|
|
+ insPlyIncome.setContactPerson(vo.getContactPerson());
|
|
|
+ insPlyIncome.setContactPersonPhone(vo.getContactPersonPhone());
|
|
|
+ // 协议编号
|
|
|
+ insPlyIncome.setAgreementId(ptlAgreement.getId());
|
|
|
+ insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
|
|
|
+ insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
|
|
|
+ insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
|
|
|
successExcel.add(insPlyIncome);
|
|
|
}
|
|
|
|
|
|
@@ -2406,55 +2535,56 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
* @date 2026/5/23 16:28
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<CompanySuperviseSettlementReportDto> companySuperviseSettlementReport(
|
|
|
+ public HttpResult<List<CompanySuperviseSettlementReportDto>> companySuperviseSettlementReport(
|
|
|
SettlementReportQueryVo queryVo) {
|
|
|
- log.info("保险公司结算报表查询:{}", JSONUtil.toJsonStr(queryVo));
|
|
|
- // 查询所有公司
|
|
|
- List<CompanySuperviseSettlementReportDto> allCompanies =
|
|
|
- baseMapper.selectAllCompanyReports(queryVo);
|
|
|
- if (CollUtil.isEmpty(allCompanies)) {
|
|
|
- return Collections.emptyList();
|
|
|
- }
|
|
|
- // 查询应开票金额
|
|
|
- Map<String, BigDecimal> superviseAmountMap =
|
|
|
- baseMapper.getSuperviseAmount()
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- InvoiceAmountDto::getCompanyId,
|
|
|
- dto -> defaultZero(dto.getSuperviseAmount())
|
|
|
- ));
|
|
|
- // companyId -> dto
|
|
|
- Map<String, CompanySuperviseSettlementReportDto> companyMap =
|
|
|
- allCompanies.stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- CompanySuperviseSettlementReportDto::getCompanyId,
|
|
|
- Function.identity(),
|
|
|
- (a, b) -> a
|
|
|
- ));
|
|
|
- // 构建树
|
|
|
- List<CompanySuperviseSettlementReportDto> roots = new ArrayList<>();
|
|
|
- for (CompanySuperviseSettlementReportDto dto : allCompanies) {
|
|
|
- initAmount(dto);
|
|
|
- if (StrUtil.isBlank(dto.getParentId())
|
|
|
- || "0".equals(dto.getParentId())) {
|
|
|
-
|
|
|
- roots.add(dto);
|
|
|
- continue;
|
|
|
- }
|
|
|
- CompanySuperviseSettlementReportDto parent =
|
|
|
- companyMap.get(dto.getParentId());
|
|
|
- if (parent != null) {
|
|
|
- if (parent.getChildren() == null) {
|
|
|
- parent.setChildren(new ArrayList<>());
|
|
|
- }
|
|
|
- parent.getChildren().add(dto);
|
|
|
- }
|
|
|
- }
|
|
|
- // 自底向上汇总
|
|
|
- for (CompanySuperviseSettlementReportDto root : roots) {
|
|
|
- aggregate(root, superviseAmountMap);
|
|
|
- }
|
|
|
- return roots;
|
|
|
+ return null;
|
|
|
+// log.info("保险公司结算报表查询:{}", JSONUtil.toJsonStr(queryVo));
|
|
|
+// // 查询所有公司
|
|
|
+// List<CompanySuperviseSettlementReportDto> allCompanies =
|
|
|
+// baseMapper.selectAllCompanyReports(queryVo);
|
|
|
+// if (CollUtil.isEmpty(allCompanies)) {
|
|
|
+// return Collections.emptyList();
|
|
|
+// }
|
|
|
+// // 查询应开票金额
|
|
|
+// Map<String, BigDecimal> superviseAmountMap =
|
|
|
+// baseMapper.getSuperviseAmount()
|
|
|
+// .stream()
|
|
|
+// .collect(Collectors.toMap(
|
|
|
+// InvoiceAmountDto::getCompanyId,
|
|
|
+// dto -> defaultZero(dto.getSuperviseAmount())
|
|
|
+// ));
|
|
|
+// // companyId -> dto
|
|
|
+// Map<String, CompanySuperviseSettlementReportDto> companyMap =
|
|
|
+// allCompanies.stream()
|
|
|
+// .collect(Collectors.toMap(
|
|
|
+// CompanySuperviseSettlementReportDto::getCompanyId,
|
|
|
+// Function.identity(),
|
|
|
+// (a, b) -> a
|
|
|
+// ));
|
|
|
+// // 构建树
|
|
|
+// List<CompanySuperviseSettlementReportDto> roots = new ArrayList<>();
|
|
|
+// for (CompanySuperviseSettlementReportDto dto : allCompanies) {
|
|
|
+// initAmount(dto);
|
|
|
+// if (StrUtil.isBlank(dto.getParentId())
|
|
|
+// || "0".equals(dto.getParentId())) {
|
|
|
+//
|
|
|
+// roots.add(dto);
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// CompanySuperviseSettlementReportDto parent =
|
|
|
+// companyMap.get(dto.getParentId());
|
|
|
+// if (parent != null) {
|
|
|
+// if (parent.getChildren() == null) {
|
|
|
+// parent.setChildren(new ArrayList<>());
|
|
|
+// }
|
|
|
+// parent.getChildren().add(dto);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// // 自底向上汇总
|
|
|
+// for (CompanySuperviseSettlementReportDto root : roots) {
|
|
|
+// aggregate(root, superviseAmountMap);
|
|
|
+// }
|
|
|
+// return roots;
|
|
|
}
|
|
|
|
|
|
|