From 19059e1d4c1beb96ca1e6994fd44d9a04282b6f1 Mon Sep 17 00:00:00 2001 From: fangjiakai <450850793@qq.com> Date: Wed, 18 Mar 2026 11:25:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=20=E6=B7=BB=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=B1=BB=E5=9E=8B=E6=9F=A5=E8=AF=A2=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 EightworkTaskController 中新增 listByWorkType 接口 - 实现 listByWorkTypeOrderByLevel 方法按作业级别升序排序 - 新增 EightworkTaskQry 和 EightworkTaskLevelCO 数据传输对象 - 优化 TaskLog 初始化逻辑,默认状态设为未开始 - 修复持续步骤状态管理,提交时保持进行中状态 - 更新数据库表名从 eightwork_task_log 到 task_log - 添加部门ID、创建时间等查询条件支持 --- .../web/EightworkTaskController.java | 8 ++++++ .../eightwork/command/TaskLogAddExe.java | 12 ++++----- .../eightwork/command/TaskLogUpdateExe.java | 16 ++++++++++-- .../command/query/EightworkTaskQueryExe.java | 25 +++++++++++++++++++ .../service/EightworkTaskServiceImpl.java | 8 ++++++ .../eightwork/api/EightworkTaskServiceI.java | 13 ++++++++++ .../eightwork/dto/EightworkInfoPageQry.java | 11 ++++++++ .../EightworkSupplementaryInfoPageQry.java | 3 ++- .../zcloud/eightwork/dto/TaskLogAddCmd.java | 1 - .../zcloud/eightwork/dto/TaskLogNextCmd.java | 1 - .../repository/EightworkTaskRepository.java | 9 +++++++ .../impl/EightworkTaskRepositoryImpl.java | 16 +++++++++--- .../impl/MeasuresLogsRepositoryImpl.java | 1 + .../resources/mapper/EightworkInfoMapper.xml | 15 +++++++++++ .../main/resources/mapper/TaskLogMapper.xml | 6 ++--- 15 files changed, 127 insertions(+), 18 deletions(-) diff --git a/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkTaskController.java b/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkTaskController.java index 0de8d6c..efeb018 100644 --- a/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkTaskController.java +++ b/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkTaskController.java @@ -4,8 +4,10 @@ package com.zcloud.eightwork.web; import com.zcloud.eightwork.api.EightworkTaskServiceI; import com.zcloud.eightwork.dto.EightworkTaskAddCmd; import com.zcloud.eightwork.dto.EightworkTaskPageQry; +import com.zcloud.eightwork.dto.EightworkTaskQry; import com.zcloud.eightwork.dto.EightworkTaskUpdateCmd; import com.zcloud.eightwork.dto.clientobject.EightworkTaskCO; +import com.zcloud.eightwork.dto.clientobject.EightworkTaskLevelCO; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.Response; @@ -46,6 +48,12 @@ public class EightworkTaskController { return eightworkTaskService.listPage(qry); } + @ApiOperation("根据作业类型查询任务列表") + @PostMapping("/listByWorkType") + public MultiResponse listByWorkType(@Validated @RequestBody EightworkTaskQry qry) { + return eightworkTaskService.listByWorkTypeOrderByLevel(qry); + } + @ApiOperation("所有数据") @GetMapping("/listAll") public MultiResponse listAll() { diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java index bc60597..d0ff74b 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java @@ -89,15 +89,14 @@ public class TaskLogAddExe { TaskLogDO taskLogDO = new TaskLogDO(Tools.get32UUID()); BeanUtils.copyProperties(flow, taskLogDO, "id"); taskLogDO.setWorkId(workId); + taskLogDO.setWorkType(cmd.getWorkType()); - // 持续步骤(如气体检测):申请后就开始,且状态始终为进行中 + // 默认状态为未开始 + taskLogDO.setStatus(TaskLogStatus.NOT_STARTED.getCode()); + + // 持续步骤初始化填写次数 if (flow.getOngoingFlag() != null && flow.getOngoingFlag() == 1) { - taskLogDO.setStatus(TaskLogStatus.IN_PROGRESS.getCode()); taskLogDO.setCurrentFillTimes(0); - log.info("持续步骤已初始化: stepName={}", flow.getStepName()); - } else { - // 默认状态为未开始 - taskLogDO.setStatus(TaskLogStatus.NOT_STARTED.getCode()); } // 第一步自动设置为当前申请人 @@ -151,7 +150,6 @@ public class TaskLogAddExe { signInfo.getActUser(), signInfo.getActUserName() ); - taskLogDO.setWorkType(cmd.getWorkType()); log.info("已设置预设签字人: stepName={}, userName={}", flow.getStepName(), signInfo.getActUserName()); } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java index 968aa9b..32b163c 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java @@ -111,8 +111,15 @@ public class TaskLogUpdateExe { throw new BizException("未找到对应的步骤记录"); } - // 1. 完成当前步骤 - completeCurrentStep(currentLog, cmd, actionLogs); + // 检查是否为持续步骤的特殊提交 + // 持续步骤提交时不应改变状态为 APPROVED,而应保持 IN_PROGRESS + boolean isOngoingStepSubmit = currentLog.getOngoingFlag() != null && currentLog.getOngoingFlag() == 1 + && StringUtils.isNotBlank(cmd.getSpecialStepCode()); + + // 1. 完成当前步骤(持续步骤的特殊提交跳过此步骤) + if (!isOngoingStepSubmit) { + completeCurrentStep(currentLog, cmd, actionLogs); + } // 2. 判断是否通过,通过才流转 if (TaskLogStatus.APPROVED.equalsCode(cmd.getStatus())) { @@ -314,6 +321,11 @@ public class TaskLogUpdateExe { currentTimes = 0; } currentLog.setCurrentFillTimes(currentTimes + 1); + + // 持续步骤状态保持 IN_PROGRESS,不随审批流转 + currentLog.setStatus(TaskLogStatus.IN_PROGRESS.getCode()); + + // 添加到待更新列表 actionLogs.add(TaskLogConvertUtil.toDO(currentLog)); log.info("气体检测记录已保存,当前填写次数: {}", currentTimes + 1); diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkTaskQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkTaskQueryExe.java index ab1efdb..3ee8172 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkTaskQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkTaskQueryExe.java @@ -1,11 +1,15 @@ package com.zcloud.eightwork.command.query; import com.zcloud.eightwork.command.convertor.EightworkTaskCoConvertor; +import com.zcloud.eightwork.domain.model.EightworkTaskLevelE; import com.zcloud.eightwork.dto.EightworkTaskPageQry; +import com.zcloud.eightwork.dto.EightworkTaskQry; import com.zcloud.eightwork.dto.clientobject.EightworkTaskCO; +import com.zcloud.eightwork.dto.clientobject.EightworkTaskLevelCO; import com.zcloud.eightwork.persistence.dataobject.EightworkTaskDO; import com.zcloud.eightwork.persistence.repository.EightworkTaskRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; +import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; @@ -38,5 +42,26 @@ public class EightworkTaskQueryExe { List examCenterCOS = eightworkTaskCoConvertor.converDOsToCOs(pageResponse.getData()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } + + /** + * 根据作业类型查询任务列表,按作业级别升序排序 + * + * @param qry 查询条件 + * @return 任务列表 + */ + public MultiResponse listByWorkTypeOrderByLevel(EightworkTaskQry qry) { + List taskDOList = eightworkTaskRepository.listByWorkTypeOrderByLevel(qry.getWorkType()); + + // 手动转换为 EightworkTaskLevelCO + List taskCOList = new java.util.ArrayList<>(); + for (EightworkTaskDO taskDO : taskDOList) { + EightworkTaskLevelCO co = new EightworkTaskLevelCO(); + co.setTaskName(taskDO.getTaskName()); + co.setWorkLevel(taskDO.getWorkLevel()); + taskCOList.add(co); + } + + return MultiResponse.of(taskCOList); + } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/service/EightworkTaskServiceImpl.java b/web-app/src/main/java/com/zcloud/eightwork/service/EightworkTaskServiceImpl.java index 2badda4..94b63ac 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/service/EightworkTaskServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/eightwork/service/EightworkTaskServiceImpl.java @@ -8,8 +8,11 @@ import com.zcloud.eightwork.command.query.EightworkTaskQueryExe; import com.zcloud.eightwork.dto.EightworkTaskAddCmd; import com.zcloud.eightwork.dto.EightworkTaskPageQry; import com.zcloud.eightwork.dto.EightworkTaskUpdateCmd; +import com.zcloud.eightwork.dto.EightworkTaskQry; import com.zcloud.eightwork.dto.clientobject.EightworkTaskCO; +import com.zcloud.eightwork.dto.clientobject.EightworkTaskLevelCO; +import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; import lombok.AllArgsConstructor; @@ -56,5 +59,10 @@ public class EightworkTaskServiceImpl implements EightworkTaskServiceI { public void removeBatch(Long[] ids) { eightworkTaskRemoveExe.execute(ids); } + + @Override + public MultiResponse listByWorkTypeOrderByLevel(EightworkTaskQry qry) { + return eightworkTaskQueryExe.listByWorkTypeOrderByLevel(qry); + } } diff --git a/web-client/src/main/java/com/zcloud/eightwork/api/EightworkTaskServiceI.java b/web-client/src/main/java/com/zcloud/eightwork/api/EightworkTaskServiceI.java index 6890960..a7ffaac 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/api/EightworkTaskServiceI.java +++ b/web-client/src/main/java/com/zcloud/eightwork/api/EightworkTaskServiceI.java @@ -3,10 +3,15 @@ package com.zcloud.eightwork.api; import com.zcloud.eightwork.dto.EightworkTaskAddCmd; import com.zcloud.eightwork.dto.EightworkTaskPageQry; import com.zcloud.eightwork.dto.EightworkTaskUpdateCmd; +import com.zcloud.eightwork.dto.EightworkTaskQry; import com.zcloud.eightwork.dto.clientobject.EightworkTaskCO; +import com.zcloud.eightwork.dto.clientobject.EightworkTaskLevelCO; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; +import com.alibaba.cola.dto.MultiResponse; + +import java.util.List; /** * web-client @@ -24,5 +29,13 @@ public interface EightworkTaskServiceI { void remove(Long id); void removeBatch(Long[] ids); + + /** + * 根据作业类型查询任务列表,按作业级别升序排序 + * + * @param qry 查询条件 + * @return 任务列表 + */ + MultiResponse listByWorkTypeOrderByLevel(EightworkTaskQry qry); } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java index a429200..d6f4fe5 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java @@ -3,6 +3,8 @@ package com.zcloud.eightwork.dto; import com.alibaba.cola.dto.PageQuery; import lombok.Data; +import java.util.List; + /** * web-client @@ -33,5 +35,14 @@ public class EightworkInfoPageQry extends PageQuery { private Long eqProjectId; private Long eqWorkDepartmentId; private Long eqWorkUserId; + + private List inDepartmentId; + + private String leCreateTime; + + private String geCreateTime; + + private String likeCreateName; + } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkSupplementaryInfoPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkSupplementaryInfoPageQry.java index d2d9a81..96fa6d0 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkSupplementaryInfoPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkSupplementaryInfoPageQry.java @@ -23,6 +23,7 @@ public class EightworkSupplementaryInfoPageQry extends PageQuery { * - `le`: 小于等于比较查询 * - `ne`: 不等比较查询,对应SQL的!=操作符 */ - private String likeSupplementaryInfoId; + private String eqWorkId; + private String eqType; } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java index 111cac2..de9d1d6 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java @@ -32,7 +32,6 @@ public class TaskLogAddCmd extends Command { private Long corpinfoId; @ApiModelProperty(value = "是否相关方1是", name = "xgfFlag", required = true) - @NotNull(message = "是否相关方1是不能为空") private Integer xgfFlag; @ApiModelProperty(value = "是否内部作业1是2否", name = "internalOperationFlag") diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java index d47cee8..7541cf8 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java @@ -39,7 +39,6 @@ public class TaskLogNextCmd extends Command { private String specialStepCode; //签字图片路径 @ApiModelProperty(value = "签字图片路径") - @NotEmpty(message = "签字图片路径不能为空") private String signPath; @ApiModelProperty(value = "签字步骤", name = "signLogs") private List signLogs; diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkTaskRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkTaskRepository.java index 3f536e6..fe68812 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkTaskRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkTaskRepository.java @@ -5,6 +5,7 @@ import com.alibaba.cola.dto.PageResponse; import com.baomidou.mybatisplus.core.metadata.IPage; import com.jjb.saas.framework.repository.repo.BaseRepository; +import java.util.List; import java.util.Map; /** @@ -15,5 +16,13 @@ import java.util.Map; */ public interface EightworkTaskRepository extends BaseRepository { PageResponse listPage(Map params); + + /** + * 根据作业类型查询任务列表,按作业级别升序排序 + * + * @param workType 作业类型 + * @return 任务列表 + */ + List listByWorkTypeOrderByLevel(String workType); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkTaskRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkTaskRepositoryImpl.java index eb83e31..2ac24c3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkTaskRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkTaskRepositoryImpl.java @@ -1,18 +1,19 @@ package com.zcloud.eightwork.persistence.repository.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.jjb.saas.framework.repository.common.PageHelper; +import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.zcloud.eightwork.persistence.dataobject.EightworkTaskDO; import com.zcloud.eightwork.persistence.mapper.EightworkTaskMapper; import com.zcloud.eightwork.persistence.repository.EightworkTaskRepository; import com.alibaba.cola.dto.PageResponse; import com.zcloud.gbscommon.utils.PageQueryHelper; import com.zcloud.gbscommon.utils.Query; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; /** @@ -35,5 +36,14 @@ public class EightworkTaskRepositoryImpl extends BaseRepositoryImpl result = eightworkTaskMapper.selectPage(iPage, queryWrapper); return PageHelper.pageToResponse(result, result.getRecords()); } + + @Override + public List listByWorkTypeOrderByLevel(String workType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("work_type", workType); + queryWrapper.select("task_name", "work_level"); + queryWrapper.orderByAsc("work_level"); + return eightworkTaskMapper.selectList(queryWrapper); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java index f1dcc56..0750ca2 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java @@ -43,6 +43,7 @@ public class MeasuresLogsRepositoryImpl extends BaseRepositoryImpl + + and t.department_id in + + #{item} + + + + and t.create_time >= #{params.geCreateTime} + + + and t.create_time <= #{params.leCreateTime} + + + and t.create_name like concat('%', #{params.likeCreateName}, '%') + order by t.create_time desc diff --git a/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml b/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml index 8ea8cc9..0bd46c1 100644 --- a/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml @@ -7,7 +7,7 @@ select * - from eightwork_task_log + from task_log where work_id = #{workId} and step_id = #{stepId} limit 1