一、介绍
依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
<!--MP插件-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--Mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.1</version>
</dependency>
<!--JPA-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
持久层可以用MyBatisPlus也可以用JPA。
节假日和工作日信息
思路
首先设置当天日期状态是1
(1为工作日、2为节假日)
判断如果当天是周六周日
,日期状态设置为2
;如果是国家规定的法定节假日
,日期状态也设置为2
;还需要把法定节假日调休
的周六或者是周日的状态修改为1
(例如五一、国庆节的调休)
二、代码
实体类
package com.lsh.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* @author :LiuShihao
* @date :Created in 2020/12/22 3:51 下午
* @desc :
*/
@Data
//@Builder
@TableName("mhaq_date")
public class MhaqDate {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField(value = "date_str")
private String dateStr;
@TableField(value = "date_state")
private Integer dateState;
@TableField(value = "flag")
private Integer flag;
}
Mapper
package com.lsh.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lsh.model.MhaqDate;
import org.apache.ibatis.annotations.Mapper;
/**
* @author :LiuShihao
* @date :Created in 2020/12/15 2:54 下午
* @desc :
*/
@Mapper
public interface MhaqDateMapper extends BaseMapper<MhaqDate> {}
MhaqDateService
public interface MhaqDateService {
void insertAll();
}
MhaqDateServiceImpl
package com.lsh.service.impl;
import com.lsh.mapper.MhaqDateMapper;
import com.lsh.model.MhaqDate;
import com.lsh.service.MhaqDateService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
/**
* @author :LiuShihao
* @date :Created in 2020/12/22 3:55 下午
* @desc :
*/
@Slf4j
@Transactional
@Service
public class MhaqDateServiceImpl implements MhaqDateService {
@Autowired
MhaqDateMapper mhaqDateMapper;
@Override
public void insertAll() {
ArrayList<MhaqDate> mhaqDates = new ArrayList<>();
LocalDateTime now = LocalDateTime.now();
//注意 年份为小写y 否则会出错
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime firstDayOfNextYear = LocalDateTime.of(LocalDate.from(now.with(TemporalAdjusters.firstDayOfNextYear())), LocalTime.MIN);
LocalDateTime lastDayOfYear = LocalDateTime.of(LocalDate.from(now.with(TemporalAdjusters.lastDayOfYear())), LocalTime.MAX);
System.out.println(firstDayOfNextYear.format(pattern));
System.out.println(lastDayOfYear.format(pattern));
int id = 2;
while(firstDayOfNextYear.compareTo(lastDayOfYear) == 1){
MhaqDate mhaqDate = new MhaqDate();
mhaqDate.setId(id);
String format = firstDayOfNextYear.format(pattern);
// System.out.println(format);
mhaqDate.setDateStr(format);
mhaqDate.setFlag(0);
mhaqDate.setDateState(1);
// 周六周日 state 1 为工作日 2 为节假日
int value = firstDayOfNextYear.getDayOfWeek().getValue();
if(value == 6 || value == 7){
//如果是周六周日 设置为节假日
mhaqDate.setDateState(2);
}
//如果是法定节假日 也设置为设置为节假日
if ("2021-01-01".equals(format)||
"2021-01-02".equals(format)||
"2021-01-03".equals(format)||
"2021-02-11".equals(format)||
"2021-02-12".equals(format)||
"2021-02-13".equals(format)||
"2021-02-14".equals(format)||
"2021-02-15".equals(format)||
"2021-02-16".equals(format)||
"2021-02-17".equals(format)||
"2021-04-03".equals(format)||
"2021-04-04".equals(format)||
"2021-04-05".equals(format)||
"2021-05-01".equals(format)||
"2021-05-02".equals(format)||
"2021-05-03".equals(format)||
"2021-05-04".equals(format)||
"2021-05-05".equals(format)||
"2021-06-12".equals(format)||
"2021-06-13".equals(format)||
"2021-06-14".equals(format)||
"2021-09-19".equals(format)||
"2021-09-20".equals(format)||
"2021-09-21".equals(format)||
"2021-10-01".equals(format)||
"2021-10-02".equals(format)||
"2021-10-03".equals(format)||
"2021-10-04".equals(format)||
"2021-10-05".equals(format)||
"2021-10-06".equals(format)||
"2021-10-07".equals(format)){
mhaqDate.setDateState(2);
}
//节假日需要周六周日调休工作日 设置为工作日
if ("2021-02-07".equals(format)||
"2021-02-20".equals(format)||
"2021-04-25".equals(format)||
"2021-05-08".equals(format)||
"2021-09-18".equals(format)||
"2021-09-26".equals(format)||
"2021-10-09".equals(format)){
mhaqDate.setDateState(1);
}
System.out.println(mhaqDate);
mhaqDateMapper.insert(mhaqDate);
firstDayOfNextYear = firstDayOfNextYear.plusDays(1);
id = id+1;
}
}
}