xinwei #54
@ -28,10 +28,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description 票务抽数服务
|
* @Description 票务抽数服务
|
||||||
@ -64,7 +61,7 @@ public class TicketDataMigration {
|
|||||||
int failedCount = 0;
|
int failedCount = 0;
|
||||||
int pageNumber = 1;
|
int pageNumber = 1;
|
||||||
XxlJobHelper.log("抽数服务:mysql销售数据开始抽数...");
|
XxlJobHelper.log("抽数服务:mysql销售数据开始抽数...");
|
||||||
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
||||||
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
||||||
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
||||||
@ -79,7 +76,7 @@ public class TicketDataMigration {
|
|||||||
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
||||||
// 处理剩余页的数据
|
// 处理剩余页的数据
|
||||||
for (; pageNumber <= totalPages; pageNumber++) {
|
for (; pageNumber <= totalPages; pageNumber++) {
|
||||||
ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
||||||
|
|
||||||
mapList = ticketingSamplingRespVO.getDataMapList();
|
mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 对最后一页进行处理,得到最后一页的实际条数
|
// 对最后一页进行处理,得到最后一页的实际条数
|
||||||
@ -103,7 +100,7 @@ public class TicketDataMigration {
|
|||||||
int failedCount = 0;
|
int failedCount = 0;
|
||||||
int pageNumber = 1;
|
int pageNumber = 1;
|
||||||
XxlJobHelper.log("抽数服务:mysql检票数据开始抽数...");
|
XxlJobHelper.log("抽数服务:mysql检票数据开始抽数...");
|
||||||
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
||||||
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
||||||
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
List<Map<String, Object>> mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
// 总条数小于等于每页条数 则直接按照总条数进行插入即可
|
||||||
@ -118,7 +115,7 @@ public class TicketDataMigration {
|
|||||||
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
||||||
// 处理剩余页的数据
|
// 处理剩余页的数据
|
||||||
for (; pageNumber <= totalPages; pageNumber++) {
|
for (; pageNumber <= totalPages; pageNumber++) {
|
||||||
ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getPreviousDayFormat(), pageNumber);
|
ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, TickingDateUtils.getNowDayFormat(), pageNumber);
|
||||||
mapList = ticketingSamplingRespVO.getDataMapList();
|
mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
// 对最后一页进行处理,得到最后一页的实际条数
|
// 对最后一页进行处理,得到最后一页的实际条数
|
||||||
if (pageNumber != totalPages) {
|
if (pageNumber != totalPages) {
|
||||||
@ -242,12 +239,13 @@ public class TicketDataMigration {
|
|||||||
}
|
}
|
||||||
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
|
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
|
||||||
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
|
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
|
||||||
XxlJobHelper.log("抽数服务:{}月{}日:检票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!",currentMonth,currentDay ,totalRows, duplicatesCount, successCount);
|
XxlJobHelper.log("抽数服务:{}月{}日:检票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!", currentMonth, currentDay, totalRows, duplicatesCount, successCount);
|
||||||
// 日期递增一天
|
// 日期递增一天
|
||||||
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
}
|
}
|
||||||
XxlJobHelper.log("抽数结束!!!");
|
XxlJobHelper.log("抽数结束!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@XxlJob("getSaleDataByMongoDBLastMonthToNow")
|
@XxlJob("getSaleDataByMongoDBLastMonthToNow")
|
||||||
public void getSaleDataByMongoDBLastMonthToNow() throws Exception {
|
public void getSaleDataByMongoDBLastMonthToNow() throws Exception {
|
||||||
XxlJobHelper.log("抽数服务:mongodb售票数据开始抽数...");
|
XxlJobHelper.log("抽数服务:mongodb售票数据开始抽数...");
|
||||||
@ -296,12 +294,92 @@ public class TicketDataMigration {
|
|||||||
}
|
}
|
||||||
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
|
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
|
||||||
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
|
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
|
||||||
XxlJobHelper.log("抽数服务:{}月{}日:售票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!",currentMonth,currentDay ,totalRows, duplicatesCount, successCount);
|
XxlJobHelper.log("抽数服务:{}月{}日:售票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!", currentMonth, currentDay, totalRows, duplicatesCount, successCount);
|
||||||
// 日期递增一天
|
// 日期递增一天
|
||||||
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
}
|
}
|
||||||
XxlJobHelper.log("抽数结束!!!");
|
XxlJobHelper.log("抽数结束!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于更新指定日期的检票或售票数据(mongodb)
|
||||||
|
*
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public String getTicketDataByTimeZonesToMongo(Calendar startDate, Calendar endDate, String method) throws Exception {
|
||||||
|
String methodName;
|
||||||
|
String respService;
|
||||||
|
String respMethod;
|
||||||
|
if ("checkTicket".equals(method)) {
|
||||||
|
methodName = "检票";
|
||||||
|
respService = CHECK_TICKET_SERVICE;
|
||||||
|
respMethod = CHECK_TICKET_METHOD;
|
||||||
|
} else if ("saleData".equals(method)) {
|
||||||
|
methodName = "售票";
|
||||||
|
respService = SALE_DATA_SERVICE;
|
||||||
|
respMethod = SALE_DATA_METHOD;
|
||||||
|
} else {
|
||||||
|
XxlJobHelper.log("服务名错误");
|
||||||
|
logger.error("服务名错误");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
StringJoiner result = new StringJoiner("\n");
|
||||||
|
XxlJobHelper.log("抽数服务:mongodb{}数据开始抽数...", methodName);
|
||||||
|
result.add("抽数服务:mongodb" + methodName + "数据开始抽数...");
|
||||||
|
int successCount;
|
||||||
|
int duplicatesCount;
|
||||||
|
int pageNumber;
|
||||||
|
|
||||||
|
// 循环从开始日期到结束日期
|
||||||
|
while (!startDate.after(endDate)) {
|
||||||
|
successCount = 0;
|
||||||
|
duplicatesCount = 0;
|
||||||
|
String dateString = TickingDateUtils.format(startDate.getTime());
|
||||||
|
pageNumber = 1;
|
||||||
|
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(respService, respMethod, dateString, pageNumber);
|
||||||
|
if (ticketingSamplingRespVO == null) {
|
||||||
|
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int totalRows = ticketingSamplingRespVO.getTotalRows();
|
||||||
|
List<Map<String, Object>> mapList;
|
||||||
|
|
||||||
|
// 获得总页数
|
||||||
|
int totalPages = ticketingSamplingRespVO.getTotalPages();
|
||||||
|
|
||||||
|
// 处理剩余页的数据
|
||||||
|
for (; pageNumber <= totalPages; pageNumber++) {
|
||||||
|
ticketingSamplingRespVO = this.getUrlResponseData(respService, respMethod, dateString, pageNumber);
|
||||||
|
mapList = ticketingSamplingRespVO.getDataMapList();
|
||||||
|
List<Integer> resultNum = null;
|
||||||
|
if ("checkTicket".equals(method)) {
|
||||||
|
resultNum = checkTicketService.insertByMongoDB(BeanUtils.toBean(mapList, CheckTicket.class));
|
||||||
|
} else if ("saleData".equals(method)) {
|
||||||
|
resultNum = saleDataService.insertByMongoDB(BeanUtils.toBean(mapList, SaleData.class));
|
||||||
|
}
|
||||||
|
if (resultNum == null) {
|
||||||
|
result.add("数据批量插入异常!");
|
||||||
|
} else {
|
||||||
|
successCount += resultNum.get(0);
|
||||||
|
duplicatesCount += resultNum.get(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int currentYear = startDate.get(Calendar.YEAR);
|
||||||
|
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
|
||||||
|
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
|
||||||
|
result.add(String.format("抽数服务:%d年%d月%d日:" + methodName + "数据抽数正常结束!总共:%d条数据,%d条数据重复,%d条数据插入成功!", currentYear, currentMonth, currentDay, totalRows, duplicatesCount, successCount));
|
||||||
|
XxlJobHelper.log("抽数服务:{}年{}月{}日:{}数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!", currentYear, currentMonth, currentDay, methodName, totalRows, duplicatesCount, successCount);
|
||||||
|
// 日期递增一天
|
||||||
|
startDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
|
}
|
||||||
|
result.add("抽数结束!!!");
|
||||||
|
logger.info(result.toString());
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插入销售数据的方法(mysql)
|
* 插入销售数据的方法(mysql)
|
||||||
*
|
*
|
||||||
@ -377,7 +455,7 @@ public class TicketDataMigration {
|
|||||||
XxlJobHelper.log("数据抽数失败,返回消息:" + ticketingSamplingRespVO.getRtnMsg());
|
XxlJobHelper.log("数据抽数失败,返回消息:" + ticketingSamplingRespVO.getRtnMsg());
|
||||||
XxlJobHelper.handleFail("数据抽数失败,请重试");
|
XxlJobHelper.handleFail("数据抽数失败,请重试");
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}else if (ticketingSamplingRespVO.getPageNumber() == null || ticketingSamplingRespVO.getPageSize() == null || ticketingSamplingRespVO.getTotalPages() == null || ticketingSamplingRespVO.getTotalRows() == null || ticketingSamplingRespVO.getDataMapList().isEmpty()){
|
} else if (ticketingSamplingRespVO.getPageNumber() == null || ticketingSamplingRespVO.getPageSize() == null || ticketingSamplingRespVO.getTotalPages() == null || ticketingSamplingRespVO.getTotalRows() == null || ticketingSamplingRespVO.getDataMapList().isEmpty()) {
|
||||||
XxlJobHelper.log("{},请求抽数成功,但返回参数值存在问题:{}", date, ticketingSamplingRespVO);
|
XxlJobHelper.log("{},请求抽数成功,但返回参数值存在问题:{}", date, ticketingSamplingRespVO);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user