Commit dd99f46f by huluobin

update

parent 8f72b738
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version> <maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version>
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format> <maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
<skipTests>true</skipTests>
</properties> </properties>
<artifactId>base-sync-amazon-ad</artifactId> <artifactId>base-sync-amazon-ad</artifactId>
......
...@@ -2,13 +2,12 @@ package com.bailuntec.job; ...@@ -2,13 +2,12 @@ package com.bailuntec.job;
import com.bailuntec.application.IDcBaseFinanceAmazonAdProductService; import com.bailuntec.application.IDcBaseFinanceAmazonAdProductService;
import com.bailuntec.application.IJobAmazonAdLogService; import com.bailuntec.application.IJobAmazonAdLogService;
import com.bailuntec.job.service.AmazonJobService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
...@@ -27,15 +26,19 @@ public class AmazonAdJob { ...@@ -27,15 +26,19 @@ public class AmazonAdJob {
@Resource @Resource
private IDcBaseFinanceAmazonAdProductService dcBaseFinanceAmazonAdProductService; private IDcBaseFinanceAmazonAdProductService dcBaseFinanceAmazonAdProductService;
@Resource
AmazonJobService amazonJobService;
/** /**
* <p> * <p>
* 每天下午1点生成昨天的亚马逊广告报告 * 每天下午1点生成昨天的亚马逊广告报告
* </p> * </p>
*/ */
@Scheduled(cron = "0 0 13 * * ?") // @Scheduled(cron = "0 0 13 * * ?")
@Scheduled(cron = "0/1 * * * * ?")
public void generateAmazonAdReport() { public void generateAmazonAdReport() {
log.info("每天下午1点生成昨天的亚马逊广告报告 任务开始"); log.info("每天下午1点生成昨天的亚马逊广告报告 任务开始");
jobAmazonAdLogService.generateAmazonAdReport(); amazonJobService.generateAmazonAdReport();
log.info("每天下午1点生成昨天的亚马逊广告报告 任务结束"); log.info("每天下午1点生成昨天的亚马逊广告报告 任务结束");
} }
...@@ -44,10 +47,11 @@ public class AmazonAdJob { ...@@ -44,10 +47,11 @@ public class AmazonAdJob {
* 每小时下载未下载的报告 * 每小时下载未下载的报告
* </p> * </p>
*/ */
@Scheduled(cron = "0 1 0/1 * * ?") @Scheduled(cron = "0/1 * * * * ?")
// @Scheduled(cron = "0 1 0/1 * * ?")
public void downloadAmazonAdReport() { public void downloadAmazonAdReport() {
log.info("每小时下载未下载的报告 任务开始"); log.info("每小时下载未下载的报告 任务开始");
dcBaseFinanceAmazonAdProductService.downloadAmazonAdReport(); amazonJobService.downloadAmazonAdReport();
log.info("每小时下载未下载的报告 任务结束"); log.info("每小时下载未下载的报告 任务结束");
} }
......
package com.bailuntec.job;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AmazonAdProduct {
@JSONField(name = "campaignName")
private String campaignName;
@JSONField(name = "campaignId")
private String campaignId;
@JSONField(name = "adGroupName")
private String adGroupName;
@JSONField(name = "adGroupId")
private String adGroupId;
@JSONField(name = "impressions")
private Integer impressions;
@JSONField(name = "clicks")
private Integer clicks;
@JSONField(name = "cost")
private BigDecimal cost;
@JSONField(name = "currency")
private String currency;
@JSONField(name = "asin")
private String asin;
@JSONField(name = "sku")
private String sku;
@JSONField(name = "attributedConversions1d")
private Integer attributedConversionsOneday;
@JSONField(name = "attributedConversions7d")
private Integer attributedConversionsSevenday;
@JSONField(name = "attributedConversions14d")
private Integer attributedConversionsFourteenday;
@JSONField(name = "attributedConversions30d")
private Integer attributedConversionsThirtyday;
@JSONField(name = "attributedConversions1dSameSKU")
private String attributedConversionsOnedaySameSku;
@JSONField(name = "attributedConversions7dSameSKU")
private String attributedConversionsSevendaySameSku;
@JSONField(name = "attributedConversions14dSameSKU")
private String attributedConversionsFourteendaySameSku;
@JSONField(name = "attributedConversions30dSameSKU")
private String attributedConversionsThirtydaySameSku;
@JSONField(name = "attributedUnitsOrdered1d")
private Integer attributedUnitsOrderedOneday;
@JSONField(name = "attributedUnitsOrdered7d")
private Integer attributedUnitsOrderedSevenday;
@JSONField(name = "attributedUnitsOrdered14d")
private String attributedUnitsOrderedFourteenday;
@JSONField(name = "attributedUnitsOrdered30d")
private String attributedUnitsOrderedThirtyday;
@JSONField(name = "attributedSales1d")
private Integer attributedSalesOneday;
@JSONField(name = "attributedSales7d")
private Integer attributedSalesSevenday;
@JSONField(name = "attributedSales14d")
private Integer attributedSalesFourteenday;
@JSONField(name = "attributedSales30d")
private Integer attributedSalesThirtyday;
@JSONField(name = "attributedSales1dSameSKU")
private String attributedSalesOnedaySameSku;
@JSONField(name = "attributedSales7dSameSKU")
private String attributedSalesSevendaySameSku;
@JSONField(name = "attributedSales14dSameSKU")
private String attributedSalesFourteendaySameSku;
@JSONField(name = "attributedSales30dSameSKU")
private String attributedSalesThirtydaySameSku;
@JSONField(name = "attributedUnitsOrdered1dSameSKU")
private String attributedUnitsOrderedOnedaySameSku;
@JSONField(name = "attributedUnitsOrdered7dSameSKU")
private String attributedUnitsOrderedSevendaySameSku;
@JSONField(name = "attributedUnitsOrdered14dSameSKU")
private String attributedUnitsOrderedFourteendaySameSku;
@JSONField(name = "attributedUnitsOrdered30dSameSKU")
private String attributedUnitsOrderedThirtydaySameSku;
}
...@@ -25,7 +25,7 @@ metrics: ...@@ -25,7 +25,7 @@ metrics:
feign: feign:
hystrix: hystrix:
enabled: true enabled: false
client: client:
config: config:
default: default:
......
...@@ -24,7 +24,7 @@ metrics: ...@@ -24,7 +24,7 @@ metrics:
feign: feign:
hystrix: hystrix:
enabled: true enabled: false
client: client:
config: config:
default: default:
......
package com.bailuntec.job.service;
import com.bailuntec.job.AmazonApp;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.*;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/11/12 3:24 下午
*/
@ActiveProfiles(value = "test")
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AmazonApp.class)
class AmazonJobServiceTest {
@Resource
AmazonJobService amazonJobService;
@Test
void generateAmazonAdReport() {
amazonJobService.generateAmazonAdReport();
}
@Test
void downloadAmazonAdReport(){
amazonJobService.downloadAmazonAdReport();
}
}
...@@ -19,7 +19,7 @@ public class SyncOmsJob { ...@@ -19,7 +19,7 @@ public class SyncOmsJob {
public void baseSyncFinanceFee() { public void baseSyncFinanceFee() {
try { try {
log.info("每分钟同步费用单 开始"); log.info("每分钟同步费用单 开始");
syncOmsOrder.sync(); syncOmsOrder.syncOrder();
log.info("每分钟同步费用单 结束"); log.info("每分钟同步费用单 结束");
} catch (Exception ex) { } catch (Exception ex) {
log.error("每分钟同步费用单 异常:", ex); log.error("每分钟同步费用单 异常:", ex);
......
<?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>
<groupId>com.bailuntec</groupId>
<artifactId>datacenter-show</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<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>
<skipTests>true</skipTests>
</properties>
<artifactId>show-auto-turnover</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<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.AmazonApp</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/show-auto-turnover:${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 base-sync-amazon-ad-1.0-SNAPSHOT.jar app.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Xms300m","-Xmx600m","-jar","-Dspring.profiles.active=prod","/app.jar"]
EXPOSE 8080
package com.bailuntec.job.service;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/11/25 3:01 下午
*/
@Data
public class DaySales {
@ApiModelProperty("日期")
private LocalDate day;
@ApiModelProperty("销量")
private BigDecimal sales;
@ApiModelProperty("突增销量")
private BigDecimal uprushSales;
}
package com.bailuntec.job.service;
import com.bailuntec.domain.DcAutoUprushConfig;
import com.bailuntec.domain.DcBaseOmsSku30;
import com.bailuntec.domain.DcBaseStock;
import com.bailuntec.domain.DcBaseWarehouse;
import com.bailuntec.infrastructure.mapper.DcAutoSalesMapper;
import com.bailuntec.infrastructure.mapper.DcAutoUprushConfigMapper;
import com.bailuntec.infrastructure.mapper.DcBaseOmsSku30Mapper;
import com.bailuntec.infrastructure.mapper.DcBaseWarehouseMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/11/25 2:53 下午
*/
@Service
public class ShowAutoTurnover {
@Resource
DcBaseWarehouseMapper dcBaseWarehouseMapper;
@Resource
DcAutoSalesMapper dcAutoSalesMapper;
@Resource
DcAutoUprushConfigMapper dcAutoUprushConfigMapper;
@Resource
DcBaseOmsSku30Mapper dcBaseOmsSku30Mapper;
public static ThreadLocal<ShowAutoTurnoverParam> threadLocal = new ThreadLocal<>();
public void syncAutoTurnover(DcBaseStock dcBaseStock) {
LambdaQueryWrapper<DcBaseOmsSku30> wrapper = new LambdaQueryWrapper<>();
wrapper.lt(DcBaseOmsSku30::getPaidTime, threadLocal.get().getQueryTime())
.ne(DcBaseOmsSku30::getBailunOrderStatus, "Canceled")
.eq(DcBaseOmsSku30::getHasFbaS, 0)
.eq(DcBaseOmsSku30::getHasDelete, 0)
.eq(DcBaseOmsSku30::getHasScalp, 0)
.eq(DcBaseOmsSku30::getHasBuyerRemark, 0)
.eq(DcBaseOmsSku30::getHasPlatskuRemark, 0)
.eq(DcBaseOmsSku30::getHasInnersale, 0)
.eq(DcBaseOmsSku30::getBailunSku, dcBaseStock.getBailunSku())
.eq(DcBaseOmsSku30::getWarehouseCode, dcBaseStock.getWarehouseCode())
.ne(DcBaseOmsSku30::getPlatformOrderType, "手工单")
;
}
BigDecimal uprushSales() {
String bailunSku = threadLocal.get().getBailunSku();
String warehouseCode = threadLocal.get().getWarehouseCode();
DcBaseWarehouse dcBaseWarehouse = dcBaseWarehouseMapper.selectByWarehouseCode(warehouseCode);
// 获取7、14日均销量
BigDecimal agvSales = dcAutoSalesMapper.getSalesAvg(threadLocal.get().getQueryTime(), bailunSku, warehouseCode);
//如果仓库不为空
if (dcBaseWarehouse != null) {
//销量突增检测
DcAutoUprushConfig dcAutoUprushConfig = dcAutoUprushConfigMapper.selectByWarehouse(dcBaseWarehouse);
if (dcAutoUprushConfig != null && agvSales != null) {
// 突增销量 = (7+14日均销量)/2 * 突增率
BigDecimal incrementalRatio = BigDecimal.ONE.add(dcAutoUprushConfig.getPercentage());
return agvSales.multiply(incrementalRatio).setScale(0, RoundingMode.UP);
}
}
return BigDecimal.ZERO;
}
}
package com.bailuntec.job.service;
import com.bailuntec.domain.DcBaseWarehouse;
import lombok.Data;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/11/25 3:19 下午
*/
@Data
public class ShowAutoTurnoverParam {
private LocalDateTime queryTime;
private String bailunSku;
private String warehouseCode;
private DcBaseWarehouse dcBaseWarehouse;
}
spring: spring:
# 服务名称 # 服务名称
application: application:
name: base-sync-sample name: base-sync-amazon-ad
# 数据配置 # 数据配置
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
...@@ -20,6 +20,9 @@ mybatis-plus: ...@@ -20,6 +20,9 @@ mybatis-plus:
metrics:
campaignName,campaignId,impressions,clicks,cost,currency,attributedConversions1d,attributedConversions7d,attributedConversions14d,attributedConversions30d,attributedConversions1dSameSKU,attributedConversions7dSameSKU,attributedConversions14dSameSKU,attributedConversions30dSameSKU,attributedUnitsOrdered1d,attributedUnitsOrdered7d,attributedUnitsOrdered14d,attributedUnitsOrdered30d,attributedSales1d,attributedSales7d,attributedSales14d,attributedSales30d,attributedSales1dSameSKU,attributedSales7dSameSKU,attributedSales14dSameSKU,attributedSales30dSameSKU,attributedUnitsOrdered1dSameSKU,attributedUnitsOrdered7dSameSKU,attributedUnitsOrdered14dSameSKU,attributedUnitsOrdered30dSameSKU
feign: feign:
hystrix: hystrix:
enabled: false enabled: false
......
spring: spring:
# 服务名称 # 服务名称
application: application:
name: base-sync-sample name: base-sync-amazon-ad
# 数据配置 # 数据配置
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
...@@ -19,6 +19,9 @@ mybatis-plus: ...@@ -19,6 +19,9 @@ mybatis-plus:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
metrics:
campaignName,campaignId,impressions,clicks,cost,currency,attributedConversions1d,attributedConversions7d,attributedConversions14d,attributedConversions30d,attributedConversions1dSameSKU,attributedConversions7dSameSKU,attributedConversions14dSameSKU,attributedConversions30dSameSKU,attributedUnitsOrdered1d,attributedUnitsOrdered7d,attributedUnitsOrdered14d,attributedUnitsOrdered30d,attributedSales1d,attributedSales7d,attributedSales14d,attributedSales30d,attributedSales1dSameSKU,attributedSales7dSameSKU,attributedSales14dSameSKU,attributedSales30dSameSKU,attributedUnitsOrdered1dSameSKU,attributedUnitsOrdered7dSameSKU,attributedUnitsOrdered14dSameSKU,attributedUnitsOrdered30dSameSKU
feign: feign:
hystrix: hystrix:
enabled: false enabled: false
...@@ -28,4 +31,4 @@ feign: ...@@ -28,4 +31,4 @@ feign:
connectTimeout: 30000 connectTimeout: 30000
readTimeout: 30000 readTimeout: 30000
server: server:
port: 1224 port: 1223
spring: spring:
# 服务名称 # 服务名称
application: application:
name: base-sync-sample name: base-sync-amazon-ad
# 数据配置 # 数据配置
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
...@@ -20,6 +20,9 @@ mybatis-plus: ...@@ -20,6 +20,9 @@ mybatis-plus:
metrics:
campaignName,campaignId,impressions,clicks,cost,currency,attributedConversions1d,attributedConversions7d,attributedConversions14d,attributedConversions30d,attributedConversions1dSameSKU,attributedConversions7dSameSKU,attributedConversions14dSameSKU,attributedConversions30dSameSKU,attributedUnitsOrdered1d,attributedUnitsOrdered7d,attributedUnitsOrdered14d,attributedUnitsOrdered30d,attributedSales1d,attributedSales7d,attributedSales14d,attributedSales30d,attributedSales1dSameSKU,attributedSales7dSameSKU,attributedSales14dSameSKU,attributedSales30dSameSKU,attributedUnitsOrdered1dSameSKU,attributedUnitsOrdered7dSameSKU,attributedUnitsOrdered14dSameSKU,attributedUnitsOrdered30dSameSKU
feign: feign:
hystrix: hystrix:
enabled: false enabled: false
......
spring: spring:
# 服务名称 # 服务名称
application: application:
name: base-sync-sample name: base-sync-amazon-ad
# 数据配置 # 数据配置
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
...@@ -19,6 +19,9 @@ mybatis-plus: ...@@ -19,6 +19,9 @@ mybatis-plus:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
metrics:
campaignName,campaignId,impressions,clicks,cost,currency,attributedConversions1d,attributedConversions7d,attributedConversions14d,attributedConversions30d,attributedConversions1dSameSKU,attributedConversions7dSameSKU,attributedConversions14dSameSKU,attributedConversions30dSameSKU,attributedUnitsOrdered1d,attributedUnitsOrdered7d,attributedUnitsOrdered14d,attributedUnitsOrdered30d,attributedSales1d,attributedSales7d,attributedSales14d,attributedSales30d,attributedSales1dSameSKU,attributedSales7dSameSKU,attributedSales14dSameSKU,attributedSales30dSameSKU,attributedUnitsOrdered1dSameSKU,attributedUnitsOrdered7dSameSKU,attributedUnitsOrdered14dSameSKU,attributedUnitsOrdered30dSameSKU
feign: feign:
hystrix: hystrix:
enabled: false enabled: false
...@@ -28,4 +31,4 @@ feign: ...@@ -28,4 +31,4 @@ feign:
connectTimeout: 30000 connectTimeout: 30000
readTimeout: 30000 readTimeout: 30000
server: server:
port: 1230 port: 1223
#Generated by Maven
#Wed Nov 25 14:52:01 CST 2020
version=1.0-SNAPSHOT
groupId=com.bailuntec
artifactId=show-auto-turnover
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