|
|
@ -1,10 +1,31 @@ |
|
|
|
package cn.iocoder.yudao.module.farm.service.project; |
|
|
|
package cn.iocoder.yudao.module.farm.service.project; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.controller.admin.project.dto.ProjectListDTO; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.controller.admin.project.dto.ProjectPageDTO; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.dal.dataobject.taskCate.TaskCateDO; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.dal.mysql.area.AreaMapper; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.dal.mysql.task.TaskMapper; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.dal.mysql.taskCate.TaskCateMapper; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.enums.TaskStatus; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.service.task.TaskService; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.CpUser.CpUserMapper; |
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.system.service.CpUser.CpUserService; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.annotation.Resource; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.farm.controller.admin.project.vo.*; |
|
|
|
import cn.iocoder.yudao.module.farm.controller.admin.project.vo.*; |
|
|
|
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; |
|
|
|
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; |
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|
|
@ -26,6 +47,14 @@ public class ProjectServiceImpl implements ProjectService { |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
@Resource |
|
|
|
private ProjectMapper projectMapper; |
|
|
|
private ProjectMapper projectMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
|
|
private TaskMapper taskMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
|
|
private CpUserMapper cpUserMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
|
|
private AreaMapper areaMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
|
|
private TaskCateMapper taskCateMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Long createProject(ProjectCreateReqVO createReqVO) { |
|
|
|
public Long createProject(ProjectCreateReqVO createReqVO) { |
|
|
@ -89,4 +118,94 @@ public class ProjectServiceImpl implements ProjectService { |
|
|
|
return projectMapper.selectList(exportReqVO); |
|
|
|
return projectMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public List<ProjectListDTO> findProjectList(ProjectPageDTO pageDTO){ |
|
|
|
|
|
|
|
List<ProjectDO> list = projectMapper.findProjectList(pageDTO); |
|
|
|
|
|
|
|
List<Long> idList = list.stream().map(ProjectDO::getId).collect(Collectors.toList()); |
|
|
|
|
|
|
|
//任务完成的
|
|
|
|
|
|
|
|
List<TaskDO> taskList = taskMapper.selectList(Wrappers.<TaskDO>lambdaQuery().in(TaskDO::getProjectId, idList) |
|
|
|
|
|
|
|
.eq(TaskDO::getStatus, TaskStatus.COMPLETE.getCode())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set<Long> personSet = new HashSet<>(); |
|
|
|
|
|
|
|
Set<Long> areaSet = new HashSet<>(); |
|
|
|
|
|
|
|
Set<Long> taskCateSet = new HashSet<>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
taskList.stream().forEach(item ->{ |
|
|
|
|
|
|
|
//项目参与人
|
|
|
|
|
|
|
|
item.getExecutorPerson().forEach(p ->{ |
|
|
|
|
|
|
|
if (p != null) { |
|
|
|
|
|
|
|
personSet.add(Long.valueOf( p.toString())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
//项目区域
|
|
|
|
|
|
|
|
if (item.getAreas() != null){ |
|
|
|
|
|
|
|
item.getAreas().forEach(area ->{ |
|
|
|
|
|
|
|
JSONArray array = JSONArray.parseArray(area.toString()); |
|
|
|
|
|
|
|
areaSet.add(Long.valueOf(array.get(0).toString())); |
|
|
|
|
|
|
|
areaSet.add(Long.valueOf(array.get(1).toString())); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//任务分类名
|
|
|
|
|
|
|
|
taskCateSet.add(item.getTaskCateId().longValue()); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> joinPerson = new ArrayList<Long>(personSet); |
|
|
|
|
|
|
|
List<CpUserDO> cpUserList = cpUserMapper.selectList(Wrappers.<CpUserDO>lambdaQuery().in(CpUserDO::getId, joinPerson)); |
|
|
|
|
|
|
|
List<Long> joinArea = new ArrayList<Long>(areaSet); |
|
|
|
|
|
|
|
List<AreaDO> areaDOList = areaMapper.selectList(Wrappers.<AreaDO>lambdaQuery().in(AreaDO::getId, joinArea)); |
|
|
|
|
|
|
|
List<Long> joinTaskCate = new ArrayList<>(taskCateSet); |
|
|
|
|
|
|
|
List<TaskCateDO> taskCateDOList = taskCateMapper.selectList(Wrappers.<TaskCateDO>lambdaQuery().in(TaskCateDO::getId, joinTaskCate)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//拼接 姓名/区域/任务名
|
|
|
|
|
|
|
|
List<ProjectListDTO> dto = BeanUtil.copyToList(list, ProjectListDTO.class); |
|
|
|
|
|
|
|
for (ProjectListDTO projectListDTO : dto) { |
|
|
|
|
|
|
|
for (TaskDO taskDO : taskList) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Long.valueOf(taskDO.getProjectId()).equals(projectListDTO.getId())){ |
|
|
|
|
|
|
|
//任务名
|
|
|
|
|
|
|
|
for (TaskCateDO taskCateDO : taskCateDOList) { |
|
|
|
|
|
|
|
if (taskCateDO.getId().equals(Long.valueOf(taskDO.getTaskCateId()))){ |
|
|
|
|
|
|
|
projectListDTO.setTaskName(taskCateDO.getName()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//执行人
|
|
|
|
|
|
|
|
List<String> personNameList = new ArrayList<>(); |
|
|
|
|
|
|
|
for (Long executorPerson : taskDO.getExecutorPerson().toJavaList(Long.class)) { |
|
|
|
|
|
|
|
for (CpUserDO cpUserDO : cpUserList) { |
|
|
|
|
|
|
|
if (cpUserDO.getId().equals(executorPerson)){ |
|
|
|
|
|
|
|
personNameList.add(cpUserDO.getName()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
projectListDTO.setExecutorName(personNameList); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//任务区域
|
|
|
|
|
|
|
|
List<String> areaNameList = new ArrayList<>(); |
|
|
|
|
|
|
|
for (Object area : taskDO.getAreas()) { |
|
|
|
|
|
|
|
JSONArray array = JSONArray.parseArray(area.toString()); |
|
|
|
|
|
|
|
Long areaParent = Long.valueOf(String.valueOf(array.get(0))); |
|
|
|
|
|
|
|
Long areaSon = Long.valueOf(String.valueOf(array.get(1))); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StringBuilder areaName = new StringBuilder(); |
|
|
|
|
|
|
|
for (AreaDO areaDO : areaDOList) { |
|
|
|
|
|
|
|
if (areaDO.getId().equals(areaParent)){ |
|
|
|
|
|
|
|
areaName.append(areaDO.getName()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (areaDO.getId().equals(areaSon)){ |
|
|
|
|
|
|
|
areaName.append(areaDO.getName()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(areaName)){ |
|
|
|
|
|
|
|
areaNameList.add(areaName.toString()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
projectListDTO.setAreaName(areaNameList); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return dto; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|