|
@@ -5758,6 +5758,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//需要补的时间
|
|
|
double fillTime = monthVO.getStandardHours() - monthVO.getWorkingTime() - monthVO.getLeaveTime();
|
|
|
User user = userMapper.selectById(monthVO.getUserId());
|
|
|
+ TimeType timeType = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
|
|
|
yearMonth = yearMonth;
|
|
|
LocalDate time = LocalDate.parse(yearMonth, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
LocalDate startDate = time.with(TemporalAdjusters.firstDayOfMonth());
|
|
@@ -5777,10 +5778,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
String workEndTime = "";
|
|
|
if (startAndEndTime.size() != 0){
|
|
|
Map<String, Object> startAndEndTimeMap = startAndEndTime.get(0);
|
|
|
- workStartTime = startAndEndTimeMap.get("startTime").toString();
|
|
|
- workEndTime = startAndEndTimeMap.get("endTime").toString();
|
|
|
- }else {
|
|
|
- return msg;
|
|
|
+ workStartTime = startAndEndTimeMap.get("startTime")==null?"":startAndEndTimeMap.get("startTime").toString();
|
|
|
+ workEndTime = startAndEndTimeMap.get("endTime")==null?"":startAndEndTimeMap.get("endTime").toString();
|
|
|
}
|
|
|
List<TimeAutoExclude> timeAutoExclude = timeAutoExcludeMapper.selectList(new QueryWrapper<TimeAutoExclude>().eq("company_id", user.getCompanyId()));
|
|
|
//遍历工作日
|
|
@@ -5799,6 +5798,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
//如果该日工作时长没有填满
|
|
|
if (workTime < monthVO.getAllday()){
|
|
|
+ //改日可补时长
|
|
|
+ Double fillHour = monthVO.getAllday() - workTime;
|
|
|
Report reportItem = new Report();
|
|
|
reportItem.setCreatorId(user.getId());
|
|
|
reportItem.setProjectId(Integer.valueOf(projectId.get(0)));
|
|
@@ -5813,48 +5814,56 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
reportItem.setCompanyId(user.getCompanyId());
|
|
|
reportItem.setProjectAuditorId(request.getHeader("token"));
|
|
|
reportItem.setDeptId(user.getDepartmentId());
|
|
|
+ reportItem.setReportTimeType(timeType.getType());
|
|
|
if (workTime == 0){
|
|
|
reportItem.setWorkingTime(monthVO.getAllday());
|
|
|
+ if (reportItem.getReportTimeType().equals(2)){
|
|
|
+ reportItem.setStartTime(workStartTime);
|
|
|
+ reportItem.setEndTime(workEndTime);
|
|
|
+ }
|
|
|
}else {
|
|
|
- //获取日报的最小开始时间和最大结束时间
|
|
|
- List<String> endTime = report.stream().map(m -> m.get("endTime").toString()).collect(Collectors.toList());
|
|
|
- String eTime = endTime.get(0);
|
|
|
- for (String s : endTime) {
|
|
|
- if (s.compareTo(eTime) < 0){
|
|
|
- eTime = s;
|
|
|
+ if (reportItem.getReportTimeType().equals(2)){
|
|
|
+ //获取日报的最小开始时间和最大结束时间
|
|
|
+ List<String> endTime = report.stream().map(m -> m.get("endTime")==null?"12:00":m.get("endTime").toString()).collect(Collectors.toList());
|
|
|
+ String eTime = endTime.get(0);
|
|
|
+ for (String s : endTime) {
|
|
|
+ if (s.compareTo(eTime) < 0){
|
|
|
+ eTime = s;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- reportItem.setStartTime(eTime);
|
|
|
- if (eTime.compareTo(workEndTime) < 0){
|
|
|
- reportItem.setEndTime(workEndTime);
|
|
|
+ reportItem.setStartTime(eTime);
|
|
|
+ reportItem.setEndTime("23:50");
|
|
|
}else {
|
|
|
- reportItem.setEndTime("22:00");
|
|
|
+ reportItem.setWorkingTime(fillHour);
|
|
|
}
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
|
|
- try {
|
|
|
- long t = sdf.parse(reportItem.getEndTime()).getTime() - sdf.parse(reportItem.getStartTime()).getTime();
|
|
|
- int excludeTime = 0;
|
|
|
- if (timeAutoExclude.size() > 0) {
|
|
|
- for (TimeAutoExclude exclude : timeAutoExclude) {
|
|
|
- if (!(exclude.getEndTime().compareTo(reportItem.getStartTime()) < 0 || exclude.getStartTime().compareTo(reportItem.getEndTime()) > 0)) {
|
|
|
- //有交叉的情况,结束时间取较早的,开始时间取较晚的
|
|
|
- String mEndTime = exclude.getEndTime().compareTo(reportItem.getEndTime()) <0 ? exclude.getEndTime() : reportItem.getEndTime();
|
|
|
- String mStartTime = exclude.getStartTime().compareTo(reportItem.getStartTime()) > 0 ? exclude.getStartTime() : reportItem.getStartTime();
|
|
|
- //落在休息时间范围内,需要计算去掉的时间
|
|
|
- long subtractTime = sdf.parse(mEndTime).getTime() - sdf.parse(mStartTime).getTime();
|
|
|
- excludeTime += subtractTime;
|
|
|
+
|
|
|
+ if (reportItem.getReportTimeType() == 2){
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
|
|
+ try {
|
|
|
+ long t = sdf.parse(reportItem.getEndTime()).getTime() - sdf.parse(reportItem.getStartTime()).getTime();
|
|
|
+ int excludeTime = 0;
|
|
|
+ if (timeAutoExclude.size() > 0) {
|
|
|
+ for (TimeAutoExclude exclude : timeAutoExclude) {
|
|
|
+ if (!(exclude.getEndTime().compareTo(reportItem.getStartTime()) < 0 || exclude.getStartTime().compareTo(reportItem.getEndTime()) > 0)) {
|
|
|
+ //有交叉的情况,结束时间取较早的,开始时间取较晚的
|
|
|
+ String mEndTime = exclude.getEndTime().compareTo(reportItem.getEndTime()) <0 ? exclude.getEndTime() : reportItem.getEndTime();
|
|
|
+ String mStartTime = exclude.getStartTime().compareTo(reportItem.getStartTime()) > 0 ? exclude.getStartTime() : reportItem.getStartTime();
|
|
|
+ //落在休息时间范围内,需要计算去掉的时间
|
|
|
+ long subtractTime = sdf.parse(mEndTime).getTime() - sdf.parse(mStartTime).getTime();
|
|
|
+ excludeTime += subtractTime;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- if (excludeTime > 0) {
|
|
|
- t -= excludeTime;//去掉休息时间
|
|
|
- }
|
|
|
+ if (excludeTime > 0) {
|
|
|
+ t -= excludeTime;//去掉休息时间
|
|
|
+ }
|
|
|
|
|
|
- int minutes = (int)t/1000/60;
|
|
|
- double hours = minutes*1.0f/60;
|
|
|
- reportItem.setWorkingTime(hours);
|
|
|
- }catch (ParseException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ int minutes = (int)t/1000/60;
|
|
|
+ double hours = minutes*1.0f/60;
|
|
|
+ reportItem.setWorkingTime(hours);
|
|
|
+ }catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
reports.add(reportItem);
|