feat(project): 个人事项转项目任务后触发进度重算及对象域权限控制

- 个人事项转为项目根任务后调用项目进度重算功能
- 为产品项目列表查询接口增加对象域鉴权注解
- 引入ProjectService依赖注入以支持进度重算调用
- 导入ProductObjectConstants常量用于对象域权限控制
This commit is contained in:
2026-06-04 20:21:30 +08:00
parent f13286aaff
commit 622b30733e
2 changed files with 9 additions and 0 deletions

View File

@@ -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) {

View File

@@ -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<ProjectRespVO> getProjectListByProductId(Long productId) {
validateProductUsable(productId);
return projectMapper.selectListByProductId(productId).stream()