Commit bfa9e6b7 by huluobin

亚马逊广告

parent ce253bdd
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
[Ebay费用开发文档](https://developer.ebay.com/api-docs/developer/analytics/overview.html) [Ebay费用开发文档](https://developer.ebay.com/api-docs/developer/analytics/overview.html)
[Amazon广告费用接口文档](https://advertising.amazon.com/API/docs/v2/reference/reports) [Amazon广告费用接口文档](https://advertising.amazon.com**/API/docs/v2/reference/reports)
### 解释说明 ### 解释说明
...@@ -107,4 +107,4 @@ ...@@ -107,4 +107,4 @@
|-finance-balance-sheet 资产负债表 |-finance-balance-sheet 资产负债表
|-data-show show-数据价值展现 |-data-show show-数据价值展现
|-show-auto-turnover 自动周转逻辑 |-show-auto-turnover 自动周转逻辑
``` ```
\ No newline at end of file
...@@ -37,17 +37,25 @@ public class Application { ...@@ -37,17 +37,25 @@ public class Application {
} }
private static LiteJobConfiguration createJobConfiguration1() { private static LiteJobConfiguration createJobConfiguration1() {
JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder(propertiesUtil.getPropertyAsString("JOB_NAME_AD_PRODUCT_GENERATE"), propertiesUtil.getPropertyAsString("JOB_CRON_AD_PRODUCT_GENERATE"), propertiesUtil.getPropertyAsInt("SHARDING_TOTAL_COUNT")).build(); JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder(
propertiesUtil.getPropertyAsString("JOB_NAME_AD_PRODUCT_GENERATE")
, propertiesUtil.getPropertyAsString("JOB_CRON_AD_PRODUCT_GENERATE")
, propertiesUtil.getPropertyAsInt("SHARDING_TOTAL_COUNT"))
.build();
SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, AmazonAdGenerateReportIdJob.class.getCanonicalName()); SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, AmazonAdGenerateReportIdJob.class.getCanonicalName());
LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).build(); return LiteJobConfiguration.newBuilder(simpleJobConfig).build();
return simpleJobRootConfig;
} }
private static LiteJobConfiguration createJobConfiguration2() { private static LiteJobConfiguration createJobConfiguration2() {
JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder(propertiesUtil.getPropertyAsString("JOB_NAME_AD_PRODUCT_DOWNLOAD"), propertiesUtil.getPropertyAsString("JOB_CRON_AD_PRODUCT_DOWNLOAD"), propertiesUtil.getPropertyAsInt("SHARDING_TOTAL_COUNT")).build(); JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder(
propertiesUtil.getPropertyAsString("JOB_NAME_AD_PRODUCT_DOWNLOAD"),
propertiesUtil.getPropertyAsString("JOB_CRON_AD_PRODUCT_DOWNLOAD"),
propertiesUtil.getPropertyAsInt("SHARDING_TOTAL_COUNT"))
.build();
SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, AmazonAdDownloadReportJob.class.getCanonicalName()); SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, AmazonAdDownloadReportJob.class.getCanonicalName());
LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).build(); return LiteJobConfiguration.newBuilder(simpleJobConfig).build();
return simpleJobRootConfig;
} }
private static JobEventConfiguration createJobEventConfiguration() { private static JobEventConfiguration createJobEventConfiguration() {
......
package com.bailuntec.job; package com.bailuntec.job;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.util.IOUtils;
import com.bailuntec.domain.entity.DcBaseCompanyAccount; import com.bailuntec.domain.entity.DcBaseCompanyAccount;
import com.bailuntec.domain.entity.DcBaseFinanceAmazonAdProduct; import com.bailuntec.domain.entity.DcBaseFinanceAmazonAdProduct;
import com.bailuntec.domain.entity.JobAmazonAdLog; import com.bailuntec.domain.entity.JobAmazonAdLog;
...@@ -31,6 +32,7 @@ import java.io.InputStreamReader; ...@@ -31,6 +32,7 @@ import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
...@@ -61,7 +63,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob { ...@@ -61,7 +63,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
} }
} }
private void handleReport(JobAmazonAdLog jobAmazonAdLog, AmazonAdAuth amazonAdAuth, String shardParam) { public void handleReport(JobAmazonAdLog jobAmazonAdLog, AmazonAdAuth amazonAdAuth, String shardParam) {
Response response = null; Response response = null;
GZIPInputStream gzin = null; GZIPInputStream gzin = null;
Request request = new Request.Builder() Request request = new Request.Builder()
...@@ -76,13 +78,13 @@ public class AmazonAdDownloadReportJob implements SimpleJob { ...@@ -76,13 +78,13 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
try { try {
response = client.newCall(request).execute(); response = client.newCall(request).execute();
if (response.isSuccessful()) { if (response.isSuccessful()) {
//注意这个接口是必须用gzip
gzin = new GZIPInputStream(response.body().byteStream()); gzin = new GZIPInputStream(response.body().byteStream());
log.warn("开始解析账号Id为" + jobAmazonAdLog.getAccountId() + "的Report----" + jobAmazonAdLog.getReportId() + ", 文件大小为" + response.body().contentLength()); log.warn("开始解析账号Id为" + jobAmazonAdLog.getAccountId() + "的Report----" + jobAmazonAdLog.getReportId() + ", 文件大小为" + response.body().contentLength());
Gson gson = new Gson(); Gson gson = new Gson();
Reader reader = new InputStreamReader(response.body().byteStream());
Type type = new TypeToken<List<AmazonAdProduct>>() { Type type = new TypeToken<List<AmazonAdProduct>>() {
}.getType(); }.getType();
List<AmazonAdProduct> amazonAdProductList = gson.fromJson(new InputStreamReader(response.body().byteStream()), type); List<AmazonAdProduct> amazonAdProductList = gson.fromJson(new InputStreamReader(gzin), type);
log.warn("账号Id" + jobAmazonAdLog.getAccountId() + "的Report解析完成"); log.warn("账号Id" + jobAmazonAdLog.getAccountId() + "的Report解析完成");
gzin.close(); gzin.close();
response.close(); response.close();
...@@ -137,7 +139,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob { ...@@ -137,7 +139,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
} }
} }
private void downloadReport(JobAmazonAdLog jobAmazonAdLog, String shardParam) { public void downloadReport(JobAmazonAdLog jobAmazonAdLog, String shardParam) {
DcBaseCompanyAccount dcBaseCompanyAccount = getToken(jobAmazonAdLog); DcBaseCompanyAccount dcBaseCompanyAccount = getToken(jobAmazonAdLog);
AmazonAdAuth amazonAdAuth = JSON.parseObject(dcBaseCompanyAccount.getAmazonAdAuthJson(), AmazonAdAuth.class); AmazonAdAuth amazonAdAuth = JSON.parseObject(dcBaseCompanyAccount.getAmazonAdAuthJson(), AmazonAdAuth.class);
handleReport(jobAmazonAdLog, amazonAdAuth, shardParam); handleReport(jobAmazonAdLog, amazonAdAuth, shardParam);
...@@ -145,14 +147,22 @@ public class AmazonAdDownloadReportJob implements SimpleJob { ...@@ -145,14 +147,22 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
private DcBaseCompanyAccount getToken(JobAmazonAdLog jobAmazonAdLog) { private DcBaseCompanyAccount getToken(JobAmazonAdLog jobAmazonAdLog) {
DcBaseCompanyAccountMapper mapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class); DcBaseCompanyAccountMapper mapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class);
return mapper.selectOneByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andCompanyIdEqualTo(jobAmazonAdLog.getCompanyId()).andAccountIdEqualTo(jobAmazonAdLog.getAccountId()).example()); return mapper.selectOneByExample(DcBaseCompanyAccountExample.newAndCreateCriteria()
.andCompanyIdEqualTo(jobAmazonAdLog.getCompanyId())
.andAccountIdEqualTo(jobAmazonAdLog.getAccountId())
.example());
} }
private List<JobAmazonAdLog> findJobAmazonAdLogList(ShardingContext shardingContext, int pageSize) { private List<JobAmazonAdLog> findJobAmazonAdLogList(ShardingContext shardingContext, int pageSize) {
try { try {
JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class); JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class);
return mapper.selectByExample(JobAmazonAdLogExample.newAndCreateCriteria().andStatusEqualTo(false).andBjModifiedLessThan(LocalDateTime.now().minusMinutes(15)).example().orderBy("id").limit(shardingContext.getShardingItem() * pageSize, pageSize)); return mapper.selectByExample(JobAmazonAdLogExample.newAndCreateCriteria()
.andStatusEqualTo(false)
.andBjModifiedLessThan(LocalDateTime.now().minusMinutes(15))
.example()
.orderBy("id")
.limit(shardingContext.getShardingItem() * pageSize, pageSize));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
...@@ -164,7 +174,8 @@ public class AmazonAdDownloadReportJob implements SimpleJob { ...@@ -164,7 +174,8 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
private int countJobAmazonAdLog() { private int countJobAmazonAdLog() {
try { try {
JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class); JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class);
return (int) mapper.countByExample(JobAmazonAdLogExample.newAndCreateCriteria().andStatusEqualTo(false).example()); return (int) mapper.countByExample(JobAmazonAdLogExample.newAndCreateCriteria()
.andStatusEqualTo(false).example());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return 0; return 0;
......
...@@ -25,7 +25,6 @@ import okhttp3.*; ...@@ -25,7 +25,6 @@ import okhttp3.*;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -38,13 +37,15 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -38,13 +37,15 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
private final int platformId = 15; private final int platformId = 15;
private static final PropertiesUtil propertiesUtil = PropertiesUtil.getInstance("const"); private static final PropertiesUtil propertiesUtil = PropertiesUtil.getInstance("const");
private final OkHttpClient client = OkHttpUtil.getInstance(); private final OkHttpClient client = OkHttpUtil.getInstance();
@Override @Override
public void executeJob(ShardingContext shardingContext, JobPointLog jobPointLog) { public void executeJob(ShardingContext shardingContext, JobPointLog jobPointLog) {
int totalPage = getCount(); int totalPage = getCount();
try { try {
JobAccountLogMapper jobAccountLogMapper = SessionUtil.getSession().getMapper(JobAccountLogMapper.class); JobAccountLogMapper jobAccountLogMapper = SessionUtil.getSession().getMapper(JobAccountLogMapper.class);
int pageSize = totalPage % shardingContext.getShardingTotalCount() == 0 ? totalPage / shardingContext.getShardingTotalCount() : totalPage / shardingContext.getShardingTotalCount() + 1; int pageSize = totalPage % shardingContext.getShardingTotalCount() == 0 ? totalPage / shardingContext.getShardingTotalCount() : totalPage / shardingContext.getShardingTotalCount() + 1;
List<JobAccountLog> listByPage = jobAccountLogMapper.getListByPageAmazon(platformId,pageSize * shardingContext.getShardingItem(), pageSize); List<JobAccountLog> listByPage = jobAccountLogMapper.getListByPageAmazon(platformId, pageSize * shardingContext.getShardingItem(), pageSize);
if (listByPage != null && listByPage.size() > 0) { if (listByPage != null && listByPage.size() > 0) {
for (JobAccountLog jobAccountLog : listByPage) { for (JobAccountLog jobAccountLog : listByPage) {
if (jobAccountLog.getId() == null) { //Id为null在任务表无记录 if (jobAccountLog.getId() == null) { //Id为null在任务表无记录
...@@ -52,7 +53,7 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -52,7 +53,7 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
jobAccountLog.setId(null); jobAccountLog.setId(null);
} }
LocalDateTime localDateTime = jobAccountLog.getStartTime(); LocalDateTime localDateTime = jobAccountLog.getStartTime();
for(long i = 10 ; i >= 0; i--) { for (long i = 10; i >= 0; i--) {
jobAccountLog.setStartTime(localDateTime.minusDays(i)); jobAccountLog.setStartTime(localDateTime.minusDays(i));
generateReportId(jobAccountLog); generateReportId(jobAccountLog);
} }
...@@ -60,13 +61,17 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -60,13 +61,17 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
jobAccountLogMapper.insertSelective(jobAccountLog); jobAccountLogMapper.insertSelective(jobAccountLog);
} else { } else {
jobAccountLog.setBjModified(LocalDateTime.now()); jobAccountLog.setBjModified(LocalDateTime.now());
jobAccountLogMapper.updateByExampleSelective(jobAccountLog, JobAccountLogExample.newAndCreateCriteria().andAccountIdEqualTo(jobAccountLog.getAccountId()).andJobNameEqualTo(jobAccountLog.getJobName()).example()); jobAccountLogMapper.updateByExampleSelective(jobAccountLog, JobAccountLogExample
.newAndCreateCriteria()
.andAccountIdEqualTo(jobAccountLog.getAccountId())
.andJobNameEqualTo(jobAccountLog.getJobName())
.example());
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.warn("Amaozom定时同步广告接口错误", e); log.warn("Amazon定时同步广告接口错误", e);
} finally { } finally {
SessionUtil.closeSession(); SessionUtil.closeSession();
} }
...@@ -77,12 +82,13 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -77,12 +82,13 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
* 才允许生成报告 * 才允许生成报告
* 避免报告不完整 * 避免报告不完整
* 比如 7月26号12:00才允许生成7月25号的报告 * 比如 7月26号12:00才允许生成7月25号的报告
*
* @param jobAccountLog * @param jobAccountLog
*/ */
private void generateReportId(JobAccountLog jobAccountLog) { private void generateReportId(JobAccountLog jobAccountLog) {
LocalDateTime startZeroTime = LocalDateTime.of(jobAccountLog.getStartTime().toLocalDate(), LocalTime.MIN); LocalDateTime startZeroTime = LocalDateTime.of(jobAccountLog.getStartTime().toLocalDate(), LocalTime.MIN);
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), now.getHour(),now.getMinute(), now.getSecond()); // LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), now.getHour(),now.getMinute(), now.getSecond());
if (Duration.between(startZeroTime, now).toHours() >= 37) { if (Duration.between(startZeroTime, now).toHours() >= 37) {
DcBaseCompanyAccount dcBaseCompanyAccount = getToken(jobAccountLog); DcBaseCompanyAccount dcBaseCompanyAccount = getToken(jobAccountLog);
if (StringUtils.isNoneBlank(dcBaseCompanyAccount.getAmazonAdAuthJson())) { if (StringUtils.isNoneBlank(dcBaseCompanyAccount.getAmazonAdAuthJson())) {
...@@ -96,12 +102,12 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -96,12 +102,12 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
* 发请求, 存在就更新时间 * 发请求, 存在就更新时间
*/ */
/*if (jobAmazonAdLog == null || (jobAmazonAdLog != null && StringUtils.isBlank(jobAmazonAdLog.getReportId()))) {*/ /*if (jobAmazonAdLog == null || (jobAmazonAdLog != null && StringUtils.isBlank(jobAmazonAdLog.getReportId()))) {*/
/** /**
* 授权信息存在才去调接口获取ReportId * 授权信息存在才去调接口获取ReportId
*/ */
AmazonAdAuth amazonAdAuth = JSON.parseObject(dcBaseCompanyAccount.getAmazonAdAuthJson(), AmazonAdAuth.class); AmazonAdAuth amazonAdAuth = JSON.parseObject(dcBaseCompanyAccount.getAmazonAdAuthJson(), AmazonAdAuth.class);
//1. 先获取ReportId //1. 先获取ReportId
postReportId(jobAccountLog, amazonAdAuth, dcBaseCompanyAccount.getSiteEn(), jobAmazonAdLogMapper); postReportId(jobAccountLog, amazonAdAuth, dcBaseCompanyAccount.getSiteEn(), jobAmazonAdLogMapper);
/*} else { /*} else {
jobAccountLogUpdateTime(jobAccountLog); jobAccountLogUpdateTime(jobAccountLog);
}*/ }*/
...@@ -115,12 +121,12 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -115,12 +121,12 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
jsonObject.put("metrics", propertiesUtil.getPropertyAsString("METRICS")); jsonObject.put("metrics", propertiesUtil.getPropertyAsString("METRICS"));
MediaType mediaType = MediaType.parse("application/json"); MediaType mediaType = MediaType.parse("application/json");
Response response = null; Response response = null;
try{ try {
RequestBody body = RequestBody.create(mediaType, jsonObject.toJSONString()); RequestBody body = RequestBody.create(mediaType, jsonObject.toJSONString());
Request request = new Request.Builder() Request request = new Request.Builder()
.url(switchSiteUrl(siteEn, null)) .url(switchSiteUrl(siteEn, null))
.post(body) .post(body)
.addHeader("Authorization", amazonAdAuth.getAccessToken()) .addHeader("Authorization", amazonAdAuth.getAccessToken())
.addHeader("Amazon-Advertising-API-ClientId", amazonAdAuth.getClientId()) .addHeader("Amazon-Advertising-API-ClientId", amazonAdAuth.getClientId())
.addHeader("Amazon-Advertising-API-Scope", amazonAdAuth.getProfileId()) .addHeader("Amazon-Advertising-API-Scope", amazonAdAuth.getProfileId())
.addHeader("Content-Type", "application/json") .addHeader("Content-Type", "application/json")
...@@ -129,14 +135,14 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -129,14 +135,14 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
String string = response.body().string(); String string = response.body().string();
if (response.isSuccessful()) { if (response.isSuccessful()) {
AmazonAdSuccessResult amazonAdSuccessResult = JSON.parseObject(string, AmazonAdSuccessResult.class); AmazonAdSuccessResult amazonAdSuccessResult = JSON.parseObject(string, AmazonAdSuccessResult.class);
JobAmazonAdLog jobAmazonAdLog = new JobAmazonAdLog(null, jobAccountLog.getAccountId(),amazonAdSuccessResult.getReportId(),jobAccountLog.getStartTime().toLocalDate(),false, null, LocalDateTime.now(), siteEn, jobAccountLog.getCompanyId()); JobAmazonAdLog jobAmazonAdLog = new JobAmazonAdLog(null, jobAccountLog.getAccountId(), amazonAdSuccessResult.getReportId(), jobAccountLog.getStartTime().toLocalDate(), false, null, LocalDateTime.now(), siteEn, jobAccountLog.getCompanyId());
int updateInt = jobAmazonAdLogMapper.updateByExampleSelective(jobAmazonAdLog, JobAmazonAdLogExample.newAndCreateCriteria().andAccountIdEqualTo(jobAccountLog.getAccountId()).andReportDateEqualTo(jobAccountLog.getStartTime().toLocalDate()).example()); int updateInt = jobAmazonAdLogMapper.updateByExampleSelective(jobAmazonAdLog, JobAmazonAdLogExample.newAndCreateCriteria().andAccountIdEqualTo(jobAccountLog.getAccountId()).andReportDateEqualTo(jobAccountLog.getStartTime().toLocalDate()).example());
if (updateInt == 0) { if (updateInt == 0) {
jobAmazonAdLogMapper.insertSelective(jobAmazonAdLog); jobAmazonAdLogMapper.insertSelective(jobAmazonAdLog);
} }
jobAccountLogUpdateTime(jobAccountLog); jobAccountLogUpdateTime(jobAccountLog);
} }
}catch (Exception e){ } catch (Exception e) {
jobAccountLog.setMessage("调用获取AmazonADReportId错误:" + ExceptionUtil.transform(e)); jobAccountLog.setMessage("调用获取AmazonADReportId错误:" + ExceptionUtil.transform(e));
} finally { } finally {
if (response != null) { if (response != null) {
...@@ -162,6 +168,7 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -162,6 +168,7 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
* 就POST _URL * 就POST _URL
* 否则GET _URL * 否则GET _URL
* https://advertising.amazon.com/API/docs/v2/reference/product_ads * https://advertising.amazon.com/API/docs/v2/reference/product_ads
*
* @param siteEn * @param siteEn
* @param param * @param param
* @return * @return
...@@ -189,21 +196,21 @@ public class AmazonAdGenerateReportIdJob extends PointJob { ...@@ -189,21 +196,21 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
protected static String getURL(String siteUrl, String param) { protected static String getURL(String siteUrl, String param) {
if (StringUtils.isBlank(param)) { if (StringUtils.isBlank(param)) {
return propertiesUtil.getPropertyAsString(siteUrl) + propertiesUtil.getPropertyAsString("POST_PRODUCT_ADS_REPORT_ID"); return propertiesUtil.getPropertyAsString(siteUrl) + propertiesUtil.getPropertyAsString("POST_PRODUCT_ADS_REPORT_ID");
} }
return propertiesUtil.getPropertyAsString(siteUrl) + propertiesUtil.getPropertyAsString("GET_PRODUCT_ADS_REPORT_DOWNLOAD_PREFIX")+ param + propertiesUtil.getPropertyAsString("GET_PRODUCT_ADS_REPORT_DOWNLOAD_SUFFIX"); return propertiesUtil.getPropertyAsString(siteUrl) + propertiesUtil.getPropertyAsString("GET_PRODUCT_ADS_REPORT_DOWNLOAD_PREFIX") + param + propertiesUtil.getPropertyAsString("GET_PRODUCT_ADS_REPORT_DOWNLOAD_SUFFIX");
} }
private DcBaseCompanyAccount getToken(JobAccountLog jobAccountLog) { private DcBaseCompanyAccount getToken(JobAccountLog jobAccountLog) {
DcBaseCompanyAccountMapper mapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class); DcBaseCompanyAccountMapper mapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class);
return mapper.selectOneByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andCompanyIdEqualTo(jobAccountLog.getCompanyId()).andAccountIdEqualTo(jobAccountLog.getAccountId()).example()); return mapper.selectOneByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andCompanyIdEqualTo(jobAccountLog.getCompanyId()).andAccountIdEqualTo(jobAccountLog.getAccountId()).example());
} }
private int getCount() { private int getCount() {
int i = 0; int i = 0;
try { try {
DcBaseCompanyAccountMapper accountMapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class); DcBaseCompanyAccountMapper accountMapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class);
i = (int)accountMapper.countByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andPlatformIdEqualTo(platformId).andAmazonAdAuthJsonNotEqualTo("").example()); i = (int) accountMapper.countByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andPlatformIdEqualTo(platformId).andAmazonAdAuthJsonNotEqualTo("").example());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
......
...@@ -9,8 +9,11 @@ EVENT_RDB_STORAGE_USERNAME=root ...@@ -9,8 +9,11 @@ EVENT_RDB_STORAGE_USERNAME=root
EVENT_RDB_STORAGE_PASSWORD=#7kfnymAM$Y9-Ntf EVENT_RDB_STORAGE_PASSWORD=#7kfnymAM$Y9-Ntf
ZOOKEEPER_SERVER=172.31.255.120:2181 ZOOKEEPER_SERVER=172.31.255.120:2181
NAME_SPACE=data-center NAME_SPACE=data-center
JOB_NAME_AD_PRODUCT=base-sync-finance-amazon-ad-product
JOB_CRON_AD_PRODUCT=0 1 0/5 * * ? *
#SHARDING_TOTAL_COUNT=3
JOB_NAME_AD_PRODUCT_GENERATE=base-amazon-ad-product-generate JOB_NAME_AD_PRODUCT_GENERATE=base-amazon-ad-product-generate
JOB_CRON_AD_PRODUCT_GENERATE=0 1 0/1 * * ? * JOB_CRON_AD_PRODUCT_GENERATE=0 1 12/1 * * ? *
JOB_NAME_AD_PRODUCT_DOWNLOAD=base-amazon-ad-product-download JOB_NAME_AD_PRODUCT_DOWNLOAD=base-amazon-ad-product-download
JOB_CRON_AD_PRODUCT_DOWNLOAD=0 2 0/1 * * ? * JOB_CRON_AD_PRODUCT_DOWNLOAD=0 1 0/1 * * ? *
SHARDING_TOTAL_COUNT=2 SHARDING_TOTAL_COUNT=2
import com.bailuntec.domain.entity.JobAccountLog; import com.bailuntec.domain.entity.JobAccountLog;
import com.bailuntec.domain.entity.JobAmazonAdLog; import com.bailuntec.domain.entity.JobAmazonAdLog;
import com.bailuntec.domain.entity.JobPointLog;
import com.bailuntec.domain.example.JobAmazonAdLogExample; import com.bailuntec.domain.example.JobAmazonAdLogExample;
import com.bailuntec.job.AmazonAdDownloadReportJob;
import com.bailuntec.job.AmazonAdGenerateReportIdJob;
import com.bailuntec.mapper.JobAmazonAdLogMapper; import com.bailuntec.mapper.JobAmazonAdLogMapper;
import com.bailuntec.utils.SessionUtil; import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.executor.ShardingContexts;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
...@@ -20,10 +26,10 @@ public class AmazonAdProductTest { ...@@ -20,10 +26,10 @@ public class AmazonAdProductTest {
Method generateReportId = clazz.getDeclaredMethod("generateReportId", JobAccountLog.class); Method generateReportId = clazz.getDeclaredMethod("generateReportId", JobAccountLog.class);
generateReportId.setAccessible(true); generateReportId.setAccessible(true);
JobAccountLog jobAccountLog = new JobAccountLog(); JobAccountLog jobAccountLog = new JobAccountLog();
jobAccountLog.setStartTime(LocalDateTime.of(2019, 5, 31, 0, 0)); jobAccountLog.setStartTime(LocalDateTime.of(2020, 8, 17, 0, 0));
jobAccountLog.setEndTime(LocalDateTime.of(2019, 6, 1, 0, 0)); jobAccountLog.setEndTime(LocalDateTime.of(2020, 8, 18, 0, 0));
jobAccountLog.setCompanyId(1); jobAccountLog.setCompanyId(1);
jobAccountLog.setAccountId(572); jobAccountLog.setAccountId(1779);
jobAccountLog.setIntervalTime(1); jobAccountLog.setIntervalTime(1);
jobAccountLog.setJobName("base-amazon-ad-product-generate"); jobAccountLog.setJobName("base-amazon-ad-product-generate");
generateReportId.invoke(clazz.newInstance(), jobAccountLog); generateReportId.invoke(clazz.newInstance(), jobAccountLog);
...@@ -37,7 +43,13 @@ public class AmazonAdProductTest { ...@@ -37,7 +43,13 @@ public class AmazonAdProductTest {
generateReportId.setAccessible(true); generateReportId.setAccessible(true);
try { try {
JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class); JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class);
List<JobAmazonAdLog> jobAmazonAdLogList = mapper.selectByExample(JobAmazonAdLogExample.newAndCreateCriteria().andStatusEqualTo(false).andBjModifiedLessThan(LocalDateTime.now().minusMinutes(15)).example().orderBy("id").limit(0 * pageSize, pageSize)); List<JobAmazonAdLog> jobAmazonAdLogList = mapper.selectByExample(JobAmazonAdLogExample.newAndCreateCriteria()
.andStatusEqualTo(false)
.andBjModifiedLessThan(LocalDateTime.now().minusMinutes(15))
.example()
.orderBy("id")
.limit(0, pageSize));
if (jobAmazonAdLogList != null && !jobAmazonAdLogList.isEmpty()) { if (jobAmazonAdLogList != null && !jobAmazonAdLogList.isEmpty()) {
for (JobAmazonAdLog jobAmazonAdLog : jobAmazonAdLogList) { for (JobAmazonAdLog jobAmazonAdLog : jobAmazonAdLogList) {
generateReportId.invoke(clazz.newInstance(), jobAmazonAdLog); generateReportId.invoke(clazz.newInstance(), jobAmazonAdLog);
...@@ -58,7 +70,15 @@ public class AmazonAdProductTest { ...@@ -58,7 +70,15 @@ public class AmazonAdProductTest {
generateReportId.setAccessible(true); generateReportId.setAccessible(true);
try { try {
JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class); JobAmazonAdLogMapper mapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class);
List<JobAmazonAdLog> jobAmazonAdLogList = mapper.selectByExample(JobAmazonAdLogExample.newAndCreateCriteria().andStatusEqualTo(false).andIdEqualTo(1969).andBjModifiedLessThan(LocalDateTime.now().minusMinutes(15)).example().orderBy("id").limit(0 * pageSize, pageSize)); List<JobAmazonAdLog> jobAmazonAdLogList = mapper.selectByExample(JobAmazonAdLogExample
.newAndCreateCriteria()
.andStatusEqualTo(false)
.andIdEqualTo(1969)
.andBjModifiedLessThan(LocalDateTime.now().minusMinutes(15))
.example()
.orderBy("id")
.limit(0, pageSize));
if (jobAmazonAdLogList != null && !jobAmazonAdLogList.isEmpty()) { if (jobAmazonAdLogList != null && !jobAmazonAdLogList.isEmpty()) {
for (JobAmazonAdLog jobAmazonAdLog : jobAmazonAdLogList) { for (JobAmazonAdLog jobAmazonAdLog : jobAmazonAdLogList) {
generateReportId.invoke(clazz.newInstance(), jobAmazonAdLog); generateReportId.invoke(clazz.newInstance(), jobAmazonAdLog);
...@@ -71,4 +91,40 @@ public class AmazonAdProductTest { ...@@ -71,4 +91,40 @@ public class AmazonAdProductTest {
} }
} }
@Test
public void unDownload() {
JobAmazonAdLogMapper jobAmazonAdLogMapper = SessionUtil.getSession().getMapper(JobAmazonAdLogMapper.class);
AmazonAdDownloadReportJob amazonAdDownloadReportJob = new AmazonAdDownloadReportJob();
jobAmazonAdLogMapper.selectByExample(JobAmazonAdLogExample.newAndCreateCriteria()
.andStatusEqualTo(false)
.example())
.forEach(jobAmazonAdLog -> {
amazonAdDownloadReportJob.downloadReport(jobAmazonAdLog, null);
});
}
@Test
public void testReport() {
AmazonAdGenerateReportIdJob amazonAdGenerateReportIdJob = new AmazonAdGenerateReportIdJob();
AmazonAdDownloadReportJob amazonAdDownloadReportJob = new AmazonAdDownloadReportJob();
amazonAdGenerateReportIdJob.executeJob(new ShardingContext(
new ShardingContexts(null, "amazonAdGenerateReportIdJob", 1, null, new HashMap<>()), 0
), new JobPointLog("amazonAdGenerateReportIdJob",
1,
100,
null,
1,
LocalDateTime.of(2020, 4, 1, 0, 0),
LocalDateTime.of(2020, 4, 2, 0, 0)));
amazonAdDownloadReportJob.execute(new ShardingContext(
new ShardingContexts(null, "amazonAdDownloadReportJob", 1, null, new HashMap<>()), 0
));
}
} }
package com.bailuntec.job;
import com.bailuntec.domain.pojo.AmazonAdProduct;
import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.executor.ShardingContexts;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.List;
import java.util.zip.GZIPInputStream;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/19 11:39 上午
*/
@Slf4j
class AmazonAdDownloadReportJobTest {
@Test
void execute() {
AmazonAdDownloadReportJob amazonAdDownloadReportJob = new AmazonAdDownloadReportJob();
amazonAdDownloadReportJob.execute(new ShardingContext(new ShardingContexts("x", null, 1, null, new HashMap<>()), 0));
}
@Test
public void downloadReport() throws IOException {
Request request = new Request.Builder()
.url("https://advertising-api-eu.amazon.com/v1/reports/amzn1.clicksAPI.v1.p35691.5F3CB79F.8b7bf3b1-49f4-42f5-aee3-948215758208/download/")
.get()
.addHeader("Authorization", "Atza|IwEBIECxu5mURTbJo6LfkoB9et_xNpwUemnh7Nav426JfaTwoBQYhhXzn7SzrQDLBYTz0HEYlaCQeJp4okJbRvESaovFWbzP8Hg3poV4x9_YfteilpM0WHvtYoJbZj6BGK2WcAZyncZ1qgSoTHnTPzZuMyniev8BmcEO9UZTfOULeXN86Z7Anyq6Ta_XwA8m4sPUPftUg2Fz-9O6Hm618Z9TDxDdImf4TKyRSr9PXc75XIS_ACrKlK-MjU4ILI1qYgeckI1xpns69MmPJ5G2SvXqQBKSt1CJYq-ZfAqf4-e659SYkieyODjo3qXCyDQ7B9B4LGYxzut0L-WN9SQZO9keBwPtLFPK2StaYpk85F-QIAog6LR3RIdMhzl2Wh-H_JvY4MBEVD3z7HLUfTlFeQVCVuHONgCaBnMurNj6F5VtJ49oQ8J3qxzZx8Il1Jnli5D7cQU99h1MOqmIVk5Q_P-4hqiWVnCwydA9c0G-zho_bR_-bQ")
.addHeader("Amazon-Advertising-API-ClientId", "amzn1.application-oa2-client.a68a22f3f5e44a5691e5780f1b31014c")
.addHeader("Amazon-Advertising-API-Scope", "596170210050198")
.addHeader("Content-Type", "application/json")
.build();
Response response = new OkHttpClient().newCall(request).execute();
GZIPInputStream inputStream = new GZIPInputStream(response.body().byteStream());
Type type = new TypeToken<List<AmazonAdProduct>>() {
}.getType();
List<AmazonAdProduct> amazonAdProductList = new Gson().fromJson(new InputStreamReader(inputStream), type);
log.warn("的Report解析完成");
}
}
...@@ -63,7 +63,9 @@ public class CompanyAccountSyncJob extends PointJob { ...@@ -63,7 +63,9 @@ public class CompanyAccountSyncJob extends PointJob {
for (CompanyAccountInfo companyAccountInfo : result) { for (CompanyAccountInfo companyAccountInfo : result) {
BeanUtils.copyProperties(dcBaseCompanyAccount, companyAccountInfo); BeanUtils.copyProperties(dcBaseCompanyAccount, companyAccountInfo);
dcBaseCompanyAccount.setBjModified(LocalDateTime.now()); dcBaseCompanyAccount.setBjModified(LocalDateTime.now());
int i = mapper.updateByExampleSelective(dcBaseCompanyAccount, DcBaseCompanyAccountExample.newAndCreateCriteria().andCompanyIdEqualTo(companyAccountInfo.getCompanyId()).andAccountIdEqualTo(companyAccountInfo.getAccountId()).example()); int i = mapper.updateByExampleSelective(dcBaseCompanyAccount, DcBaseCompanyAccountExample.newAndCreateCriteria()
.andCompanyIdEqualTo(companyAccountInfo.getCompanyId())
.andAccountIdEqualTo(companyAccountInfo.getAccountId()).example());
if (i == 0) { if (i == 0) {
mapper.insertSelective(dcBaseCompanyAccount); mapper.insertSelective(dcBaseCompanyAccount);
} }
......
package com.bailuntec.job;
import org.junit.jupiter.api.Test;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/19 11:32 上午
*/
class CompanyAccountSyncJobTest {
@Test
void executeJob() {
CompanyAccountSyncJob companyAccountSyncJob = new CompanyAccountSyncJob();
companyAccountSyncJob.executeJob(null, null);
}
}
STOCK_FBA_URL=http://172.31.255.247/api/services/app/ThirdStockFbaService/GetFbaStocks #STOCK_FBA_URL=http://172.31.255.247/api/services/app/ThirdStockFbaService/GetFbaStocks
STOCK_WMS_URL=http://172.31.255.247/api/services/app/WMSStockService/SearchAllProductStockByPage #STOCK_WMS_URL=http://172.31.255.247/api/services/app/WMSStockService/SearchAllProductStockByPage
#STOCK_FBA_URL=http://api.wms.bailuntec.com/api/services/app/ThirdStockFbaService/GetFbaStocks STOCK_FBA_URL=http://api.wms.bailuntec.com/api/services/app/ThirdStockFbaService/GetFbaStocks
#STOCK_WMS_URL=http://api.wms.bailuntec.com/api/services/app/WMSStockService/SearchAllProductStockByPage STOCK_WMS_URL=http://api.wms.bailuntec.com/api/services/app/WMSStockService/SearchAllProductStockByPage
LOGISTICS_WMS_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetNormalDataQuery LOGISTICS_WMS_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetNormalDataQuery
LOGISTICS_WMS_RECONCILIATION_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetBaseDataQuery LOGISTICS_WMS_RECONCILIATION_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetBaseDataQuery
\ No newline at end of file
package com.bailuntec.job;
import com.bailuntec.domain.entity.JobPointLog;
import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.executor.ShardingContexts;
import org.junit.jupiter.api.Test;
import java.util.HashMap;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/18 4:49 下午
*/
class FbaStockJobTest {
@Test
void executeJob() {
FbaStockJob fbaStockJob = new FbaStockJob();
ShardingContext shardingContext = new ShardingContext(new ShardingContexts("1", "fba-stock-job", 1, "", new HashMap<>()), 0);
JobPointLog jobPointLog = new JobPointLog();
jobPointLog.setPageIndex(1);
jobPointLog.setPageSize(100);
fbaStockJob.executeJob(shardingContext, jobPointLog);
}
}
...@@ -136,6 +136,7 @@ public interface DcMidTransitMapper { ...@@ -136,6 +136,7 @@ public interface DcMidTransitMapper {
List<OutStockQuantity> selectQuantityOutStock(); List<OutStockQuantity> selectQuantityOutStock();
List<PurchaseTransitQuantity> selectQuantityPurchaseTransit(); List<PurchaseTransitQuantity> selectQuantityPurchaseTransit();
List<TransferTransitQuantity> selectQuantityTransferTransit(); List<TransferTransitQuantity> selectQuantityTransferTransit();
void calculateOutStock(@Param("list") List<OutStockQuantity> list, @Param("localDateTime") LocalDateTime localDateTime); void calculateOutStock(@Param("list") List<OutStockQuantity> list, @Param("localDateTime") LocalDateTime localDateTime);
...@@ -157,4 +158,4 @@ public interface DcMidTransitMapper { ...@@ -157,4 +158,4 @@ public interface DcMidTransitMapper {
void calculateUnshipped(); void calculateUnshipped();
void updateSkuUnitPrice(); void updateSkuUnitPrice();
} }
\ No newline at end of file
...@@ -91,8 +91,8 @@ ...@@ -91,8 +91,8 @@
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
--> -->
id, bailun_sku, warehouse_code, quantity_purchase, gmt_purchase_modified, quantity_transfer, id, bailun_sku, warehouse_code, quantity_purchase, gmt_purchase_modified, quantity_transfer,
gmt_transfer_modified, quantity_out_stock, gmt_out_stock_modified, quantity_unshipped, gmt_transfer_modified, quantity_out_stock, gmt_out_stock_modified, quantity_unshipped,
gmt_unshipped_modified, company_id, amount_purchase_transit gmt_unshipped_modified, company_id, amount_purchase_transit
</sql> </sql>
<select id="selectByExample" parameterType="com.bailuntec.domain.example.DcMidTransitExample" resultMap="BaseResultMap"> <select id="selectByExample" parameterType="com.bailuntec.domain.example.DcMidTransitExample" resultMap="BaseResultMap">
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
--> -->
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
from dc_mid_transit from dc_mid_transit
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
...@@ -154,17 +154,17 @@ ...@@ -154,17 +154,17 @@
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
--> -->
insert into dc_mid_transit (id, bailun_sku, warehouse_code, insert into dc_mid_transit (id, bailun_sku, warehouse_code,
quantity_purchase, gmt_purchase_modified, quantity_purchase, gmt_purchase_modified,
quantity_transfer, gmt_transfer_modified, quantity_transfer, gmt_transfer_modified,
quantity_out_stock, gmt_out_stock_modified, quantity_out_stock, gmt_out_stock_modified,
quantity_unshipped, gmt_unshipped_modified, quantity_unshipped, gmt_unshipped_modified,
company_id, amount_purchase_transit) company_id, amount_purchase_transit)
values (#{id,jdbcType=INTEGER}, #{bailunSku,jdbcType=VARCHAR}, #{warehouseCode,jdbcType=VARCHAR}, values (#{id,jdbcType=INTEGER}, #{bailunSku,jdbcType=VARCHAR}, #{warehouseCode,jdbcType=VARCHAR},
#{quantityPurchase,jdbcType=INTEGER}, #{gmtPurchaseModified,jdbcType=TIMESTAMP}, #{quantityPurchase,jdbcType=INTEGER}, #{gmtPurchaseModified,jdbcType=TIMESTAMP},
#{quantityTransfer,jdbcType=INTEGER}, #{gmtTransferModified,jdbcType=TIMESTAMP}, #{quantityTransfer,jdbcType=INTEGER}, #{gmtTransferModified,jdbcType=TIMESTAMP},
#{quantityOutStock,jdbcType=INTEGER}, #{gmtOutStockModified,jdbcType=TIMESTAMP}, #{quantityOutStock,jdbcType=INTEGER}, #{gmtOutStockModified,jdbcType=TIMESTAMP},
#{quantityUnshipped,jdbcType=INTEGER}, #{gmtUnshippedModified,jdbcType=TIMESTAMP}, #{quantityUnshipped,jdbcType=INTEGER}, #{gmtUnshippedModified,jdbcType=TIMESTAMP},
#{companyId,jdbcType=INTEGER}, #{amountPurchaseTransit,jdbcType=DECIMAL}) #{companyId,jdbcType=INTEGER}, #{amountPurchaseTransit,jdbcType=DECIMAL})
</insert> </insert>
<insert id="insertSelective" parameterType="com.bailuntec.domain.entity.DcMidTransit"> <insert id="insertSelective" parameterType="com.bailuntec.domain.entity.DcMidTransit">
...@@ -496,7 +496,7 @@ ...@@ -496,7 +496,7 @@
#{amountPurchaseTransit,jdbcType=DECIMAL}, #{amountPurchaseTransit,jdbcType=DECIMAL},
</if> </if>
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
<if test="id != null"> <if test="id != null">
id = #{id,jdbcType=INTEGER}, id = #{id,jdbcType=INTEGER},
...@@ -546,29 +546,29 @@ ...@@ -546,29 +546,29 @@
@project https://github.com/itfsw/mybatis-generator-plugin @project https://github.com/itfsw/mybatis-generator-plugin
--> -->
insert into dc_mid_transit insert into dc_mid_transit
(id, bailun_sku, warehouse_code, quantity_purchase, gmt_purchase_modified, quantity_transfer, (id, bailun_sku, warehouse_code, quantity_purchase, gmt_purchase_modified, quantity_transfer,
gmt_transfer_modified, quantity_out_stock, gmt_out_stock_modified, quantity_unshipped, gmt_transfer_modified, quantity_out_stock, gmt_out_stock_modified, quantity_unshipped,
gmt_unshipped_modified, company_id, amount_purchase_transit) gmt_unshipped_modified, company_id, amount_purchase_transit)
values values
(#{id,jdbcType=INTEGER}, #{bailunSku,jdbcType=VARCHAR}, #{warehouseCode,jdbcType=VARCHAR}, (#{id,jdbcType=INTEGER}, #{bailunSku,jdbcType=VARCHAR}, #{warehouseCode,jdbcType=VARCHAR},
#{quantityPurchase,jdbcType=INTEGER}, #{gmtPurchaseModified,jdbcType=TIMESTAMP}, #{quantityPurchase,jdbcType=INTEGER}, #{gmtPurchaseModified,jdbcType=TIMESTAMP},
#{quantityTransfer,jdbcType=INTEGER}, #{gmtTransferModified,jdbcType=TIMESTAMP}, #{quantityTransfer,jdbcType=INTEGER}, #{gmtTransferModified,jdbcType=TIMESTAMP},
#{quantityOutStock,jdbcType=INTEGER}, #{gmtOutStockModified,jdbcType=TIMESTAMP}, #{quantityOutStock,jdbcType=INTEGER}, #{gmtOutStockModified,jdbcType=TIMESTAMP},
#{quantityUnshipped,jdbcType=INTEGER}, #{gmtUnshippedModified,jdbcType=TIMESTAMP}, #{quantityUnshipped,jdbcType=INTEGER}, #{gmtUnshippedModified,jdbcType=TIMESTAMP},
#{companyId,jdbcType=INTEGER}, #{amountPurchaseTransit,jdbcType=DECIMAL}) #{companyId,jdbcType=INTEGER}, #{amountPurchaseTransit,jdbcType=DECIMAL})
on duplicate key update on duplicate key update
id = #{id,jdbcType=INTEGER}, id = #{id,jdbcType=INTEGER},
bailun_sku = #{bailunSku,jdbcType=VARCHAR}, bailun_sku = #{bailunSku,jdbcType=VARCHAR},
warehouse_code = #{warehouseCode,jdbcType=VARCHAR}, warehouse_code = #{warehouseCode,jdbcType=VARCHAR},
quantity_purchase = #{quantityPurchase,jdbcType=INTEGER}, quantity_purchase = #{quantityPurchase,jdbcType=INTEGER},
gmt_purchase_modified = #{gmtPurchaseModified,jdbcType=TIMESTAMP}, gmt_purchase_modified = #{gmtPurchaseModified,jdbcType=TIMESTAMP},
quantity_transfer = #{quantityTransfer,jdbcType=INTEGER}, quantity_transfer = #{quantityTransfer,jdbcType=INTEGER},
gmt_transfer_modified = #{gmtTransferModified,jdbcType=TIMESTAMP}, gmt_transfer_modified = #{gmtTransferModified,jdbcType=TIMESTAMP},
quantity_out_stock = #{quantityOutStock,jdbcType=INTEGER}, quantity_out_stock = #{quantityOutStock,jdbcType=INTEGER},
gmt_out_stock_modified = #{gmtOutStockModified,jdbcType=TIMESTAMP}, gmt_out_stock_modified = #{gmtOutStockModified,jdbcType=TIMESTAMP},
quantity_unshipped = #{quantityUnshipped,jdbcType=INTEGER}, quantity_unshipped = #{quantityUnshipped,jdbcType=INTEGER},
gmt_unshipped_modified = #{gmtUnshippedModified,jdbcType=TIMESTAMP}, gmt_unshipped_modified = #{gmtUnshippedModified,jdbcType=TIMESTAMP},
company_id = #{companyId,jdbcType=INTEGER}, company_id = #{companyId,jdbcType=INTEGER},
amount_purchase_transit = #{amountPurchaseTransit,jdbcType=DECIMAL} amount_purchase_transit = #{amountPurchaseTransit,jdbcType=DECIMAL}
</insert> </insert>
<select id="selectOneByExample" parameterType="com.bailuntec.domain.example.DcMidTransitExample" resultMap="BaseResultMap"> <select id="selectOneByExample" parameterType="com.bailuntec.domain.example.DcMidTransitExample" resultMap="BaseResultMap">
...@@ -590,90 +590,76 @@ ...@@ -590,90 +590,76 @@
</select> </select>
<select id="selectQuantityTransferTransit" resultType="com.bailuntec.domain.dto.TransferTransitQuantity"> <select id="selectQuantityTransferTransit" resultType="com.bailuntec.domain.dto.TransferTransitQuantity">
SELECT SELECT bailun_sku as bailunSku,
bailun_sku as bailunSku, warehouse_code as warehouseCode,
warehouse_code as warehouseCode, sum(count) as count,
sum( count ) as count, sum(countplan) as countplan,
sum(countplan) as countplan, sum(IF(transport_type = '国内陆运', count, 0)) as landCount,
sum(case when transport_type = '国内陆运' then count else 0 end) as landCount, sum(IF(transport_type = '海运', count, 0)) as oceanCount,
sum(case when transport_type = '海运' then count else 0 end) as oceanCount, sum(IF(transport_type = '空运', count, 0)) as airCount,
sum(case when transport_type = '空运' then count else 0 end) as airCount, sum(IF(transport_type = '铁路运输', count, 0)) as railwayCount
sum(case when transport_type = '铁路运输' then count else 0 end) as railwayCount FROM (
FROM SELECT tb5.bailun_sku bailun_sku,
( tb5.warehouse_code warehouse_code,
SELECT (
tb5.bailun_sku bailun_sku, tb5.count - IFNULL(tb4.count, 0)) AS count,
tb5.warehouse_code warehouse_code, 0 as countplan,
( tb5.transport_type transport_type
tb5.count - IFNULL( tb4.count, 0 )) AS count, FROM (
0 as countplan, SELECT tb1.bailun_sku,
tb5.transport_type transport_type tb1.warehouse_code,
FROM sum(tb1.count) count,
( tb1.transport_type
SELECT FROM dc_base_transfer_bale tb1
tb1.bailun_sku, LEFT JOIN dc_base_transfer_complete tb2 ON tb1.transfer_order_id = tb2.transfer_order_id
tb1.warehouse_code, WHERE tb2.transfer_order_id IS NULL
sum( tb1.count ) count,
tb1.transport_type
FROM
dc_base_transfer_bale tb1
LEFT JOIN dc_base_transfer_complete tb2 ON tb1.transfer_order_id = tb2.transfer_order_id
WHERE
tb2.transfer_order_id IS NULL
AND tb1.deleted = 0 AND tb1.deleted = 0
GROUP BY GROUP BY bailun_sku,
bailun_sku, warehouse_code
warehouse_code
) tb5 ) tb5
LEFT JOIN ( LEFT JOIN (
SELECT SELECT bailun_sku,
bailun_sku,
warehouse_code, warehouse_code,
sum( count ) count sum(count) count
FROM FROM (
( SELECT t1.bailun_sku,
SELECT t1.warehouse_code,
t1.bailun_sku, (case WHEN t2.count > tbb.count then tbb.count else t2.count end) as count,
t1.warehouse_code, t1.transfer_order_id
(case WHEN t2.count > tbb.count then tbb.count else t2.count end) as count, FROM (SELECT max(create_time) AS create_time, bailun_sku, warehouse_code, transfer_order_id
t1.transfer_order_id FROM dc_base_transfer_inbound
FROM WHERE deleted = 0
( SELECT max( create_time ) AS create_time, bailun_sku, warehouse_code, transfer_order_id FROM dc_base_transfer_inbound WHERE deleted = 0 GROUP BY bailun_sku, warehouse_code, transfer_order_id ) t1 GROUP BY bailun_sku, warehouse_code, transfer_order_id) t1
INNER JOIN dc_base_transfer_inbound t2 ON t1.bailun_sku = t2.bailun_sku INNER JOIN dc_base_transfer_inbound t2 ON t1.bailun_sku = t2.bailun_sku
AND t1.warehouse_code = t2.warehouse_code AND t1.warehouse_code = t2.warehouse_code
AND t1.transfer_order_id = t2.transfer_order_id AND t1.transfer_order_id = t2.transfer_order_id
AND t1.create_time = t2.create_time AND t1.create_time = t2.create_time
LEFT JOIN dc_base_transfer_bale tbb on t1.bailun_sku = tbb.bailun_sku and t1.warehouse_code = tbb.warehouse_code and t1.transfer_order_id = tbb.transfer_order_id LEFT JOIN dc_base_transfer_bale tbb
LEFT JOIN dc_base_transfer_complete tb2 ON t1.transfer_order_id = tb2.transfer_order_id on t1.bailun_sku = tbb.bailun_sku and t1.warehouse_code = tbb.warehouse_code and
WHERE t1.transfer_order_id = tbb.transfer_order_id
tb2.bailun_sku IS NULL LEFT JOIN dc_base_transfer_complete tb2 ON t1.transfer_order_id = tb2.transfer_order_id
) tb3 WHERE tb2.bailun_sku IS NULL
GROUP BY ) tb3
bailun_sku, GROUP BY bailun_sku,
warehouse_code
) tb4 ON tb5.bailun_sku = tb4.bailun_sku
AND tb5.warehouse_code = tb4.warehouse_code
WHERE (
tb5.count - IFNULL(tb4.count, 0)) > 0
UNION ALL
SELECT bailun_sku,
warehouse_code,
sum(count) AS count,
sum(count) AS countplan,
transport_type
FROM dc_base_transfer_plan
WHERE STATUS = 1
AND deleted = 0
GROUP BY bailun_sku,
warehouse_code warehouse_code
) tb4 ON tb5.bailun_sku = tb4.bailun_sku ) t
AND tb5.warehouse_code = tb4.warehouse_code GROUP BY bailun_sku,
WHERE warehouse_code
(
tb5.count - IFNULL( tb4.count, 0 )) > 0 UNION ALL
SELECT
bailun_sku,
warehouse_code,
sum( count ) AS count,
sum( count ) AS countplan,
transport_type
FROM
dc_base_transfer_plan
WHERE
STATUS = 1
AND deleted = 0
GROUP BY
bailun_sku,
warehouse_code
) t
GROUP BY
bailun_sku,
warehouse_code
</select> </select>
<insert id="calculateTransferTransit"> <insert id="calculateTransferTransit">
...@@ -685,8 +671,11 @@ ...@@ -685,8 +671,11 @@
) )
</foreach> </foreach>
ON DUPLICATE KEY UPDATE quantity_transfer = values(quantity_transfer), ON DUPLICATE KEY UPDATE quantity_transfer = values(quantity_transfer),
quantity_transfer_plan = values(quantity_transfer_plan), quantity_transfer_plan = values(quantity_transfer_plan),
quantity_land_transfer = values(quantity_land_transfer),quantity_ocean_transfer = values(quantity_ocean_transfer),quantity_air_transfer = values(quantity_air_transfer),quantity_railway_transfer = values(quantity_railway_transfer), quantity_land_transfer = values(quantity_land_transfer),
quantity_ocean_transfer = values(quantity_ocean_transfer),
quantity_air_transfer = values(quantity_air_transfer),
quantity_railway_transfer = values(quantity_railway_transfer),
gmt_transfer_modified = values(gmt_transfer_modified) gmt_transfer_modified = values(gmt_transfer_modified)
</insert> </insert>
...@@ -709,7 +698,7 @@ ...@@ -709,7 +698,7 @@
#{item.bailunSku,jdbcType=VARCHAR}, #{item.warehouseCode,jdbcType=VARCHAR}, #{item.quantityOutStock,jdbcType=INTEGER}, #{localDateTime,jdbcType=TIMESTAMP}, #{item.aliexpressQuantity, jdbcType=INTEGER} #{item.bailunSku,jdbcType=VARCHAR}, #{item.warehouseCode,jdbcType=VARCHAR}, #{item.quantityOutStock,jdbcType=INTEGER}, #{localDateTime,jdbcType=TIMESTAMP}, #{item.aliexpressQuantity, jdbcType=INTEGER}
) )
</foreach> </foreach>
ON DUPLICATE KEY UPDATE quantity_out_stock = values(quantity_out_stock) ,gmt_out_stock_modified = values(gmt_out_stock_modified), quantity_out_stock_aliexpress = values(quantity_out_stock_aliexpress) ON DUPLICATE KEY UPDATE quantity_out_stock = values(quantity_out_stock) ,gmt_out_stock_modified = values(gmt_out_stock_modified), quantity_out_stock_aliexpress = values(quantity_out_stock_aliexpress)
</insert> </insert>
<insert id="insertMidDailyTransit"> <insert id="insertMidDailyTransit">
...@@ -894,4 +883,4 @@ ...@@ -894,4 +883,4 @@
WHERE (t1.bailun_sku_quantity_ordered - t1.bailun_sku_quantity_shipped) >= 0 WHERE (t1.bailun_sku_quantity_ordered - t1.bailun_sku_quantity_shipped) >= 0
ON DUPLICATE KEY UPDATE quantity_unshipped = VALUES(quantity_unshipped),gmt_unshipped_modified = VALUES(gmt_unshipped_modified),bailun_order_ids = VALUES(bailun_order_ids) ON DUPLICATE KEY UPDATE quantity_unshipped = VALUES(quantity_unshipped),gmt_unshipped_modified = VALUES(gmt_unshipped_modified),bailun_order_ids = VALUES(bailun_order_ids)
</insert> </insert>
</mapper> </mapper>
\ No newline at end of file
...@@ -34,3 +34,5 @@ ...@@ -34,3 +34,5 @@
</root> </root>
</configuration> </configuration>
...@@ -51,7 +51,14 @@ public class CalculateCostFirstJob extends PointJob { ...@@ -51,7 +51,14 @@ public class CalculateCostFirstJob extends PointJob {
if (channelOrderIdList != null && channelOrderIdList.size() > 0) { if (channelOrderIdList != null && channelOrderIdList.size() > 0) {
for (CostFirstOrder costFirstOrder : channelOrderIdList) { for (CostFirstOrder costFirstOrder : channelOrderIdList) {
DcBaseCostFirstMapper dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class); DcBaseCostFirstMapper dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
List<DcBaseCostFirst> dcBaseCostFirsts = dcBaseCostFirstMapperFor.selectByExample(DcBaseCostFirstExample.newAndCreateCriteria().andChannelOrderIdEqualTo(costFirstOrder.getChannelOrderId()).andTransferOrderIdEqualTo(costFirstOrder.getTransferOrderId()).andBoxIdEqualTo(costFirstOrder.getBoxId()).andWarehouseCodeEqualTo(costFirstOrder.getWarehouseCode()).andHasCalculationEqualTo(false).example()); List<DcBaseCostFirst> dcBaseCostFirsts = dcBaseCostFirstMapperFor.selectByExample(DcBaseCostFirstExample.newAndCreateCriteria()
.andChannelOrderIdEqualTo(costFirstOrder.getChannelOrderId())
.andTransferOrderIdEqualTo(costFirstOrder.getTransferOrderId())
.andBoxIdEqualTo(costFirstOrder.getBoxId())
.andWarehouseCodeEqualTo(costFirstOrder.getWarehouseCode())
.andHasCalculationEqualTo(false)
.example());
handleChannelOrderSku(dcBaseCostFirsts); handleChannelOrderSku(dcBaseCostFirsts);
dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class); dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
dcBaseCostFirstMapperFor.updateHasCalculation(costFirstOrder); dcBaseCostFirstMapperFor.updateHasCalculation(costFirstOrder);
...@@ -95,7 +102,9 @@ public class CalculateCostFirstJob extends PointJob { ...@@ -95,7 +102,9 @@ public class CalculateCostFirstJob extends PointJob {
// 头程费 = (调拨计算头程费+配置头程费)/2 平均值 // 头程费 = (调拨计算头程费+配置头程费)/2 平均值
dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN)); dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN));
}*/ }*/
int i = dcMidCostFirsMapper.updateByExampleSelective(dcMidCostFirst, DcMidCostFirstExample.newAndCreateCriteria().andBailunSkuEqualTo(dcMidCostFirst.getBailunSku()).andWarehouseCodeEqualTo(dcMidCostFirst.getWarehouseCode()).example()); int i = dcMidCostFirsMapper.updateByExampleSelective(dcMidCostFirst, DcMidCostFirstExample.newAndCreateCriteria()
.andBailunSkuEqualTo(dcMidCostFirst.getBailunSku())
.andWarehouseCodeEqualTo(dcMidCostFirst.getWarehouseCode()).example());
if (i == 0) { if (i == 0) {
dcMidCostFirsMapper.insertSelective(dcMidCostFirst); dcMidCostFirsMapper.insertSelective(dcMidCostFirst);
} }
......
#EVENT_RDB_STORAGE_DRIVER=com.mysql.jdbc.Driver
#EVENT_RDB_STORAGE_URL=jdbc:mysql://192.168.6.140:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
#EVENT_RDB_STORAGE_USERNAME=root
#EVENT_RDB_STORAGE_PASSWORD=123456
#ZOOKEEPER_SERVER=127.0.0.1:2181
EVENT_RDB_STORAGE_DRIVER=com.mysql.jdbc.Driver EVENT_RDB_STORAGE_DRIVER=com.mysql.jdbc.Driver
EVENT_RDB_STORAGE_URL=jdbc:mysql://10.0.8.15:3306/bailun_datacenter?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 EVENT_RDB_STORAGE_URL=jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
EVENT_RDB_STORAGE_USERNAME=root EVENT_RDB_STORAGE_USERNAME=root
EVENT_RDB_STORAGE_PASSWORD=#7kfnymAM$Y9-Ntf EVENT_RDB_STORAGE_PASSWORD=123456
ZOOKEEPER_SERVER=172.31.255.120:2181 ZOOKEEPER_SERVER=127.0.0.1:2181
#EVENT_RDB_STORAGE_DRIVER=com.mysql.jdbc.Driver
#EVENT_RDB_STORAGE_URL=jdbc:mysql://10.0.8.15:3306/bailun_datacenter?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#EVENT_RDB_STORAGE_USERNAME=root
#EVENT_RDB_STORAGE_PASSWORD=#7kfnymAM$Y9-Ntf
#ZOOKEEPER_SERVER=172.31.255.120:2181
NAME_SPACE=data-center NAME_SPACE=data-center
JOB_NAME=mid-calculate-cost-first JOB_NAME=mid-calculate-cost-first
JOB_CRON=0 33 7,12,20 * * ? * JOB_CRON=0 33 7,12,20 * * ? *
SHARDING_TOTAL_COUNT=1 SHARDING_TOTAL_COUNT=1
\ No newline at end of file
import com.bailuntec.domain.constant.Constant; import com.bailuntec.domain.constant.Constant;
import com.bailuntec.domain.entity.DcBaseCostFirst;
import com.bailuntec.domain.entity.DcBaseSku; import com.bailuntec.domain.entity.DcBaseSku;
import com.bailuntec.domain.entity.DcMidCostFirst; import com.bailuntec.domain.entity.DcMidCostFirst;
import com.bailuntec.domain.entity.DcMidCostFirstConfig; import com.bailuntec.domain.entity.DcMidCostFirstConfig;
import com.bailuntec.domain.example.DcBaseCostFirstExample; import com.bailuntec.domain.entity.JobPointLog;
import com.bailuntec.domain.example.DcBaseSkuExample; import com.bailuntec.domain.example.DcBaseSkuExample;
import com.bailuntec.domain.example.DcMidCostFirstExample; import com.bailuntec.domain.example.DcMidCostFirstExample;
import com.bailuntec.domain.pojo.CostFirstOrder;
import com.bailuntec.domain.pojo.MidCostFirst; import com.bailuntec.domain.pojo.MidCostFirst;
import com.bailuntec.job.CalculateCostFirstJob; import com.bailuntec.job.CalculateCostFirstJob;
import com.bailuntec.listener.CalculateCostFirstListener; import com.bailuntec.mapper.DcBaseSkuMapper;
import com.bailuntec.mapper.*; import com.bailuntec.mapper.DcMidCostFirstConfigMapper;
import com.bailuntec.mapper.DcMidCostFirstMapper;
import com.bailuntec.mapper.DcMidCostFirstOrderMapper;
import com.bailuntec.utils.SessionUtil; import com.bailuntec.utils.SessionUtil;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -22,8 +22,7 @@ public class CostFirstTest { ...@@ -22,8 +22,7 @@ public class CostFirstTest {
@Test @Test
public void test11() public void test11() {
{
try { try {
DcBaseSkuMapper dcBaseSkuMapper = SessionUtil.getSession().getMapper(DcBaseSkuMapper.class); DcBaseSkuMapper dcBaseSkuMapper = SessionUtil.getSession().getMapper(DcBaseSkuMapper.class);
DcBaseSku dcBaseSku = dcBaseSkuMapper.selectOneByExample(DcBaseSkuExample.newAndCreateCriteria().andBailunSkuEqualTo("S31").example()); DcBaseSku dcBaseSku = dcBaseSkuMapper.selectOneByExample(DcBaseSkuExample.newAndCreateCriteria().andBailunSkuEqualTo("S31").example());
...@@ -38,30 +37,11 @@ public class CostFirstTest { ...@@ -38,30 +37,11 @@ public class CostFirstTest {
@Test @Test
public void test() { public void test() {
CalculateCostFirstJob costFirstJob = new CalculateCostFirstJob(); CalculateCostFirstJob costFirstJob = new CalculateCostFirstJob();
try { costFirstJob.executeJob(null, new JobPointLog("dc-mid-calculate-cost-first", 1, 100, null, null, null, null));
DcBaseCostFirstMapper dcBaseCostFirstMapper = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
//拿到物流单号, 将物流单中每个SKU的费用算出来
List<CostFirstOrder> channelOrderIdList = dcBaseCostFirstMapper.listChannelOrderId(0, 1);
if (channelOrderIdList != null && channelOrderIdList.size() > 0) {
for (CostFirstOrder costFirstOrder : channelOrderIdList) {
costFirstOrder.setChannelOrderId("GZQY20190412 ");
costFirstOrder.setTransferOrderId("DB190412112032208");
DcBaseCostFirstMapper dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
List<DcBaseCostFirst> dcBaseCostFirsts = dcBaseCostFirstMapperFor.selectByExample(DcBaseCostFirstExample.newAndCreateCriteria().andChannelOrderIdEqualTo(costFirstOrder.getChannelOrderId()).andTransferOrderIdEqualTo(costFirstOrder.getTransferOrderId()).example());
costFirstJob.handleChannelOrderSku(dcBaseCostFirsts);
}
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("MYBATIS操作DB失败", e);
} finally {
SessionUtil.closeSession();
}
CalculateCostFirstListener calculateCostFirstListener = new CalculateCostFirstListener();
calculateCostFirstListener.afterJobExecuted(null);
} }
@Test @Test
public void test1() { public void test1() {
try { try {
DcMidCostFirstOrderMapper dcMidCostFirstOrderMapper = SessionUtil.getSession().getMapper(DcMidCostFirstOrderMapper.class); DcMidCostFirstOrderMapper dcMidCostFirstOrderMapper = SessionUtil.getSession().getMapper(DcMidCostFirstOrderMapper.class);
DcMidCostFirstConfigMapper dcMidCostFirstConfigMapper = SessionUtil.getSession().getMapper(DcMidCostFirstConfigMapper.class); DcMidCostFirstConfigMapper dcMidCostFirstConfigMapper = SessionUtil.getSession().getMapper(DcMidCostFirstConfigMapper.class);
...@@ -70,14 +50,14 @@ public class CostFirstTest { ...@@ -70,14 +50,14 @@ public class CostFirstTest {
int skuWarehouseTotalPage = getSkuWarehouseTotalPage(countSkuWarehouse); int skuWarehouseTotalPage = getSkuWarehouseTotalPage(countSkuWarehouse);
int index = 0; int index = 0;
do { do {
List<MidCostFirst> midCostFirstList = dcMidCostFirstOrderMapper.listSkuWarehouse(index * Constant.PAGE_SIZE,Constant.PAGE_SIZE); List<MidCostFirst> midCostFirstList = dcMidCostFirstOrderMapper.listSkuWarehouse(index * Constant.PAGE_SIZE, Constant.PAGE_SIZE);
if (midCostFirstList != null && midCostFirstList.size() > 0) { if (midCostFirstList != null && midCostFirstList.size() > 0) {
DcMidCostFirst dcMidCostFirst = new DcMidCostFirst(); DcMidCostFirst dcMidCostFirst = new DcMidCostFirst();
for (MidCostFirst midCostFirst : midCostFirstList) { for (MidCostFirst midCostFirst : midCostFirstList) {
dcMidCostFirst.setBailunSku(midCostFirst.getBailunSku()); dcMidCostFirst.setBailunSku(midCostFirst.getBailunSku());
dcMidCostFirst.setWarehouseCode(midCostFirst.getWarehouseCode()); dcMidCostFirst.setWarehouseCode(midCostFirst.getWarehouseCode());
BigDecimal costFirst = midCostFirst.getTotalCostFirst().divide(BigDecimal.valueOf(midCostFirst.getTotalCount()), 3 , RoundingMode.HALF_EVEN); BigDecimal costFirst = midCostFirst.getTotalCostFirst().divide(BigDecimal.valueOf(midCostFirst.getTotalCount()), 3, RoundingMode.HALF_EVEN);
DcMidCostFirstConfig dcMidCostFirstConfig = dcMidCostFirstConfigMapper.getConfig(dcMidCostFirst.getBailunSku(),dcMidCostFirst.getWarehouseCode()); DcMidCostFirstConfig dcMidCostFirstConfig = dcMidCostFirstConfigMapper.getConfig(dcMidCostFirst.getBailunSku(), dcMidCostFirst.getWarehouseCode());
dcMidCostFirst.setCostFirst(costFirst); dcMidCostFirst.setCostFirst(costFirst);
if (dcMidCostFirstConfig != null) { if (dcMidCostFirstConfig != null) {
dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN)); dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN));
...@@ -96,6 +76,7 @@ public class CostFirstTest { ...@@ -96,6 +76,7 @@ public class CostFirstTest {
SessionUtil.closeSession(); SessionUtil.closeSession();
} }
} }
private int getSkuWarehouseTotalPage(int countSkuWarehouse) { private int getSkuWarehouseTotalPage(int countSkuWarehouse) {
if (countSkuWarehouse % Constant.PAGE_SIZE == 0) { if (countSkuWarehouse % Constant.PAGE_SIZE == 0) {
return countSkuWarehouse / Constant.PAGE_SIZE; return countSkuWarehouse / Constant.PAGE_SIZE;
......
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