From 0e9b6603d4ae9d11c1fbc90257ce816c5807b8ff Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 28 十月 2022 16:55:02 +0800 Subject: [PATCH] 批量添加结算消息 --- app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java | 123 +++++++++++++++++++++++++++++++++++------ 1 files changed, 105 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java b/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java index 4c1770e..aad4516 100644 --- a/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java +++ b/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java @@ -2,6 +2,7 @@ import com.yeshi.makemoney.app.dao.goldcorn.GoldCornGetRecordDao; import com.yeshi.makemoney.app.dao.goldcorn.GoldCornGetRecordDao.DaoQuery; +import com.yeshi.makemoney.app.entity.SystemEnum; import com.yeshi.makemoney.app.entity.goldcorn.GoldCornGetRecord; import com.yeshi.makemoney.app.entity.goldcorn.GoldCornGetType; import com.yeshi.makemoney.app.exception.goldcorn.GoldCornGetRecordException; @@ -17,9 +18,12 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.yeshi.utils.TimeUtil; +import org.yeshi.utils.statistic.BaseStatisticTimeQuery; +import org.yeshi.utils.statistic.StatisticNumberResult; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; @Service public class GoldCornGetRecordServiceImpl implements GoldCornGetRecordService { @@ -27,17 +31,21 @@ @Resource private GoldCornGetRecordDao goldCornGetRecordDao; - @Override - public List<GoldCornGetRecord> list(GoldCornGetRecordQuery goldCornGetRecordQuery, int page, int pageSize) { + private DaoQuery createDaoQuery(GoldCornGetRecordQuery goldCornGetRecordQuery) { DaoQuery daoQuery = new DaoQuery(); daoQuery.type = goldCornGetRecordQuery.getType(); daoQuery.uid = goldCornGetRecordQuery.getUid(); - daoQuery.day=goldCornGetRecordQuery.getDay(); - daoQuery.dayList=goldCornGetRecordQuery.getDayList(); - - + daoQuery.day = goldCornGetRecordQuery.getDay(); + daoQuery.doubles = goldCornGetRecordQuery.getDoubles(); + daoQuery.dayList = goldCornGetRecordQuery.getDayList(); daoQuery.minCreateTime = goldCornGetRecordQuery.toStartTime(); daoQuery.maxCreateTime = goldCornGetRecordQuery.toEndTime(); + return daoQuery; + } + + @Override + public List<GoldCornGetRecord> list(GoldCornGetRecordQuery goldCornGetRecordQuery, int page, int pageSize) { + DaoQuery daoQuery = createDaoQuery(goldCornGetRecordQuery); daoQuery.start = (page - 1) * pageSize; daoQuery.count = pageSize; @@ -47,13 +55,7 @@ @Override public long count(GoldCornGetRecordQuery goldCornGetRecordQuery) { - DaoQuery daoQuery = new DaoQuery(); - daoQuery.type = goldCornGetRecordQuery.getType(); - daoQuery.uid = goldCornGetRecordQuery.getUid(); - daoQuery.day=goldCornGetRecordQuery.getDay(); - daoQuery.dayList=goldCornGetRecordQuery.getDayList(); - daoQuery.minCreateTime = goldCornGetRecordQuery.toStartTime(); - daoQuery.maxCreateTime = goldCornGetRecordQuery.toEndTime(); + DaoQuery daoQuery = createDaoQuery(goldCornGetRecordQuery); return goldCornGetRecordDao.count(daoQuery); } @@ -166,7 +168,7 @@ Map<Long, Integer> map = new HashMap<>(); if (mapList != null) { for (Map m : mapList) { - map.put((long) m.get("fromUid"), (int) m.get("cornNum")); + map.put((long) m.get("_id"), (int) m.get("cornNum")); } } return map; @@ -181,13 +183,13 @@ //鏈�澶ч檺鍒朵负365澶� list.add(Aggregation.limit(365)); list.add(Aggregation.project("day")); - AggregationResults<Map<String,String>> results = goldCornGetRecordDao.aggregate(list, Map.class); - List<Map<String,String>> resultList = results.getMappedResults(); + AggregationResults<Map<String, String>> results = goldCornGetRecordDao.aggregate(list, Map.class); + List<Map<String, String>> resultList = results.getMappedResults(); //鑾峰彇杩炵画鐨勫ぉ鏁� - String format="yyyy-MM-dd"; + String format = "yyyy-MM-dd"; Date lastDay = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(deadDate.getTime(), format), format)); int continueDay = 0; - for (Map<String,String> day : resultList) { + for (Map<String, String> day : resultList) { Long timestamp = TimeUtil.convertToTimeTemp(day.get("_id"), format); long cha = lastDay.getTime() - timestamp; if (cha <= 1000 * 60 * 60 * 24L) { @@ -200,5 +202,90 @@ return continueDay; } + @Override + public Map<GoldCornGetType, Long> sumEventCount(GoldCornGetRecordQuery goldCornGetRecordQuery) { + return goldCornGetRecordDao.sumEventCount(createDaoQuery(goldCornGetRecordQuery)); + } + + @Override + public Map<String, Long> sumGoldCornNum(GoldCornGetRecordQuery goldCornGetRecordQuery) { + + List<AggregationOperation> list = new ArrayList<>(); + list.add(Aggregation.match(goldCornGetRecordDao.getCriteria(createDaoQuery(goldCornGetRecordQuery)))); + list.add(Aggregation.group("day").sum("cornNum").as("cornNum")); + AggregationResults<Map<String, Object>> results = goldCornGetRecordDao.aggregate(list, Map.class); + List<Map<String, Object>> resultList = results.getMappedResults(); + Map<String, Long> resultMap = new HashMap<>(); + for (Map<String, Object> result : resultList) { + String day = result.get("_id") + ""; + Long count = Long.parseLong(result.get("cornNum") + ""); + resultMap.put(day, count); + } + return resultMap; + } + + @Override + public List<Long> listUids(Date minCreateTime, Date maxCreateTime, int page, int pageSize) { + List<AggregationOperation> list = new ArrayList<>(); + list.add(Aggregation.match(Criteria.where("createTime").gte(minCreateTime).lt(maxCreateTime))); + list.add(Aggregation.group("uid")); + list.add(Aggregation.sort(Sort.Direction.DESC, "_id")); + list.add(Aggregation.skip(Long.parseLong((page - 1) * pageSize + ""))); + list.add(Aggregation.limit(pageSize)); + AggregationResults<Map<String, Object>> results = goldCornGetRecordDao.aggregate(list, Map.class); + List<Map<String, Object>> resultList = results.getMappedResults(); + List<Long> uidList = new ArrayList<>(); + for (Map<String, Object> result : resultList) { + Long uid = Long.parseLong(result.get("_id") + ""); + uidList.add(uid); + } + return uidList; + } + + @Override + public Map<Long, Boolean> isSignIned(List<Long> uidList, String day) { + DaoQuery daoQuery = new DaoQuery(); + daoQuery.type = GoldCornGetType.signIn; + daoQuery.day = day; + daoQuery.uidList = uidList; + + List<AggregationOperation> list = new ArrayList<>(); + list.add(Aggregation.match(goldCornGetRecordDao.getCriteria(daoQuery))); + list.add(Aggregation.group("uid")); + + + AggregationResults<Map<String, Object>> results = goldCornGetRecordDao.aggregate(list, Map.class); + List<Map<String, Object>> resultList = results.getMappedResults(); + Set<Long> signInedList = new HashSet<>(); + for (Map<String, Object> result : resultList) { + Long uid = Long.parseLong(result.get("_id") + ""); + signInedList.add(uid); + } + + return uidList.stream().collect(Collectors.toMap(uid -> uid, uid -> signInedList.contains(uid))); + } + + @Override + public List<StatisticNumberResult> statistic(SystemEnum system, BaseStatisticTimeQuery query) { + GoldCornGetRecordQuery q = new GoldCornGetRecordQuery(); + q.setStartTime(TimeUtil.getGernalTime(query.getStartTime().getTime(), "yyyy.MM.dd HH:mm:ss")); + q.setEndTime(TimeUtil.getGernalTime(query.getEndTime().getTime(), "yyyy.MM.dd HH:mm:ss")); + q.setFormat("yyyy.MM.dd HH:mm:ss"); + Map<String, Long> map = sumGoldCornNum(q); + List<StatisticNumberResult> resultList = new ArrayList<>(); + for (String key : map.keySet()) { + StatisticNumberResult numberResult = new StatisticNumberResult(); + numberResult.setTime(key); + numberResult.setNumber(map.get(key)); + resultList.add(numberResult); + } + + Comparator<StatisticNumberResult> cm = (o1, o2) -> + GoldCornUtil.convertFormatDay(o1.getTime()).getTime() - GoldCornUtil.convertFormatDay(o2.getTime()).getTime() > 0 ? 1 : -1; + + Collections.sort(resultList, cm); + return resultList; + } + } \ No newline at end of file -- Gitblit v1.8.0