调用天行数据api https://www.tianapi.com/apiview/139
表:
CREATE TABLE `date` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`date` date DEFAULT NULL COMMENT '日期',
`daycode` int(11) DEFAULT NULL COMMENT '日期类型,为0表示工作日、为1节假日、为2双休日、3为调休日(上班)',
`weekday` int(11) DEFAULT NULL COMMENT ' 星期(数字)',
`cnweekday` varchar(255) DEFAULT NULL COMMENT '星期(中文)',
`lunaryear` varchar(255) DEFAULT NULL COMMENT ' 农历年',
`lunarmonth` varchar(255) NOT NULL COMMENT '农历月',
`lunarday` varchar(255) DEFAULT NULL COMMENT '农历日',
`info` varchar(255) DEFAULT NULL COMMENT '节假日',
`start` int(11) DEFAULT NULL COMMENT '假期起点计数',
`now` int(11) DEFAULT NULL COMMENT '假期当前计数',
`end` int(11) DEFAULT NULL COMMENT '假期终点计数',
`holiday` varchar(255) DEFAULT NULL COMMENT '节日日期',
`name` varchar(255) DEFAULT NULL COMMENT '节假日名称(中文)',
`enname` varchar(255) DEFAULT NULL COMMENT '节日名称(英文)',
`isnotwork` int(11) DEFAULT NULL COMMENT '是否需要上班,0为工作日,1为休息日',
`vacation` varchar(1000) DEFAULT NULL COMMENT '节假日数组',
`remark` varchar(1000) DEFAULT NULL COMMENT ' 调休日数组',
`tip` varchar(1000) DEFAULT NULL COMMENT '放假提示',
`rest` varchar(1000) DEFAULT NULL COMMENT '拼假建议',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2164 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
代码:
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author
* @since 2021-04-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ba_date")
public class Date extends Model<Date> {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 日期
*/
private java.util.Date date;
/**
* 日期类型,为0表示工作日、为1节假日、为2双休日、3为调休日(上班)
*/
private Integer daycode;
/**
* 星期(数字)
*/
private Integer weekday;
/**
* 星期(中文)
*/
private String cnweekday;
/**
* 农历年
*/
private String lunaryear;
/**
* 农历月
*/
private String lunarmonth;
/**
* 农历日
*/
private String lunarday;
/**
* 节假日
*/
private String info;
/**
* 假期起点计数
*/
private Integer start;
/**
* 假期当前计数
*/
private Integer now;
/**
* 假期终点计数
*/
private Integer end;
/**
* 节日日期
*/
private String holiday;
/**
* 节假日名称(中文)
*/
private String name;
/**
* 节日名称(英文)
*/
private String enname;
/**
* 是否需要上班,0为工作日,1为休息日
*/
private Integer isnotwork;
/**
* 节假日数组
*/
private String vacation;
/**
* 调休日数组
*/
private String remark;
/**
* 放假提示
*/
private String tip;
/**
* 拼假建议
*/
private String rest;
/**
* 创建时间
*/
private java.util.Date createTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
@Slf4j
@Service
public class DateServiceImpl extends ServiceImpl<DateDao, Date> implements DateService {
@Override
public Result insertDateBatch() {
String key = "";//自行申请
List<Date> dates = new ArrayList<>();
//查询库中最后一个月数据
QueryWrapper<Date> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("id")
.last("limit 1");
Date one = getOne(wrapper);
String monthParam = "";
if (one!=null){
java.util.Date lastMonth = one.getDate();
java.util.Date starMonth = DateUtils.addMonth(lastMonth,1);
monthParam = DateUtils.format(starMonth,"yyyy-M");
}else {
// monthParam=startMonth;
monthParam="2021-4";
}
while ( DateUtils.parse(monthParam,"yyyy-M").getTime()<
// DateUtils.parse(endMonth,"yyyy-M").getTime()){
DateUtils.parse("2023-1","yyyy-M").getTime()){
String params = "key="+key+"&date="+monthParam+"&type=2";
String str = HttpUtils.get("http://api.tianapi.com/txapi/jiejiari/index",params);
log.info("/get 成功:"+str);
Result result = JSON.parseObject(str,Result.class);
if (!result.getCode().equals("200")){
return Result.failed(result.getCode(),result.getMsg());
}else {
dates.addAll(result.getNewslist());
}
java.util.Date month = DateUtils.parse(monthParam,"yyyy-M");
month = DateUtils.addMonth(month,1);
monthParam = DateUtils.format(month,"yyyy-M");
}
dates.forEach(i ->{
java.util.Date date = i.getDate();
i.setDate(DateUtils.addDay(date,1));
});
saveBatch(dates);
return Result.success();
}
}