104 lines
3.7 KiB
Java
104 lines
3.7 KiB
Java
package com.yutou.tools.utils;
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
import com.yutou.tools.bean.CalendarTask;
|
|
import lombok.SneakyThrows;
|
|
|
|
import java.text.DateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
|
|
@SuppressWarnings("MagicConstant")
|
|
public class CalendarTools {
|
|
public static final String REDIS_TAG = "Calendar";
|
|
|
|
public static JSONObject getHoliday() {
|
|
int year = Calendar.getInstance(DateFormat.getDateInstance().getTimeZone(), Locale.CHINA).get(Calendar.YEAR);
|
|
return getHoliday(year + "");
|
|
}
|
|
|
|
@SneakyThrows
|
|
public static JSONObject getHoliday(String year) {
|
|
String get = HttpTools.get(String.format("https://timor.tech/api/holiday/year/%s", year));
|
|
JSONObject json = JSONObject.parseObject(get);
|
|
JSONObject date = new JSONObject();
|
|
JSONArray dateHoliday = new JSONArray();
|
|
JSONObject holiday = json.getJSONObject("holiday");
|
|
JSONArray a1=new JSONArray();
|
|
JSONArray a2=new JSONArray();
|
|
for (CalendarTask task : getTasks()) {
|
|
for (String datum : getMouthData(task)) {
|
|
date.put(new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyy-M-d").parse(datum.split(" ")[0])), task.getTitle());
|
|
a1.add(datum.split(" ")[0]);
|
|
a2.add(datum.split(" ")[0]);
|
|
}
|
|
}
|
|
|
|
for (String key : holiday.keySet()) {
|
|
JSONObject _tmp = holiday.getJSONObject(key);
|
|
date.put(year + "-" + key, _tmp.getString("name"));
|
|
String _key=new SimpleDateFormat("yyyy-M-d").format(new SimpleDateFormat("yyyy-MM-dd").parse(year + "-" + key));
|
|
if(_tmp.getBooleanValue("holiday")){
|
|
a1.add(_key);
|
|
}else{
|
|
a2.add(_key);
|
|
}
|
|
}
|
|
dateHoliday.add(a1);
|
|
dateHoliday.add(a2);
|
|
JSONObject tmp = new JSONObject();
|
|
tmp.put("date", date);
|
|
tmp.put("holiday", dateHoliday);
|
|
return tmp;
|
|
}
|
|
public static boolean addTask(CalendarTask task){
|
|
task.setId(RedisTools.list_get(REDIS_TAG).size()+1);
|
|
String json = JSONObject.toJSONString(task);
|
|
RedisTools.list_add(REDIS_TAG,json);
|
|
return true;
|
|
}
|
|
public static List<CalendarTask> getTasks(){
|
|
List<CalendarTask> list=new ArrayList<>();
|
|
Set<String> set = RedisTools.list_get(REDIS_TAG);
|
|
for (String s : set) {
|
|
list.add(JSONObject.parseObject(s,CalendarTask.class));
|
|
}
|
|
return list;
|
|
}
|
|
public static boolean removeTask(CalendarTask task){
|
|
for (String s : RedisTools.list_get(REDIS_TAG)) {
|
|
CalendarTask tmp=JSONObject.parseObject(s,CalendarTask.class);
|
|
if(tmp.getId()==task.getId()){
|
|
RedisTools.list_remove(REDIS_TAG,s);
|
|
break;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
public static List<String> getMouthData(CalendarTask task) {
|
|
List<String> list = new ArrayList<>();
|
|
Calendar calendar = Calendar.getInstance(Locale.CHINA);
|
|
calendar.setTime(task.getStartTime());
|
|
list.add(new SimpleDateFormat("yyyy-M-d HH:mm:ss",Locale.CHINA).format(calendar.getTime()));
|
|
while (true) {
|
|
calendar.set(task.getType(),calendar.get(task.getType())+task.getTime());
|
|
if(calendar.getTime().getTime()>task.getEndTime().getTime()){
|
|
break;
|
|
}
|
|
list.add(new SimpleDateFormat("yyyy-M-d HH:mm:ss",Locale.CHINA).format(calendar.getTime()));
|
|
if(task.getModel()==CalendarTask.MODEL_ONE){
|
|
break;
|
|
}
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
}
|
|
}
|