diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/AreaController.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/AreaController.java index cee5146c..284a0682 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/AreaController.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/AreaController.java @@ -1,30 +1,30 @@ package cn.iocoder.yudao.module.farm.controller.admin.area; -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.*; -import java.io.IOException; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; - +import cn.iocoder.yudao.module.farm.controller.admin.area.dto.AreaProjectDTO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.*; -import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO; import cn.iocoder.yudao.module.farm.convert.area.AreaConvert; +import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO; import cn.iocoder.yudao.module.farm.service.area.AreaService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Api(tags = "管理后台 - ") @RestController @@ -97,4 +97,9 @@ public class AreaController { ExcelUtils.write(response, ".xls", "数据", AreaExcelVO.class, datas); } + @GetMapping("/miniAreaProjectCount") + @ApiOperation("小程序首页上方一级区域及自己计划准备中的数量") + public CommonResult> miniAreaProjectCount(){ + return success(areaService.miniAreaProjectCount()); + } } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/dto/AreaProjectDTO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/dto/AreaProjectDTO.java new file mode 100644 index 00000000..05543edb --- /dev/null +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/area/dto/AreaProjectDTO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.farm.controller.admin.area.dto; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class AreaProjectDTO { + private Long areaId; + + private String areaName; + + private Double area; + + private Integer projectCount; +} diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/statistical/StatisticalController.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/statistical/StatisticalController.java index ea064c0f..1ffe528b 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/statistical/StatisticalController.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/statistical/StatisticalController.java @@ -108,7 +108,7 @@ public class StatisticalController { * 项目数据 */ public List projectMsg(StatisticalVo vo){ - List taskList = taskMapper.selectList(Wrappers.lambdaQuery().eq(TaskDO::getPretendDelete, false).eq(TaskDO::getDraft, false)); + List taskList = taskMapper.selectList(Wrappers.lambdaQuery().ne(TaskDO::getStatus, TaskStatus.END.getCode()).eq(TaskDO::getDraft, false)); vo.setTaskTotalCount(taskList.size()); Long planeCount = taskList.stream().filter(plane -> plane.getStatus().equals(TaskStatus.PLAN) || plane.getStatus().equals(TaskStatus.READY)).count(); vo.setTaskPlanCount(planeCount.intValue()); @@ -162,7 +162,7 @@ public class StatisticalController { vo.setCakeSeries(cakeList); } vo.setCakeTitle("总数量"); - vo.setCakeSubtitle(vo.getCakeSeries().stream().mapToDouble(CakeSeries::getValue).sum()+"平方"); + vo.setCakeSubtitle(vo.getCakeSeries().stream().mapToDouble(CakeSeries::getValue).sum()+"亩"); } } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/dto/TaskPageDTO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/dto/TaskPageDTO.java deleted file mode 100644 index 92aef6ce..00000000 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/dto/TaskPageDTO.java +++ /dev/null @@ -1,9 +0,0 @@ -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 { -} diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskBaseVO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskBaseVO.java index c31fde9e..a0a53b5f 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskBaseVO.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskBaseVO.java @@ -66,8 +66,6 @@ public class TaskBaseVO extends BaseDO { @ApiModelProperty("草稿") private Boolean draft = false; - private Boolean pretendDelete; - private Map actions; public Map getActions() { actions = Maps.newHashMap(); diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExcelVO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExcelVO.java index aa677fba..e12e8653 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExcelVO.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExcelVO.java @@ -49,6 +49,5 @@ public class TaskExcelVO { private Date createTime; @ExcelProperty("草稿") private Boolean draft; - private Boolean pretendDelete; } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExportReqVO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExportReqVO.java index e7911488..7c2959fd 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExportReqVO.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskExportReqVO.java @@ -63,6 +63,4 @@ public class TaskExportReqVO { @ApiModelProperty("草稿") private Boolean draft; - private Boolean pretendDelete; - } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskPageReqVO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskPageReqVO.java index 08412aec..abf29190 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskPageReqVO.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/vo/TaskPageReqVO.java @@ -70,8 +70,6 @@ public class TaskPageReqVO extends PageParam { @ApiModelProperty("草稿") private Boolean draft = false; - private Boolean pretendDelete = false; - private TaskStatus status; @ApiModelProperty("参与状态 我参与 我创建 我负责") diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/task/TaskDO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/task/TaskDO.java index 04dc7ef2..57222296 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/task/TaskDO.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/task/TaskDO.java @@ -90,9 +90,6 @@ public class TaskDO extends BaseDO { @ApiModelProperty("草稿") private Boolean draft; - @ApiModelProperty("假装删除") - private Boolean pretendDelete; - @ApiModelProperty("部门Id") @Dict(dictTable = "system_dept",dicCode = "id",dicText = "name") private Long deptId; diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/task/TaskMapper.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/task/TaskMapper.java index 6cf39801..e89ac570 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/task/TaskMapper.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/task/TaskMapper.java @@ -1,15 +1,12 @@ package cn.iocoder.yudao.module.farm.dal.mysql.task; -import java.util.*; - -import cn.hutool.core.util.ObjectUtil; -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.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.farm.controller.admin.task.vo.TaskExportReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.farm.controller.admin.task.vo.*; + +import java.util.List; /** * 农场项目 Mapper @@ -19,41 +16,6 @@ import cn.iocoder.yudao.module.farm.controller.admin.task.vo.*; @Mapper public interface TaskMapper extends BaseMapperX { - default PageResult selectPage(TaskPageReqVO reqVO) { - LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX(); - - //搜索区域 - if (ObjectUtil.isNotEmpty(reqVO.getAreaId())){ - lambdaQueryWrapperX.apply("JSON_CONTAINS(areas, '"+ reqVO.getAreaId()+"')"); - } - //搜索资源 - if (ObjectUtil.isNotEmpty(reqVO.getResourceId())){ - lambdaQueryWrapperX.apply("JSON_CONTAINS(resources, JSON_OBJECT('resourceId'," +reqVO.getResourceId()+"))"); - } - //搜索执行人 - if (ObjectUtil.isNotEmpty(reqVO.getExecutorName())){ - lambdaQueryWrapperX.apply("JSON_CONTAINS(executor_person, '"+ reqVO.getExecutorName()+"')"); - } - - lambdaQueryWrapperX.eqIfPresent(TaskDO::getProjectId, reqVO.getProjectId()) - .eqIfPresent(TaskDO::getCropId, reqVO.getCropId()) - .eqIfPresent(TaskDO::getCropNum, reqVO.getCropNum()) - .eqIfPresent(TaskDO::getTaskCateId, reqVO.getTaskCateId()) - .eqIfPresent(TaskDO::getTaskCateName, reqVO.getTaskCateName()) - .eqIfPresent(TaskDO::getResources, reqVO.getResources()) - .eqIfPresent(TaskDO::getImages, reqVO.getImages()) - .eqIfPresent(TaskDO::getDraft, reqVO.getDraft()) - .betweenIfPresent(TaskDO::getPlanStartTime, reqVO.getBeginPlanStartTime(), reqVO.getEndPlanStartTime()) - .betweenIfPresent(TaskDO::getPlanEndTime, reqVO.getBeginPlanEndTime(), reqVO.getEndPlanEndTime()) - .eqIfPresent(TaskDO::getWeight, reqVO.getWeight()) - .betweenIfPresent(TaskDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .eqIfPresent(TaskDO::getPretendDelete, reqVO.getPretendDelete()) - .eqIfPresent(TaskDO::getMainPerson, reqVO.getMainPerson()) - .orderByDesc(TaskDO::getId); - - return selectPage(reqVO, lambdaQueryWrapperX); - } - default List selectList(TaskExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(TaskDO::getProjectId, reqVO.getProjectId()) @@ -68,7 +30,6 @@ public interface TaskMapper extends BaseMapperX { .betweenIfPresent(TaskDO::getPlanEndTime, reqVO.getBeginPlanEndTime(), reqVO.getEndPlanEndTime()) .eqIfPresent(TaskDO::getWeight, reqVO.getWeight()) .betweenIfPresent(TaskDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .eqIfPresent(TaskDO::getPretendDelete, reqVO.getPretendDelete()) .orderByDesc(TaskDO::getId)); } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaService.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaService.java index f3bed240..df4516ce 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaService.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.farm.service.area; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.farm.controller.admin.area.dto.AreaProjectDTO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaCreateReqVO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaExportReqVO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaPageReqVO; @@ -90,4 +91,6 @@ public interface AreaService { */ List getAreaAndSubArea(Long id); + List miniAreaProjectCount(); + } diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaServiceImpl.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaServiceImpl.java index dd212e04..43c40ead 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaServiceImpl.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/area/AreaServiceImpl.java @@ -2,13 +2,19 @@ package cn.iocoder.yudao.module.farm.service.area; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.farm.controller.admin.area.dto.AreaProjectDTO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaCreateReqVO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaExportReqVO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.area.vo.AreaUpdateReqVO; import cn.iocoder.yudao.module.farm.convert.area.AreaConvert; import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO; +import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; import cn.iocoder.yudao.module.farm.dal.mysql.area.AreaMapper; +import cn.iocoder.yudao.module.farm.dal.mysql.project.ProjectMapper; +import cn.iocoder.yudao.module.farm.enums.ProjectStateEnum; +import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO; +import cn.iocoder.yudao.module.system.dal.mysql.CpUser.CpUserMapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -23,6 +29,7 @@ import java.util.Optional; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.AREA_NOT_EXISTS; /** @@ -37,6 +44,10 @@ public class AreaServiceImpl implements AreaService { @Resource private AreaMapper areaMapper; + @Resource + private CpUserMapper cpUserMapper; + @Resource + private ProjectMapper projectMapper; @Override public Long createArea(AreaCreateReqVO createReqVO) { @@ -184,4 +195,56 @@ public class AreaServiceImpl implements AreaService { return null; } + public List miniAreaProjectCount(){ + List allList = areaMapper.selectList(); + List areaProjectList = new ArrayList<>(); + + CpUserDO user = cpUserMapper.selectOne(CpUserDO::getUserId, getLoginUser().getUsername()); + List projectList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(user)){ + projectList = projectMapper.selectList(Wrappers.lambdaQuery().eq(ProjectDO::getDraft, false) + .eq(ProjectDO::getPretendDelete, false).in(ProjectDO::getState, ProjectStateEnum.STARTING.getCode(), ProjectStateEnum.PLAN.getCode()) + .eq(ProjectDO::getMainPerson, user.getId())); + System.out.println(projectList.size()); + } + + List oneList = allList.stream().filter(item -> item.getParentId().equals(0L)).collect(Collectors.toList()); + for (AreaDO oneArea : oneList) { + //存放一级及对应二三级区域信息 + List areaList = new ArrayList<>(); + areaList.add(oneArea); + + List secondList = allList.stream().filter(item -> item.getParentId().equals(oneArea.getId())).collect(Collectors.toList()); + areaList.addAll(secondList); + for (AreaDO twoArea : secondList) { + List thirdList = allList.stream().filter(item -> item.getParentId().equals(twoArea.getId())).collect(Collectors.toList()); + areaList.addAll(thirdList); + } + + List distinctIdList = areaList.stream().map(AreaDO::getId).distinct().collect(Collectors.toList()); + System.out.println(oneArea.getName() +",,"+ secondList.size()+">>>>" + distinctIdList.toString()); + AreaProjectDTO areaProject = AreaProjectDTO.builder() + .areaId(oneArea.getId()) + .areaName(oneArea.getName()) + .area(oneArea.getArea()) + .projectCount(0) + .build(); + + if (ObjectUtil.isNotEmpty(projectList)){ + for (ProjectDO project : projectList) { + List countList = project.getAreas().stream().filter(distinctIdList::contains).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(countList)){ + areaProject.setProjectCount(areaProject.getProjectCount() + 1) ; + } + } + } + areaProjectList.add(areaProject); + } + + + + + return areaProjectList; + } + } 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 0b561048..455e88dc 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 @@ -206,7 +206,16 @@ public class ProjectServiceImpl implements ProjectService { return queryWrapperX.eq(ProjectDO::getCropId, 99999L); } } - queryWrapperX.eqIfPresent(ProjectDO::getState, pageDTO.getState()); + if (ObjectUtil.isNotEmpty(pageDTO.getState())){ + if (pageDTO.getState() == 13){ + //查看 计划中进行中 + queryWrapperX.lt(ProjectDO::getState, ProjectStateEnum.FINISH.getCode()); + }else{ + //按给定状态查看 + queryWrapperX.eqIfPresent(ProjectDO::getState, pageDTO.getState()); + } + } + queryWrapperX.likeIfPresent(ProjectDO::getName, pageDTO.getProjectName()); queryWrapperX.eq(ProjectDO::getPretendDelete, false); if (ObjectUtil.isNotEmpty(pageDTO.getTimeLimit())){ @@ -308,7 +317,7 @@ public class ProjectServiceImpl implements ProjectService { public void checkProjectTaskFinish(ProjectDO updateObj){ List taskList = taskMapper.selectList(Wrappers.lambdaQuery() .eq(TaskDO::getProjectId, updateObj.getId()) - .eq(TaskDO::getPretendDelete, false) + .ne(TaskDO::getStatus, TaskStatus.END.getCode()) .eq(TaskDO::getDraft, false) .ne(TaskDO::getStatus, TaskStatus.COMPLETE) ); diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/task/TaskServiceImpl.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/task/TaskServiceImpl.java index 6b49ad78..52e5776a 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/task/TaskServiceImpl.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/task/TaskServiceImpl.java @@ -62,6 +62,7 @@ import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*; @@ -141,7 +142,7 @@ public class TaskServiceImpl implements TaskService { // 校验存在 TaskDO taskDO = this.validateTaskExists(id); // 删除 - taskDO.setPretendDelete(true); + taskDO.setStatus(TaskStatus.END); taskMapper.updateById(taskDO); } @@ -204,7 +205,6 @@ public class TaskServiceImpl implements TaskService { .betweenIfPresent(TaskDO::getPlanEndTime, pageReqVO.getBeginPlanEndTime(), pageReqVO.getEndPlanEndTime()) .eqIfPresent(TaskDO::getWeight, pageReqVO.getWeight()) .betweenIfPresent(TaskDO::getCreateTime, pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime()) - .eqIfPresent(TaskDO::getPretendDelete, pageReqVO.getPretendDelete()) .eqIfPresent(TaskDO::getStatus, pageReqVO.getStatus()) .orderByDesc(TaskDO::getId); @@ -220,14 +220,50 @@ public class TaskServiceImpl implements TaskService { } @Override - public PageResult getAdminTaskPage(TaskPageReqVO pageReqVO){ - PageResult taskPage = taskMapper.selectPage(pageReqVO); + public PageResult getAdminTaskPage(TaskPageReqVO reqVO){ + LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX(); + + //搜索区域 + if (ObjectUtil.isNotEmpty(reqVO.getAreaId())){ + lambdaQueryWrapperX.apply("JSON_CONTAINS(areas, '"+ reqVO.getAreaId()+"')"); + } + //搜索资源 + if (ObjectUtil.isNotEmpty(reqVO.getResourceId())){ + lambdaQueryWrapperX.apply("JSON_CONTAINS(resources, JSON_OBJECT('resourceId'," +reqVO.getResourceId()+"))"); + } + //搜索执行人 + if (ObjectUtil.isNotEmpty(reqVO.getExecutorName())){ + lambdaQueryWrapperX.apply("JSON_CONTAINS(executor_person, '"+ reqVO.getExecutorName()+"')"); + } + //自己创建和负责的任务 + if (ObjectUtil.isNotEmpty(reqVO.getMyTask()) && reqVO.getMyTask()){ + CpUserDO user = cpUserMapper.selectOne(CpUserDO::getUserId, getLoginUser().getUsername()); + if (ObjectUtil.isNotEmpty(user)){ + //查看我负责或创建的任务 + lambdaQueryWrapperX.apply(" ( main_person = "+ user.getId() +" or creator = " + getLoginUserId() +")"); + } + lambdaQueryWrapperX.ne(TaskDO::getStatus, TaskStatus.END.getCode()); + } + + lambdaQueryWrapperX.eqIfPresent(TaskDO::getProjectId, reqVO.getProjectId()) + .eqIfPresent(TaskDO::getCropId, reqVO.getCropId()) + .eqIfPresent(TaskDO::getTaskCateId, reqVO.getTaskCateId()) + .eqIfPresent(TaskDO::getTaskCateName, reqVO.getTaskCateName()) + .eqIfPresent(TaskDO::getDraft, reqVO.getDraft()) + .betweenIfPresent(TaskDO::getPlanStartTime, reqVO.getBeginPlanStartTime(), reqVO.getEndPlanStartTime()) + .betweenIfPresent(TaskDO::getPlanEndTime, reqVO.getBeginPlanEndTime(), reqVO.getEndPlanEndTime()) + .eqIfPresent(TaskDO::getWeight, reqVO.getWeight()) + .betweenIfPresent(TaskDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .eqIfPresent(TaskDO::getStatus, reqVO.getStatus()) + .eqIfPresent(TaskDO::getMainPerson, reqVO.getMainPerson()) + .orderByDesc(TaskDO::getId); + + PageResult taskPage = taskMapper.selectPage(reqVO, lambdaQueryWrapperX); Map map = this.taskAssemble(taskPage.getList()); List list = new ArrayList<>(map.values()).stream().sorted(Comparator.comparing(TaskAssemblyDTO::getId).reversed()).collect(Collectors.toList()); PageResult page = new PageResult<>(); page.setList(list); page.setTotal(taskPage.getTotal()); - return page; } @@ -459,16 +495,16 @@ public class TaskServiceImpl implements TaskService { if (ObjectUtil.isNotEmpty(userId)){ //我创建 taskSummaryDTO.setCreateCount(taskMapper.selectCount( - new LambdaQueryWrapper().eq(TaskDO::getCreator, userId).eq(TaskDO::getDraft, false).eq(TaskDO::getPretendDelete, false)).intValue()); + new LambdaQueryWrapper().eq(TaskDO::getCreator, userId).eq(TaskDO::getDraft, false).ne(TaskDO::getStatus, TaskStatus.END.getCode())).intValue()); AdminUserDO adminUser = adminUserMapper.selectOne(AdminUserDO::getId, userId); CpUserDO cpUser = cpUserMapper.selectOne(CpUserDO::getUserId, adminUser.getCpUserId()); //我负责的 taskSummaryDTO.setResponsibleCount(taskMapper.selectCount( - new LambdaQueryWrapper().eq(TaskDO::getMainPerson, cpUser.getId()).eq(TaskDO::getDraft, false).eq(TaskDO::getPretendDelete, false)).intValue()); + new LambdaQueryWrapper().eq(TaskDO::getMainPerson, cpUser.getId()).eq(TaskDO::getDraft, false).ne(TaskDO::getStatus, TaskStatus.END.getCode())).intValue()); //我参与的 //queryWrapperX.apply(" ((JSON_CONTAINS(members, '"+ user.getId()+"') or creator = " + getLoginUserId() +"))"); taskSummaryDTO.setJoinCount(taskMapper.selectCount( - new LambdaQueryWrapper().eq(TaskDO::getDraft, false).eq(TaskDO::getPretendDelete, false).apply(("JSON_CONTAINS(executor_person, '"+ cpUser.getId()+"')"))).intValue()); + new LambdaQueryWrapper().eq(TaskDO::getDraft, false).ne(TaskDO::getStatus, TaskStatus.END.getCode()).apply(("JSON_CONTAINS(executor_person, '"+ cpUser.getId()+"')"))).intValue()); } @@ -479,8 +515,15 @@ public class TaskServiceImpl implements TaskService { public List> whatDayHaveTask(Long projectId){ LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); queryWrapperX.ne(TaskDO::getDraft, true); - queryWrapperX.ne(TaskDO::getPretendDelete, true); + queryWrapperX.ne(TaskDO::getStatus, TaskStatus.END.getCode()); queryWrapperX.eqIfPresent(TaskDO::getProjectId, projectId); + + CpUserDO user = cpUserMapper.selectOne(CpUserDO::getUserId, getLoginUser().getUsername()); + if (ObjectUtil.isNotEmpty(user)){ + //查看我负责或创建的任务 + queryWrapperX.apply(" ( main_person = "+ user.getId() +" or creator = " + getLoginUserId() +")"); + } + List taskList = taskMapper.selectList(queryWrapperX); List> list = new ArrayList<>(); if (ObjectUtil.isEmpty(taskList)){ @@ -573,6 +616,10 @@ public class TaskServiceImpl implements TaskService { * @param task 任务实体 */ public void checkStateByExecutionTime(TaskDO task){ + if (ObjectUtil.isNotEmpty(task.getStatus()) && task.getStatus().equals(TaskStatus.END)){ + task.setStatus(TaskStatus.END); + return; + } if (task.getPlanStartTime() != null){ FarmTimeEnum timeEnum = FarmTimeUtil.checkingDate(task.getPlanStartTime()); if (timeEnum.equals(FarmTimeEnum.BEFORE_TODAY)){ @@ -596,7 +643,7 @@ public class TaskServiceImpl implements TaskService { Boolean oldIgnore = TenantContextHolder.isIgnore(); try { TenantContextHolder.setIgnore(true); - List taskList = taskMapper.selectList(Wrappers.lambdaQuery().ne(TaskDO::getDraft, true).eq(TaskDO::getPretendDelete, false) + List taskList = taskMapper.selectList(Wrappers.lambdaQuery().ne(TaskDO::getDraft, true).ne(TaskDO::getStatus, TaskStatus.END.getCode()) .in(TaskDO::getStatus, TaskStatus.PLAN.getCode(), TaskStatus.READY.getCode()) .like(TaskDO::getPlanStartTime, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))); if (taskList.size() != 0){