package com.yeshi.fanli.service.impl.statistic; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.statistic.OrderClassStatisticDao; import com.yeshi.fanli.entity.statistic.OrderClassStatistic; import com.yeshi.fanli.entity.taobao.PidUser; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.exception.TaoBaoOrderException; import com.yeshi.fanli.service.inter.statistic.OrderClassStatisticService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; @Service public class OrderClassStatisticServiceImpl implements OrderClassStatisticService { @Resource private OrderClassStatisticDao orderClassStatisticDao; @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; @Override public Map statisticOrderClass(long startTime, long endTime) { List config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); List list = new ArrayList<>(); try { list = TaoBaoOrderUtil.getOrderList(startTime, endTime, config.get(0)); } catch (TaoBaoOrderException e) { e.printStackTrace(); } Map map = new HashMap<>(); for (TaoBaoOrder order : list) { if (map.get(order.getClassName()) == null) map.put(order.getClassName(), 1); else map.put(order.getClassName(), map.get(order.getClassName()) + 1); } return map; } @Override public List statisticOrderClass(String day) { List list = new ArrayList<>(); long startTime = TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd"); Map map = statisticOrderClass(startTime, startTime + 1000 * 60 * 60 * 24L); Iterator its = map.keySet().iterator(); while (its.hasNext()) { String next = its.next(); OrderClassStatistic ocs = new OrderClassStatistic(); ocs.setClassName(next); ocs.setCount(map.get(next)); ocs.setDay(day); List olist = orderClassStatisticDao.list( "from OrderClassStatistic s where s.className=? and s.day=?", new Serializable[] { next, day }); if (olist == null || olist.size() <= 0) orderClassStatisticDao.create(ocs); list.add(ocs); } return list; } }