接口类合并冲突解决

This commit is contained in:
wangna0328 2025-08-06 20:26:47 +08:00
parent 3ec94f8487
commit e1259d904a
7 changed files with 19 additions and 720 deletions

View File

@ -1,45 +0,0 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wangna
* @date 2025/08/05
* @Description: 项目人员查询请求VO
*/
@Data
@ApiModel(value="ProjectMemberListReq对象", description="项目人员查询请求")
public class ProjectMemberListReq {
@ApiModelProperty("项目ID")
private String projectId;
@ApiModelProperty("机组ID")
private String turbineId;
@ApiModelProperty("任务组ID")
private String taskGroupId;
@ApiModelProperty("任务ID")
private String taskId;
@ApiModelProperty("用户ID")
private String userId;
@ApiModelProperty("角色类型")
private String roleType;
@ApiModelProperty("岗位代码")
private String jobCode;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("用户姓名(模糊查询)")
private String userName;
@ApiModelProperty("用户账号(模糊查询)")
private String userAccount;
}

View File

@ -1,62 +0,0 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
/**
* @author wangna
* @date 2025/08/05
* @Description: 项目人员请求VO
*/
@Data
@ApiModel(value="ProjectMemberReq对象", description="项目人员请求")
public class ProjectMemberReq {
@ApiModelProperty("关联ID更新时必填")
private String memberId;
@NotBlank(message = "项目ID不能为空")
@ApiModelProperty("项目ID")
private String projectId;
@ApiModelProperty("机组ID可选")
private String turbineId;
@ApiModelProperty("任务组ID可选")
private String taskGroupId;
@ApiModelProperty("任务ID可选")
private String taskId;
@NotBlank(message = "用户ID不能为空")
@ApiModelProperty("用户ID")
private String userId;
@NotBlank(message = "角色类型不能为空")
@ApiModelProperty("角色类型")
private String roleType;
@ApiModelProperty("岗位代码")
private String jobCode;
@ApiModelProperty("岗位描述")
private String jobDesc;
@NotNull(message = "加入时间不能为空")
@ApiModelProperty("加入时间")
private LocalDate joinDate;
@ApiModelProperty("离开时间")
private LocalDate leaveDate;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -2,7 +2,6 @@ package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.ProjectMemberEntity; import com.dite.znpt.domain.entity.ProjectMemberEntity;
import com.dite.znpt.domain.vo.ProjectMemberListReq;
import com.dite.znpt.domain.vo.ProjectMemberResp; import com.dite.znpt.domain.vo.ProjectMemberResp;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -17,38 +16,8 @@ import java.util.List;
@Mapper @Mapper
public interface ProjectMemberMapper extends BaseMapper<ProjectMemberEntity> { public interface ProjectMemberMapper extends BaseMapper<ProjectMemberEntity> {
/**
* 根据条件查询项目人员列表
*/
List<ProjectMemberResp> queryBySelective(ProjectMemberListReq req);
/** /**
* 根据项目ID查询项目人员列表 * 根据项目ID查询项目人员列表
*/ */
List<ProjectMemberResp> queryByProjectId(@Param("projectId") String projectId); List<ProjectMemberResp> queryByProjectId(@Param("projectId") String projectId);
/**
* 根据机组ID查询机组人员列表
*/
List<ProjectMemberResp> queryByTurbineId(@Param("turbineId") String turbineId);
/**
* 根据任务组ID查询任务组人员列表
*/
List<ProjectMemberResp> queryByTaskGroupId(@Param("taskGroupId") String taskGroupId);
/**
* 根据任务ID查询任务人员列表
*/
List<ProjectMemberResp> queryByTaskId(@Param("taskId") String taskId);
/**
* 根据用户ID查询用户参与的项目列表
*/
List<ProjectMemberResp> queryByUserId(@Param("userId") String userId);
/**
* 根据项目ID和角色类型查询人员列表
*/
List<ProjectMemberResp> queryByProjectIdAndRoleType(@Param("projectId") String projectId, @Param("roleType") String roleType);
} }

View File

@ -14,80 +14,10 @@ import java.util.List;
public interface ProjectMemberService extends IService<ProjectMemberEntity> { public interface ProjectMemberService extends IService<ProjectMemberEntity> {
/** /**
* 查询项目人员列表 * 根据项目ID查询项目人员列表看板功能需要
*/
List<ProjectMemberResp> selectList(ProjectMemberListReq req);
/**
* 根据项目ID查询项目人员列表
*/ */
List<ProjectMemberResp> selectByProjectId(String projectId); List<ProjectMemberResp> selectByProjectId(String projectId);
/**
* 根据机组ID查询机组人员列表
*/
List<ProjectMemberResp> selectByTurbineId(String turbineId);
/**
* 根据任务组ID查询任务组人员列表
*/
List<ProjectMemberResp> selectByTaskGroupId(String taskGroupId);
/**
* 根据任务ID查询任务人员列表
*/
List<ProjectMemberResp> selectByTaskId(String taskId);
/**
* 根据用户ID查询用户参与的项目列表
*/
List<ProjectMemberResp> selectByUserId(String userId);
/**
* 根据项目ID和角色类型查询人员列表
*/
List<ProjectMemberResp> selectByProjectIdAndRoleType(String projectId, String roleType);
/**
* 新增项目人员
*/
void saveData(ProjectMemberReq req);
/**
* 更新项目人员
*/
void updateData(ProjectMemberReq req);
/**
* 删除项目人员
*/
void deleteById(String memberId);
/**
* 批量添加项目人员
*/
void batchAddMembers(List<ProjectMemberReq> reqList);
/**
* 根据项目ID删除所有项目人员
*/
void deleteByProjectId(String projectId);
/**
* 根据机组ID删除所有机组人员
*/
void deleteByTurbineId(String turbineId);
/**
* 根据任务组ID删除所有任务组人员
*/
void deleteByTaskGroupId(String taskGroupId);
/**
* 根据任务ID删除所有任务人员
*/
void deleteByTaskId(String taskId);
// ========================== 项目看板相关方法 ========================== // ========================== 项目看板相关方法 ==========================
/** /**

View File

@ -6,18 +6,17 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message; import com.dite.znpt.constant.Message;
import com.dite.znpt.domain.entity.*; import com.dite.znpt.domain.entity.*;
import com.dite.znpt.domain.vo.*; import com.dite.znpt.domain.vo.ProjectDetailResp;
import com.dite.znpt.enums.ProjectJobCodeEnum; import com.dite.znpt.domain.vo.ProjectKanbanDataResp;
import com.dite.znpt.enums.ProjectRoleTypeEnum; import com.dite.znpt.domain.vo.ProjectKanbanStatsResp;
import com.dite.znpt.domain.vo.ProjectMemberResp;
import com.dite.znpt.enums.ProjectStatusEnum; import com.dite.znpt.enums.ProjectStatusEnum;
import com.dite.znpt.enums.ProjectTaskStateEnum; import com.dite.znpt.enums.ProjectTaskStateEnum;
import com.dite.znpt.exception.ServiceException; import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.ProjectMemberMapper; import com.dite.znpt.mapper.ProjectMemberMapper;
import com.dite.znpt.service.*; import com.dite.znpt.service.*;
import com.dite.znpt.util.PageUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
@ -43,14 +42,6 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
private final ProjectBudgetInfoService projectBudgetInfoService; private final ProjectBudgetInfoService projectBudgetInfoService;
private final ProjectDailyReportService projectDailyReportService; private final ProjectDailyReportService projectDailyReportService;
@Override
public List<ProjectMemberResp> selectList(ProjectMemberListReq req) {
PageUtil.startPage();
List<ProjectMemberResp> list = this.baseMapper.queryBySelective(req);
enrichMemberInfo(list);
return list;
}
@Override @Override
public List<ProjectMemberResp> selectByProjectId(String projectId) { public List<ProjectMemberResp> selectByProjectId(String projectId) {
List<ProjectMemberResp> list = this.baseMapper.queryByProjectId(projectId); List<ProjectMemberResp> list = this.baseMapper.queryByProjectId(projectId);
@ -58,139 +49,8 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
return list; return list;
} }
@Override
public List<ProjectMemberResp> selectByTurbineId(String turbineId) {
List<ProjectMemberResp> list = this.baseMapper.queryByTurbineId(turbineId);
enrichMemberInfo(list);
return list;
}
@Override
public List<ProjectMemberResp> selectByTaskGroupId(String taskGroupId) {
List<ProjectMemberResp> list = this.baseMapper.queryByTaskGroupId(taskGroupId);
enrichMemberInfo(list);
return list;
}
@Override
public List<ProjectMemberResp> selectByTaskId(String taskId) {
List<ProjectMemberResp> list = this.baseMapper.queryByTaskId(taskId);
enrichMemberInfo(list);
return list;
}
@Override
public List<ProjectMemberResp> selectByUserId(String userId) {
List<ProjectMemberResp> list = this.baseMapper.queryByUserId(userId);
enrichMemberInfo(list);
return list;
}
@Override
public List<ProjectMemberResp> selectByProjectIdAndRoleType(String projectId, String roleType) {
List<ProjectMemberResp> list = this.baseMapper.queryByProjectIdAndRoleType(projectId, roleType);
enrichMemberInfo(list);
return list;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveData(ProjectMemberReq req) {
// 验证用户是否存在
UserEntity user = userService.getById(req.getUserId());
if (user == null) {
throw new ServiceException(Message.USER_ID_NOT_EXIST_OR_ILLEGAL);
}
// 检查是否已存在相同的关联
boolean exists = lambdaQuery()
.eq(ProjectMemberEntity::getProjectId, req.getProjectId())
.eq(ProjectMemberEntity::getUserId, req.getUserId())
.eq(StrUtil.isNotEmpty(req.getTurbineId()), ProjectMemberEntity::getTurbineId, req.getTurbineId())
.eq(StrUtil.isNotEmpty(req.getTaskGroupId()), ProjectMemberEntity::getTaskGroupId, req.getTaskGroupId())
.eq(StrUtil.isNotEmpty(req.getTaskId()), ProjectMemberEntity::getTaskId, req.getTaskId())
.eq(ProjectMemberEntity::getRoleType, req.getRoleType())
.exists();
if (exists) {
throw new ServiceException("该用户在此项目中已存在相同角色");
}
ProjectMemberEntity entity = BeanUtil.copyProperties(req, ProjectMemberEntity.class);
if (StrUtil.isEmpty(entity.getStatus())) {
entity.setStatus("ACTIVE");
}
save(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateData(ProjectMemberReq req) {
if (StrUtil.isEmpty(req.getMemberId())) {
throw new ServiceException("关联ID不能为空");
}
ProjectMemberEntity entity = getById(req.getMemberId());
if (entity == null) {
throw new ServiceException(Message.PROJECT_ID_IS_NOT_EXIST);
}
BeanUtil.copyProperties(req, entity);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteById(String memberId) {
removeById(memberId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchAddMembers(List<ProjectMemberReq> reqList) {
if (CollUtil.isEmpty(reqList)) {
return;
}
for (ProjectMemberReq req : reqList) {
saveData(req);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByProjectId(String projectId) {
lambdaUpdate()
.eq(ProjectMemberEntity::getProjectId, projectId)
.remove();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByTurbineId(String turbineId) {
lambdaUpdate()
.eq(ProjectMemberEntity::getTurbineId, turbineId)
.remove();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByTaskGroupId(String taskGroupId) {
lambdaUpdate()
.eq(ProjectMemberEntity::getTaskGroupId, taskGroupId)
.remove();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByTaskId(String taskId) {
lambdaUpdate()
.eq(ProjectMemberEntity::getTaskId, taskId)
.remove();
}
/** /**
* 丰富成员信息用户信息角色描述岗位描述 * 丰富成员信息
*/ */
private void enrichMemberInfo(List<ProjectMemberResp> list) { private void enrichMemberInfo(List<ProjectMemberResp> list) {
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
@ -200,31 +60,26 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
// 获取所有用户ID // 获取所有用户ID
List<String> userIds = list.stream() List<String> userIds = list.stream()
.map(ProjectMemberResp::getUserId) .map(ProjectMemberResp::getUserId)
.filter(StrUtil::isNotBlank)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
// 查询用户信息 if (CollUtil.isEmpty(userIds)) {
Map<String, UserEntity> userMap = userService.listByIds(userIds) return;
.stream() }
// 批量查询用户信息
List<UserEntity> users = userService.listByIds(userIds);
Map<String, UserEntity> userMap = users.stream()
.collect(Collectors.toMap(UserEntity::getUserId, Function.identity())); .collect(Collectors.toMap(UserEntity::getUserId, Function.identity()));
// 填充用户信息和描述
list.forEach(member -> {
// 填充用户信息 // 填充用户信息
list.forEach(member -> {
UserEntity user = userMap.get(member.getUserId()); UserEntity user = userMap.get(member.getUserId());
if (user != null) { if (user != null) {
member.setUserName(user.getName()); member.setUserName(user.getName());
member.setUserAccount(user.getAccount());
member.setUserAvatar(user.getAvatar()); member.setUserAvatar(user.getAvatar());
} }
// 填充角色类型描述
member.setRoleTypeDesc(ProjectRoleTypeEnum.getDescByCode(member.getRoleType()));
// 填充岗位代码描述
if (StrUtil.isNotEmpty(member.getJobCode())) {
member.setJobCodeDesc(ProjectJobCodeEnum.getDescByCode(member.getJobCode()));
}
}); });
} }

View File

@ -28,72 +28,6 @@
<result column="remark" property="remark" jdbcType="VARCHAR"/> <result column="remark" property="remark" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<!-- 根据条件查询项目人员列表 -->
<select id="queryBySelective" resultMap="BaseResultMap">
SELECT
pm.member_id,
pm.project_id,
p.project_name,
pm.turbine_id,
t.turbine_name,
pm.task_group_id,
ptg.group_name as task_group_name,
pm.task_id,
pt.task_name,
pm.user_id,
u.name as user_name,
u.account as user_account,
u.avatar as user_avatar,
pm.role_type,
pm.role_type as role_type_desc,
pm.job_code,
pm.job_code as job_code_desc,
pm.job_desc,
pm.join_date,
pm.leave_date,
pm.status,
pm.remark
FROM project_member pm
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
<where>
<if test="projectId != null and projectId != ''">
AND pm.project_id = #{projectId}
</if>
<if test="turbineId != null and turbineId != ''">
AND pm.turbine_id = #{turbineId}
</if>
<if test="taskGroupId != null and taskGroupId != ''">
AND pm.task_group_id = #{taskGroupId}
</if>
<if test="taskId != null and taskId != ''">
AND pm.task_id = #{taskId}
</if>
<if test="userId != null and userId != ''">
AND pm.user_id = #{userId}
</if>
<if test="roleType != null and roleType != ''">
AND pm.role_type = #{roleType}
</if>
<if test="jobCode != null and jobCode != ''">
AND pm.job_code = #{jobCode}
</if>
<if test="status != null and status != ''">
AND pm.status = #{status}
</if>
<if test="userName != null and userName != ''">
AND u.name LIKE CONCAT('%', #{userName}, '%')
</if>
<if test="userAccount != null and userAccount != ''">
AND u.account LIKE CONCAT('%', #{userAccount}, '%')
</if>
</where>
ORDER BY pm.create_time DESC
</select>
<!-- 根据项目ID查询项目人员列表 --> <!-- 根据项目ID查询项目人员列表 -->
<select id="queryByProjectId" resultMap="BaseResultMap"> <select id="queryByProjectId" resultMap="BaseResultMap">
SELECT SELECT
@ -130,185 +64,4 @@
ORDER BY pm.create_time DESC ORDER BY pm.create_time DESC
</select> </select>
<!-- 根据机组ID查询机组人员列表 -->
<select id="queryByTurbineId" resultMap="BaseResultMap">
SELECT
pm.member_id,
pm.project_id,
p.project_name,
pm.turbine_id,
t.turbine_name,
pm.task_group_id,
ptg.group_name as task_group_name,
pm.task_id,
pt.task_name,
pm.user_id,
u.name as user_name,
u.account as user_account,
u.avatar as user_avatar,
pm.role_type,
pm.role_type as role_type_desc,
pm.job_code,
pm.job_code as job_code_desc,
pm.job_desc,
pm.join_date,
pm.leave_date,
pm.status,
pm.remark
FROM project_member pm
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
WHERE pm.turbine_id = #{turbineId}
AND pm.status = 'ACTIVE'
ORDER BY pm.create_time DESC
</select>
<!-- 根据任务组ID查询任务组人员列表 -->
<select id="queryByTaskGroupId" resultMap="BaseResultMap">
SELECT
pm.member_id,
pm.project_id,
p.project_name,
pm.turbine_id,
t.turbine_name,
pm.task_group_id,
ptg.group_name as task_group_name,
pm.task_id,
pt.task_name,
pm.user_id,
u.name as user_name,
u.account as user_account,
u.avatar as user_avatar,
pm.role_type,
pm.role_type as role_type_desc,
pm.job_code,
pm.job_code as job_code_desc,
pm.job_desc,
pm.join_date,
pm.leave_date,
pm.status,
pm.remark
FROM project_member pm
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
WHERE pm.task_group_id = #{taskGroupId}
AND pm.status = 'ACTIVE'
ORDER BY pm.create_time DESC
</select>
<!-- 根据任务ID查询任务人员列表 -->
<select id="queryByTaskId" resultMap="BaseResultMap">
SELECT
pm.member_id,
pm.project_id,
p.project_name,
pm.turbine_id,
t.turbine_name,
pm.task_group_id,
ptg.group_name as task_group_name,
pm.task_id,
pt.task_name,
pm.user_id,
u.name as user_name,
u.account as user_account,
u.avatar as user_avatar,
pm.role_type,
pm.role_type as role_type_desc,
pm.job_code,
pm.job_code as job_code_desc,
pm.job_desc,
pm.join_date,
pm.leave_date,
pm.status,
pm.remark
FROM project_member pm
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
WHERE pm.task_id = #{taskId}
AND pm.status = 'ACTIVE'
ORDER BY pm.create_time DESC
</select>
<!-- 根据用户ID查询用户参与的项目列表 -->
<select id="queryByUserId" resultMap="BaseResultMap">
SELECT
pm.member_id,
pm.project_id,
p.project_name,
pm.turbine_id,
t.turbine_name,
pm.task_group_id,
ptg.group_name as task_group_name,
pm.task_id,
pt.task_name,
pm.user_id,
u.name as user_name,
u.account as user_account,
u.avatar as user_avatar,
pm.role_type,
pm.role_type as role_type_desc,
pm.job_code,
pm.job_code as job_code_desc,
pm.job_desc,
pm.join_date,
pm.leave_date,
pm.status,
pm.remark
FROM project_member pm
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
WHERE pm.user_id = #{userId}
AND pm.status = 'ACTIVE'
ORDER BY pm.create_time DESC
</select>
<!-- 根据项目ID和角色类型查询人员列表 -->
<select id="queryByProjectIdAndRoleType" resultMap="BaseResultMap">
SELECT
pm.member_id,
pm.project_id,
p.project_name,
pm.turbine_id,
t.turbine_name,
pm.task_group_id,
ptg.group_name as task_group_name,
pm.task_id,
pt.task_name,
pm.user_id,
u.name as user_name,
u.account as user_account,
u.avatar as user_avatar,
pm.role_type,
pm.role_type as role_type_desc,
pm.job_code,
pm.job_code as job_code_desc,
pm.job_desc,
pm.join_date,
pm.leave_date,
pm.status,
pm.remark
FROM project_member pm
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
WHERE pm.project_id = #{projectId}
AND pm.role_type = #{roleType}
AND pm.status = 'ACTIVE'
ORDER BY pm.create_time DESC
</select>
</mapper> </mapper>

View File

@ -1,18 +1,16 @@
package com.dite.znpt.web.controller; package com.dite.znpt.web.controller;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result; import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.*; import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.ProjectKanbanStatsResp;
import com.dite.znpt.domain.vo.ProjectKanbanDataResp;
import com.dite.znpt.domain.vo.ProjectDetailResp;
import com.dite.znpt.service.ProjectMemberService; import com.dite.znpt.service.ProjectMemberService;
import com.dite.znpt.util.PageUtil;
import com.dite.znpt.util.ValidationGroup;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* @author wangna * @author wangna
@ -28,105 +26,6 @@ public class ProjectMemberController {
@Resource @Resource
private ProjectMemberService projectMemberService; private ProjectMemberService projectMemberService;
@ApiOperation(value = "查询项目人员列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<ProjectMemberResp> list(ProjectMemberListReq req) {
PageUtil.startPage();
return PageResult.ok(projectMemberService.selectList(req));
}
@ApiOperation(value = "根据项目ID查询项目人员", httpMethod = "GET")
@GetMapping("/project/{projectId}")
public Result<List<ProjectMemberResp>> getByProjectId(@PathVariable String projectId) {
return Result.ok(projectMemberService.selectByProjectId(projectId));
}
@ApiOperation(value = "根据机组ID查询机组人员", httpMethod = "GET")
@GetMapping("/turbine/{turbineId}")
public Result<List<ProjectMemberResp>> getByTurbineId(@PathVariable String turbineId) {
return Result.ok(projectMemberService.selectByTurbineId(turbineId));
}
@ApiOperation(value = "根据任务组ID查询任务组人员", httpMethod = "GET")
@GetMapping("/task-group/{taskGroupId}")
public Result<List<ProjectMemberResp>> getByTaskGroupId(@PathVariable String taskGroupId) {
return Result.ok(projectMemberService.selectByTaskGroupId(taskGroupId));
}
@ApiOperation(value = "根据任务ID查询任务人员", httpMethod = "GET")
@GetMapping("/task/{taskId}")
public Result<List<ProjectMemberResp>> getByTaskId(@PathVariable String taskId) {
return Result.ok(projectMemberService.selectByTaskId(taskId));
}
@ApiOperation(value = "根据用户ID查询用户参与的项目", httpMethod = "GET")
@GetMapping("/user/{userId}")
public Result<List<ProjectMemberResp>> getByUserId(@PathVariable String userId) {
return Result.ok(projectMemberService.selectByUserId(userId));
}
@ApiOperation(value = "根据项目ID和角色类型查询人员", httpMethod = "GET")
@GetMapping("/project/{projectId}/role/{roleType}")
public Result<List<ProjectMemberResp>> getByProjectIdAndRoleType(@PathVariable String projectId, @PathVariable String roleType) {
return Result.ok(projectMemberService.selectByProjectIdAndRoleType(projectId, roleType));
}
@ApiOperation(value = "新增项目人员", httpMethod = "POST")
@PostMapping
public Result<?> add(@Validated(ValidationGroup.Insert.class) @RequestBody ProjectMemberReq req) {
projectMemberService.saveData(req);
return Result.ok();
}
@ApiOperation(value = "修改项目人员", httpMethod = "PUT")
@PutMapping
public Result<?> edit(@Validated(ValidationGroup.Update.class) @RequestBody ProjectMemberReq req) {
projectMemberService.updateData(req);
return Result.ok();
}
@ApiOperation(value = "删除项目人员", httpMethod = "DELETE")
@DeleteMapping("/{memberId}")
public Result<?> remove(@PathVariable String memberId) {
projectMemberService.deleteById(memberId);
return Result.ok();
}
@ApiOperation(value = "批量添加项目人员", httpMethod = "POST")
@PostMapping("/batch")
public Result<?> batchAdd(@RequestBody List<ProjectMemberReq> reqList) {
projectMemberService.batchAddMembers(reqList);
return Result.ok();
}
@ApiOperation(value = "根据项目ID删除所有项目人员", httpMethod = "DELETE")
@DeleteMapping("/project/{projectId}")
public Result<?> removeByProjectId(@PathVariable String projectId) {
projectMemberService.deleteByProjectId(projectId);
return Result.ok();
}
@ApiOperation(value = "根据机组ID删除所有机组人员", httpMethod = "DELETE")
@DeleteMapping("/turbine/{turbineId}")
public Result<?> removeByTurbineId(@PathVariable String turbineId) {
projectMemberService.deleteByTurbineId(turbineId);
return Result.ok();
}
@ApiOperation(value = "根据任务组ID删除所有任务组人员", httpMethod = "DELETE")
@DeleteMapping("/task-group/{taskGroupId}")
public Result<?> removeByTaskGroupId(@PathVariable String taskGroupId) {
projectMemberService.deleteByTaskGroupId(taskGroupId);
return Result.ok();
}
@ApiOperation(value = "根据任务ID删除所有任务人员", httpMethod = "DELETE")
@DeleteMapping("/task/{taskId}")
public Result<?> removeByTaskId(@PathVariable String taskId) {
projectMemberService.deleteByTaskId(taskId);
return Result.ok();
}
// ========================== 项目看板相关接口 ========================== // ========================== 项目看板相关接口 ==========================
@ApiOperation(value = "获取项目看板统计数据", httpMethod = "GET") @ApiOperation(value = "获取项目看板统计数据", httpMethod = "GET")