摘要
本文通过java调用工作日聚合API接口,并将每天的工作日封装成对象。
本文通过java调用工作日聚合API接口,并将每天的工作日封装成对象。
工作日实体类:
package com.example.demo.entity; /** * @project:用户管理模块 * @description:工作日历表 工作日历 * @version 1.0.0 * @errorcode * 错误码: 错误描述 * @author * <li>2019-01-23 www.blog-china.cn Create 1.0 */ public class TkCalendarInfo { /**日期 */ private String calendarDay; /**是否工作日 0:否1:是 */ private String dayType; /**工作日类型 0表示工作日、为1节假日、为2双休日、3为调休日(上班) */ private String dayCode; /**星期几 每周的第几天 */ private String dayOfWeek; /**说明 */ private String dayRemark; /** * @return 日期 */ public String getCalendarDay() { return calendarDay; } /** * @param calendarDay 日期 */ public void setCalendarDay(String calendarDay) { this.calendarDay = calendarDay == null ? null : calendarDay.trim(); } /** * @return 是否工作日 0:否1:是 */ public String getDayType() { return dayType; } /** * @param dayType 是否工作日 0:否1:是 */ public void setDayType(String dayType) { this.dayType = dayType == null ? null : dayType.trim(); } /** * @return 工作日类型 0表示工作日、为1节假日、为2双休日、3为调休日(上班) */ public String getDayCode() { return dayCode; } /** * @param dayCode 工作日类型 0表示工作日、为1节假日、为2双休日、3为调休日(上班) */ public void setDayCode(String dayCode) { this.dayCode = dayCode == null ? null : dayCode.trim(); } /** * @return 星期几 每周的第几天 */ public String getDayOfWeek() { return dayOfWeek; } /** * @param dayOfWeek 星期几 每周的第几天 */ public void setDayOfWeek(String dayOfWeek) { this.dayOfWeek = dayOfWeek == null ? null : dayOfWeek.trim(); } /** * @return 说明 */ public String getDayRemark() { return dayRemark; } /** * @param dayRemark 说明 */ public void setDayRemark(String dayRemark) { this.dayRemark = dayRemark == null ? null : dayRemark.trim(); } } /** * CHANGE HISTORY * M1 2020-08-23 guopengfei@bobfintech.com.cn Create */
调用的主逻辑:
package com.example.demo.rili; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Calendar; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.alibaba.fastjson.JSONObject; import com.example.demo.entity.TkCalendarInfo; import com.example.demo.mapper.TkCalendarInfoMapper; import com.example.demo.util.StringUtils; @RunWith(SpringRunner.class) @SpringBootTest public class RiLiRef { @Test public void refushDate() { String httpUrl = "http://api.tianapi.com/txapi/jiejiari/index"; String[] paramKeys = new String[] { "89f79f0a8d2579a7d2fa0705c2d6596e", "905cc68a91f83312075aa5ea0656f4ca", "cec997546cb9353dbc8cbfd3b09d8b1d", "355a502e8665eb64c253f96459d6dbaf" }; String param = ""; Calendar c = Calendar.getInstance(); int year = 2021; for (int i = 9; i < 12; i++) { if (i / 3 == 0) { param = "key=" + paramKeys[0] + "&"; } else if (i / 3 == 1) { param = "key=" + paramKeys[1] + "&"; } else if (i / 3 == 2) { param = "key=" + paramKeys[2] + "&"; } else if (i / 3 == 3) { param = "key=" + paramKeys[3] + "&"; } c.set(year, i, 1); int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); for (int x = 1; x <= lastDay; x++) { String day4No = year + ""; String day = "date=" + year ; if (i + 1 < 10) { day +="-0" + (i + 1); day4No += "0" + (i + 1); }else { day +="-" + (i + 1); day4No += (i + 1); } if(x<10) { day += "-0" + x; day4No += "0" + x; }else { day += "-" + x; day4No += x; } if (day4No.length() != 8) { System.out.println(); } String jsonResult = request(httpUrl, param + day); System.out.println(jsonResult); JSONObject jsonObject = JSONObject.parseObject(jsonResult); if (jsonObject.getInteger("code") == 200) { JSONObject dayDetail = jsonObject.getJSONArray("newslist").getJSONObject(0); TkCalendarInfo tkCalendarInfo = new TkCalendarInfo(); tkCalendarInfo.setCalendarDay(day4No); String dayCode = dayDetail.getString("daycode"); if (StringUtils.isBlank(dayCode)) { System.out.println("" + dayCode); } tkCalendarInfo.setDayCode(dayCode); String tip = dayDetail.getString("tip"); // 0表示工作日、为1节假日、为2双休日、3为调休日(上班) if (StringUtils.equals(dayCode, "1")) { tkCalendarInfo.setDayRemark("节假日" + tip); } else if (StringUtils.equals(dayCode, "3")) { tkCalendarInfo.setDayRemark("为调休日(上班)" + tip); } String isnotwork = dayDetail.getString("isnotwork"); // 0为工作日,1为休息日 if (StringUtils.equals(isnotwork, "0")) { tkCalendarInfo.setDayType("1"); } else { tkCalendarInfo.setDayType("0"); } tkCalendarInfo.setDayOfWeek(dayDetail.getString("weekday")); //tkCalendarInfoMapper.insert(tkCalendarInfo); //TODO 封装的每个工作日对象,可以进行其他处理 } else { System.out.println("在日期:" + day4No + "截止"); break; } } } } /** * @param urlAll * :请求接口 * @param httpArg * :参数 * @return 返回结果 */ public static String request(String httpUrl, String httpArg) { BufferedReader reader = null; String result = null; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?" + httpArg; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = null; while ((strRead = reader.readLine()) != null) { sbf.append(strRead); sbf.append("\r\n"); } reader.close(); result = sbf.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } }
上述的四个key是网上聚合API生成的KEY,大家可以拿来使用,只需要修改上面代码中的下面一行代码为对应的年份,即可生成当年的工作日情况
int year = 2021;
例如上面为2021年,就会生成2021年的工作日历