diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java index 4150df0..e6acb12 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java @@ -21,6 +21,7 @@ import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.extbpm.process.service.impl.BpmBaseExtApiImpl; import org.jeecg.modules.tasktask.constant.FlowConstants; +import org.jeecg.modules.tasktask.dto.BusinessStatusDTO; import org.jeecg.modules.tasktask.dto.RecurringTaskDTO; import org.jeecg.modules.tasktask.entity.TaskTask; import org.jeecg.modules.tasktask.mapper.TaskTaskMapper; @@ -46,8 +47,10 @@ import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSON; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.api.CommonAPI; import org.jeecg.common.aspect.annotation.AutoLog; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.context.annotation.Lazy; /** * @Description: 事项任务计划表(发起流程) @@ -63,6 +66,10 @@ public class TaskTaskController extends JeecgController getBusinessStatus(@RequestParam(name = "businessId", required = true) String businessId) { + if (oConvertUtils.isEmpty(businessId)) { + return Result.error("businessId不能为空"); + } + String status = taskTaskService.getBusinessStatusByBusinessId(businessId); + String statusText = commonApi.translateDict("super_status", status); + BusinessStatusDTO dto = new BusinessStatusDTO(); + dto.setBusinessId(businessId); + dto.setStatus(status); + dto.setStatusDictText(statusText); + return Result.OK(dto); + } + /** * 更新部门经办人姓名 */ diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/dto/BusinessStatusDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/dto/BusinessStatusDTO.java new file mode 100644 index 0000000..7e983ed --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/dto/BusinessStatusDTO.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.tasktask.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; + +@Data +@Schema(description = "业务状态DTO") +public class BusinessStatusDTO { + + @Schema(description = "业务ID") + private String businessId; + + @Dict(dicCode = "super_status") + @Schema(description = "业务状态: 0未开始 1进行中 2已完成") + private String status; + + @JsonProperty("status_dictText") + @Schema(description = "业务状态字典翻译文本") + private String statusDictText; + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java index 907ba29..45ae72a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java @@ -21,4 +21,5 @@ public interface ITaskTaskService extends IService { boolean deleteSingleProcess(String processInstId); boolean deletePendingTask(String taskId); boolean updateTitleAndDeadline(String taskId, String title, String requireFinishDate); + String getBusinessStatusByBusinessId(String businessId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java index 6b49eab..4effb6f 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java @@ -262,4 +262,48 @@ public class TaskTaskServiceImpl extends ServiceImpl i } return true; } + + @Override + public String getBusinessStatusByBusinessId(String businessId) { + if (StringUtils.isBlank(businessId)) { + log.warn("【督办-查询业务状态】businessId为空, 状态: 1(未开始)"); + return "1"; + } + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(TaskTask::getBusinessId, businessId); + List taskList = this.list(queryWrapper); + + // 中间表无数据 -> 未开始 + if (taskList == null || taskList.isEmpty()) { + log.info("【督办-查询业务状态】无关联流程实例, businessId: {}, 状态: 1(未开始)", businessId); + return "1"; + } + + // 逐个检查关联的流程实例是否已结束 + boolean hasAnyProcess = false; + for (TaskTask tt : taskList) { + if (StringUtils.isBlank(tt.getProcessInstId())) { + continue; + } + hasAnyProcess = true; + long running = runtimeService.createProcessInstanceQuery() + .processInstanceId(tt.getProcessInstId()) + .count(); + if (running > 0) { + // 存在运行中的流程 -> 督办中 + log.info("【督办-查询业务状态】存在运行中的流程实例, businessId: {}, processInstId: {}, 状态: 2(督办中)", + businessId, tt.getProcessInstId()); + return "2"; + } + } + + // 有关联流程且全部结束 -> 已完成; 仅有待发起记录 -> 督办中 + if (hasAnyProcess) { + log.info("【督办-查询业务状态】所有关联流程均已结束, businessId: {}, 状态: 3(已完成)", businessId); + return "3"; + } + log.info("【督办-查询业务状态】仅有待发起任务记录, businessId: {}, 状态: 2(督办中)", businessId); + return "2"; + } }