diff --git a/src/main/java/com/tanpu/fund/api/ProductApi.java b/src/main/java/com/tanpu/fund/api/ProductApi.java index 67ec60b1900aecac891829d8f6bec5c0a31f89d6..40cf84d5c2ad553e10eb7a27d73dabea08aa6333 100644 --- a/src/main/java/com/tanpu/fund/api/ProductApi.java +++ b/src/main/java/com/tanpu/fund/api/ProductApi.java @@ -168,7 +168,7 @@ public interface ProductApi { CommonResp<List<FundSameResp>> querySamefund(@RequestParam("fundId") String fundId); @ApiOperation("ç†è´¢å¸ˆå‡€å€¼å¯¼å…¥") - @GetMapping("/ifa/net/import") + @PostMapping("/ifa/net/import") CommonResp<List<FundNavMessage>> importNetInfo(@RequestParam("file") MultipartFile file, @RequestParam(value = "fundId", required = false) String fundId); diff --git a/src/main/java/com/tanpu/fund/service/impl/ProductServiceImpl.java b/src/main/java/com/tanpu/fund/service/impl/ProductServiceImpl.java index 5b42f581cfb71300fb66fb11e22d55161b0f96c0..e891ab5ab27ffb440b3491cb80f902f24a0a7559 100644 --- a/src/main/java/com/tanpu/fund/service/impl/ProductServiceImpl.java +++ b/src/main/java/com/tanpu/fund/service/impl/ProductServiceImpl.java @@ -1,6 +1,7 @@ package com.tanpu.fund.service.impl; import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.poi.excel.ExcelReader; @@ -1690,9 +1691,13 @@ public class ProductServiceImpl implements ProductService, Constant { List<List<Object>> read = req.getFundNavMessages().stream().map(ls -> { 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.getCumulativeNav()); + linkedList.add(ls.getCumulative_nav()); return linkedList; }).collect(Collectors.toList()); @@ -1931,7 +1936,8 @@ public class ProductServiceImpl implements ProductService, Constant { } 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"); @@ -1939,11 +1945,6 @@ public class ProductServiceImpl implements ProductService, Constant { @Override 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; if (StringUtils.isEmpty(fundId)) { ifaNavMap = new HashMap<>(0); @@ -1957,11 +1958,11 @@ public class ProductServiceImpl implements ProductService, Constant { int size = reader.readAll().size(); List<FundNavMessage> resultMessage = new ArrayList<>(size * 2); 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); - } catch (IOException e) { - return CommonResp.error("æ–‡ä»¶æ ¼å¼é”™è¯¯,æ— æ³•è¯»å–ï¼Œè¯·æ‚¨é‡æ–°ä¸‹è½½å¯¼å…¥æ¨¡æ¿"); + } catch (Exception e) { + return CommonResp.error("0004", "æ–‡ä»¶æ ¼å¼é”™è¯¯,æ— æ³•è¯»å–ï¼Œè¯·æ‚¨é‡æ–°ä¸‹è½½å¯¼å…¥æ¨¡æ¿"); } } @@ -1993,15 +1994,27 @@ public class ProductServiceImpl implements ProductService, Constant { read.forEach(ls -> { boolean errorRow = false; 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; - message.setMessage("[æ—¥æœŸæ ¼å¼é”™è¯¯]"); + message.setMessage("[净值日期ä¸èƒ½ä¸ºç©º]"); } 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 (!BigDecimalValidator.getInstance().isValid(row2)) { + if (ls.get(1) == null || !BigDecimalValidator.getInstance().isValid(ls.get(1) + "")) { errorRow = true; if (StringUtils.isEmpty(message.getMessage())) { message.setMessage("[å•ä½å‡€å€¼ä¸ºç©ºæˆ–æ ¼å¼é”™è¯¯]"); @@ -2009,11 +2022,11 @@ public class ProductServiceImpl implements ProductService, Constant { message.setMessage(message.getMessage() + ",[å•ä½å‡€å€¼ä¸ºç©ºæˆ–æ ¼å¼é”™è¯¯]"); } } else { + row2 = (ls.get(1) + "").trim(); message.setNav(new BigDecimal(row2)); } - String row3 = (ls.get(2) + "").trim(); - if (!BigDecimalValidator.getInstance().isValid(row3)) { + if (ls.get(2) == null || !BigDecimalValidator.getInstance().isValid(ls.get(2) + "")) { errorRow = true; if (StringUtils.isEmpty(message.getMessage())) { message.setMessage("[ç´¯è®¡åˆ†çº¢å†æŠ•å‡€å€¼ä¸ºç©ºæˆ–æ ¼å¼é”™è¯¯]"); @@ -2021,14 +2034,15 @@ public class ProductServiceImpl implements ProductService, Constant { message.setMessage(message.getMessage() + ",[ç´¯è®¡åˆ†çº¢å†æŠ•å‡€å€¼ä¸ºç©ºæˆ–æ ¼å¼é”™è¯¯]"); } } else { - message.setCumulativeNav(new BigDecimal(row3)); + row3 = (ls.get(2) + "").trim(); + message.setCumulative_nav(new BigDecimal(row3)); } + if (errorRow) { message.setConfirmStatus(3); - errorStatus.set(true); - } else if (StringUtils.isNotEmpty(row1) && ifaNavMap.containsKey(Long.parseLong(row1))) { + resultMessage.add(message); + } else if (StringUtils.isNotEmpty(row1) && ifaNavMap.containsKey(DateUtil.parse(row1).getTime())) { message.setConfirmStatus(3); - errorStatus.set(true); if (StringUtils.isEmpty(message.getMessage())) { message.setMessage("[ç›¸åŒæ—¥æœŸå˜åœ¨é‡å¤æ•°æ®]"); } else { @@ -2038,10 +2052,9 @@ public class ProductServiceImpl implements ProductService, Constant { BeanUtils.copyProperties(ifaNavMap.get(Long.parseLong(row1)), messageCopy); messageCopy.setConfirmStatus(3); resultMessage.add(messageCopy); + } else { + resultMessage.add(message); } - - resultMessage.add(message); - }); } @@ -2060,7 +2073,7 @@ public class ProductServiceImpl implements ProductService, Constant { message.setMessage("[å•ä½å‡€å€¼]与上次对比相差超过20%"); } - BigDecimal cumSubtract = subtractAbs(message.getCumulativeNav(), messageAdd.getCumulativeNav()); + BigDecimal cumSubtract = subtractAbs(message.getCumulative_nav(), messageAdd.getCumulative_nav()); if (compare02.compareTo(cumSubtract) < 0) { message.setConfirmStatus(2); if (StringUtils.isNotEmpty(message.getMessage())) { @@ -2069,12 +2082,12 @@ public class ProductServiceImpl implements ProductService, Constant { message.setMessage("[ç´¯è®¡åˆ†çº¢å†æŠ•å‡€å€¼]与上次对比相差超过20%"); } } - } else { - i++; } newResultMessage.add(message); + }else { + newResultMessage.add(message); } - newResultMessage.add(message); + } return newResultMessage; }