|
@@ -0,0 +1,161 @@
|
|
|
+package org.springblade.control.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springblade.control.dto.TaskInfoDTO;
|
|
|
+import org.springblade.control.entity.PlanInfo;
|
|
|
+import org.springblade.control.entity.TaskInfo;
|
|
|
+import org.springblade.control.mapper.TaskInfoMapper;
|
|
|
+import org.springblade.control.service.TaskInfoService;
|
|
|
+import org.springblade.control.vo.TaskPageVO;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
+import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.core.mp.support.Condition;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
+import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
+import org.springblade.system.user.entity.User;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@AllArgsConstructor
|
|
|
+@Service
|
|
|
+public class TaskInfoServiceImpl extends BaseServiceImpl<TaskInfoMapper, TaskInfo> implements TaskInfoService {
|
|
|
+
|
|
|
+ private final JdbcTemplate jdbcTemplate;
|
|
|
+ private final PlanInfoServiceImpl planInfoServiceImpl;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean taskSubmit(TaskInfo obj) {
|
|
|
+ obj.setStatus(0); //默认未完成
|
|
|
+ return this.saveOrUpdate(obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<TaskInfo> taskList(String id) {
|
|
|
+ if (StringUtils.isNotEmpty(id)) {
|
|
|
+ List<Long> taskIds = jdbcTemplate.queryForList("select task_id from c_control_plan_task_record where plan_id = " + id, Long.class);
|
|
|
+ List<TaskInfo> taskInfos = baseMapper.selectBatchIds(taskIds);
|
|
|
+
|
|
|
+ //TODO 项目名称、进度等,返回VO
|
|
|
+ for (TaskInfo taskInfo : taskInfos) {
|
|
|
+
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean taskRemove(String id) {
|
|
|
+ if (StringUtils.isNotEmpty(id)) {
|
|
|
+ //物理删除
|
|
|
+ jdbcTemplate.execute("delete from c_control_task_info where id = " + id);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean taskRepeal(String id) {
|
|
|
+ return this.update(Wrappers.<TaskInfo>lambdaUpdate().set(TaskInfo::getStatus, 3).eq(TaskInfo::getId, id));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<TaskPageVO> taskPage(IPage<TaskInfo> page, TaskInfoDTO dto) {
|
|
|
+ if (("1").equals(dto.getType()) || ("3").equals(dto.getType())) {
|
|
|
+ //我的任务、全部任务
|
|
|
+ List<Long> taskIds = null;
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getPlanDept())) {
|
|
|
+ //获取对应部门计划任务信息
|
|
|
+ List<PlanInfo> planInfos = planInfoServiceImpl.getBaseMapper().selectList(Wrappers.<PlanInfo>lambdaQuery().eq(PlanInfo::getPlanDept, dto.getPlanDept()));
|
|
|
+ List<Long> planIds = planInfos.stream().map(PlanInfo::getId).collect(Collectors.toList());
|
|
|
+ taskIds = jdbcTemplate.queryForList("select task_id from c_control_plan_task_record where plan_id in(" + StringUtils.join(planIds, ",") + ")", Long.class);
|
|
|
+ }
|
|
|
+ QueryWrapper<TaskInfo> queryWrapper = Condition.getQueryWrapper(dto);
|
|
|
+ if (("1").equals(dto.getType())) {
|
|
|
+ if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
|
|
|
+ throw new ServiceException("未获取到当前用户信息,原因:userId is null");
|
|
|
+ }
|
|
|
+ //查询当前用户的任务,我的任务,否则查询全部任务
|
|
|
+ queryWrapper.lambda().eq(TaskInfo::getTaskUserId, SecureUtil.getUserId());
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getStatus())) {
|
|
|
+ //任务状态
|
|
|
+ queryWrapper.lambda().eq(TaskInfo::getStatus, dto.getStatus());
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getTaskStartDate()) && ObjectUtil.isNotEmpty(dto.getTaskEndDate())) {
|
|
|
+ //开始时间、结束时间
|
|
|
+ queryWrapper.lambda().ge(TaskInfo::getTaskStartDate, dto.getTaskStartDate()).le(TaskInfo::getTaskEndDate, dto.getTaskEndDate());
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(taskIds)) {
|
|
|
+ //部门对应的计划中的任务
|
|
|
+ queryWrapper.lambda().in(TaskInfo::getId, taskIds);
|
|
|
+ }
|
|
|
+ IPage<TaskInfo> taskInfoPage = this.page(page, queryWrapper.lambda().orderBy(true, true, TaskInfo::getCreateTime));
|
|
|
+
|
|
|
+ List<Long> taskIdsResult = taskInfoPage.getRecords().stream().map(TaskInfo::getId).collect(Collectors.toList());
|
|
|
+ String sql = "SELECT cctr.task_id, pi.plan_name FROM c_control_plan_task_record cctr LEFT JOIN plan_info pi ON cctr.plan_id = pi.id WHERE cctr.task_id IN (" + StringUtils.join(taskIdsResult, ",") + ")";
|
|
|
+ List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
|
|
|
+ Map<Long, String> taskPlanMap = new HashMap<>();
|
|
|
+ for (Map<String, Object> row : result) {
|
|
|
+ Long taskId = (Long) row.get("task_id");
|
|
|
+ String planName = (String) row.get("plan_name");
|
|
|
+ if (!taskPlanMap.containsKey(taskId)) {
|
|
|
+ taskPlanMap.put(taskId, planName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> taskUserIds = taskInfoPage.getRecords().stream().map(TaskInfo::getTaskUserId).collect(Collectors.toList());
|
|
|
+ List<Long> taskUserIdsAssist = taskInfoPage.getRecords().stream().map(TaskInfo::getTaskUserIdAssist).collect(Collectors.toList());
|
|
|
+ List<Long> taskUserIdsLeader = taskInfoPage.getRecords().stream().map(TaskInfo::getTaskUserIdLeader).collect(Collectors.toList());
|
|
|
+ taskUserIds.addAll(taskUserIdsAssist);
|
|
|
+ taskUserIds.addAll(taskUserIdsLeader);
|
|
|
+ Set<Long> sets = new HashSet<>(taskUserIds);
|
|
|
+ List<User> query = jdbcTemplate.query("select id,name from blade_user where id in(" + StringUtils.join(sets, ",") + ")", new BeanPropertyRowMapper<>(User.class));
|
|
|
+ Map<Long, String> idNameMap = new HashMap<>();
|
|
|
+ for (User user : query) {
|
|
|
+ idNameMap.put(user.getId(), user.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ return taskInfoPage.convert(taskInfo -> {
|
|
|
+ TaskPageVO vo = new TaskPageVO();
|
|
|
+ BeanUtils.copyProperties(taskInfo, vo);
|
|
|
+ vo.setId(taskInfo.getId() + "");
|
|
|
+ vo.setStatus(ObjectUtil.isNotEmpty(taskInfo.getStatus()) ? taskInfo.getStatus().toString() : "");
|
|
|
+ vo.setPlanName(StringUtils.isNotEmpty(taskPlanMap.get(taskInfo.getId())) ? taskPlanMap.get(taskInfo.getId()) : "");
|
|
|
+ vo.setTaskDesc(ObjectUtil.isNotEmpty(taskInfo.getTaskDesc()) ? taskInfo.getTaskDesc() : "");
|
|
|
+ vo.setTaskStandard(ObjectUtil.isNotEmpty(taskInfo.getTaskStandard()) ? taskInfo.getTaskStandard() : "");
|
|
|
+ vo.setTaskEndDate(ObjectUtil.isNotEmpty(taskInfo.getTaskEndDate()) ? taskInfo.getTaskEndDate() : null);
|
|
|
+ vo.setTaskUserName(StringUtils.isNotEmpty(idNameMap.get(taskInfo.getTaskUserId())) ? idNameMap.get(taskInfo.getTaskUserId()) : "");
|
|
|
+ vo.setTaskUserAssistName(StringUtils.isNotEmpty(idNameMap.get(taskInfo.getTaskUserIdAssist())) ? idNameMap.get(taskInfo.getTaskUserIdAssist()) : "");
|
|
|
+ vo.setTaskUserLeaderName(StringUtils.isNotEmpty(idNameMap.get(taskInfo.getTaskUserIdLeader())) ? idNameMap.get(taskInfo.getTaskUserIdLeader()) : "");
|
|
|
+ //TODO 项目环节、项目
|
|
|
+
|
|
|
+
|
|
|
+ return vo;
|
|
|
+ });
|
|
|
+
|
|
|
+ } else if (("2").equals(dto.getType())) {
|
|
|
+ //我关联的任务 TODO
|
|
|
+
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean taskRelationSubmit(String taskIds, BladeUser user) {
|
|
|
+ //TODO
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|