|
@@ -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;
|
|
|
}
|
|
|
|