diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/GlobalConstants.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/GlobalConstants.java index b2bade50..f137ce26 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/GlobalConstants.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/GlobalConstants.java @@ -1,5 +1,8 @@ package com.bonus.common.biz.constant; +import java.util.Arrays; +import java.util.List; + /** * 全局常量 * @author bns_han @@ -567,4 +570,9 @@ public class GlobalConstants { */ public static final String XLSX = "xlsx"; + /** + * 特殊角色权限全局配置 + */ + public static final List allowedRoles = Arrays.asList("ywgly", "16", "gy"); + } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java index d6da27e2..2f056064 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java @@ -7,6 +7,7 @@ import java.util.stream.Collectors; import cn.hutool.core.util.PhoneUtil; import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.TypeTreeNode; import com.bonus.common.biz.domain.lease.LeaseOutDetails; @@ -106,12 +107,17 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { //先根据外层id查询上层信息 BackApplyInfo backApplyInfo = backApplyInfoMapper.selectBackApplyInfoById(id); Long userId = SecurityUtils.getLoginUser().getUserid(); - - // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); - if (CollectionUtils.isEmpty(typeIdList)) { + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { backApplyInfo.setUserId(userId == 0 ? null : userId); } + // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + if (CollectionUtils.isEmpty(typeIdList)) { + backApplyInfo.setUserId(userId == 0 ? null : userId); + }*/ // 设置审批人签名url,目前固定查询夏成刚签名信息 BackApplyInfo info = backApplyInfoMapper.getDirectAuditUrl(backApplyInfo); @@ -147,11 +153,11 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { List backApplyDetailsList = backApplyInfoMapper.selectBackApplyDetailsListByTaskId(backApplyInfo); if (CollectionUtils.isNotEmpty(backApplyDetailsList)) { - if (!CollectionUtils.isEmpty(typeIdList)) { + /*if (!CollectionUtils.isEmpty(typeIdList)) { backApplyDetailsList = backApplyDetailsList.stream() .filter(item -> typeIdList.contains(item.getFirstId())) .collect(Collectors.toList()); - } + }*/ // 核心优化:减少数据库查询次数 // 1. 一次性查询编码设备信息 @@ -458,31 +464,14 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { .collect(Collectors.toList()); Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); - if (CollectionUtils.isEmpty(typeIdList)) { + //List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { backApplyInfo.setUserId(userId == 0 ? null : userId); } list = backApplyInfoMapper.selectBackApplyInfoList(backApplyInfo); - if (!CollectionUtils.isEmpty(typeIdList)) { - // 使用流过滤符合条件的元素 - list = list.stream() - .filter(item -> { - String firstIdStr = item.getFirstId(); - if (firstIdStr == null) { - return false; - } - // 将逗号分隔的字符串转为集合 - Set firstIds = Arrays.stream(firstIdStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .map(Long::parseLong) - .collect(Collectors.toSet()); - - // 判断两个集合是否有交集 - return firstIds.stream().anyMatch(typeIdList::contains); - }) - .collect(Collectors.toList()); - } for (BackApplyInfo applyInfo : list) { if (StringUtils.isNotBlank(applyInfo.getBackSignUrl())) { if (!applyInfo.getBackSignUrl().startsWith("http")) { @@ -491,7 +480,20 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { } } if (CollectionUtils.isNotEmpty(infos)) { - list.addAll(infos); + for (BackApplyInfo info : infos) { + // 假设Info类中有get单号Code()方法获取单号 + String infoCode = info.getCode(); + + // 检查list中是否已存在相同单号的元素 + boolean exists = list.stream() + .anyMatch(item -> infoCode.equals(item.getCode())); + + // 如果不存在则添加 + if (!exists) { + list.add(info); + } + } + } if (CollectionUtils.isNotEmpty( list)) { list = list.stream() @@ -529,6 +531,19 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { return 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 item @@ -1936,31 +1951,17 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { backApplyInfo.setIsSign(1); Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { backApplyInfo.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + backApplyInfo.setUserId(userId == 0 ? null : userId); } List list = backApplyInfoMapper.selectBackApplyInfoList(backApplyInfo); - if (!CollectionUtils.isEmpty(typeIdList)) { - // 使用流过滤符合条件的元素 - list = list.stream() - .filter(item -> { - String firstIdStr = item.getFirstId(); - if (firstIdStr == null) { - return false; - } - // 将逗号分隔的字符串转为集合 - Set firstIds = Arrays.stream(firstIdStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .map(Long::parseLong) - .collect(Collectors.toSet()); - - // 判断两个集合是否有交集 - return firstIds.stream().anyMatch(typeIdList::contains); - }) - .collect(Collectors.toList()); - } // 提取关键字 String keyWord = backApplyInfo.getKeyWord(); // 如果关键字不为空,进行过滤 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java index 507574e3..6b602579 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java @@ -97,6 +97,9 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { // 性能监控开始 long startTime = System.currentTimeMillis(); Map stepTimes = new LinkedHashMap<>(); + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); log.info("=== selectLeaseApplyInfoById开始执行,id: {}, keyword: {}, publishTask: {}", id, keyword, publishTask); @@ -110,14 +113,12 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { // 步骤2: 查询用户绑定的物资类型 long step2Start = System.currentTimeMillis(); - List typeIdList = leaseApplyInfoMapper.selectTypeIdList(userId); + //List typeIdList = leaseApplyInfoMapper.selectTypeIdList(userId); stepTimes.put("查询用户绑定物资类型", System.currentTimeMillis() - step2Start); - + // 步骤3: 设置查询参数 long step3Start = System.currentTimeMillis(); - if (!CollectionUtils.isEmpty(typeIdList)) { - leaseApplyInfo.setTypeIdList(typeIdList); - } else { + if (!hasSpecialRole) { leaseApplyInfo.setUserId(userId); } if (StringUtils.isNotBlank(keyword)) { @@ -192,8 +193,8 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { // 步骤8: 获取领料单详情 long step8Start = System.currentTimeMillis(); List details; - if (!CollectionUtils.isEmpty(typeIdList)) { - details = leaseApplyDetailsMapper.selectLeaseApplyDetailsList(new LeaseApplyDetails(info.getId(), keyword, null, typeIdList)); + if (hasSpecialRole) { + details = leaseApplyDetailsMapper.selectLeaseApplyDetailsList(new LeaseApplyDetails(info.getId(), keyword, null, null)); } else { details = leaseApplyDetailsMapper.selectLeaseApplyDetailsList(new LeaseApplyDetails(info.getId(), keyword, userId, null)); } @@ -467,10 +468,10 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { @Override public List selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo) { try { - Long userId = SecurityUtils.getLoginUser().getUserid(); - // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = leaseApplyInfoMapper.selectTypeIdList(userId); - if (CollectionUtils.isEmpty(typeIdList)) { + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { leaseApplyInfo.setUserId(SecurityUtils.getLoginUser().getUserid()); } //用leaseApplyInfo.getQueryType的值来区分是否是领用出库查询,如果是,时间筛选为发布时间 @@ -498,26 +499,6 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { Comparator.nullsFirst(Comparator.naturalOrder())).reversed()) .collect(Collectors.toList()); if (!CollectionUtils.isEmpty(sortedList)) { - if (!CollectionUtils.isEmpty(typeIdList)) { - // 使用流过滤符合条件的元素 - sortedList = sortedList.stream() - .filter(item -> { - String firstIdStr = item.getFirstId(); - if (firstIdStr == null) { - return false; - } - // 将逗号分隔的字符串转为集合 - Set firstIds = Arrays.stream(firstIdStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .map(Long::parseLong) - .collect(Collectors.toSet()); - - // 判断两个集合是否有交集 - return firstIds.stream().anyMatch(typeIdList::contains); - }) - .collect(Collectors.toList()); - } String keyWord = leaseApplyInfo.getKeyWord(); List statusList = leaseApplyInfo.getStatusList(); @@ -538,6 +519,19 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { } } + /** + * 检查用户是否具有特殊角色 + * @param userRoles + * @return + */ + private boolean hasSpecialRole(Set userRoles) { + if (userRoles == null) { + return false; + } + List allowedRoles = GlobalConstants.allowedRoles; + return allowedRoles.stream().anyMatch(userRoles::contains); + } + /** * 查询领用数据抽取 * @param leaseApplyInfo @@ -1530,9 +1524,11 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { msg = "监测到当前设备符合出库条件,请确认是否出库!"; }else{ msg = "监测到当前设备不符合出库条件,无法出库!"; + recordList = new ArrayList<>(); } } else { msg = "监测到当前设备不符合出库条件,无法出库!!"; + recordList = new ArrayList<>(); } // 返回包含设备列表和消息的结果 Map result = new HashMap<>(2); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssessmentServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssessmentServiceImpl.java index ec7e88f5..fec10498 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssessmentServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssessmentServiceImpl.java @@ -1,6 +1,7 @@ package com.bonus.material.lossAssessment.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.domain.BmFileInfo; import com.bonus.common.biz.enums.*; import com.bonus.common.core.exception.ServiceException; @@ -66,32 +67,18 @@ public class LossAssessmentServiceImpl implements LossAssessmentService { try { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { bean.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + bean.setUserId(userId == 0 ? null : userId); } List list = mapper.getLossAssessmentList(bean); if (CollectionUtil.isNotEmpty(list)) { - if (CollectionUtil.isNotEmpty(typeIdList)) { - // 使用流过滤符合条件的元素 - list = list.stream() - .filter(item -> { - String firstIdStr = item.getFirstId(); - if (firstIdStr == null) { - return false; - } - // 将逗号分隔的字符串转为集合 - Set firstIds = Arrays.stream(firstIdStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .map(Long::parseLong) - .collect(Collectors.toSet()); - - // 判断两个集合是否有交集 - return firstIds.stream().anyMatch(typeIdList::contains); - }) - .collect(Collectors.toList()); - } String keyWord = bean.getKeyWord(); // 如果关键字不为空,进行过滤 if (!StringUtils.isBlank(keyWord)) { @@ -107,6 +94,19 @@ public class LossAssessmentServiceImpl implements LossAssessmentService { } + /** + * 检查用户是否具有特殊角色 + * @param userRoles + * @return + */ + private boolean hasSpecialRole(Set userRoles) { + if (userRoles == null) { + return false; + } + List allowedRoles = GlobalConstants.allowedRoles; + return allowedRoles.stream().anyMatch(userRoles::contains); + } + @Override public List getLossAssessmentDetailsList(RepairTaskDetails bean) { try { diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java index bdc1c95f..34640638 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java @@ -1,6 +1,7 @@ package com.bonus.material.repair.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.repair.RepairInputDetails; import com.bonus.common.biz.domain.vo.KeyValueVO; @@ -100,19 +101,17 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService public List getRepairAuditList(RepairAuditDetails repairAuditDetails) { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { repairAuditDetails.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + repairAuditDetails.setUserId(userId == 0 ? null : userId); } - List list = repairAuditDetailsMapper.selectRepairAuditDetailsList(repairAuditDetails); - if (CollectionUtil.isNotEmpty(list)) { - if (CollectionUtil.isNotEmpty(typeIdList)) { - list = list.stream() - .filter(item -> typeIdList.contains(item.getFirstId())) - .collect(Collectors.toList()); - } - } - return list; + return repairAuditDetailsMapper.selectRepairAuditDetailsList(repairAuditDetails); } @Override @@ -139,35 +138,19 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService public List selectRepairQuestList(RepairAuditDetails repairAuditDetails) { try { Long userId = SecurityUtils.getLoginUser().getUserid(); - // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 + /*// 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { repairAuditDetails.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + repairAuditDetails.setUserId(userId == 0 ? null : userId); } // 获取所有需要查询的 taskId、过滤空的 List repairQuestList = repairAuditDetailsMapper.selectRepairQuestList(repairAuditDetails); - if (CollectionUtil.isNotEmpty(repairQuestList)) { - if (CollectionUtil.isNotEmpty(typeIdList)) { - // 使用流过滤符合条件的元素 - repairQuestList = repairQuestList.stream() - .filter(item -> { - String firstIdStr = item.getFirstId(); - if (firstIdStr == null) { - return false; - } - // 将逗号分隔的字符串转为集合 - Set firstIds = Arrays.stream(firstIdStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .map(Long::parseLong) - .collect(Collectors.toSet()); - - // 判断两个集合是否有交集 - return firstIds.stream().anyMatch(typeIdList::contains); - }) - .collect(Collectors.toList()); - } - } // 通过流过滤掉空对象 并转换为 List集合 List taskIds = repairQuestList.stream() .filter(Objects::nonNull) @@ -210,6 +193,19 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService } } + /** + * 检查用户是否具有特殊角色 + * @param userRoles + * @return + */ + private boolean hasSpecialRole(Set userRoles) { + if (userRoles == null) { + return false; + } + List allowedRoles = GlobalConstants.allowedRoles; + return allowedRoles.stream().anyMatch(userRoles::contains); + } + /** * 关键字搜索 * @param item diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java index 6582d0cc..27aaf281 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java @@ -10,6 +10,7 @@ import java.util.stream.Collectors; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.lease.LeaseOutDetails; import com.bonus.common.biz.enums.*; @@ -79,17 +80,18 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService public List selectRepairInputDetailsById(RepairInputDetails repairInputDetails) { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (org.springframework.util.CollectionUtils.isEmpty(typeIdList)) { repairInputDetails.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + repairInputDetails.setUserId(userId == 0 ? null : userId); } List inputInfos = repairInputDetailsMapper.selectRepairInputDetailsById(repairInputDetails); if (CollectionUtils.isNotEmpty(inputInfos)) { - if (CollectionUtils.isNotEmpty(typeIdList)) { - inputInfos = inputInfos.stream() - .filter(info -> typeIdList.contains(info.getFirstId())) - .collect(Collectors.toList()); - } for (RepairInputInfo inputInfo : inputInfos) { RepairInputDetails inputDetails = new RepairInputDetails(); inputDetails.setTaskId(inputInfo.getTaskId()); @@ -130,31 +132,18 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService public List selectRepairInputDetailsList(RepairInputDetails repairInputDetails) { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /* List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (org.springframework.util.CollectionUtils.isEmpty(typeIdList)) { repairInputDetails.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + repairInputDetails.setUserId(userId == 0 ? null : userId); } List list = repairInputDetailsMapper.selectRepairInputDetailsList(repairInputDetails); if (CollectionUtils.isNotEmpty(list)) { - if (CollectionUtils.isNotEmpty(typeIdList)) { - list = list.stream() - .filter(item -> { - String firstIdStr = item.getFirstId(); - if (firstIdStr == null) { - return false; - } - // 将逗号分隔的字符串转为集合 - Set firstIds = Arrays.stream(firstIdStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .map(Long::parseLong) - .collect(Collectors.toSet()); - - // 判断两个集合是否有交集 - return firstIds.stream().anyMatch(typeIdList::contains); - }) - .collect(Collectors.toList()); - } for (RepairInputDetails inputDetails : list) { // 根据taskId和userId查询详情,赋值最外层任务状态 inputDetails.setUserId(SecurityUtils.getLoginUser().getUserid()); @@ -199,6 +188,19 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService return 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 item diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 2feb2ea6..2520bece 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -1,6 +1,7 @@ package com.bonus.material.repair.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.enums.*; import com.bonus.common.core.exception.ServiceException; @@ -108,9 +109,15 @@ public class RepairServiceImpl implements RepairService { public List getRepairTaskList(RepairTask bean) { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { bean.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + bean.setUserId(userId == 0 ? null : userId); } List list = repairMapper.getRepairTaskList(bean); if (CollectionUtil.isNotEmpty(list)) { @@ -121,7 +128,7 @@ public class RepairServiceImpl implements RepairService { repairTask.setNum(task.getNum()); } } - if (CollectionUtil.isNotEmpty(typeIdList)) { + /*if (CollectionUtil.isNotEmpty(typeIdList)) { // 使用流过滤符合条件的元素 list = list.stream() .filter(item -> { @@ -140,7 +147,7 @@ public class RepairServiceImpl implements RepairService { return firstIds.stream().anyMatch(typeIdList::contains); }) .collect(Collectors.toList()); - } + }*/ String keyWord = bean.getKeyWord(); // 如果关键字不为空,进行过滤 if (!StringUtils.isBlank(keyWord)) { @@ -152,6 +159,19 @@ public class RepairServiceImpl implements RepairService { return list; } + /** + * 检查用户是否具有特殊角色 + * @param userRoles + * @return + */ + private boolean hasSpecialRole(Set userRoles) { + if (userRoles == null) { + return false; + } + List allowedRoles = GlobalConstants.allowedRoles; + return allowedRoles.stream().anyMatch(userRoles::contains); + } + /** * 关键字搜索 * @@ -177,19 +197,25 @@ public class RepairServiceImpl implements RepairService { public List getRepairDeviceSummary(RepairTaskDetails bean) { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { bean.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + bean.setUserId(userId == 0 ? null : userId); } List repairDeviceSummaryVoList = new ArrayList<>(); List repairDeviceList = repairMapper.getRepairDeviceList(bean); - if (CollectionUtil.isNotEmpty(repairDeviceList)) { + /*if (CollectionUtil.isNotEmpty(repairDeviceList)) { if (CollectionUtil.isNotEmpty(typeIdList)) { repairDeviceList = repairDeviceList.stream() .filter(item -> typeIdList.contains(item.getFirstId())) .collect(Collectors.toList()); } - } + }*/ Map> map = repairDeviceList.stream().collect(Collectors.groupingBy(RepairDeviceVO::getTypeId)); for (Long key : map.keySet()) { List tempList = map.get(key); @@ -1710,19 +1736,18 @@ public class RepairServiceImpl implements RepairService { try { Long userId = SecurityUtils.getLoginUser().getUserid(); // 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息 - List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); + /*List typeIdList = backApplyInfoMapper.selectTypeIdList(userId); if (CollectionUtils.isEmpty(typeIdList)) { bean.setUserId(userId == 0 ? null : userId); + }*/ + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + bean.setUserId(userId == 0 ? null : userId); } List repairDeviceSummaryVoList = new ArrayList<>(); List repairDeviceList = repairMapper.getAppRepairMaTypeListNew(bean); - if (CollectionUtil.isNotEmpty(repairDeviceList)) { - if (CollectionUtil.isNotEmpty(typeIdList)) { - repairDeviceList = repairDeviceList.stream() - .filter(item -> typeIdList.contains(item.getFirstId())) - .collect(Collectors.toList()); - } - } Map> map = repairDeviceList.stream().collect(Collectors.groupingBy(RepairDeviceVO::getTypeId)); for (Long key : map.keySet()) { List tempList = map.get(key); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/service/impl/ScrapApplyDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/service/impl/ScrapApplyDetailsServiceImpl.java index 124ed643..6882f02c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/service/impl/ScrapApplyDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/service/impl/ScrapApplyDetailsServiceImpl.java @@ -437,7 +437,7 @@ public class ScrapApplyDetailsServiceImpl implements IScrapApplyDetailsService { newTaskId = insertTt(taskId); result += insertTta(newTaskId, scrapApplyDetails); } else { - newTaskId = insertScrapTt(); + newTaskId = insertScrapTtReject(); } if (CollectionUtils.isNotEmpty(scrapApplyDetailsList)) { for (ScrapApplyDetails applyDetails : scrapApplyDetailsList) { @@ -490,6 +490,28 @@ public class ScrapApplyDetailsServiceImpl implements IScrapApplyDetailsService { return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg()); } + /** + * 插入驳回报废任务 + * @return + */ + private Long insertScrapTtReject() { + Long newTask = null; + int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_PART_SCRAP.getTaskTypeId()); + // 生成盘点报废单号 + String code = genderBfTaskCode(thisMonthMaxOrder); + TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_PART_SCRAP.getTaskTypeId(), RepairInputStatusEnum.INPUT_TASK_TO_REJECT.getStatus(), + null,thisMonthMaxOrder + 1, code); + tmTask.setCreateTime(DateUtils.getNowDate()); + tmTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + // 插入任务 + int taskId = taskMapper.insertTmTask(tmTask); + // 如果插入成功且返回的 taskId 大于 0 + if (taskId > 0 && tmTask.getTaskId() > 0) { + newTask = tmTask.getTaskId(); + } + return newTask; + } + /** * 查询报废台账审核总费用 * @param scrapApplyDetails diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml index 8d34c9e3..315302ee 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml @@ -325,10 +325,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" CASE mt.manage_type WHEN 0 THEN IFNULL(subquery0.num, 0)+ IFNULL(subquery1.usNum, 0) + IFNULL(subquery2.dsNum, 0) + IFNULL(subquery2.repairNum, 0) + IFNULL(subquery3.repairInputNum, 0) - + IFNULL(subquery12.repairAuditNum, 0) + IFNULL(subquery4.inputNum, 0) + IFNULL(subquery6.pendingScrapNum, 0) + + IFNULL(subquery12.repairAuditNum, 0) + IFNULL(subquery4.inputNum, 0) ELSE IFNULL(mt.storage_num, 0)+ IFNULL(subquery1.usNum, 0) + IFNULL(subquery2.dsNum, 0) + IFNULL(subquery2.repairNum, 0) + IFNULL(subquery3.repairInputNum, 0) - + IFNULL(subquery12.repairAuditNum, 0) + IFNULL(subquery4.inputNum, 0) + IFNULL(subquery6.pendingScrapNum, 0) + + IFNULL(subquery12.repairAuditNum, 0) + IFNULL(subquery4.inputNum, 0) END AS allNum, CASE mt.manage_type WHEN 0 THEN diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml index 57d03124..e83797bb 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml @@ -354,6 +354,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id AND mt1.del_flag = '0' where mm.qr_code = #{qrCode} + + and mt.type_id = #{typeId} +