实用的工具方法

1.List分页方法

/**
 * 对list集合进行分页处理
 *
 * @return
 */
public List<T> ListSplit(List<T> list,int page,int rows) {
    List<T> newList=new ArrayList<T>();
    total=list.size();
    if ((rows*(page - 1)) <= total){
        newList=list.subList(rows*(page-1), ((rows*page)>= total?total:(rows*page)));
    }
    return newList;
}

2.等额本息的计算方法

 

/**
 * 等额本息计算
 * @param principal
 * @param yearRate
 * @param terms
 * @return
 */
public static CalcResult calcMCEI(Integer principal, BigDecimal yearRate, Integer terms){
    BigDecimal monthRate = yearRate.divide(ONEYEAR_MONTHS,8,BigDecimal.ROUND_HALF_UP);

    CalcResult calcResult = new CalcResult();
    //以元来进行计算
    BigDecimal principalBig = new BigDecimal(principal);
    //等额本息=借款本金*月利率*(1+月利率)^还款月数/(1+月利率)^还款月数-1
    BigDecimal top = principalBig.multiply(monthRate).multiply((monthRate.add(ONE)).pow(terms));//分子
    BigDecimal bottom = ((ONE.add(monthRate)).pow(terms)).subtract(ONE);
    BigDecimal monthRepay = top.divide(bottom,8,BigDecimal.ROUND_HALF_UP);

    calcResult.setTerms(terms);

    TreeMap<Integer,CalcResult.Detail> details = new TreeMap<>();

    //剩余未还本金
    BigDecimal principalRemain = principalBig;
    int totalRepayPrincipal = 0;
    for(int i=1;i<=terms;i++){
        CalcResult.Detail detail = new CalcResult.Detail();
        //月还利息
        BigDecimal monthRepayInterest = principalRemain.multiply(monthRate);

        detail.setTerm(i);
        if(i == terms){
            //最后一期月还本金=总借款本金-前面N期已还本金
            detail.setMonthRepayPrincipal(principal-totalRepayPrincipal);
        }else{
            //月还本金
            BigDecimal monthRepayPrincipal = monthRepay.subtract(monthRepayInterest);
            detail.setMonthRepayPrincipal(monthRepayPrincipal.setScale(0,BigDecimal.ROUND_HALF_UP).intValue());
        }
        totalRepayPrincipal+=detail.getMonthRepayPrincipal();
        principalRemain = principalRemain.subtract(BigDecimal.valueOf(detail.getMonthRepayPrincipal()));
        detail.setMonthRepayInterest(monthRepayInterest.setScale(0,BigDecimal.ROUND_HALF_UP).intValue());
        detail.setMonthRepay(detail.getMonthRepayPrincipal()+detail.getMonthRepayInterest());
        detail.setRemainPrincipal(principalRemain.setScale(0,BigDecimal.ROUND_HALF_UP).intValue());

        details.put(i,detail);
    }
    calcResult.setDetails(details);

    int totalRepay = details.entrySet().stream().map(Map.Entry::getValue).map(CalcResult.Detail::getMonthRepay).reduce((a, b)->a+b).orElse(0);
    calcResult.setTotalRepay(totalRepay);
    calcResult.setTotalRepayPrincipal(totalRepayPrincipal);
    calcResult.setTotalRepayInterest(totalRepay-totalRepayPrincipal);

    return calcResult;
}

3.日期的处理

   public class DateUtil {

    public static final int HUOR_16 = 16;
    public static final int HUOR_12 = 12;
    public static final int HUOR_20 = 23;
    public static final String DATE_8 = "yyyyMMdd";
    public static final DateTimeFormatter DATE_TIME_FORMATTER_8 = DateTimeFormatter.ofPattern(DATE_8);
    public static final String DATE_10 = "yyyy-MM-dd";
    public static final DateTimeFormatter DATE_TIME_FORMATTER_10 = DateTimeFormatter.ofPattern(DATE_10);
    public static final String DATETIME_19 = "yyyy-MM-dd HH:mm:ss";
    public static final DateTimeFormatter DATE_TIME_FORMATTER_19 = DateTimeFormatter.ofPattern(DATETIME_19);
    public static final String DATETIME_17 = "yyyyMMdd HH:mm:ss";
    public static final DateTimeFormatter DATE_TIME_FORMATTER_17 = DateTimeFormatter.ofPattern(DATETIME_17);
    public static final String DATETIME_14 = "yyyyMMddHHmmss";
    public static final DateTimeFormatter DATE_TIME_FORMATTER_14 = DateTimeFormatter.ofPattern(DATETIME_14);
    public static final String DATETIME_14_01 = "yyyyMMddHHmmssSSS";
    public static final DateTimeFormatter DATE_TIME_FORMATTER_14_01 = DateTimeFormatter.ofPattern(DATETIME_14_01);

    public static final SimpleDateFormat SDF_10 = new SimpleDateFormat("yyyy-MM-dd");

    public static String getCurrentDate() {
        return DATE_TIME_FORMATTER_10.format(LocalDate.now());
    }

    public static String getCurrentDateShort() {
        return DATE_TIME_FORMATTER_8.format(LocalDate.now());
    }

    public static String getCurrentDateTime() {
        return DATE_TIME_FORMATTER_17.format(LocalDateTime.now());
    }

    public static String getCurrentDateTime14() {
        return DATE_TIME_FORMATTER_14.format(LocalDateTime.now());
    }

    public static String getCurrentDateTime14_01() {
        return DATE_TIME_FORMATTER_14_01.format(LocalDateTime.now());
    }

    public static String getCurrentDateTime17() {
        return DATE_TIME_FORMATTER_17.format(LocalDateTime.now());
    }

    public static String getCurrentDateTime19() {
        return DATE_TIME_FORMATTER_19.format(LocalDateTime.now());
    }

    public static String getCurrentDateTime(String pattern) {
        return DateTimeFormatter.ofPattern(pattern).format(LocalDateTime.now());
    }

    public static String getCurrentDateTime(DateTimeFormatter formatter) {
        return formatter.format(LocalDateTime.now());
    }

    public static String getDateTimeStr(LocalDateTime dateTime, DateTimeFormatter formatter) {
        return formatter.format(dateTime);
    }

    public static String getDateStr(LocalDate dateTime, DateTimeFormatter formatter) {
        return formatter.format(dateTime);
    }

    public static LocalDateTime parseDateTime(String dateTime,DateTimeFormatter formatter){
        return LocalDateTime.parse(dateTime,formatter);
    }

    public static LocalDate parseDate(String date,DateTimeFormatter formatter){
        return LocalDate.parse(date,formatter);
    }

    public static long betweenDays(String startDateStr, String endDateStr){
        LocalDate startDate = parseDate(startDateStr, DateUtil.DATE_TIME_FORMATTER_8);
        LocalDate endDate = parseDate(endDateStr, DateUtil.DATE_TIME_FORMATTER_8);
        return endDate.toEpochDay()-startDate.toEpochDay();
    }

    public static long betweenDays(LocalDate startDate, LocalDate endDate) {
        return endDate.toEpochDay()-startDate.toEpochDay();
    }

    /**
     * WARN:此方法是根据时分秒的差值来计算相差天数
     * 如果计算2017-05-26 23:59:00 到 2017-05-27 00:01:00 的相差天数并不会是一天 而是0
     * 要计算天数差值 请将LocalDateTime.toLocalDate() 后调用上面的重载方法 betweenDays(LocalDate,LocalDate)
     * @param startDateTime
     * @param endDateTime
     * @return
     */
    public static long betweenDays(LocalDateTime startDateTime,LocalDateTime endDateTime){
        return Duration.between(startDateTime,endDateTime).toDays();
    }
    /**
     *
     * @description 计算两个日期相差天数
     * @author 孙铮
     * @time 2014-8-27 下午2:00:43
     * @return 相差天数
     */
    public static Integer dayDifference(String startDay, String endDay) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        long to;
        long from;
        Integer dayNum = 0;
        try {
            to = df.parse(endDay).getTime();
            from = df.parse(startDay).getTime();
            dayNum = (int) ((to - from) / (1000 * 60 * 60 * 24));
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return dayNum + 1;
    }
    /** 日期是早于还是晚于另一个日期
     * @author guohuan
     * @time 2017-10-30
     * @return true or false true 为前一个时间在后一个时间之前
     */
    public static Boolean compareDateTime(String startDay, String endDay) {
        LocalDateTime startDayTime = DateUtil.parseDateTime(startDay,DateUtil.DATE_TIME_FORMATTER_19);
        LocalDateTime endDayTime = DateUtil.parseDateTime(endDay,DateUtil.DATE_TIME_FORMATTER_19);
        return startDayTime.isAfter(endDayTime);

    }

}                                                                                    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值