Commit 141d0b55 by huluobin

每10分钟同步oms、在途、采购存在sku但环球库存不存在的库存到库存表

parent d6a91742
...@@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; ...@@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
* @since 2020/8/29 3:29 下午 * @since 2020/8/29 3:29 下午
*/ */
@SpringBootApplication @SpringBootApplication
@EnableScheduling //@EnableScheduling
@ComponentScan("com.bailuntec") @ComponentScan("com.bailuntec")
@EnableFeignClients(basePackages = {"com.bailuntec.api", "com.bailuntec.*.api"}) @EnableFeignClients(basePackages = {"com.bailuntec.api", "com.bailuntec.*.api"})
public class SyncFeeApp { public class SyncFeeApp {
......
package com.bailuntec.job.service; package com.bailuntec.job.service;
import com.bailuntec.application.IDcBaseOmsSkuService;
import com.bailuntec.application.IDcBaseOmsSkuTransferService;
import com.bailuntec.common.BeanUtils;
import com.bailuntec.common.ListUtil;
import com.bailuntec.domain.DcBaseOmsSku;
import com.bailuntec.domain.DcBaseOmsSkuTransfer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
...@@ -37,4 +47,41 @@ class SyncFeeServiceTest extends AbstractTestNGSpringContextTests { ...@@ -37,4 +47,41 @@ class SyncFeeServiceTest extends AbstractTestNGSpringContextTests {
@Test @Test
void syncDailyFee() { void syncDailyFee() {
} }
@Resource
IDcBaseOmsSkuService dcBaseOmsSkuService;
@Resource
IDcBaseOmsSkuTransferService dcBaseOmsSkuTransferService;
@Test
public void testXX() {
int pageNum = 1;
int pageSize = 10000;
Integer lastId = null;
for (; ; ) {
IPage<DcBaseOmsSku> page = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<DcBaseOmsSku> wrapper = new LambdaQueryWrapper<>();
if (lastId != null) {
wrapper.gt(DcBaseOmsSku::getId, lastId);
}
dcBaseOmsSkuService.page(page);
if (ListUtil.isEmpty(page.getRecords())) {
break;
}
List<DcBaseOmsSkuTransfer> dcBaseOmsSkuTransferList = page.getRecords()
.stream()
.map(dcBaseOmsSku -> {
DcBaseOmsSkuTransfer dcBaseOmsSkuTransfer = new DcBaseOmsSkuTransfer();
BeanUtils.copyProperties(dcBaseOmsSku, dcBaseOmsSkuTransfer);
return dcBaseOmsSkuTransfer;
})
.collect(Collectors.toList());
dcBaseOmsSkuTransferService.saveBatch(dcBaseOmsSkuTransferList);
lastId = page.getRecords().get(page.getRecords().size() - 1).getId();
}
}
} }
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<version>1.0.0</version> <version>1.0.0</version>
<configuration> <configuration>
<skipDockerBuild>false</skipDockerBuild> <skipDockerBuild>false</skipDockerBuild>
<imageName>ccr.ccs.tencentyun.com/blt.data.job/base-sync-sample:${maven.build.timestamp} <imageName>ccr.ccs.tencentyun.com/blt.data.job/dc-base-sync-oms-order:${maven.build.timestamp}
</imageName> </imageName>
<dockerDirectory>src/main/docker</dockerDirectory> <dockerDirectory>src/main/docker</dockerDirectory>
<resources> <resources>
......
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD base-sync-oms-order-1.0-SNAPSHOT.jar app.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Xms2048m","-Xmx2048m","-jar","-Dspring.profiles.active=prod","/app.jar"]
EXPOSE 8080
...@@ -3,6 +3,8 @@ package com.bailuntec.job; ...@@ -3,6 +3,8 @@ package com.bailuntec.job;
import com.bailuntec.job.service.SyncOmsOrder; import com.bailuntec.job.service.SyncOmsOrder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -15,16 +17,50 @@ public class SyncOmsJob { ...@@ -15,16 +17,50 @@ public class SyncOmsJob {
@Resource @Resource
SyncOmsOrder syncOmsOrder; SyncOmsOrder syncOmsOrder;
@Scheduled(cron = "0 0/1 * * * ?") // @Async
public void baseSyncFinanceFee() { // @Scheduled(cron = "0 0/1 * * * ?")
// public void syncOmsOrder() {
// try {
// log.info("每分钟 同步oms订单 开始");
// syncOmsOrder.syncOmsOrder();
// log.info("每分钟 同步oms订单 结束");
// } catch (Exception ex) {
// log.error("每分钟 同步oms订单 异常:", ex);
// }
// }
@Scheduled(cron = "0/1 * * * * ?")
public void syncOmsSku30() {
try { try {
log.info("每分钟同步费用单 开始"); log.info("每秒 同步最近30天oms_sku 开始");
syncOmsOrder.syncOrder(); syncOmsOrder.syncOmsSku30();
log.info("每分钟同步费用单 结束"); log.info("每分 同步最近30天oms_sku 结束");
} catch (Exception ex) { } catch (Exception ex) {
log.error("每分钟同步费用单 异常:", ex); log.error("每分 同步最近30天oms_sku 异常:", ex);
} }
} }
// @Scheduled(cron = "0/1 * * * * ?")
// public void syncOmsSku302() {
// try {
// log.info("每秒 同步最近30天oms_sku 开始");
// syncOmsOrder.syncOmsSku302();
// log.info("每分 同步最近30天oms_sku 结束");
// } catch (Exception ex) {
// log.error("每分 同步最近30天oms_sku 异常:", ex);
// }
// }
// @Scheduled(cron = "0 26 18 * * ?")
// public void testXXX() {
// try {
// log.info("每秒 同步最近30天oms_sku 开始");
// syncOmsOrder.testXX();
// log.info("每分 同步最近30天oms_sku 结束");
// } catch (Exception ex) {
// log.error("每分 同步最近30天oms_sku 异常:", ex);
// }
// }
} }
package com.bailuntec.job.service; package com.bailuntec.job.service;
import com.bailuntec.api.bailuntec.oms.OmsApi; import com.bailuntec.api.bailuntec.oms.OmsApi;
import com.bailuntec.application.IDcBaseOmsSku30Service;
import com.bailuntec.application.IDcBaseOmsSkuService;
import com.bailuntec.application.IDcBaseOmsSkuTransferService;
import com.bailuntec.common.BeanUtils;
import com.bailuntec.common.ListUtil;
import com.bailuntec.domain.DcBaseOmsSku;
import com.bailuntec.domain.DcBaseOmsSku30;
import com.bailuntec.domain.DcBaseOmsSkuTransfer;
import com.bailuntec.domain.DcJobConfig; import com.bailuntec.domain.DcJobConfig;
import com.bailuntec.infrastructure.mapper.DcBaseOmsSku30Mapper;
import com.bailuntec.infrastructure.mapper.DcBaseOmsSkuMapper;
import com.bailuntec.infrastructure.mapper.DcJobConfigMapper; import com.bailuntec.infrastructure.mapper.DcJobConfigMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
...@@ -22,19 +38,132 @@ import javax.annotation.Resource; ...@@ -22,19 +38,132 @@ import javax.annotation.Resource;
public class SyncOmsOrder { public class SyncOmsOrder {
private final static String baseSyncOmsOrder = "base-sync-oms-order"; private final static String baseSyncOmsOrder = "base-sync-oms-order";
private final static String baseSyncOmsSku30 = "base-sync-oms-sku30";
private final static String baseSyncOmsSku302 = "base-sync-oms-sku302";
@Resource @Resource
DcJobConfigMapper dcJobConfigMapper; DcJobConfigMapper dcJobConfigMapper;
@Resource @Resource
OmsApi omsApi; OmsApi omsApi;
@Resource
DcBaseOmsSkuMapper dcBaseOmsSkuMapper;
@Resource
DcBaseOmsSku30Mapper dcBaseOmsSku30Mapper;
@Resource
IDcBaseOmsSku30Service dcBaseOmsSku30Service;
@Transactional @Transactional
public void syncOrder() { public void syncOmsOrder() {
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(baseSyncOmsOrder); DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(baseSyncOmsOrder);
// omsApi.getBailunOrders() // omsApi.getBailunOrders()
dcJobConfigMapper.updateById(dcJobConfig.refresh()); dcJobConfigMapper.updateById(dcJobConfig.refresh());
} }
@Resource
IDcBaseOmsSkuService dcBaseOmsSkuService;
@Resource
IDcBaseOmsSkuTransferService dcBaseOmsSkuTransferService;
public void testXX() {
int pageNum = 1;
int pageSize = 10000;
Integer lastId = null;
for (; ; ) {
IPage<DcBaseOmsSku> page = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<DcBaseOmsSku> wrapper = new LambdaQueryWrapper<>();
if (lastId != null) {
wrapper.gt(DcBaseOmsSku::getId, lastId);
}
dcBaseOmsSkuService.page(page);
if (ListUtil.isEmpty(page.getRecords())) {
break;
}
List<DcBaseOmsSkuTransfer> dcBaseOmsSkuTransferList = page.getRecords()
.stream()
.map(dcBaseOmsSku -> {
DcBaseOmsSkuTransfer dcBaseOmsSkuTransfer = new DcBaseOmsSkuTransfer();
BeanUtils.copyProperties(dcBaseOmsSku, dcBaseOmsSkuTransfer);
return dcBaseOmsSkuTransfer;
})
.collect(Collectors.toList());
dcBaseOmsSkuTransferService.saveBatch(dcBaseOmsSkuTransferList);
lastId = page.getRecords().get(page.getRecords().size() - 1).getId();
}
}
// @Transactional
public void syncOmsSku30() {
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(baseSyncOmsSku30);
int pageNum = dcJobConfig.getPageNum();
int pageSize = dcJobConfig.getPageSize();
for (; ; ) {
IPage<DcBaseOmsSku> pageParam = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<DcBaseOmsSku> wrapper = new LambdaQueryWrapper<DcBaseOmsSku>()
.between(DcBaseOmsSku::getGmtModified, dcJobConfig.getStartTime().minusMinutes(3), dcJobConfig.getEndTime());
IPage<DcBaseOmsSku> page = dcBaseOmsSkuMapper.selectPage(pageParam, wrapper);
if (ListUtil.isEmpty(page.getRecords())) {
break;
}
page.getRecords().parallelStream().forEach(dcBaseOmsSku -> {
DcBaseOmsSku30 dcBaseOmsSku30 = new DcBaseOmsSku30();
BeanUtils.copyProperties(dcBaseOmsSku, dcBaseOmsSku30, "id");
dcBaseOmsSku30.setSku30Modify(LocalDateTime.now());
LambdaQueryWrapper<DcBaseOmsSku30> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(DcBaseOmsSku30::getBailunSku, dcBaseOmsSku30.getBailunSku())
.eq(DcBaseOmsSku30::getOriginOrderId, dcBaseOmsSku30.getOriginOrderId())
.eq(DcBaseOmsSku30::getBailunAccountId, dcBaseOmsSku30.getBailunAccountId());
dcBaseOmsSku30Service.saveOrUpdate(dcBaseOmsSku30, wrapper1);
log.info("同步一条oms-sku-30 {}", dcBaseOmsSku30.getBailunSku());
});
pageNum++;
dcJobConfig.setPageNum(pageNum);
dcJobConfigMapper.updateById(dcJobConfig);
}
dcJobConfigMapper.updateById(dcJobConfig.refresh());
}
@Transactional
public void syncOmsSku302() {
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(baseSyncOmsSku302);
int pageNum = 1;
int pageSize = 1000;
for (; ; ) {
IPage<DcBaseOmsSku> pageParam = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<DcBaseOmsSku> wrapper = new LambdaQueryWrapper<DcBaseOmsSku>()
.between(DcBaseOmsSku::getOrderUpdateTime, dcJobConfig.getStartTime(), dcJobConfig.getEndTime());
IPage<DcBaseOmsSku> page = dcBaseOmsSkuMapper.selectPage(pageParam, wrapper);
if (ListUtil.isEmpty(page.getRecords())) {
break;
}
page.getRecords().parallelStream().forEach(dcBaseOmsSku -> {
DcBaseOmsSku30 dcBaseOmsSku30 = new DcBaseOmsSku30();
BeanUtils.copyProperties(dcBaseOmsSku, dcBaseOmsSku30, "id");
dcBaseOmsSku30.setSku30Modify(LocalDateTime.now());
LambdaQueryWrapper<DcBaseOmsSku30> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(DcBaseOmsSku30::getBailunSku, dcBaseOmsSku30.getBailunSku())
.eq(DcBaseOmsSku30::getOriginOrderId, dcBaseOmsSku30.getOriginOrderId())
.eq(DcBaseOmsSku30::getBailunAccountId, dcBaseOmsSku30.getBailunAccountId());
dcBaseOmsSku30Service.saveOrUpdate(dcBaseOmsSku30, wrapper1);
log.info("同步一条oms-sku-30 {}", dcBaseOmsSku30.getBailunSku());
});
pageNum++;
}
dcJobConfigMapper.updateById(dcJobConfig.refresh());
}
} }
spring: spring:
# 服务名称 # 服务名称
application: application:
name: base-sync-sample name: base-sync-oms-order
# 数据配置 # 数据配置
datasource: datasource:
url: jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8 url: jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
......
spring: spring:
# 服务名称 # 服务名称
application: application:
name: base-sync-sample name: base-sync-oms-order
# 数据配置 # 数据配置
datasource: datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8 url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
......
package com.bailuntec;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootVersion;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.core.SpringVersion;
import org.springframework.test.context.ActiveProfiles;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/12/1 3:28 下午
*/
@EnableFeignClients(basePackages = {"com.bailuntec.api", "com.bailuntec.*.api"})
@Slf4j
@SpringBootApplication(scanBasePackages = "com.bailuntec")
@ActiveProfiles("test")
public class TestApp {
public static void main(String[] args) {
String version = SpringVersion.getVersion();
String version1 = SpringBootVersion.getVersion();
log.info("SpringVersion {}", version);
log.info("SpringBootVersion {}", version1);
SpringApplication.run(TestApp.class, args);
}
}
package com.bailuntec.job.service;
import com.bailuntec.TestApp;
import com.bailuntec.domain.DcBaseOmsSku;
import com.bailuntec.infrastructure.mapper.DcBaseOmsSkuMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/12/7 7:05 下午
*/
@SpringBootTest(classes = TestApp.class)
class SyncOmsOrderTest extends AbstractTestNGSpringContextTests {
@Resource
SyncOmsOrder syncOmsOrder;
@Test
void testXX() {
syncOmsOrder.syncOmsSku30();
}
}
spring:
# 服务名称
application:
name: base-sync-fee
# 数据配置
datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
profiles:
active: test
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD base-sync-oms-order-1.0-SNAPSHOT.jar base-sync-oms-order-1.0-SNAPSHOT.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Xms2048m","-Xmx2048m","-jar","-Dspring.profiles.active=prod","/base-sync-oms-order-1.0-SNAPSHOT.jar"]
EXPOSE 8080
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>datacenter-base</artifactId>
<groupId>com.bailuntec</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mid-calculate-transit</artifactId>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version>
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.3.RELEASE</version>
<configuration>
<mainClass>com.bailuntec.job.SampleApp</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<skipDockerBuild>false</skipDockerBuild>
<imageName>ccr.ccs.tencentyun.com/blt.data.job/mid-calculate-transit:${maven.build.timestamp}
</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>bailuntec-docker</serverId>
</configuration>
</plugin>
</plugins>
</build>
</project>
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD mid-calculate-transit-1.0-SNAPSHOT.jar mid-calculate-transit-1.0-SNAPSHOT.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Xms2048m","-Xmx2048m","-jar","-Dspring.profiles.active=prod","/mid-calculate-transit-1.0-SNAPSHOT.jar"]
EXPOSE 8080
package com.bailuntec.job;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/28 3:16 下午
*/
@SpringBootApplication
@EnableScheduling
@ComponentScan("com.bailuntec")
@EnableFeignClients(basePackages = {"com.bailuntec.api", "com.bailuntec.*.api"})
public class SampleApp {
public static void main(String[] args) {
SpringApplication.run(SampleApp.class, args);
}
}
package com.bailuntec.job;
import com.bailuntec.job.service.SampleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Slf4j
@Component
public class SampleJob {
@Resource
SampleService sampleService;
@Scheduled(cron = "0 0/1 * * * ?")
public void baseSyncFinanceFee() {
try {
log.info("每分钟同步费用单 开始");
sampleService.sync();
log.info("每分钟同步费用单 结束");
} catch (Exception ex) {
log.error("每分钟同步费用单 异常:", ex);
}
}
}
package com.bailuntec.job.service;
import com.bailuntec.common.BeanUtils;
import com.bailuntec.common.ListUtil;
import com.bailuntec.cost.api.CostApi;
import com.bailuntec.cost.api.dto.CostDto;
import com.bailuntec.cost.api.dto.ManageCostDto;
import com.bailuntec.cost.api.response.CostResult;
import com.bailuntec.domain.DcBaseFinanceFee;
import com.bailuntec.domain.DcBaseFinanceLogistics;
import com.bailuntec.domain.DcBaseFinanceManagecost;
import com.bailuntec.domain.DcJobConfig;
import com.bailuntec.infrastructure.mapper.DcBaseFinanceFeeMapper;
import com.bailuntec.infrastructure.mapper.DcBaseFinanceLogisticsMapper;
import com.bailuntec.infrastructure.mapper.DcBaseFinanceManagecostMapper;
import com.bailuntec.infrastructure.mapper.DcJobConfigMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/7 11:38 上午
*/
@Slf4j
@Service
public class SampleService {
public void sync() {
}
}
spring:
# 服务名称
application:
name: base-sync-sample
# 数据配置
datasource:
url: jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 8080
spring:
# 服务名称
application:
name: base-sync-sample
# 数据配置
datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 1224
...@@ -19,21 +19,57 @@ public class TurnoverPrepareJob { ...@@ -19,21 +19,57 @@ public class TurnoverPrepareJob {
* <p> * <p>
* 每10分钟同步 * 每10分钟同步
* <li>oms</li> * <li>oms</li>
* <li>在途</li>
* <li>采购</li>存在sku
* 但环球库存不存在的库存 * 但环球库存不存在的库存
* 到库存表 * 到库存表
* </p> * </p>
*/ */
@Scheduled(cron = "0 0/1 * * * ? ") @Scheduled(cron = "0 0/10 * * * ? ")
public void syncBaseStock() { public void syncBaseStock() {
try { try {
log.info("每10分钟同步oms、在途、采购存在sku但环球库存不存在的库存到库存表 开始"); log.info("每10分钟同步oms存在sku但环球库存不存在的库存到库存表 开始");
turnoverPrepareService.syncBaseStock(); turnoverPrepareService.supplyOrderSku();
log.info("每10分钟同步oms、在途、采购存在sku但环球库存不存在的库存到库存表 结束"); log.info("每10分钟同步oms存在sku但环球库存不存在的库存到库存表 结束");
} catch (Exception e) { } catch (Exception e) {
log.error("每10分钟同步oms、在途、采购存在sku但环球库存不存在的库存到库存表 失败", e); log.error("每10分钟同步oms、在途、采购存在sku但环球库存不存在的库存到库存表 失败", e);
} }
} }
/**
* <p>
* 每10分钟同步
* <li>采购</li>存在sku
* 但环球库存不存在的库存
* 到库存表
* </p>
*/
@Scheduled(cron = "0 0/10 * * * ? ")
public void supplyPurchaseSku() {
try {
log.info("每10分钟同步采购存在sku但环球库存不存在的库存到库存表 开始");
turnoverPrepareService.supplyPurchaseSku();
log.info("每10分钟同步采购存在sku但环球库存不存在的库存到库存表 结束");
} catch (Exception e) {
log.error("每10分钟同步采购存在sku但环球库存不存在的库存到库存表 失败", e);
}
}
/**
* <p>
* 每10分钟同步
* <li>在途</li>
* 但环球库存不存在的库存
* 到库存表
* </p>
*/
@Scheduled(cron = "0 0/10 * * * ? ")
public void supplyTransitSku() {
try {
log.info("每10分钟同步在途存在sku但环球库存不存在的库存到库存表 开始");
turnoverPrepareService.supplyTransitSku();
log.info("每10分钟同步在途存在sku但环球库存不存在的库存到库存表 结束");
} catch (Exception e) {
log.error("每10分钟同步在途存在sku但环球库存不存在的库存到库存表 失败", e);
}
}
} }
package com.bailuntec.job.service; package com.bailuntec.job.service;
import com.bailuntec.application.IDcBaseStockService;
import com.bailuntec.common.ListUtil;
import com.bailuntec.domain.DcBaseStock;
import com.bailuntec.domain.DcJobConfig; import com.bailuntec.domain.DcJobConfig;
import com.bailuntec.infrastructure.mapper.DcBaseStockMapper; import com.bailuntec.infrastructure.mapper.DcBaseStockMapper;
import com.bailuntec.infrastructure.mapper.DcJobConfigMapper; import com.bailuntec.infrastructure.mapper.DcJobConfigMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* <p> * <p>
...@@ -22,19 +25,62 @@ public class TurnoverPrepareService { ...@@ -22,19 +25,62 @@ public class TurnoverPrepareService {
@Resource @Resource
DcJobConfigMapper dcJobConfigMapper; DcJobConfigMapper dcJobConfigMapper;
private static final String midAutoTurnoverPrepare = "mid-auto-turnover-prepare"; private static final String midSupplyOrderSku = "mid-supply-order-sku";
private static final String midSupplyPurchaseSku = "mid-supply-purchase-sku";
private static final String midSupplyTransitSku = "mid-supply-transit-sku";
@Resource @Resource
private DcBaseStockMapper dcBaseStockMapper; private DcBaseStockMapper dcBaseStockMapper;
@Resource
private IDcBaseStockService dcBaseStockService;
public void supplyOrderSku() {
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(midSupplyOrderSku);
int pageNum = dcJobConfig.getPageNum();
int pageSize = dcJobConfig.getPageSize();
for (; ; ) {
List<DcBaseStock> dcBaseStockList = dcBaseStockMapper.selectSupplyOrderSku((pageNum - 1) * pageSize, pageSize);
if (ListUtil.isEmpty(dcBaseStockList)) {
break;
}
dcBaseStockService.saveBatch(dcBaseStockList);
pageNum++;
}
dcJobConfigMapper.updateById(dcJobConfig.refresh());
}
public void supplyPurchaseSku() {
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(midSupplyPurchaseSku);
int pageNum = dcJobConfig.getPageNum();
int pageSize = dcJobConfig.getPageSize();
for (; ; ) {
List<DcBaseStock> dcBaseStockList = dcBaseStockMapper.selectSupplyPurchaseSku((pageNum - 1) * pageSize, pageSize);
if (ListUtil.isEmpty(dcBaseStockList)) {
break;
}
dcBaseStockService.saveBatch(dcBaseStockList);
pageNum++;
}
dcJobConfigMapper.updateById(dcJobConfig.refresh());
}
@Transactional
public void syncBaseStock() {
DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(midAutoTurnoverPrepare);
dcBaseStockMapper.supplementOrderSku(); public void supplyTransitSku() {
dcBaseStockMapper.supplementPurchaseSku(); DcJobConfig dcJobConfig = dcJobConfigMapper.selectByName(midSupplyTransitSku);
dcBaseStockMapper.supplementTransitSku(); int pageNum = dcJobConfig.getPageNum();
int pageSize = dcJobConfig.getPageSize();
for (; ; ) {
List<DcBaseStock> dcBaseStockList = dcBaseStockMapper.selectSupplyTransitSku((pageNum - 1) * pageSize, pageSize);
if (ListUtil.isEmpty(dcBaseStockList)) {
break;
}
dcBaseStockService.saveBatch(dcBaseStockList);
pageNum++;
}
dcJobConfigMapper.updateById(dcJobConfig.refresh()); dcJobConfigMapper.updateById(dcJobConfig.refresh());
} }
} }
...@@ -27,6 +27,6 @@ public class TurnoverPrepareServiceTest { ...@@ -27,6 +27,6 @@ public class TurnoverPrepareServiceTest {
@Test @Test
void syncBaseStock() { void syncBaseStock() {
turnoverPrepareService.syncBaseStock(); // turnoverPrepareService.syncBaseStock();
} }
} }
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>datacenter-base</artifactId>
<groupId>com.bailuntec</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mid-daily-snapshot</artifactId>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version>
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.3.RELEASE</version>
<configuration>
<mainClass>com.bailuntec.job.DailySnapshotApp</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<skipDockerBuild>false</skipDockerBuild>
<imageName>ccr.ccs.tencentyun.com/blt.data.job/mid-daily-snapshot:${maven.build.timestamp}
</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>bailuntec-docker</serverId>
</configuration>
</plugin>
</plugins>
</build>
</project>
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD mid-daily-snapshot-1.0-SNAPSHOT.jar mid-daily-snapshot-1.0-SNAPSHOT.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Xms2G","-Xmx2G","-jar","-Dspring.profiles.active=prod","/mid-daily-snapshot-1.0-SNAPSHOT.jar"]
EXPOSE 8080
package com.bailuntec.job;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/28 3:16 下午
*/
@SpringBootApplication
@EnableScheduling
@ComponentScan("com.bailuntec")
@EnableFeignClients(basePackages = {"com.bailuntec.api", "com.bailuntec.*.api"})
public class DailySnapshotApp {
public static void main(String[] args) {
SpringApplication.run(DailySnapshotApp.class, args);
}
}
package com.bailuntec.job;
import com.bailuntec.job.service.DailySnapshotService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Slf4j
@Component
public class DailySnapshotJob {
@Resource
DailySnapshotService dailySnapshotService;
@Scheduled(cron = "0 0/1 * * * ?")
public void baseSyncFinanceFee() {
try {
log.info("每分钟同步费用单 开始");
dailySnapshotService.saveDcBastStockDailySnapshot();
log.info("每分钟同步费用单 结束");
} catch (Exception ex) {
log.error("每分钟同步费用单 异常:", ex);
}
}
}
package com.bailuntec.job.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/7 11:38 上午
*/
@Slf4j
@Service
public class DailySnapshotService {
/**
* 每天0点10分
* 保存库存每日快照
*/
@Scheduled(cron = "0 10 0 * * ? * ")
public void saveDcBastStockDailySnapshot() {
}
}
spring:
# 服务名称
application:
name: base-sync-sample
# 数据配置
datasource:
url: jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 8080
spring:
# 服务名称
application:
name: base-sync-sample
# 数据配置
datasource:
url: jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: root
password: '#7kfnymAM$Y9-Ntf'
driver-class-name: com.mysql.jdbc.Driver
main:
allow-bean-definition-overriding: true
#mybatis plus 配置
mybatis-plus:
mapper-locations:
- classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
server:
port: 1224
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
<modules> <modules>
<module>mid-calculate-turnover-prepare</module> <module>mid-calculate-turnover-prepare</module>
<module>mid-calculate-transit</module>
<module>mid-daily-snapshot</module>
</modules> </modules>
</project> </project>
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment