Browse Source

优化提示

zyh
zhanyunjiu 3 years ago
parent
commit
21a3f1e166
  1. 20
      zsw-farm/zsw-farm-api/src/main/java/cn/iocoder/yudao/module/farm/enums/ErrorCodeConstants.java
  2. 14
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussBaseVO.java
  3. 13
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussExcelVO.java
  4. 13
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussExportReqVO.java
  5. 14
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussPageReqVO.java
  6. 14
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/statistical/StatisticalController.java
  7. 5
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/dto/TaskDetailDTO.java
  8. 13
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/discuss/DiscussDO.java
  9. 37
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectServiceImpl.java
  10. 87
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/task/TaskServiceImpl.java

20
zsw-farm/zsw-farm-api/src/main/java/cn/iocoder/yudao/module/farm/enums/ErrorCodeConstants.java

@ -34,10 +34,26 @@ public interface ErrorCodeConstants{
ErrorCode PROJECT_AREA_HAS_OCCUPIED = new ErrorCode(1000007014, "项目更新失败,所选区域已被其他进行中项目占用"); ErrorCode PROJECT_AREA_HAS_OCCUPIED = new ErrorCode(1000007014, "项目更新失败,所选区域已被其他进行中项目占用");
ErrorCode PROJECT_NOT_STARTING = new ErrorCode(1000007015, "任务更新失败,项目还没开始"); ErrorCode PROJECT_NOT_STARTING = new ErrorCode(1000007015, "任务提交失败,进行中的项目才能新增或修改任务");
ErrorCode DISCUSS_ADD_FAIL = new ErrorCode(1000007016, "活动操作失败,只有任务在进行中才可以新增活动"); ErrorCode DISCUSS_ADD_FAIL = new ErrorCode(1000007016, "活动操作失败,只有任务在进行中才可以新增活动");
ErrorCode DISCUSS_TASK_IS_DRAFT = new ErrorCode(100000701, "活动操作失败,所属任务为草稿"); ErrorCode DISCUSS_TASK_IS_DRAFT = new ErrorCode(100000717, "活动操作失败,所属任务为草稿");
ErrorCode TASK_STATE_CHANGE_FAIL = new ErrorCode(100000718, "任务更改失败, 计划中或准备中的任务只能更改为开始");
ErrorCode TASK_WAS_END = new ErrorCode(100000719, "任务更改失败, 已完成的任务只能更改为任务关闭");
ErrorCode TASK_WAS_STARTED = new ErrorCode(100000720, "任务更改失败, 已开始的任务不能更改为计划中或准备中");
ErrorCode PROJECT_PLAN_TO_STARTING = new ErrorCode(100000721, "项目更改失败, 计划中的任务只能更改成进行中");
ErrorCode PROJECT_STARTING_TO_FINISH = new ErrorCode(100000722, "项目更改失败, 进行中的任务只能更改成已完成");
ErrorCode PROJECT_FINISH = new ErrorCode(100000723, "项目更改失败, 已完成项目不可更改");
ErrorCode PROJECT_STARTING_CANT_CHANGE_CROP = new ErrorCode(100000724, "项目更改失败, 进行中的任务不可修改作物");
ErrorCode PROJECT_STARTING_CANT_CHANGE_AREA = new ErrorCode(100000724, "项目更改失败, 进行中的任务不可修改区域");
} }

14
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussBaseVO.java

@ -1,13 +1,11 @@
package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo; package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo;
import cn.iocoder.yudao.module.farm.controller.admin.workHour.vo.WorkHourBaseVO; import cn.iocoder.yudao.module.farm.controller.admin.workHour.vo.WorkHourBaseVO;
import com.alibaba.fastjson.JSONArray; import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*; import javax.validation.constraints.NotNull;
import java.util.*; import java.util.List;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
/** /**
* 农场任务讨论 Base VO提供给添加修改详细的子 VO 使用 * 农场任务讨论 Base VO提供给添加修改详细的子 VO 使用
@ -32,7 +30,7 @@ public class DiscussBaseVO {
private List<Long> areas; private List<Long> areas;
private Integer cropNum; private Double cropNum;
private List<WorkHourBaseVO> workHourList; private List<WorkHourBaseVO> workHourList;

13
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussExcelVO.java

@ -1,14 +1,11 @@
package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo; package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo;
import cn.iocoder.yudao.module.farm.controller.admin.workHour.vo.WorkHourBaseVO; import cn.iocoder.yudao.module.farm.controller.admin.workHour.vo.WorkHourBaseVO;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/** /**
* 农场任务讨论 Excel VO * 农场任务讨论 Excel VO
@ -35,7 +32,7 @@ public class DiscussExcelVO {
private List<Long> areas; private List<Long> areas;
private Integer cropNum; private Double cropNum;
@ExcelProperty("") @ExcelProperty("")
private Date createTime; private Date createTime;

13
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussExportReqVO.java

@ -1,12 +1,13 @@
package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo; package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo;
import com.alibaba.fastjson.JSONArray; import io.swagger.annotations.ApiModel;
import lombok.*; import io.swagger.annotations.ApiModelProperty;
import java.util.*; import lombok.Data;
import io.swagger.annotations.*;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ApiModel(value = "管理后台 - 农场任务讨论 Excel 导出 Request VO", description = "参数和 DiscussPageReqVO 是一致的") @ApiModel(value = "管理后台 - 农场任务讨论 Excel 导出 Request VO", description = "参数和 DiscussPageReqVO 是一致的")
@ -27,7 +28,7 @@ public class DiscussExportReqVO {
private List<Long> areas; private List<Long> areas;
private Integer cropNum; private Double cropNum;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "开始") @ApiModelProperty(value = "开始")

14
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/discuss/vo/DiscussPageReqVO.java

@ -1,12 +1,16 @@
package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo; package cn.iocoder.yudao.module.farm.controller.admin.discuss.vo;
import com.alibaba.fastjson.JSONArray;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ApiModel("管理后台 - 农场任务讨论分页 Request VO") @ApiModel("管理后台 - 农场任务讨论分页 Request VO")
@ -29,7 +33,7 @@ public class DiscussPageReqVO extends PageParam {
private List<Long> areas; private List<Long> areas;
private Integer cropNum; private Double cropNum;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "开始") @ApiModelProperty(value = "开始")

14
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/statistical/StatisticalController.java

@ -4,7 +4,9 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.farm.controller.admin.statistical.dto.RequestDTO; import cn.iocoder.yudao.module.farm.controller.admin.statistical.dto.RequestDTO;
import cn.iocoder.yudao.module.farm.controller.admin.statistical.vo.*; import cn.iocoder.yudao.module.farm.controller.admin.statistical.vo.CakeSeries;
import cn.iocoder.yudao.module.farm.controller.admin.statistical.vo.StatisticalVo;
import cn.iocoder.yudao.module.farm.controller.admin.statistical.vo.WorkMsg;
import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO; 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.crop.CropDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO; import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO;
@ -24,10 +26,12 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.DateFormat;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -129,12 +133,12 @@ public class StatisticalController {
if (cropMap.containsKey(cropDO.getId())){ if (cropMap.containsKey(cropDO.getId())){
CakeSeries cakeSeries = cropMap.get(cropDO.getId()); CakeSeries cakeSeries = cropMap.get(cropDO.getId());
cakeSeries.setValue(cakeSeries.getValue() + areaSum); cakeSeries.setValue(cakeSeries.getValue() + areaSum);
cakeSeries.setLabelText(cakeSeries.getValue().toString());
}else{ }else{
CakeSeries cakeSeries = CakeSeries.builder() CakeSeries cakeSeries = CakeSeries.builder()
.name(cropDO.getName()) .name(cropDO.getName())
.value(areaSum) .value(areaSum)
.labelText("不知道说啥") .labelText(areaSum.toString())
.build(); .build();
cropMap.put(cropDO.getId(), cakeSeries); cropMap.put(cropDO.getId(), cakeSeries);
} }

5
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/task/dto/TaskDetailDTO.java

@ -1,15 +1,12 @@
package cn.iocoder.yudao.module.farm.controller.admin.task.dto; 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.area.AreaDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO; import cn.iocoder.yudao.module.farm.dal.dataobject.task.TaskDO;
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
@ -48,7 +45,7 @@ public class TaskDetailDTO extends TaskDO {
String apiTaskMsg; String apiTaskMsg;
//任务下活动累计数量 //任务下活动累计数量
Integer cumulativeQuantity; Double cumulativeQuantity;
} }

13
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/discuss/DiscussDO.java

@ -1,15 +1,16 @@
package cn.iocoder.yudao.module.farm.dal.dataobject.discuss; package cn.iocoder.yudao.module.farm.dal.dataobject.discuss;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.mybatis.core.handler.ListIntToListLongTypeHandler; import cn.iocoder.yudao.framework.mybatis.core.handler.ListIntToListLongTypeHandler;
import cn.iocoder.yudao.module.farm.controller.admin.workHour.vo.WorkHourBaseVO; import cn.iocoder.yudao.module.farm.controller.admin.workHour.vo.WorkHourBaseVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.workHour.WorkHourDO; import com.baomidou.mybatisplus.annotation.TableField;
import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.*; import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*; import java.util.List;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/** /**
* 农场任务讨论 DO * 农场任务讨论 DO
@ -55,7 +56,7 @@ public class DiscussDO extends BaseDO {
@TableField(typeHandler = ListIntToListLongTypeHandler.class) @TableField(typeHandler = ListIntToListLongTypeHandler.class)
private List<Long> areas; private List<Long> areas;
private Integer cropNum; private Double cropNum;
@ApiModelProperty("假装删除") @ApiModelProperty("假装删除")
private Boolean pretendDelete; private Boolean pretendDelete;

37
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/project/ProjectServiceImpl.java

@ -73,6 +73,8 @@ public class ProjectServiceImpl implements ProjectService {
public void updateProject(ProjectUpdateReqVO updateReqVO) { public void updateProject(ProjectUpdateReqVO updateReqVO) {
// 校验存在 // 校验存在
this.validateProjectExists(updateReqVO.getId()); this.validateProjectExists(updateReqVO.getId());
//检查项目状态
this.checkProjectStatus(updateReqVO);
//检查项目新增、修改时的区域 是否能够使用 //检查项目新增、修改时的区域 是否能够使用
this.checkProjectAreas(BeanUtil.copyProperties(updateReqVO, ProjectDO.class)); this.checkProjectAreas(BeanUtil.copyProperties(updateReqVO, ProjectDO.class));
//项目修改完成时,,项目下所有任务未完成不能更改项目状态为完成 //项目修改完成时,,项目下所有任务未完成不能更改项目状态为完成
@ -234,7 +236,7 @@ public class ProjectServiceImpl implements ProjectService {
* 检查项目新增修改时的区域 是否能够使用 * 检查项目新增修改时的区域 是否能够使用
*/ */
public void checkProjectAreas(ProjectDO projectDO){ public void checkProjectAreas(ProjectDO projectDO){
if (!projectDO.getDraft() && projectDO.getState().equals(ProjectStateEnum.STARTING)){ if (projectDO.getState().equals(ProjectStateEnum.STARTING)){
List<Long> areaIdList = projectDO.getAreas().toJavaList(Long.class); List<Long> areaIdList = projectDO.getAreas().toJavaList(Long.class);
for (Long aLong : areaIdList) { for (Long aLong : areaIdList) {
LambdaQueryWrapperX<ProjectDO> queryWrapperX = new LambdaQueryWrapperX<>(); LambdaQueryWrapperX<ProjectDO> queryWrapperX = new LambdaQueryWrapperX<>();
@ -251,4 +253,37 @@ public class ProjectServiceImpl implements ProjectService {
} }
} }
public void checkProjectStatus(ProjectUpdateReqVO updateProject){
ProjectDO project = projectMapper.selectById(updateProject.getId());
if (updateProject.getState().equals(project.getState())){
if (project.getState().equals(ProjectStateEnum.STARTING)){
if (project.getCropId() != updateProject.getCropId()){
//项目更改失败, 进行中的任务不可修改作物
throw exception(PROJECT_STARTING_CANT_CHANGE_CROP);
}
if (!project.getAreas().equals(updateProject.getAreas())){
//项目更改失败, 进行中的任务不可修改区域
throw exception(PROJECT_STARTING_CANT_CHANGE_AREA);
}
}
}else{
//项目更改失败, 计划中的任务只能更改成进行中
if (project.getState().equals(ProjectStateEnum.PLAN)){
if (!updateProject.getState().equals(ProjectStateEnum.STARTING)){
throw exception(PROJECT_PLAN_TO_STARTING);
}
}
//项目更改失败, 进行中的任务只能更改成已完成
if (project.getState().equals(ProjectStateEnum.STARTING)){
if (!updateProject.getState().equals(ProjectStateEnum.FINISH)){
throw exception(PROJECT_STARTING_TO_FINISH);
}
}
//项目更改失败, 已完成项目不可更改
if (project.getState().equals(ProjectStateEnum.FINISH)){
throw exception(PROJECT_FINISH);
}
}
}
} }

87
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/service/task/TaskServiceImpl.java

@ -6,17 +6,23 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.page.PageUtil; import cn.iocoder.yudao.framework.common.page.PageUtil;
import cn.iocoder.yudao.framework.common.page.PageVO; import cn.iocoder.yudao.framework.common.page.PageVO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.farm.controller.admin.resource.dto.ResourceDTO; 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.resource.dto.ResourceMsgDTO;
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.*; import cn.iocoder.yudao.module.farm.controller.admin.task.dto.*;
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.TaskCreateReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.TaskExportReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.TaskPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.task.vo.TaskUpdateReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.area.AreaDO; 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.crop.CropDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.discuss.DiscussDO; import cn.iocoder.yudao.module.farm.dal.dataobject.discuss.DiscussDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO; 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.resource.ResourceDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.resourceType.ResourceTypeDO; import cn.iocoder.yudao.module.farm.dal.dataobject.resourceType.ResourceTypeDO;
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.dataobject.taskCate.TaskCateDO;
import cn.iocoder.yudao.module.farm.dal.mysql.area.AreaMapper; 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.crop.CropMapper;
@ -24,6 +30,7 @@ import cn.iocoder.yudao.module.farm.dal.mysql.discuss.DiscussMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.project.ProjectMapper; 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.resource.ResourceMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.resourceType.ResourceTypeMapper; import cn.iocoder.yudao.module.farm.dal.mysql.resourceType.ResourceTypeMapper;
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.dal.mysql.taskCate.TaskCateMapper;
import cn.iocoder.yudao.module.farm.enums.ProjectStateEnum; import cn.iocoder.yudao.module.farm.enums.ProjectStateEnum;
import cn.iocoder.yudao.module.farm.enums.TaskMemberEnum; import cn.iocoder.yudao.module.farm.enums.TaskMemberEnum;
@ -38,19 +45,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zsw.base.R; import com.zsw.base.R;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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;
import cn.iocoder.yudao.module.farm.dal.mysql.task.TaskMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*;
@ -91,7 +91,7 @@ public class TaskServiceImpl implements TaskService {
@Override @Override
public Long createTask(TaskCreateReqVO createReqVO) { public Long createTask(TaskCreateReqVO createReqVO) {
TaskDO task = BeanUtil.copyProperties(createReqVO, TaskDO.class); TaskDO task = BeanUtil.copyProperties(createReqVO, TaskDO.class);
//检查项目能否开始 //检查任务能否新增
this.canTheTaskStart(task); this.canTheTaskStart(task);
//检查任务资源数量 //检查任务资源数量
this.checkTaskResourceNumber(task); this.checkTaskResourceNumber(task);
@ -105,6 +105,8 @@ public class TaskServiceImpl implements TaskService {
@Override @Override
public void updateTask(TaskUpdateReqVO updateReqVO) { public void updateTask(TaskUpdateReqVO updateReqVO) {
TaskDO task = BeanUtil.copyProperties(updateReqVO, TaskDO.class); TaskDO task = BeanUtil.copyProperties(updateReqVO, TaskDO.class);
//项目能否更改状态
this.checkTaskStatus(updateReqVO);
//检查项目能否开始 //检查项目能否开始
this.canTheTaskStart(task); this.canTheTaskStart(task);
// 校验存在 // 校验存在
@ -224,7 +226,7 @@ public class TaskServiceImpl implements TaskService {
} }
//任务活动的累计数量 //任务活动的累计数量
List<DiscussDO> discussDOList = discussMapper.selectList(DiscussDO::getTaskId, id); List<DiscussDO> discussDOList = discussMapper.selectList(DiscussDO::getTaskId, id);
taskMsg.setCumulativeQuantity(ObjectUtil.isEmpty(discussDOList) ? 0 : discussDOList.stream().mapToInt(DiscussDO::getCropNum).sum()); taskMsg.setCumulativeQuantity(ObjectUtil.isEmpty(discussDOList) ? 0 : discussDOList.stream().mapToDouble(DiscussDO::getCropNum).sum());
//已选择的二级区域 //已选择的二级区域
if (ObjectUtil.isNotEmpty(taskDO.getAreas())){ if (ObjectUtil.isNotEmpty(taskDO.getAreas())){
List<AreaDO> secondAreaList = areaMapper.selectList(AreaDO::getId, taskDO.getAreas()); List<AreaDO> secondAreaList = areaMapper.selectList(AreaDO::getId, taskDO.getAreas());
@ -476,25 +478,24 @@ public class TaskServiceImpl implements TaskService {
* 新增或修改检查任务所需资源数量 * 新增或修改检查任务所需资源数量
*/ */
public void checkTaskResourceNumber(TaskDO taskDO){ public void checkTaskResourceNumber(TaskDO taskDO){
if (!taskDO.getDraft()){ List<ResourceDTO> resourceList = taskDO.getResources().toJavaList(ResourceDTO.class);
List<ResourceDTO> resourceList = taskDO.getResources().toJavaList(ResourceDTO.class); //任务状态更改成进行中 或 任务状态更改成完成
//任务状态更改成进行中 或 任务状态更改成完成 if (taskDO.getStatus().equals(TaskStatus.STARTED) || taskDO.getStatus().equals(TaskStatus.COMPLETE)){
if (taskDO.getStatus().equals(TaskStatus.STARTED) || taskDO.getStatus().equals(TaskStatus.COMPLETE)){ for (ResourceDTO resourceDTO : resourceList) {
resourceList.forEach(item ->{ ResourceDO resourceDO = resourceMapper.selectById(resourceDTO.getResourceId().get(1));
ResourceDO resourceDO = resourceMapper.selectById(item.getResourceId().get(1)); //更改成进行中
//更改成进行中 if (taskDO.getStatus().equals(TaskStatus.STARTED)){
if (taskDO.getStatus().equals(TaskStatus.STARTED)){ resourceDO.setNumber(resourceDO.getNumber() - resourceDTO.getNum());
resourceDO.setNumber(resourceDO.getNumber() - item.getNum()); }
} //更改成已完成
//更改成已完成 if (taskDO.getStatus().equals(TaskStatus.COMPLETE)){
if (taskDO.getStatus().equals(TaskStatus.COMPLETE)){ if (resourceDO.getSolo()){
if (resourceDO.getSolo()){ resourceDO.setNumber(resourceDO.getNumber() + resourceDTO.getNum());
resourceDO.setNumber(resourceDO.getNumber() + item.getNum());
}
} }
resourceMapper.updateById(resourceDO); }
}); resourceMapper.updateById(resourceDO);
} }
} }
} }
@ -503,10 +504,34 @@ public class TaskServiceImpl implements TaskService {
* 任务能否开始只有所属项目开始了才可以开始 * 任务能否开始只有所属项目开始了才可以开始
*/ */
public void canTheTaskStart(TaskDO taskDO){ public void canTheTaskStart(TaskDO taskDO){
if (!taskDO.getDraft() && taskDO.getStatus().equals(TaskStatus.STARTED)){ ProjectDO project = projectMapper.selectById(taskDO.getProjectId());
ProjectDO project = projectMapper.selectById(taskDO.getProjectId()); if (!project.getState().equals(ProjectStateEnum.STARTING)){
if (!project.getState().equals(ProjectStateEnum.STARTING)){ throw exception(PROJECT_NOT_STARTING);
throw exception(PROJECT_NOT_STARTING); }
}
public void checkTaskStatus(TaskUpdateReqVO updateVO){
TaskDO task = taskMapper.selectById(updateVO.getId());
if (updateVO.getStatus().equals(task.getStatus())) {
}else{
//任务更改失败, 计划中或准备中的任务只能更改为开始
if (task.getStatus().equals(TaskStatus.PLAN) || task.getStatus().equals(TaskStatus.READY)){
if (!updateVO.getStatus().equals(TaskStatus.STARTED)){
throw exception(TASK_STATE_CHANGE_FAIL);
}
}
//任务更改失败, 已开始的任务不能更改为计划中或准备中
if (task.getStatus().equals(TaskStatus.STARTED)){
if (updateVO.getStatus().equals(TaskStatus.PLAN) || updateVO.getStatus().equals(TaskStatus.READY)){
throw exception(TASK_WAS_STARTED);
}
}
//任务更改失败, 已完成的任务只能更改为任务关闭
if (task.getStatus().equals(TaskStatus.COMPLETE)){
if (!updateVO.getStatus().equals(TaskStatus.END)){
throw exception(TASK_WAS_END);
}
} }
} }
} }

Loading…
Cancel
Save