Jelajahi Sumber

update->编辑项目,修改<<维护项目状态>>的代码,原代码未根据项目原状态判断,是否需要修改项目的状态

wanghaicheng 4 tahun lalu
induk
melakukan
baa233cd2a

+ 15 - 10
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectService.java

@@ -15,7 +15,6 @@ 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;
@@ -329,7 +328,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         //按当前日期时间戳自动生成项目编号
         String projectCode = DateUtils.generateCode();
         project.setProjectCode("XM" + projectCode);
-        this.setProjectStatus(project);
+        this.setProjectStatus(project, null);
         return save(project);
     }
 
@@ -338,22 +337,28 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
      *
      * @param project 项目信息
      */
-    private void setProjectStatus(Project project) {
+    private void setProjectStatus(Project project, String oldProjectStatus) {
         LocalDate now = LocalDate.now();
         LocalDate startDate = project.getStartDate();
         LocalDate endDate = project.getEndDate();
         LocalDate tomorrow = now.plus(1, ChronoUnit.DAYS);
-        //如果项目开始时间在今天之后,项目状态设置成未开始
+        //如果项目在服务中且开始时间在今天之后,项目状态设置成未开始
         if (startDate.isAfter(now)) {
-            project.setProjectStatus(ProjectStatus.NOT_START.getCode());
+            if (Objects.isNull(oldProjectStatus) || oldProjectStatus.equals(ProjectStatus.IN_SERVICE.getCode())) {
+                project.setProjectStatus(ProjectStatus.NOT_START.getCode());
+            }
         }
-        //如果项目开始时间在明天之前,项目状态设置成服务中
+        //如果项目未开始且开始时间在明天之前,项目状态设置成服务中
         if (startDate.isBefore(tomorrow)) {
-            project.setProjectStatus(ProjectStatus.IN_SERVICE.getCode());
+            if (Objects.isNull(oldProjectStatus) || oldProjectStatus.equals(ProjectStatus.NOT_START.getCode())) {
+                project.setProjectStatus(ProjectStatus.IN_SERVICE.getCode());
+            }
         }
-        //如果项目结束时间在今天之前,项目状态设置成逾期
+        //如果项目在服务中且结束时间在今天之前,项目状态设置成逾期
         if (endDate.isBefore(now)) {
-            project.setProjectStatus(ProjectStatus.OVERDUE.getCode());
+            if (Objects.isNull(oldProjectStatus) || oldProjectStatus.equals(ProjectStatus.IN_SERVICE.getCode())) {
+                project.setProjectStatus(ProjectStatus.OVERDUE.getCode());
+            }
         }
     }
 
@@ -453,7 +458,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         Optional<Project> oldProject = getOne(project.getId());
         if (!oldProject.isPresent())
             return RestResponse.fail(MessageUtils.get("msg.project.not.exist"));
-        this.setProjectStatus(project);
+        this.setProjectStatus(project, oldProject.get().getProjectStatus());
         boolean result = updateById(project);
         if (!result)
             return RestResponse.fail(MessageUtils.get("msg.modify.fail"));