diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java index 7d6718d2..1357020d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java @@ -161,9 +161,29 @@ public class MaterialMachineServiceImpl implements MaterialMachineService { } } } - Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); - if (deptId != null) { - bean.setImpUnit(deptId.toString()); + String deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId().toString(); + Set targetUnits = new HashSet<>(Arrays.asList( + "101", "102", "309", "327", "330", "333", "337", "338", + "339", "340", "341", "342", "344", "345", "346", "347", + "348", "349" + )); + if (targetUnits.contains(deptId)) { + bean.setImpUnit(deptId); + } else { + //判断祖籍是否包含分公司 + String ancestors = mapper.getAncestors(deptId); + if (ancestors != null && !ancestors.isEmpty()) { + // 将ancestors转换为集合 + String[] parts = ancestors.split(","); + for (String part : parts) { + String trimmedPart = part.trim(); + // Check if the trimmed part is in our target set + if (targetUnits.contains(trimmedPart)) { + bean.setImpUnit(trimmedPart); + break; + } + } + } } } // 查询目前在用的设备信息 @@ -800,9 +820,29 @@ public class MaterialMachineServiceImpl implements MaterialMachineService { } } } - Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); - if (deptId != null) { - bean.setImpUnit(deptId.toString()); + String deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId().toString(); + Set targetUnits = new HashSet<>(Arrays.asList( + "101", "102", "309", "327", "330", "333", "337", "338", + "339", "340", "341", "342", "344", "345", "346", "347", + "348", "349" + )); + if (targetUnits.contains(deptId)) { + bean.setImpUnit(deptId); + } else { + //判断祖籍是否包含分公司 + String ancestors = mapper.getAncestors(deptId); + if (ancestors != null && !ancestors.isEmpty()) { + // 将ancestors转换为集合 + String[] parts = ancestors.split(","); + for (String part : parts) { + String trimmedPart = part.trim(); + // Check if the trimmed part is in our target set + if (targetUnits.contains(trimmedPart)) { + bean.setImpUnit(trimmedPart); + break; + } + } + } } } // 获取项目部总数 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java index a5227df9..3698d3fa 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java @@ -355,4 +355,11 @@ public interface SelectMapper { * @return */ List getProDepartmentByPro(MaterialBackPreApply bean); + + /** + * 查询祖级部门id + * @param deptId + * @return + */ + String getAncestors(String deptId); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java index 70ffa0ac..284fcc41 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java @@ -2,6 +2,7 @@ package com.bonus.material.common.service.impl; import com.alibaba.nacos.common.utils.StringUtils; import com.bonus.common.biz.config.DateTimeHelper; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.domain.*; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; @@ -258,30 +259,59 @@ public class SelectServiceImpl implements SelectService { // 根据用户名判断用户是否为班组长 BmTeam teamData = mapper.getTeamData(username); List list = new ArrayList<>(); + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + String deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId().toString(); + Set targetUnits = new HashSet<>(Arrays.asList( + "101", "102", "309", "327", "330", "333", "337", "338", + "339", "340", "341", "342", "344", "345", "346", "347", + "348", "349" + )); + if (targetUnits.contains(deptId)) { + bmProject.setImpUnit(deptId); + } else { + //判断祖籍是否包含分公司 + String ancestors = mapper.getAncestors(deptId); + if (ancestors != null && !ancestors.isEmpty()) { + // 将ancestors转换为集合 + String[] parts = ancestors.split(","); + for (String part : parts) { + String trimmedPart = part.trim(); + // Check if the trimmed part is in our target set + if (targetUnits.contains(trimmedPart)) { + bmProject.setImpUnit(trimmedPart); + break; + } + } + } + } + } if (bmProject.getIsApp() != null && bmProject.getIsApp()) { list = mapper.getProjectInfo(bmProject); - if (CollectionUtils.isNotEmpty(list)) { - if (teamData == null) { + if (!hasSpecialRole) { + if (CollectionUtils.isNotEmpty(list)) { + if (teamData != null) { + // 根据班组用户查询工程信息 + List teamList = mapper.getProjectIdByUseName(username); + if (CollectionUtils.isEmpty(teamList)) { + return AjaxResult.success(Collections.emptyList()); + } + if (CollectionUtils.isNotEmpty(teamList)) { + // 找出list中projectId与projectIdList中相同的数据 + list = list.stream().filter(info -> teamList.contains(info.getProjectId())).collect(Collectors.toList()); + } + } // 根据用户名查询项目部信息 List departId = mapper.getDepartId(username); // 根据项目部id查询工程信息 - if (CollectionUtils.isEmpty(departId)) { - return AjaxResult.success(Collections.emptyList()); - } - List projectIdList = mapper.getProjectId(departId); - if (CollectionUtils.isNotEmpty(projectIdList)) { - // 找出list中projectId与projectIdList中相同的数据 - list = list.stream().filter(info -> projectIdList.contains(info.getProjectId())).collect(Collectors.toList()); - } - } else { - // 根据班组用户查询工程信息 - List teamList = mapper.getProjectIdByUseName(username); - if (CollectionUtils.isEmpty(teamList)) { - return AjaxResult.success(Collections.emptyList()); - } - if (CollectionUtils.isNotEmpty(teamList)) { - // 找出list中projectId与projectIdList中相同的数据 - list = list.stream().filter(info -> teamList.contains(info.getProjectId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(departId)) { + List projectIdList = mapper.getProjectId(departId); + if (CollectionUtils.isNotEmpty(projectIdList)) { + // 找出list中projectId与projectIdList中相同的数据 + list = list.stream().filter(info -> projectIdList.contains(info.getProjectId())).collect(Collectors.toList()); + } } } } @@ -289,6 +319,19 @@ public class SelectServiceImpl implements SelectService { return AjaxResult.success(list); } + /** + * 检查用户是否具有特殊角色 + * @param userRoles + * @return + */ + private boolean hasSpecialRole(Set userRoles) { + if (userRoles == null) { + return false; + } + List allowedRoles = GlobalConstants.allowedRoles; + return allowedRoles.stream().anyMatch(userRoles::contains); + } + /** * 领用申请往来单位下拉选专用 * @param bmUnit diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml index bcaac1e6..fc0bd8c8 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml @@ -1288,7 +1288,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bp.imp_unit AS impUnit, bu.bzz_idcard AS idCard, bp.pro_center AS proCenter, - sd.dept_name AS departName + sd.dept_name AS departName, + '站内库存' AS teamName FROM slt_agreement_info sai LEFT JOIN ma_type mt ON mt.type_id = sai.type_id @@ -1320,6 +1321,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND mt.type_name like concat('%',#{typeModelName},'%') + + AND '站内库存' like concat('%',#{teamName},'%') + and bp.external_id in @@ -1348,7 +1352,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bp.imp_unit AS impUnit, bu.bzz_idcard AS idCard, bp.pro_center AS proCenter, - sd.dept_name AS departName + sd.dept_name AS departName, + '站内库存' AS teamName FROM clz_slt_agreement_info sai LEFT JOIN ma_type mt ON mt.type_id = sai.type_id @@ -1376,6 +1381,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND mt2.type_name like concat('%',#{typeName},'%') + + AND '站内库存' like concat('%',#{teamName},'%') + AND mt.type_name like concat('%',#{typeModelName},'%') diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml index c591dc38..94de316b 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml @@ -475,11 +475,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT pro_id AS proId, pro_name AS proName, - external_id AS projectId + external_id AS projectId, + imp_unit AS impUnit FROM bm_project WHERE del_flag = '0' + + and imp_unit = #{impUnit} + @@ -1098,4 +1102,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE bai.project_id = #{proId} and bu.type_id = '36' + +