Browse Source

1.修改项目信息接口新增校验,存在测算表或报告后不可变更项目类型

GouGengquan 5 tháng trước cách đây
mục cha
commit
794312f452

+ 6 - 1
biz-base/src/main/java/com/dayou/controller/AssetsProjectController.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckLogin;
 import cn.dev33.satoken.stp.StpUtil;
 import com.dayou.dto.AssetsProjectQueryDTO;
 import com.dayou.result.Result;
+import com.dayou.result.Status;
 import com.dayou.vo.AssetsProjectVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,7 +62,11 @@ public class AssetsProjectController {
     @PutMapping("/update")
     public Result<Boolean> update(@RequestBody AssetsProject assetsProject) {
         Boolean ret = assetsProjectService.update(assetsProject);
-        return Result.build(ret);
+        if (ret) {
+            return Result.build(true);
+        }else {
+            return Result.build(Status.PARAM_ERROR, "当前项目下已存在测算表或报告,无法变更项目类型!", false);
+        }
     }
 
     /**

+ 27 - 1
service/src/main/java/com/dayou/service/impl/AssetsProjectServiceImpl.java

@@ -1,11 +1,17 @@
 package com.dayou.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.dayou.common.BaseEntity;
 import com.dayou.dto.AssetsProjectQueryDTO;
+import com.dayou.entity.AssetsCalculate;
 import com.dayou.entity.AssetsProject;
+import com.dayou.entity.AssetsReport;
 import com.dayou.mapper.AssetsProjectMapper;
+import com.dayou.service.AssetsCalculateService;
 import com.dayou.service.AssetsProjectService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.service.AssetsReportService;
 import com.dayou.vo.AssetsProjectVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,6 +24,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Objects;
+
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -34,6 +42,12 @@ public class AssetsProjectServiceImpl extends ServiceImpl<AssetsProjectMapper, A
     @Autowired
     private AssetsProjectMapper assetsProjectMapper;
 
+    @Autowired
+    private AssetsCalculateService assetsCalculateService;
+
+    @Autowired
+    private AssetsReportService assetsReportService;
+
     /**
      * 获取资产项目列表
      * @param page 分页
@@ -60,7 +74,19 @@ public class AssetsProjectServiceImpl extends ServiceImpl<AssetsProjectMapper, A
 
     @Override
     public Boolean update(AssetsProject assetsProject){
-        return  this.updateById(assetsProject);
+        AssetsProject oldInfo = this.getById(assetsProject.getId());
+        // 判断是否有更改项目类型
+        if (!Objects.equals(oldInfo.getProjectTypeId(), assetsProject.getProjectTypeId())) { // 更改了项目类型
+            // 如果更改了项目类型,且项目下已经创建了测算表或报告就不允许更改项目类型
+            int calculateCount = assetsCalculateService.count(new LambdaQueryWrapper<AssetsCalculate>().eq(AssetsCalculate::getProjectId, assetsProject.getId()).eq(BaseEntity::getDeleteStatus, 0));
+            int reportCount = assetsReportService.count(new LambdaQueryWrapper<AssetsReport>().eq(AssetsReport::getProjectId, assetsProject.getId()).eq(BaseEntity::getDeleteStatus, 0));
+            if ((ObjectUtil.isNotNull(calculateCount) && calculateCount > 0) || (ObjectUtil.isNotNull(reportCount) && reportCount > 0)) { // 创建了测算表或报告
+                return false;
+            }
+            return this.updateById(assetsProject);
+        } else {
+            return this.updateById(assetsProject);
+        }
     }
 
     @Override