package com.casic.zjo2o.crm.utils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.casic.zjo2o.crm.dao.CrmholidayDao;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
/**
* 日期操作工具类
*
* @author sl
* @create 2018-09-19 17:56
*/
@Component
public class DateUtils {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
@Autowired
private CrmholidayDao crmholidayDao;
public static DateUtils dateUtils;
@PostConstruct
public void init() {
dateUtils = this;
}
/*
* startDate 开始日期
* endDate 结束日期
* @return 在该段日期范围内存在多少天非工作日s
*/
// public static Integer getRestDay(Date startDate, Date endDate,Integer dayCount) {
// int restDay = 0;
// while(Integer.parseInt(sdf.format(startDate)) <= Integer.parseInt(sdf.format(endDate))) {
// String thisDate = sdf.format(startDate);
// String resultStr = HttpRequest.sendGet("http://api.goseek.cn/Tools/holiday", "date="+thisDate);
// JSONObject obj = JSONObject.fromObject(resultStr);
//
// if(!"0".equals(obj.get("data").toString())) {
// restDay++;
// }
// Calendar c = Calendar.getInstance();
// c.setTime(startDate);
// c.add(c.DATE, 1);
// startDate = c.getTime();
// }
// if(restDay == 0) {
// return dayCount;
// }else {
// dayCount = restDay + dayCount;
// Calendar c = Calendar.getInstance();
// c.setTime(endDate);
// c.add(c.DATE, restDay);
// Date newEndDate = c.getTime();
// c.setTime(endDate);
// c.add(c.DATE, 1);
// return getRestDay(c.getTime(), newEndDate, dayCount);
// }
//
// }
public static Integer getRestDay(Date startDate, Date endDate,Integer dayCount) {
int restDay = 0;
DBObject query = new BasicDBObject();
DBObject db = new BasicDBObject();
DBObject db2 = new BasicDBObject();
BasicDBList values = new BasicDBList();
db.put("day", new BasicDBObject("$lte", Integer.valueOf(sdf.format(endDate))));
db2.put("day", new BasicDBObject("$gte", Integer.valueOf(sdf.format(startDate))));
values.add(db);
values.add(db2);
query.put("$and", values);
Long resultCount = dateUtils.crmholidayDao.count(query);
restDay = resultCount.intValue();
if(restDay == 0) {
return dayCount;
}else {
dayCount = restDay + dayCount;
Calendar c = Calendar.getInstance();
c.setTime(endDate);
c.add(c.DATE, restDay);
Date newEndDate = c.getTime();
c.setTime(endDate);
c.add(c.DATE, 1);
return getRestDay(c.getTime(), newEndDate, dayCount);
}
}
public CrmholidayDao getCrmholidayDao() {
return crmholidayDao;
}
public void setCrmholidayDao(CrmholidayDao crmholidayDao) {
this.crmholidayDao = crmholidayDao;
}
}