From e80a44320ac945a4956e77b25ae17cfa21b57177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B9=85=E5=93=A5?= <787952492@qq.com> Date: Mon, 6 Jun 2022 19:48:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=20=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=20=E9=A1=B9=E7=9B=AE=20=E5=AE=8C=E6=88=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9C=80=E6=96=B0=E4=B8=80=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao/framework/common/page/PageDTO.java | 23 ++++ .../admin/project/ProjectController.java | 9 +- .../admin/project/dto/ProjectListDTO.java | 22 ++++ .../admin/project/dto/ProjectPageDTO.java | 16 +++ .../farm/dal/mysql/project/ProjectMapper.java | 7 ++ .../farm/service/project/ProjectService.java | 9 ++ .../service/project/ProjectServiceImpl.java | 119 ++++++++++++++++++ 7 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/page/PageDTO.java create mode 100644 zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectListDTO.java create mode 100644 zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectPageDTO.java diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/page/PageDTO.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/page/PageDTO.java new file mode 100644 index 00000000..789160f3 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/page/PageDTO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.framework.common.page; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value = "PageDTO", description = "分页对象") +public class PageDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("页码") + private Integer pageNum = 1; + + @ApiModelProperty("每页数量") + private Integer pageSize = 10; + + @ApiModelProperty("搜索关键字") + private String searchKey; +} \ No newline at end of file diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/ProjectController.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/ProjectController.java index 005b45a9..a289b7cf 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/ProjectController.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/ProjectController.java @@ -1,12 +1,13 @@ package cn.iocoder.yudao.module.farm.controller.admin.project; +import cn.iocoder.yudao.module.farm.controller.admin.project.dto.ProjectListDTO; +import cn.iocoder.yudao.module.farm.controller.admin.project.dto.ProjectPageDTO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; import io.swagger.annotations.*; -import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; import java.util.*; @@ -105,4 +106,10 @@ public class ProjectController { ExcelUtils.write(response, "农场项目.xls", "数据", ProjectExcelVO.class, datas); } + @ApiOperation("小程序项目列表") + @PostMapping("/findProjectList") + public List findProjectList(ProjectPageDTO pageDTO){ + return projectService.findProjectList(pageDTO); + } + } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectListDTO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectListDTO.java new file mode 100644 index 00000000..6d155f61 --- /dev/null +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectListDTO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.farm.controller.admin.project.dto; + +import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; + +import lombok.*; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProjectListDTO extends ProjectDO { + + + List areaName; + + List executorName; + + String taskName; + + +} diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectPageDTO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectPageDTO.java new file mode 100644 index 00000000..2349d1e0 --- /dev/null +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/dto/ProjectPageDTO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.farm.controller.admin.project.dto; + +import cn.iocoder.yudao.framework.common.page.PageDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ProjectPageDTO extends PageDTO { + + private static final long serialVersionUID = 1L; + + private Integer state; +} \ No newline at end of file diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/project/ProjectMapper.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/project/ProjectMapper.java index 4bf373a2..0bdeb9cf 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/project/ProjectMapper.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/project/ProjectMapper.java @@ -5,6 +5,7 @@ import java.util.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.farm.controller.admin.project.dto.ProjectPageDTO; import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.farm.controller.admin.project.vo.*; @@ -49,4 +50,10 @@ public interface ProjectMapper extends BaseMapperX { List getProjectSearchPage(ProjectSearchPageReqVO reqVO); + default List findProjectList(ProjectPageDTO pageDTO){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProjectDO::getState, pageDTO.getState()) + .orderByDesc(ProjectDO::getId)); + } + } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectService.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectService.java index b0d4263b..6d33f941 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectService.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectService.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.farm.service.project; import java.util.*; import javax.validation.*; + +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.controller.admin.project.vo.*; import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -72,4 +75,10 @@ public interface ProjectService { */ List getProjectList(ProjectExportReqVO exportReqVO); + + /** + * @Description 小程序项目列表 + **/ + List findProjectList(ProjectPageDTO pageDTO); + } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectServiceImpl.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectServiceImpl.java index 354ddfc5..bcb7a15d 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectServiceImpl.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectServiceImpl.java @@ -1,10 +1,31 @@ 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 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.project.vo.*; import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -26,6 +47,14 @@ public class ProjectServiceImpl implements ProjectService { @Resource private ProjectMapper projectMapper; + @Resource + private TaskMapper taskMapper; + @Resource + private CpUserMapper cpUserMapper; + @Resource + private AreaMapper areaMapper; + @Resource + private TaskCateMapper taskCateMapper; @Override public Long createProject(ProjectCreateReqVO createReqVO) { @@ -89,4 +118,94 @@ public class ProjectServiceImpl implements ProjectService { return projectMapper.selectList(exportReqVO); } + @Override + public List findProjectList(ProjectPageDTO pageDTO){ + List list = projectMapper.findProjectList(pageDTO); + List idList = list.stream().map(ProjectDO::getId).collect(Collectors.toList()); + //任务完成的 + List taskList = taskMapper.selectList(Wrappers.lambdaQuery().in(TaskDO::getProjectId, idList) + .eq(TaskDO::getStatus, TaskStatus.COMPLETE.getCode())); + + Set personSet = new HashSet<>(); + Set areaSet = new HashSet<>(); + Set 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 joinPerson = new ArrayList(personSet); + List cpUserList = cpUserMapper.selectList(Wrappers.lambdaQuery().in(CpUserDO::getId, joinPerson)); + List joinArea = new ArrayList(areaSet); + List areaDOList = areaMapper.selectList(Wrappers.lambdaQuery().in(AreaDO::getId, joinArea)); + List joinTaskCate = new ArrayList<>(taskCateSet); + List taskCateDOList = taskCateMapper.selectList(Wrappers.lambdaQuery().in(TaskCateDO::getId, joinTaskCate)); + + //拼接 姓名/区域/任务名 + List 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 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 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; + + } + }