From 8433abd2569e309edecdc2e46b4225d47a85e023 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 24 十二月 2018 14:06:46 +0800 Subject: [PATCH] Merge branch 'dev-moneydetail' --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 153 insertions(+), 0 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java new file mode 100644 index 0000000..c8c730c --- /dev/null +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java @@ -0,0 +1,153 @@ +package com.yeshi.fanli.service.impl.user; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; +import com.yeshi.fanli.entity.money.UserMoneyDetail; +import com.yeshi.fanli.service.inter.user.UserMoneyDetailService; +import com.yeshi.fanli.util.TimeUtil; +import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO; +import com.yeshi.fanli.vo.money.UserMonthMoneyVO; + +@Service +public class UserMoneyDetailServiceImpl implements UserMoneyDetailService { + + @Resource + private UserMoneyDetailMapper userMoneyDetailMapper; + + @Override + public List<UserMoneyDetailHistoryVO> listUserMoneyDetailForClient(Long uid, Long userMoneyDetailId, Date maxTime) { + List<UserMoneyDetailHistoryVO> finalList = new ArrayList<>(); + List<UserMoneyDetail> list = null; + if (userMoneyDetailId == null) {// 棣栨璇锋眰 + if (maxTime == null)// 娌℃湁绛涢�夋椂闂� + { + list = userMoneyDetailMapper.selectByMaxCreateTime(uid, + new Date(System.currentTimeMillis() + 1000 * 60 * 60L), 20); + } else {// 绛涢�変簡鏃堕棿 + list = userMoneyDetailMapper.selectByMaxCreateTime(uid, maxTime, 20); + } + if (list != null && list.size() > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(list.get(0).getCreateTime().getTime()); + UserMoneyDetailHistoryVO vo = new UserMoneyDetailHistoryVO(); + vo.setMonth(new UserMonthMoneyVO(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)+1)); + finalList.add(vo); + } + } else {// 浜屾璇锋眰 + + int size = 21; + List<UserMoneyDetail> tempList = userMoneyDetailMapper.selectByUidWithIndexId(uid, userMoneyDetailId, size); + Set<Date> dateSet = new HashSet<>();// 鐢ㄤ簬鍌ㄥ瓨鏄惁鍦ㄥ悓涓�鏃堕棿涓婇潰锛堢簿纭埌绉掞級 + if (tempList.size() > 0) { + for (UserMoneyDetail umd : tempList) { + dateSet.add(umd.getCreateTime()); + } + + List<UserMoneyDetail> tempList2 = new ArrayList<>(); + while (dateSet.size() == 1 && tempList2.size() != tempList.size() && size < 40) {// 鍙湁涓�涓椂闂寸偣鐨勬暟鎹� + tempList = tempList2; + size += 10; + tempList2 = userMoneyDetailMapper.selectByUidWithIndexId(uid, userMoneyDetailId, size); + dateSet.clear(); + for (UserMoneyDetail umd : tempList2) { + dateSet.add(umd.getCreateTime()); + } + } + if (tempList2.size() > 0) + tempList = tempList2; + } + + for (int i = 0; i < tempList.size(); i++) { + if (tempList.get(i).getId().longValue() == userMoneyDetailId) { + tempList.remove(i); + break; + } else { + tempList.remove(i); + i--; + } + } + list = tempList; + } + + if (list != null) + for (int i = 0; i < list.size(); i++) { + if (i > 0 && !TimeUtil.getGernalTime(list.get(i - 1).getCreateTime().getTime(), "yyyy-MM") + .equalsIgnoreCase(TimeUtil.getGernalTime(list.get(i).getCreateTime().getTime(), "yyyy-MM"))) {// 鏈潯鏁版嵁涓庝笂鏉℃暟鎹笉鏄悓涓�鏈堝垯鎻掑叆鏈堜唤 + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(list.get(i).getCreateTime().getTime()); + UserMoneyDetailHistoryVO vo = new UserMoneyDetailHistoryVO(); + vo.setMonth(new UserMonthMoneyVO(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)+1)); + finalList.add(vo); + } + UserMoneyDetailHistoryVO vo = new UserMoneyDetailHistoryVO(); + vo.setDetail(list.get(i)); + finalList.add(vo); + } + + // 缁熻鏈堣祫閲� + + Map<Integer, UserMoneyDetailHistoryVO> monthMap = new TreeMap<>(); + if(finalList.size()>1) + for (int i = 0; i < finalList.size(); i++) { + if (finalList.get(i).getMonth() != null) + monthMap.put(i, finalList.get(i)); + } + + if (!monthMap.isEmpty()) { + List<String> dateFormat = new ArrayList<>(); + Iterator<Integer> keys = monthMap.keySet().iterator(); + while (keys.hasNext()) { + Integer key = keys.next(); + String date = ""; + date += monthMap.get(key).getMonth().getYear(); + date += "-"; + date += (monthMap.get(key).getMonth().getMonth() + "").length() < 2 + ? "0" + monthMap.get(key).getMonth().getMonth() : monthMap.get(key).getMonth().getMonth(); + dateFormat.add(date); + } + List<UserMonthMoneyVO> voList = userMoneyDetailMapper.selectMonthMoneyByUid(uid, dateFormat); + + int p = 0; + keys = monthMap.keySet().iterator(); + while (keys.hasNext()) { + Integer key = keys.next(); + finalList.get(key).getMonth().setExpend(voList.get(p).getExpend()); + finalList.get(key).getMonth().setIncome(voList.get(p).getIncome()); + p++; + } + } + return finalList; + } + + @Override + public long countUserMoneyDetailForClient(Long uid, Long userMoneyDetailId, Date maxTime) { + long monthCount = 0L; + long detailCount = 0L; + // 鏈�氳繃鏃堕棿绛涢�夛紝鏌ヨ鎵�鏈� + if (maxTime == null) { + detailCount = userMoneyDetailMapper.selectCountByUid(uid); + // 鐢ㄤ簬琛ㄧず褰撳墠鎵�鏈� + monthCount = userMoneyDetailMapper.selectMonthCountByUid(uid, + new Date(System.currentTimeMillis() + 1000 * 60 * 60L)); + } else {// 閫氳繃鏃堕棿绛涢�変簡鐨勶紝闇�瑕佹煡璇㈡墍鏈� + detailCount = userMoneyDetailMapper.selectCountByUidAndMaxCreateTime(uid, maxTime); + monthCount = userMoneyDetailMapper.selectMonthCountByUid(uid, maxTime); + } + + return monthCount + detailCount; + } + +} -- Gitblit v1.8.0