|
|
@@ -23,18 +23,15 @@ import java.util.*; |
|
|
public class DaliyAmountSchedule { |
|
|
public class DaliyAmountSchedule { |
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass()); |
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private WxMallMapper wxMallMapper; |
|
|
private WxMallMapper wxMallMapper; |
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private WxMerchantMapper wxMerchantMapper; |
|
|
private WxMerchantMapper wxMerchantMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private WxCouponOrderMapper wxCouponOrderMapper; |
|
|
private WxCouponOrderMapper wxCouponOrderMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private WxDateAmountRecordService wxDateAmountRecordService; |
|
|
private WxDateAmountRecordService wxDateAmountRecordService; |
|
|
|
|
|
|
|
|
@@ -42,13 +39,64 @@ public class DaliyAmountSchedule { |
|
|
private WxOrderMapper wxOrderMapper; |
|
|
private WxOrderMapper wxOrderMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点盘点前一天的数据 |
|
|
|
|
|
// @Scheduled(cron = "*/30 * * * * ?") // 测试10秒中一次 |
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
public void daliyAmountSchedule() { |
|
|
|
|
|
|
|
|
public void daliyAmountMerchant(Date startDate,Date endDate,Calendar cal,WxMerchant merchant){ |
|
|
|
|
|
Map dateMap = new HashMap(); |
|
|
|
|
|
dateMap.put("startDate", startDate); |
|
|
|
|
|
dateMap.put("endDate", endDate); |
|
|
|
|
|
dateMap.put("merchantId", merchant.getId()); |
|
|
|
|
|
|
|
|
|
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap); |
|
|
|
|
|
logger.info("find " + list.size() + " coupon order from " + startDate + " to " + endDate); |
|
|
|
|
|
int total_price = list.stream().mapToInt(p -> p.getCouponPrice()).sum(); |
|
|
|
|
|
|
|
|
|
|
|
logger.info("\nFound " + list.size() + " coupon orders \n" + |
|
|
|
|
|
"for merchantId:" + merchant.getId() + "\n" + |
|
|
|
|
|
"from " + startDate + " to " + endDate + "\n" + |
|
|
|
|
|
"TOTAL ORDER=" + total_price); |
|
|
|
|
|
|
|
|
|
|
|
WxDateAmountRecord dateAmountRecord = new WxDateAmountRecord(); |
|
|
|
|
|
dateAmountRecord.setPayPrice(total_price); |
|
|
|
|
|
dateAmountRecord.setMerchantId(merchant.getId()); |
|
|
|
|
|
dateAmountRecord.setTenantId(merchant.getTenantId()); |
|
|
|
|
|
dateAmountRecord.setType(EnumDateAmtType.PAY_RECORD.getCode()); |
|
|
|
|
|
dateAmountRecord.setDate(startDate); |
|
|
|
|
|
dateAmountRecord.setDayOfWeek(cal.get(Calendar.DAY_OF_WEEK)); |
|
|
|
|
|
dateAmountRecord.setMonth(cal.get(Calendar.MONTH)); |
|
|
|
|
|
dateAmountRecord.setWeekOfYear(cal.get(Calendar.WEEK_OF_YEAR)); |
|
|
|
|
|
|
|
|
|
|
|
wxDateAmountRecordService.saveAmount(dateAmountRecord); |
|
|
|
|
|
|
|
|
|
|
|
list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); |
|
|
|
|
|
logger.info("\nfind " + list.size() + " coupon order from " + startDate + " to " + endDate); |
|
|
|
|
|
total_price = list.stream().mapToInt(p -> p.getCouponPrice()).sum(); |
|
|
|
|
|
logger.info("\nFound " + list.size() + " coupon orders \n" + |
|
|
|
|
|
"for merchantId:" + merchant.getId() + "\n" + |
|
|
|
|
|
"from " + startDate + " to " + endDate + "\n" + |
|
|
|
|
|
"TOTAL VERIFIED=" + total_price); |
|
|
|
|
|
|
|
|
|
|
|
dateAmountRecord.setPayPrice(total_price); |
|
|
|
|
|
dateAmountRecord.setType(EnumDateAmtType.VERIFY_RECORD.getCode()); |
|
|
|
|
|
wxDateAmountRecordService.saveAmount(dateAmountRecord); |
|
|
|
|
|
|
|
|
|
|
|
Map microPayMap = wxOrderMapper.dayMicroPayAmountList(dateMap); |
|
|
|
|
|
Long countMic = (Long) microPayMap.get("count"); |
|
|
|
|
|
BigDecimal totalPriceMic = (BigDecimal) microPayMap.get("total_price"); |
|
|
|
|
|
logger.info("\nFound " + countMic + " order " + "\n" + |
|
|
|
|
|
"for merchantId:" + merchant.getId() + "\n" + |
|
|
|
|
|
"from " + startDate + " to " + endDate + "\n" + |
|
|
|
|
|
"TOTAL Payment=" + totalPriceMic); |
|
|
|
|
|
|
|
|
|
|
|
dateAmountRecord.setPayPrice(totalPriceMic.intValue()); |
|
|
|
|
|
dateAmountRecord.setType(EnumDateAmtType.MICROPAY_RECORD.getCode()); |
|
|
|
|
|
wxDateAmountRecordService.saveAmount(dateAmountRecord); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点盘点前一天的数据 |
|
|
|
|
|
//@Scheduled(cron = "*/30 * * * * ?") // 测试10秒中一次 |
|
|
|
|
|
public void daliyAmountSchedule() { |
|
|
List<WxMall> mallList = wxMallMapper.findList(new WxMall()); |
|
|
List<WxMall> mallList = wxMallMapper.findList(new WxMall()); |
|
|
|
|
|
|
|
|
if (mallList.size()==0) { |
|
|
if (mallList.size()==0) { |
|
|
@@ -56,16 +104,15 @@ public class DaliyAmountSchedule { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
for (int i=0; i < mallList.size(); i++) { |
|
|
|
|
|
|
|
|
|
|
|
WxMerchant merchant = new WxMerchant(); |
|
|
|
|
|
merchant.setTenantId(mallList.get(i).getTenantId()); |
|
|
|
|
|
merchant.setStatus(EnumMerchantStatus.VALID.getCode()); |
|
|
|
|
|
List<WxMerchant> merchantList = wxMerchantMapper.findList(merchant); |
|
|
|
|
|
|
|
|
mallList.stream().forEach(mall->{ |
|
|
|
|
|
WxMerchant merchantQ = new WxMerchant(); |
|
|
|
|
|
merchantQ.setTenantId(mall.getTenantId()); |
|
|
|
|
|
merchantQ.setStatus(EnumMerchantStatus.VALID.getCode()); |
|
|
|
|
|
List<WxMerchant> merchantList = wxMerchantMapper.findList(merchantQ); |
|
|
|
|
|
|
|
|
if (merchantList.size()==0) { |
|
|
if (merchantList.size()==0) { |
|
|
logger.info("No merchant info found in mall" + mallList.get(i).getName()); |
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
logger.info("No merchant info found in mall" + mall.getName()); |
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 时间选择 |
|
|
// 时间选择 |
|
|
@@ -76,65 +123,23 @@ public class DaliyAmountSchedule { |
|
|
cal.set(Calendar.SECOND, 0); |
|
|
cal.set(Calendar.SECOND, 0); |
|
|
cal.set(Calendar.MILLISECOND, 0); |
|
|
cal.set(Calendar.MILLISECOND, 0); |
|
|
|
|
|
|
|
|
cal.add(Calendar.DAY_OF_YEAR, 0); |
|
|
|
|
|
Date endDate = cal.getTime(); |
|
|
|
|
|
cal.add(Calendar.DAY_OF_YEAR, -1); |
|
|
|
|
|
Date startDate = cal.getTime(); |
|
|
|
|
|
|
|
|
|
|
|
for (int j=0; j < merchantList.size(); j++) { |
|
|
|
|
|
merchant = merchantList.get(j); |
|
|
|
|
|
|
|
|
|
|
|
Map dateMap = new HashMap(); |
|
|
|
|
|
dateMap.put("startDate", startDate); |
|
|
|
|
|
dateMap.put("endDate", endDate); |
|
|
|
|
|
dateMap.put("merchantId",merchant.getId()); |
|
|
|
|
|
|
|
|
|
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap); |
|
|
|
|
|
logger.info("find " + list.size() + " coupon order from " + startDate + " to " + endDate); |
|
|
|
|
|
int total_price = list.stream().mapToInt(p->p.getCouponPrice()).sum(); |
|
|
|
|
|
|
|
|
|
|
|
logger.info("\nFound " + list.size() + " coupon orders \n" + |
|
|
|
|
|
"for merchantId:" + merchant.getId() + "\n" + |
|
|
|
|
|
"from " + startDate + " to " + endDate +"\n" + |
|
|
|
|
|
"TOTAL ORDER=" + total_price); |
|
|
|
|
|
|
|
|
|
|
|
WxDateAmountRecord dateAmountRecord = new WxDateAmountRecord(); |
|
|
|
|
|
dateAmountRecord.setPayPrice(total_price); |
|
|
|
|
|
dateAmountRecord.setMerchantId(merchant.getId()); |
|
|
|
|
|
dateAmountRecord.setTenantId(merchant.getTenantId()); |
|
|
|
|
|
dateAmountRecord.setType(EnumDateAmtType.PAY_RECORD.getCode()); |
|
|
|
|
|
dateAmountRecord.setDate(startDate); |
|
|
|
|
|
dateAmountRecord.setDayOfWeek(cal.get(Calendar.DAY_OF_WEEK)); |
|
|
|
|
|
dateAmountRecord.setMonth(cal.get(Calendar.MONTH)); |
|
|
|
|
|
dateAmountRecord.setWeekOfYear(cal.get(Calendar.WEEK_OF_YEAR)); |
|
|
|
|
|
|
|
|
|
|
|
wxDateAmountRecordService.saveAmount(dateAmountRecord); |
|
|
|
|
|
|
|
|
|
|
|
list= wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); |
|
|
|
|
|
logger.info("\nfind " + list.size() + " coupon order from " + startDate + " to " + endDate); |
|
|
|
|
|
total_price = list.stream().mapToInt(p->p.getCouponPrice()).sum(); |
|
|
|
|
|
logger.info("\nFound " + list.size() + " coupon orders \n" + |
|
|
|
|
|
"for merchantId:" + merchant.getId() + "\n" + |
|
|
|
|
|
"from " + startDate + " to " + endDate +"\n" + |
|
|
|
|
|
"TOTAL VERIFIED=" + total_price); |
|
|
|
|
|
|
|
|
|
|
|
dateAmountRecord.setPayPrice(total_price); |
|
|
|
|
|
dateAmountRecord.setType(EnumDateAmtType.VERIFY_RECORD.getCode()); |
|
|
|
|
|
wxDateAmountRecordService.saveAmount(dateAmountRecord); |
|
|
|
|
|
|
|
|
|
|
|
Map microPayMap = wxOrderMapper.dayMicroPayAmountList(dateMap); |
|
|
|
|
|
Long countMic = (Long) microPayMap.get("count"); |
|
|
|
|
|
BigDecimal totalPriceMic = (BigDecimal) microPayMap.get("total_price"); |
|
|
|
|
|
logger.info("\nFound " + countMic + " order " + "\n" + |
|
|
|
|
|
"for merchantId:" + merchant.getId() + "\n" + |
|
|
|
|
|
"from " + startDate + " to " + endDate + "\n" + |
|
|
|
|
|
"TOTAL Payment=" + totalPriceMic); |
|
|
|
|
|
|
|
|
|
|
|
dateAmountRecord.setPayPrice(totalPriceMic.intValue()); |
|
|
|
|
|
dateAmountRecord.setType(EnumDateAmtType.MICROPAY_RECORD.getCode()); |
|
|
|
|
|
wxDateAmountRecordService.saveAmount(dateAmountRecord); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
int day = 0; //查找过去30天是否有漏记 |
|
|
|
|
|
do { |
|
|
|
|
|
|
|
|
|
|
|
cal.add(Calendar.DAY_OF_YEAR, 0); |
|
|
|
|
|
Date endDate = cal.getTime(); |
|
|
|
|
|
cal.add(Calendar.DAY_OF_YEAR, -1); |
|
|
|
|
|
Date startDate = cal.getTime(); |
|
|
|
|
|
|
|
|
|
|
|
merchantList.stream().filter(merchant->{ |
|
|
|
|
|
WxDateAmountRecord dateAmountRecordQ = new WxDateAmountRecord(); |
|
|
|
|
|
dateAmountRecordQ.setDate(startDate); |
|
|
|
|
|
dateAmountRecordQ.setMerchantId(merchant.getId()); |
|
|
|
|
|
return (wxDateAmountRecordService.listAsPage(dateAmountRecordQ,1,1).getList().size()==0); |
|
|
|
|
|
}).forEach(merchant -> { |
|
|
|
|
|
daliyAmountMerchant(startDate, endDate, cal, merchant); |
|
|
|
|
|
}); |
|
|
|
|
|
} while (day-- > -7); //补全最近7天的数据 |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |