Commit 0890ff47 by wutong

优化代码

parent 666cbde3
......@@ -35,43 +35,32 @@ public class EbayFinanceSyncJob extends PointJob {
@Override
public void executeJob(ShardingContext shardingContext, JobPointLog jobPointLog) {
try {
int totalPage = getTotalPage(jobPointLog);//分片即将处理的账号总数
try {
JobAccountLogMapper jobAccountLogMapper = SessionUtil.getSession().getMapper(JobAccountLogMapper.class);
int totalPage = getTotalPage(jobPointLog);
/*
* 根据不同分片
* 再分页去处理数据
* 再分页去拿不同的账号执行任务
*/
int shardingSize = totalPage % shardingContext.getShardingTotalCount() == 0 ? totalPage / shardingContext.getShardingTotalCount() : totalPage / shardingContext.getShardingTotalCount() + 1;
if (shardingContext.getShardingItem() + 1 < shardingContext.getShardingTotalCount()) {
totalPage = shardingSize * (shardingContext.getShardingItem() + 1);
}
int page = 0;
if (shardingContext.getShardingItem() > 0) {
page = shardingSize * shardingContext.getShardingItem();
}
do {
//拿到账号和任务信息去调接口
List<JobAccountLog> listByPage = jobAccountLogMapper.getListByPage(12,page * jobPointLog.getPageSize(), jobPointLog.getPageSize());
if (listByPage != null && listByPage.size() > 0) {
for (JobAccountLog jobAccountLog : listByPage) {
log.warn("分片: " + shardingContext.getShardingItem() + " 账号: " + jobAccountLog);
if (jobAccountLog.getId() == null) { //在任务表无记录
BeanUtils.copyProperties(jobAccountLog, jobPointLog);
jobAccountLog.setId(null);
}
callSaasApi(jobAccountLog);
if (jobAccountLog.getId() == null) { //在任务表无记录
jobAccountLogMapper.insertSelective(jobAccountLog);
} else {
jobAccountLog.setBjModified(LocalDateTime.now());
jobAccountLogMapper.updateByExampleSelective(jobAccountLog,JobAccountLogExample.newAndCreateCriteria().andAccountIdEqualTo(jobAccountLog.getAccountId()).andJobNameEqualTo(jobAccountLog.getJobName()).example());
}
int pageSize = totalPage % shardingContext.getShardingTotalCount() == 0? totalPage / shardingContext.getShardingTotalCount() : totalPage / shardingContext.getShardingTotalCount() + 1;
//拿到账号集合
List<JobAccountLog> listByPage = jobAccountLogMapper.getListByPage(12,pageSize * shardingContext.getShardingItem(), pageSize);
if (listByPage != null && listByPage.size() > 0) {
for (JobAccountLog jobAccountLog : listByPage) {
log.warn("分片: " + shardingContext.getShardingItem() + " 账号: " + jobAccountLog);
if (jobAccountLog.getId() == null) { //在任务表无记录
BeanUtils.copyProperties(jobAccountLog, jobPointLog);
jobAccountLog.setId(null);
}
callSaasApi(jobAccountLog);
if (jobAccountLog.getId() == null) { //在任务表无记录
jobAccountLogMapper.insertSelective(jobAccountLog);
} else {
jobAccountLog.setBjModified(LocalDateTime.now());
jobAccountLogMapper.updateByExampleSelective(jobAccountLog,JobAccountLogExample.newAndCreateCriteria().andAccountIdEqualTo(jobAccountLog.getAccountId()).andJobNameEqualTo(jobAccountLog.getJobName()).example());
}
}
page++;
} while (page <= totalPage);
}
} catch (Exception e) {
e.printStackTrace();
log.warn("Ebay定时同步费用接口错误",e);
......@@ -80,10 +69,17 @@ public class EbayFinanceSyncJob extends PointJob {
}
}
private int getTotalPage(JobPointLog jobPointLog) throws Exception {
DcBaseCompanyAccountMapper accountMapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class);
int l = (int)accountMapper.countByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andPlatformIdEqualTo(12).example());
return l % jobPointLog.getPageSize() == 0? l % jobPointLog.getPageSize() : l % jobPointLog.getPageSize() + 1;
private int getTotalPage(JobPointLog jobPointLog) {
int i = 0;
try {
DcBaseCompanyAccountMapper accountMapper = SessionUtil.getSession().getMapper(DcBaseCompanyAccountMapper.class);
i = (int)accountMapper.countByExample(DcBaseCompanyAccountExample.newAndCreateCriteria().andPlatformIdEqualTo(12).example());
} catch (Exception e) {
e.printStackTrace();
} finally {
SessionUtil.closeSession();
}
return i % jobPointLog.getPageSize() == 0? i / jobPointLog.getPageSize() : i / jobPointLog.getPageSize() + 1;
}
public void callSaasApi(JobAccountLog job) {
......
......@@ -14,7 +14,7 @@ public class EbayFinanceSyncJobTest {
public void test3() {
EbayFinanceSyncJob skuSyncJob = new EbayFinanceSyncJob();
ShardingContext job = new ShardingContext(new ShardingContexts("1", "job", 3, "", new HashMap<>()), 1);
skuSyncJob.executeJob(job, new JobPointLog("",1 ,100,1,1, LocalDateTime.now().minusMonths(1),LocalDateTime.now().minusDays(29)));
skuSyncJob.executeJob(job, new JobPointLog("",null ,100,1,1, LocalDateTime.now().minusMonths(1),LocalDateTime.now().minusDays(29)));
}
......
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