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