package com.simple.schedule; import com.simple.common.IdWorker; import com.simple.domain.po.WxCouponOrder; import com.simple.domain.po.WxDateAmountRecord; import com.simple.domain.po.WxMall; import com.simple.domain.po.WxMerchant; import com.simple.mapper.*; import com.simple.service.WxDateAmountRecordService; import com.simple.utils.*; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Component public class DaliyAmountSchedule { private final Logger logger = Logger.getLogger(DaliyAmountSchedule.class); @Autowired private WxMallMapper wxMallMapper; @Autowired private WxMerchantMapper wxMerchantMapper; @Autowired private WxCouponOrderMapper wxCouponOrderMapper; @Autowired private WxDateAmountRecordService wxDateAmountRecordService; @Scheduled(cron = "0 0 23 * * ?") // 每天晚上11点盘点 //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void daliyAmountSchedule() { List mallList = wxMallMapper.findList(new WxMall()); if (mallList.size()==0) { logger.info("No Mall info found"); return; } for (int i=0; i < mallList.size(); i++) { WxMerchant merchant = new WxMerchant(); merchant.setTenantId(mallList.get(i).getTenantId()); List merchantList = wxMerchantMapper.findList(merchant); if (merchantList.size()==0) { logger.info("No merchant info found in mall" + mallList.get(i).getName()); continue; } for (int j=0; j < merchantList.size(); j++) { merchant = merchantList.get(j); Map dateMap = new HashMap(); SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); String dateString = fmt.format(new Date()); Date startDate = null; try { startDate = fmt.parse(dateString); } catch (ParseException e) { logger.error("Parse date string failed"); continue; } dateMap.put("startDate", startDate); dateMap.put("endDate", new Date()); dateMap.put("merchantID",merchant.getId()); List list = wxCouponOrderMapper.findListOfUnverifiedByDate(dateMap); logger.info("find " + list.size() + " coupon order from " + startDate + " to " + new Date()); int total_price = 0; for(WxCouponOrder couponOrder : list) { total_price = total_price + couponOrder.getCouponPrice(); } logger.info("\nFound " + list.size() + " coupon orders \n" + "for " + merchant.getId() + "\n" + "from " + startDate + " to " + new Date() +"\n" + "TOTAL ORDER=" + total_price); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); // 将时分秒,毫秒域清零 cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); now = cal.getTime(); WxDateAmountRecord dateAmountRecord = new WxDateAmountRecord(); dateAmountRecord.setId(IdWorker.get().nextId()); dateAmountRecord.setCreateDate(new Date()); dateAmountRecord.setUpdateDate(new Date()); dateAmountRecord.setPayPrice(total_price); dateAmountRecord.setMerchantId(merchant.getId()); dateAmountRecord.setTenantId(merchant.getTenantId()); dateAmountRecord.setType(0); dateAmountRecord.setDate(now); dateAmountRecord.setDayOfWeek(cal.get(Calendar.DAY_OF_WEEK)); dateAmountRecord.setMonth(cal.get(Calendar.MONTH)); dateAmountRecord.setWeekOfYear(cal.get(Calendar.WEEK_OF_YEAR)); wxDateAmountRecordService.saveDaliyAmount(dateAmountRecord); list= wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); logger.info("find " + list.size() + " coupon order from " + startDate + " to " + new Date()); total_price = 0; for(WxCouponOrder couponOrder : list) { total_price = total_price + couponOrder.getCouponPrice(); } logger.info("\nFound " + list.size() + " coupon orders \n" + "for " + merchant.getId() + "\n" + "from " + startDate + " to " + new Date() +"\n" + "TOTAL VERIFIED=" + total_price); dateAmountRecord.setId(IdWorker.get().nextId()); dateAmountRecord.setPayPrice(total_price); dateAmountRecord.setType(1); wxDateAmountRecordService.saveDaliyAmount(dateAmountRecord); } } } }