用户、角色、菜单功能设计和结构设计

This commit is contained in:
gaoxiong 2025-05-16 00:07:59 +08:00
parent 2f24dc0b25
commit eaeb0373b6
30 changed files with 667 additions and 390 deletions

View File

@ -3,7 +3,7 @@ package com.dite.znpt.context;
//import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.dite.znpt.domain.vo.PersonResp;
import com.dite.znpt.domain.vo.UserResp;
import com.dite.znpt.service.RedisService;
/**
@ -25,7 +25,7 @@ public class UserContext {
* @Param []
* @Return com.gaea.common.vo.common.UserInfo
*/
public static PersonResp getUserInfo() {
public static UserResp getUserInfo() {
// try {
// String token = StpUtil.getTokenValue();
// if (!StringUtils.isEmpty(token)) {
@ -41,9 +41,9 @@ public class UserContext {
// userInfo.setId(Constants.SYSTEM_USER);
// return userInfo;
// }
PersonResp resp = new PersonResp();
resp.setRoleType("Builder");
//TODO
UserResp resp = new UserResp();
// resp.setRoleType("Builder");
return resp;
}
@ -55,6 +55,8 @@ public class UserContext {
* @date 2025/04/25 11:23
**/
public static String getRoleCode() {
return getUserInfo().getRoleType();
//TODO
// return getUserInfo().getRoleType();
return null;
}
}

View File

@ -2,13 +2,10 @@ package com.dite.znpt.domain.dto;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.entity.OutWorkDefectEntity;
import com.dite.znpt.domain.entity.job.DefectDTO;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;

View File

@ -0,0 +1,72 @@
package com.dite.znpt.domain.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/5/15 23:33
* @Description:
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("menu")
@ApiModel(value="MenuEntity对象", description="菜单信息表")
public class MenuEntity extends AuditableEntity implements Serializable {
@Serial
private static final long serialVersionUID = -6913953673120999054L;
@ExcelProperty("菜单id")
@ApiModelProperty("菜单id")
@TableId(value = "menu_id", type = IdType.ASSIGN_UUID)
private String menuId;
@ExcelProperty("菜单名称")
@ApiModelProperty("菜单名称")
@TableField("menu_name")
private String menuName;
@ExcelProperty("父菜单ID")
@ApiModelProperty("父菜单ID")
@TableField("parent_id")
private String parentId;
@ExcelProperty("order_num")
@ApiModelProperty("显示顺序")
@TableField("order_num")
private Integer orderNum;
@ExcelProperty("请求地址")
@ApiModelProperty("请求地址")
@TableField("url")
private String url;
@ExcelProperty("菜单类型M目录 C菜单 F按钮")
@ApiModelProperty("菜单类型M目录 C菜单 F按钮")
@TableField("menu_type")
private String menuType;
@ExcelProperty("菜单状态0显示 1隐藏")
@ApiModelProperty("菜单状态0显示 1隐藏")
@TableField("visible")
private String visible;
@ExcelProperty("权限标识")
@ApiModelProperty("权限标识")
@TableField("perms")
private String perms;
}

View File

@ -1,51 +0,0 @@
package com.dite.znpt.domain.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("person")
@ApiModel(value="PersonEntity对象", description="人员信息表")
public class PersonEntity extends AuditableEntity implements Serializable {
private static final long serialVersionUID = -62273861742734411L;
@ExcelProperty("用户名")
@ApiModelProperty("用户名")
@TableId(value = "person_id", type = IdType.ASSIGN_UUID)
private String personId;
@ExcelProperty("姓名")
@ApiModelProperty("姓名")
@TableField("name")
private String name;
@ExcelProperty("角色类型字典role_type")
@ApiModelProperty("角色类型字典role_type")
@TableField("role_type")
private String roleType;
@ExcelProperty("密码")
@ApiModelProperty("密码")
@TableField("password")
private String password;
@ExcelProperty("1正常0禁用")
@ApiModelProperty("1正常0禁用")
@TableField("status")
private Integer status;
}

View File

@ -82,13 +82,9 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@TableField("turbine_model")
private String turbineModel;
@ApiModelProperty("施工人员")
@TableField("construction_person")
private String constructionPerson;
@ApiModelProperty("施工人员id")
@TableField("construction_person_id")
private String constructionPersonId;
@TableField("constructor_ids")
private String constructorIds;
@ApiModelProperty("安全员id")
@TableField("auditor_id")

View File

@ -0,0 +1,56 @@
package com.dite.znpt.domain.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/5/15 23:33
* @Description:
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("role")
@ApiModel(value="RoleEntity对象", description="角色信息表")
public class RoleEntity extends AuditableEntity implements Serializable {
@Serial
private static final long serialVersionUID = -561827154209083475L;
@ExcelProperty("角色id")
@ApiModelProperty("角色id")
@TableId(value = "role_id", type = IdType.ASSIGN_UUID)
private String roleId;
@ExcelProperty("角色名称")
@ApiModelProperty("角色名称")
@TableField("role_name")
private String roleName;
@ExcelProperty("角色权限字符")
@ApiModelProperty("角色权限字符")
@TableField("role_key")
private String roleKey;
@ExcelProperty("1正常0禁用")
@ApiModelProperty("1正常0禁用")
@TableField("status")
private Integer status;
@ExcelProperty("删除标志0代表存在 1代表删除")
@ApiModelProperty("删除标志0代表存在 1代表删除")
@TableField("del_flag")
private Integer delFlag;
}

View File

@ -0,0 +1,34 @@
package com.dite.znpt.domain.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/5/15 23:33
* @Description:
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("role_menu")
@ApiModel(value="RoleMenuEntity对象", description="角色和菜单关联表")
public class RoleMenuEntity extends AuditableEntity implements Serializable {
@ApiModelProperty("角色id")
@TableField("role_id")
private String roleId;
@ApiModelProperty("菜单id")
@TableField("menu_id")
private String menuId;
}

View File

@ -0,0 +1,97 @@
package com.dite.znpt.domain.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user")
@ApiModel(value="UserEntity对象", description="用户信息表")
public class UserEntity extends AuditableEntity implements Serializable {
private static final long serialVersionUID = -62273861742734411L;
@ExcelProperty("用户名")
@ApiModelProperty("用户名")
@TableId(value = "user_id", type = IdType.ASSIGN_UUID)
private String userId;
@ExcelProperty("账号")
@ApiModelProperty("账号")
@TableField("account")
private String account;
@ExcelProperty("头像地址")
@ApiModelProperty("头像地址")
@TableField("avatar")
private String avatar;
@ExcelProperty("姓名")
@ApiModelProperty("姓名")
@TableField("name")
private String name;
@ExcelProperty("性别")
@ApiModelProperty("性别")
@TableField("gender")
private String gender;
@ExcelProperty("手机号码")
@ApiModelProperty("手机号码")
@TableField("mobile")
private String mobile;
@ExcelProperty("邮箱")
@ApiModelProperty("邮箱")
@TableField("email")
private String email;
@ExcelProperty("密码")
@ApiModelProperty("密码")
@TableField("password")
private String password;
@ExcelProperty("加密盐")
@ApiModelProperty("加密盐")
@TableField("salt")
private String salt;
@ExcelProperty("1正常0禁用")
@ApiModelProperty("1正常0禁用")
@TableField("status")
private Integer status;
@ExcelProperty("最后登录ip")
@ApiModelProperty("最后登录ip")
@TableField("last_login_ip")
private String lastLoginIp;
@ExcelProperty("最后登录时间")
@ApiModelProperty("最后登录时间")
@TableField("last_login_time")
private LocalDateTime lastLoginTime;
@ExcelProperty("密码修改时间")
@ApiModelProperty("密码修改时间")
@TableField("password_update_time")
private LocalDateTime passwordUpdateTime;
@ExcelProperty("删除标志0代表存在 1代表删除")
@ApiModelProperty("删除标志0代表存在 1代表删除")
@TableField("del_flag")
private String delFlag;
}

View File

@ -0,0 +1,35 @@
package com.dite.znpt.domain.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/5/15 23:33
* @Description:
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user_role")
@ApiModel(value="UserRoleEntity对象", description="用户和角色信息表")
public class UserRoleEntity extends AuditableEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1078827043026958140L;
@ApiModelProperty("用户id")
@TableField("user_id")
private String userId;
@ApiModelProperty("角色id")
@TableField("role_id")
private String roleId;
}

View File

@ -76,10 +76,10 @@ public class ProjectListResp implements Serializable {
private String projectManagerName;
@ApiModelProperty("施工人员id")
private String constructionPersonnelId;
private String constructorIds;
@ApiModelProperty("施工人员")
private String constructionPersonnelName;
private String constructorName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")

View File

@ -62,10 +62,7 @@ public class ProjectReq implements Serializable {
private String turbineModel;
@ApiModelProperty("施工人员id")
private String constructionPersonId;
@ApiModelProperty("施工人员")
private String constructionPersonName;
private String constructorIds;
@ApiModelProperty("安全员id")
private String auditorId;

View File

@ -30,6 +30,9 @@ public class ProjectResp extends ProjectReq implements Serializable {
@ApiModelProperty("项目id")
private String projectId;
@ApiModelProperty("施工人员")
private String constructorName;
@ApiModelProperty("安全员")
private String auditorName;

View File

@ -9,31 +9,28 @@ import lombok.Data;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息请求实体
* @Description: 用户信息请求实体
*/
@Data
@ApiModel("人员信息列表请求实体")
public class PersonListReq implements Serializable {
@ApiModel("用户信息列表请求实体")
public class UserListReq implements Serializable {
private static final long serialVersionUID = -10363935468256543L;
@ApiModelProperty("查询关键字")
private String keyword;
@ApiModelProperty("人员信息Id")
private String personId;
@ApiModelProperty("账号")
private String account;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("角色类型字典role_type")
private String roleType;
@ApiModelProperty("手机号码")
private String mobile;
@ApiModelProperty("公司id")
private String companyId;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("邮箱")
private String email;
@ApiModelProperty("1正常0禁用")
private Integer status;

View File

@ -0,0 +1,9 @@
package com.dite.znpt.domain.vo;
/**
* @Author: gaoxiong
* @Date: 2025/5/15 23:14
* @Description:
*/
public class UserReq {
}

View File

@ -3,16 +3,16 @@ package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.dite.znpt.domain.entity.PersonEntity;
import com.dite.znpt.domain.entity.UserEntity;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息响应实体
* @Description: 用户信息响应实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("人员信息响应实体")
public class PersonResp extends PersonEntity {
@ApiModel("用户信息响应实体")
public class UserResp extends UserEntity {
}

View File

@ -1,18 +0,0 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.PersonEntity;
import com.dite.znpt.domain.vo.PersonListReq;
import com.dite.znpt.domain.vo.PersonResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息表数据库访问层
*/
public interface PersonnelMapper extends BaseMapper<PersonEntity> {
List<PersonResp> queryBySelective(PersonListReq personnelReq);
}

View File

@ -0,0 +1,18 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.UserEntity;
import com.dite.znpt.domain.vo.UserListReq;
import com.dite.znpt.domain.vo.UserResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 用户信息表数据库访问层
*/
public interface UserMapper extends BaseMapper<UserEntity> {
List<UserResp> queryBySelective(UserListReq req);
}

View File

@ -1,64 +0,0 @@
package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.PersonEntity;
import com.dite.znpt.domain.vo.PersonListReq;
import com.dite.znpt.domain.vo.PersonResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息表服务接口
*/
public interface PersonService extends IService<PersonEntity> {
/**
* 功能描述查询人员信息列表
*
* @param personnelReq 人员信息
* @return {@link List }<{@link PersonEntity }>
* @author huise23
* @date 2025/04/11 23:17
**/
List<PersonResp> selectList(PersonListReq personnelReq);
/**
* 功能描述查询单条人员信息
*
* @param personId 人员信息Id
* @return {@link PersonResp }
* @author huise23
* @date 2025/04/11 23:17
**/
PersonResp selectById(String personId);
/**
* 功能描述新增人员信息
*
* @param personnel 人员信息
* @author huise23
* @date 2025/04/11 23:17
**/
void saveData(PersonEntity personnel);
/**
* 功能描述更新人员信息
*
* @param personnel 人员信息
* @author huise23
* @date 2025/04/11 23:17
**/
void updateData(PersonEntity personnel);
/**
* 功能描述删除人员信息
*
* @param personId 人员信息Id
* @author huise23
* @date 2025/04/11 23:17
**/
void deleteById(String personId);
}

View File

@ -0,0 +1,75 @@
package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.UserEntity;
import com.dite.znpt.domain.vo.UserListReq;
import com.dite.znpt.domain.vo.UserReq;
import com.dite.znpt.domain.vo.UserResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 用户信息表服务接口
*/
public interface UserService extends IService<UserEntity> {
/**
* 功能描述分页查询用户信息列表
*
* @param req 用户信息
* @return {@link List }<{@link UserResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
List<UserResp> page(UserListReq req);
/**
* 功能描述查询用户信息列表
*
* @param req 用户信息
* @return {@link List }<{@link UserResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
List<UserResp> list(UserListReq req);
/**
* 功能描述查询用户信息详情
*
* @param userId 用户Id
* @return {@link UserResp }
* @author huise23
* @date 2025/04/11 23:17
**/
UserResp detail(String userId);
/**
* 功能描述新增用户信息
*
* @param req 用户信息
* @author huise23
* @date 2025/04/11 23:17
**/
void save(UserReq req);
/**
* 功能描述更新用户信息
*
* @param userId 用户id
* @param req 用户信息
* @author huise23
* @date 2025/04/11 23:17
**/
void update(String userId, UserReq req);
/**
* 功能描述删除用户信息
*
* @param userId 用户Id
* @author huise23
* @date 2025/04/11 23:17
**/
void deleteById(String userId);
}

View File

@ -1,99 +0,0 @@
package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.PersonEntity;
import com.dite.znpt.domain.vo.PersonListReq;
import com.dite.znpt.domain.vo.PersonResp;
import com.dite.znpt.service.PersonService;
import com.dite.znpt.mapper.PersonnelMapper;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.util.PageUtil;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 人员信息表服务实现类
*/
@Service
@RequiredArgsConstructor
public class PersonServiceImpl extends ServiceImpl<PersonnelMapper, PersonEntity> implements PersonService {
/**
* 功能描述查询人员信息列表
*
* @param personnelReq 人员信息信息
* @return {@link List }<{@link PersonResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public List<PersonResp> selectList(PersonListReq personnelReq) {
PageUtil.startPage();
List<PersonResp> personnelList= this.baseMapper.queryBySelective(personnelReq);
personnelList.forEach(resp -> {
});
return personnelList;
}
/**
* 功能描述查询单条人员信息
*
* @param personId 人员信息Id
* @return {@link PersonResp }
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public PersonResp selectById(String personId) {
PersonListReq personnelReq = new PersonListReq();
personnelReq.setPersonId(personId);
List<PersonResp> list = selectList(personnelReq);
return list.isEmpty() ? CollUtil.getFirst(list) : new PersonResp();
}
/**
* 功能描述新增人员信息
*
* @param personnel 人员信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void saveData(PersonEntity personnel) {
// todo 校验
save(personnel);
}
/**
* 功能描述更新人员信息
*
* @param personnel 人员信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void updateData(PersonEntity personnel) {
// todo 校验
updateById(personnel);
}
/**
* 功能描述删除人员信息
*
* @param personId 人员信息Id
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void deleteById(String personId) {
// todo 校验
removeById(personId);
}
}

View File

@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message;
import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.PersonEntity;
import com.dite.znpt.domain.entity.UserEntity;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.vo.ProjectListReq;
import com.dite.znpt.domain.vo.ProjectListResp;
@ -13,7 +13,7 @@ import com.dite.znpt.domain.vo.ProjectReq;
import com.dite.znpt.domain.vo.ProjectResp;
import com.dite.znpt.enums.ProjectStatusEnum;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.PersonService;
import com.dite.znpt.service.UserService;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.mapper.ProjectMapper;
import org.springframework.stereotype.Service;
@ -25,7 +25,6 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -39,7 +38,7 @@ import java.util.stream.Collectors;
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity> implements ProjectService {
@Resource
private PersonService personService;
private UserService userService;
/**
* 功能描述查询项目信息列表
*
@ -79,26 +78,29 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
}
ProjectResp resp = Converts.INSTANCE.toProjectResp(entity);
resp.setStatusLabel(ProjectStatusEnum.getDescByCode(resp.getStatus()));
List<String> personIds = new ArrayList<>();
List<String> userIds = new ArrayList<>();
if(StrUtil.isNotEmpty(resp.getAuditorId())){
personIds.add(resp.getAuditorId());
userIds.add(resp.getAuditorId());
}
if(StrUtil.isNotEmpty(resp.getQualityOfficerId())){
personIds.add(resp.getQualityOfficerId());
userIds.add(resp.getQualityOfficerId());
}
if(StrUtil.isNotEmpty(resp.getConstructionTeamLeaderId())){
personIds.add(resp.getConstructionTeamLeaderId());
userIds.add(resp.getConstructionTeamLeaderId());
}
if(StrUtil.isNotEmpty(resp.getProjectManagerId())){
personIds.add(resp.getProjectManagerId());
userIds.add(resp.getProjectManagerId());
}
if(CollUtil.isNotEmpty(personIds)){
Map<String, PersonEntity> personIdMap = personService.listByIds(personIds).stream().collect(Collectors.toMap(k->k.getPersonId(), Function.identity()));
if(CollUtil.isNotEmpty(personIdMap)){
resp.setAuditorName(personIdMap.containsKey(resp.getAuditorId()) ? personIdMap.get(resp.getAuditorId()).getName() : null);
resp.setProjectManagerName(personIdMap.containsKey(resp.getProjectManagerId()) ? personIdMap.get(resp.getProjectManagerId()).getName() : null);
resp.setConstructionTeamLeaderName(personIdMap.containsKey(resp.getConstructionTeamLeaderId()) ? personIdMap.get(resp.getConstructionTeamLeaderId()).getName() : null);
resp.setQualityOfficerName(personIdMap.containsKey(resp.getQualityOfficerId()) ? personIdMap.get(resp.getQualityOfficerId()).getName() : null);
if(StrUtil.isNotEmpty(resp.getConstructorIds())){
userIds.addAll(StrUtil.split(resp.getConstructorIds(), StrUtil.COMMA).stream().collect(Collectors.toList()));
}
if(CollUtil.isNotEmpty(userIds)){
Map<String, UserEntity> userIdMap = userService.listByIds(userIds).stream().collect(Collectors.toMap(k->k.getUserId(), Function.identity()));
if(CollUtil.isNotEmpty(userIdMap)){
resp.setAuditorName(userIdMap.containsKey(resp.getAuditorId()) ? userIdMap.get(resp.getAuditorId()).getName() : null);
resp.setProjectManagerName(userIdMap.containsKey(resp.getProjectManagerId()) ? userIdMap.get(resp.getProjectManagerId()).getName() : null);
resp.setConstructionTeamLeaderName(userIdMap.containsKey(resp.getConstructionTeamLeaderId()) ? userIdMap.get(resp.getConstructionTeamLeaderId()).getName() : null);
resp.setQualityOfficerName(userIdMap.containsKey(resp.getQualityOfficerId()) ? userIdMap.get(resp.getQualityOfficerId()).getName() : null);
}
}
return resp;

View File

@ -0,0 +1,107 @@
package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.UserEntity;
import com.dite.znpt.domain.vo.UserListReq;
import com.dite.znpt.domain.vo.UserReq;
import com.dite.znpt.domain.vo.UserResp;
import com.dite.znpt.service.UserService;
import com.dite.znpt.mapper.UserMapper;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.util.PageUtil;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 用户信息表服务实现类
*/
@Service
@RequiredArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
/**
* 功能描述分页查询用户信息列表
*
* @param req 用户信息
* @return {@link List }<{@link UserResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public List<UserResp> page(UserListReq req) {
return null;
}
/**
* 功能描述查询用户信息列表
*
* @param req 用户信息
* @return {@link List }<{@link UserResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public List<UserResp> list(UserListReq req) {
PageUtil.startPage();
List<UserResp> userRespList= this.baseMapper.queryBySelective(req);
userRespList.forEach(resp -> {
});
return userRespList;
}
/**
* 功能描述查询用户信息详情
*
* @param userId 用户Id
* @return {@link UserResp }
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public UserResp detail(String userId) {
return null;
}
/**
* 功能描述新增用户信息
*
* @param req 用户信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void save(UserReq req) {
}
/**
* 功能描述更新用户信息
*
* @param userId 用户id
* @param req 用户信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void update(String userId, UserReq req) {
}
/**
* 功能描述删除用户信息
*
* @param userId 用户Id
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void deleteById(String userId) {
}
}

View File

@ -63,6 +63,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
* @author cuizhibin
* @date 2023/11/02 13:28
**/
@Override
public List<JobAntiThunderWork> list(JobInfoReq request) {
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
if (!jobInfoList.isEmpty()) {
@ -90,6 +91,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
* @author cuizhibin
* @date 2023/11/06 10:32
**/
@Override
public void submit(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.AntiThunderWork.getValue());
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
@ -122,7 +124,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
@ -138,6 +140,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
* @author cuizhibin
* @date 2023/11/06 10:32
**/
@Override
public void reject(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.AntiThunderWork.getValue());
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
@ -154,7 +157,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}

View File

@ -21,7 +21,6 @@ import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.job.JobService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -145,7 +144,7 @@ public class JobInWorkServiceImpl extends ServiceImpl<JobInWorkMapper, JobInWork
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
@ -177,7 +176,7 @@ public class JobInWorkServiceImpl extends ServiceImpl<JobInWorkMapper, JobInWork
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}

View File

@ -1,9 +1,7 @@
package com.dite.znpt.service.job.impl;
import java.time.LocalDateTime;
import java.util.ArrayList;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Dict;
@ -252,7 +250,7 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOutW
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
@ -284,7 +282,7 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOutW
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}

View File

@ -8,7 +8,6 @@ import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.job.*;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobSummaryWorkReq;
import com.dite.znpt.enums.Enums;
@ -104,7 +103,7 @@ public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper,
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
@ -134,7 +133,7 @@ public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper,
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}

View File

@ -6,10 +6,10 @@
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.ProjectListResp">
SELECT
prj.project_id, prj.project_name, prj.farm_name, prj.status, prj.cover_url, prj.farm_address, prj.client, prj.client_contact, prj.client_phone, prj.inspection_unit,
prj.inspection_contact, prj.inspection_phone, prj.scale, prj.turbine_model, prj.project_manager_id, pm.name AS project_manager_name, prj.construction_person_id, prj.construction_person_name , prj.create_time
prj.project_id, prj.project_name, prj.farm_name, prj.status, prj.cover_url, prj.farm_address, prj.client, prj.client_contact, prj.client_phone, prj.inspection_unit,
prj.inspection_contact, prj.inspection_phone, prj.scale, prj.turbine_model, prj.project_manager_id, pm.name AS project_manager_name, prj.constructor_ids,
GROUP_CONCAT(DISTINCT con.name) AS constructor_name, prj.create_time
FROM project prj
LEFT JOIN person pm ON pm.person_id = prj.project_manager_id
<where>
<if test="projectName != null and projectName != ''">
AND prj.project_name LIKE concat ('%', #{projectName}, '%')
@ -30,6 +30,9 @@
AND prj.create_time BETWEEN #{createDateBegin} AND #{createDateEnd}
</if>
</where>
GROUP BY prj.project_id, prj.project_name, prj.farm_name, prj.status, prj.cover_url, prj.farm_address, prj.client, prj.client_contact, prj.client_phone, prj.inspection_unit,
prj.inspection_contact, prj.inspection_phone, prj.scale, prj.turbine_model, prj.project_manager_id, pm.name, prj.constructor_ids,
prj.create_time
</select>
</mapper>

View File

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.PersonnelMapper">
<mapper namespace="com.dite.znpt.mapper.UserMapper">
<sql id="Base_Column_List">
a.person_id, a.name, a.role_type, a.company_id,
a.user_id, a.name, a.role_type, a.company_id,
a.password, a.status
</sql>
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.PersonResp">
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.UserResp">
select
<include refid="Base_Column_List"/>
from personnel a
from user a
<where>
<if test="keyword != null and keyword != ''">
# and (a.TODO like concat('%', #{keyword,jdbcType=VARCHAR}, '%') or a.TODO like concat('%', #{keyword,jdbcType=VARCHAR}, '%'))
</if>
<if test="personId != null and personId != ''">
and a.person_id like concat ('%', #{personId}, '%')
<if test="userId != null and userId != ''">
and a.user_id like concat ('%', #{user_id}, '%')
</if>
<if test="name != null and name != ''">
and a.name like concat ('%', #{name}, '%')

View File

@ -1,84 +0,0 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Constants;
import com.dite.znpt.domain.vo.PersonListReq;
import com.dite.znpt.domain.vo.PersonResp;
import com.dite.znpt.domain.entity.PersonEntity;
import com.dite.znpt.service.PersonService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
*/
@Api(tags = "人员信息")
@RestController
@RequestMapping("/person")
public class PersonController {
@Resource
private PersonService personService;
@ApiOperation(value = "获取人员信息列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<PersonResp> list(PersonListReq personnelReq) {
return PageResult.ok(personService.selectList(personnelReq));
}
@ApiOperation(value = "根据人员信息Id获取详细信息", httpMethod = "GET")
@GetMapping("/{personId}")
public Result<PersonResp> getInfo(@PathVariable String personId) {
return Result.ok(personService.selectById(personId));
}
@ApiOperation(value = "新增人员信息", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody PersonEntity personnel) {
personService.saveData(personnel);
return Result.ok();
}
@ApiOperation(value = "修改人员信息", httpMethod = "PUT")
@PutMapping
public Result<Object> edit(@RequestBody PersonEntity personnel) {
personService.updateData(personnel);
return Result.ok();
}
@ApiOperation(value = "删除人员信息", httpMethod = "DELETE")
@DeleteMapping("/{personId}")
public Result<Object> remove(@PathVariable String personId) {
personService.deleteById(personId);
return Result.ok();
}
@ApiOperation(value = "导出人员信息", httpMethod = "GET")
@GetMapping("/export")
@ResponseExcel(name = "人员信息")
public List<PersonResp> export(PersonListReq personnelReq) {
return personService.selectList(personnelReq);
}
@ApiOperation(value = "导入人员信息", httpMethod = "POST")
@PostMapping("/import")
public Result<Object> importData(@RequestExcel List<PersonEntity> dataList, BindingResult bindingResult) {
// JSR 303 校验通用校验获取失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
if (errorMessageList != null && !errorMessageList.isEmpty()) {
return Result.error(Constants.SERVICE_EXCEPTION, "导入失败");
}
return Result.okM("导入"+dataList.size()+"条数据");
}
}

View File

@ -0,0 +1,94 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.vo.UserListReq;
import com.dite.znpt.domain.vo.UserReq;
import com.dite.znpt.domain.vo.UserResp;
import com.dite.znpt.domain.entity.UserEntity;
import com.dite.znpt.service.UserService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
*/
@Api(tags = "用户信息")
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@ApiOperation(value = "分页查询用户信息列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<UserResp> page(UserListReq req) {
return PageResult.ok(userService.page(req));
}
@ApiOperation(value = "查询用户信息列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<UserResp> list(UserListReq req) {
return PageResult.ok(userService.list(req));
}
@ApiOperation(value = "根据用户信息Id获取详细信息", httpMethod = "GET")
@GetMapping("/detail/{userId}")
public Result<UserResp> detail(@PathVariable String userId) {
return Result.ok(userService.detail(userId));
}
@ApiOperation(value = "新增用户信息", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody UserReq req) {
userService.save(req);
return Result.ok();
}
@ApiOperation(value = "修改用户信息", httpMethod = "PUT")
@PutMapping("/{userId}")
public Result<Object> edit(@PathVariable String userId, @RequestBody UserReq req) {
userService.update(userId, req);
return Result.ok();
}
@ApiOperation(value = "删除用户信息", httpMethod = "DELETE")
@DeleteMapping("/{userId}")
public Result<Object> remove(@PathVariable String userId) {
userService.deleteById(userId);
return Result.ok();
}
@ApiOperation(value = "导出用户信息-需求待明确", httpMethod = "GET")
@GetMapping("/export")
@ResponseExcel(name = "用户信息")
public List<UserResp> export(UserListReq req) {
// return userService.selectList(req);
// TODO
return null;
}
@ApiOperation(value = "导入用户信息-需求待明确", httpMethod = "POST")
@PostMapping("/import")
public Result<Object> importData(@RequestExcel List<UserEntity> dataList, BindingResult bindingResult) {
// JSR 303 校验通用校验获取失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
// if (errorMessageList != null && !errorMessageList.isEmpty()) {
// return Result.error(Constants.SERVICE_EXCEPTION, "导入失败");
// }
// return Result.okM("导入"+dataList.size()+"条数据");
// TODO
return null;
}
}