Merge remote-tracking branch 'origin/qms/develop' into qms/develop

This commit is contained in:
funny 2026-05-13 11:09:28 +08:00
commit 8c20a832f9
9 changed files with 130 additions and 76 deletions

View File

@ -1,6 +1,7 @@
package com.nflg.qms.admin.controller; package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.QmsIssueTicketControllerService; import com.nflg.qms.admin.service.QmsIssueTicketControllerService;
import com.nflg.wms.common.constant.Constant;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO;
@ -37,7 +38,7 @@ public class QmsIncomingInspectionTaskNonconformanceController extends BaseContr
public ApiResult<PageData<QmsIncomingInspectionTaskNonconformanceVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskNonconformanceSearchQO request) { public ApiResult<PageData<QmsIncomingInspectionTaskNonconformanceVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskNonconformanceSearchQO request) {
User user = userService.getById(UserUtil.getUserId()); User user = userService.getById(UserUtil.getUserId());
request.setPurchaseGroup(user.getPurchasingGroup()); request.setPurchaseGroup(user.getPurchasingGroup());
request.setIsWarehouseManager(UserUtil.getRoles().contains("CANGKUGUANLIYUAN")); request.setIsWarehouseManager(UserUtil.getRoles().contains(Constant.ROLE_CODE_CANGKUGUANLIYUAN));
return ApiResult.success(nonconformanceService.search(request)); return ApiResult.success(nonconformanceService.search(request));
} }

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.constant.Constant;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
@ -75,6 +76,9 @@ public class QmsIssueTicketControllerService {
@Resource @Resource
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService; private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
@Resource
private IRoleService roleService;
/** /**
* 发起巡检工单 * 发起巡检工单
* 1. 校验工单存在且来源类型为巡检sourceType=2 * 1. 校验工单存在且来源类型为巡检sourceType=2
@ -124,12 +128,12 @@ public class QmsIssueTicketControllerService {
.map(String::trim) .map(String::trim)
.map(Long::valueOf) .map(Long::valueOf)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(imageIds)) { if (CollectionUtil.isNotEmpty(imageIds)) {
List<FileUploadRecord> fileRecords = fileUploadRecordService.lambdaQuery() List<FileUploadRecord> fileRecords = fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, imageIds) .in(FileUploadRecord::getId, imageIds)
.list(); .list();
for (FileUploadRecord record : fileRecords) { for (FileUploadRecord record : fileRecords) {
VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getFileName())) VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getFileName()))
.throwMessage("图片文件名不能为空"); .throwMessage("图片文件名不能为空");
@ -436,7 +440,7 @@ public class QmsIssueTicketControllerService {
// 构建返回值 // 构建返回值
final Map<Long, FileUploadRecord> finalImageMap = imageMap; final Map<Long, FileUploadRecord> finalImageMap = imageMap;
final Map<Long, QmsPdiDetectionRulesStatusItem> finalStatusItemMap = statusItemMap; final Map<Long, QmsPdiDetectionRulesStatusItem> finalStatusItemMap = statusItemMap;
return failedItems.stream().map(item -> { return failedItems.stream().map(item -> {
QmsPdiInspectionResultVO vo = new QmsPdiInspectionResultVO(); QmsPdiInspectionResultVO vo = new QmsPdiInspectionResultVO();
vo.setId(item.getId()); vo.setId(item.getId());
@ -457,7 +461,7 @@ public class QmsIssueTicketControllerService {
if (statusItem != null) { if (statusItem != null) {
vo.setComponentsDes(statusItem.getComponentsDes()); vo.setComponentsDes(statusItem.getComponentsDes());
vo.setInspectionContent(statusItem.getInspectionContent()); vo.setInspectionContent(statusItem.getInspectionContent());
// 解析检测示例图 // 解析检测示例图
if (StrUtil.isNotBlank(statusItem.getInspectionImage())) { if (StrUtil.isNotBlank(statusItem.getInspectionImage())) {
List<QmsPdiTaskRecordDetailVO.FileDetailVO> exampleImageList = Arrays.stream(statusItem.getInspectionImage().split(",")) List<QmsPdiTaskRecordDetailVO.FileDetailVO> exampleImageList = Arrays.stream(statusItem.getInspectionImage().split(","))
@ -658,12 +662,12 @@ public class QmsIssueTicketControllerService {
.map(FileUploadVO::getId) .map(FileUploadVO::getId)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(imageIds)) { if (CollectionUtil.isNotEmpty(imageIds)) {
List<FileUploadRecord> fileRecords = fileUploadRecordService.lambdaQuery() List<FileUploadRecord> fileRecords = fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, imageIds) .in(FileUploadRecord::getId, imageIds)
.list(); .list();
for (FileUploadRecord record : fileRecords) { for (FileUploadRecord record : fileRecords) {
VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getFileName())) VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getFileName()))
.throwMessage("图片文件名不能为空"); .throwMessage("图片文件名不能为空");
@ -754,8 +758,8 @@ public class QmsIssueTicketControllerService {
.set(QmsIssueTicket::getImageIds, request.getImages() == null .set(QmsIssueTicket::getImageIds, request.getImages() == null
? "" ? ""
: StrUtil.join(",", request.getImages().stream() : StrUtil.join(",", request.getImages().stream()
.map(com.nflg.wms.common.pojo.vo.FileUploadVO::getId) .map(com.nflg.wms.common.pojo.vo.FileUploadVO::getId)
.toList())) .toList()))
.set(QmsIssueTicket::getRemark, request.getRemark()) .set(QmsIssueTicket::getRemark, request.getRemark())
.set(QmsIssueTicket::getUpdateUserId, currentUserId) .set(QmsIssueTicket::getUpdateUserId, currentUserId)
.set(QmsIssueTicket::getUpdateUserName, currentUserName) .set(QmsIssueTicket::getUpdateUserName, currentUserName)
@ -1054,6 +1058,15 @@ public class QmsIssueTicketControllerService {
issueTicketToDoService.saveBatch(todoItems); issueTicketToDoService.saveBatch(todoItems);
} }
} }
} else if (detail.getInspectionType() == 1) {
List<User> users = roleService.getUsersByCode(Constant.ROLE_CODE_CANGKUGUANLIYUAN);
List<QmsIssueTicketToDo> todoItems = users.stream().map(user -> new QmsIssueTicketToDo()
.setTicketId(entity.getId())
.setHandlerUserId(user.getId())
).toList();
if (CollectionUtil.isNotEmpty(todoItems)) {
issueTicketToDoService.saveBatch(todoItems);
}
} }
} }
@ -1095,52 +1108,55 @@ public class QmsIssueTicketControllerService {
} }
// 查询关联的来料检测任务详情及检验记录 // 查询关联的来料检测任务详情及检验记录
if (Objects.nonNull(entity.getSourceId())) { // 来料检测任务详情
// 来料检测任务详情 QmsIncomingInspectionTaskVO taskDetail = incomingInspectionTaskControllerService.getDetail(entity.getSourceId());
QmsIncomingInspectionTaskVO taskDetail = incomingInspectionTaskControllerService.getDetail(entity.getSourceId()); vo.setTaskDetail(taskDetail);
vo.setTaskDetail(taskDetail);
List<QmsIssueTicketInspectionRecordItemVO> datas = incomingInspectionTaskControllerService.getNonconformanceDataGroups(entity.getSourceId()); List<QmsIssueTicketInspectionRecordItemVO> datas = incomingInspectionTaskControllerService.getNonconformanceDataGroups(entity.getSourceId());
List<QmsIssueTicketInspectionRecordItemVO> records = new ArrayList<>(); List<QmsIssueTicketInspectionRecordItemVO> records = new ArrayList<>();
datas.forEach(record -> { datas.forEach(record -> {
QmsIssueTicketInspectionRecordItemVO r = records.stream() QmsIssueTicketInspectionRecordItemVO r = records.stream()
.filter(item -> item.getId().equals(record.getId())) .filter(item -> item.getId().equals(record.getId()))
.findFirst() .findFirst()
.orElseGet(() -> { .orElseGet(() -> {
QmsIssueTicketInspectionRecordItemVO r1 = new QmsIssueTicketInspectionRecordItemVO() QmsIssueTicketInspectionRecordItemVO r1 = new QmsIssueTicketInspectionRecordItemVO()
.setId(record.getId()) .setId(record.getId())
.setName(record.getName()) .setName(record.getName())
.setLegend(record.getLegend()) .setLegend(record.getLegend())
.setUnqualifiedQty(0) .setUnqualifiedQty(0)
.setImageIds(record.getImageIds()); .setImageIds(record.getImageIds());
records.add(r1); records.add(r1);
return r1; return r1;
});
r.setUnqualifiedQty(r.getUnqualifiedQty() + record.getUnqualifiedQty());
if (StrUtil.isNotBlank(r.getImageIds())) {
r.setImageIds(StrUtil.join(",", r.getImageIds(), record.getImageIds()));
}
});
records.stream()
.filter(record -> StrUtil.isNotBlank(record.getImageIds()))
.forEach(record -> {
if (StrUtil.isNotBlank(record.getImageIds())) {
record.setImages(fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, Arrays.stream(StrUtil.splitToLong(record.getImageIds(), ",")).boxed().toList())
.list()
.stream()
.map(file -> new FileUploadVO()
.setId(file.getId())
.setFileName(file.getFileName())
.setUrl(file.getUrl())
)
.collect(Collectors.toList())
);
}
}); });
vo.setRecords(records); r.setUnqualifiedQty(r.getUnqualifiedQty() + record.getUnqualifiedQty());
} if (StrUtil.isNotBlank(r.getImageIds())) {
r.setImageIds(StrUtil.join(",", r.getImageIds(), record.getImageIds()));
}
});
records.stream()
.filter(record -> StrUtil.isNotBlank(record.getImageIds()))
.forEach(record -> {
if (StrUtil.isNotBlank(record.getImageIds())) {
record.setImages(fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, Arrays.stream(StrUtil.splitToLong(record.getImageIds(), ",")).boxed().toList())
.list()
.stream()
.map(file -> new FileUploadVO()
.setId(file.getId())
.setFileName(file.getFileName())
.setUrl(file.getUrl())
)
.collect(Collectors.toList())
);
}
});
vo.setRecords(records);
if (taskDetail.getInspectionType() == 0) {
vo.setWithApprovalAuthority(StrUtil.equals(UserUtil.getPurchaseGroup(), taskDetail.getPurchaseGroup()));
} else if (taskDetail.getInspectionType() == 1) {
vo.setWithApprovalAuthority(UserUtil.getRoles().contains(Constant.ROLE_CODE_CANGKUGUANLIYUAN));
}
return vo; return vo;
} }
@ -1438,7 +1454,7 @@ public class QmsIssueTicketControllerService {
vo.setCreateUserName(ticket.getCreateUserName()); vo.setCreateUserName(ticket.getCreateUserName());
vo.setCreateTime(ticket.getCreateTime()); vo.setCreateTime(ticket.getCreateTime());
vo.setCreator(ticket.getCreateUserName()); vo.setCreator(ticket.getCreateUserName());
// 工单类型根据sourceType转换 // 工单类型根据sourceType转换
if (ticket.getSourceType() != null) { if (ticket.getSourceType() != null) {
switch (ticket.getSourceType()) { switch (ticket.getSourceType()) {
@ -1641,7 +1657,7 @@ public class QmsIssueTicketControllerService {
vo.setRootCause(rootCause); vo.setRootCause(rootCause);
vo.setTemporaryMeasures(temporaryMeasures); vo.setTemporaryMeasures(temporaryMeasures);
vo.setPermanentMeasures(permanentMeasures); vo.setPermanentMeasures(permanentMeasures);
// 构建相关人员签字按部门只返回已审批的 // 构建相关人员签字按部门只返回已审批的
Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> signatures = buildSignatures(processes); Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> signatures = buildSignatures(processes);
vo.setSignatures(signatures); vo.setSignatures(signatures);
@ -1721,24 +1737,24 @@ public class QmsIssueTicketControllerService {
*/ */
private Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> buildSignatures(List<QmsIssueTicketProcess> processes) { private Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> buildSignatures(List<QmsIssueTicketProcess> processes) {
Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> signatures = new HashMap<>(); Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> signatures = new HashMap<>();
for (QmsIssueTicketProcess process : processes) { for (QmsIssueTicketProcess process : processes) {
// 只返回已审批的记录approvalStatus 不为 null // 只返回已审批的记录approvalStatus 不为 null
if (process.getApprovalStatus() == null) { if (process.getApprovalStatus() == null) {
continue; continue;
} }
// 查询处理人的部门信息 // 查询处理人的部门信息
if (process.getHandlerUserId() != null) { if (process.getHandlerUserId() != null) {
UserInterior userInterior = userInteriorService.lambdaQuery() UserInterior userInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, process.getHandlerUserId()) .eq(UserInterior::getUserId, process.getHandlerUserId())
.one(); .one();
if (userInterior != null && userInterior.getDeptId() != null) { if (userInterior != null && userInterior.getDeptId() != null) {
Department department = departmentService.getById(userInterior.getDeptId()); Department department = departmentService.getById(userInterior.getDeptId());
if (department != null) { if (department != null) {
String deptName = department.getName(); String deptName = department.getName();
// 查询部门领导 // 查询部门领导
Department leaderDept = departmentService.getById(userInterior.getDeptId()); Department leaderDept = departmentService.getById(userInterior.getDeptId());
String leaderName = null; String leaderName = null;
@ -1748,31 +1764,31 @@ public class QmsIssueTicketControllerService {
leaderName = leaderUser.getUserName(); leaderName = leaderUser.getUserName();
} }
} }
// 如果领导未审批跳过 // 如果领导未审批跳过
if (StrUtil.isBlank(leaderName)) { if (StrUtil.isBlank(leaderName)) {
continue; continue;
} }
// 构建签名姓名状态 // 构建签名姓名状态
String statusText = convertApprovalStatus(process.getApprovalStatus()); String statusText = convertApprovalStatus(process.getApprovalStatus());
String signature = leaderName + "" + statusText + ""; String signature = leaderName + "" + statusText + "";
// 构建签字信息 // 构建签字信息
QmsPdiTicketMyDetailVO.SignatureInfo signatureInfo = new QmsPdiTicketMyDetailVO.SignatureInfo(); QmsPdiTicketMyDetailVO.SignatureInfo signatureInfo = new QmsPdiTicketMyDetailVO.SignatureInfo();
signatureInfo.setDeptName(deptName); signatureInfo.setDeptName(deptName);
signatureInfo.setApprovalOpinion(process.getApprovalOpinion()); signatureInfo.setApprovalOpinion(process.getApprovalOpinion());
signatureInfo.setApprovalTime(process.getApprovalTime() != null signatureInfo.setApprovalTime(process.getApprovalTime() != null
? process.getApprovalTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) ? process.getApprovalTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
: null); : null);
signatureInfo.setSignature(signature); signatureInfo.setSignature(signature);
signatures.put(deptName, signatureInfo); signatures.put(deptName, signatureInfo);
} }
} }
} }
} }
return signatures; return signatures;
} }
@ -1786,14 +1802,22 @@ public class QmsIssueTicketControllerService {
return "未审批"; return "未审批";
} }
switch (status) { switch (status) {
case 0: return "通过"; case 0:
case 1: return "驳回"; return "通过";
case 2: return "重检"; case 1:
case 3: return "报废"; return "驳回";
case 4: return "维修"; case 2:
case 5: return "挑选使用"; return "重检";
case 6: return "让渡使用"; case 3:
default: return "未知"; return "报废";
case 4:
return "维修";
case 5:
return "挑选使用";
case 6:
return "让渡使用";
default:
return "未知";
} }
} }

View File

@ -39,4 +39,9 @@ public class Constant {
public static final String DICTIONARY_AD_TYPE ="AdvertisementType"; public static final String DICTIONARY_AD_TYPE ="AdvertisementType";
public static final String DICTIONARY_AD_POSITION ="AdvertisementPosition"; public static final String DICTIONARY_AD_POSITION ="AdvertisementPosition";
/**
* 仓库管理员角色代码
*/
public static final String ROLE_CODE_CANGKUGUANLIYUAN="CANGKUGUANLIYUAN";
} }

View File

@ -133,6 +133,11 @@ public class QmsIssueTicketDetailVO {
*/ */
private LocalDateTime completeTime; private LocalDateTime completeTime;
/**
* 是否有审批权限
*/
private boolean withApprovalAuthority = false;
/** /**
* 来料检测任务详情 * 来料检测任务详情
*/ */

View File

@ -32,7 +32,7 @@ public class UserUtil {
return UserType.findByValue(Integer.parseInt(StpUtil.getExtra(Constant.LOGIN_EXTRA_USER_TYPE).toString())); return UserType.findByValue(Integer.parseInt(StpUtil.getExtra(Constant.LOGIN_EXTRA_USER_TYPE).toString()));
} }
public static String getPurchaseGropu(){ public static String getPurchaseGroup(){
return (String) StpUtil.getExtra(Constant.LOGIN_EXTRA_PURCHASING_GROUP); return (String) StpUtil.getExtra(Constant.LOGIN_EXTRA_PURCHASING_GROUP);
} }
} }

View File

@ -7,6 +7,7 @@ import com.nflg.wms.common.pojo.qo.RoleSearchQO;
import com.nflg.wms.common.pojo.vo.MenuVO; import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO; import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.repository.entity.Role; import com.nflg.wms.repository.entity.Role;
import com.nflg.wms.repository.entity.User;
import java.util.List; import java.util.List;
@ -23,4 +24,6 @@ public interface RoleMapper extends BaseMapper<Role> {
IPage<RoleVO> search(RoleSearchQO request, Page<?> objectPage); IPage<RoleVO> search(RoleSearchQO request, Page<?> objectPage);
List<MenuVO> getMenusByRoleCodes(Long serviceId, Long userId); List<MenuVO> getMenusByRoleCodes(Long serviceId, Long userId);
List<User> getUsersByCode(String code);
} }

View File

@ -9,6 +9,7 @@ import com.nflg.wms.common.pojo.qo.RoleUpdateQO;
import com.nflg.wms.common.pojo.vo.MenuVO; import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO; import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.repository.entity.Role; import com.nflg.wms.repository.entity.Role;
import com.nflg.wms.repository.entity.User;
import java.util.List; import java.util.List;
@ -31,4 +32,6 @@ public interface IRoleService extends IService<Role> {
void enable(EnableQO request, String userName); void enable(EnableQO request, String userName);
List<MenuVO> getMenusByRoleCodes(Long serviceId, Long userId); List<MenuVO> getMenusByRoleCodes(Long serviceId, Long userId);
List<User> getUsersByCode(String code);
} }

View File

@ -12,6 +12,7 @@ import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Menu; import com.nflg.wms.repository.entity.Menu;
import com.nflg.wms.repository.entity.Role; import com.nflg.wms.repository.entity.Role;
import com.nflg.wms.repository.entity.User;
import com.nflg.wms.repository.mapper.RoleMapper; import com.nflg.wms.repository.mapper.RoleMapper;
import com.nflg.wms.repository.service.IAuditLogService; import com.nflg.wms.repository.service.IAuditLogService;
import com.nflg.wms.repository.service.IMenuService; import com.nflg.wms.repository.service.IMenuService;
@ -108,6 +109,11 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
return menus; return menus;
} }
@Override
public List<User> getUsersByCode(String code) {
return baseMapper.getUsersByCode(code);
}
private void bindParent(MenuVO menu, List<MenuVO> datas) { private void bindParent(MenuVO menu, List<MenuVO> datas) {
if (!Objects.equals(0L, menu.getParentId())) { if (!Objects.equals(0L, menu.getParentId())) {
Menu mp = menuService.getById(menu.getParentId()); Menu mp = menuService.getById(menu.getParentId());

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.RoleMapper"> <mapper namespace="com.nflg.wms.repository.mapper.RoleMapper">
<select id="search" resultType="com.nflg.wms.common.pojo.vo.RoleVO"> <select id="search" resultType="com.nflg.wms.common.pojo.vo.RoleVO">
SELECT * SELECT *
FROM role FROM role
@ -17,7 +16,7 @@
</select> </select>
<select id="getMenusByRoleCodes" resultType="com.nflg.wms.common.pojo.vo.MenuVO"> <select id="getMenusByRoleCodes" resultType="com.nflg.wms.common.pojo.vo.MenuVO">
SELECT DISTINCT m.id, m.name, m.url, m.component, m.parent_id AS "parentId", m.show,m.sort SELECT DISTINCT m.id, m.name, m.url, m.component, m.parent_id AS "parentId", m.show, m.sort
FROM role r FROM role r
INNER JOIN role_menu_map rmm ON r.id = rmm.role_id INNER JOIN role_menu_map rmm ON r.id = rmm.role_id
INNER JOIN menu m ON rmm.menu_id = m.id INNER JOIN menu m ON rmm.menu_id = m.id
@ -28,4 +27,12 @@
AND m.service_desc_id = #{serviceId} AND m.service_desc_id = #{serviceId}
order by m.id order by m.id
</select> </select>
<select id="getUsersByCode" resultType="com.nflg.wms.repository.entity.User">
SELECT u.*
FROM role r
INNER JOIN user_role_map urm ON r."id" = urm.role_id
INNER JOIN "user" u ON urm.user_id = u."id"
WHERE r.code = #{code}
</select>
</mapper> </mapper>