| | |
| | | import java.math.BigDecimal;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Calendar;
|
| | | import java.util.Collections;
|
| | | import java.util.Date;
|
| | | import java.util.HashSet;
|
| | | import java.util.List;
|
| | | import java.util.Set;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | |
| | |
|
| | | import com.google.gson.Gson;
|
| | | import com.google.gson.reflect.TypeToken;
|
| | | import com.yeshi.fanli.dto.push.PushContentDTO;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.Extract;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.config.push.PushMsgFactory;
|
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
|
| | | import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
|
| | | import com.yeshi.fanli.exception.push.PushException;
|
| | | import com.yeshi.fanli.exception.user.PreviewInfoException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
|
| | | import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService;
|
| | | import com.yeshi.fanli.service.inter.push.PushService;
|
| | | import com.yeshi.fanli.service.inter.user.PreviewInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
| | |
|
| | | @Resource
|
| | | private OrderMoneyDailyCountService orderMoneyDailyCountService;
|
| | | |
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | | |
| | | @Resource
|
| | | private PushService pushService;
|
| | | |
| | |
|
| | |
|
| | | /**
|
| | |
| | | try {
|
| | | previewInfoService.saveMineInfo(infoVO);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
|
| | | } catch (PreviewInfoException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败"));
|
| | |
| | | @RequestMapping(value = "getMineInfo")
|
| | | public void getMineInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.mineInfo);
|
| | | if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
|
| | | return;
|
| | | MineInfoVO dto = null;
|
| | | if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) {
|
| | | dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class);
|
| | | }
|
| | |
|
| | | MineInfoVO dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dto));
|
| | | if (dto == null)
|
| | | dto = new MineInfoVO();
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(dto)));
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | @RequestMapping(value = "getMoneyArrivalImg")
|
| | | public void getMoneyArrivalImg(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.moneyInfo);
|
| | | if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
|
| | | return;
|
| | | String link = null;
|
| | | if (previewInfo != null && StringUtil.isNullOrEmpty(previewInfo.getContent())) {
|
| | | link = previewInfo.getContent();
|
| | | }
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("link", previewInfo.getContent());
|
| | | object.put("link", link);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
|
| | | }
|
| | |
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | if (type == null || num == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请完善数据"));
|
| | | if (type == null || type < 1 || type > 2) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择订单类型"));
|
| | | return;
|
| | | }
|
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
|
| | | if (num == null || num <= 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写推送数量"));
|
| | | return;
|
| | | }
|
| | | |
| | | if (num > 50) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("最多支持50条"));
|
| | | return;
|
| | | }
|
| | | |
| | | // 获取最新订单号
|
| | | String orderNo = commonOrderService.getNewestOrderNoByTaoBao();
|
| | | |
| | | // 随机订单号
|
| | | List<String> list = getRandomOrderNo(orderNo, num);
|
| | | for (String orderId: list) {
|
| | | PushContentDTO dto = PushMsgFactory.createFanLiOrderStatisticed(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId, BigDecimal.ZERO);
|
| | | try {
|
| | | pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null);
|
| | | } catch (NumberFormatException e) {
|
| | | e.printStackTrace();
|
| | | } catch (PushException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
|
| | | }
|
| | | |
| | | |
| | | private List<String> getRandomOrderNo(String orderNo, int count) {
|
| | | String newNo = orderNo.substring(0, 3);
|
| | | long lenth = orderNo.length() - 3;
|
| | |
|
| | | long tempNum = 1;
|
| | | for (long i = 0; i < lenth - 1; i++) {
|
| | | tempNum = tempNum * 10;
|
| | | }
|
| | |
|
| | | Set<String> set = new HashSet<>();
|
| | | for (int i = 0; i < count; i++) {
|
| | | int temp = set.size();
|
| | | while (set.size() <= temp) {
|
| | | long randomNum = (long) ((Math.random() * 9 + 1) * tempNum);
|
| | | set.add(newNo + randomNum);
|
| | | }
|
| | | }
|
| | | |
| | | // 转换list
|
| | | List<String> list = new ArrayList<>();
|
| | | for (String s : set) {
|
| | | list.add(s);
|
| | | }
|
| | | // 排序
|
| | | Collections.sort(list);
|
| | | |
| | | return list;
|
| | | }
|
| | | }
|
| | |
| | | import com.google.gson.reflect.TypeToken;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.Extract;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.money.TeamEincomeRecord;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | |
| | | /**
|
| | | * 订单统计-h5
|
| | | * |
| | | * @param acceptData
|
| | | * @param id
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "countTeamOrderNum")
|
| | | public void countTeamOrderNum(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | try {
|
| | | |
| | | Date minDate = null;
|
| | | Date maxDate = null;
|
| | | long timeStamp = System.currentTimeMillis();
|
| | | |
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTimeInMillis(timeStamp);
|
| | | |
| | | // 今日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | OrderMoneyDailyCount todayRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, null));
|
| | |
|
| | | // 昨日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | minDate = DateUtil.reduceDay(1, maxDate);
|
| | | OrderMoneyDailyCount yesterdayRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, maxDate));
|
| | |
|
| | | // 本月预估
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | OrderMoneyDailyCount monthRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByYearMonth(uid, minDate, maxDate));
|
| | | |
| | | // 累计
|
| | | OrderMoneyDailyCount totalityRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByUid(uid, null, null));
|
| | | |
| | | JSONObject today = new JSONObject();
|
| | | today.put("direct", todayRecord.getDirectOrderNum());
|
| | | today.put("indirect", todayRecord.getInDirectOrderNum());
|
| | | today.put("beyond", todayRecord.getBeyondOrderNum());
|
| | | |
| | | JSONObject yesterday = new JSONObject();
|
| | | yesterday.put("direct", yesterdayRecord.getDirectOrderNum());
|
| | | yesterday.put("indirect", yesterdayRecord.getInDirectOrderNum());
|
| | | yesterday.put("beyond", yesterdayRecord.getBeyondOrderNum());
|
| | | |
| | | JSONObject month = new JSONObject();
|
| | | month.put("direct", monthRecord.getDirectOrderNum());
|
| | | month.put("indirect", monthRecord.getInDirectOrderNum());
|
| | | month.put("beyond", monthRecord.getBeyondOrderNum());
|
| | | |
| | | JSONObject totality = new JSONObject();
|
| | | totality.put("direct", totalityRecord.getDirectOrderNum());
|
| | | totality.put("indirect", totalityRecord.getInDirectOrderNum());
|
| | | totality.put("beyond", totalityRecord.getBeyondOrderNum());
|
| | | |
| | | |
| | | JSONObject json = new JSONObject();
|
| | | json.put("today", today);
|
| | | json.put("yesterday", yesterday);
|
| | | json.put("month", month);
|
| | | json.put("totality", totality);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) {
|
| | | OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0,0,0);
|
| | | |
| | | if (list != null && list.size() > 0) {
|
| | | for (OrderMoneyDailyCount record: list) {
|
| | | totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum());
|
| | | totalityRecord.setInDirectOrderNum(totalityRecord.getInDirectOrderNum() + record.getInDirectOrderNum());
|
| | | totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum());
|
| | | }
|
| | | } |
| | | |
| | | return totalityRecord;
|
| | | }
|
| | | }
|
| | |
| | | return results;
|
| | | }
|
| | |
|
| | | |
| | | |
| | | private String getTeamOrderNumReduce() {
|
| | | StringBuilder builder = new StringBuilder();
|
| | | builder.append("function(doc, aggr){ ");
|
| | | builder.append(" aggr.directOrderNum += doc.directOrderNum;");
|
| | | builder.append(" aggr.inDirectOrderNum += doc.inDirectOrderNum;");
|
| | | builder.append(" aggr.beyondOrderNum += doc.beyondOrderNum;");
|
| | | builder.append(" }");
|
| | | return builder.toString();
|
| | | }
|
| | | |
| | | /**
|
| | | * 统计每月订单收入、数量
|
| | | * @param uid
|
| | | * @param minDate
|
| | | * @param maxDate
|
| | | * @return
|
| | | */
|
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByCountDay(Long uid, Date minDate, Date maxDate) {
|
| | | // 查询条件
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | | list.add(Criteria.where("uid").is(uid));
|
| | | if (minDate != null)
|
| | | list.add(Criteria.where("countDay").gte(minDate));
|
| | | if (maxDate != null)
|
| | | list.add(Criteria.where("countDay").lte(maxDate));
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
| | | cas[i] = list.get(i);
|
| | | query.addCriteria(new Criteria().andOperator(cas));
|
| | | }
|
| | |
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | map.put("directOrderNum", 0);
|
| | | map.put("inDirectOrderNum", 0);
|
| | | map.put("beyondOrderNum", 0);
|
| | | BasicDBObject initial = new BasicDBObject(map);
|
| | |
|
| | | // 进行按天、周、月分组
|
| | | BasicDBObject agg = new BasicDBObject("countDay", "");
|
| | | DBCollection collection = mongoTemplate.getCollection(collectionName);
|
| | | GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamOrderNumReduce(), null);
|
| | | BasicDBList objects = (BasicDBList) collection.group(xx);
|
| | |
|
| | | List<OrderMoneyDailyCount> results = new ArrayList<>();
|
| | | if (objects != null) {
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
|
| | | for (int i = 0; i < objects.size(); i++) {
|
| | | BasicDBObject dbObject = (BasicDBObject) objects.get(i);
|
| | | if (dbObject == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | Object object = dbObject.get("countDay");
|
| | | if (object == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | try {
|
| | | String date = object.toString();
|
| | | Date dtime = sdf.parse(date);
|
| | | OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
|
| | | dailyCount.setCountDay(dtime);
|
| | | dailyCount.setDirectOrderNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
|
| | | dailyCount.setInDirectOrderNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
|
| | | dailyCount.setBeyondOrderNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
|
| | | results.add(dailyCount);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | | return results;
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 统计每月订单收入、数量
|
| | | * @param uid
|
| | | * @param minDate
|
| | | * @param maxDate
|
| | | * @return
|
| | | */
|
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByYearMonth(Long uid, Date minDate, Date maxDate) {
|
| | | // 查询条件
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | | list.add(Criteria.where("uid").is(uid));
|
| | | if (minDate != null)
|
| | | list.add(Criteria.where("countDay").gte(minDate));
|
| | | if (maxDate != null)
|
| | | list.add(Criteria.where("countDay").lte(maxDate));
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
| | | cas[i] = list.get(i);
|
| | | query.addCriteria(new Criteria().andOperator(cas));
|
| | | }
|
| | |
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | map.put("directOrderNum", 0);
|
| | | map.put("inDirectOrderNum", 0);
|
| | | map.put("beyondOrderNum", 0);
|
| | | BasicDBObject initial = new BasicDBObject(map);
|
| | |
|
| | | // 进行按天、周、月分组
|
| | | BasicDBObject agg = new BasicDBObject("yearMonth", "");
|
| | | DBCollection collection = mongoTemplate.getCollection(collectionName);
|
| | | GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamOrderNumReduce(), null);
|
| | | BasicDBList objects = (BasicDBList) collection.group(xx);
|
| | |
|
| | | List<OrderMoneyDailyCount> results = new ArrayList<>();
|
| | | if (objects != null) {
|
| | | for (int i = 0; i < objects.size(); i++) {
|
| | | BasicDBObject dbObject = (BasicDBObject) objects.get(i);
|
| | | if (dbObject == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | Object object = dbObject.get("yearMonth");
|
| | | if (object == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
|
| | | dailyCount.setYearMonth(object.toString());
|
| | | dailyCount.setDirectOrderNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
|
| | | dailyCount.setInDirectOrderNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
|
| | | dailyCount.setBeyondOrderNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
|
| | | |
| | | results.add(dailyCount);
|
| | | }
|
| | | }
|
| | | return results;
|
| | | }
|
| | | |
| | | /**
|
| | | * 统计每月订单收入、数量
|
| | | * @param uid
|
| | | * @param minDate
|
| | | * @param maxDate
|
| | | * @return
|
| | | */
|
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDate, Date maxDate) {
|
| | | // 查询条件
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | | list.add(Criteria.where("uid").is(uid));
|
| | | if (minDate != null)
|
| | | list.add(Criteria.where("countDay").gte(minDate));
|
| | | if (maxDate != null)
|
| | | list.add(Criteria.where("countDay").lte(maxDate));
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
| | | cas[i] = list.get(i);
|
| | | query.addCriteria(new Criteria().andOperator(cas));
|
| | | }
|
| | |
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | map.put("directOrderNum", 0);
|
| | | map.put("inDirectOrderNum", 0);
|
| | | map.put("beyondOrderNum", 0);
|
| | | BasicDBObject initial = new BasicDBObject(map);
|
| | |
|
| | | // 进行按天、周、月分组
|
| | | BasicDBObject agg = new BasicDBObject("uid", "");
|
| | | DBCollection collection = mongoTemplate.getCollection(collectionName);
|
| | | GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamOrderNumReduce(), null);
|
| | | BasicDBList objects = (BasicDBList) collection.group(xx);
|
| | |
|
| | | List<OrderMoneyDailyCount> results = new ArrayList<>();
|
| | | if (objects != null) {
|
| | | for (int i = 0; i < objects.size(); i++) {
|
| | | BasicDBObject dbObject = (BasicDBObject) objects.get(i);
|
| | | if (dbObject == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | Object object = dbObject.get("uid");
|
| | | if (object == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
|
| | | dailyCount.setDirectOrderNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
|
| | | dailyCount.setInDirectOrderNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
|
| | | dailyCount.setBeyondOrderNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
|
| | | |
| | | results.add(dailyCount);
|
| | | }
|
| | | }
|
| | | return results;
|
| | | }
|
| | | }
|
| | |
| | | package com.yeshi.fanli.dao.user.invite;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.HashMap;
|
| | | import java.util.List;
|
| | | import java.util.Locale;
|
| | | import java.util.Map;
|
| | |
|
| | | import org.springframework.data.mongodb.core.query.Criteria;
|
| | |
| | | import org.springframework.data.mongodb.core.query.Update;
|
| | | import org.springframework.stereotype.Repository;
|
| | |
|
| | | import com.mongodb.BasicDBList;
|
| | | import com.mongodb.BasicDBObject;
|
| | | import com.mongodb.DBCollection;
|
| | | import com.mongodb.DBObject;
|
| | | import com.mongodb.GroupCommand;
|
| | | import com.yeshi.fanli.dao.MongodbBaseDao;
|
| | | import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
|
| | |
|
| | |
| | | }
|
| | | return listDailyCount;
|
| | | }
|
| | | |
| | | |
| | | private String getTeamNumReduce() {
|
| | | StringBuilder builder = new StringBuilder();
|
| | | builder.append("function(doc, aggr){ ");
|
| | | builder.append(" aggr.directOrderNum += doc.firstNum;");
|
| | | builder.append(" aggr.inDirectOrderNum += doc.secondNum;");
|
| | | builder.append(" aggr.beyondOrderNum += doc.beyondNum;");
|
| | | builder.append(" }");
|
| | | return builder.toString();
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 统计每月订单收入、数量
|
| | | * @param uid
|
| | | * @param minDate
|
| | | * @param maxDate
|
| | | * @return
|
| | | */
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByCountDay(Long uid, Date minDate, Date maxDate) {
|
| | | // 查询条件
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | | list.add(Criteria.where("uid").is(uid));
|
| | | if (minDate != null)
|
| | | list.add(Criteria.where("countDay").gte(minDate));
|
| | | if (maxDate != null)
|
| | | list.add(Criteria.where("countDay").lte(maxDate));
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
| | | cas[i] = list.get(i);
|
| | | query.addCriteria(new Criteria().andOperator(cas));
|
| | | }
|
| | |
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | map.put("directOrderNum", 0);
|
| | | map.put("inDirectOrderNum", 0);
|
| | | map.put("beyondOrderNum", 0);
|
| | | BasicDBObject initial = new BasicDBObject(map);
|
| | |
|
| | | // 进行按天、周、月分组
|
| | | BasicDBObject agg = new BasicDBObject("countDay", "");
|
| | | DBCollection collection = mongoTemplate.getCollection(collectionName);
|
| | | GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamNumReduce(), null);
|
| | | BasicDBList objects = (BasicDBList) collection.group(xx);
|
| | |
|
| | | List<TeamDailyRecord> results = new ArrayList<>();
|
| | | if (objects != null) {
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
|
| | | for (int i = 0; i < objects.size(); i++) {
|
| | | BasicDBObject dbObject = (BasicDBObject) objects.get(i);
|
| | | if (dbObject == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | Object object = dbObject.get("countDay");
|
| | | if (object == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | try {
|
| | | String date = object.toString();
|
| | | Date dtime = sdf.parse(date);
|
| | | TeamDailyRecord dailyCount = new TeamDailyRecord();
|
| | | dailyCount.setCountDay(dtime);
|
| | | dailyCount.setFirstNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
|
| | | dailyCount.setSecondNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
|
| | | dailyCount.setBeyondNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
|
| | | results.add(dailyCount);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | | return results;
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 统计每月订单收入、数量
|
| | | * @param uid
|
| | | * @param minDate
|
| | | * @param maxDate
|
| | | * @return
|
| | | */
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByYearMonth(Long uid, Date minDate, Date maxDate) {
|
| | | // 查询条件
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | | list.add(Criteria.where("uid").is(uid));
|
| | | if (minDate != null)
|
| | | list.add(Criteria.where("countDay").gte(minDate));
|
| | | if (maxDate != null)
|
| | | list.add(Criteria.where("countDay").lte(maxDate));
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
| | | cas[i] = list.get(i);
|
| | | query.addCriteria(new Criteria().andOperator(cas));
|
| | | }
|
| | |
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | map.put("directOrderNum", 0);
|
| | | map.put("inDirectOrderNum", 0);
|
| | | map.put("beyondOrderNum", 0);
|
| | | BasicDBObject initial = new BasicDBObject(map);
|
| | |
|
| | | // 进行按天、周、月分组
|
| | | BasicDBObject agg = new BasicDBObject("yearMonth", "");
|
| | | DBCollection collection = mongoTemplate.getCollection(collectionName);
|
| | | GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamNumReduce(), null);
|
| | | BasicDBList objects = (BasicDBList) collection.group(xx);
|
| | |
|
| | | List<TeamDailyRecord> results = new ArrayList<>();
|
| | | if (objects != null) {
|
| | | for (int i = 0; i < objects.size(); i++) {
|
| | | BasicDBObject dbObject = (BasicDBObject) objects.get(i);
|
| | | if (dbObject == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | Object object = dbObject.get("yearMonth");
|
| | | if (object == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | TeamDailyRecord dailyCount = new TeamDailyRecord();
|
| | | dailyCount.setYearMonth(object.toString());
|
| | | dailyCount.setFirstNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
|
| | | dailyCount.setSecondNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
|
| | | dailyCount.setBeyondNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
|
| | | |
| | | results.add(dailyCount);
|
| | | }
|
| | | }
|
| | | return results;
|
| | | }
|
| | | |
| | | /**
|
| | | * 统计每月订单收入、数量
|
| | | * @param uid
|
| | | * @param minDate
|
| | | * @param maxDate
|
| | | * @return
|
| | | */
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDate, Date maxDate) {
|
| | | // 查询条件
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | | list.add(Criteria.where("uid").is(uid));
|
| | | if (minDate != null)
|
| | | list.add(Criteria.where("countDay").gte(minDate));
|
| | | if (maxDate != null)
|
| | | list.add(Criteria.where("countDay").lte(maxDate));
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
| | | cas[i] = list.get(i);
|
| | | query.addCriteria(new Criteria().andOperator(cas));
|
| | | }
|
| | |
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | map.put("directOrderNum", 0);
|
| | | map.put("inDirectOrderNum", 0);
|
| | | map.put("beyondOrderNum", 0);
|
| | | BasicDBObject initial = new BasicDBObject(map);
|
| | |
|
| | | // 进行按天、周、月分组
|
| | | BasicDBObject agg = new BasicDBObject("uid", "");
|
| | | DBCollection collection = mongoTemplate.getCollection(collectionName);
|
| | | GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamNumReduce(), null);
|
| | | BasicDBList objects = (BasicDBList) collection.group(xx);
|
| | |
|
| | | List<TeamDailyRecord> results = new ArrayList<>();
|
| | | if (objects != null) {
|
| | | for (int i = 0; i < objects.size(); i++) {
|
| | | BasicDBObject dbObject = (BasicDBObject) objects.get(i);
|
| | | if (dbObject == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | Object object = dbObject.get("uid");
|
| | | if (object == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | TeamDailyRecord dailyCount = new TeamDailyRecord();
|
| | | dailyCount.setFirstNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
|
| | | dailyCount.setSecondNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
|
| | | dailyCount.setBeyondNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
|
| | | |
| | | results.add(dailyCount);
|
| | | }
|
| | | }
|
| | | return results;
|
| | | }
|
| | | }
|
| | |
| | | query.addCriteria(Criteria.where("workerUid").is(uid));
|
| | | return findList(query);
|
| | | }
|
| | |
|
| | | |
| | | }
|
| | |
| | | private Integer inDirectOrderNum;// 间接订单数量
|
| | | @Field
|
| | | private Integer beyondOrderNum;// 二级外订单数量
|
| | | |
| | | |
| | | public OrderMoneyDailyCount() {}
|
| | | |
| | | public OrderMoneyDailyCount(Integer directOrderNum, Integer inDirectOrderNum, Integer beyondOrderNum) {
|
| | | this.directOrderNum = directOrderNum;
|
| | | this.inDirectOrderNum = inDirectOrderNum;
|
| | | this.beyondOrderNum = beyondOrderNum;
|
| | | }
|
| | | |
| | |
|
| | | public Integer getDirectOrderNum() {
|
| | | return directOrderNum;
|
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderMoneyDailyCount> getByUid(Long uid) { |
| | | return orderMoneyDailyCountDao.query(uid, null, null); |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderMoneyDailyCount> query(Long uid, Date minDay, Date maxDay) { |
| | | return orderMoneyDailyCountDao.query(uid, minDay, maxDay); |
| | | } |
| | |
| | | public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(Long uid, Date minDay, Date maxDay) { |
| | | return orderMoneyDailyCountDao.sumTeamGroupByYearMonth(uid, minDay, maxDay); |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByCountDay(Long uid, Date minDay, Date maxDay) { |
| | | return orderMoneyDailyCountDao.sumTeamOrderNumGroupByCountDay(uid, minDay, maxDay); |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByYearMonth(Long uid, Date minDay, Date maxDay) { |
| | | return orderMoneyDailyCountDao.sumTeamOrderNumGroupByYearMonth(uid, minDay, maxDay); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDay, Date maxDay) { |
| | | return orderMoneyDailyCountDao.sumTeamOrderNumGroupByUid(uid, minDay, maxDay); |
| | | } |
| | | |
| | | } |
| | |
| | |
|
| | |
|
| | | // 定时时间
|
| | | if (StringUtil.isNullOrEmpty(record.getControlTime_str())) {
|
| | | if (!StringUtil.isNullOrEmpty(record.getControlTime_str())) {
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
| | | record.setControlTime(format.parse(record.getControlTime_str().replaceAll("T", " ")));
|
| | | }
|
| | |
| | | Comparator<Extract> cm = new Comparator<Extract>() { |
| | | @Override |
| | | public int compare(Extract o1, Extract o2) { |
| | | return (int) (o2.getReceiveTime().getTime() - o1.getReceiveTime().getTime()); |
| | | if (o2.getReceiveTime().getTime() > o1.getReceiveTime().getTime()) { |
| | | return 1; |
| | | } else { |
| | | return -1; |
| | | } |
| | | } |
| | | }; |
| | | Collections.sort(list, cm); |
| | |
| | | public List<TeamDailyRecord> sumGroupByYearMonth(Long uid, Date minTime, Date maxTime) {
|
| | | return teamDailyRecordDao.sumGroupByYearMonth(uid, minTime, maxTime);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByCountDay(Long uid, Date minDay, Date maxDay) {
|
| | | return teamDailyRecordDao.sumTeamNumGroupByCountDay(uid, minDay, maxDay);
|
| | | }
|
| | | |
| | | @Override
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
|
| | | return teamDailyRecordDao.sumTeamNumGroupByYearMonth(uid, minDay, maxDay);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDay, Date maxDay) {
|
| | | return teamDailyRecordDao.sumTeamNumGroupByUid(uid, minDay, maxDay);
|
| | | }
|
| | | |
| | | }
|
| | |
| | | |
| | | public interface OrderMoneyDailyCountService { |
| | | |
| | | public List<OrderMoneyDailyCount> getByUid(Long uid); |
| | | |
| | | /** |
| | | * 查询 |
| | | * @param uid |
| | |
| | | * @return |
| | | */ |
| | | public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(Long uid, Date minDay, Date maxDay); |
| | | |
| | | /** |
| | | * 统计团队订单数量 |
| | | * @param uid |
| | | * @param minDay |
| | | * @param maxDay |
| | | * @return |
| | | */ |
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByCountDay(Long uid, Date minDay, Date maxDay); |
| | | |
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByYearMonth(Long uid, Date minDay, Date maxDay); |
| | | |
| | | public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDay, Date maxDay); |
| | | |
| | | |
| | | } |
| | |
| | |
|
| | |
|
| | | public List<TeamDailyRecord> getByUid(Long uid);
|
| | |
|
| | |
|
| | | |
| | | /**
|
| | | * 统计团队数量
|
| | | * @param uid
|
| | | * @param minDay
|
| | | * @param maxDay
|
| | | * @return
|
| | | */
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByCountDay(Long uid, Date minDay, Date maxDay);
|
| | |
|
| | |
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByYearMonth(Long uid, Date minDay, Date maxDay);
|
| | |
|
| | |
|
| | | public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDay, Date maxDay);
|
| | | }
|