Commit 0890ff47 by wutong

优化代码

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