Browse Source

Merge branch 'fu-normal-push' of uskycloud/usky-modules into master

gez 3 months ago
parent
commit
049da91eb7

+ 3 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/RuoYiSystemApplication.java

@@ -19,6 +19,7 @@ import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.core.env.Environment;
+import org.springframework.scheduling.annotation.EnableAsync;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -34,6 +35,8 @@ import java.net.UnknownHostException;
 @MapperScan(value = "com.usky.iot.mapper")
 @ComponentScan("com.usky")
 @SpringBootApplication
+//开启异步
+@EnableAsync
 //@EnableRabbit
 public class RuoYiSystemApplication
 {

+ 8 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmProjectController.java

@@ -3,6 +3,8 @@ package com.usky.iot.controller.web;
 
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.PmProject;
 import com.usky.iot.service.PmProjectService;
@@ -80,6 +82,7 @@ public class PmProjectController {
      *
      * @param pmProject
      */
+    @Log(title = "新增/编辑项目", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     public void add(@RequestBody PmProject pmProject) {
         pmProjectService.addProject(pmProject);
@@ -90,12 +93,14 @@ public class PmProjectController {
      *
      * @param projectId 项目id
      */
+    @Log(title = "删除项目", businessType = BusinessType.DELETE)
     @DeleteMapping("/{projectId}")
     public void del(@RequestParam Integer projectId) {
         pmProjectService.delProject(projectId);
     }
 
     //回退代码
+    @Log(title = "删除项目", businessType = BusinessType.DELETE)
     @GetMapping("/del")
     public void del2(@RequestParam Integer projectId) {
         pmProjectService.delProject(projectId);
@@ -117,6 +122,7 @@ public class PmProjectController {
      *
      * @param projectId 项目id
      */
+    @Log(title = "退出项目", businessType = BusinessType.UPDATE)
     @GetMapping("/exitProject")
     public void exitProject(@RequestParam Integer projectId) {
         pmProjectService.exitProject(projectId);
@@ -150,6 +156,8 @@ public class PmProjectController {
         return ApiResult.success(pmProjectService.usersProjectWorkTime(projectId, startDate, endDate));
     }
 
+    // 加入项目
+    @Log(title = "加入项目", businessType = BusinessType.UPDATE)
     @GetMapping("/joinProject")
     public void projectIdName(@RequestParam(value = "projectId") Integer projectId) {
         pmProjectService.joinProject(projectId);

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmWorkReportController.java

@@ -51,7 +51,7 @@ public class PmWorkReportController {
      *
      * @param
      */
-    @Log(title = "添加工作报告", businessType = BusinessType.INSERT)
+    @Log(title = "新增/编辑工作报告", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     public void add(@RequestBody PmWorkReport pmWorkReport) {
         pmWorkReportService.addReport(pmWorkReport);

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

+ 1 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkReportServiceImpl.java

@@ -23,6 +23,7 @@ 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.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;