Преглед на файлове

修复-新增项目部时分参数缺少添加判断

fuyuchuan преди 5 месеца
родител
ревизия
12050e1fbd
променени са 1 файла, в които са добавени 74 реда и са изтрити 65 реда
  1. 74 65
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

+ 74 - 65
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

@@ -22,6 +22,7 @@ import com.usky.iot.service.PmWorkContentService;
 import com.usky.iot.service.vo.PmProjectWorkTimeTwoVo;
 import com.usky.iot.service.vo.PmUsersProjectWorkTimeVO;
 import com.usky.system.domain.SysUser;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -42,6 +43,7 @@ import java.util.stream.IntStream;
  * @author fu
  * @since 2024-05-20
  */
+@Slf4j
 @Service
 public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, PmProject> implements PmProjectService {
 
@@ -69,55 +71,87 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         Integer tenantId = SecurityUtils.getTenantId();
         LocalDateTime now = LocalDateTime.now();
 
-        if (project.getVisibleRange() == null) {
-            project.setVisibleRange((byte) 1);
+        // 检查项目名称是否为空或超过长度限制
+        String projectName = project.getProjectName();
+        if (StringUtils.isBlank(projectName)) {
+            throw new BusinessException("项目名称不能为空!");
+        }else if (projectName.length() > 50) {
+            throw new BusinessException("项目名称长度不能超过50个字符!");
         }
 
+        // 检查项目名称是否已存在
         if (Objects.isNull(project.getId())) {
-            String projectName = project.getProjectName();
-            LambdaQueryWrapper<PmProject> wrapper = Wrappers.lambdaQuery();
-            wrapper.eq(PmProject::getProjectName, projectName)
-                    .eq(PmProject::getTenantId, tenantId)
-                    .eq(PmProject::getDelFlag, 0);
-            PmProject pmProject = pmProjectMapper.selectOne(wrapper);
-            if (Objects.nonNull(pmProject)) {
-                throw new BusinessException("已存在同名项目!请检查后重试");
-            }
+            checkProjectNameExistence(project, tenantId);
+        }
+
+        // 检查项目类型是否为空或不在有效范围内
+        Integer projectType = project.getProjectType();
+        if (projectType == null) {
+            throw new BusinessException("项目类型不能为空且");
+        }else if (projectType < 1 || projectType > 6) {
+            throw new BusinessException("项目类型传参有误!");
+        }
+
+        // 检查项目状态是否为空或不在有效范围内
+        Integer projectStatus = project.getProjectStatus();
+        if (projectStatus == null) {
+            throw new BusinessException("项目状态不能为空且!");
+        }else if (projectStatus < 1 || projectStatus > 5) {
+            throw new BusinessException("项目状态传参有误!");
         }
 
+        // 设置项目工作量和校验
+        handleProjectWorkload(project);
+
+        // 保存或更新项目
+        saveOrUpdateProject(project, userName, now, deptId, tenantId);
+    }
+
+    // 检查项目名称是否已存在
+    private void checkProjectNameExistence(PmProject project, Integer tenantId) {
+        LambdaQueryWrapper<PmProject> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(PmProject::getProjectName, project.getProjectName())
+                .eq(PmProject::getTenantId, tenantId)
+                .eq(PmProject::getDelFlag, 0);
+        PmProject existingProject = pmProjectMapper.selectOne(wrapper);
+        if (Objects.nonNull(existingProject)) {
+            throw new BusinessException("已存在同名项目!请检查后重试");
+        }
+    }
+
+    // 处理项目工作量
+    private void handleProjectWorkload(PmProject project) {
         if (Objects.isNull(project.getProjectWorkload())) {
-            if (Objects.isNull(project.getId())) {
-                project.setCreateBy(userName);
-                project.setCreateTime(now);
-                project.setTenantId(tenantId);
-                project.setDeptId(deptId);
-                this.save(project);
-            } else {
-                project.setUpdateBy(userName);
-                project.setUpdateTime(now);
-                this.updateById(project);
-            }
+            return;
+        }
+
+        if (project.getProjectWorkload().scale() > 1) {
+            throw new BusinessException("计划人/天小数位超出长度,请重新输入!");
+        } else if (project.getProjectWorkload().precision() - project.getProjectWorkload().scale() > 5) {
+            throw new BusinessException("计划人/天整数位超出长度,请重新输入!");
+        }
+    }
+
+    // 保存或更新项目
+    private void saveOrUpdateProject(PmProject project, String userName, LocalDateTime now, Long deptId, Integer tenantId) {
+        if (Objects.isNull(project.getId())) {
+            project.setCreateBy(userName);
+            project.setCreateTime(now);
+            project.setDeptId(deptId);
+            project.setTenantId(tenantId);
+            this.save(project);
         } else {
-            if (project.getProjectWorkload().scale() > 1) {
-                throw new BusinessException("计划人/天小数位超出长度,请重新输入!");
-            } else if (project.getProjectWorkload().precision() - project.getProjectWorkload().scale() > 5) {
-                throw new BusinessException("计划人/天整数位超出长度,请重新输入!");
-            } else {
-                if (Objects.isNull(project.getId())) {
-                    project.setCreateBy(userName);
-                    project.setCreateTime(now);
-                    project.setDeptId(deptId);
-                    project.setTenantId(tenantId);
-                    this.save(project);
-                } else {
-                    project.setUpdateBy(userName);
-                    project.setUpdateTime(now);
-                    this.updateById(project);
-                }
-            }
+            project.setUpdateBy(userName);
+            project.setUpdateTime(now);
+            this.updateById(project);
         }
     }
 
+    /**
+     * 删除项目
+     *
+     * @param projectId 项目id
+     */
     @Override
     public void delProject(Integer projectId) {
         LambdaQueryWrapper<PmWorkContent> queryWrapper = Wrappers.lambdaQuery();
@@ -285,8 +319,6 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         if (pmProjects.isEmpty()) {
             return new CommonPage<>(pmProjects, 0, pageSize, pageNum);
         }
-        // Set<PmProject> uniqueProjects = new HashSet<>(pmProjects);
-        // pmProjects = new ArrayList<>(uniqueProjects);
 
         // 替换创建人和更新人名字(username→nickname)
         LambdaQueryWrapper<SysUser> query = Wrappers.lambdaQuery();
@@ -401,29 +433,6 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
                     .eq(SysUser::getDelFlag, 0)
                     .eq(SysUser::getStatus, "0")
                     .apply(Objects.nonNull(DataScopeContextHolder.getDataScopeSql()), DataScopeContextHolder.getDataScopeSql());
-
-/*            LambdaQueryWrapper<PmProject> wrapper = Wrappers.lambdaQuery();
-            wrapper.select(PmProject::getProjectHead, PmProject::getProjectMember)
-                    .eq(PmProject::getTenantId, SecurityUtils.getTenantId())
-                    .eq(PmProject::getDelFlag, 0);
-            List<PmProject> users = pmProjectMapper.selectList(wrapper);
-
-            List<Long> userIds = new ArrayList<>();
-            for (PmProject user : users) {
-                Long projectHead = user.getProjectHead();
-                userIds.add(projectHead);
-                if (user.getProjectMember() != null && StringUtils.isNotBlank(user.getProjectMember())) {
-                    Set<Long> projectMembers = Arrays.stream(user.getProjectMember().split(","))
-                            .map(Long::parseLong)
-                            .collect(Collectors.toSet());
-                    userIds.addAll(projectMembers);
-                }
-            }
-            List<Long> finalList = userIds.stream().distinct().collect(Collectors.toList());
-            LambdaQueryWrapper<SysUser> wrapper2 = Wrappers.lambdaQuery();
-            wrapper2.select(SysUser::getUserId, SysUser::getNickName)
-                    .in(SysUser::getUserId, finalList);
-            userList = sysUserMapper.selectList(wrapper2);*/
         }
         userList = sysUserMapper.selectList(queryNameId);
         for (SysUser user : userList) {
@@ -642,7 +651,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
 
         List<Long> userIds1 = new ArrayList<>(userIds);
 
-        if (userIds1.isEmpty()){
+        if (userIds1.isEmpty()) {
             return workTimeCount;
         }