浏览代码

Merge branch 'develop' of http://112.74.196.215:3000/Tech2/data-daq into develop

wangzaijun 6 月之前
父节点
当前提交
00565eb2dc

+ 12 - 0
service-base/src/main/java/com/simuwang/base/common/util/ExcelUtil.java

@@ -24,6 +24,8 @@ import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.text.NumberFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -437,4 +439,14 @@ public class ExcelUtil {
         return count == 1 ? EmailDataDirectionConst.COLUMN_DIRECTION_TYPE : EmailDataDirectionConst.ROW_DIRECTION_TYPE;
     }
 
+    // Excel 的起始日期是 1900 年 1 月 1 日
+    private static final LocalDate EXCEL_EPOCH_DATE = LocalDate.of(1900, 1, 1);
+
+
+    public static String convertExcelDateToString(String dateNum) {
+        LocalDate startDate = LocalDate.of(1900, 1, 1);
+        LocalDate localDate = startDate.plusDays(Math.round(Double.valueOf(dateNum) - 2));
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        return localDate.format(formatter);
+    }
 }

+ 6 - 0
service-base/src/main/java/com/simuwang/base/common/util/StringUtil.java

@@ -653,4 +653,10 @@ public class StringUtil {
             return false;
         }
     }
+
+    public static boolean compare2NumericValue(String value) {
+        int parsedInt = Integer.parseInt(value);
+        // 52962==2044-12-31
+        return parsedInt <= 52962;
+    }
 }

+ 8 - 1
service-base/src/main/java/com/simuwang/base/pojo/dos/FundInfoDO.java

@@ -150,10 +150,16 @@ public class FundInfoDO {
      */
     private String advisorCompanyName;
     /**
-     * 发行人名称
+     * 管理人名称
      */
     private String trustCompanyName;
 
+    /**
+     * 发行人公司
+     * @return
+     */
+    private String issuerCompanyName;
+
     public FundInfoVO toVO() {
         FundInfoVO vo = new FundInfoVO();
         vo.setId(this.id);
@@ -162,6 +168,7 @@ public class FundInfoDO {
         vo.setInceptionDate(this.inceptionDate);
         vo.setAdvisorId(this.advisorId);
         vo.setIssuerId(this.issuerId);
+        vo.setIssuerCompanyName(this.issuerCompanyName);
         vo.setTrustCompanyName(this.trustCompanyName);
         vo.setBaseCurrency(this.baseCurrency);
         vo.setFundName(this.fundName);

+ 5 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundInformationDO.java

@@ -12,6 +12,10 @@ import lombok.Data;
 @Data
 public class FundInformationDO {
     /**
+     * ID
+     */
+    private Integer id;
+    /**
      * 基金ID
      */
     private String fundId;
@@ -66,6 +70,7 @@ public class FundInformationDO {
 
     public FundInformationVO toVO() {
         FundInformationVO vo = new FundInformationVO();
+        vo.setId(this.id);
         vo.setFundId(this.fundId);
         vo.setFundShortName(this.fundShortName);
         vo.setRegisterNumber(this.registerNumber);

+ 6 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/FundInfoVO.java

@@ -60,11 +60,16 @@ public class FundInfoVO {
      */
     private String issuerId;
     /**
+     * 发行人公司
+     * @return
+     */
+    private String issuerCompanyName;
+    /**
      * 投资顾问名称
      */
     private String advisorCompanyName;
     /**
-     * 发行人名称
+     * 管理人名称
      */
     private String trustCompanyName;
     /**

+ 1 - 1
service-base/src/main/resources/mapper/EmailParseInfoMapper.xml

@@ -73,7 +73,7 @@
                 and epi.parse_date <![CDATA[ <= ]]> #{endDate}
             </if>
             <if test="emailStartDate !=null and emailStartDate != ''">
-                and epi.email_date <![CDATA[ >= ]]> #{startDate}
+                and epi.email_date <![CDATA[ >= ]]> #{emailStartDate}
             </if>
             <if test="emailEndDate !=null and emailEndDate != ''">
                 and epi.email_date <![CDATA[ <= ]]> #{emailEndDate}

+ 8 - 3
service-base/src/main/resources/mapper/FundInfoMapper.xml

@@ -12,6 +12,8 @@
         <result column="inception_date" property="inceptionDate"/>
         <result column="advisor_id" property="advisorId"/>
         <result column="issuer_id" property="issuerId"/>
+        <result column="issuer_company_name" property="issuerCompanyName"/>
+        <result column="advisor_company_name" property="advisorCompanyName"/>
         <result column="custodian_id" property="custodianId"/>
         <result column="register_number" property="registerNumber"/>
         <result column="register_date" property="registerDate"/>
@@ -40,7 +42,8 @@
     </select>
     <select id="searchFundInfoList" resultType="com.simuwang.base.pojo.dos.FundInformationDO">
         select * from (
-        select f.fund_id as fundId,
+        select f.id as id,
+               f.fund_id as fundId,
                f.fund_short_name as fundShortName,
                f.register_number as registerNumber,
                c.company_id as companyId,
@@ -198,16 +201,18 @@
         select info.id,info.p_fund_id,info.fund_id,info.fund_name,
                info.fund_short_name,info.fund_type,info.manager_type,
                info.base_currency,info.inception_date,info.advisor_id,a.company_name as advisor_company_name,
-               info.issuer_id,t.company_name as trust_company_name,info.custodian_id,info.trust_id,
+               info.issuer_id,ic.company_name as issuer_company_name,t.company_name as trust_company_name,info.custodian_id,info.trust_id,
                info.register_number,info.register_date,info.createtime,
                info.is_amac_show,info.fund_status,info.amac_source_type,
                info.investment_type,info.liquidate_date,info.performance_start_date,
                info.is_shareclass,info.amac_url
         from PPW_EMAIL.pvn_fund_info info
         left join PPW_EMAIL.pvn_company_info a
-        on info.advisor_id = a.company_id and a.isvalid=1
+                  on info.advisor_id = a.company_id and a.isvalid=1
         left join PPW_EMAIL.pvn_company_info t
                   on info.trust_id = t.company_id and t.isvalid=1
+        left join PPW_EMAIL.pvn_company_info ic
+                  on info.issuer_id = ic.company_id and ic.isvalid=1
         where info.isvalid=1 and info.fund_id=#{fundId}
     </select>
 </mapper>

+ 5 - 0
service-daq/src/main/java/com/simuwang/daq/service/EmailParseApiServiceImpl.java

@@ -124,6 +124,11 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
             log.info("邮件不存在 ->邮件id:{}", emailId);
             return;
         }
+        //解析成功的邮件不再解析
+        if (emailParseInfoDO.getParseStatus() == 1) {
+            log.info("邮件解析状态为成功,不再解析 ->邮件id:{}", emailId);
+            return;
+        }
         List<EmailFileInfoDO> emailFileInfoDOList = emailFileInfoMapper.queryByEmailId(emailId);
         if (CollUtil.isEmpty(emailFileInfoDOList)) {
             log.info("该邮件不存在附件 -> 邮件id:{}", emailId);

+ 7 - 2
service-daq/src/main/java/com/simuwang/daq/service/EmailTemplateService.java

@@ -12,6 +12,7 @@ import com.simuwang.base.common.conts.EmailFieldConst;
 import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.ExcelUtil;
 import com.simuwang.base.common.util.NavDataUtil;
+import com.simuwang.base.common.util.StringUtil;
 import com.simuwang.base.mapper.EmailTemplateApplicationRuleMapper;
 import com.simuwang.base.mapper.EmailTemplateDataRuleMapper;
 import com.simuwang.base.mapper.EmailTemplateMappingMapper;
@@ -193,9 +194,13 @@ public class EmailTemplateService {
                     String fieldName = fieldEntry.getKey();
                     int columnIndex = fieldEntry.getValue().getValue();
                     Cell cell = row.getCell(columnIndex);
+                    String value = ExcelUtil.getCellValue(cell);
                     String fieldRule = fieldPatternMap.get(fieldName);
-                    String cellValue = getValueByPattern(ExcelUtil.getCellValue(cell), fieldRule);
-
+                    boolean isDateFormat = fieldName.equals(EmailFieldConst.PRICE_DATE) && StringUtil.isNumeric(value) && StrUtil.isNotBlank(value) &&  StringUtil.compare2NumericValue(value);
+                    if (isDateFormat) {
+                        value = ExcelUtil.convertExcelDateToString(value);
+                    }
+                    String cellValue = getValueByPattern(value, fieldRule);
                     BigDecimal unitConvert = fieldUnitConvertMap.get(fieldName);
                     cellValue = getValueAfterUnitConvert(cellValue, unitConvert);
                     fieldValueMap.put(fieldName, cellValue);

+ 10 - 1
service-daq/src/main/java/com/simuwang/daq/service/NavEmailParser.java

@@ -292,7 +292,12 @@ public class NavEmailParser extends AbstractEmailParser {
         EmailFundNavDTO fundNavDTO = new EmailFundNavDTO();
         fundNavDTO.setFundName(fieldValueMap.get(EmailFieldConst.FUND_NAME));
         fundNavDTO.setRegisterNumber(fieldValueMap.get(EmailFieldConst.REGISTER_NUMBER));
-        fundNavDTO.setPriceDate(DateUtils.stringToDate(fieldValueMap.get(EmailFieldConst.PRICE_DATE)));
+        String priceDate = fieldValueMap.get(EmailFieldConst.PRICE_DATE);
+        boolean isDateFormat = StrUtil.isNotBlank(priceDate) && StringUtil.isNumeric(priceDate) && StringUtil.compare2NumericValue(priceDate);
+        if (isDateFormat) {
+            priceDate = ExcelUtil.convertExcelDateToString(priceDate);
+        }
+        fundNavDTO.setPriceDate(priceDate);
         fundNavDTO.setNav(fieldValueMap.get(EmailFieldConst.NAV));
         fundNavDTO.setCumulativeNavWithdrawal(fieldValueMap.get(EmailFieldConst.CUMULATIVE_NAV_WITHDRAWAL));
 
@@ -320,6 +325,10 @@ public class NavEmailParser extends AbstractEmailParser {
         EmailFundNavDTO emailFundNavDTO = new EmailFundNavDTO();
         String priceDate = columnFieldMap.get(EmailFieldConst.PRICE_DATE) != null && sheetRow.getCell(columnFieldMap.get(EmailFieldConst.PRICE_DATE)) != null ?
                 ExcelUtil.getCellValue(sheetRow.getCell(columnFieldMap.get(EmailFieldConst.PRICE_DATE))) : null;
+        boolean isDateFormat = StrUtil.isNotBlank(priceDate) && StringUtil.isNumeric(priceDate) && StringUtil.compare2NumericValue(priceDate);
+        if (isDateFormat) {
+            priceDate = ExcelUtil.convertExcelDateToString(priceDate);
+        }
         priceDate = DateUtils.stringToDate(priceDate);
 
         // 份额基金净值文件格式