|
|
@ -1,7 +1,9 @@ |
|
|
|
package com.ccsens.signin.service; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import com.ccsens.signin.bean.dto.ProjectDto; |
|
|
|
import com.ccsens.signin.bean.po.SysProjectList; |
|
|
|
import com.ccsens.signin.bean.po.SysProjectListExample; |
|
|
@ -17,7 +19,9 @@ import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.List; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author 逗 |
|
|
@ -99,4 +103,66 @@ public class ProjectService implements IProjectService{ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public List<String> haveProjectDay(ProjectDto.QueryHaveProject param, Long userId) { |
|
|
|
//返回值
|
|
|
|
List<String> haveProject = new ArrayList<>(); |
|
|
|
|
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
Date startTimeParam = new Date(param.getStartTime()); |
|
|
|
Date endTimeParam = new Date(param.getEndTime()); |
|
|
|
long dayDifference = DateUtil.betweenDay(startTimeParam, endTimeParam, false)+1; |
|
|
|
|
|
|
|
Long realStartTime = null; |
|
|
|
Long realEndTime = null; |
|
|
|
Long realDifference = null; |
|
|
|
List<String> realDateList = new ArrayList<>(); |
|
|
|
//查询项目列表
|
|
|
|
List<ProjectVo.QueryProject> projectList = projectDao.queryProjectList(param.getStartTime(), param.getEndTime(), userId); |
|
|
|
//获取项目的时间范围
|
|
|
|
if (ObjectUtil.isNotNull(projectList)) { |
|
|
|
List<Long> projectStartTimeList = projectList.stream().map(ProjectVo.QueryProject::getStartTime).collect(Collectors.toList()); |
|
|
|
List<Long> projectEndTimeList = projectList.stream().map(ProjectVo.QueryProject::getEndTime).collect(Collectors.toList()); |
|
|
|
Long maxStartTime = Collections.max(projectStartTimeList); |
|
|
|
Long maxEndTime = Collections.max(projectEndTimeList); |
|
|
|
|
|
|
|
realStartTime = maxStartTime >= param.getStartTime() ? maxStartTime : param.getStartTime(); |
|
|
|
realEndTime = maxEndTime >= param.getEndTime() ? param.getEndTime() : maxEndTime; |
|
|
|
realDifference = DateUtil.betweenDay(new Date(realStartTime),new Date(realEndTime),false)+1; |
|
|
|
GregorianCalendar calendar = new GregorianCalendar(); |
|
|
|
calendar.setTime(new Date(realStartTime)); |
|
|
|
realDateList.add(format.format(new Date(realStartTime))); |
|
|
|
for (int i = 1; i < realDifference; i++) { |
|
|
|
calendar.add(Calendar.DATE,1); |
|
|
|
Date time = calendar.getTime(); |
|
|
|
realDateList.add(format.format(time)); |
|
|
|
} |
|
|
|
} |
|
|
|
//获取参数的时间范围
|
|
|
|
GregorianCalendar calendar = new GregorianCalendar(); |
|
|
|
calendar.setTime(startTimeParam); |
|
|
|
List<String> dateList = new ArrayList<>(); |
|
|
|
dateList.add(format.format(startTimeParam)); |
|
|
|
for (int i = 1; i < dayDifference; i++) { |
|
|
|
calendar.add(Calendar.DATE,1); |
|
|
|
Date time = calendar.getTime(); |
|
|
|
dateList.add(format.format(time)); |
|
|
|
} |
|
|
|
System.out.println(dateList); |
|
|
|
|
|
|
|
//比较参数时间与项目时间
|
|
|
|
for (int i = 0; i < dateList.size(); i++) { |
|
|
|
haveProject.add("0"); |
|
|
|
for (int y = 0; y < realDateList.size(); y++) { |
|
|
|
if (dateList.get(i).equals(realDateList.get(y))){ |
|
|
|
haveProject.set(i,"1"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return haveProject; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|