wangzeyu@tom.com пре 2 година
родитељ
комит
72d82455f5

+ 11 - 0
src/main/java/com/szwl/common/myAnnotation/CamelCaseToUnderscore.java

@@ -0,0 +1,11 @@
+package com.szwl.common.myAnnotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CamelCaseToUnderscore {
+
+}

+ 38 - 0
src/main/java/com/szwl/common/myAnnotation/CamelCaseToUnderscoreFormatAnnotationFormatterFactory.java

@@ -0,0 +1,38 @@
+package com.szwl.common.myAnnotation;
+
+import org.springframework.format.AnnotationFormatterFactory;
+import org.springframework.format.Parser;
+import org.springframework.format.Printer;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class CamelCaseToUnderscoreFormatAnnotationFormatterFactory 
+implements AnnotationFormatterFactory<CamelCaseToUnderscore> {//①指定可以解析/格式化的字段注解类型
+	private final Set<Class<?>> fieldTypes;  
+    private final CamelCaseToUnderscoreFormatter formatter;  
+    public CamelCaseToUnderscoreFormatAnnotationFormatterFactory() {  
+        Set<Class<?>> set = new HashSet<Class<?>>();  
+        set.add(String.class);  
+        this.fieldTypes = set;  
+        this.formatter = new CamelCaseToUnderscoreFormatter();//此处使用之前定义的Formatter实现  
+    }  
+    
+    //②指定可以被解析/格式化的字段类型集合  
+    @Override  
+    public Set<Class<?>> getFieldTypes() {  
+        return fieldTypes;  
+    }  
+    //③根据注解信息和字段类型获取解析器  
+    @Override  
+    public Parser<?> getParser(CamelCaseToUnderscore annotation, Class<?> fieldType) {
+        return formatter;  
+    }  
+    //④根据注解信息和字段类型获取格式化器  
+    @Override     
+    public Printer<?> getPrinter(CamelCaseToUnderscore annotation, Class<?> fieldType) {
+        return formatter;  
+    }  
+
+
+}

+ 50 - 0
src/main/java/com/szwl/common/myAnnotation/CamelCaseToUnderscoreFormatter.java

@@ -0,0 +1,50 @@
+package com.szwl.common.myAnnotation;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.format.Formatter;
+
+import java.text.ParseException;
+import java.util.Locale;
+
+public class CamelCaseToUnderscoreFormatter implements Formatter<String> {
+
+	@Override
+	public String print(String paramT, Locale paramLocale) {
+		return convertCamelCaseToUnderscore(paramT);
+	}
+
+	@Override
+	public String parse(String paramString, Locale paramLocale) throws ParseException {
+		// TODO Auto-generated method stub
+		return convertCamelCaseToUnderscore(paramString);
+	}
+
+	public static String convertCamelCaseToUnderscore(String str) {
+		String result = "";
+		String[] parts = str.split(",");
+		for (int i = 0; i < parts.length; i++) {
+			String part = parts[i];
+			String[] fields = part.split(" ");
+			for (String field : fields) {
+				field = field.trim();
+				String _str = StringUtils.upperCase(field);
+				if(!"ASC".equals(StringUtils.upperCase(field))&&!"DESC".equals(StringUtils.upperCase(field))) {
+					String[] strings = StringUtils.splitByCharacterTypeCamelCase(field);
+					_str = StringUtils.join(strings, "_");
+					_str = StringUtils.upperCase(_str);
+				}
+				System.out.println(_str);
+				result = result + " " + _str;
+			}
+			if(i+1!= parts.length) {
+				result = result + ",";
+			}
+		}
+		return result;
+	}
+	
+//	public static void main(String[] args) {
+//		String result = convertCamelCaseToUnderscore("myFi desc,myEntity asc");
+//		System.out.println(result);
+//	}
+}

+ 0 - 18
src/main/java/com/szwl/model/dto/TOrderAbroadParam.java

@@ -1,18 +0,0 @@
-package com.szwl.model.dto;
-
-import com.szwl.model.entity.TOrderAbroad;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
-import lombok.experimental.Accessors;
-
-@SuppressWarnings("serial")
-@Accessors(chain = true)
-@NoArgsConstructor
-@Getter
-@Setter
-@ToString
-public class TOrderAbroadParam extends TOrderAbroad {
-
-}

+ 55 - 0
src/main/java/com/szwl/model/query/TOrderAbroadParam.java

@@ -0,0 +1,55 @@
+package com.szwl.model.query;
+
+import com.szwl.common.myAnnotation.CamelCaseToUnderscore;
+import com.szwl.model.entity.TOrderAbroad;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@SuppressWarnings("serial")
+@Accessors(chain = true)
+@NoArgsConstructor
+@Getter
+@Setter
+@ToString
+public class TOrderAbroadParam extends TOrderAbroad {
+    @CamelCaseToUnderscore
+    @ApiModelProperty(value = "排序,如:id desc")
+    private String orderByClause;
+    @ApiModelProperty(value = "是否distinct")
+    private boolean distinct;
+    @ApiModelProperty(value = "分页,展示多少条记录")
+    private Integer limit;
+    @ApiModelProperty(value = "分页,从第几条开始,默认从0开始")
+    private Integer offset;
+    @ApiModelProperty(value = "主键id 集合,用于批量删除和批量修改")
+    private List primaryKeyList;
+    private List<TOrderAbroad> entityList;//实体集合,用于批量新增
+
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createDate_start;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createDate_end;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date modifyDate_start;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date modifyDate_end;
+    private String clientId_like;
+    private List clientId_inList;
+    private String sn_like;
+    private String createDate_like;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date payDate_start;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date payDate_end;
+
+    private List adminId_inList;
+    private List productName_notInList;
+}

+ 0 - 34
src/main/java/com/szwl/service/IEsService.java

@@ -1,34 +0,0 @@
-package com.szwl.service;
-
-import cn.com.crbank.ommo.esclient.EsBaseService;
-import com.szwl.model.bean.ChartColumn;
-import com.szwl.model.dto.TOrderAbroadParam;
-import com.szwl.model.entity.TOrderAbroad;
-import com.szwl.model.query.StatisticsParam;
-import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.text.ParseException;
-
-@Service
-public interface IEsService {
-
-    void updateEsByDate(String startTime, String endTime);
-
-    BoolQueryBuilder getStatisticsParam2QueryBuilder(StatisticsParam param);
-
-    ChartColumn getStatistics(StatisticsParam param);
-
-    ChartColumn getStatistics(StatisticsParam param, String format, DateHistogramInterval interval);
-
-    static String format1(Float value) {
-        BigDecimal bd = new BigDecimal(value);//创建一个bd对象,将要转换的值value传入构造函数
-        bd = bd.setScale(2, RoundingMode.HALF_UP);//调用setScale方法进行数据格式化,保留两位小数,采用四舍五入规则
-        return bd.toString(); //返回bd对象的值(转化为string形式)
-    }
-
-    void tongbuByHour() throws ParseException;
-}

+ 9 - 0
src/main/java/com/szwl/service/IEsTOrderAbroadService.java

@@ -0,0 +1,9 @@
+package com.szwl.service;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public interface IEsTOrderAbroadService {
+
+    void initTableFun();
+}

+ 1 - 1
src/main/java/com/szwl/service/TOrderAbroadService.java

@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @author Author
  * @since 2023-07-28
  */
-public interface TOrderAbroadService extends IService<TOrderAbroad> {
+public interface ITOrderAbroadService extends IService<TOrderAbroad> {
 
 }

+ 58 - 46
src/main/java/com/szwl/service/impl/EsTOrderAbroadServiceImpl.java

@@ -1,60 +1,101 @@
 package com.szwl.service.impl;
 
 import cn.com.crbank.ommo.esclient.EsBaseService;
-import com.szwl.model.bean.ChartColumn;
-import com.szwl.model.dto.TOrderAbroadParam;
+import cn.com.crbank.ommo.exception.MyException;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.szwl.model.query.TOrderAbroadParam;
 import com.szwl.model.entity.TOrderAbroad;
-import com.szwl.model.query.StatisticsParam;
-import com.szwl.service.IEsService;
-import com.szwl.service.TOrderAbroadService;
+import com.szwl.service.IEsTOrderAbroadService;
+import com.szwl.service.ITOrderAbroadService;
 import lombok.extern.slf4j.Slf4j;
-import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.indices.GetIndexRequest;
 import org.springframework.stereotype.Service;
 
-import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
 
 @Slf4j
 @Service
-public class EsTOrderAbroadServiceImpl extends EsBaseService<TOrderAbroad, TOrderAbroadParam> implements IEsService {
+public class EsTOrderAbroadServiceImpl extends EsBaseService<TOrderAbroad, TOrderAbroadParam> implements IEsTOrderAbroadService {
 
     private static boolean InitEsTableStatus = false; // 是否正常完成 es 初始化
     public static final int MAX_ROW = 1000;
 
-    TOrderAbroadService tOrderAbroadService;
+    ITOrderAbroadService tOrderAbroadService;
 
-    public EsTOrderAbroadServiceImpl(TOrderAbroadService tOrderAbroadService) {
+    public EsTOrderAbroadServiceImpl(ITOrderAbroadService tOrderAbroadService) {
         this.tOrderAbroadService = tOrderAbroadService;
     }
 
     @Override
     public String getTableName() {
-        return null;
+        return "es_t_order_abroad";
     }
 
     @Override
     public TOrderAbroad getInstanceOfEntity() {
-        return null;
+        return new TOrderAbroad();
     }
 
     @Override
     public void setInitTableStatus(boolean flag) {
-
+        InitEsTableStatus = flag;
     }
 
     @Override
     public boolean getInitTableStatus() {
-        return false;
+        return InitEsTableStatus;
     }
 
     @Override
     public void initTableFun() {
-
+        try {
+            String tableName = getTableName();
+            GetIndexRequest request = new GetIndexRequest(tableName);
+//            DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(this.getTableName());
+//            restHighLevelClient.indices().delete(deleteIndexRequest,RequestOptions.DEFAULT);
+            boolean isExists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
+            if (!isExists) {
+                log.info("es 索引 开始创建" + tableName);
+                createTable();
+                // 初始化旧流水
+                int num = 0;
+                while (true) {
+                    int limit = MAX_ROW;
+                    int offset = num;
+                    LambdaQueryWrapper<TOrderAbroad> query = Wrappers.lambdaQuery();
+                    SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String time = "2023-04-01 00:00:00";
+                    Date date = ft.parse(time);
+                    query.gt(TOrderAbroad::getCreateDate, date);
+//                    query.eq(TOrder::getStatus,"1");
+                    Page<TOrderAbroad> page = new Page<>(offset, limit, true);
+                    IPage<TOrderAbroad> iPage = tOrderAbroadService.page(page, query);
+                    List<TOrderAbroad> list = iPage.getRecords();
+                    insertBatch(list);
+                    num++;
+                    if (list.size() < MAX_ROW) { // 数据小于 最大值 ,证明后面已无数据,则跳出
+                        break;
+                    }
+                }
+            } else {
+                log.info("es 索引 " + tableName + " 已存在不再创建");
+            }
+            InitEsTableStatus = true;
+        } catch (Exception e) {
+            log.error("ElasticsearchRunner InitEsTOrderAbroadThread 发生错误:{}", e);
+            throw new MyException("ElasticsearchRunner InitEsTOrderAbroadThread 发生错误:" + e.getMessage());
+        }
     }
 
     @Override
     public String getEntityPrimaryKey(TOrderAbroad tOrderAbroad) {
-        return null;
+        return String.valueOf(tOrderAbroad.getId());
     }
 
     @Override
@@ -63,33 +104,4 @@ public class EsTOrderAbroadServiceImpl extends EsBaseService<TOrderAbroad, TOrde
     }
 
 
-    /**
-     * 根据时间 重新同步es
-     * @param
-     * @return
-     */
-    @Override
-    public void updateEsByDate(String startTime, String endTime) {
-
-    }
-
-    @Override
-    public BoolQueryBuilder getStatisticsParam2QueryBuilder(StatisticsParam param) {
-        return null;
-    }
-
-    @Override
-    public ChartColumn getStatistics(StatisticsParam param) {
-        return null;
-    }
-
-    @Override
-    public ChartColumn getStatistics(StatisticsParam param, String format, DateHistogramInterval interval) {
-        return null;
-    }
-
-    @Override
-    public void tongbuByHour() throws ParseException {
-
-    }
 }

+ 2 - 2
src/main/java/com/szwl/service/impl/TOrderAbroadServiceImpl.java

@@ -2,7 +2,7 @@ package com.szwl.service.impl;
 
 import com.szwl.model.entity.TOrderAbroad;
 import com.szwl.mapper.TOrderAbroadMapper;
-import com.szwl.service.TOrderAbroadService;
+import com.szwl.service.ITOrderAbroadService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
@@ -15,6 +15,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-07-28
  */
 @Service
-public class TOrderAbroadServiceImpl extends ServiceImpl<TOrderAbroadMapper, TOrderAbroad> implements TOrderAbroadService {
+public class TOrderAbroadServiceImpl extends ServiceImpl<TOrderAbroadMapper, TOrderAbroad> implements ITOrderAbroadService {
 
 }

+ 2 - 2
src/main/resources/bootstrap.yml

@@ -62,7 +62,7 @@ spring:
   profiles: sit
   #数据库配置
   datasource:
-    url: jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/szwl-test
+    url: jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/orderdb-test
     username: root
     password: sunzee@020
     driver-class-name: com.mysql.jdbc.Driver
@@ -85,7 +85,7 @@ spring:
   profiles: prod
   #数据库配置
   datasource:
-    url: jdbc:mysql://rm-wz995mu26a1479kz0.mysql.rds.aliyuncs.com:3306/szwl
+    url: jdbc:mysql://rm-wz995mu26a1479kz0.mysql.rds.aliyuncs.com:3306/orderdb
     username: root
     password: sunzee@020
     driver-class-name: com.mysql.jdbc.Driver