ソースを参照

补充任务延期状态

buzhanyi 1 年間 前
コミット
8f9d2550bd

+ 1 - 1
application-webadmin/src/main/java/com/ankaibei/workFlow/webadmin/ankaibei/entity/TaskInfoEntity.java

@@ -36,7 +36,7 @@ public class TaskInfoEntity {
      */
      */
     private Date endTime;
     private Date endTime;
     /**
     /**
-     * 任务状态
+     * 任务状态(已延期:超时未完成就是延期)
      */
      */
     private String taskStatus;
     private String taskStatus;
     /**
     /**

+ 51 - 0
application-webadmin/src/main/java/com/ankaibei/workFlow/webadmin/ankaibei/enums/TaskStatus.java

@@ -0,0 +1,51 @@
+package com.ankaibei.workFlow.webadmin.ankaibei.enums;
+
+public enum TaskStatus {
+    //1 已分配 2 未分配 3 已延期
+    ALLOCATION_ED("1", "已分配"),
+    NO_ALLOCATION("2", "未分配"),
+    EXTENSION_ED("3", "已延期"),
+    FINISH_ED("4", "已完成"),
+    ;
+
+    /**
+     * 状态码
+     */
+    private final String code;
+    /**
+     * 信息
+     */
+    private final String reason;
+
+    /**
+     * 666666
+     */
+    TaskStatus(String code, String reason) {
+        this.code = code;
+        this.reason = reason;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    /**
+     * 通过枚举的code,查询对应的枚举项
+     *
+     * @param code
+     * @return
+     */
+    public static TaskStatus getEnumByCode(String code) {
+        TaskStatus[] values = TaskStatus.values();
+        for (TaskStatus statusEnums : values) {
+            if (statusEnums.getCode().equals(code)) {
+                return statusEnums;
+            }
+        }
+        return null;
+    }
+}

+ 35 - 5
application-webadmin/src/main/java/com/ankaibei/workFlow/webadmin/ankaibei/mapper/TaskInfoMapper.java

@@ -19,7 +19,14 @@ import java.util.Map;
  */
  */
 public interface TaskInfoMapper extends JpaRepository<TaskInfoEntity, Integer>, JpaSpecificationExecutor<TaskInfoEntity> {
 public interface TaskInfoMapper extends JpaRepository<TaskInfoEntity, Integer>, JpaSpecificationExecutor<TaskInfoEntity> {
 
 
-
+    /**
+     * 分页查询
+     *
+     * @param targetTask
+     * @param taskStatus
+     * @param page
+     * @return
+     */
     @Query(value = "SELECT t.task_id taskId,t.target_task targetTask,t.task_priority taskPriority,t.task_participant taskParticipant," +
     @Query(value = "SELECT t.task_id taskId,t.target_task targetTask,t.task_priority taskPriority,t.task_participant taskParticipant," +
             "t.start_time startTime,t.end_time endTime,t.task_status taskStatus,t.task_creator taskCreator,t.task_index taskIndex," +
             "t.start_time startTime,t.end_time endTime,t.task_status taskStatus,t.task_creator taskCreator,t.task_index taskIndex," +
             "t.task_standard taskStandard,t.task_statements taskStatements,t.project_id projectId,t.process_instance_id processInstanceId," +
             "t.task_standard taskStandard,t.task_statements taskStatements,t.project_id projectId,t.process_instance_id processInstanceId," +
@@ -30,24 +37,47 @@ public interface TaskInfoMapper extends JpaRepository<TaskInfoEntity, Integer>,
 
 
     /**
     /**
      * 查询任务名称数量
      * 查询任务名称数量
-     *
-     * @param
-     * @param targetTask
-     * @return ResMsg
      */
      */
     @Query
     @Query
     int countByTargetTaskEqualsAndIsDeleteEquals(String targetTask, String isDelete);
     int countByTargetTaskEqualsAndIsDeleteEquals(String targetTask, String isDelete);
 
 
+    /**
+     * 完成任务
+     *
+     * @param taskId
+     * @return
+     */
     @Transactional
     @Transactional
     @Modifying
     @Modifying
     @Query(value = "UPDATE task_info t SET t.task_status = 4 WHERE t.task_id = ?1 ", nativeQuery = true)
     @Query(value = "UPDATE task_info t SET t.task_status = 4 WHERE t.task_id = ?1 ", nativeQuery = true)
     int performTask(Integer taskId);
     int performTask(Integer taskId);
 
 
+    /**
+     * 任务延期
+     *
+     * @param taskId
+     */
+    @Transactional
+    @Modifying
+    @Query(value = "UPDATE task_info t SET t.task_status = 3 WHERE t.task_id = ?1 ", nativeQuery = true)
+    void extensionTask(Integer taskId);
+
+    /**
+     * 修改任务的审核状态
+     *
+     * @param flowTaskStatus
+     * @param taskId
+     */
     @Transactional
     @Transactional
     @Modifying
     @Modifying
     @Query(value = "update task_info SET flow_task_status = ?1 WHERE task_id = ?2", nativeQuery = true)
     @Query(value = "update task_info SET flow_task_status = ?1 WHERE task_id = ?2", nativeQuery = true)
     void updateTaskFlowStatus(String flowTaskStatus, Integer taskId);
     void updateTaskFlowStatus(String flowTaskStatus, Integer taskId);
 
 
+    /**
+     * 删除任务
+     *
+     * @param taskId
+     */
     @Transactional
     @Transactional
     @Modifying
     @Modifying
     @Query(value = "update task_info SET is_delete='-1' WHERE task_id = ?1", nativeQuery = true)
     @Query(value = "update task_info SET is_delete='-1' WHERE task_id = ?1", nativeQuery = true)

+ 30 - 0
application-webadmin/src/main/java/com/ankaibei/workFlow/webadmin/ankaibei/service/TaskInfoService.java

@@ -14,14 +14,44 @@ import java.util.List;
  * @date 2022/9/14 17:18
  * @date 2022/9/14 17:18
  */
  */
 public interface TaskInfoService {
 public interface TaskInfoService {
+    /**
+     * 分页查询
+     * * @param taskInfoEntity
+     *
+     * @return
+     */
     ResMsg findTaskInfo(Integer pageIndex, Integer pageSize, TaskInfoEntity taskInfoEntity);
     ResMsg findTaskInfo(Integer pageIndex, Integer pageSize, TaskInfoEntity taskInfoEntity);
 
 
+    /**
+     * 添加任务
+     * * @param taskInfoEntity
+     *
+     * @return
+     */
     ResMsg addTaskInfo(TaskInfoEntity taskInfoEntity, List<Long> taskParticipant);
     ResMsg addTaskInfo(TaskInfoEntity taskInfoEntity, List<Long> taskParticipant);
 
 
+    /**
+     * 删除任务
+     * * @param taskInfoEntity
+     *
+     * @return
+     */
     ResMsg deleteTask(List<TaskInfoVo> taskInfoVos);
     ResMsg deleteTask(List<TaskInfoVo> taskInfoVos);
 
 
+    /**
+     * 查询指定任务
+     * * @param taskInfoEntity
+     *
+     * @return
+     */
     ResMsg findTaskById(TaskInfoVo taskInfoVo);
     ResMsg findTaskById(TaskInfoVo taskInfoVo);
 
 
+    /**
+     * 任务完成
+     * * @param taskInfoEntity
+     *
+     * @return
+     */
     ResMsg performTask(TaskInfoEntity taskInfoEntity);
     ResMsg performTask(TaskInfoEntity taskInfoEntity);
 
 
 }
 }

+ 22 - 3
application-webadmin/src/main/java/com/ankaibei/workFlow/webadmin/ankaibei/service/impl/TaskInfoServiceImpl.java

@@ -15,6 +15,7 @@ import com.ankaibei.workFlow.webadmin.ankaibei.entity.TaskInfoEntity;
 import com.ankaibei.workFlow.webadmin.ankaibei.entity.UserInfoEntity;
 import com.ankaibei.workFlow.webadmin.ankaibei.entity.UserInfoEntity;
 import com.ankaibei.workFlow.webadmin.ankaibei.enums.CodeEnum;
 import com.ankaibei.workFlow.webadmin.ankaibei.enums.CodeEnum;
 import com.ankaibei.workFlow.webadmin.ankaibei.enums.TaskPriority;
 import com.ankaibei.workFlow.webadmin.ankaibei.enums.TaskPriority;
+import com.ankaibei.workFlow.webadmin.ankaibei.enums.TaskStatus;
 import com.ankaibei.workFlow.webadmin.ankaibei.mapper.ProjectInfoMapper;
 import com.ankaibei.workFlow.webadmin.ankaibei.mapper.ProjectInfoMapper;
 import com.ankaibei.workFlow.webadmin.ankaibei.mapper.TaskInfoMapper;
 import com.ankaibei.workFlow.webadmin.ankaibei.mapper.TaskInfoMapper;
 import com.ankaibei.workFlow.webadmin.ankaibei.mapper.UserInfoMapper;
 import com.ankaibei.workFlow.webadmin.ankaibei.mapper.UserInfoMapper;
@@ -31,6 +32,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
@@ -115,7 +118,18 @@ public class TaskInfoServiceImpl implements TaskInfoService {
                 long daysDiff = duration.toDays();
                 long daysDiff = duration.toDays();
                 long hoursDiff = duration.toHours() % 24;
                 long hoursDiff = duration.toHours() % 24;
                 map1.put("duration_ch", daysDiff + "天" + hoursDiff + "时");
                 map1.put("duration_ch", daysDiff + "天" + hoursDiff + "时");
+                //任务是否已延期:结束时间已过但是未完成的,就是延期
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                try {
+                    if (sdf.parse(map1.get("endTime").toString()).before(new Date()) && !TaskStatus.FINISH_ED.getCode().equals(map1.get("taskStatus").toString())) {
+                        taskInfoEntity.setTaskStatus(TaskStatus.EXTENSION_ED.getCode());
+                        taskInfoMapper.extensionTask(Integer.valueOf(map1.get("taskId").toString()));
+                    }
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
             }
             }
+
             map1.put("taskPriority", TaskPriority.getEnumByCode(map.get("taskPriority")));
             map1.put("taskPriority", TaskPriority.getEnumByCode(map.get("taskPriority")));
             return map1;
             return map1;
         }).getContent(), all.getTotalElements()));
         }).getContent(), all.getTotalElements()));
@@ -127,14 +141,19 @@ public class TaskInfoServiceImpl implements TaskInfoService {
         if (taskInfoMapper.countByTargetTaskEqualsAndIsDeleteEquals(taskInfoEntity.getTargetTask(), "1") > 1) {
         if (taskInfoMapper.countByTargetTaskEqualsAndIsDeleteEquals(taskInfoEntity.getTargetTask(), "1") > 1) {
             return new ResMsg(CodeEnum.TASK_ALREADY_EXISTS);
             return new ResMsg(CodeEnum.TASK_ALREADY_EXISTS);
         }
         }
-        if (taskInfoEntity.getStartTime() == null || taskInfoEntity.getEndTime() == null) {
+        if (ObjectUtils.isEmpty(taskInfoEntity.getStartTime()) || ObjectUtils.isEmpty(taskInfoEntity.getEndTime()) || (ObjectUtils.isEmpty(taskInfoEntity.getStartTime()) && ObjectUtils.isEmpty(taskInfoEntity.getEndTime()))) {
             return new ResMsg(CodeEnum.PARAM_IS_NULL, "请录入任务计划的开始时间和结束时间");
             return new ResMsg(CodeEnum.PARAM_IS_NULL, "请录入任务计划的开始时间和结束时间");
+        } else {
+            //结束时间在此时之前,就已是延期任务
+            if (taskInfoEntity.getEndTime().before(new Date())) {
+                taskInfoEntity.setTaskStatus(TaskStatus.EXTENSION_ED.getCode());
+            }
         }
         }
         if (taskParticipant.size() < 1) {
         if (taskParticipant.size() < 1) {
             //(1 已分配 2未分配 3已延期)
             //(1 已分配 2未分配 3已延期)
-            taskInfoEntity.setTaskStatus("2");
+            taskInfoEntity.setTaskStatus(TaskStatus.NO_ALLOCATION.getCode());
         } else {
         } else {
-            taskInfoEntity.setTaskStatus("1");
+            taskInfoEntity.setTaskStatus(TaskStatus.ALLOCATION_ED.getCode());
         }
         }
         StringBuffer str = new StringBuffer();
         StringBuffer str = new StringBuffer();
         for (Long id : taskParticipant) {
         for (Long id : taskParticipant) {