package *;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.extern.slf4j.Slf4j;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.unionx.supplier.dao.SupplierScoreMapper;
/**
*
* ClassName: HolidayUtils.java <br>
* Description: 每年保存法定节假日<br>
* Create Time: 2022年4月21日<br>
*/
@Slf4j
public class HolidayUtils {
public void syncHoliday() {
log.info("每年12月28凌晨1点定时同步下一年的节假日信息,同步节假日开始时间 = {}",111);
String url = "http://timor.tech/api/holiday/year/";
OkHttpClient client = new OkHttpClient();
Response response;
//解密数据
String rsa = null;
Request request = new Request.Builder().url(url).get()
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
try {
response = client.newCall(request).execute();
rsa = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Map map = JSONObject.parseObject(rsa, Map.class);
if (map != null) {
Integer code = (Integer) map.get("code");
if (code == 0) {
JSONObject holidayJson = (JSONObject) map.get("holiday");
String jsonString = holidayJson.toJSONString();
log.info("获取节假日数据内容为 jsonString = 【{}】", jsonString);
Set<Map.Entry<String, Object>> entrySet = holidayJson.entrySet();
//List<String> rawInfoList = new ArrayList<String>();
for (Map.Entry<String, Object> entry : entrySet) {
String key = entry.getKey();
Object value = entry.getValue();
JSONObject object = JSONObject.parseObject(value.toString());
boolean holiday = object.getBoolean("holiday");
//往数据库插入节假日信息
supplierScoreMapper.insertHoliday(object.getDate("date"),holiday?1:0);
}
} else {
log.error("E|NoSubmitTask|syncHoliday()|同步节假日信息时,调用节假日网站服务出错!");
}
}
log.info("每年12月28凌晨1点定时同步下一年的节假日信息,同步节假日结束时间 = {}", 111111);
}
public static void main(String[] args) {
getJjr(2022);
}
/**
* 获取节假日不含周末------获取指定月份
*
* @param year 例如:2022
* @return
*/
private static Map<String, JSONArray> getJjr(int year) {
String url = "http://timor.tech/api/holiday/year/"+year;
OkHttpClient client = new OkHttpClient();
Map<String, String> dateMap = new HashMap<>();
List<JSONObject> list = new ArrayList();
JSONObject jsonObject ;
Response response;
//解密数据
String rsa = null;
Request request = new Request.Builder()
.url(url)
.get()
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
try {
response = client.newCall(request).execute();
rsa = response.body().string();
Map map = JSONObject.parseObject(rsa, Map.class);
Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) map.get("holiday");
Set<String> strings = holiday.keySet();
for (String str : strings) {
Map<String, Object> stringObjectMap = holiday.get(str);
boolean bool = (Boolean) stringObjectMap.get("holiday");
//筛选掉补班
if (bool) {
jsonObject = new JSONObject();
String substring = str.substring(0, 2);
jsonObject.put(substring, stringObjectMap);
list.add(jsonObject);
}
}
Map<String, JSONArray> jsonArrayMap = new HashMap<>();
for (int i = 1; i < 13; i++) {
JSONArray jsonArray = new JSONArray();
String keyMap = null;
for (JSONObject object : list) {
if (i < 10 && object.containsKey("0"+i)){
keyMap = "0" + i;
jsonArray.add(object.get("0"+i));
}else if (i >= 10 && object.containsKey("1"+i)){
jsonArray.add(object.get("1"+i));
keyMap = "1" + i;
}
}
jsonArrayMap.put(keyMap, jsonArray);
}
return jsonArrayMap;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
Java获取节假日信息工具类
最新推荐文章于 2024-06-29 03:12:55 发布