优化代码
This commit is contained in:
+2
-2
@@ -21,10 +21,10 @@ public class PageParam implements Serializable {
|
||||
@Min(value = 1, message = "页码最小值为 1")
|
||||
private Integer pageNo = PAGE_NO;
|
||||
|
||||
@ApiModelProperty(value = "每页条数,最大值为 100", required = true, example = "10")
|
||||
@ApiModelProperty(value = "每页条数,最大值为 500", required = true, example = "10")
|
||||
@NotNull(message = "每页条数不能为空")
|
||||
@Min(value = 1, message = "页码最小值为 1")
|
||||
@Max(value = 100, message = "页码最大值为 100")
|
||||
@Max(value = 500, message = "页码最大值为 500")
|
||||
private Integer pageSize = PAGE_SIZE;
|
||||
|
||||
}
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.area.dto;
|
||||
|
||||
/**
|
||||
* @Created by jiu on 2022/6/15.
|
||||
*/
|
||||
public class AreaDTO {
|
||||
|
||||
String firstAreaName;
|
||||
|
||||
String secondAreaName;
|
||||
}
|
||||
+3
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.farm.controller.admin.project.dto;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO;
|
||||
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.*;
|
||||
|
||||
@@ -19,6 +20,8 @@ public class ProjectListDTO extends ProjectDO {
|
||||
|
||||
List<String> executorName;
|
||||
|
||||
List<CpUserDO> memberList;
|
||||
|
||||
String taskName;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.resource.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Created by jiu on 2022/6/15.
|
||||
*/
|
||||
@Data
|
||||
public class ResourceDTO {
|
||||
|
||||
Integer num;
|
||||
|
||||
Long reource;
|
||||
|
||||
List<Long> resourceId;
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.resource.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 任务下的的资源信息
|
||||
*/
|
||||
@Data
|
||||
public class ResourceMsgDTO {
|
||||
|
||||
//资源种类
|
||||
private String resourceType;
|
||||
|
||||
//资源名
|
||||
private String resourceName;
|
||||
|
||||
//数量
|
||||
private Integer num;
|
||||
}
|
||||
+4
-5
@@ -1,9 +1,6 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.statistical;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.statistical.dto.RequestDTO;
|
||||
@@ -28,8 +25,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.text.DateFormat;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -58,6 +54,9 @@ public class StatisticalController {
|
||||
//获取时间内的所有工时记录
|
||||
List<WorkHourDO> workList = workHourMapper.selectList(Wrappers.<WorkHourDO>lambdaQuery().ge(WorkHourDO::getCreateTime, time.getStartTime()).le(WorkHourDO::getCreateTime, time.getEndTime()));
|
||||
|
||||
vo.setStartTime(DateUtil.format(time.getStartTime(), "yyyy/MM/dd" ));
|
||||
vo.setEndTime(DateUtil.format(time.getEndTime(), "yyyy/MM/dd" ));
|
||||
|
||||
//工时统计 条形图
|
||||
List<WorkMsg> workMsgList = new ArrayList<>();
|
||||
if (ObjectUtil.isEmpty(workList)){
|
||||
|
||||
+7
@@ -3,11 +3,18 @@ package cn.iocoder.yudao.module.farm.controller.admin.statistical.vo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.sql.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class StatisticalVo {
|
||||
|
||||
private String startTime;
|
||||
|
||||
private String endTime;
|
||||
|
||||
@ApiModelProperty("工时统计")
|
||||
private List<WorkMsg> workMsgList;
|
||||
|
||||
|
||||
+32
@@ -1,6 +1,12 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.task;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.page.PageVO;
|
||||
import cn.iocoder.yudao.module.farm.annotation.FarmMsg;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskAssemblyDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskDetailDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskMsgDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskPageDTO;
|
||||
import com.zsw.base.R;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -89,6 +95,14 @@ public class TaskController {
|
||||
return success(TaskConvert.INSTANCE.convertPage(pageResult));
|
||||
}
|
||||
|
||||
@GetMapping("/apiPage")
|
||||
@ApiOperation("获得农场项目分页及相关信息")
|
||||
@PreAuthorize("@ss.hasPermission('farm:task:query')")
|
||||
public CommonResult<PageResult<TaskAssemblyDTO>> getAdminTaskPage(@Valid TaskPageReqVO pageVO) {
|
||||
PageResult<TaskAssemblyDTO> pageResult = taskService.getAdminTaskPage(pageVO);
|
||||
return success(pageResult);
|
||||
}
|
||||
|
||||
@GetMapping("/pageSearch")
|
||||
@ApiOperation("搜索条件获得农场项目分页")
|
||||
public CommonResult<PageResult<TaskRespVO>> getTaskSearchPage(@Valid TaskPageSearchReqVO pageVO) {
|
||||
@@ -109,4 +123,22 @@ public class TaskController {
|
||||
ExcelUtils.write(response, "农场项目.xls", "数据", TaskExcelVO.class, datas);
|
||||
}
|
||||
|
||||
|
||||
@FarmMsg(type = "任务", title = "查看任务")
|
||||
@GetMapping("/appGet")
|
||||
@ApiOperation("APP查看农场任务详情")
|
||||
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
|
||||
@PreAuthorize("@ss.hasPermission('farm:task:query')")
|
||||
public R<TaskDetailDTO> appGetTask(@RequestParam("id") Long id){
|
||||
return taskService.appGetTask(id);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/apiPage")
|
||||
@ApiOperation("获得农场项目分页")
|
||||
@PreAuthorize("@ss.hasPermission('farm:task:query')")
|
||||
public R<PageVO<TaskDetailDTO>> apiGetTaskPage(@RequestBody TaskPageDTO pageDTO) {
|
||||
return taskService.apiGetTaskPage(pageDTO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.task.dto;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.resource.dto.ResourceMsgDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.TaskBaseVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.crop.CropDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.taskCate.TaskCateDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 任务 里面所有信息DTO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TaskAssemblyDTO extends TaskBaseVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
//项目名
|
||||
String projectName;
|
||||
|
||||
//区域
|
||||
List<String> areaNameList;
|
||||
|
||||
//负责人
|
||||
String mainPersonName;
|
||||
|
||||
//执行人
|
||||
List<String> executorNameList;
|
||||
|
||||
//作物
|
||||
String cropName;
|
||||
|
||||
//任务类型
|
||||
String taskName;
|
||||
|
||||
//任务内容
|
||||
String taskMsg;
|
||||
|
||||
//任务资源
|
||||
List<ResourceMsgDTO> taskResourceList;
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.task.dto;
|
||||
|
||||
import cn.hutool.system.oshi.CpuInfo;
|
||||
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.system.dal.dataobject.CpUser.CpUserDO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TaskDetailDTO extends TaskDO {
|
||||
|
||||
//项目名
|
||||
String apiProjectName;
|
||||
|
||||
//区域
|
||||
List<AreaDO> apiArea;
|
||||
|
||||
//执行人
|
||||
List<CpUserDO> apiExecutor;
|
||||
|
||||
//负责人
|
||||
CpUserDO apiMainPerson;
|
||||
|
||||
//作物名
|
||||
String apiCropName;
|
||||
|
||||
//任务名
|
||||
String apiTaskTypeName;
|
||||
|
||||
//任务内容
|
||||
String apiTaskMsg;
|
||||
}
|
||||
-1
@@ -1,6 +1,5 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.task.dto;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.task.dto;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.page.PageDTO;
|
||||
|
||||
/**
|
||||
* @Created by jiu on 2022/6/15.
|
||||
*/
|
||||
public class TaskPageDTO extends PageDTO {
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.task.dto;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.resource.dto.ResourceMsgDTO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.crop.CropDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.taskCate.TaskCateDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 任务 里面所有信息DTO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class TaskPreAssemblyDTO {
|
||||
|
||||
//项目名
|
||||
List<ProjectDO> projectDOList;
|
||||
|
||||
//区域
|
||||
List<AreaDO> areaDOList;
|
||||
|
||||
//负责人
|
||||
List<CpUserDO> mainPersonList;
|
||||
|
||||
//执行人
|
||||
List<CpUserDO> executorList;
|
||||
|
||||
//作物
|
||||
List<CropDO> cropDOList;
|
||||
|
||||
//任务类型
|
||||
List<TaskCateDO> taskCateDOList;
|
||||
|
||||
//任务内容
|
||||
List<TaskCateDO> taskMsgList;
|
||||
|
||||
//任务资源
|
||||
Map<Long, List<ResourceMsgDTO>> taskResouceMap;
|
||||
}
|
||||
+29
-5
@@ -4,6 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.hutool.system.oshi.CpuInfo;
|
||||
import cn.iocoder.yudao.framework.common.page.PageUtil;
|
||||
import cn.iocoder.yudao.framework.common.page.PageVO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -24,12 +27,13 @@ import cn.iocoder.yudao.module.system.dal.mysql.CpUser.CpUserMapper;
|
||||
import cn.iocoder.yudao.module.system.service.CpUser.CpUserService;
|
||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.JSONPObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.zsw.base.R;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -169,16 +173,35 @@ public class ProjectServiceImpl implements ProjectService {
|
||||
}
|
||||
|
||||
List<Long> idList = list.stream().map(ProjectDO::getId).collect(Collectors.toList());
|
||||
List<ProjectListDTO> ProjectListDTOList = BeanUtil.copyToList(list, ProjectListDTO.class);
|
||||
List<ProjectListDTO> projectListDTOList = BeanUtil.copyToList(list, ProjectListDTO.class);
|
||||
|
||||
//组装 项目成员信息
|
||||
List<Long> memberIDList = new ArrayList<>();
|
||||
projectListDTOList.forEach(item ->{
|
||||
memberIDList.addAll(item.getMembers().toJavaList(Long.class));
|
||||
});
|
||||
memberIDList.stream().distinct().collect(Collectors.toList());
|
||||
List<CpUserDO> cpUserList = cpUserMapper.selectList(Wrappers.<CpUserDO>lambdaQuery().in(CpUserDO::getId, memberIDList));
|
||||
projectListDTOList.forEach(item ->{
|
||||
List<CpUserDO> memberList = new ArrayList<>();
|
||||
List<Long> projectMember = item.getMembers().toJavaList(Long.class);
|
||||
cpUserList.forEach(user ->{
|
||||
if (projectMember.contains(user.getId())){
|
||||
memberList.add(user);
|
||||
}
|
||||
});
|
||||
item.setMemberList(memberList);
|
||||
});
|
||||
|
||||
|
||||
//任务完成的
|
||||
List<TaskDO> taskList = taskMapper.selectList(Wrappers.<TaskDO>lambdaQuery().in(TaskDO::getProjectId, idList)
|
||||
.eq(TaskDO::getStatus, TaskStatus.COMPLETE.getCode()));
|
||||
|
||||
//组装项目的最近一次完成任务信息(区域名、人员名、任务名)
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
List<TaskMsgDTO> taskMsgDTOList = taskService.getTaskMsg(taskList);
|
||||
Map<Long, List<TaskMsgDTO>> taskMsgMap = taskMsgDTOList.stream().collect(Collectors.groupingBy(TaskMsgDTO::getProjectId));
|
||||
for (ProjectListDTO projectListDTO : ProjectListDTOList) {
|
||||
for (ProjectListDTO projectListDTO : projectListDTOList) {
|
||||
if (taskMsgMap.containsKey(projectListDTO.getId())){
|
||||
TaskMsgDTO msgDTO = taskMsgMap.get(projectListDTO.getId()).get(0);
|
||||
projectListDTO.setAreaName(msgDTO.getAreaName());
|
||||
@@ -188,7 +211,8 @@ public class ProjectServiceImpl implements ProjectService {
|
||||
}
|
||||
}
|
||||
}
|
||||
PageVO<ProjectListDTO> returnList = PageUtil.convertPageInfo(ProjectListDTOList);
|
||||
|
||||
PageVO<ProjectListDTO> returnList = PageUtil.convertPageInfo(projectListDTOList);
|
||||
return R.success(returnList);
|
||||
}
|
||||
|
||||
|
||||
+19
-1
@@ -3,10 +3,15 @@ package cn.iocoder.yudao.module.farm.service.task;
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.page.PageVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskAssemblyDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskDetailDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskMsgDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskPageDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.*;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import com.zsw.base.R;
|
||||
|
||||
/**
|
||||
* 农场项目 Service 接口
|
||||
@@ -61,6 +66,8 @@ public interface TaskService {
|
||||
*/
|
||||
PageResult<TaskDO> getTaskPage(TaskPageReqVO pageReqVO);
|
||||
|
||||
PageResult<TaskAssemblyDTO> getAdminTaskPage(TaskPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 搜索条件获得农场项目分页
|
||||
*
|
||||
@@ -83,6 +90,17 @@ public interface TaskService {
|
||||
* @param taskDOList 任务List
|
||||
* @return 返回每个任务的执行人、区域、任务名
|
||||
**/
|
||||
public List<TaskMsgDTO> getTaskMsg(List<TaskDO> taskDOList);
|
||||
List<TaskMsgDTO> getTaskMsg(List<TaskDO> taskDOList);
|
||||
|
||||
/**
|
||||
* APP 获取任务信息
|
||||
**/
|
||||
R<TaskDetailDTO> appGetTask(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* APP 获取任务列表
|
||||
**/
|
||||
R<PageVO<TaskDetailDTO>> apiGetTaskPage(TaskPageDTO pageDTO);
|
||||
|
||||
}
|
||||
|
||||
+243
-3
@@ -1,23 +1,40 @@
|
||||
package cn.iocoder.yudao.module.farm.service.task;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.text.StrBuilder;
|
||||
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.task.dto.TaskMsgDTO;
|
||||
import cn.iocoder.yudao.framework.common.page.PageUtil;
|
||||
import cn.iocoder.yudao.framework.common.page.PageVO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.resource.dto.ResourceDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.resource.dto.ResourceMsgDTO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.*;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.crop.CropDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.resource.ResourceDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.resourceType.ResourceTypeDO;
|
||||
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.crop.CropMapper;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.project.ProjectMapper;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.resource.ResourceMapper;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.resourceType.ResourceTypeMapper;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.taskCate.TaskCateMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
|
||||
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.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.zsw.base.R;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.*;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
@@ -45,6 +62,17 @@ public class TaskServiceImpl implements TaskService {
|
||||
private AreaMapper areaMapper;
|
||||
@Resource
|
||||
private TaskCateMapper taskCateMapper;
|
||||
@Resource
|
||||
private CpUserService cpUserService;
|
||||
@Resource
|
||||
private ProjectMapper projectMapper;
|
||||
@Resource
|
||||
private CropMapper cropMapper;
|
||||
@Resource
|
||||
private ResourceTypeMapper resourceTypeMapper;
|
||||
@Resource
|
||||
private ResourceMapper resourceMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public Long createTask(TaskCreateReqVO createReqVO) {
|
||||
@@ -93,6 +121,33 @@ public class TaskServiceImpl implements TaskService {
|
||||
return taskMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<TaskAssemblyDTO> getAdminTaskPage(TaskPageReqVO pageReqVO){
|
||||
PageResult<TaskDO> taskPage = taskMapper.selectPage(pageReqVO);
|
||||
Map<Long, TaskAssemblyDTO> map = this.taskAssemble(taskPage.getList());
|
||||
List<TaskAssemblyDTO> list = new ArrayList<>();
|
||||
taskPage.getList().forEach(item ->{
|
||||
if (map.containsKey(item.getId())){
|
||||
TaskAssemblyDTO dto = map.get(item.getId());
|
||||
TaskAssemblyDTO newDTO = BeanUtil.copyProperties(item, TaskAssemblyDTO.class);
|
||||
newDTO.setProjectName(dto.getProjectName());
|
||||
newDTO.setTaskName(dto.getTaskName());
|
||||
newDTO.setTaskResourceList(dto.getTaskResourceList());
|
||||
newDTO.setAreaNameList(dto.getAreaNameList());
|
||||
newDTO.setExecutorNameList(dto.getExecutorNameList());
|
||||
newDTO.setTaskMsg(dto.getTaskMsg());
|
||||
newDTO.setMainPersonName(dto.getMainPersonName());
|
||||
newDTO.setCropName(dto.getCropName());
|
||||
list.add(newDTO);
|
||||
}
|
||||
});
|
||||
PageResult<TaskAssemblyDTO> page = new PageResult<>();
|
||||
page.setList(list);
|
||||
page.setTotal(taskPage.getTotal());
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<TaskDO> getTaskSearchPage(TaskPageSearchReqVO pageVO){
|
||||
pageVO.setPageNo(pageVO.getPageNo() - 1);
|
||||
@@ -191,4 +246,189 @@ public class TaskServiceImpl implements TaskService {
|
||||
return taskMsgList;
|
||||
}
|
||||
|
||||
public R<TaskDetailDTO> appGetTask(Long id){
|
||||
TaskDO taskDO = taskMapper.selectById(id);
|
||||
TaskDetailDTO taskMsg = new TaskDetailDTO();
|
||||
BeanUtil.copyProperties(taskDO, taskMsg);
|
||||
List<Long> userIdList = taskDO.getExecutorPerson().toJavaList(Long.class);
|
||||
List<CpUserDO> userList = cpUserMapper.selectList(Wrappers.<CpUserDO>lambdaQuery().in(CpUserDO::getId, userIdList));
|
||||
//负责人
|
||||
taskMsg.setApiMainPerson(cpUserService.getById(String.valueOf(taskMsg.getMainPerson())));
|
||||
//执行人
|
||||
taskMsg.setApiExecutor(userList);
|
||||
return R.success(taskMsg);
|
||||
}
|
||||
|
||||
public R<PageVO<TaskDetailDTO>> apiGetTaskPage(TaskPageDTO pageDTO){
|
||||
PageUtil.startPage(pageDTO);
|
||||
LambdaQueryWrapperX<TaskDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
|
||||
List<TaskDO> taskDOList = taskMapper.selectList(lambdaQueryWrapperX);
|
||||
List<TaskDetailDTO> taskList = BeanUtil.copyToList(taskDOList, TaskDetailDTO.class);
|
||||
PageVO<TaskDetailDTO> pageVO = PageUtil.convertPageInfo(taskList);
|
||||
return R.success(pageVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务里面信息预查询(查出所有需要的)
|
||||
**/
|
||||
public TaskPreAssemblyDTO taskPreAssemble(List<TaskDO> taskDOList){
|
||||
//项目名
|
||||
List<Long> projectIdList = taskDOList.stream().map(TaskDO::getProjectId).collect(Collectors.toList());
|
||||
List<ProjectDO> projectDOList = projectMapper.selectList(new LambdaQueryWrapperX<ProjectDO>().inIfPresent(ProjectDO::getId, projectIdList));
|
||||
//区域
|
||||
List<Long> areaIdList = new ArrayList<>();
|
||||
//执行人
|
||||
List<Long> executorIdList = new ArrayList<>();
|
||||
//资源 要处理的数据
|
||||
Map<Long,List<ResourceDTO>> resourceMap = new HashMap<>();
|
||||
|
||||
for (TaskDO taskDO : taskDOList) {
|
||||
for (Object area : taskDO.getAreas()) {
|
||||
areaIdList.addAll(JSONArray.parseArray(area.toString(), Long.class));
|
||||
}
|
||||
executorIdList.addAll(taskDO.getExecutorPerson().toJavaList(Long.class));
|
||||
|
||||
resourceMap.put(taskDO.getId(), taskDO.getResources().toJavaList(ResourceDTO.class));
|
||||
}
|
||||
|
||||
List<AreaDO> areaDOList = areaMapper.selectList(new LambdaQueryWrapperX<AreaDO>().inIfPresent(AreaDO::getId, areaIdList));
|
||||
List<CpUserDO> executorList = cpUserMapper.selectList(new LambdaQueryWrapperX<CpUserDO>().inIfPresent(CpUserDO::getId, executorIdList));
|
||||
|
||||
//负责人
|
||||
List<Long> mainPersonIdList = taskDOList.stream().map(TaskDO::getMainPerson).collect(Collectors.toList());
|
||||
List<CpUserDO> mainPersonList = cpUserMapper.selectList(new LambdaQueryWrapperX<CpUserDO>().inIfPresent(CpUserDO::getId, mainPersonIdList));
|
||||
|
||||
//作物名
|
||||
List<Long> cropIdList = taskDOList.stream().map(TaskDO::getCropId).collect(Collectors.toList());
|
||||
List<CropDO> cropDOList = cropMapper.selectList(new LambdaQueryWrapperX<CropDO>().inIfPresent(CropDO::getId, cropIdList));
|
||||
|
||||
//任务名
|
||||
List<Long> taskCateIdList = taskDOList.stream().map(TaskDO::getTaskCateId).collect(Collectors.toList());
|
||||
List<TaskCateDO> taskCateDOList = taskCateMapper.selectList(new LambdaQueryWrapperX<TaskCateDO>().inIfPresent(TaskCateDO::getId, taskCateIdList));
|
||||
|
||||
//任务内容
|
||||
List<Long> taskCateNameIdList = taskDOList.stream().map(TaskDO::getTaskCateName).collect(Collectors.toList());
|
||||
List<TaskCateDO> taskMsgList = taskCateMapper.selectList(new LambdaQueryWrapperX<TaskCateDO>().inIfPresent(TaskCateDO::getId, taskCateNameIdList));
|
||||
|
||||
|
||||
//资源 处理下
|
||||
List<ResourceDTO> resourceAssemble = new ArrayList<>();
|
||||
for (List<ResourceDTO> dto : resourceMap.values()){
|
||||
resourceAssemble.addAll(dto);
|
||||
}
|
||||
List<Long> resourceTypeIdList = new ArrayList<>();
|
||||
List<Long> resourceIdList = new ArrayList<>();
|
||||
for (ResourceDTO resourceDTO : resourceAssemble) {
|
||||
resourceTypeIdList.add(resourceDTO.getResourceId().get(0));
|
||||
resourceIdList.add(resourceDTO.getResourceId().get(1));
|
||||
}
|
||||
List<ResourceTypeDO> resourceTypeList = resourceTypeMapper.selectList(new LambdaQueryWrapperX<ResourceTypeDO>().inIfPresent(ResourceTypeDO::getId, resourceTypeIdList));
|
||||
List<ResourceDO> resourceList = resourceMapper.selectList(new LambdaQueryWrapperX<ResourceDO>().inIfPresent(ResourceDO::getId, resourceIdList));
|
||||
|
||||
Map<Long, List<ResourceMsgDTO>> taskResouceMap = new HashMap<>();
|
||||
for (Long taskId : resourceMap.keySet()){
|
||||
List<ResourceMsgDTO> dtoList= new ArrayList<>();
|
||||
List<ResourceDTO> innerList = resourceMap.get(taskId);
|
||||
innerList.forEach(inner ->{
|
||||
ResourceMsgDTO msg = new ResourceMsgDTO();
|
||||
msg.setNum(inner.getNum());
|
||||
resourceTypeList.forEach(type ->{
|
||||
if (ObjectUtil.isNotEmpty(inner) && inner.getResourceId().get(0).equals(type.getId())){
|
||||
msg.setResourceType(type.getName());
|
||||
}
|
||||
});
|
||||
resourceList.forEach(res ->{
|
||||
if (ObjectUtil.isNotEmpty(inner) && inner.getResourceId().get(1).equals(res.getId())){
|
||||
msg.setResourceName(res.getName());
|
||||
}
|
||||
});
|
||||
dtoList.add(msg);
|
||||
});
|
||||
taskResouceMap.put(taskId, dtoList);
|
||||
}
|
||||
|
||||
return TaskPreAssemblyDTO.builder()
|
||||
.projectDOList(projectDOList)
|
||||
.areaDOList(areaDOList)
|
||||
.executorList(executorList)
|
||||
.mainPersonList(mainPersonList)
|
||||
.cropDOList(cropDOList)
|
||||
.taskCateDOList(taskCateDOList)
|
||||
.taskMsgList(taskMsgList)
|
||||
.taskResouceMap(taskResouceMap)
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务所需信息组装
|
||||
* @param taskDOList 任务列表
|
||||
**/
|
||||
public Map<Long, TaskAssemblyDTO> taskAssemble(List<TaskDO> taskDOList){
|
||||
TaskPreAssemblyDTO preAssemblyDTO = this.taskPreAssemble(taskDOList);
|
||||
|
||||
Map<Long, TaskAssemblyDTO> map = new HashMap<>();
|
||||
for (TaskDO taskDO : taskDOList) {
|
||||
TaskAssemblyDTO dto = new TaskAssemblyDTO();
|
||||
//项目名
|
||||
preAssemblyDTO.getProjectDOList().stream().filter(project -> project.getId().equals(taskDO.getProjectId())).findFirst()
|
||||
.ifPresent(item ->{
|
||||
dto.setProjectName(item.getName());
|
||||
});
|
||||
//负责人名
|
||||
preAssemblyDTO.getMainPersonList().stream().filter(mainPerson -> mainPerson.getId().equals(taskDO.getMainPerson())).findFirst()
|
||||
.ifPresent(item ->{
|
||||
dto.setMainPersonName(item.getName());
|
||||
});
|
||||
//作物名
|
||||
preAssemblyDTO.getCropDOList().stream().filter(crop -> crop.getId().equals(taskDO.getCropId())).findFirst()
|
||||
.ifPresent(item ->{
|
||||
dto.setCropName(item.getName());
|
||||
});
|
||||
//任务类型名
|
||||
preAssemblyDTO.getTaskCateDOList().stream().filter(taskCate -> taskCate.getId().equals(taskDO.getTaskCateId())).findFirst()
|
||||
.ifPresent(item ->{
|
||||
dto.setTaskName(item.getName());
|
||||
});
|
||||
//任务内容
|
||||
preAssemblyDTO.getTaskMsgList().stream().filter(taskMsg -> taskMsg.getId().equals(taskDO.getTaskCateName())).findFirst()
|
||||
.ifPresent(item ->{
|
||||
dto.setTaskMsg(item.getName());
|
||||
});
|
||||
//执行人名
|
||||
List<String> executorNameList = new ArrayList<>();
|
||||
preAssemblyDTO.getExecutorList().forEach(executor ->{
|
||||
taskDO.getExecutorPerson().toJavaList(Long.class).forEach(item ->{
|
||||
if (executor.getId().equals(item)){
|
||||
executorNameList.add( executor.getName());
|
||||
}
|
||||
});
|
||||
});
|
||||
dto.setExecutorNameList(executorNameList);
|
||||
//区域名
|
||||
List<String> areaNameList = new ArrayList<>();
|
||||
for (Object obj : taskDO.getAreas()) {
|
||||
List<Long> areaList = JSONArray.parseArray(obj.toString(), Long.class);
|
||||
StrBuilder areaName = new StrBuilder();
|
||||
areaList.forEach( one ->{
|
||||
preAssemblyDTO.getAreaDOList().stream().filter(item -> item.getId().equals(one)).findFirst()
|
||||
.ifPresent(sonArea ->{
|
||||
areaName.append(sonArea.getName());
|
||||
});
|
||||
|
||||
});
|
||||
areaNameList.add(areaName.toString());
|
||||
}
|
||||
dto.setAreaNameList(areaNameList);
|
||||
//资源
|
||||
if (preAssemblyDTO.getTaskResouceMap().containsKey(taskDO.getId())){
|
||||
List<ResourceMsgDTO> resList = preAssemblyDTO.getTaskResouceMap().get(taskDO.getId());
|
||||
dto.setTaskResourceList(resList);
|
||||
}
|
||||
map.put(taskDO.getId(), dto);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user