Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

138 строки
5.2 KiB

  1. package com.simple.schedule;
  2. import com.simple.common.IdWorker;
  3. import com.simple.domain.po.WxCouponOrder;
  4. import com.simple.domain.po.WxDateAmountRecord;
  5. import com.simple.domain.po.WxMall;
  6. import com.simple.domain.po.WxMerchant;
  7. import com.simple.mapper.*;
  8. import com.simple.service.WxDateAmountRecordService;
  9. import com.simple.utils.*;
  10. import org.apache.log4j.Logger;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.scheduling.annotation.Scheduled;
  13. import org.springframework.stereotype.Component;
  14. import java.text.ParseException;
  15. import java.text.SimpleDateFormat;
  16. import java.util.*;
  17. @Component
  18. public class DaliyAmountSchedule {
  19. private final Logger logger = Logger.getLogger(DaliyAmountSchedule.class);
  20. @Autowired
  21. private WxMallMapper wxMallMapper;
  22. @Autowired
  23. private WxMerchantMapper wxMerchantMapper;
  24. @Autowired
  25. private WxCouponOrderMapper wxCouponOrderMapper;
  26. @Autowired
  27. private WxDateAmountRecordService wxDateAmountRecordService;
  28. @Scheduled(cron = "0 0 23 * * ?") // 每天晚上11点盘点
  29. //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
  30. public void daliyAmountSchedule() {
  31. List<WxMall> mallList = wxMallMapper.findList(new WxMall());
  32. if (mallList.size()==0) {
  33. logger.info("No Mall info found");
  34. return;
  35. }
  36. for (int i=0; i < mallList.size(); i++) {
  37. WxMerchant merchant = new WxMerchant();
  38. merchant.setTenantId(mallList.get(i).getTenantId());
  39. List<WxMerchant> merchantList = wxMerchantMapper.findList(merchant);
  40. if (merchantList.size()==0) {
  41. logger.info("No merchant info found in mall" + mallList.get(i).getName());
  42. continue;
  43. }
  44. for (int j=0; j < merchantList.size(); j++) {
  45. merchant = merchantList.get(j);
  46. Map dateMap = new HashMap();
  47. SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
  48. String dateString = fmt.format(new Date());
  49. Date startDate = null;
  50. try {
  51. startDate = fmt.parse(dateString);
  52. } catch (ParseException e) {
  53. logger.error("Parse date string failed");
  54. continue;
  55. }
  56. dateMap.put("startDate", startDate);
  57. dateMap.put("endDate", new Date());
  58. dateMap.put("merchantID",merchant.getId());
  59. List<WxCouponOrder> list = wxCouponOrderMapper.findListOfUnverifiedByDate(dateMap);
  60. logger.info("find " + list.size() + " coupon order from " + startDate + " to " + new Date());
  61. int total_price = 0;
  62. for(WxCouponOrder couponOrder : list) {
  63. total_price = total_price + couponOrder.getCouponPrice();
  64. }
  65. logger.info("\nFound " + list.size() + " coupon orders \n" +
  66. "for " + merchant.getId() + "\n" +
  67. "from " + startDate + " to " + new Date() +"\n" +
  68. "TOTAL ORDER=" + total_price);
  69. Date now = new Date();
  70. Calendar cal = Calendar.getInstance();
  71. cal.setTime(now); // 将时分秒,毫秒域清零
  72. cal.set(Calendar.HOUR_OF_DAY, 0);
  73. cal.set(Calendar.MINUTE, 0);
  74. cal.set(Calendar.SECOND, 0);
  75. cal.set(Calendar.MILLISECOND, 0);
  76. now = cal.getTime();
  77. WxDateAmountRecord dateAmountRecord = new WxDateAmountRecord();
  78. dateAmountRecord.setId(IdWorker.get().nextId());
  79. dateAmountRecord.setCreateDate(new Date());
  80. dateAmountRecord.setUpdateDate(new Date());
  81. dateAmountRecord.setPayPrice(total_price);
  82. dateAmountRecord.setMerchantId(merchant.getId());
  83. dateAmountRecord.setTenantId(merchant.getTenantId());
  84. dateAmountRecord.setType(0);
  85. dateAmountRecord.setDate(now);
  86. dateAmountRecord.setDayOfWeek(cal.get(Calendar.DAY_OF_WEEK));
  87. dateAmountRecord.setMonth(cal.get(Calendar.MONTH));
  88. dateAmountRecord.setWeekOfYear(cal.get(Calendar.WEEK_OF_YEAR));
  89. wxDateAmountRecordService.saveDaliyAmount(dateAmountRecord);
  90. list= wxCouponOrderMapper.findListOfVerifiedByDate(dateMap);
  91. logger.info("find " + list.size() + " coupon order from " + startDate + " to " + new Date());
  92. total_price = 0;
  93. for(WxCouponOrder couponOrder : list) {
  94. total_price = total_price + couponOrder.getCouponPrice();
  95. }
  96. logger.info("\nFound " + list.size() + " coupon orders \n" +
  97. "for " + merchant.getId() + "\n" +
  98. "from " + startDate + " to " + new Date() +"\n" +
  99. "TOTAL VERIFIED=" + total_price);
  100. dateAmountRecord.setId(IdWorker.get().nextId());
  101. dateAmountRecord.setPayPrice(total_price);
  102. dateAmountRecord.setType(1);
  103. wxDateAmountRecordService.saveDaliyAmount(dateAmountRecord);
  104. }
  105. }
  106. }
  107. }