ソースを参照

update->删除项目时,判断项目下的电梯是否还有未完成的维保任务,有任务就提示需要完成任务才能删除项目

wanghaicheng 4 年 前
コミット
e96313660f

+ 11 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectService.java

@@ -15,6 +15,7 @@ import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectUserResp
 import cn.com.ty.lift.business.project.dao.mapper.ProjectMapper;
 import cn.com.ty.lift.business.push.service.PushUserService;
 import cn.com.ty.lift.common.base.ExportRequest;
+import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.constants.CommonEnum.ProjectStatus;
 import cn.com.ty.lift.common.constants.WebSocketConstants;
 import cn.com.ty.lift.common.model.PushMessage;
@@ -32,6 +33,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
@@ -432,6 +434,15 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
      */
     @Transactional(rollbackFor = Exception.class)
     public RestResponse remove(Long id, Long mtCompanyId) {
+        int count = maintenancePlanService.count(Wrappers.<MaintenancePlan>lambdaQuery().
+                eq(MaintenancePlan::getMtCompanyId, mtCompanyId).
+                eq(MaintenancePlan::getProjectId, id).
+                ne(MaintenancePlan::getStatus, CommonEnum.MaintenancePlanStatus.WAITING_MAINTENANCE.getCode()).
+                ne(MaintenancePlan::getStatus, CommonEnum.MaintenancePlanStatus.COMPLETE.getCode()));
+        if (count > 0) {
+            log.info("维保任务未完成,已完成及待保养之外的维保计划状态(当前是保养中/超期)都属于未完成");
+            return RestResponse.fail("请先完成超期或维保中的维保任务,再删除此项目");
+        }
         //删除项目
         boolean projectResult = removeById(id);
         if (!projectResult) return RestResponse.fail(MessageUtils.get("msg.delete.fail"));