From 2cf1565485060fd56e1f1f1cffbba7a4d70d42a6 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期五, 11 四月 2025 11:06:22 +0800 Subject: [PATCH] 优化dnc,设备结构树查询,优化原有代码 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceCharactersServiceImpl.java | 11 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java | 4 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PartsInfo.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java | 235 +++++++++++++++++++++-------- lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java | 5 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java | 2 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 20 ++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 32 ++++ lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java | 3 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java | 21 +- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceManagementServiceImpl.java | 5 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java | 7 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java | 2 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java | 55 +++--- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java | 10 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java | 10 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml | 17 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java | 2 19 files changed, 321 insertions(+), 124 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java index a65a386..a99a09a 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java @@ -3,17 +3,15 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.entity.DeviceInfo; import org.jeecg.modules.dnc.response.*; +import org.jeecg.modules.dnc.service.IDeviceInfoService; import org.jeecg.modules.dnc.service.IDevicePermissionService; import org.jeecg.modules.mdc.model.MdcEquipmentTree; import org.jeecg.modules.system.entity.SysUser; -import org.jeecg.modules.dnc.entity.DeviceInfo; -import org.jeecg.modules.dnc.service.IDeviceInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -171,10 +169,8 @@ @GetMapping(value = "/queryTreeListByProduction") public Result<List<MdcEquipmentTree>> queryTreeListByProduction() { Result<List<MdcEquipmentTree>> result = new Result<>(); - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String userId = user.getId(); try { - List<MdcEquipmentTree> mdcEquipmentTreeList = devicePermissionService.DncLoadTreeListByProduction(userId); + List<MdcEquipmentTree> mdcEquipmentTreeList = devicePermissionService.DncLoadTreeListByProduction(); result.setSuccess(true); result.setResult(mdcEquipmentTreeList); } catch (Exception e) { diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java index f5615b1..59a52ab 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java @@ -46,7 +46,7 @@ @TableField(value = "process_type") private Integer processType; @TableField(value = "structure_type") - private Integer structureType; + private String structureType; @TableField(value = "component_code") private String componentCode; @TableField(value = "component_status") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PartsInfo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PartsInfo.java index 6c0c2d9..922814b 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PartsInfo.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PartsInfo.java @@ -42,7 +42,7 @@ @TableField(value = "process_type") private Integer processType; @TableField(value = "structure_type") - private Integer structureType; + private String structureType; @TableField(value = "parts_code") private String partsCode; @TableField(value = "parts_status") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java index 3e25420..a9299d5 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java @@ -9,6 +9,4 @@ private String attributionId; private Integer attributionType; private String docClassCode; - /**鏄惁杩涘叆瀹$娴佺▼*/ - private Boolean isApprove = true; } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java index d7bd592..8c04d5b 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java @@ -19,8 +19,9 @@ PROCESSSPECVERSION_NOT_EXIST(false,25211,"宸ヨ壓瑙勭▼涓嶅瓨鍦紒"), PROCESSSPECVERSION_IS_EXIST(false,25212,"宸ヨ壓瑙勭▼宸插瓨鍦紒"), PROCESSSPECVERSION_CODE_NONE(false,25213,"璇疯緭鍏ュ伐鑹鸿绋嬬増鏈彿锛�"), - PROCESSSPECVERSION_PROCESS_EXIST(false,25214,"宸ヨ壓瑙勭▼鐗堟湰鏈夊叧鑱旂殑宸ュ簭淇℃伅锛�"), - PARTS_USER_NONE(false,25215,"闆朵欢鏃犳硶娓呯┖鐢ㄦ埛鏉冮檺锛岃鑷冲皯淇濈暀涓�浣嶅彲鎿嶄綔鐢ㄦ埛锛�"); + PROCESSSPECVERSION_NONE(false,25214,"璇疯緭鍏ュ伐鑹鸿绋嬬増鏈悕绉帮紒"), + PROCESSSPECVERSION_PROCESS_EXIST(false,25215,"宸ヨ壓瑙勭▼鐗堟湰鏈夊叧鑱旂殑宸ュ簭淇℃伅锛�"), + PARTS_USER_NONE(false,25216,"闆朵欢鏃犳硶娓呯┖鐢ㄦ埛鏉冮檺锛岃鑷冲皯淇濈暀涓�浣嶅彲鎿嶄綔鐢ㄦ埛锛�"); //鎿嶄綔浠g爜 @ApiModelProperty(value = "鎿嶄綔鏄惁鎴愬姛", example = "true", required = true) @@ -32,7 +33,7 @@ //鎻愮ず淇℃伅 @ApiModelProperty(value = "鎿嶄綔鎻愮ず", example = "鎿嶄綔杩囦簬棰戠箒锛�", required = true) String message; - private PartsInfoCode(boolean success, int code, String message){ + PartsInfoCode(boolean success, int code, String message){ this.success = success; this.code = code; this.message = message; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java index b819452..c886fb7 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java @@ -56,5 +56,5 @@ /** * 鍔犺浇浜х嚎璁惧鏍� */ - List<MdcEquipmentTree> DncLoadTreeListByProduction(String userId); + List<MdcEquipmentTree> DncLoadTreeListByProduction(); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java index e2d0c4e..c3e296a 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java @@ -54,7 +54,7 @@ * @param processSpecVersionCode * @return */ - ProcessSpecVersion getByCode(String processSpecVersionCode); + ProcessSpecVersion getByCode(String partId,String processSpecVersionCode); /** * 鏍规嵁闆朵欢id鑾峰彇 diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceCharactersServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceCharactersServiceImpl.java index 8825c3b..523b03d 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceCharactersServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceCharactersServiceImpl.java @@ -5,15 +5,19 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.entity.DeviceCharacters; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.DeviceCharactersMapper; -import org.jeecg.modules.dnc.response.CommonCode; -import org.jeecg.modules.dnc.response.QueryPageResponseResult; import org.jeecg.modules.dnc.request.DeviceCharactersRequest; +import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.service.IDeviceCharactersService; import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; @Service public class DeviceCharactersServiceImpl extends ServiceImpl<DeviceCharactersMapper, DeviceCharacters> implements IDeviceCharactersService { @@ -24,6 +28,8 @@ ExceptionCast.cast(CommonCode.INVALID_PAGE); } IPage<DeviceCharacters> pageData = new Page<>(page, size); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List<String> productIdList = Arrays.asList(user.getProductionIds().split(",")); LambdaQueryChainWrapper<DeviceCharacters> lambdaQuery = super.lambdaQuery(); if(deviceCharactersRequest != null) { lambdaQuery.like(StrUtil.isNotEmpty(deviceCharactersRequest.getDeviceNo()),DeviceCharacters::getDeviceNo, deviceCharactersRequest.getDeviceNo()); @@ -33,6 +39,7 @@ lambdaQuery.ge(StrUtil.isNotEmpty(deviceCharactersRequest.getStartTime()),DeviceCharacters::getCreateTime,deviceCharactersRequest.getStartTime()); lambdaQuery.le(StrUtil.isNotEmpty(deviceCharactersRequest.getEndTime()),DeviceCharacters::getCreateTime,deviceCharactersRequest.getEndTime()); } + lambdaQuery.in(DeviceCharacters::getDepartId, productIdList); lambdaQuery.orderByDesc(DeviceCharacters::getCreateTime); IPage<DeviceCharacters> userIPage = lambdaQuery.page(pageData); return Result.ok(userIPage); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceManagementServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceManagementServiceImpl.java index 716979e..bd5c852 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceManagementServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceManagementServiceImpl.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.entity.DeviceManagement; import org.jeecg.modules.dnc.entity.DeviceType; import org.jeecg.modules.dnc.exception.ExceptionCast; @@ -143,10 +145,13 @@ */ @Override public Result<?> query(DeviceManagement deviceManagement, Integer pageNo, Integer pageSize){ + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List<String> productIdList = Arrays.asList(user.getProductionIds().split(",")); QueryWrapper<DeviceManagement> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StrUtil.isNotEmpty(deviceManagement.getProductionId()),"production_id",deviceManagement.getProductionId()); queryWrapper.like(StrUtil.isNotEmpty(deviceManagement.getDeviceManagementName()),"device_management_name",deviceManagement.getDeviceManagementName()); queryWrapper.like(StrUtil.isNotEmpty(deviceManagement.getDeviceManagementCode()),"device_management_code",deviceManagement.getDeviceManagementCode()); + queryWrapper.in("production_id",productIdList); queryWrapper.orderByDesc("create_time"); Page<DeviceManagement> page = new Page<>(pageNo, pageSize); IPage<DeviceManagement> pageList = super.page(page, queryWrapper); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java index 498a9e9..ce32abf 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.entity.DevicePermission; import org.jeecg.modules.dnc.mapper.DevicePermissionMapper; import org.jeecg.modules.dnc.service.IDevicePermissionService; @@ -24,10 +26,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class DevicePermissionServiceImpl extends ServiceImpl<DevicePermissionMapper, DevicePermission> implements IDevicePermissionService { @@ -92,80 +94,181 @@ /** - * 鍔犺浇浜х嚎璁惧鏍� + * * 鍔犺浇浜х嚎璁惧鏍� */ @Override - public List<MdcEquipmentTree> DncLoadTreeListByProduction(String userId){ - //鑾峰彇鎵�鏈変骇绾挎暟鎹� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder)); - //鏍规嵁鐢ㄦ埛id鑾峰彇鎷ユ湁鐨勪骇绾夸俊鎭泦鍚� - List<String> productionIds = mdcUserProductionService.queryProductionIdsByUserId(userId); - List<String> allProductionIds = new ArrayList<>(); - //鎵惧埌鎵�鏈変骇绾縤d鐨勪笂绾d - if (productionIds != null && !productionIds.isEmpty()) { - for (String productionId : productionIds) { - this.getAllProductionIds(productionList, productionId, allProductionIds); - } - } - //杩囨护浜х嚎鏁版嵁 - List<MdcProduction> list = productionList.stream().filter((MdcProduction mdcProduction) -> allProductionIds.contains(mdcProduction.getId())).collect(Collectors.toList()); - //缁勮浜х嚎璁惧鏍� - List<MdcEquipmentTree> treeList = FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(list); - //濉厖璁惧鏁版嵁 - FillEquipmentByProduction(treeList,userId); + public List<MdcEquipmentTree> DncLoadTreeListByProduction() { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + // 鑾峰彇鎵�鏈夋湁鏁堜骇绾垮苟寤虹珛蹇�熸煡璇㈡槧灏� + Map<String, MdcProduction> productionMap = getValidProductions(); + + // 鑾峰彇鐢ㄦ埛鏉冮檺鐩稿叧鐨勬墍鏈変骇绾縄D锛堝寘鍚眰绾х鍏堬級 + Set<String> authorizedProductionIds = getAuthorizedProductionIds(user.getId(), productionMap); + + // 鏋勫缓浜х嚎鏍戠粨鏋� + List<MdcEquipmentTree> treeList = buildProductionTree(new ArrayList<>(authorizedProductionIds), productionMap); + + // 鎵归噺濉厖璁惧鏁版嵁 + fillEquipmentData(treeList, user); + return treeList; } /** - * 鑾峰彇鎵�鏈夌殑浜х嚎id锛堝寘鍚墍鏈変笂绾э級 - */ - private void getAllProductionIds(List<MdcProduction> productionList, String productionId, List<String> allProductionIds) { - if (!allProductionIds.contains(productionId)) { - allProductionIds.add(productionId); - } - for (MdcProduction mdcProduction : productionList) { - if (StringUtils.isEmpty(mdcProduction.getParentId())) { - continue; - } - if (productionId.equals(mdcProduction.getId())) { - if (!allProductionIds.contains(mdcProduction.getParentId())) { - allProductionIds.add(mdcProduction.getParentId()); - getAllProductionIds(productionList, mdcProduction.getParentId(), allProductionIds); - } - } + * 鑾峰彇鎵�鏈夋湁鏁堜骇绾垮苟寤虹珛ID鏄犲皠 + */ + private Map<String, MdcProduction> getValidProductions() { + List<MdcProduction> productions = mdcProductionService.list( + new LambdaQueryWrapper<MdcProduction>() + .eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0) + .orderByAsc(MdcProduction::getProductionOrder) + ); + return productions.stream().collect(Collectors.toMap(MdcProduction::getId, Function.identity())); + } + + /** + * 鑾峰彇鐢ㄦ埛鏉冮檺鐩稿叧鐨勬墍鏈変骇绾縄D锛堝寘鍚眰绾х鍏堬級 + */ + private Set<String> getAuthorizedProductionIds(String userId, Map<String, MdcProduction> productionMap) { + Set<String> result = new HashSet<>(); + + // 鑾峰彇鐩存帴鍏宠仈鐨勪骇绾縄D + List<String> directProductionIds = Optional.ofNullable(mdcUserProductionService.queryProductionIdsByUserId(userId)) + .orElse(Collections.emptyList()); + + // 閫掑綊鏀堕泦鎵�鏈夊眰绾D + directProductionIds.forEach(id -> collectHierarchyIds(id, productionMap, result)); + + return result; + } + + /** + * 閫掑綊鏀堕泦灞傜骇ID锛堝寘鍚嚜韬強鎵�鏈夌鍏堬級 + */ + private void collectHierarchyIds(String productionId, Map<String, MdcProduction> productionMap, Set<String> collector) { + if (collector.contains(productionId)) return; + + MdcProduction current = productionMap.get(productionId); + if (current == null) return; + + collector.add(productionId); + if (StringUtils.isNotBlank(current.getParentId())) { + collectHierarchyIds(current.getParentId(), productionMap, collector); } } /** - * 浜х嚎璁惧鏍戝~鍏呰澶囨暟鎹� - */ - private void FillEquipmentByProduction(List<MdcEquipmentTree> treeList,String userId) { - //鑾峰彇宸插垎閰嶆潈闄愯澶囨暟鎹� - List<String> deviceIds=super.list(new QueryWrapper<DevicePermission>().eq("user_id",userId)).stream().map(DevicePermission::getDeviceId).collect(Collectors.toList()); - if (!deviceIds.isEmpty()){ - for (MdcEquipmentTree mdcEquipmentTree : treeList) { - List<MdcEquipment> equipmentList = mdcEquipmentMapper.queryByProductionIdAndType(mdcEquipmentTree.getKey(),deviceIds); - if (equipmentList != null && !equipmentList.isEmpty()) { - for (MdcEquipment mdcEquipment : equipmentList) { - if (mdcEquipment.getCreateBy()!=null&& !mdcEquipment.getCreateBy().isEmpty()){ - mdcEquipment.setCreateBy(sysUserService.getUserByName(mdcEquipment.getCreateBy()).getRealname()); - } - if (mdcEquipment.getUpdateBy()!=null&& !mdcEquipment.getUpdateBy().isEmpty()){ - mdcEquipment.setUpdateBy(sysUserService.getUserByName(mdcEquipment.getUpdateBy()).getRealname()); - } - MdcEquipmentTree tree = new MdcEquipmentTree().convert(mdcEquipment); - tree.setParentId(mdcEquipmentTree.getKey()); - tree.setEntity(mdcEquipment); - tree.setType(2); - mdcEquipmentTree.getChildren().add(tree); - } - mdcEquipmentTree.setLeaf(false); - } - if (!mdcEquipmentTree.getChildren().isEmpty()) { - FillEquipmentByProduction(mdcEquipmentTree.getChildren(),userId); - } - } + 鏋勫缓浜х嚎鏍戠粨鏋� + */ + private List<MdcEquipmentTree> buildProductionTree(List<String> productionIds, Map<String, MdcProduction> productionMap) { + + List<MdcProduction> filteredProductions = new ArrayList<>(); + productionIds.forEach(id -> { + MdcProduction production = productionMap.get(id); + if (production != null) { + filteredProductions.add(production); } + }); + return FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(filteredProductions); + } + /** + * 鎵归噺濉厖璁惧鏁版嵁 + */ + private void fillEquipmentData(List<MdcEquipmentTree> treeList, LoginUser user) { + // 鑾峰彇鐢ㄦ埛璁惧鏉冮檺 + Set<String> deviceIds = getAuthorizedDeviceIds(user.getId()); + if (deviceIds.isEmpty()) return; + + // 鎵归噺鑾峰彇鎵�鏈夌浉鍏宠澶� + Map<String, List<MdcEquipment>> equipmentMap = getEquipmentMap(user, deviceIds); + + // 鎵归噺鑾峰彇鐢ㄦ埛淇℃伅 + Map<String, String> userRealNameMap = getUserRealNameMapping(equipmentMap.values()); + + // 濉厖璁惧鏁版嵁鍒版爲鑺傜偣 + populateEquipmentNodes(treeList, equipmentMap, userRealNameMap); + } + +/** + * 鑾峰彇鎺堟潈璁惧ID闆嗗悎 + */ + private Set<String> getAuthorizedDeviceIds(String userId) { + return super.list(new QueryWrapper<DevicePermission>().select("device_id").eq("user_id", userId)) + .stream() + .map(DevicePermission::getDeviceId) + .collect(Collectors.toSet()); + } + + /** + * 鎵归噺鑾峰彇璁惧鏁版嵁骞舵寜浜х嚎鍒嗙粍 + */ + private Map<String, List<MdcEquipment>> getEquipmentMap(LoginUser user, Set<String> deviceIds) { + List<String> productionIds=Arrays.asList(user.getProductionIds().split(",")); + return mdcEquipmentMapper.queryByDepartIdsAndType(productionIds, new ArrayList<>(deviceIds)) + .stream() + .collect(Collectors.groupingBy(MdcEquipment::getProductionId)); + } + + + /*** 鎵归噺鑾峰彇鐢ㄦ埛鐪熷疄濮撳悕鏄犲皠 + */ + private Map<String, String> getUserRealNameMapping(Collection<List<MdcEquipment>> equipmentLists) { + Set<String> userNames = equipmentLists.stream() + .flatMap(List::stream) + .flatMap(e -> Stream.of(e.getCreateBy(), e.getUpdateBy())) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toSet()); + + return sysUserService.getUserRealNamesByUserNames(new ArrayList<>(userNames)); + } + + /** + * 濉厖璁惧鑺傜偣鏁版嵁 + */ + private void populateEquipmentNodes(List<MdcEquipmentTree> nodes, + Map<String, List<MdcEquipment>> equipmentMap, + Map<String, String> userRealNameMap) { + for (MdcEquipmentTree node : nodes) { + if (!isProductionNode(node)) continue; + + List<MdcEquipment> equipments = equipmentMap.getOrDefault(node.getKey(), Collections.emptyList()); + List<MdcEquipmentTree> equipmentNodes = convertToEquipmentNodes(equipments, userRealNameMap, node.getKey()); + + node.getChildren().addAll(equipmentNodes); + node.setLeaf(equipmentNodes.isEmpty()); + + // 閫掑綊澶勭悊瀛愯妭鐐� + populateEquipmentNodes(node.getChildren(), equipmentMap, userRealNameMap); + } + } + +/** + * 杞崲璁惧鏁版嵁涓烘爲鑺傜偣 + */ + private List<MdcEquipmentTree> convertToEquipmentNodes(List<MdcEquipment> equipments, + Map<String, String> userRealNameMap, + String parentId) { + return equipments.stream().map(e -> { + // 鏇存柊鐢ㄦ埛鏄剧ず鍚嶇О + Optional.ofNullable(e.getCreateBy()).ifPresent(name -> + e.setCreateBy(userRealNameMap.getOrDefault(name, name))); + Optional.ofNullable(e.getUpdateBy()).ifPresent(name -> + e.setUpdateBy(userRealNameMap.getOrDefault(name, name))); + + MdcEquipmentTree node = new MdcEquipmentTree().convert(e); + node.setParentId(parentId); + node.setEntity(e); + node.setType(2); // 璁惧鑺傜偣绫诲瀷 + return node; + }).collect(Collectors.toList()); + } + +/** + * 鍒ゆ柇鏄惁涓轰骇绾胯妭鐐癸紙鏍规嵁涓氬姟閫昏緫瀹氫箟锛� + */ + private boolean isProductionNode(MdcEquipmentTree node) { + return node.getType() == 1; // 鍋囪绫诲瀷1琛ㄧず浜х嚎鑺傜偣 } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java index 22055f0..008852d 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java @@ -90,7 +90,7 @@ if(ProcessSpecVersion == null) ExceptionCast.cast(CommonCode.INVALID_PARAM); if(!ValidateUtil.validateString(ProcessSpecVersion.getProcessSpecVersionName())) - ExceptionCast.cast(PartsInfoCode.PARTS_NAME_NONE); + ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_NONE); if(!ValidateUtil.validateString(ProcessSpecVersion.getProductId())) ExceptionCast.cast(PartsInfoCode.PARTS_PRODUCT_NONE); if(!ValidateUtil.validateString(ProcessSpecVersion.getComponentId())) @@ -99,7 +99,7 @@ ExceptionCast.cast(ProcessInfoCode.PROCESS_PARTS_NONE); if(!ValidateUtil.validateString(ProcessSpecVersion.getProcessSpecVersionCode())) ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_CODE_NONE); - ProcessSpecVersion en = getByCode(ProcessSpecVersion.getProcessSpecVersionCode()); + ProcessSpecVersion en = getByCode(ProcessSpecVersion.getPartsId(),ProcessSpecVersion.getProcessSpecVersionCode()); if(en != null) ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_IS_EXIST); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -243,9 +243,11 @@ } @Override - public ProcessSpecVersion getByCode(String processSpecVersionCode) { + public ProcessSpecVersion getByCode(String partId,String processSpecVersionCode) { if(ValidateUtil.validateString(processSpecVersionCode)) { - List<ProcessSpecVersion> list = super.lambdaQuery().eq(ProcessSpecVersion::getProcessSpecVersionCode, processSpecVersionCode).list(); + List<ProcessSpecVersion> list = super.lambdaQuery() + .eq(ProcessSpecVersion::getPartsId, partId) + .eq(ProcessSpecVersion::getProcessSpecVersionCode, processSpecVersionCode).list(); if(list == null || list.isEmpty()) return null; return list.get(0); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java index e2bfacc..2d4824d 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java @@ -19,6 +19,10 @@ @Autowired private IPermissionStreamNewService permissionStreamNewService; + /** + * 榛樿缁撴瀯鏍戞煡璇� + * @return + */ @Override public List<ProductMix> getTree() { LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java index 543ad28..f7873d5 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java @@ -186,4 +186,7 @@ @Dict(dicCode = "mdc_staff_team") @ApiModelProperty(value = "閰嶉�佸皬缁�") private String teamCode; + + // 鍏宠仈浜х嚎锛堥潪鏁版嵁搴撳瓧娈碉級 + private transient String productionId; } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java index cba730b..57d0f71 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java @@ -64,6 +64,11 @@ List<MdcEquipment> queryByProductionIdAndType(@Param("productionId") String productionId, @Param("deviceIds") List<String> deviceIds); /** + * 鏍规嵁閮ㄩ棬ids銆佸凡鍒嗛厤鏉冮檺鏁版嵁 鏌ヨ璁惧 + */ + List<MdcEquipment> queryByDepartIdsAndType(@Param("productionIds") List<String> productionIds, @Param("deviceIds") List<String> deviceIds); + + /** * 鏌ユ壘璁惧鐩戞帶淇℃伅 */ List<MdcEquipmentMonitor> checkStatusFromEquipmentIds(@Param("equipmentIds") List<String> equipmentIds); diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 19bb11d..8440226 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -279,7 +279,8 @@ <select id="queryByProductionIdAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> SELECT - me.* + me.*, + mpe.production_id FROM mdc_production_equipment mpe, mdc_equipment me @@ -339,5 +340,22 @@ #{equipmentType} </foreach> </select> + <select id="queryByDepartIdsAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> + SELECT + e.*, + ep.production_id + FROM + mdc_equipment e + INNER JOIN mdc_production_equipment ep ON e.id = ep.equipment_id + WHERE + ep.production_id IN + <foreach collection='productionIds' item='id' open='(' separator=',' close=')'> + #{id} + </foreach> + AND e.id IN + <foreach collection='deviceIds' item='deviceId' open='(' separator=',' close=')'> + #{deviceId} + </foreach> + </select> </mapper> diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java index 7966336..3200bfe 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java @@ -27,7 +27,7 @@ * @param username * @return */ - public SysUser getUserByName(@Param("username") String username); + SysUser getUserByName(@Param("username") String username); /** * 鏍规嵁閮ㄩ棬Id鏌ヨ鐢ㄦ埛淇℃伅 @@ -62,28 +62,28 @@ * @return */ IPage<SysUser> getUserByRoleId(Page page, @Param("roleId") String roleId, @Param("username") String username); - + /** * 鏍规嵁鐢ㄦ埛鍚嶈缃儴闂↖D * @param username * @param orgCode */ void updateUserDepart(@Param("username") String username,@Param("orgCode") String orgCode); - + /** * 鏍规嵁鎵嬫満鍙锋煡璇㈢敤鎴蜂俊鎭� * @param phone * @return */ - public SysUser getUserByPhone(@Param("phone") String phone); - - + SysUser getUserByPhone(@Param("phone") String phone); + + /** * 鏍规嵁閭鏌ヨ鐢ㄦ埛淇℃伅 * @param email * @return */ - public SysUser getUserByEmail(@Param("email")String email); + SysUser getUserByEmail(@Param("email") String email); /** * 鏍规嵁 orgCode 鏌ヨ鐢ㄦ埛锛屽寘鎷瓙閮ㄩ棬涓嬬殑鐢ㄦ埛 @@ -150,7 +150,7 @@ */ @Deprecated int updateNullByEmptyString(@Param("fieldName") String fieldName); - + /** * 鏍规嵁閮ㄩ棬Ids,鏌ヨ閮ㄩ棬涓嬬敤鎴蜂俊鎭� * @param departIds @@ -183,4 +183,9 @@ * 鏍规嵁瑙掕壊缂栫爜鍜岃澶囩紪鍙锋煡璇㈢敤鎴� */ List<SysUser> getEquipmentAdmin(@Param("roleCode") String roleCode, @Param("equipmentId") String equipmentId); + + /** 鏍规嵁鐢ㄦ埛鍚嶆壒閲忔煡璇� + * @param userNames 鐢ㄦ埛鍚嶅垪琛紙闇�纭繚闈炵┖锛� + */ + List<SysUser> selectUsersByNames(@Param("userNames") List<String> userNames); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml index 3e751a9..2eda850 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml @@ -45,7 +45,7 @@ and username = #{username} </if> </select> - + <!-- 淇敼鐢ㄦ埛閮ㄩ棬code --> <update id="updateUserDepart"> UPDATE sys_user SET org_code = #{orgCode} where username = #{username} @@ -55,7 +55,7 @@ <select id="getUserByPhone" resultType="org.jeecg.modules.system.entity.SysUser"> select * from sys_user where phone = #{phone} and del_flag = 0 </select> - + <!-- 鏍规嵁閭鏌ヨ鐢ㄦ埛淇℃伅 --> <select id="getUserByEmail" resultType="org.jeecg.modules.system.entity.SysUser"> select * from sys_user where email = #{email} and del_flag = 0 @@ -217,4 +217,15 @@ WHERE t3.role_code = #{roleCode} AND equipment_ids LIKE concat(concat('%',#{equipmentId}),'%') </select> -</mapper> \ No newline at end of file + <select id="selectUsersByNames" resultType="org.jeecg.modules.system.entity.SysUser"> + SELECT + username, + realname + FROM sys_user + WHERE + username IN + <foreach item="name" collection="userNames" open="(" separator="," close=")"> + #{name} + </foreach> + </select> +</mapper> diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 4a23faa..3604d3f 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -37,7 +37,7 @@ * @param confirmpassword * @return */ - public Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword); + Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword); /** * 淇敼瀵嗙爜 @@ -45,50 +45,50 @@ * @param sysUser * @return */ - public Result<?> changePassword(SysUser sysUser); + Result<?> changePassword(SysUser sysUser); /** * 鍒犻櫎鐢ㄦ埛 * @param userId * @return */ - public boolean deleteUser(String userId); + boolean deleteUser(String userId); /** * 鎵归噺鍒犻櫎鐢ㄦ埛 * @param userIds * @return */ - public boolean deleteBatchUsers(String userIds); + boolean deleteBatchUsers(String userIds); /** * 鏍规嵁鐢ㄦ埛鍚嶆煡璇� * @param username 鐢ㄦ埛鍚� * @return SysUser */ - public SysUser getUserByName(String username); - + SysUser getUserByName(String username); + /** * 娣诲姞鐢ㄦ埛鍜岀敤鎴疯鑹插叧绯� * @param user * @param roles */ - public void addUserWithRole(SysUser user,String roles); - - + void addUserWithRole(SysUser user, String roles); + + /** * 淇敼鐢ㄦ埛鍜岀敤鎴疯鑹插叧绯� * @param user * @param roles */ - public void editUserWithRole(SysUser user,String roles); + void editUserWithRole(SysUser user, String roles); /** * 鑾峰彇鐢ㄦ埛鐨勬巿鏉冭鑹� * @param username * @return */ - public List<String> getRole(String username); + List<String> getRole(String username); /** * 鑾峰彇鏍规嵁鐧诲綍鐢ㄦ埛鐨勮鑹茶幏鍙栧姩鎬侀椤� @@ -97,15 +97,15 @@ * @param version 鍓嶇UI鐗堟湰 * @return */ - public SysRoleIndex getDynamicIndexByUserRole(String username,String version); - + SysRoleIndex getDynamicIndexByUserRole(String username, String version); + /** * 鏌ヨ鐢ㄦ埛淇℃伅鍖呮嫭 閮ㄩ棬淇℃伅 * @param username * @return */ @Deprecated - public SysUserCacheInfo getCacheUser(String username); + SysUserCacheInfo getCacheUser(String username); /** * 鏍规嵁閮ㄩ棬Id鏌ヨ @@ -114,7 +114,7 @@ * @param username 鐢ㄦ埛璐︽埛鍚嶇О * @return */ - public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username); + IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username); /** * 鏍规嵁閮ㄩ棬Ids鏌ヨ @@ -123,14 +123,14 @@ * @param username 鐢ㄦ埛璐︽埛鍚嶇О * @return */ - public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username); + IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username); /** * 鏍规嵁 userIds鏌ヨ锛屾煡璇㈢敤鎴锋墍灞為儴闂ㄧ殑鍚嶇О锛堝涓儴闂ㄥ悕閫楀彿闅斿紑锛� * @param userIds * @return */ - public Map<String,String> getDepNamesByUserIds(List<String> userIds); + Map<String,String> getDepNamesByUserIds(List<String> userIds); /** * 鏍规嵁閮ㄩ棬 Id 鍜� QueryWrapper 鏌ヨ @@ -161,7 +161,7 @@ * @param username 鐢ㄦ埛璐︽埛鍚嶇О * @return */ - public IPage<SysUser> getUserByRoleId(Page<SysUser> page,String roleId, String username); + IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username); /** * 閫氳繃鐢ㄦ埛鍚嶈幏鍙栫敤鎴疯鑹查泦鍚� @@ -178,20 +178,20 @@ * @return 鏉冮檺闆嗗悎 */ Set<String> getUserPermissionsSet(String username); - + /** * 鏍规嵁鐢ㄦ埛鍚嶈缃儴闂↖D * @param username * @param orgCode */ void updateUserDepart(String username,String orgCode); - + /** * 鏍规嵁鎵嬫満鍙疯幏鍙栫敤鎴峰悕鍜屽瘑鐮� * @param phone 鎵嬫満鍙� * @return SysUser */ - public SysUser getUserByPhone(String phone); + SysUser getUserByPhone(String phone); /** @@ -199,7 +199,7 @@ * @param email 閭 * @return SysUser */ - public SysUser getUserByEmail(String email); + SysUser getUserByEmail(String email); /** @@ -215,7 +215,7 @@ * @param departs */ void editUserWithDepart(SysUser user, String departs); - + /** * 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 * @param sysUser @@ -316,7 +316,7 @@ * @param * @return */ - public List<SysUser> getAllUsersByRoleId(String roleId); + List<SysUser> getAllUsersByRoleId(String roleId); List<String> getUserByRoleCode(String roleCode); @@ -330,4 +330,11 @@ * @return */ List<UserSelector> selectOperatorList(String equipmentCode, String productionId, String positionCode); + + /** + * 鏍规嵁鐢ㄦ埛鍚嶆壒閲忚幏鍙栫湡瀹炲鍚嶆槧灏� + * @param userNames 鐢ㄦ埛鍚嶅垪琛� + * @return 鐢ㄦ埛鍚�->鐪熷疄濮撳悕鐨勬槧灏勶紙涓嶅瓨鍦ㄦ椂鍊间负null锛� + */ + Map<String, String> getUserRealNamesByUserNames(List<String> userNames); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index d2d6455..2518957 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -762,4 +763,35 @@ List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList()); return collect; } + + /** + * 鏍规嵁鐢ㄦ埛鍚嶆壒閲忚幏鍙栫湡瀹炲鍚嶆槧灏� + * @param userNames 鐢ㄦ埛鍚嶅垪琛� + * @return 鐢ㄦ埛鍚�->鐪熷疄濮撳悕鐨勬槧灏勶紙涓嶅瓨鍦ㄦ椂鍊间负null锛� + */ + @Override + public Map<String, String> getUserRealNamesByUserNames(List<String> userNames) { + if (CollectionUtils.isEmpty(userNames)) { + return Collections.emptyMap(); + } + + // 鍘婚噸骞惰繃婊ょ┖鍊� + Set<String> uniqueNames = userNames.stream() + .filter(StringUtils::isNotBlank) + .collect(Collectors.toSet()); + if (uniqueNames.isEmpty()) { + return Collections.emptyMap(); + } + + // 鎵归噺鏌ヨ锛堣嚜鍔ㄥ鐞咺N璇彞鍒嗙墖锛� + List<SysUser> users = userMapper.selectUsersByNames(new ArrayList<>(uniqueNames)); + + // 鏋勫缓鏄犲皠鍏崇郴 + return users.stream() + .collect(Collectors.toMap( + SysUser::getUsername, + SysUser::getRealname, + (existing, replacement) -> existing // 閲嶅閿鐞� + )); + } } -- Gitblit v1.9.3