Commit 3e58aa29 authored by zp's avatar zp

merge

parent 07ee83c2
...@@ -168,7 +168,7 @@ public interface ProductApi { ...@@ -168,7 +168,7 @@ public interface ProductApi {
CommonResp<List<FundSameResp>> querySamefund(@RequestParam("fundId") String fundId); CommonResp<List<FundSameResp>> querySamefund(@RequestParam("fundId") String fundId);
@ApiOperation("理财师净值导入") @ApiOperation("理财师净值导入")
@GetMapping("/ifa/net/import") @PostMapping("/ifa/net/import")
CommonResp<List<FundNavMessage>> importNetInfo(@RequestParam("file") MultipartFile file, CommonResp<List<FundNavMessage>> importNetInfo(@RequestParam("file") MultipartFile file,
@RequestParam(value = "fundId", required = false) String fundId); @RequestParam(value = "fundId", required = false) String fundId);
......
package com.tanpu.fund.service.impl; package com.tanpu.fund.service.impl;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelReader;
...@@ -1720,9 +1721,13 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -1720,9 +1721,13 @@ public class ProductServiceImpl implements ProductService, Constant {
List<List<Object>> read = req.getFundNavMessages().stream().map(ls -> { List<List<Object>> read = req.getFundNavMessages().stream().map(ls -> {
List<Object> linkedList = new LinkedList<>(); List<Object> linkedList = new LinkedList<>();
linkedList.add(ls.getPriceDate() != null ? ls.getPriceDate().getTime() : ""); if (StringUtils.isNotEmpty(ls.getPrice_date())) {
linkedList.add(DateTime.of(ls.getPrice_date(), "yyyy-MM-dd").getTime());
} else {
linkedList.add("");
}
linkedList.add(ls.getNav()); linkedList.add(ls.getNav());
linkedList.add(ls.getCumulativeNav()); linkedList.add(ls.getCumulative_nav());
return linkedList; return linkedList;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -1961,7 +1966,8 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -1961,7 +1966,8 @@ public class ProductServiceImpl implements ProductService, Constant {
} }
newResultMessage.sort(Comparator.comparing(FundNavMessage::getPriceDate).reversed()); newResultMessage.sort(Comparator.comparing(FundNavMessage::getPriceDate).reversed());
return CommonResp.error("9999", "数据错误,请您重新核对", newResultMessage); //return CommonResp.error("0003", "数据错误,请您重新核对", newResultMessage);
return CommonResp.success(newResultMessage);
} }
private static final BigDecimal compare02 = new BigDecimal("0.2"); private static final BigDecimal compare02 = new BigDecimal("0.2");
...@@ -1969,11 +1975,6 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -1969,11 +1975,6 @@ public class ProductServiceImpl implements ProductService, Constant {
@Override @Override
public CommonResp<List<FundNavMessage>> importNet(MultipartFile file, String fundId) { public CommonResp<List<FundNavMessage>> importNet(MultipartFile file, String fundId) {
FundInfo fundInfo = this.fundInfoMapper.selectByPrimaryKey(fundId);
if (fundInfo == null) {
return CommonResp.error("获取不到基金信息");
}
Map<Long, IfaImportedFundNav> ifaNavMap; Map<Long, IfaImportedFundNav> ifaNavMap;
if (StringUtils.isEmpty(fundId)) { if (StringUtils.isEmpty(fundId)) {
ifaNavMap = new HashMap<>(0); ifaNavMap = new HashMap<>(0);
...@@ -1987,11 +1988,11 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -1987,11 +1988,11 @@ public class ProductServiceImpl implements ProductService, Constant {
int size = reader.readAll().size(); int size = reader.readAll().size();
List<FundNavMessage> resultMessage = new ArrayList<>(size * 2); List<FundNavMessage> resultMessage = new ArrayList<>(size * 2);
AtomicBoolean errorStatus = new AtomicBoolean(false); AtomicBoolean errorStatus = new AtomicBoolean(false);
List<List<Object>> read = reader.read(2, size - 1); List<List<Object>> read = reader.read(1, size);
return getListCommonResp(ifaNavMap, resultMessage, errorStatus, read); return getListCommonResp(ifaNavMap, resultMessage, errorStatus, read);
} catch (IOException e) { } catch (Exception e) {
return CommonResp.error("文件格式错误,无法读取,请您重新下载导入模板"); return CommonResp.error("0004", "文件格式错误,无法读取,请您重新下载导入模板");
} }
} }
...@@ -2023,15 +2024,27 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -2023,15 +2024,27 @@ public class ProductServiceImpl implements ProductService, Constant {
read.forEach(ls -> { read.forEach(ls -> {
boolean errorRow = false; boolean errorRow = false;
FundNavMessage message = new FundNavMessage(); FundNavMessage message = new FundNavMessage();
String row1 = (ls.get(0) + "").trim();
if (NumberUtil.isNumber(row1)) { String row1 = null, row2, row3;
if (ls.get(0) == null) {
errorRow = true; errorRow = true;
message.setMessage("[日期格式错误]"); message.setMessage("[净值日期不能为空]");
} else { } else {
message.setPriceDate(DateUtil.date(Long.parseLong(row1))); row1 = (ls.get(0) + "").trim();
Date date = null;
try {
date = DateUtil.parseDate(row1);
} catch (Exception e) {
}
if (date == null) {
errorRow = true;
message.setMessage("[净值日期格式错误]");
} else {
message.setPrice_date(row1);
message.setPriceDate(DateUtil.parseDate(row1));
}
} }
String row2 = (ls.get(1) + "").trim(); if (ls.get(1) == null || !BigDecimalValidator.getInstance().isValid(ls.get(1) + "")) {
if (!BigDecimalValidator.getInstance().isValid(row2)) {
errorRow = true; errorRow = true;
if (StringUtils.isEmpty(message.getMessage())) { if (StringUtils.isEmpty(message.getMessage())) {
message.setMessage("[单位净值为空或格式错误]"); message.setMessage("[单位净值为空或格式错误]");
...@@ -2039,11 +2052,11 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -2039,11 +2052,11 @@ public class ProductServiceImpl implements ProductService, Constant {
message.setMessage(message.getMessage() + ",[单位净值为空或格式错误]"); message.setMessage(message.getMessage() + ",[单位净值为空或格式错误]");
} }
} else { } else {
row2 = (ls.get(1) + "").trim();
message.setNav(new BigDecimal(row2)); message.setNav(new BigDecimal(row2));
} }
String row3 = (ls.get(2) + "").trim(); if (ls.get(2) == null || !BigDecimalValidator.getInstance().isValid(ls.get(2) + "")) {
if (!BigDecimalValidator.getInstance().isValid(row3)) {
errorRow = true; errorRow = true;
if (StringUtils.isEmpty(message.getMessage())) { if (StringUtils.isEmpty(message.getMessage())) {
message.setMessage("[累计分红再投净值为空或格式错误]"); message.setMessage("[累计分红再投净值为空或格式错误]");
...@@ -2051,14 +2064,15 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -2051,14 +2064,15 @@ public class ProductServiceImpl implements ProductService, Constant {
message.setMessage(message.getMessage() + ",[累计分红再投净值为空或格式错误]"); message.setMessage(message.getMessage() + ",[累计分红再投净值为空或格式错误]");
} }
} else { } else {
message.setCumulativeNav(new BigDecimal(row3)); row3 = (ls.get(2) + "").trim();
message.setCumulative_nav(new BigDecimal(row3));
} }
if (errorRow) { if (errorRow) {
message.setConfirmStatus(3); message.setConfirmStatus(3);
errorStatus.set(true); resultMessage.add(message);
} else if (StringUtils.isNotEmpty(row1) && ifaNavMap.containsKey(Long.parseLong(row1))) { } else if (StringUtils.isNotEmpty(row1) && ifaNavMap.containsKey(DateUtil.parse(row1).getTime())) {
message.setConfirmStatus(3); message.setConfirmStatus(3);
errorStatus.set(true);
if (StringUtils.isEmpty(message.getMessage())) { if (StringUtils.isEmpty(message.getMessage())) {
message.setMessage("[相同日期存在重复数据]"); message.setMessage("[相同日期存在重复数据]");
} else { } else {
...@@ -2068,10 +2082,9 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -2068,10 +2082,9 @@ public class ProductServiceImpl implements ProductService, Constant {
BeanUtils.copyProperties(ifaNavMap.get(Long.parseLong(row1)), messageCopy); BeanUtils.copyProperties(ifaNavMap.get(Long.parseLong(row1)), messageCopy);
messageCopy.setConfirmStatus(3); messageCopy.setConfirmStatus(3);
resultMessage.add(messageCopy); resultMessage.add(messageCopy);
} else {
resultMessage.add(message);
} }
resultMessage.add(message);
}); });
} }
...@@ -2090,7 +2103,7 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -2090,7 +2103,7 @@ public class ProductServiceImpl implements ProductService, Constant {
message.setMessage("[单位净值]与上次对比相差超过20%"); message.setMessage("[单位净值]与上次对比相差超过20%");
} }
BigDecimal cumSubtract = subtractAbs(message.getCumulativeNav(), messageAdd.getCumulativeNav()); BigDecimal cumSubtract = subtractAbs(message.getCumulative_nav(), messageAdd.getCumulative_nav());
if (compare02.compareTo(cumSubtract) < 0) { if (compare02.compareTo(cumSubtract) < 0) {
message.setConfirmStatus(2); message.setConfirmStatus(2);
if (StringUtils.isNotEmpty(message.getMessage())) { if (StringUtils.isNotEmpty(message.getMessage())) {
...@@ -2099,12 +2112,12 @@ public class ProductServiceImpl implements ProductService, Constant { ...@@ -2099,12 +2112,12 @@ public class ProductServiceImpl implements ProductService, Constant {
message.setMessage("[累计分红再投净值]与上次对比相差超过20%"); message.setMessage("[累计分红再投净值]与上次对比相差超过20%");
} }
} }
} else {
i++;
} }
newResultMessage.add(message); newResultMessage.add(message);
}else {
newResultMessage.add(message);
} }
newResultMessage.add(message);
} }
return newResultMessage; return newResultMessage;
} }
......
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