|
@@ -4,13 +4,18 @@ import com.aliyuncs.exceptions.ClientException;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
+import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
-import com.usky.iot.domain.*;
|
|
|
-import com.usky.iot.mapper.*;
|
|
|
+import com.usky.iot.domain.PmProject;
|
|
|
+import com.usky.iot.domain.PmReceive;
|
|
|
+import com.usky.iot.domain.PmWorkContent;
|
|
|
+import com.usky.iot.domain.PmWorkReport;
|
|
|
+import com.usky.iot.mapper.PmReceiveMapper;
|
|
|
+import com.usky.iot.mapper.PmWorkContentMapper;
|
|
|
+import com.usky.iot.mapper.PmWorkReportMapper;
|
|
|
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.config.DingTalkAndMessage;
|
|
|
import com.usky.iot.service.vo.PmProjectTotalWorkTimeVo;
|
|
|
import com.usky.iot.service.vo.PmProjectWorkTimeVo;
|
|
@@ -92,7 +97,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
dates.add(tempDate);
|
|
|
tempDate = tempDate.plusDays(1);
|
|
|
}
|
|
|
- //返回最新的一条数据给前端填充
|
|
|
+ // 返回最新的一条数据给前端填充
|
|
|
LambdaQueryWrapper<PmWorkReport> wrapper2 = Wrappers.lambdaQuery();
|
|
|
wrapper2.eq(PmWorkReport::getSubmitterId, SecurityUtils.getUserId())
|
|
|
.orderByDesc(PmWorkReport::getSubmitDate)
|
|
@@ -105,7 +110,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
List<PmWorkContent> contents1 = pmWorkContentMapper.selectList(wrapper);
|
|
|
report.get(0).setWorkContents(contents1);
|
|
|
}
|
|
|
- //固定返回七条数据,没有内容也要设置时间给前端渲染
|
|
|
+ // 固定返回七条数据,没有内容也要设置时间给前端渲染
|
|
|
LambdaQueryWrapper<PmWorkReport> queryWrapperR = Wrappers.lambdaQuery();
|
|
|
queryWrapperR.eq(PmWorkReport::getSubmitterId, SecurityUtils.getUserId())
|
|
|
.between(PmWorkReport::getReportDate, startDate1, endDate1)
|
|
@@ -133,7 +138,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
}
|
|
|
LambdaQueryWrapper<PmWorkContent> queryWrapperC = Wrappers.lambdaQuery();
|
|
|
queryWrapperC.select(PmWorkContent::getId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectId,
|
|
|
- PmWorkContent::getProjectName, PmWorkContent::getReportId, PmWorkContent::getCreateTime, PmWorkContent::getUpdateTime)
|
|
|
+ PmWorkContent::getProjectName, PmWorkContent::getReportId, PmWorkContent::getCreateTime, PmWorkContent::getUpdateTime)
|
|
|
.in(PmWorkContent::getReportId, ids)
|
|
|
.orderByDesc(PmWorkContent::getWorkTime);
|
|
|
List<PmWorkContent> contents = pmWorkContentMapper.selectList(queryWrapperC);
|
|
@@ -201,10 +206,12 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
String userName = SecurityUtils.getUsername();
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
Integer tenantId = SecurityUtils.getTenantId();
|
|
|
- BigDecimal totalWorkTime = BigDecimal.ZERO; //计算总工时
|
|
|
+ BigDecimal totalWorkTime = BigDecimal.ZERO; // 计算总工时
|
|
|
LocalDateTime dateTime = LocalDateTime.now();
|
|
|
LocalDateTime timingTime = pmWorkReport.getTimingTime();
|
|
|
LocalDateTime currentTimePlusMinutes = dateTime.plusMinutes(5);
|
|
|
+ String ccTo = pmWorkReport.getCcTo();
|
|
|
+ Integer rid = pmWorkReport.getId();
|
|
|
|
|
|
if (pmWorkReport.getWorkContents() == null) {
|
|
|
throw new BusinessException("报告内容不能为空,请检查!");
|
|
@@ -218,7 +225,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
for (PmWorkContent a : pmWorkReport.getWorkContents()) {
|
|
|
totalWorkTime = totalWorkTime.add(a.getWorkTime());
|
|
|
}
|
|
|
- //判断总工时是否超过24h
|
|
|
+ // 判断总工时是否超过24h
|
|
|
BigDecimal maxWorkTimePerDay = BigDecimal.valueOf(24);
|
|
|
if (totalWorkTime.compareTo(maxWorkTimePerDay) >= 0) {
|
|
|
throw new BusinessException("一天24小时都不够你用,请检查当日总工时!");
|
|
@@ -226,19 +233,14 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
if (totalWorkTime.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
throw new BusinessException("工时必须大于零!");
|
|
|
}
|
|
|
- LambdaQueryWrapper<PmWorkReport> reportWrapper = Wrappers.lambdaQuery();
|
|
|
- reportWrapper.select(PmWorkReport::getId)
|
|
|
- .eq(PmWorkReport::getReportDate, pmWorkReport.getReportDate())
|
|
|
- .last("LIMIT 1");
|
|
|
- List<PmWorkReport> repeat = this.list(reportWrapper);
|
|
|
- //判断是否携带reportId,不写带则为新增报告,携带则为编辑(更新)项目
|
|
|
- if (pmWorkReport.getId() == null) {
|
|
|
|
|
|
+ // 判断是否携带reportId,不写带则为新增报告,携带则为编辑(更新)项目
|
|
|
+ if (rid == null) {
|
|
|
PmWorkReport newReport = new PmWorkReport();
|
|
|
newReport.setReportDate(pmWorkReport.getReportDate());
|
|
|
newReport.setSubmitterId(userId);
|
|
|
newReport.setSubmitDate(LocalDateTime.now());
|
|
|
- newReport.setCcTo(pmWorkReport.getCcTo());
|
|
|
+ newReport.setCcTo(ccTo);
|
|
|
newReport.setCoordinateWork(pmWorkReport.getCoordinateWork());
|
|
|
newReport.setTomorrowPlan(pmWorkReport.getTomorrowPlan());
|
|
|
newReport.setCreateBy(userName);
|
|
@@ -253,7 +255,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
newReport.setTimingTime(timingTime);
|
|
|
newReport.setReportStatus(0);
|
|
|
} else {
|
|
|
- throw new BusinessException("定时时间需提前至少五分钟!");
|
|
|
+ throw new BusinessException("定时发送支持选中5分钟后的时间,请重新选择时间!");
|
|
|
}
|
|
|
}
|
|
|
try {
|
|
@@ -264,18 +266,18 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
throw new BusinessException("已存在重复数据,一人一天一篇报告");
|
|
|
}
|
|
|
|
|
|
- //获取报告中所有项目id
|
|
|
+ // 获取报告中所有项目id
|
|
|
List<Integer> projectIds = new ArrayList<>();
|
|
|
for (PmWorkContent b1 : pmWorkReport.getWorkContents()) {
|
|
|
projectIds.add(b1.getProjectId());
|
|
|
}
|
|
|
- //查出所有项目id对应项目名
|
|
|
+ // 查出所有项目id对应项目名
|
|
|
List<PmProject> project = pmProjectService.projectName(projectIds);
|
|
|
- //将项目名重新赋值
|
|
|
+ // 将项目名重新赋值
|
|
|
List<PmWorkContent> pmWorkContents = new ArrayList<>();
|
|
|
for (PmWorkContent b : pmWorkReport.getWorkContents()) {
|
|
|
for (int c = 0; c < project.size(); c++) {
|
|
|
- if (b.getProjectId() == project.get(c).getId()) {
|
|
|
+ if (b.getProjectId().equals(project.get(c).getId())) {
|
|
|
b.setProjectName(project.get(c).getProjectName());
|
|
|
}
|
|
|
}
|
|
@@ -294,58 +296,55 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
pmWorkContentMapper.insert(newContent);
|
|
|
pmWorkContents.add(newContent);
|
|
|
}
|
|
|
- if (timingTime == null) {
|
|
|
- //推送消息中心
|
|
|
+
|
|
|
+ // 抄送人不为空、非定时发送
|
|
|
+ if (StringUtils.isNotEmpty(ccTo) && timingTime == null) {
|
|
|
+ // 推送消息中心
|
|
|
dingTalkAndMessage.sendAsyncMessage(newReport);
|
|
|
|
|
|
- //是否同步钉钉
|
|
|
- if (pmWorkReport.getSendDingTalk() == 1) {
|
|
|
+ // 是否同步钉钉
|
|
|
+ if (pmWorkReport.getSendDingTalk().equals(1)) {
|
|
|
dingTalkAndMessage.sendDingTalkDailyReport(newReport, pmWorkContents);
|
|
|
}
|
|
|
|
|
|
- //存入报告消息表
|
|
|
- List<Long> longList = Arrays.stream(pmWorkReport.getCcTo().split(","))
|
|
|
- .map(Long::parseLong)
|
|
|
- .collect(Collectors.toList());
|
|
|
- receiveMessages(longList, newReport.getId());
|
|
|
- }
|
|
|
- //抄送人不为空,非定时发送
|
|
|
- if (StringUtils.isNotEmpty(pmWorkReport.getCcTo())) {
|
|
|
+ // 存入报告消息表
|
|
|
+ receiveMessages(ccTo, newReport.getId());
|
|
|
}
|
|
|
- } else if (repeat.size() > 0) {
|
|
|
+ } else {
|
|
|
PmWorkReport rp = new PmWorkReport();
|
|
|
- rp.setId(pmWorkReport.getId());
|
|
|
- //rp.setReportDate(pmWorkReport.getReportDate());
|
|
|
+ rp.setId(rid);
|
|
|
+ // rp.setReportDate(pmWorkReport.getReportDate());
|
|
|
rp.setSubmitterId(pmWorkReport.getSubmitterId());
|
|
|
- //rp.setSubmitDate(pmWorkReport.getSubmitDate());
|
|
|
- rp.setCcTo(pmWorkReport.getCcTo());
|
|
|
+ // rp.setSubmitDate(pmWorkReport.getSubmitDate());
|
|
|
+ if (pmWorkReport.getReportStatus().equals(0)) {
|
|
|
+ rp.setCcTo(ccTo);
|
|
|
+ }
|
|
|
rp.setCoordinateWork(pmWorkReport.getCoordinateWork());
|
|
|
rp.setTomorrowPlan(pmWorkReport.getTomorrowPlan());
|
|
|
rp.setCreateBy(pmWorkReport.getCreateBy());
|
|
|
- //rp.setCreateTime(pmWorkReport.getCreateTime());
|
|
|
- //rp.setDeptId(pmWorkReport.getDeptId());
|
|
|
- //rp.setTenantId(pmWorkReport.getTenantId());
|
|
|
+ // rp.setCreateTime(pmWorkReport.getCreateTime());
|
|
|
+ // rp.setDeptId(pmWorkReport.getDeptId());
|
|
|
+ // rp.setTenantId(pmWorkReport.getTenantId());
|
|
|
rp.setUpdateBy(userName);
|
|
|
rp.setUpdateTime(dateTime);
|
|
|
rp.setTotalHours(totalWorkTime);
|
|
|
- if (pmWorkReport.getIsRegularlySend() == 1) {
|
|
|
- if (timingTime != null && timingTime.isAfter(currentTimePlusMinutes)) {
|
|
|
- rp.setTimingTime(timingTime);
|
|
|
- } else {
|
|
|
- throw new BusinessException("定时时间需大于五分钟!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- rp.setIsRegularlySend(0);
|
|
|
+ rp.setIsRegularlySend(pmWorkReport.getIsRegularlySend());
|
|
|
+ if (pmWorkReport.getReportStatus().equals(0) && pmWorkReport.getIsRegularlySend().equals(1)) {
|
|
|
+ if (timingTime != null && timingTime.isAfter(currentTimePlusMinutes)) {
|
|
|
+ rp.setTimingTime(timingTime);
|
|
|
+ } else {
|
|
|
+ throw new BusinessException("定时发送支持选中5分钟后的时间,请重新选择时间!");
|
|
|
+ }
|
|
|
}
|
|
|
- //rp.setReportStatus(pmWorkReport.getReportStatus());
|
|
|
rp.setSendDingTalk(pmWorkReport.getSendDingTalk());
|
|
|
pmWorkReportMapper.updateById(rp);
|
|
|
+
|
|
|
LambdaQueryWrapper<PmWorkContent> queryWrapper = Wrappers.lambdaQuery();
|
|
|
queryWrapper.select(PmWorkContent::getReportId, PmWorkContent::getSubmitterId, PmWorkContent::getCreateBy, PmWorkContent::getCreateTime, PmWorkContent::getDeptId, PmWorkContent::getTenantId)
|
|
|
- .eq(PmWorkContent::getReportId, pmWorkReport.getId())
|
|
|
+ .eq(PmWorkContent::getReportId, rid)
|
|
|
.last("LIMIT 1");
|
|
|
PmWorkContent f = pmWorkContentMapper.selectOne(queryWrapper);
|
|
|
- pmWorkContentService.deleteContent(pmWorkReport.getId());
|
|
|
+ pmWorkContentService.deleteContent(rid);
|
|
|
List<PmWorkContent> contents = pmWorkReport.getWorkContents();
|
|
|
List<PmWorkContent> contentsList = new ArrayList<>();
|
|
|
for (PmWorkContent e : contents) {
|
|
@@ -360,18 +359,25 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
pmWorkContentMapper.insert(e);
|
|
|
contentsList.add(e);
|
|
|
}
|
|
|
- if (pmWorkReport.getSendDingTalk().equals(1)) {
|
|
|
+ if (pmWorkReport.getSendDingTalk() ==1 && pmWorkReport.getTimingTime() != null && pmWorkReport.getIsRegularlySend() == 1) {
|
|
|
dingTalkAndMessage.sendDingTalkDailyReport(rp, contentsList);
|
|
|
+ }
|
|
|
+ if (pmWorkReport.getIsRegularlySend() == 0){
|
|
|
+ receiveMessages(ccTo, rid);
|
|
|
+ rp.setTimingTime(null);
|
|
|
rp.setReportStatus(1);
|
|
|
pmWorkReportMapper.updateById(rp);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void receiveMessages(List<Long> ids, Integer reportId) {
|
|
|
- List<SysUser> users = pmWorkContentService.nickNames(ids);
|
|
|
- if (ids.size() > 0) {
|
|
|
- for (Long id : ids) {
|
|
|
+ private void receiveMessages(String ids, Integer reportId) {
|
|
|
+ List<Long> longList = Arrays.stream(ids.split(","))
|
|
|
+ .map(Long::parseLong)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<SysUser> users = pmWorkContentService.nickNames(longList);
|
|
|
+ if (longList.size() > 0) {
|
|
|
+ for (Long id : longList) {
|
|
|
PmReceive pmReceive = new PmReceive();
|
|
|
pmReceive.setReceiverId(id);
|
|
|
pmReceive.setReportId(reportId);
|
|
@@ -394,101 +400,30 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
public PmProjectTotalWorkTimeVo countTime(Integer dateType, Integer dateNum) {
|
|
|
int scale = 4;
|
|
|
RoundingMode roundingMode = RoundingMode.HALF_UP;
|
|
|
-// List<Map<String, Object>> returnList = new ArrayList<>();
|
|
|
-// Map<String, Object> weekTotalMap = new HashMap<>();
|
|
|
-// Map<String, Object> monthTotalMap = new HashMap<>();
|
|
|
-// Map<String, Object> weekMap = new HashMap<>();
|
|
|
-// Map<String, Object> monthMap = new HashMap<>();
|
|
|
PmProjectTotalWorkTimeVo projectTotalWorkTimeVo = new PmProjectTotalWorkTimeVo();
|
|
|
- List<PmProjectWorkTimeVo> returnListW = new ArrayList<>();
|
|
|
- //List<PmProjectWorkTimeVo> returnListM = new ArrayList<>();
|
|
|
- //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);
|
|
|
Map<String, LocalDateTime> stringLocalDateTimeMap = countWeekOrMonth(dateType, dateNum);
|
|
|
LocalDateTime startTime = stringLocalDateTimeMap.get("start");
|
|
|
LocalDateTime endTime = stringLocalDateTimeMap.get("end");
|
|
|
BigDecimal totalWorkTime = BigDecimal.ZERO;
|
|
|
+
|
|
|
List<PmProjectWorkTimeVo> week = pmWorkContentMapper.workTimeCount(startTime, endTime, SecurityUtils.getUserId());
|
|
|
if (week.isEmpty()) {
|
|
|
projectTotalWorkTimeVo.setTotalWorkTime(totalWorkTime);
|
|
|
projectTotalWorkTimeVo.setProjectWorkTime(week);
|
|
|
return projectTotalWorkTimeVo;
|
|
|
}
|
|
|
-// for (int i = 0; i < week.size(); i++) {
|
|
|
-// weekTotal = weekTotal.add(week.get(i).getWorkTime());
|
|
|
-// }
|
|
|
totalWorkTime = week.stream()
|
|
|
.map(PmProjectWorkTimeVo::getWorkTime)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
-// 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);
|
|
|
-// }
|
|
|
-// projectTotalWorkTimeVo.setProjectWorkTime(returnListW);
|
|
|
List<PmProjectWorkTimeVo> projectWorkTimeWithPercentage = calculatePercentage(week, totalWorkTime, scale, roundingMode);
|
|
|
projectTotalWorkTimeVo.setTotalWorkTime(totalWorkTime);
|
|
|
projectTotalWorkTimeVo.setProjectWorkTime(projectWorkTimeWithPercentage);
|
|
|
- return projectTotalWorkTimeVo;
|
|
|
|
|
|
-
|
|
|
-// LocalDate startOfMonth = today.withDayOfMonth(1);
|
|
|
-// LocalDate endOfMonth = today.withDayOfMonth(today.lengthOfMonth());
|
|
|
-// LocalDateTime startOfMonthDateTime = startOfMonth.atStartOfDay();
|
|
|
-// LocalDateTime endOfMonthDateTime = endOfMonth.atTime(23, 59, 59);
|
|
|
-// BigDecimal monthTotal = BigDecimal.ZERO;
|
|
|
-// List<PmProjectWorkTimeVo> month = pmWorkContentMapper.workTimeCount(startOfMonthDateTime, endOfMonthDateTime, SecurityUtils.getUserId());
|
|
|
-// if (month.isEmpty()) {
|
|
|
-// weekTotalMap.put("MonthWorkTimeTotal", 0);
|
|
|
-// weekMap.put("MonthlyData", month);
|
|
|
-// }
|
|
|
-// for (int i = 0; i < month.size(); i++) {
|
|
|
-// monthTotal = monthTotal.add(month.get(i).getWorkTime());
|
|
|
-// }
|
|
|
-// 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());
|
|
|
-// 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);
|
|
|
-// returnList.add(weekTotalMap);
|
|
|
-// returnList.add(monthTotalMap);
|
|
|
-// returnList.add(weekMap);
|
|
|
-// returnList.add(monthMap);
|
|
|
- //return null;
|
|
|
+ return projectTotalWorkTimeVo;
|
|
|
}
|
|
|
- //计算百分比
|
|
|
+
|
|
|
+ // 计算百分比
|
|
|
private List<PmProjectWorkTimeVo> calculatePercentage(List<PmProjectWorkTimeVo> workTimeList, BigDecimal totalWorkTime, int scale, RoundingMode roundingMode) {
|
|
|
BigDecimal totalPercentage = BigDecimal.ZERO;
|
|
|
List<PmProjectWorkTimeVo> projectWorkTimeWithPercentage = new ArrayList<>();
|
|
@@ -509,9 +444,13 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
return projectWorkTimeWithPercentage;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- //计算周和月
|
|
|
+ /**
|
|
|
+ * @description: 计算周和月
|
|
|
+ * @author: fu
|
|
|
+ * @date: 2024/8/7 20:17
|
|
|
+ * @param: [dateType, dateNum]
|
|
|
+ * @return: java.util.Map<java.lang.String, java.time.LocalDateTime>
|
|
|
+ **/
|
|
|
public Map<String, LocalDateTime> countWeekOrMonth(Integer dateType, Integer dateNum) {
|
|
|
Map<String, LocalDateTime> timePeriod = new HashMap<>();
|
|
|
LocalDate today = LocalDate.now();
|
|
@@ -552,10 +491,24 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * @description: 工作报告定时发送
|
|
|
+ * @author: fu
|
|
|
+ * @date: 2024/8/7 20:17
|
|
|
+ * @param: [time] 开始时间
|
|
|
+ * @return: void
|
|
|
+ **/
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void timedSending(LocalDateTime time) {
|
|
|
log.info("定时报告任务开始---------------------------");
|
|
|
+ int messageCenterTotal = 0;
|
|
|
+ int messageCenterSuccess = 0;
|
|
|
+ int messageCenterFail = 0;
|
|
|
+
|
|
|
+ int dingTalkTotal = 0;
|
|
|
+ int dingTalkSuccess = 0;
|
|
|
+ int dingTalkFail = 0;
|
|
|
LambdaQueryWrapper<PmWorkReport> reports = Wrappers.lambdaQuery();
|
|
|
reports.eq(PmWorkReport::getReportStatus, 0)
|
|
|
.eq(PmWorkReport::getIsRegularlySend, 1)
|
|
@@ -570,7 +523,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
LambdaQueryWrapper<PmWorkContent> reportContents = Wrappers.lambdaQuery();
|
|
|
reportContents.in(PmWorkContent::getReportId, reportIds);
|
|
|
List<PmWorkContent> pmWorkContentList = pmWorkContentMapper.selectList(reportContents);
|
|
|
- for (PmWorkReport report : reportList) {
|
|
|
+/* for (PmWorkReport report : reportList) {
|
|
|
Integer id = report.getId();
|
|
|
List<PmWorkContent> workContents = new ArrayList<>();
|
|
|
for (PmWorkContent content : pmWorkContentList) {
|
|
@@ -578,27 +531,41 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
|
|
|
if (reportId.equals(id)) {
|
|
|
workContents.add(content);
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
+ for (PmWorkReport report : reportList) {
|
|
|
+ messageCenterTotal++;
|
|
|
+ Integer id = report.getId();
|
|
|
+ List<PmWorkContent> workContents = pmWorkContentList.stream()
|
|
|
+ .filter(content -> content.getReportId().equals(id))
|
|
|
+ .collect(Collectors.toList());
|
|
|
try {
|
|
|
dingTalkAndMessage.sendAsyncMessage(report);
|
|
|
+ messageCenterSuccess++;
|
|
|
} catch (Exception e) {
|
|
|
log.error("定时报告" + report.getId() + "调用消息中心异常" + e);
|
|
|
+ messageCenterFail++;
|
|
|
}
|
|
|
if (report.getSendDingTalk() == 1) {
|
|
|
+ dingTalkTotal++;
|
|
|
try {
|
|
|
dingTalkAndMessage.sendDingTalkDailyReport(report, workContents);
|
|
|
+ dingTalkSuccess++;
|
|
|
} catch (Exception e) {
|
|
|
log.error("定时报告" + report.getId() + "发送钉钉异常" + e);
|
|
|
+ dingTalkFail++;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
report.setReportStatus(1);
|
|
|
+ report.setSubmitDate(time);
|
|
|
pmWorkReportMapper.updateById(report);
|
|
|
+ receiveMessages(report.getCcTo(), report.getId());
|
|
|
}
|
|
|
} else {
|
|
|
log.info("当前没有定时工作报告可发送");
|
|
|
}
|
|
|
log.info("定时报告任务结束---------------------------");
|
|
|
+ log.info("消息中心发送总数:{},成功:{},失败:{}", messageCenterTotal, messageCenterSuccess, messageCenterFail);
|
|
|
+ log.info("钉钉发送总数:{},成功:{},失败:{}", dingTalkTotal, dingTalkSuccess, dingTalkFail);
|
|
|
}
|
|
|
|
|
|
|