diff --git a/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/personal/PersonalItemServiceImpl.java b/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/personal/PersonalItemServiceImpl.java index 571f3ef..50081f0 100644 --- a/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/personal/PersonalItemServiceImpl.java +++ b/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/personal/PersonalItemServiceImpl.java @@ -30,6 +30,7 @@ import com.njcn.rdms.module.project.dal.mysql.status.ObjectStatusTransitionMappe import com.njcn.rdms.module.project.enums.ErrorCodeConstants; import com.njcn.rdms.module.project.framework.attachment.AttachmentFileIdResolver; import com.njcn.rdms.module.project.framework.attachment.AttachmentValidator; +import com.njcn.rdms.module.project.service.project.ProjectService; import com.njcn.rdms.module.project.service.status.StatusActionTextResolver; import com.njcn.rdms.module.system.api.user.AdminUserApi; import com.njcn.rdms.module.system.api.user.dto.AdminUserRespDTO; @@ -86,6 +87,8 @@ public class PersonalItemServiceImpl implements PersonalItemService { private AdminUserApi adminUserApi; @Resource private StatusActionTextResolver statusActionTextResolver; + @Resource + private ProjectService projectService; @Override @Transactional(rollbackFor = Exception.class) @@ -359,6 +362,8 @@ public class PersonalItemServiceImpl implements PersonalItemService { writeAuditLog(item, ObjectActivityConstants.PERSONAL_ITEM_ACTION_DELETE, item.getStatusCode(), null, null, "关联执行后转为项目任务"); } + // 个人事项转为项目根任务后,项目根任务均值已变,需下推一次项目进度重算(与任务侧增删改入口口径一致) + projectService.recalcProgress(projectId); } private ProjectTaskDO buildProjectTaskFromItem(PersonalItemDO item, Long projectId, Long executionId) { diff --git a/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/project/ProjectServiceImpl.java b/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/project/ProjectServiceImpl.java index b1a7e34..7662797 100644 --- a/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/project/ProjectServiceImpl.java +++ b/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/project/ProjectServiceImpl.java @@ -8,6 +8,7 @@ import com.njcn.rdms.framework.common.util.object.BeanUtils; import com.njcn.rdms.framework.security.core.util.SecurityFrameworkUtils; import com.njcn.rdms.module.project.constant.ObjectActivityConstants; import com.njcn.rdms.module.project.constant.ObjectRoleConstants; +import com.njcn.rdms.module.project.constant.ProductObjectConstants; import com.njcn.rdms.module.project.constant.ProjectObjectConstants; import com.njcn.rdms.module.project.controller.admin.project.vo.member.ProjectMemberSaveReqVO; import com.njcn.rdms.module.project.controller.admin.project.vo.project.ProjectContextNavRespVO; @@ -374,6 +375,9 @@ class ProjectServiceImpl implements ProjectService { } @Override + // 对象域鉴权:是该产品的显式成员即可拿"实现项目"派发下拉数据(memberOnly,不查权限码、不依赖 DB 权限配置) + @com.njcn.rdms.module.project.framework.security.annotation.CheckObjectPermission(objectType = ProductObjectConstants.OBJECT_TYPE, + objectId = "#productId", memberOnly = true) public List getProjectListByProductId(Long productId) { validateProductUsable(productId); return projectMapper.selectListByProductId(productId).stream()