1.需求
要求保存每一条数据的startTime、endTime的中间时间段是唯一的,跟其他数据时间段不能存在冲突
比如: (2019-03-01 -> 2019-03-03 ) (2019-03-02 -> 2019-03-04 ) 这两个时间段存在重叠部分
2.思路
首先,校验前端传的list自身先比较是否有时间冲突;
然后,校验前端List跟数据库存在的list是否有时间冲突;
方法: 两次for循环list实现
2.代码部分
*实体类*
/**
* @Param:
* @Description: 实体类
* @Author: zyf 2019/3/29
*/
class TimeModel {
private Long jobId; //主键
private Date startTime;//开始时间
private Date endTime; //结束时间
//getter/setter
}
*前端显示日期格式*
public static final String DATE_FORMAT_Y_M_DHM = "yyyy-MM-dd HH:mm"; //比较日期计算到分钟,当然数据库里面存的数据一般精确到秒
// date转String
public static String dateToStr(Date date) {
String strDate = "";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_Y_M_DHM);
strDate = sdf.format(date);
return strDate;
}
前端List数据校验(自身)
/**
* @Param:
* @Description: list自身查询有无时间冲突,
* 优化1: 如果自身的list过大, j遍历不能从0开始,只需要往后面数据比较大小
* @Author: zyf 2019/3/29
*/
public static String checkSelf(List<TimeModel> list) {
String res = null;
if (list.size() == 0) {
return res;
}
for (int i = 0; i < list.size(); i++) {
// long I_S = list.get(i).getEffectiveStartTime().getTime();
// long I_E = list.get(i).getEffectiveEndTime().getTime();
Date I_S = list.get(i).getStartTime();
Date I_E = list.get(i).getEndTime();
// for (int j = 0; j < list.size(); j++) {
for (int j = i+1; j < list.