HolidayUtils.java 4.14 KB
package com.lhcredit.common.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.lhcredit.common.utils.http.HttpUtils;
import com.lhcredit.framework.config.HolidayConfig;
import com.lhcredit.project.business.holiday.domain.Holiday;
import com.lhcredit.project.business.holiday.service.IHolidayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

@Component
public class HolidayUtils {

    @Autowired
    private HolidayConfig holidayConfig;

    @Autowired
    private IHolidayService holidayService;

    /*
     *  判断当前时期是否为节假日
     *  return 是true 否false
    */
    public boolean updateHoliday(Date date){
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        JSONObject res=null;
        String code=null;
        String data=null;
        String result=null;
        String url= holidayConfig.getHolidayUrl();
        try {
            String dateStr = formatter.format(date);
            String param="date="+dateStr;
            result= HttpUtils.sendGet(url,param);
            res=JSONObject.parseObject(result);
            Map map = new HashMap(res);
            data = String.valueOf(map.get("data"));
            code = String.valueOf(map.get("code"));
        }catch (Exception e){
        }
        if(StringUtils.contains("1,3",String.valueOf(data))){
            return true;
        }else{
            return false;
        }
    }

    /*
     *  判断当前时期下一天是否为节假日,如果是返回节假日后的第一个工作日,否则返回当前日期参数
     *  return date
     */
    public Date getWorkDay(Date date){
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        String data=null;
        String result=null;
        String url= holidayConfig.getHolidayUrl();
//        String url="http://api.goseek.cn/Tools/holiday";
        Calendar calendar = Calendar.getInstance();
        Date workDay = null;
        calendar.setTime(date);
        int i=-1;
        do{
            i+=1;
            try {
                String dateStr = formatter.format(calendar.getTime());
                String param="date="+dateStr;
                result= HttpUtils.sendGet(url,param);
                JSONObject res=JSONObject.parseObject(result);
                Map map = new HashMap(res);
                data = String.valueOf(map.get("data"));
                calendar.add(calendar.DATE, 1);
            }catch (Exception e){
            }
        }while("1,3".contains(data));
        if(i==0){
            return date;
        }else{
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(c.DATE, i);
            workDay = c.getTime();
            return workDay;
        }
    }

//    public static void main(String[] args) {
//        Date date= new Date();
//        Calendar c = Calendar.getInstance();
//        c.setTime(date);
//        c.add(c.DATE, 1);
//        System.out.println(getWorkDay(c.getTime()));
//    }
    public int getHolidayYear(String year) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        if(StringUtils.isEmpty(year)){
            return 0;
        }
        String url = "https://timor.tech/api/holiday/year/"+year;
        String result= HttpUtils.sendGet(url,"week=Y");
        JSONObject jsonObject = JSONArray.parseObject(result).getJSONObject("holiday");
        List<Holiday> list = new ArrayList<>();
        for(String str:jsonObject.keySet()){
            String day = year+"-"+str;
            Holiday holiday = new Holiday();
            Date date = simpleDateFormat.parse(day);
            holiday.setHolidayDate(date);
            JSONObject json = (JSONObject) jsonObject.get(str);
            if("false".equals(json.getString("holiday"))){
                continue;
            }else{
                list.add(holiday);
            }
        }
        if(list.size()>0){
            holidayService.insertHolidayByList(list);
        }
        return 1;
    }
}