|
@@ -14,6 +14,7 @@ import com.usky.iot.service.PmProjectService;
|
|
|
import com.usky.iot.service.PmWorkContentService;
|
|
|
import com.usky.iot.service.PmWorkReportService;
|
|
|
import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
+import com.usky.iot.service.vo.PmProjectTotalWorkTimeVo;
|
|
|
import com.usky.iot.service.vo.PmProjectWorkTimeVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -23,6 +24,7 @@ import java.math.RoundingMode;
|
|
|
import java.time.DayOfWeek;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
import java.time.temporal.TemporalAdjusters;
|
|
|
import java.util.*;
|
|
|
|
|
@@ -78,7 +80,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
LambdaQueryWrapper<PmWorkReport> queryWrapperR = Wrappers.lambdaQuery();
|
|
|
queryWrapperR.select(PmWorkReport::getId, PmWorkReport::getReportDate, PmWorkReport::getSubmitDate, PmWorkReport::getTomorrowPlan, PmWorkReport::getCoordinateWork, PmWorkReport::getCcTo)
|
|
|
.eq(PmWorkReport::getSubmitterId, SecurityUtils.getUserId())
|
|
|
- .between(PmWorkReport::getReportDate, startDate, endDate)
|
|
|
+ .between(PmWorkReport::getReportDate, startDate1, endDate1)
|
|
|
.orderByAsc(PmWorkReport::getReportDate)
|
|
|
.apply(reportId != 0, "id = " + reportId);
|
|
|
List<PmWorkReport> reports = this.list(queryWrapperR);
|
|
@@ -260,50 +262,71 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
LocalDate today = LocalDate.now();
|
|
|
LocalDate startOfWeek = today.with(TemporalAdjusters.previousOrSame(java.time.DayOfWeek.MONDAY));
|
|
|
LocalDate endOfWeek = today.with(TemporalAdjusters.nextOrSame(java.time.DayOfWeek.SUNDAY));
|
|
|
+ LocalDateTime startOfWeekDateTime = startOfWeek.atStartOfDay();
|
|
|
+ LocalDateTime endOfWeekDateTime = endOfWeek.atTime(23, 59, 59);
|
|
|
LocalDate startOfMonth = today.withDayOfMonth(1);
|
|
|
LocalDate endOfMonth = today.withDayOfMonth(today.lengthOfMonth());
|
|
|
+ LocalDateTime startOfMonthDateTime = startOfMonth.atStartOfDay();
|
|
|
+ LocalDateTime endOfMonthDateTime = endOfMonth.atTime(23, 59, 59);
|
|
|
+
|
|
|
BigDecimal weekTotal = BigDecimal.ZERO;
|
|
|
- LambdaQueryWrapper<PmWorkContent> wrapperW = Wrappers.lambdaQuery();
|
|
|
- wrapperW.eq(PmWorkContent::getSubmitterId,SecurityUtils.getUserId())
|
|
|
- .between(PmWorkContent::getCreateTime,startOfWeek,endOfWeek);
|
|
|
- List<PmWorkContent> week = pmWorkContentMapper.selectList(wrapperW);
|
|
|
- if (week.isEmpty()){
|
|
|
- weekTotalMap.put("WeekWorkTimeTotal",0);
|
|
|
- weekMap.put("WeeklyData",week);
|
|
|
- }
|
|
|
- for (int i = 0; i < week.size(); i++) {
|
|
|
- weekTotal = weekTotal.add(week.get(i).getWorkTime());
|
|
|
- }
|
|
|
- BigDecimal monthTotal = BigDecimal.ZERO;
|
|
|
- LambdaQueryWrapper<PmWorkContent> wrapperM = Wrappers.lambdaQuery();
|
|
|
- wrapperM.eq(PmWorkContent::getSubmitterId,SecurityUtils.getUserId())
|
|
|
- .between(PmWorkContent::getCreateTime,startOfMonth,endOfMonth);
|
|
|
- List<PmWorkContent> month = pmWorkContentMapper.selectList(wrapperW);
|
|
|
- if (month.isEmpty()){
|
|
|
- monthTotalMap.put("MonthWorkTimeTotal",0);
|
|
|
- monthMap.put("MonthlyData",month);
|
|
|
+ List<PmProjectWorkTimeVo> week = pmWorkContentMapper.workTimeCount(startOfWeekDateTime, endOfWeekDateTime, SecurityUtils.getUserId());
|
|
|
+ if (week.isEmpty()) {
|
|
|
+ weekTotalMap.put("WeekWorkTimeTotal", 0);
|
|
|
+ weekMap.put("WeeklyData", week);
|
|
|
}
|
|
|
- for (int j = 0; j < month.size(); j++) {
|
|
|
- monthTotal = monthTotal.add(month.get(j).getWorkTime());
|
|
|
+ List<PmProjectTotalWorkTimeVo> workTimeVoListW = pmWorkContentMapper.timeCount(startOfWeekDateTime, endOfWeekDateTime, SecurityUtils.getUserId());
|
|
|
+ for (int i = 0; i < workTimeVoListW.size(); i++) {
|
|
|
+ weekTotal = weekTotal.add(workTimeVoListW.get(i).getTotalWorkTime());
|
|
|
}
|
|
|
+ BigDecimal totalPercentageW = BigDecimal.ZERO;
|
|
|
for (int a = 0; a < week.size(); a++) {
|
|
|
PmProjectWorkTimeVo workTimeVo = new PmProjectWorkTimeVo();
|
|
|
workTimeVo.setProjectName(week.get(a).getProjectName());
|
|
|
workTimeVo.setWorkTime(week.get(a).getWorkTime());
|
|
|
+ if (a != week.size() - 1) {
|
|
|
+ BigDecimal percentage = week.get(a).getWorkTime().divide(weekTotal, scale, roundingMode);
|
|
|
+ workTimeVo.setPercentage(percentage);
|
|
|
+ totalPercentageW = totalPercentageW.add(percentage);
|
|
|
+ } else {
|
|
|
+ BigDecimal lastPercentage = BigDecimal.ONE.subtract(totalPercentageW);
|
|
|
+ workTimeVo.setPercentage(lastPercentage);
|
|
|
+ }
|
|
|
workTimeVo.setPercentage(week.get(a).getWorkTime().divide(weekTotal, scale, roundingMode));
|
|
|
returnListW.add(workTimeVo);
|
|
|
}
|
|
|
+
|
|
|
+ BigDecimal monthTotal = BigDecimal.ZERO;
|
|
|
+ List<PmProjectWorkTimeVo> month = pmWorkContentMapper.workTimeCount(startOfMonthDateTime, endOfMonthDateTime, SecurityUtils.getUserId());
|
|
|
+ if (month.isEmpty()) {
|
|
|
+ weekTotalMap.put("MonthWorkTimeTotal", 0);
|
|
|
+ weekMap.put("MonthlyData", month);
|
|
|
+ }
|
|
|
+ List<PmProjectTotalWorkTimeVo> workTimeVoListM = pmWorkContentMapper.timeCount(startOfMonthDateTime, endOfMonthDateTime, SecurityUtils.getUserId());
|
|
|
+ for (int i = 0; i < workTimeVoListM.size(); i++) {
|
|
|
+ monthTotal = monthTotal.add(workTimeVoListM.get(i).getTotalWorkTime());
|
|
|
+ }
|
|
|
+ BigDecimal totalPercentageM = BigDecimal.ZERO;
|
|
|
for (int b = 0; b < month.size(); b++) {
|
|
|
PmProjectWorkTimeVo workTimeVo = new PmProjectWorkTimeVo();
|
|
|
workTimeVo.setProjectName(month.get(b).getProjectName());
|
|
|
workTimeVo.setWorkTime(month.get(b).getWorkTime());
|
|
|
- workTimeVo.setPercentage(month.get(b).getWorkTime().divide(weekTotal, scale, roundingMode));
|
|
|
+ if (b != month.size() - 1) {
|
|
|
+ BigDecimal percentage = month.get(b).getWorkTime().divide(monthTotal, scale, roundingMode);
|
|
|
+ workTimeVo.setPercentage(percentage);
|
|
|
+ totalPercentageM = totalPercentageM.add(percentage);
|
|
|
+ } else {
|
|
|
+ BigDecimal lastPercentage = BigDecimal.ONE.subtract(totalPercentageM);
|
|
|
+ workTimeVo.setPercentage(lastPercentage);
|
|
|
+ }
|
|
|
+
|
|
|
returnListM.add(workTimeVo);
|
|
|
}
|
|
|
- weekTotalMap.put("WeekWorkTimeTotal",weekTotal);
|
|
|
- monthTotalMap.put("MonthWorkTimeTotal",monthTotal);
|
|
|
- weekMap.put("WeeklyData",returnListW);
|
|
|
- monthMap.put("MonthlyData",returnListM);
|
|
|
+
|
|
|
+ weekTotalMap.put("WeekWorkTimeTotal", weekTotal);
|
|
|
+ monthTotalMap.put("MonthWorkTimeTotal", monthTotal);
|
|
|
+ weekMap.put("WeeklyData", returnListW);
|
|
|
+ monthMap.put("MonthlyData", returnListM);
|
|
|
returnList.add(weekTotalMap);
|
|
|
returnList.add(monthTotalMap);
|
|
|
returnList.add(weekMap);
|