List<PartnerBusinessDataBO> getPartnerBusinessDataList(PartnerBusinessDataQuery partnerBusinessDataQuery);
@Override public List<PartnerBusinessDataBO> getPartnerBusinessDataList(PartnerBusinessDataQuery partnerBusinessDataQuery) { List<PartnerBusinessDataBO> partnerBusinessDataBOS = new ArrayList<>(partnerBusinessDataQuery.getPageSize()); LocalDate startDate = partnerBusinessDataQuery.getStartDate(); LocalDate endDate = partnerBusinessDataQuery.getEndDate(); Calendar calendar = Calendar.getInstance(); calendar.setTime(DateUtils.toDate(endDate)); while (calendar.getTime().compareTo(DateUtils.toDate(startDate)) != -1){ PartnerBusinessDataBO partnerBusinessDataBO = new PartnerBusinessDataBO(); Date time = calendar.getTime(); LocalDate localDate = time.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); partnerBusinessDataQuery.setRegTime(localDate); Integer registeredUserCount = this.partnerScheduleTrackMapper.findRegUserCount(partnerBusinessDataQuery); if(registeredUserCount == null){ registeredUserCount = 0; } partnerBusinessDataBO.setCurrentDate(localDate); partnerBusinessDataBO.setPartnerNo("NO45545"); partnerBusinessDataBO.setPartnerName("zhangsan"); partnerBusinessDataBO.setRegisteredUserCount(registeredUserCount); partnerBusinessDataBO.setApplyUserCount(1); partnerBusinessDataBO.setLoanUserCount(2); partnerBusinessDataBO.setExpireUserCount(3); partnerBusinessDataBO.setPaymentUserCount(4); partnerBusinessDataBOS.add(partnerBusinessDataBO); calendar.add(Calendar.DATE, -1); } return partnerBusinessDataBOS; }
package com.rocky.fintech.boss.entity.schedule; import com.fasterxml.jackson.annotation.JsonFormat; import com.rocky.fintech.boss.util.DateUtils; import lombok.Getter; import lombok.Setter; import java.io.Serializable; import java.time.LocalDate; @Getter @Setter public class PartnerBusinessDataQuery implements Serializable { /** * 用户ID */ private Long userId; /** * */ private Long partnerId; /** * 用户注册时间 */ @JsonFormat(pattern = DateUtils.FORMAT_1) private LocalDate regTime; /** * 每页几条 */ private int pageSize; /** * 自然日 开始 */ @JsonFormat(pattern = DateUtils.FORMAT_1) private LocalDate startDate; /** * 自然日 结束 */ @JsonFormat(pattern = DateUtils.FORMAT_1) private LocalDate endDate; /** * 商户名称 */ private String partnerName; /** * 用户类别 最小 */ private Integer repeatsLoanCountMin; /** * 用户类别 最大 */ private Integer repeatsLoanCountMax; }
package com.rocky.fintech.boss.entity.schedule; import com.fasterxml.jackson.annotation.JsonFormat; import com.rocky.fintech.boss.util.DateUtils; import lombok.Getter; import lombok.Setter; import java.io.Serializable; import java.time.LocalDate; @Getter @Setter public class PartnerBusinessDataBO implements Serializable { /** * 商户ID */ private Long partnerId; /** * 用户ID */ private Long userId; /** * 自然日 当前日期 */ @JsonFormat(pattern = DateUtils.FORMAT_1) private LocalDate currentDate; /** * 商户编号 */ private String partnerNo; /** * 商户名称 */ private String partnerName; /** * 注册用户 */ private Integer registeredUserCount; /** * 申请用户 */ private Integer applyUserCount; /** * */ private Integer loanUserCount; /** * */ private Integer expireUserCount; /** * */ private Integer paymentUserCount; }
package com.rocky.fintech.boss.entity.schedule; import com.github.pagehelper.PageInfo; import com.rocky.fintech.entity.PageRequestDTO; import java.util.List; /** * Created with IntelliJ IDEA. * * @Auther: zhangyi * @Date: 2019/10/31/11:09 * @Description: */ public class PageCountMethod { public PageInfo getCountNewPageInfo(int total, List list, PageRequestDTO request) { PageInfo realPageInfo = new PageInfo<>(list); int start = 0; int end = 0; int totalPages = 0; int totalRecord = list.size(); int pageSize = request.getPageSize(); int size = request.getPageSize(); int number = request.getPageNum(); //设置总数 realPageInfo.setTotal(total); //设置每页的显示条数 realPageInfo.setPageSize(size); //设置要显示的是第几页的数据 realPageInfo.setPageNum(number); //当前数 realPageInfo.setSize(totalRecord); //计算获取对应的要显示的数据 if (totalRecord % pageSize == 0) { totalPages = totalRecord / pageSize; } else { totalPages = totalRecord / pageSize + 1; } realPageInfo.setPages(totalPages); //初始边界值计算 if (number == 1) { start = 0; realPageInfo.setHasPreviousPage(false); realPageInfo.setPrePage(0); realPageInfo.setIsFirstPage(true); } else { start = realPageInfo.getPageSize() * (realPageInfo.getPageNum() - 1); realPageInfo.setHasPreviousPage(true); realPageInfo.setPrePage(number - 1); realPageInfo.setIsFirstPage(false); } realPageInfo.setStartRow((number - 1) * pageSize); //结束边界值计算 if ((start + realPageInfo.getPageSize() > realPageInfo.getTotal())) { end = totalRecord; realPageInfo.setHasNextPage(false); realPageInfo.setIsLastPage(true); realPageInfo.setEndRow(totalRecord); } else { end = start + realPageInfo.getPageSize(); realPageInfo.setHasNextPage(true); realPageInfo.setNextPage(number + 1); realPageInfo.setIsLastPage(false); realPageInfo.setEndRow((number) * pageSize); } if (start < end && end <= totalRecord) { realPageInfo.setList(list.subList(start, end)); } if (realPageInfo.getSize() == 0) { realPageInfo.setStartRow(0); realPageInfo.setEndRow(0); } else { realPageInfo.setStartRow(realPageInfo.getStartRow() + 1); realPageInfo.setEndRow(realPageInfo.getStartRow() - 1 + realPageInfo.getSize()); } realPageInfo.setPages(totalPages); realPageInfo.setNavigateLastPage(totalPages > number ? number + 1 : totalPages); return realPageInfo; } }
package com.rocky.fintech.boss.enums; import lombok.Getter; /** * Created with IntelliJ IDEA. * * @Auther: zhangyi * @Date: 2019/10/31/11:31 * @Description: */ @Getter public enum PartnerBusinessDataEnum { START_DATE("2019-10-01", "firstDate"); private final String value; private final String name; PartnerBusinessDataEnum(String value, String name) { this.value = value; this.name = name; } }
package com.rocky.fintech.util; import java.util.Calendar; import java.util.Date; /** * Created with IntelliJ IDEA. * * @Auther: zhangyi * @Date: 2019/10/30/16:43 * @Description: */ public class PartnerBusinessDataUtil { public int longOfTwoDate(Date first, Date second) throws Exception { Calendar calendar = Calendar.getInstance(); calendar.setTime(first); int cnt = 0; while (calendar.getTime().compareTo(second) != 0) { calendar.add(Calendar.DATE, 1); cnt++; } return cnt; } public Date getSecondDate(Date second, Integer pageNum, Integer pageSize) throws Exception { Calendar calendar = Calendar.getInstance(); calendar.setTime(second); if(pageNum== null || pageNum == 0) { pageNum = 1; return calendar.getTime(); } calendar.add(Calendar.DATE, -(pageNum-1)*pageSize); return calendar.getTime(); } public Date getFirstDate(Date first, Date second, Integer pageSize) throws Exception { Calendar calendar = Calendar.getInstance(); calendar.setTime(second); calendar.add(Calendar.DATE, -(pageSize-1)); if(calendar.getTime().compareTo(first) < 0) { calendar.setTime(first); return calendar.getTime(); }else { return calendar.getTime(); } } }
package com.canary.finance.util; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Stream; public class DateTimeUtil { /** * 获取两个日期间隔的所有日期 * @param start 格式必须为'2018-01-25' * @param end 格式必须为'2018-01-25' * @return */ public static List<String> getBetweenDate(String start, String end){ List<String> list = new ArrayList<>(); LocalDate startDate = LocalDate.parse(start); LocalDate endDate = LocalDate.parse(end); long distance = ChronoUnit.DAYS.between(startDate, endDate); if (distance < 1) { return list; } Stream.iterate(startDate, d -> { return d.plusDays(1); }).limit(distance + 1).forEach(f -> { list.add(f.toString()); }); return list; } /** * 返回一天中每个小时段的开始时间和结束时间 如: (凌晨2点数据)格式: * 开始2019-03-21 01:00:00 2019-03-21 01:59:59 * @param dateTime * @return */ public static List<Map<String, Object>> getBetweenDateTime(LocalDate dateTime) { List<Map<String, Object>> totalDataList = new ArrayList<>(); DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateTimeStr = format.format(dateTime); int timeCount = 24; for (int i = 0; i < timeCount; i++) { Map<String, Object> totalDataMap = new HashMap<String, Object>(); if(i<10) { totalDataMap.put("beginTime", dateTimeStr+" 0"+i+":00:00"); totalDataMap.put("endTime", dateTimeStr+" 0"+i+":59:59"); totalDataList.add(totalDataMap); }else { totalDataMap.put("beginTime", dateTimeStr+" "+i+":00:00"); totalDataMap.put("endTime", dateTimeStr+" "+i+":59:59"); totalDataList.add(totalDataMap); } } return totalDataList; } /** *(仅做展示使用) 获取一天24个时间 格式:1:00-24:00 * @return */ public static String[] getTime() { String[] arrayTime = new String[24]; for (int i = 0; i <arrayTime.length; i++) { arrayTime[i]=(i+1)+":00"; } return arrayTime; } public static void main(String[] args) { List<String> list = DateTimeUtil.getBetweenDate("2019-01-14", "2019-03-15"); for(String str:list) { System.out.println(str); } } }
protected int longOfTwoDate(Date first, Date second) throws Exception { Calendar calendar = Calendar.getInstance(); calendar.setTime(first); int cnt = 0; while (calendar.getTime().compareTo(second) != 0) { calendar.add(Calendar.DATE, 1); cnt++; } return cnt; } protected Date getSecondDate(Date second, Integer page) throws Exception { Calendar calendar = Calendar.getInstance(); calendar.setTime(second); if(page== null || page == 0) { page = 1; return calendar.getTime(); } calendar.add(Calendar.DATE, -(page-1)*15); return calendar.getTime(); } protected Date getFirstDate(Date first, Date second) throws Exception { Calendar calendar = Calendar.getInstance(); calendar.setTime(second); calendar.add(Calendar.DATE, -14); if(calendar.getTime().compareTo(first) < 0) { calendar.setTime(first); return calendar.getTime(); }else { return calendar.getTime(); } }
protected int getOffset(Integer page, Integer size) { if(page == null || page == 0 ) { page = 1; } if(size == null || size == 0) { size = 15; } return (page-1)*size; } protected int getPageSize(Integer size) { if(size == null || size == 0) { size = 15; } return size; } protected int getPage(Integer page) { if(page == null || page == 0) { page = 1; } return page; } protected int getTotalPage(int total, Integer size) { if(size == null || size == 0) { size = 15; } return (int)Math.ceil((double)total / (double)size); }