package com.ibeetl.admin.console.service; import cn.hutool.core.bean.BeanUtil; import com.ibeetl.admin.console.dao.CuserConsoleDao; import com.ibeetl.admin.console.dao.StatisConsoleDao; import com.ibeetl.admin.console.model.PromoterModel; import com.ibeetl.admin.console.util.DateUtil; import com.ibeetl.admin.console.util.DoubleUtil; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.*; /** * 数据统计 */ @Service public class StatisConsoleService { @Autowired StatisConsoleDao statisConsoleDao; @Autowired CuserConsoleDao dao; final Base64 base64 = new Base64(); /** * 查询用户的经纬度 */ public Map queryLatAndLong(){ Map m = new HashMap<>(); m.put("data", statisConsoleDao.queryLatAndLong()); return m; } /** * 查询推广员的一些数据 * @param promoterModel */ public Map queryPromoterStatis(PromoterModel promoterModel){ List promoterModels = statisConsoleDao.queryPromoterStatis(promoterModel); int count = statisConsoleDao.queryPromoterStatisCount(promoterModel); Map m = new HashMap<>(); m.put("data", promoterModels); m.put("count", count); m.put("code", 0); return m; } /*public Map queryQromoterOrder(PromoterModel promoterModel){ int count = dao.queryQromoterListCount(promoterModel); // 查询订单数据 List list = dao.queryQromoterList(promoterModel); for(PromoterModel p : list){ p.setTurnoverRate("0"); List li = dao.queryQromoterLeven(p.getUserId()); for(PromoterModel pm : li){ if(pm.getRegsterType().equals("1")){ // 未注册总数 if(null!=pm.getCount()){ p.setUnregistCount(pm.getCount()); } }else if(pm.getRegsterType().equals("2")){ // 已注册总数 if(null!=pm.getCount()){ p.setRegistCount(pm.getCount()); } }else if(pm.getRegsterType().equals("3")){ // 已成交总数 if(null!=pm.getCount()){ p.setOrderCount(pm.getCount()); if(null!=p.getRegistCount()){ p.setRegistCount(String.valueOf(Integer.parseInt(p.getRegistCount())+Integer.parseInt(pm.getCount()))); }else{ p.setRegistCount(pm.getCount()); } } } } if(null!=p.getOrderCount()&&null!=p.getRegistCount()){ BigDecimal turnoverRate = new BigDecimal(p.getOrderCount()).divide(new BigDecimal(p.getRegistCount()),3,BigDecimal.ROUND_DOWN); p.setTurnoverRate(turnoverRate.multiply(new BigDecimal("100")).toString()+"%"); } PromoterModel pmx = dao.queryPromoterOrderWeightMoney(p.getUserId()); if(null!=pmx.getOrderWeightCount()){ p.setOrderWeightCount(DoubleUtil.roundByScale(pmx.getOrderWeightCount(),3)); } if(null!=pmx.getOrderMoneyCount()){ p.setOrderMoneyCount(DoubleUtil.roundByScale(pmx.getOrderMoneyCount(),2)); } } Map m = new HashMap<>(); m.put("data", list); m.put("count", count); m.put("code", 0); return m; }*/ /** * 查询推广员的一些数据 */ public Map queryQromoterOrder(PromoterModel promoterModel){ int pa = promoterModel.getPage(); pa = (pa - 1) * promoterModel.getLimit(); promoterModel.setPage(pa); if(null!=promoterModel.getStartTime()&&!"".equals(promoterModel.getStartTime())){ promoterModel.setStartTime(promoterModel.getStartTime()+" 00:00:00"); } if(null!=promoterModel.getEndTime()&&!"".equals(promoterModel.getEndTime())){ promoterModel.setEndTime(promoterModel.getEndTime()+" 23:59:59"); } List promoterModels = new ArrayList<>(); if(null!=promoterModel.getSortType()&&!"".equals(promoterModel.getSortType())){ promoterModel.setOrderNumSort(Integer.parseInt(promoterModel.getSortType())); promoterModels = statisConsoleDao.queryQromoterOrderOne(promoterModel); //用于接收重复的项目片块数据,返回给方法的调用者 List> result = new ArrayList>(); //用于临时保存重复的项目片块数据 Map> map = new TreeMap>(); for (PromoterModel model:promoterModels) { PromoterModel newP = new PromoterModel(); String userId = model.getCreateUserId(); //判断当前值是否已经在map中存在 if (map.containsKey(userId)) { List hasObj = map.get(userId); //对象拷贝 PromoterModel landTarget = new PromoterModel(); BeanUtil.copyProperties(model, landTarget); hasObj.add(landTarget); new ArrayList().add(landTarget); map.put(userId, hasObj); } else { List newObj = new ArrayList(); PromoterModel landTarget = new PromoterModel(); BeanUtil.copyProperties(model, landTarget); newObj.add(landTarget); map.put(userId, newObj); } } //取出所有的重复的数据值,存入到result中 for (Map.Entry> entry : map.entrySet()) { result.add(entry.getValue()); } promoterModels = getOneOrMore(promoterModel.getOrderNumSort(),result); }else{ promoterModels = statisConsoleDao.queryQromoterOrder(promoterModel); } for (PromoterModel model:promoterModels) { String orderWeightCount = model.getOrderWeightCount(); model.setOrderWeightCount(DoubleUtil.roundThree(orderWeightCount)); model.setOrderMoneyCount(DoubleUtil.roundTwo(model.getOrderMoneyCount())); String nickName= model.getNickName(); if(null!=nickName&&!"".equals(nickName)){ try { nickName =new String(base64.decode(model.getNickName()), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } model.setNickName(nickName); } } int count=0; if(null!=promoterModel.getSortType()&&!"".equals(promoterModel.getSortType())){ count = promoterModels.size(); promoterModels = promoterModels.subList(pa,count-pa>promoterModel.getLimit()?pa+promoterModel.getLimit():count); }else{ count = statisConsoleDao.queryQromoterOrderCount(promoterModel); } Map m = new HashMap<>(); m.put("data", promoterModels); m.put("count", count); m.put("code", 0); return m; } private List getOneOrMore(int sort,List> result){ List oneOrMore = new ArrayList<>(); for (List m1List:result) { if(m1List.size()>0){ switch (sort) { case 1:oneOrMore.add(m1List.get(0)); break; case 2:if(m1List.size()>1){ oneOrMore.add(m1List.get(1));} break; case 3:if(m1List.size()>2){oneOrMore.add(m1List.get(2));} break; case 4:if(m1List.size()>3){oneOrMore.add(m1List.get(3));} break; default: break; } } } return oneOrMore; } }