|
@@ -1,6 +1,7 @@
|
|
package org.springblade.control.service.impl;
|
|
package org.springblade.control.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
@@ -12,10 +13,7 @@ import org.springblade.control.dto.LogHistoryInfoDTO;
|
|
import org.springblade.control.entity.*;
|
|
import org.springblade.control.entity.*;
|
|
import org.springblade.control.mapper.LogHistoryMapper;
|
|
import org.springblade.control.mapper.LogHistoryMapper;
|
|
import org.springblade.control.service.LogHistoryService;
|
|
import org.springblade.control.service.LogHistoryService;
|
|
-import org.springblade.control.vo.LogHistoryAndTaskVO;
|
|
|
|
-import org.springblade.control.vo.LogHistoryInfoReadVO;
|
|
|
|
-import org.springblade.control.vo.LogHistoryInfoVO;
|
|
|
|
-import org.springblade.control.vo.TaskPlanInfoVO;
|
|
|
|
|
|
+import org.springblade.control.vo.*;
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
import org.springblade.core.secure.BladeUser;
|
|
import org.springblade.core.secure.BladeUser;
|
|
@@ -90,12 +88,18 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
Map<Long, List<LogHistoryInfoReadVO>> logRecords = infoReadVOS.stream().collect(Collectors.groupingBy(LogHistoryInfoReadVO::getLogId));
|
|
Map<Long, List<LogHistoryInfoReadVO>> logRecords = infoReadVOS.stream().collect(Collectors.groupingBy(LogHistoryInfoReadVO::getLogId));
|
|
|
|
|
|
for (LogHistoryInfoVO vo : voList) {
|
|
for (LogHistoryInfoVO vo : voList) {
|
|
|
|
+ //用户基础信息
|
|
User user = userMap.get(vo.getUserId());
|
|
User user = userMap.get(vo.getUserId());
|
|
if (user != null) {
|
|
if (user != null) {
|
|
vo.setLogTitle(user.getRealName() + "的日志");
|
|
vo.setLogTitle(user.getRealName() + "的日志");
|
|
vo.setHeadPicture(StringUtils.isNotEmpty(user.getAvatar()) ? user.getAvatar() : "");
|
|
vo.setHeadPicture(StringUtils.isNotEmpty(user.getAvatar()) ? user.getAvatar() : "");
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ //是否可编辑
|
|
|
|
+ if (vo.getUserId().equals(SecureUtil.getUserId())) {
|
|
|
|
+ vo.setIsEdit(1);
|
|
|
|
+ } else {
|
|
|
|
+ vo.setIsEdit(0);
|
|
|
|
+ }
|
|
//当前用户是否已读
|
|
//当前用户是否已读
|
|
String readIndex = SecureUtil.getUserId() + vo.getId() + "";
|
|
String readIndex = SecureUtil.getUserId() + vo.getId() + "";
|
|
LogHistoryInfoReadVO readVO = readMap.get(readIndex);
|
|
LogHistoryInfoReadVO readVO = readMap.get(readIndex);
|
|
@@ -104,8 +108,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
} else {
|
|
} else {
|
|
vo.setIsRead(0);
|
|
vo.setIsRead(0);
|
|
}
|
|
}
|
|
-
|
|
|
|
- //所有已读人
|
|
|
|
|
|
+ //所有已读人集合
|
|
List<LogHistoryInfoReadVO> readVOList = logRecords.getOrDefault(vo.getId(), null);
|
|
List<LogHistoryInfoReadVO> readVOList = logRecords.getOrDefault(vo.getId(), null);
|
|
if (readVOList != null && readVOList.size() > 0) {
|
|
if (readVOList != null && readVOList.size() > 0) {
|
|
List<LogHistoryInfoVO.ReadUser> readUserList = new LinkedList<>();
|
|
List<LogHistoryInfoVO.ReadUser> readUserList = new LinkedList<>();
|
|
@@ -117,7 +120,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return voList.stream()
|
|
|
|
|
|
+ LinkedHashMap<String, List<LogHistoryInfoVO>> collect = voList.stream()
|
|
.collect(Collectors.groupingBy(vo -> {
|
|
.collect(Collectors.groupingBy(vo -> {
|
|
return formatDate(
|
|
return formatDate(
|
|
vo.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().toString(),
|
|
vo.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().toString(),
|
|
@@ -125,6 +128,18 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
"昨天",
|
|
"昨天",
|
|
"前天");
|
|
"前天");
|
|
}, LinkedHashMap::new, Collectors.toList()));
|
|
}, LinkedHashMap::new, Collectors.toList()));
|
|
|
|
+ //把当前用户放在今日日志首位
|
|
|
|
+ for (Map.Entry<String, List<LogHistoryInfoVO>> stringListEntry : collect.entrySet()) {
|
|
|
|
+ if (stringListEntry.getKey().equals("今天")) {
|
|
|
|
+ List<LogHistoryInfoVO> value = stringListEntry.getValue();
|
|
|
|
+ List<LogHistoryInfoVO> filteredList = value.stream()
|
|
|
|
+ .filter(vo -> vo.getUserId().equals(SecureUtil.getUserId()))
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ value.removeAll(filteredList);
|
|
|
|
+ value.addAll(0, filteredList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return collect;
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
@@ -285,6 +300,9 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
List<ControlProjectInfo> controlProjectInfos = projectInfoServiceImpl.getBaseMapper().selectList(Wrappers.<ControlProjectInfo>lambdaQuery().select(ControlProjectInfo::getId, ControlProjectInfo::getName));
|
|
List<ControlProjectInfo> controlProjectInfos = projectInfoServiceImpl.getBaseMapper().selectList(Wrappers.<ControlProjectInfo>lambdaQuery().select(ControlProjectInfo::getId, ControlProjectInfo::getName));
|
|
List<String> taskIds = taskVOList.stream().map(LogHistoryAndTaskVO::getTaskId).map(String::valueOf).collect(Collectors.toList());
|
|
List<String> taskIds = taskVOList.stream().map(LogHistoryAndTaskVO::getTaskId).map(String::valueOf).collect(Collectors.toList());
|
|
if (taskIds.size() > 0) {
|
|
if (taskIds.size() > 0) {
|
|
|
|
+ //任务逾期关系信息
|
|
|
|
+ List<TaskPlanOverdueStatusVO> overdueStatusVOS = jdbcTemplate.query("select * from c_task_plan_overdue_status where user_id = " + obj.getUserId(), new BeanPropertyRowMapper<>(TaskPlanOverdueStatusVO.class));
|
|
|
|
+
|
|
//获取所有审批任务与计划任务关系
|
|
//获取所有审批任务与计划任务关系
|
|
List<ExpenseTaskRecord> expenseTaskRecords = jdbcTemplate.query("select task_id,expense_info_id from c_expense_task_record where expense_info_type = 1 and expense_info_id in(" + StringUtils.join(taskIds, ",") + ")", new BeanPropertyRowMapper<>(ExpenseTaskRecord.class));
|
|
List<ExpenseTaskRecord> expenseTaskRecords = jdbcTemplate.query("select task_id,expense_info_id from c_expense_task_record where expense_info_type = 1 and expense_info_id in(" + StringUtils.join(taskIds, ",") + ")", new BeanPropertyRowMapper<>(ExpenseTaskRecord.class));
|
|
Map<String, ExpenseTaskRecord> taskRecordMaps = expenseTaskRecords.stream().collect(Collectors.toMap(ExpenseTaskRecord::getExpenseInfoId, Function.identity()));
|
|
Map<String, ExpenseTaskRecord> taskRecordMaps = expenseTaskRecords.stream().collect(Collectors.toMap(ExpenseTaskRecord::getExpenseInfoId, Function.identity()));
|
|
@@ -302,6 +320,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //判断任务状态
|
|
ExpenseTaskRecord record = taskRecordMaps.getOrDefault(String.valueOf(taskObj.getId()), null);
|
|
ExpenseTaskRecord record = taskRecordMaps.getOrDefault(String.valueOf(taskObj.getId()), null);
|
|
if (record != null) {
|
|
if (record != null) {
|
|
TaskProcessInfo task = jdbcTemplate.query("select status from c_task_process_info where id = " + record.getTaskId(), new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
|
|
TaskProcessInfo task = jdbcTemplate.query("select status from c_task_process_info where id = " + record.getTaskId(), new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
|
|
@@ -315,6 +334,16 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
vos.setStatusName("未提交审批");
|
|
vos.setStatusName("未提交审批");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //只有在当前任务是未提交、已驳回状态下才判断是否逾期
|
|
|
|
+ if (!Arrays.asList(1, 2).contains(vos.getStatus())) {
|
|
|
|
+ //是否已逾期
|
|
|
|
+ for (TaskPlanOverdueStatusVO overdueVO : overdueStatusVOS) {
|
|
|
|
+ if (overdueVO.getPlanTaskId().equals(taskObj.getId())) {
|
|
|
|
+ vos.setIsOverdue(1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
vos.setTaskDesc(ObjectUtil.isNotEmpty(taskObj.getPlanTaskDesc()) ? taskObj.getPlanTaskDesc() : "");
|
|
vos.setTaskDesc(ObjectUtil.isNotEmpty(taskObj.getPlanTaskDesc()) ? taskObj.getPlanTaskDesc() : "");
|
|
if (ObjectUtil.isNotEmpty(taskObj.getPlanStartTime()) && ObjectUtil.isNotEmpty(taskObj.getPlanEndTime())) {
|
|
if (ObjectUtil.isNotEmpty(taskObj.getPlanStartTime()) && ObjectUtil.isNotEmpty(taskObj.getPlanEndTime())) {
|
|
LocalDate planStartTime = taskObj.getPlanStartTime();
|
|
LocalDate planStartTime = taskObj.getPlanStartTime();
|
|
@@ -357,7 +386,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean logTaskComplete(Long logId, Long taskId) {
|
|
public boolean logTaskComplete(Long logId, Long taskId) {
|
|
- if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
|
|
|
|
|
|
+ if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
|
|
throw new ServiceException("获取当前用户信息失败,请联系管理员");
|
|
throw new ServiceException("获取当前用户信息失败,请联系管理员");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -375,6 +404,17 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
throw new ServiceException("该任务不属于当前用户,操作失败");
|
|
throw new ServiceException("该任务不属于当前用户,操作失败");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //判断计划任务是否逾期完成
|
|
|
|
+ if (obj != null && ObjectUtil.isNotEmpty(obj.getPlanEndTime())) {
|
|
|
|
+ Date now = DateUtil.now();
|
|
|
|
+ Date planEndDate = Date.from(obj.getPlanEndTime().atStartOfDay(ZoneId.systemDefault()).toInstant());
|
|
|
|
+ int comparison = now.compareTo(planEndDate);
|
|
|
|
+ if (comparison > 0) {
|
|
|
|
+ //now在planEndDate之后表示逾期完成
|
|
|
|
+ jdbcTemplate.execute("delete from c_task_plan_overdue_status where plan_task_id = " + taskId + " ; insert into c_task_plan_overdue_status(id,user_id,plan_task_id,is_overdue) values (" + SnowFlakeUtil.getId() + "," + SecureUtil.getUserId() + "," + taskId + ",1)");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
//获取当天,当前用户所有的计划任务信息,新增关联信息
|
|
//获取当天,当前用户所有的计划任务信息,新增关联信息
|
|
if (ObjectUtil.isNotEmpty(logId)) { //编辑时,点完成,那么重塑关系信息
|
|
if (ObjectUtil.isNotEmpty(logId)) { //编辑时,点完成,那么重塑关系信息
|
|
List<TaskPlanInfoVO> taskPlanInfoVOS = this.logTaskList();
|
|
List<TaskPlanInfoVO> taskPlanInfoVOS = this.logTaskList();
|
|
@@ -416,11 +456,11 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
|
|
taskProcessService.save(taskProcessInfo);
|
|
taskProcessService.save(taskProcessInfo);
|
|
|
|
|
|
//新增审批任务关联信息
|
|
//新增审批任务关联信息
|
|
- jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + task.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + task.getId() + ",1)");
|
|
|
|
|
|
+ jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 1 and expense_info_id = " + task.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + task.getId() + ",1)");
|
|
return true;
|
|
return true;
|
|
//}
|
|
//}
|
|
} else {
|
|
} else {
|
|
- throw new ServiceException("获取部门负责人失败,请联系管理员");
|
|
|
|
|
|
+ throw new ServiceException("获取部门负责人失败,无法提交任务完成,请联系管理员");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|