Procházet zdrojové kódy

feat: 同步旧系统数据

Ritchie před 1 rokem
rodič
revize
1f296d3961

+ 5 - 0
src/main/java/com/szwl/config/MybatisPlusConfig.java

@@ -3,6 +3,7 @@ package com.szwl.config;
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.szwl.utils.InsertBatchSomeColumnSqlInjector;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -20,4 +21,8 @@ public class MybatisPlusConfig {
         return interceptor;
     }
 
+    @Bean
+    public InsertBatchSomeColumnSqlInjector insertBatchSomeColumnSqlInjector() {
+        return new InsertBatchSomeColumnSqlInjector();
+    }
 }

+ 92 - 0
src/main/java/com/szwl/controller/SyncOldCoinOrderController.java

@@ -0,0 +1,92 @@
+package com.szwl.controller;
+
+import com.szwl.feign.bean.SyncOldFeign;
+import com.szwl.mapper.TCoinOrderMapper;
+import com.szwl.model.bo.R;
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.TCoinOrder;
+import com.szwl.service.TCoinOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@Api(value = "/syncCoinOrder", tags = {"同步旧系统的coinOrder数据"})
+@RestController
+@RequestMapping("/syncCoinOrder")
+public class SyncOldCoinOrderController {
+
+    SyncOldFeign syncOldFeign;
+    @Resource
+    TCoinOrderMapper coinOrderMapper;
+
+    TCoinOrderService coinOrderService;
+
+    public SyncOldCoinOrderController(SyncOldFeign syncOldFeign, TCoinOrderService coinOrderService) {
+        this.syncOldFeign = syncOldFeign;
+        this.coinOrderService = coinOrderService;
+    }
+
+    // 真批量同步
+    @ApiOperation(value = "同步海外某客户的某一设备某一时间段内的 coinOrder 订单")
+    @PostMapping("/syncCoinOrderByCAT")
+    public ResponseModel<?> syncCoinOrderByCAT(String adminId, String clientId, String startTime, String endTime) {
+
+        if (adminId != null && StringUtils.isNotEmpty(clientId) && StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)) {
+            long l = Long.parseLong(adminId);
+
+            List<TCoinOrder> coinOrderList = R.getDataIfSuccess(syncOldFeign.getCoinOrderByACT(l, clientId, startTime, endTime));
+
+            if (coinOrderList.size() == 0) {
+                return R.fail("未查询到订单信息");
+            }
+
+            if (coinOrderList.size() > 10000) {
+                return R.fail("数据量过大,请缩短时间范围");
+            }
+
+//        coinOrderService.saveBatch(coinOrderList);
+
+            int i = coinOrderMapper.insertBatchSomeColumn(coinOrderList);
+            return R.ok("批量插入 coinOrder " + i + "条记录");
+
+        } else {
+            return R.ok("参数不能为空");
+        }
+    }
+
+    // 伪批量同步
+//    @ApiOperation(value = "同步海外某客户的某一设备某一时间段内的 coinOrder 订单")
+//    @PostMapping("/syncCoinOrderByCAT")
+//    public ResponseModel<?> syncCoinOrderByCAT(String adminId, String clientId, String startTime, String endTime) {
+//        if (StringUtils.isNotEmpty(adminId) && StringUtils.isNotEmpty(clientId) && StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)) {
+//            long l = Long.parseLong(adminId);
+//
+//            List<TCoinOrder> coinOrderList = R.getDataIfSuccess(syncOldFeign.getCoinOrderByACT(l, clientId, startTime, endTime));
+//
+//
+//            if (coinOrderList.size()>1000) {
+//                return R.fail("数据量过大,请缩短时间范围");
+//            }
+////            coinOrderService.saveBatch(coinOrderList);
+//
+//            for (TCoinOrder coinOrder : coinOrderList) {
+////                System.out.println("coinOrder》》" + coinOrder);
+//                coinOrderService.save(coinOrder);
+//            }
+//
+//            return R.ok(adminId + "同步设备" + clientId + "从" + startTime + "至" + endTime + "的 coinOrder 信息成功");
+//        } else {
+//            return R.fail("参数不能为空");
+//        }
+//    }
+
+
+}

+ 77 - 0
src/main/java/com/szwl/controller/SyncOldOrderController.java

@@ -0,0 +1,77 @@
+package com.szwl.controller;
+
+import com.szwl.feign.bean.SyncOldFeign;
+import com.szwl.mapper.TCoinOrderMapper;
+import com.szwl.mapper.TOrderMapper;
+import com.szwl.model.bo.R;
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.TCoinOrder;
+import com.szwl.model.entity.TOrder;
+import com.szwl.service.TCoinOrderService;
+import com.szwl.service.TOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@Api(value = "/syncOrder", tags = {"同步旧系统的order数据"})
+@RestController
+@RequestMapping("/syncOrder")
+public class SyncOldOrderController {
+
+
+    TOrderService orderService;
+    SyncOldFeign syncOldFeign;
+
+    @Resource
+    TOrderMapper orderMapper;
+
+    public SyncOldOrderController(TOrderService orderService, SyncOldFeign syncOldFeign) {
+        this.orderService = orderService;
+        this.syncOldFeign = syncOldFeign;
+    }
+
+    @ApiOperation(value = "同步国内某客户的某一设备某一时间段内的 order 订单")
+    @PostMapping("/syncOrderByCAT")
+    public ResponseModel<?> syncOrderByCAT(String adminId, String clientId, String startTime, String endTime) {
+        if (StringUtils.isNotEmpty(adminId) && StringUtils.isNotEmpty(clientId) && StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)) {
+            long l = Long.parseLong(adminId);
+//            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//            Date start = sdf.parse(startTime);
+//            Date end = sdf.parse(endTime);
+
+            List<TOrder> orderList = R.getDataIfSuccess(syncOldFeign.getOrderByACT(l, clientId, startTime, endTime));
+
+            if (orderList.size() == 0) {
+                return R.fail("未查询到订单信息");
+            }
+
+            if (orderList.size() > 10000) {
+                return R.fail("数据量过大,请缩短时间范围");
+            }
+
+            // 3中批量插入方式
+//            for (TOrder order : orderList) {
+////                System.out.println("order》》" + order);
+//                orderService.save(order);
+//
+//            }
+//            orderService.saveBatch(orderList);
+            orderMapper.insertBatchSomeColumn(orderList);
+
+
+            return R.ok(adminId + "同步设备" + clientId + "从" + startTime + "至" + endTime + "的 order 信息成功");
+        } else {
+            return R.fail("参数不能为空");
+        }
+    }
+
+
+}

+ 37 - 0
src/main/java/com/szwl/feign/bean/SyncOldFeign.java

@@ -0,0 +1,37 @@
+package com.szwl.feign.bean;
+
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.TCoinOrder;
+import com.szwl.model.entity.TOrder;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@FeignClient(name = "syncOld-server")
+//@FeignClient(name = "syncOld-server", url = "http://127.0.0.1:49015")
+public interface SyncOldFeign {
+    /**
+     * syncOrder 同步 order 表
+     * @param adminId
+     * @param clientId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @PostMapping("/oldOrder/getOrderByACT")
+    ResponseModel<List<TOrder>> getOrderByACT(@RequestParam Long adminId, @RequestParam String clientId, @RequestParam String startTime, @RequestParam String endTime);
+
+    /**
+     * syncOrder 同步 coinOrder 表
+     * @param adminId
+     * @param clientId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @PostMapping("/oldCoinOrder/getCoinOrderByACT")
+    ResponseModel<List<TCoinOrder>> getCoinOrderByACT(@RequestParam Long adminId, @RequestParam String clientId, @RequestParam String startTime, @RequestParam String endTime);
+
+}

+ 4 - 0
src/main/java/com/szwl/mapper/TCoinOrderMapper.java

@@ -3,6 +3,8 @@ package com.szwl.mapper;
 import com.szwl.model.entity.TCoinOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -13,4 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TCoinOrderMapper extends BaseMapper<TCoinOrder> {
 
+    int insertBatchSomeColumn(List<TCoinOrder> entityList);
+
 }

+ 4 - 0
src/main/java/com/szwl/mapper/TOrderMapper.java

@@ -3,6 +3,8 @@ package com.szwl.mapper;
 import com.szwl.model.entity.TOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -13,4 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TOrderMapper extends BaseMapper<TOrder> {
 
+    int insertBatchSomeColumn(List<TOrder> entityList);
+
 }

+ 1 - 0
src/main/java/com/szwl/service/impl/TCoinOrderServiceImpl.java

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 import java.util.Random;
 
 /**

+ 16 - 0
src/main/java/com/szwl/utils/InsertBatchSomeColumnSqlInjector.java

@@ -0,0 +1,16 @@
+package com.szwl.utils;
+
+import com.baomidou.mybatisplus.core.injector.AbstractMethod;
+import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
+import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
+
+import java.util.List;
+
+public class InsertBatchSomeColumnSqlInjector extends DefaultSqlInjector {
+    @Override
+    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
+        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
+        methodList.add(new InsertBatchSomeColumn());
+        return methodList;
+    }
+}