Selaa lähdekoodia

feat: 模版配置增加文本替换,主要用于水印导致的数据错误处理

chenjianhua 4 kuukautta sitten
vanhempi
commit
63d753980c

+ 7 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/EmailTemplateDataRuleDO.java

@@ -78,6 +78,12 @@ public class EmailTemplateDataRuleDO {
     @TableField(value = "updatetime")
     private Date updateTime;
 
+    /**
+     * 文本替换,在正则匹配之前使用
+     */
+    @TableField(value = "replace_text")
+    private Date replaceText;
+
     public EmailTemplateDataRuleVO toVO() {
         EmailTemplateDataRuleVO vo = new EmailTemplateDataRuleVO();
         vo.setId(this.id);
@@ -88,6 +94,7 @@ public class EmailTemplateDataRuleDO {
         vo.setPosition(this.position);
         vo.setUnitConvert(this.unitConvert);
         vo.setFieldName(this.fieldName);
+        vo.setReplaceText(this.replaceText);
         return vo;
     }
 }

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/TemplateDataRuleDTO.java

@@ -30,4 +30,8 @@ public class TemplateDataRuleDTO {
      * 单位转换
      */
     private BigDecimal unitConvert;
+    /**
+     * 文本替换
+     */
+    private String replaceText;
 }

+ 7 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/EmailTemplateDataRuleVO.java

@@ -1,8 +1,10 @@
 package com.simuwang.base.pojo.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 @Data
 public class EmailTemplateDataRuleVO {
@@ -39,4 +41,9 @@ public class EmailTemplateDataRuleVO {
      */
     private BigDecimal unitConvert;
 
+    /**
+     * 文本替换,在正则匹配之前使用
+     */
+    private Date replaceText;
+
 }

+ 5 - 3
service-base/src/main/resources/mapper/daq/EmailTemplateDataRuleMapper.xml

@@ -15,13 +15,14 @@
         <result column="createtime" property="createTime"/>
         <result column="updaterid" property="updaterId"/>
         <result column="updatetime" property="updateTime"/>
+        <result column="replace_text" property="replaceText"/>
     </resultMap>
     <insert id="batchInsert">
-        insert into email_template_data_rule(template_id,field_name,`POSITION`,`ROW`,`COLUMN`,field_rule,unit_convert,isvalid,creatorid,createtime,updaterid,updatetime)
+        insert into email_template_data_rule(template_id,field_name,`POSITION`,`ROW`,`COLUMN`,field_rule,unit_convert,isvalid,creatorid,createtime,updaterid,updatetime,replace_text)
         values
         <foreach collection="itemDoList" item="itemDo" index="index" separator=",">
             (#{itemDo.templateId},#{itemDo.fieldName},#{itemDo.position},#{itemDo.row},#{itemDo.column},#{itemDo.fieldRule},#{itemDo.unitConvert},
-            #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime})
+            #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime},#{itemDo.replaceText})
         </foreach>
     </insert>
     <update id="batchUpdate">
@@ -36,7 +37,8 @@
                 field_rule = #{itemDo.fieldRule},
                 unit_convert = #{itemDo.unitConvert},
                 updatetime = #{itemDo.updateTime},
-                updaterid = #{itemDo.updaterId}
+                updaterid = #{itemDo.updaterId},
+                replace_text = #{itemDo.replaceText}
             </set>
             where isvalid = 1 and id=#{itemDo.id}
         </foreach>

+ 16 - 0
service-daq/src/main/java/com/simuwang/daq/service/EmailTemplateService.java

@@ -166,6 +166,7 @@ public class EmailTemplateService {
         Map<String, Pair<Integer, Integer>> fieldPositionMap = MapUtil.newHashMap();
         Map<String, String> fieldPatternMap = MapUtil.newHashMap(8);
         Map<String, BigDecimal> fieldUnitConvertMap = MapUtil.newHashMap(8);
+        Map<String, String> fieldReplaceMap = MapUtil.newHashMap(8);
         for (TemplateDataRuleDTO dataRuleDTO : dataRuleDTOS) {
             if (dataRuleDTO.getRow() == null) {
                 continue;
@@ -180,6 +181,9 @@ public class EmailTemplateService {
             if (dataRuleDTO.getUnitConvert() != null) {
                 fieldUnitConvertMap.put(FILE_TYPE_MAP.get(dataRuleDTO.getFieldName()), dataRuleDTO.getUnitConvert());
             }
+            if (StringUtil.isNotEmpty(dataRuleDTO.getReplaceText())) {
+                fieldReplaceMap.put(FILE_TYPE_MAP.get(dataRuleDTO.getFieldName()), dataRuleDTO.getReplaceText());
+            }
         }
 
         List<Map<String, String>> fieldValueMapList = CollUtil.newArrayList();
@@ -197,10 +201,12 @@ public class EmailTemplateService {
                     Cell cell = row.getCell(columnIndex);
                     String value = ExcelUtil.getCellValue(cell);
                     String fieldRule = fieldPatternMap.get(fieldName);
+                    String replaceText = fieldReplaceMap.get(fieldName);
                     boolean isDateFormat = fieldName.equals(EmailFieldConst.PRICE_DATE) && StringUtil.isNumeric(value) && StrUtil.isNotBlank(value) &&  StringUtil.compare2NumericValue(value);
                     if (isDateFormat) {
                         value = ExcelUtil.convertExcelDateToString(value);
                     }
+                    value=replaceText(value,replaceText);
                     String cellValue = getValueByPattern(value, fieldRule);
                     BigDecimal unitConvert = fieldUnitConvertMap.get(fieldName);
                     cellValue = getValueAfterUnitConvert(cellValue, unitConvert);
@@ -257,6 +263,16 @@ public class EmailTemplateService {
         return fieldValueMapList;
     }
 
+    private String replaceText(String value, String replaceText) {
+        if(StringUtil.isEmpty(replaceText) || StringUtil.isEmpty(value)){
+            return value;
+        }
+        for(int i=0;i<replaceText.length();i++){
+            value = value.replaceAll(String.valueOf(replaceText.charAt(i)),"");
+        }
+        return value;
+    }
+
     /**
      * 封装解析的数据为净值数据
      *