package com.zc.business.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ruoyi.system.service.ISysConfigService; import com.zc.business.domain.DcHolidays; import com.zc.business.enums.UniversalEnum; import com.zc.business.service.IDcHolidaysService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.time.LocalDate; import java.util.List; /** * */ @Component public class DcTrafficFlowWarningDate { @Autowired private IDcHolidaysService dcHolidaysService; @Autowired private ISysConfigService configService; @Scheduled(cron = "0 0 0 1 * ?") public void yearPriorToAcquisition() { try { String apiKey= configService.selectConfigByKey("holidayKey");//密钥 // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 获取前一年 年份 int currentYear = currentDate.getYear(); String urlString = UniversalEnum.GET_HOLIDAYS.getValue() + apiKey + "&date=" + currentYear + "&type=1"; URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(UniversalEnum.GET.getValue()); connection.setRequestProperty("Accept", "application/json"); if (connection.getResponseCode() != UniversalEnum.TWO_HUNDRED.getNumber()) { throw new RuntimeException("HTTP错误码:" + connection.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream()))); String output; StringBuilder response = new StringBuilder(); while ((output = br.readLine()) != null) { response.append(output); } connection.disconnect(); JSONObject jsonResponse = JSONObject.parseObject(response.toString()); // 检查响应状态是否成功 if (jsonResponse.getInteger("code") == UniversalEnum.TWO_HUNDRED.getNumber()) { // 获取result对象 JSONObject resultObj = jsonResponse.getJSONObject("result"); // 获取节假日列表JSONArray JSONArray listArray = resultObj.getJSONArray("list"); DcHolidays dcHolidays = new DcHolidays(); dcHolidays.setDate(currentYear); List<DcHolidays> dcHolidays1 = dcHolidaysService.selectDcHolidaysList(dcHolidays); if (dcHolidays1.size() <=UniversalEnum.ZERO.getNumber()){ // 遍历节假日列表 添加数据 for (int i = UniversalEnum.ZERO.getNumber(); i < listArray.size(); i++) { JSONObject holidayObj = listArray.getJSONObject(i); String vacation = holidayObj.getString("vacation"); String name = holidayObj.getString("name"); dcHolidays.setName(name); dcHolidays.setVacation(vacation); // 年份 dcHolidays.setDate(currentYear); int i1 = dcHolidaysService.insertDcHolidays(dcHolidays); } }else { // 遍历节假日列表 修改数据 for (int i = UniversalEnum.ZERO.getNumber(); i < listArray.size(); i++) { JSONObject holidayObj = listArray.getJSONObject(i); String vacation = holidayObj.getString("vacation"); String name = holidayObj.getString("name"); DcHolidays dcHoliday = new DcHolidays(); dcHoliday.setName(name); dcHoliday.setVacation(vacation); // 年份 dcHoliday.setDate(currentYear); dcHolidaysService.updateDcHoliday(dcHoliday); } } } } catch (Exception e) { e.printStackTrace(); } } }