NavDataUtil.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package com.simuwang.base.common.util;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.simuwang.base.pojo.dto.EmailFundNavDTO;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. public class NavDataUtil {
  7. private static final Logger log = LoggerFactory.getLogger(NavDataUtil.class);
  8. public static boolean navDataFormatCheck(EmailFundNavDTO fundNavDTO) {
  9. // 净值日期格式校验
  10. if (StrUtil.isBlank(fundNavDTO.getPriceDate())) {
  11. log.warn("净值日期为空 -> 数据:{}", fundNavDTO);
  12. return false;
  13. }
  14. if (StrUtil.isBlank(fundNavDTO.getFundName()) && StrUtil.isBlank(fundNavDTO.getRegisterNumber())) {
  15. log.warn("备案编码和基金名称都为空-> 数据:{}", fundNavDTO);
  16. return false;
  17. }
  18. if (StrUtil.isNotBlank(fundNavDTO.getFundName()) && fundNavDTO.getFundName().length() > 110) {
  19. log.warn("基金名称长度超出限制(110个字符)-> 数据:{}", fundNavDTO);
  20. return false;
  21. }
  22. if (StrUtil.isNotBlank(fundNavDTO.getRegisterNumber()) && fundNavDTO.getRegisterNumber().length() > 12) {
  23. log.warn("备案编码长度超出限制(12个字符)-> 数据:{}", fundNavDTO);
  24. return false;
  25. }
  26. // 单位净值,累计单位净值,资产净值,资产份额数字格式校验
  27. boolean isvalidNumericFormat = (StrUtil.isBlank(fundNavDTO.getNav()) || StringUtil.isNumeric(fundNavDTO.getNav()))
  28. && (StrUtil.isBlank(fundNavDTO.getCumulativeNavWithdrawal()) || StringUtil.isNumeric(fundNavDTO.getCumulativeNavWithdrawal()))
  29. && (StrUtil.isBlank(fundNavDTO.getAssetNet()) || StringUtil.isNumeric(fundNavDTO.getAssetNet()))
  30. && (StrUtil.isBlank(fundNavDTO.getAssetShare()) || StringUtil.isNumeric(fundNavDTO.getAssetShare()));
  31. if (!isvalidNumericFormat) {
  32. log.warn("单位净值或累计净值或资产净值或资产份额格式不正确 -> 数据:{}", fundNavDTO);
  33. return false;
  34. }
  35. log.info("数据格式验证通过 -> {}", fundNavDTO);
  36. return true;
  37. }
  38. }