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<String, Object> queryLatAndLong(){
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", statisConsoleDao.queryLatAndLong());
|
return m;
|
}
|
|
/**
|
* 查询推广员的一些数据
|
* @param promoterModel
|
*/
|
public Map<String, Object> queryPromoterStatis(PromoterModel promoterModel){
|
List<PromoterModel> promoterModels = statisConsoleDao.queryPromoterStatis(promoterModel);
|
int count = statisConsoleDao.queryPromoterStatisCount(promoterModel);
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", promoterModels);
|
m.put("count", count);
|
m.put("code", 0);
|
return m;
|
|
}
|
|
/*public Map<String, Object> queryQromoterOrder(PromoterModel promoterModel){
|
|
int count = dao.queryQromoterListCount(promoterModel);
|
// 查询订单数据
|
List<PromoterModel> list = dao.queryQromoterList(promoterModel);
|
for(PromoterModel p : list){
|
p.setTurnoverRate("0");
|
List<PromoterModel> 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<String, Object> m = new HashMap<>();
|
m.put("data", list);
|
m.put("count", count);
|
m.put("code", 0);
|
return m;
|
}*/
|
/**
|
* 查询推广员的一些数据
|
*/
|
public Map<String, Object> 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<PromoterModel> promoterModels = new ArrayList<>();
|
if(null!=promoterModel.getSortType()&&!"".equals(promoterModel.getSortType())){
|
promoterModel.setOrderNumSort(Integer.parseInt(promoterModel.getSortType()));
|
promoterModels = statisConsoleDao.queryQromoterOrderOne(promoterModel);
|
//用于接收重复的项目片块数据,返回给方法的调用者
|
List<List<PromoterModel>> result = new ArrayList<List<PromoterModel>>();
|
//用于临时保存重复的项目片块数据
|
Map<String, List<PromoterModel>> map = new TreeMap<String, List<PromoterModel>>();
|
|
for (PromoterModel model:promoterModels) {
|
PromoterModel newP = new PromoterModel();
|
String userId = model.getCreateUserId();
|
//判断当前值是否已经在map中存在
|
if (map.containsKey(userId)) {
|
List<PromoterModel> hasObj = map.get(userId);
|
//对象拷贝
|
PromoterModel landTarget = new PromoterModel();
|
BeanUtil.copyProperties(model, landTarget);
|
hasObj.add(landTarget);
|
new ArrayList<PromoterModel>().add(landTarget);
|
map.put(userId, hasObj);
|
} else {
|
List<PromoterModel> newObj = new ArrayList<PromoterModel>();
|
PromoterModel landTarget = new PromoterModel();
|
BeanUtil.copyProperties(model, landTarget);
|
newObj.add(landTarget);
|
map.put(userId, newObj);
|
}
|
}
|
//取出所有的重复的数据值,存入到result中
|
for (Map.Entry<String, List<PromoterModel>> 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<String, Object> m = new HashMap<>();
|
m.put("data", promoterModels);
|
m.put("count", count);
|
m.put("code", 0);
|
return m;
|
|
}
|
|
private List<PromoterModel> getOneOrMore(int sort,List<List<PromoterModel>> result){
|
List<PromoterModel> oneOrMore = new ArrayList<>();
|
for (List<PromoterModel> 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;
|
}
|
}
|