|
|
|
@ -1,12 +1,7 @@
|
|
|
|
|
package cn.iocoder.yudao.module.farm.service.project; |
|
|
|
|
|
|
|
|
|
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; |
|
|
|
@ -14,29 +9,16 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
|
|
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.task.dto.TaskAssemblyDTO; |
|
|
|
|
import cn.iocoder.yudao.module.farm.controller.admin.task.dto.TaskMsgDTO; |
|
|
|
|
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.ProjectStateEnum; |
|
|
|
|
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.dataobject.user.AdminUserDO; |
|
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.CpUser.CpUserMapper; |
|
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; |
|
|
|
|
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.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; |
|
|
|
@ -80,6 +62,8 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Long createProject(ProjectCreateReqVO createReqVO) { |
|
|
|
|
//检查项目新增、修改时的区域 是否能够使用
|
|
|
|
|
this.checkProjectAreas(BeanUtil.copyProperties(createReqVO, ProjectDO.class)); |
|
|
|
|
// 插入
|
|
|
|
|
ProjectDO project = ProjectConvert.INSTANCE.convert(createReqVO); |
|
|
|
|
project.setDeptId(Objects.requireNonNull(SecurityFrameworkUtils.getLoginUser()).getDeptId()); |
|
|
|
@ -90,8 +74,15 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void updateProject(ProjectUpdateReqVO updateReqVO) { |
|
|
|
|
//检查项目新增、修改时的区域 是否能够使用
|
|
|
|
|
this.checkProjectAreas(BeanUtil.copyProperties(updateReqVO, ProjectDO.class)); |
|
|
|
|
// 校验存在
|
|
|
|
|
this.validateProjectExists(updateReqVO.getId()); |
|
|
|
|
//项目修改完成时,,项目下所有任务未完成不能更改项目状态为完成
|
|
|
|
|
if (updateReqVO.getState().equals(ProjectStateEnum.FINISH)){ |
|
|
|
|
this.checkProjectTaskFinish(updateReqVO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 更新
|
|
|
|
|
ProjectDO updateObj = ProjectConvert.INSTANCE.convert(updateReqVO); |
|
|
|
|
projectMapper.updateById(updateObj); |
|
|
|
@ -224,4 +215,39 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
|
|
return R.success(returnList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 检查项目下所有任务是否完成 |
|
|
|
|
*/ |
|
|
|
|
public void checkProjectTaskFinish(ProjectUpdateReqVO updateReqVO){ |
|
|
|
|
List<TaskDO> taskList = taskMapper.selectList(Wrappers.<TaskDO>lambdaQuery() |
|
|
|
|
.eq(TaskDO::getProjectId, updateReqVO.getId()) |
|
|
|
|
.eq(TaskDO::getPretendDelete, false) |
|
|
|
|
.eq(TaskDO::getDraft, false) |
|
|
|
|
.ne(TaskDO::getStatus, TaskStatus.COMPLETE) |
|
|
|
|
); |
|
|
|
|
if (ObjectUtil.isNotEmpty(taskList)){ |
|
|
|
|
throw exception(PROJECT_TASK_NOT_COMPLETE); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 检查项目新增、修改时的区域 是否能够使用 |
|
|
|
|
*/ |
|
|
|
|
public void checkProjectAreas(ProjectDO projectDO){ |
|
|
|
|
if (!projectDO.getDraft() && projectDO.getState().equals(ProjectStateEnum.STARTING)){ |
|
|
|
|
List<Long> areaIdList = projectDO.getAreas().toJavaList(Long.class); |
|
|
|
|
for (Long aLong : areaIdList) { |
|
|
|
|
LambdaQueryWrapperX<ProjectDO> queryWrapperX = new LambdaQueryWrapperX<>(); |
|
|
|
|
queryWrapperX.eq(ProjectDO::getState, ProjectStateEnum.STARTING) |
|
|
|
|
.neIfPresent(ProjectDO::getId, projectDO.getId()) |
|
|
|
|
.apply("JSON_CONTAINS(areas, '"+ aLong +"')"); |
|
|
|
|
Long count = projectMapper.selectCount(queryWrapperX); |
|
|
|
|
if (count > 0){ |
|
|
|
|
throw exception(PROJECT_AREA_HAS_OCCUPIED); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|