diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java index 5405fa4..8176cdb 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java @@ -226,7 +226,7 @@ public class ProjectDeclareAction { Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); // 终验审核通过后,项目一级状态变更为已归档 project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); - project.setStatus(ProjectStatusEnum.ARCHIVED.getCode()); + project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); } @OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java index ff5574e..35febc2 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java @@ -105,7 +105,7 @@ public enum ProjectStatusChangeEvent { /** * 终验审核通过(项目状态变为:已归档) */ - FINAL_ACCEPTANCE_PASS(null, null, null), + FINAL_ACCEPTANCE_PASS(20004, null, null), // 下个节点还未提交审核意见时,流程发起人和前一个审核人可以点击撤回 diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java index 3f54677..ffc0bb1 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java @@ -81,7 +81,7 @@ public class ConstructionPlanManage { //首先要判断 项目当前状态 是不是 方案待申报 VUtils.isTrue(!ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode().equals(projectInfo.getStatus()) || !ProjectStatusEnum.NOT_APPROVED.getCode().equals(projectInfo.getStage())) - .throwMessage("提交失败 该项目不是 待预审状态或者未立项阶段"); + .throwMessage("提交失败 该项目不是 方案待申报状态或者未立项阶段"); // TODO 再判断 该项目是否 真实走完 预审审批 ProcessStartParamsVo params = new ProcessStartParamsVo(); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java index dd2b85b..1353309 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java @@ -54,7 +54,8 @@ public enum ProjectStatusEnum { /** * 项目阶段:已归档 */ - ARCHIVED(30000, "已归档"); + ARCHIVED(30000, "已归档"), + ACCEPTED(30001, "已验收"); private Integer code; private String desc; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java index acbf29d..6f60913 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java @@ -1,9 +1,11 @@ package com.ningdatech.pmapi.projectlib.manage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.pmapi.projectlib.enumeration.ProjectRenewalApprovalStatusEnum; +import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; import com.ningdatech.pmapi.projectlib.model.dto.ProjectRenewalFundDeclarationDTO; import com.ningdatech.pmapi.projectlib.model.entity.Project; import com.ningdatech.pmapi.projectlib.model.entity.ProjectRenewalFundDeclaration; @@ -90,14 +92,26 @@ public class ProjectRenewalFundManage { * @return */ public Long declared(ProjectRenewalFundDeclarationDTO dto) { + //要判断 项目id 是否 以及状态是 已验收 + Long projectId = dto.getProjectId(); + Project project = projectService.getById(projectId); + VUtils.isTrue(Objects.isNull(project)).throwMessage(String.format("关联的项目【%s】不存在 提交失败!",projectId)); + VUtils.isTrue(!ProjectStatusEnum.ACCEPTED.getCode().equals(project.getStatus()) || + !ProjectStatusEnum.ARCHIVED.getCode().equals(project.getStage())) + .throwMessage("提交失败 该项目不是 已验收状态或者已归档阶段"); ProjectRenewalFundDeclaration declaration = new ProjectRenewalFundDeclaration(); + //如果是重新申报 + if(Objects.nonNull(dto.getId())){ + ProjectRenewalFundDeclaration oldDeclaration = projectRenewalFundDeclarationService.getById(dto.getId()); + VUtils.isTrue(Objects.isNull(oldDeclaration)).throwMessage(String.format("重新申报失败 【%s】 该申报不存在!",dto.getId())); + BeanUtils.copyProperties(oldDeclaration,declaration); + } BeanUtils.copyProperties(dto,declaration); - declaration.setId(null); declaration.setCreateOn(LocalDateTime.now()); declaration.setUpdateOn(LocalDateTime.now()); declaration.setApprovalStatus(ProjectRenewalApprovalStatusEnum.PENDING.name()); - if(!projectRenewalFundDeclarationService.save(declaration)){ - throw new BusinessException("申报失败"); + if(!projectRenewalFundDeclarationService.saveOrUpdate(declaration)){ + throw new BusinessException(String.format("申报失败 【%s】",dto.getId())); } return declaration.getId(); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/RoleManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/RoleManage.java index 1f9e7b1..33001de 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/RoleManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/RoleManage.java @@ -12,8 +12,8 @@ import com.ningdatech.pmapi.sys.model.entity.RoleMenu; import com.ningdatech.pmapi.sys.model.req.RolePageReq; import com.ningdatech.pmapi.sys.model.vo.MenuRoleVO; import com.ningdatech.pmapi.sys.model.vo.RoleVO; -import com.ningdatech.pmapi.sys.service.IRoleMenuService; import com.ningdatech.pmapi.sys.service.IMenuService; +import com.ningdatech.pmapi.sys.service.IRoleMenuService; import com.ningdatech.pmapi.sys.service.IRoleService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; @@ -35,9 +35,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class RoleManage { - private final IRoleService IRoleService; - private final IMenuService IMenuService; - + private final IRoleService roleService; + private final IMenuService menuService; private final IRoleMenuService roleMenuService; public PageVo queryList(RolePageReq rolePageReq) { @@ -48,16 +47,17 @@ public class RoleManage { return PageVo.of(data, page.getTotal()); } - private void searchList(Page page, LambdaQueryWrapper wrapper, RolePageReq rolePageReq) { - wrapper.like(StringUtils.isNotBlank(rolePageReq.getName()), Role::getName, rolePageReq.getName()) + private void searchList(Page page, LambdaQueryWrapper wrapper, RolePageReq req) { + wrapper.like(StringUtils.isNotBlank(req.getName()), Role::getName, req.getName()) + .eq(req.getFixed() != null, Role::getFixed, req.getFixed()) .orderByDesc(Role::getUpdateOn); - IRoleService.page(page, wrapper); + roleService.page(page, wrapper); } public void buildMenu(RoleVO query) { //改成直接返回有权限的 - List list = IMenuService.list(Wrappers.lambdaQuery(Menu.class).orderByAsc(Menu::getSort)); + List list = menuService.list(Wrappers.lambdaQuery(Menu.class).orderByAsc(Menu::getSort)); List roleMenus = roleMenuService.list(Wrappers.lambdaQuery(RoleMenu.class) .eq(RoleMenu::getRoleId, query.getId())); List menus = list.stream().map(menu -> { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/BaseEntity.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/BaseEntity.java index 56c4cba..4605be6 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/BaseEntity.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/BaseEntity.java @@ -1,5 +1,7 @@ package com.ningdatech.pmapi.sys.model.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -20,15 +22,19 @@ import java.time.LocalDateTime; public class BaseEntity implements Serializable { @ApiModelProperty("创建人userId") + @TableField(fill = FieldFill.INSERT) protected Long createBy; @ApiModelProperty("最后修改人userId") + @TableField(fill = FieldFill.INSERT_UPDATE) protected Long updateBy; @ApiModelProperty("创建时间") + @TableField(fill = FieldFill.INSERT) protected LocalDateTime createOn; @ApiModelProperty("修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) protected LocalDateTime updateOn; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Menu.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Menu.java index 247a63b..3604873 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Menu.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Menu.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.sys.model.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.ningdatech.pmapi.common.model.entity.MenuTreeEntity; @@ -62,12 +63,16 @@ public class Menu extends MenuTreeEntity { @ApiModelProperty("数据权限选项") private String dataScopeOption; + @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateBy; + @TableField(fill = FieldFill.INSERT) private Long createBy; + @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateOn; + @TableField(fill = FieldFill.INSERT) private LocalDateTime createOn; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Role.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Role.java index c31889a..42c3dc8 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Role.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/entity/Role.java @@ -29,7 +29,7 @@ public class Role extends BaseEntity { private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "名称") @@ -38,6 +38,8 @@ public class Role extends BaseEntity { @ApiModelProperty("角色编码") private String code; + @ApiModelProperty("是否是内置角色") + private Boolean fixed; @ApiModelProperty(value = "描述") private String describe; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/req/RolePageReq.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/req/RolePageReq.java index e4a2997..03ba905 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/req/RolePageReq.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/req/RolePageReq.java @@ -34,4 +34,7 @@ public class RolePageReq extends PagePo implements Serializable { @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty("是否是内置角色") + private Boolean fixed; + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/vo/RoleVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/vo/RoleVO.java index 34bc83c..025085b 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/vo/RoleVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/model/vo/RoleVO.java @@ -43,6 +43,9 @@ public class RoleVO extends BaseEntity { @ApiModelProperty(value = "描述") private String describe; + @ApiModelProperty("是否是内置角色:true 是、false 否") + private Boolean fixed; + /** * 数据范围 */ diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java index bd442a9..5befcad 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java @@ -1,10 +1,9 @@ package com.ningdatech.pmapi.todocenter.bean.entity; import com.ningdatech.pmapi.todocenter.bean.vo.ProgressNodeAuditInfoVo; -import com.wflow.workflow.bean.process.OrgUser; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import com.wflow.workflow.bean.process.enums.ApprovalModeEnum; import com.wflow.workflow.bean.process.enums.NodeTypeEnum; -import com.wflow.workflow.bean.vo.UserInfoVO; import com.wflow.workflow.enums.ProcessHandlerEnum; import lombok.AllArgsConstructor; import lombok.Builder; @@ -12,7 +11,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; -import java.util.List; /** * 流程节点实体 @@ -48,7 +46,7 @@ public class ProgressNode { /** * 节点相关人员 */ - private UserInfoVO user; + private ProcessInstanceUserDto user; /** * 该节点动作操作类型 */ diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java index 80ae1e4..3fa2ead 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java @@ -2,8 +2,8 @@ package com.ningdatech.pmapi.todocenter.bean.vo; import com.ningdatech.pmapi.todocenter.bean.entity.ProgressNode; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import com.wflow.workflow.bean.process.form.Form; -import com.wflow.workflow.bean.vo.UserInfoVO; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -60,7 +60,7 @@ public class ProcessProgressDetailVo { /** * 发起人 */ - private UserInfoVO startUser; + private ProcessInstanceUserDto startUser; /** * 发起时间 */ diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java index 7993ddd..22bf75b 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java @@ -1,7 +1,7 @@ package com.ningdatech.pmapi.todocenter.bean.vo; import com.ningdatech.pmapi.todocenter.bean.entity.ProcessComment; -import com.wflow.workflow.bean.vo.UserInfoVO; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; @@ -34,7 +34,7 @@ public class ProgressNodeAuditInfoVo extends ProcessComment { private String commentType; @ApiModelProperty("评论用户信息") - private UserInfoVO user; + private ProcessInstanceUserDto user; @ApiModelProperty("评论时间") private Date createTime; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/controller/TodoCenterController.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/controller/TodoCenterController.java index 913db14..872dcbe 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/controller/TodoCenterController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/controller/TodoCenterController.java @@ -61,14 +61,12 @@ public class TodoCenterController { /** * 查询流程表单数据及审批的进度步骤 * @param instanceId 流程实例ID - * @param nodeId 当前获取流程人员关联的流程节点ID * @return 流程进度及表单详情 */ - @GetMapping("/progress/{instanceId}/{nodeId}") + @GetMapping("/progress/{instanceId}/{projectId}") public ApiResponse getProcessDetail(@PathVariable String instanceId, - @PathVariable(required = false) String nodeId, @PathVariable Long projectId) { - return ApiResponse.ofSuccess(todoCenterManage.getProcessDetail(nodeId, instanceId, projectId)); + return ApiResponse.ofSuccess(todoCenterManage.getProcessDetail(instanceId, projectId)); } /** diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java index 4688ff2..86a9eae 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java @@ -48,7 +48,7 @@ import com.wflow.mapper.WflowCcTasksMapper; import com.wflow.mapper.WflowModelHistorysMapper; import com.wflow.service.OrgRepositoryService; import com.wflow.utils.CodeUtil; -import com.wflow.workflow.bean.process.OrgUser; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import com.wflow.workflow.bean.process.ProcessNode; import com.wflow.workflow.bean.process.enums.ApprovalModeEnum; import com.wflow.workflow.bean.process.enums.NodeTypeEnum; @@ -56,7 +56,6 @@ import com.wflow.workflow.bean.process.form.Form; import com.wflow.workflow.bean.process.props.ApprovalProps; import com.wflow.workflow.bean.vo.ProcessInstanceVo; import com.wflow.workflow.bean.vo.ProcessTaskVo; -import com.wflow.workflow.bean.vo.UserInfoVO; import com.wflow.workflow.config.WflowGlobalVarDef; import com.wflow.workflow.enums.ProcessHandlerEnum; import com.wflow.workflow.service.FormService; @@ -177,15 +176,9 @@ public class TodoCenterManage { // 从待办任务列表中取出当前登录用户及项目实例对应的任务 Task task = taskMap.get(d.getInstCode()); HistoricProcessInstance instance = instanceMap.get(task.getProcessInstanceId()); - //HashSet userSet = new HashSet<>(); - //userSet.add(instance.getStartUserId()) ; - //Map userMap = userInfoService.getUserMapByIds(userSet); - //res.setOwner(userMap.get(Long.valueOf(instance.getStartUserId()))); - UserInfoVO owner = new UserInfoVO(); - owner.setUserId(Long.valueOf(instance.getStartUserId())); - res.setOwner(owner); + // 从缓存取 - staterUsers.add(String.valueOf(userId)); + staterUsers.add(String.valueOf(instance.getStartUserId())); ProcessTaskVo processTaskVo = ProcessTaskVo.builder() .taskId(task.getId()) .taskName(task.getName()) @@ -210,7 +203,7 @@ public class TodoCenterManage { // 取用户信息,减少数据库查询,一次构建 List result = null; if (isNotEmpty(staterUsers)) { - //Map userMap = userInfoService.getUserMapByIds(staterUsers); + //Map userMap = userInfoService.getUserMapByIds(staterUsers); //result = resVos.stream() // .peek(v -> v.getProcessTaskInfo().setStartUser(userMap.get(Long.valueOf(v.getProcessTaskInfo().getOwnerId())))) // .collect(Collectors.toList()); @@ -318,9 +311,7 @@ public class TodoCenterManage { * @since 2023/02/01 */ public void handler(ReqProcessHandlerDTO param) { - // 获取登录用户ID - // Long userId = LoginUserUtil.getUserId(); // Long userId = 381496L; @@ -329,8 +320,12 @@ public class TodoCenterManage { // 若进行的是撤回操作(流程发起人和当前流程审核人的前一个审核人操作) if (param.getAction().equals(ProcessHandlerEnum.WITHDRAW)) { - HistoricTaskInstance handledTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(param.getTaskId()).singleResult(); - doWithDrawProcess(handledTaskInstance, userId); + HistoricTaskInstance handledTaskInstance = historyService.createHistoricTaskInstanceQuery() + .taskId(param.getTaskId()) + .singleResult(); + // 获取要处理的项目ID + Long projectId = param.getProjectId(); + doWithDrawProcess(handledTaskInstance, userId, projectId); return; } Task task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); @@ -373,8 +368,9 @@ public class TodoCenterManage { */ private void doReject(Task task, Long userId, ReqProcessHandlerDTO param) { // 获取当前申报项目 - Project declaredProject = projectService - .getOne(Wrappers.lambdaQuery(Project.class).eq(Project::getInstCode, task.getProcessInstanceId())); + Project declaredProject = projectService.getOne(Wrappers.lambdaQuery(Project.class) + .eq(Project::getInstCode, task.getProcessInstanceId()) + .eq(Project::getId,param.getProjectId())); String projectName = declaredProject.getProjectName(); Map var = new HashMap<>(16); @@ -487,8 +483,9 @@ public class TodoCenterManage { private void doPass(Task task, Long userId, ReqProcessHandlerDTO param) { String processInstanceId = task.getProcessInstanceId(); // 获取当前申报项目 - Project declaredProject = projectService - .getOne(Wrappers.lambdaQuery(Project.class).eq(Project::getInstCode, task.getProcessInstanceId())); + Project declaredProject = projectService.getOne(Wrappers.lambdaQuery(Project.class) + .eq(Project::getInstCode, task.getProcessInstanceId()) + .eq(Project::getId,param.getProjectId())); String projectName = declaredProject.getProjectName(); Map var = new HashMap<>(16); @@ -721,8 +718,9 @@ public class TodoCenterManage { * * @param handledTaskInstance 已处理的历史任务实例 * @param userId 当前登录用户ID + * @param projectId */ - private void doWithDrawProcess(HistoricTaskInstance handledTaskInstance, Long userId) { + private void doWithDrawProcess(HistoricTaskInstance handledTaskInstance, Long userId, Long projectId) { String processInstanceId = handledTaskInstance.getProcessInstanceId(); // 获取当前流程实例待审核任务信息 Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult(); @@ -735,7 +733,8 @@ public class TodoCenterManage { String startUserId = historicProcessInstance.getStartUserId(); // 获取当前申报项目 Project declaredProject = projectService.getOne(Wrappers.lambdaQuery(Project.class) - .eq(Project::getInstCode, processInstanceId)); + .eq(Project::getInstCode, processInstanceId) + .eq(Project::getId,projectId)); String projectName = declaredProject.getProjectName(); // 获取bpm对象 @@ -869,8 +868,9 @@ public class TodoCenterManage { */ private void doBackTask(Task task, Long userId, ReqProcessHandlerDTO param) { // 获取当前申报项目 - Project declaredProject = projectService - .getOne(Wrappers.lambdaQuery(Project.class).eq(Project::getInstCode, task.getProcessInstanceId())); + Project declaredProject = projectService.getOne(Wrappers.lambdaQuery(Project.class) + .eq(Project::getInstCode, task.getProcessInstanceId()) + .eq(Project::getId,param.getProjectId())); String projectName = declaredProject.getProjectName(); // 保存审核意见 if (hasComment(param.getAuditInfo())) { @@ -910,11 +910,10 @@ public class TodoCenterManage { /** * 查询流程表单数据及审批的进度步骤 - * @param nodeId 当前获取流程人员关联的流程节点ID * @param instanceId 流程实例ID * @return 流程进度及表单详情 */ - public ProcessProgressDetailVo getProcessDetail(String nodeId, String instanceId, Long projectId) { + public ProcessProgressDetailVo getProcessDetail(String instanceId, Long projectId) { HistoricProcessInstance instance = historyService.createHistoricProcessInstanceQuery() .processInstanceId(instanceId) .singleResult(); @@ -924,39 +923,59 @@ public class TodoCenterManage { .variableName(WflowGlobalVarDef.WFLOW_FORMS) .singleResult(); List formDatas = null; - if (nodeId.equals("undefined")) { - List historicTaskInstances = historyService.createHistoricTaskInstanceQuery().processInstanceId(instanceId).list(); - formDatas = historyService - .createHistoricVariableInstanceQuery() - .executionIds(historicTaskInstances.stream() - .map(HistoricTaskInstance::getExecutionId) - .collect(Collectors.toSet())) - .processInstanceId(instanceId) - .list(); - } else { - formDatas = historyService - .createHistoricVariableInstanceQuery() - .processInstanceId(instanceId) - .list(); - } + //if (nodeId.equals("undefined")) { + // List historicTaskInstances = historyService.createHistoricTaskInstanceQuery().processInstanceId(instanceId).list(); + // formDatas = historyService + // .createHistoricVariableInstanceQuery() + // .executionIds(historicTaskInstances.stream() + // .map(HistoricTaskInstance::getExecutionId) + // .collect(Collectors.toSet())) + // .processInstanceId(instanceId) + // .list(); + //} else { + // formDatas = historyService + // .createHistoricVariableInstanceQuery() + // .processInstanceId(instanceId) + // .list(); + //} + List historicTaskInstances = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(instanceId).list(); + formDatas = historyService.createHistoricVariableInstanceQuery() + .executionIds(historicTaskInstances.stream() + .map(HistoricTaskInstance::getExecutionId) + .collect(Collectors.toSet())) + .processInstanceId(instanceId).list(); + // 取节点设置 HistoricVariableInstance nodeProps = historyService.createHistoricVariableInstanceQuery() .processInstanceId(instanceId).variableName(WflowGlobalVarDef.WFLOW_NODE_PROPS).singleResult(); Map nodePropsValue = (Map) nodeProps.getValue(); + ProcessNode currentNode = null; - if (StrUtil.isNotBlank(nodeId)) { - // 搜索当前版本流程的配置 - WflowModelHistorys modelHistory = modelHistorysMapper.selectOne(new QueryWrapper<>(WflowModelHistorys.builder() + + //if (StrUtil.isNotBlank(nodeId)) { + // // 搜索当前版本流程的配置 + // WflowModelHistorys modelHistory = modelHistorysMapper.selectOne(new QueryWrapper<>(WflowModelHistorys.builder() + // .processDefId(instance.getProcessDefinitionId()) + // .version(instance.getProcessDefinitionVersion()) + // .build())); + // currentNode = nodeCatchService.reloadProcessByStr(modelHistory.getProcess()).get(nodeId); + //} + // 搜索当前版本流程的配置 + + + + WflowModelHistorys modelHistory = modelHistorysMapper.selectOne(new QueryWrapper<>(WflowModelHistorys.builder() .processDefId(instance.getProcessDefinitionId()) .version(instance.getProcessDefinitionVersion()) .build())); - currentNode = nodeCatchService.reloadProcessByStr(modelHistory.getProcess()).get(nodeId); - } + currentNode = nodeCatchService.reloadProcessByStr(modelHistory.getProcess()).get("undefined"); + //UserInfo userInfo = userInfoService.getById(Long.valueOf(instance.getStartUserId())); //HashSet userSet = new HashSet<>(); //userSet.add(String.valueOf(userInfo.getId())); - //Map userMap = userInfoService.getUserMapByIds(userSet); - //UserInfoVO userInfoVO = userMap.get(userInfo.getId()); + //Map userMap = userInfoService.getUserMapByIds(userSet); + //ProcessInstanceUserDto startUser = userMap.get(String.valueOf(userInfo.getId())); List taskRecords = getHisTaskRecords(instanceId, nodePropsValue); // 获取添加抄送任务 taskRecords.addAll(getCcTaskRecords(instanceId)); @@ -989,7 +1008,7 @@ public class TodoCenterManage { .startTime(instance.getStartTime()) .progress(taskRecords) .build(); - //res.setStartUser(userInfoVO); + //res.setStartUser(startUser); Project project = projectService.getById(projectId); res.setStatus(ProcessStatusEnum.getDescByCode(project.getProcessStatus())); return res; @@ -1010,13 +1029,13 @@ public class TodoCenterManage { ccUsers.add(task.getUserId()); return ProgressNode.builder().nodeId(task.getNodeId()).nodeType(NodeTypeEnum.CC) .name(task.getNodeName()) - .user(UserInfoVO.builder().userId(Long.valueOf(task.getUserId())).build()) + .user(ProcessInstanceUserDto.builder().userId(task.getUserId()).build()) .startTime(task.getCreateTime()) .finishTime(task.getCreateTime()) .build(); }).collect(Collectors.toList()); if (isNotEmpty(ccUsers)) { - Map userMap = userInfoService.getUserMapByIds(ccUsers); + Map userMap = userInfoService.getUserMapByIds(ccUsers); ccList.stream().peek(v -> v.setUser(userMap.get(v.getUser().getUserId()))).collect(Collectors.toList()); } return ccList; @@ -1051,7 +1070,7 @@ public class TodoCenterManage { .commentType(comment.getType()) .type("COMMENT") .createTime(comment.getTime()) - .user(UserInfoVO.builder().userId(Long.valueOf(comment.getUserId())).build()) + .user(ProcessInstanceUserDto.builder().userId(comment.getUserId()).build()) .build(); ProcessComment processComment = JSONObject.parseObject(comment.getFullMessage(), ProcessComment.class); progressNodeAuditInfoVo.setText(processComment.getText()); @@ -1079,7 +1098,7 @@ public class TodoCenterManage { .nodeId(his.getActivityId()) .name(his.getActivityName()) .nodeType(NodeTypeEnum.APPROVAL) - .user(UserInfoVO.builder().userId(Long.valueOf(his.getAssignee())).build()) + .user(ProcessInstanceUserDto.builder().userId(his.getAssignee()).build()) .startTime(his.getStartTime()) .finishTime(his.getEndTime()) .taskId(his.getTaskId()) @@ -1088,7 +1107,7 @@ public class TodoCenterManage { .result(varMap.get("approve_" + his.getTaskId())).build(); }).collect(Collectors.toList()); if (isNotEmpty(userSet)) { - Map userMap = userInfoService.getUserMapByIds(userSet); + Map userMap = userInfoService.getUserMapByIds(userSet); progressNodes.stream().peek(v -> v.setUser(userMap.get(v.getUser().getUserId()))).collect(Collectors.toList()); } return progressNodes; @@ -1158,34 +1177,35 @@ public class TodoCenterManage { res.setProcessStatusName(ProcessStatusEnum.getDescByCode(d.getProcessStatus())); LocalDateTime processLaunchTime = d.getCreateOn(); String launchTimeFormat = NdDateUtils.format(processLaunchTime, "yyyy-MM-dd HH:mm"); - LocalDateTime launchTime = - LocalDateTime.parse(launchTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalDateTime launchTime = LocalDateTime.parse(launchTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); res.setProcessLaunchTime(launchTime); LocalDateTime processHandleTime = d.getUpdateOn(); String handleTimeFormat = NdDateUtils.format(processHandleTime, "yyyy-MM-dd HH:mm"); - LocalDateTime handleTime = - LocalDateTime.parse(handleTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalDateTime handleTime = LocalDateTime.parse(handleTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); res.setProcessHandleTime(handleTime); // 从已处理任务实例列表中取出当前登录用户及项目实例对应的任务实例 HistoricTaskInstance task = taskInstanceMap.get(d.getInstCode()); HistoricProcessInstance instance = instanceMap.get(task.getProcessInstanceId()); - //HashSet userSet = new HashSet<>(); - //userSet.add(instance.getStartUserId()) ; - //Map userMap = userInfoService.getUserMapByIds(userSet); - //res.setOwner(userMap.get(Long.valueOf(instance.getStartUserId()))); - UserInfoVO owner = new UserInfoVO(); - owner.setUserId(Long.valueOf(instance.getStartUserId())); - res.setOwner(owner); + // 从缓存取 staterUsers.add(instance.getStartUserId()); - ProcessTaskVo processTaskVo = ProcessTaskVo.builder().taskId(task.getId()).taskName(task.getName()) - .taskDefKey(task.getTaskDefinitionKey()).processDefId(task.getProcessDefinitionId()) - .executionId(task.getExecutionId()).nodeId(task.getTaskDefinitionKey()) - .deployId(instance.getDeploymentId()).processDefName(instance.getProcessDefinitionName()) - .version(instance.getProcessDefinitionVersion()).instanceId(task.getProcessInstanceId()) - .ownerId(instance.getStartUserId()).createTime(instance.getStartTime()) - .taskCreateTime(task.getCreateTime()).build(); + ProcessTaskVo processTaskVo = ProcessTaskVo + .builder() + .taskId(task.getId()) + .taskName(task.getName()) + .taskDefKey(task.getTaskDefinitionKey()) + .processDefId(task.getProcessDefinitionId()) + .executionId(task.getExecutionId()) + .nodeId(task.getTaskDefinitionKey()) + .deployId(instance.getDeploymentId()) + .processDefName(instance.getProcessDefinitionName()) + .version(instance.getProcessDefinitionVersion()) + .instanceId(task.getProcessInstanceId()) + .ownerId(instance.getStartUserId()) + .createTime(instance.getStartTime()) + .taskCreateTime(task.getCreateTime()) + .build(); res.setProcessTaskInfo(processTaskVo); return res; }).collect(Collectors.toList()); @@ -1195,9 +1215,9 @@ public class TodoCenterManage { // 取用户信息,减少数据库查询,一次构建 List result = null; if (isNotEmpty(staterUsers)) { - //Map userMap = userInfoService.getUserMapByIds(staterUsers); + //Map userMap = userInfoService.getUserMapByIds(staterUsers); //result = resVos.stream().peek(v -> v.getProcessTaskInfo() - // .setStartUser(userMap.get(Long.valueOf(v.getProcessTaskInfo().getOwnerId())))) + // .setStartUser(userMap.get(v.getProcessTaskInfo().getOwnerId()))) // .collect(Collectors.toList()); } // return PageVo.of(result, total); @@ -1315,10 +1335,10 @@ public class TodoCenterManage { Long startUserId = 381496L; HistoricProcessInstanceQuery instanceQuery = historyService.createHistoricProcessInstanceQuery(); Executor.builder().ifNotBlankNext(String.valueOf(startUserId), instanceQuery::startedBy); - List historicProcessInstances = - instanceQuery.orderByProcessInstanceStartTime().desc().orderByProcessInstanceEndTime().desc().list(); - Set historicProcessInstanceIds = - historicProcessInstances.stream().map(HistoricProcessInstance::getId).collect(Collectors.toSet()); + List historicProcessInstances = instanceQuery.orderByProcessInstanceStartTime() + .desc().orderByProcessInstanceEndTime().desc().list(); + Set historicProcessInstanceIds = historicProcessInstances.stream() + .map(HistoricProcessInstance::getId).collect(Collectors.toSet()); List results = getMySubmittedProjects(param, historicProcessInstanceIds); @@ -1335,8 +1355,11 @@ public class TodoCenterManage { // 把已办任务流程实例一次性取出来,减少查询次数 Map instanceMap = isNotEmpty(historicProcessInstances) ? historyService .createHistoricProcessInstanceQuery() - .processInstanceIds(historicProcessInstances.stream().map(HistoricProcessInstance::getId).collect(Collectors.toSet())) - .list().stream().collect(Collectors.toMap(HistoricProcessInstance::getId, v -> v)) : new HashMap<>(); + .processInstanceIds(historicProcessInstances.stream() + .map(HistoricProcessInstance::getId) + .collect(Collectors.toSet())) + .list().stream() + .collect(Collectors.toMap(HistoricProcessInstance::getId, v -> v)) : new HashMap<>(); Set staterUsers = new HashSet<>(); @@ -1348,18 +1371,11 @@ public class TodoCenterManage { res.setProcessStatusName(ProcessStatusEnum.getDescByCode(d.getProcessStatus())); LocalDateTime processLaunchTime = d.getCreateOn(); String launchTimeFormat = NdDateUtils.format(processLaunchTime, "yyyy-MM-dd HH:mm"); - LocalDateTime launchTime = - LocalDateTime.parse(launchTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalDateTime launchTime = LocalDateTime.parse(launchTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); res.setProcessLaunchTime(launchTime); HistoricProcessInstance ist = instanceMap.get(d.getInstCode()); staterUsers.add(ist.getStartUserId()); - //HashSet userSet = new HashSet<>(); - //userSet.add(instance.getStartUserId()) ; - //Map userMap = userInfoService.getUserMapByIds(userSet); - //res.setOwner(userMap.get(Long.valueOf(ist.getStartUserId()))); - UserInfoVO owner = new UserInfoVO(); - owner.setUserId(Long.valueOf(ist.getStartUserId())); - res.setOwner(owner); + ProcessInstanceVo processInstanceVo = getProcessInstanceVos(ist); res.setProcessInstanceInfo(processInstanceVo); return res; @@ -1371,9 +1387,9 @@ public class TodoCenterManage { // 取用户信息,减少数据库查询,一次构建 List result = null; if (isNotEmpty(staterUsers)) { - //Map userMap = userInfoService.getUserMapByIds(staterUsers); + //Map userMap = userInfoService.getUserMapByIds(staterUsers); //result = resVos.stream() - // .peek(v -> v.getProcessTaskInfo().setStartUser(userMap.get(Long.valueOf(v.getProcessTaskInfo().getOwnerId())))) + // .peek(v -> v.getProcessInstanceInfo().setStartUser(userMap.get(v.getProcessTaskInfo().getOwnerId()))) // .collect(Collectors.toList()); } // return PageVo.of(result, total); @@ -1416,16 +1432,25 @@ public class TodoCenterManage { */ private ProcessInstanceVo getProcessInstanceVos(HistoricProcessInstance ist) { Map instanceNodeMap = new HashMap<>(); - ProcessInstanceVo instanceVo = ProcessInstanceVo.builder().processDefId(ist.getProcessDefinitionId()) - .instanceId(ist.getId()).nodeId(instanceNodeMap.get(ist.getId())).formId(ist.getProcessDefinitionKey()) - .staterUserId(ist.getStartUserId()).startTime(ist.getStartTime()).finishTime(ist.getEndTime()) - .processDefName(ist.getProcessDefinitionName()).result(ist.getEndActivityId()) - .version(ist.getProcessDefinitionVersion()).build(); + ProcessInstanceVo instanceVo = ProcessInstanceVo + .builder() + .processDefId(ist.getProcessDefinitionId()) + .instanceId(ist.getId()) + .nodeId(instanceNodeMap.get(ist.getId())) + .formId(ist.getProcessDefinitionKey()) + .staterUserId(ist.getStartUserId()) + .startTime(ist.getStartTime()) + .finishTime(ist.getEndTime()) + .processDefName(ist.getProcessDefinitionName()) + .result(ist.getEndActivityId()) + .version(ist.getProcessDefinitionVersion()) + .build(); if (Objects.isNull(ist.getEndActivityId())) { instanceVo.setStatus(ProcessStatusEnum.UNDER_REVIEW.name()); } else if (HisProInsEndActId.BACK.equals(ist.getEndActivityId())) { - // TODO 被退回的审核节点状态这里只是暂时这么判断,具体怎么保存这个退回状态,后面讨论 + // 被流程发起人退回的审核节点状态,此时项目回到上一个状态,当前流程结束 + // (由前一个审核人撤回的流程,未结束,仍在审核中) instanceVo.setStatus(ProcessStatusEnum.BE_BACKED.name()); } else if (HisProInsEndActId.REJECT.equals(ist.getEndActivityId())) { instanceVo.setStatus(ProcessStatusEnum.BE_REJECTED.name()); @@ -1435,8 +1460,7 @@ public class TodoCenterManage { if (ObjectUtil.isNull(ist.getEndActivityId())) { // 没有结束,还在走流程,获取任务 - List list = - taskService.createTaskQuery().processInstanceId(ist.getId()).includeIdentityLinks().active().list(); + List list = taskService.createTaskQuery().processInstanceId(ist.getId()).includeIdentityLinks().active().list(); instanceVo.setNodeId(Optional.ofNullable(instanceVo.getNodeId()).orElseGet(() -> { if (isNotEmpty(list)) { return list.get(0).getTaskDefinitionKey(); @@ -1453,7 +1477,6 @@ public class TodoCenterManage { instanceVo.setTaskName(ProcessStatusEnum.APPROVED.getDesc()); } } - return instanceVo; } @@ -1571,18 +1594,11 @@ public class TodoCenterManage { res.setProcessStatusName(ProcessStatusEnum.getDescByCode(d.getProcessStatus())); LocalDateTime processLaunchTime = d.getCreateOn(); String launchTimeFormat = NdDateUtils.format(processLaunchTime, "yyyy-MM-dd HH:mm"); - LocalDateTime launchTime = - LocalDateTime.parse(launchTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalDateTime launchTime = LocalDateTime.parse(launchTimeFormat, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); res.setProcessLaunchTime(launchTime); HistoricProcessInstance ist = instanceMap.get(d.getInstCode()); staterUsers.add(ist.getStartUserId()); - //HashSet userSet = new HashSet<>(); - //userSet.add(instance.getStartUserId()) ; - //Map userMap = userInfoService.getUserMapByIds(userSet); - //res.setOwner(userMap.get(Long.valueOf(ist.getStartUserId()))); - UserInfoVO owner = new UserInfoVO(); - owner.setUserId(Long.valueOf(ist.getStartUserId())); - res.setOwner(owner); + ProcessInstanceVo processInstanceVo = getProcessInstanceVos(ist); res.setProcessInstanceInfo(processInstanceVo); return res; @@ -1593,9 +1609,9 @@ public class TodoCenterManage { // 取用户信息,减少数据库查询,一次构建 List result = null; if (isNotEmpty(staterUsers)) { - //Map userMap = userInfoService.getUserMapByIds(staterUsers); + //Map userMap = userInfoService.getUserMapByIds(staterUsers); //result = resVos.stream() - // .peek(v -> v.getProcessTaskInfo().setStartUser(userMap.get(Long.valueOf(v.getProcessTaskInfo().getOwnerId())))) + // .peek(v -> v.getProcessInstanceInfo().setStartUser(userMap.get(v.getProcessTaskInfo().getOwnerId()))) // .collect(Collectors.toList()); } // return PageVo.of(result, total); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/req/ReqProcessHandlerDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/req/ReqProcessHandlerDTO.java index c6c307c..eba90b5 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/req/ReqProcessHandlerDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/req/ReqProcessHandlerDTO.java @@ -2,10 +2,13 @@ package com.ningdatech.pmapi.todocenter.model.dto.req; import com.ningdatech.pmapi.todocenter.bean.entity.ProcessComment; import com.wflow.workflow.enums.ProcessHandlerEnum; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.NotNull; + /** * 流程处理操作参数实体 * @@ -18,12 +21,20 @@ import lombok.NoArgsConstructor; public class ReqProcessHandlerDTO { /** + * 要处理的项目ID + */ + @NotNull(message = "要处理的项目ID不能为空!") + private Long projectId; + + /** * 实例ID */ + @NotNull(message = "流程实例ID不能为空!") private String instanceId; /** * 任务ID */ + @NotNull(message = "任务ID不能为空!") private String taskId; /** * 签名图片地址 @@ -32,6 +43,7 @@ public class ReqProcessHandlerDTO { /** * 操作类型 */ + @NotNull(message = "操作类型不能为空!") private ProcessHandlerEnum action; /** * 目标用户 diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java index c984a77..d62b39a 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java @@ -2,9 +2,9 @@ package com.ningdatech.pmapi.todocenter.model.dto.res; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.fasterxml.jackson.annotation.JsonFormat; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import com.wflow.workflow.bean.vo.ProcessInstanceVo; import com.wflow.workflow.bean.vo.ProcessTaskVo; -import com.wflow.workflow.bean.vo.UserInfoVO; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; @@ -67,7 +67,4 @@ public class ResToBeProcessedDTO implements Serializable { @ApiModelProperty("流程实例信息") private ProcessInstanceVo processInstanceInfo; - - @ApiModelProperty("流程发起人信息") - private UserInfoVO owner; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java index 921eb82..3f29442 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java @@ -2,7 +2,7 @@ package com.ningdatech.pmapi.user.service; import com.ningdatech.pmapi.user.entity.UserInfo; import com.baomidou.mybatisplus.extension.service.IService; -import com.wflow.workflow.bean.vo.UserInfoVO; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import java.util.Map; import java.util.Set; @@ -16,5 +16,5 @@ import java.util.Set; * @since 2023-02-01 */ public interface IUserInfoService extends IService { - Map getUserMapByIds(Set staterUsers); + Map getUserMapByIds(Set staterUsers); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java index 5f45423..ffc78b0 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java @@ -10,7 +10,7 @@ import com.ningdatech.pmapi.user.entity.UserInfo; import com.ningdatech.pmapi.user.mapper.NdUserInfoMapper; import com.ningdatech.pmapi.user.service.IUserInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wflow.workflow.bean.vo.UserInfoVO; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.*; @@ -33,13 +33,12 @@ public class UserInfoServiceImpl extends ServiceImpl private final IDingOrganizationService dingOrganizationService; @Override - public Map getUserMapByIds(Set staterUsers) { + public Map getUserMapByIds(Set staterUsers) { List userInfos = userInfoMapper.selectBatchIds(staterUsers); - List resVos = userInfos.stream().map(u -> { - UserInfoVO userInfoVO = new UserInfoVO(); - userInfoVO.setUserId(u.getId()); - userInfoVO.setRealName(u.getRealName()); - userInfoVO.setAccountId(u.getAccountId()); + List resVos = userInfos.stream().map(u -> { + ProcessInstanceUserDto userInfo = new ProcessInstanceUserDto(); + userInfo.setUserId(String.valueOf(u.getId())); + userInfo.setUserName(u.getRealName()); Long accountId = u.getAccountId(); if (Objects.isNull(accountId)){ throw new BizException("该用户没有录入浙政钉用户信息!"); @@ -52,10 +51,10 @@ public class UserInfoServiceImpl extends ServiceImpl DingOrganization dingOrganization = dingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) .eq(DingOrganization::getOrganizationCode, organizationCode)); String organizationName = dingOrganization.getOrganizationName(); - userInfoVO.setOrganizationCode(organizationCode); - userInfoVO.setOrganizationName(organizationName); - return userInfoVO; + userInfo.setOrgCode(organizationCode); + userInfo.setOrgName(organizationName); + return userInfo; }).collect(Collectors.toList()); - return resVos.stream().collect(Collectors.toMap(UserInfoVO::getUserId, v -> v)); + return resVos.stream().collect(Collectors.toMap((ProcessInstanceUserDto::getUserId), v -> v)); } } diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/instance/InstanceTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/instance/InstanceTest.java new file mode 100644 index 0000000..61d2527 --- /dev/null +++ b/pmapi/src/test/java/com/ningdatech/pmapi/instance/InstanceTest.java @@ -0,0 +1,28 @@ +package com.ningdatech.pmapi.instance; + +import com.alibaba.fastjson.JSON; +import com.ningdatech.pmapi.AppTests; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; +import org.flowable.engine.RuntimeService; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Classname InstanceTest + * @Description + * @Date 2023/2/16 14:44 + * @Author PoffyZhang + */ +public class InstanceTest extends AppTests { + + @Autowired + private RuntimeService runtimeService; + + @Test + public void test(){ + String instanceId = "896fa188-96d8-11ed-9539-e2d4e8f16b2f"; + Object user = runtimeService.getVariable(instanceId, + "owner"); + System.out.println(JSON.toJSONString(user)); + } +} diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java index 1819a47..a6ccbcd 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.statemachine; +import com.alibaba.fastjson.JSON; import com.ningdatech.pmapi.AppTests; import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; import com.ningdatech.pmapi.common.statemachine.event.ProjectStatusChangeEvent; @@ -24,9 +25,11 @@ public class StateMachineTest extends AppTests { @Test public void stateMachineTest() throws Exception { Project project = new Project(); - project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); + project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); + project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); project.setDeclareAmount(BigDecimal.valueOf(2000)); // stateMachineUtils.execute(project, ProjectStatusChangeEvent.UNDER_INTERNAL_PASS); stateMachineUtils.execute(project, stateMachineUtils.getProjectStatusPassEvent(project.getStatus())); + System.out.println(String.format("project:%s", JSON.toJSONString(project))); } } diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/sys/service/IMenuServiceTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/sys/service/IMenuServiceTest.java index fcb8319..092fdfa 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/sys/service/IMenuServiceTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/sys/service/IMenuServiceTest.java @@ -8,12 +8,17 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.ningdatech.pmapi.AppTests; import com.ningdatech.pmapi.sys.model.entity.Menu; +import com.ningdatech.pmapi.sys.model.entity.Role; import com.ningdatech.pmapi.sys.model.entity.RoleMenu; +import com.ningdatech.pmapi.user.entity.enumeration.RoleEnum; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import java.sql.SQLException; +import java.time.LocalDateTime; +import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicLong; /** *

@@ -27,6 +32,27 @@ class IMenuServiceTest extends AppTests { @Autowired private IMenuService menuService; + @Autowired + private IRoleService roleService; + + /** + * 初始化固定角色 + */ + @Test + public void roleService() { + roleService.remove(null); + AtomicLong integer = new AtomicLong(0); + Arrays.stream(RoleEnum.values()).map(w -> { + Role role = new Role(); + role.setId(integer.incrementAndGet()); + role.setCode(w.name()); + role.setName(w.getDesc()); + role.setDescribe(w.getDesc()); + role.setFixed(true); + role.setCreateOn(LocalDateTime.now()); + return role; + }).forEach(roleService::save); + } @Test public void test() throws SQLException { diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java index 9803d2e..4ecc55e 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java @@ -27,10 +27,9 @@ public class TodoCenterTest extends AppTests { private ZwddClient zwddClient; @Test public void sendWorkNoticeTest(){ - // String msg = String.format(PASS_MSG_TEMPLATE, "发改委", "0216-4-测试项目"); - String msg = "发改委的0216-6-测试项目需要您审核"; + String msg = String.format(PASS_MSG_TEMPLATE, "发改委", "0216-7-测试项目"); log.info("开始发送工作通知"); - zwddClient.sendWorkNotice("846085","0216-7",msg); + zwddClient.sendWorkNotice("846085","0216-8",msg); // zwddClient.sendWorkNotice("829728","0216-5",msg); log.info("发送工作通知结束"); }