优化维修判断逻辑

This commit is contained in:
Vinjor 2024-10-17 16:18:55 +08:00
parent d10a19a252
commit d3783b1de9
3 changed files with 63 additions and 62 deletions

View File

@ -97,7 +97,7 @@ public interface DlRepairTicketsService extends IService<DlRepairTickets> {
* @author 小李 * @author 小李
* @date 9:28 2024/10/14 * @date 9:28 2024/10/14
**/ **/
Integer getUserRole(); String getUserRole();
/** /**
* 接单 * 接单

View File

@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.tickets.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.RepairConstants;
import cn.iocoder.yudao.common.RepairErrorCodeConstants; import cn.iocoder.yudao.common.RepairErrorCodeConstants;
import cn.iocoder.yudao.common.RepairRoleEnum;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.base.entity.RepairWorker; import cn.iocoder.yudao.module.base.entity.RepairWorker;
import cn.iocoder.yudao.module.base.service.RepairWorkerService; import cn.iocoder.yudao.module.base.service.RepairWorkerService;
@ -51,21 +51,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.XWPFTemplate;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.print.Doc;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Arrays; import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.common.BaseConstants.ORDER_TENANT_NAME; import static cn.iocoder.yudao.common.BaseConstants.ORDER_TENANT_NAME;
@ -138,6 +131,8 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
@Resource @Resource
@Lazy @Lazy
private RepairWorkerService repairWorkerService; private RepairWorkerService repairWorkerService;
@Resource
private RepairWorkerService workerService;
/** /**
* 维修工单表 新增 * 维修工单表 新增
@ -393,27 +388,28 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
**/ **/
@Override @Override
public IPage<DlRepairTickets> getPageType(DlRepairTicketsReqVO repairTicketsReqVO, Page<DlRepairTickets> page){ public IPage<DlRepairTickets> getPageType(DlRepairTicketsReqVO repairTicketsReqVO, Page<DlRepairTickets> page){
Integer userRole = getUserRole(); String userRoleCode = getUserRole();
switch (userRole){ if(userRoleCode.equals(RepairRoleEnum.ADMIN.getCode())|| userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())){
case 1: //维修管理员和总检看所有数据
break; }else if(userRoleCode.equals(RepairRoleEnum.ADVISOR.getCode())){
case 2: //服务顾问看自己的
repairTicketsReqVO.setAdviserId(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); repairTicketsReqVO.setAdviserId(String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
break; }else if(userRoleCode.equals(RepairRoleEnum.REPAIR_STAFF.getCode())){
case 3: //维修工进一步判断是否是班组长
// 查自己是什么班组的组长 boolean ifLeader = workerService.getIfLeader();
if(ifLeader){
//班组长看本班组所有数据
RepairWorker one = repairWorkerService.getOne(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getUserId, SecurityFrameworkUtils.getLoginUserId())); RepairWorker one = repairWorkerService.getOne(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getUserId, SecurityFrameworkUtils.getLoginUserId()));
// 查自己班组的员工信息 // 查自己班组的员工信息
List<RepairWorker> list = repairWorkerService.list(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getWorkType, one.getWorkType())); List<RepairWorker> list = repairWorkerService.list(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getWorkType, one.getWorkType()));
// 所有的员工信息 // 所有的员工信息
List<Long> userIds = list.stream().map(RepairWorker::getUserId).collect(Collectors.toList()); List<Long> userIds = list.stream().map(RepairWorker::getUserId).collect(Collectors.toList());
repairTicketsReqVO.setUserIds(userIds); repairTicketsReqVO.setUserIds(userIds);
break; }else{
case 4: //普通维修工
repairTicketsReqVO.setUserIds(Collections.singletonList(SecurityFrameworkUtils.getLoginUserId())); repairTicketsReqVO.setUserIds(Collections.singletonList(SecurityFrameworkUtils.getLoginUserId()));
break; }
case -1: }else{
default:
return null; return null;
} }
return baseMapper.getPageType(repairTicketsReqVO, page); return baseMapper.getPageType(repairTicketsReqVO, page);
@ -426,7 +422,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
* @date 9:28 2024/10/14 * @date 9:28 2024/10/14
**/ **/
@Override @Override
public Integer getUserRole(){ public String getUserRole(){
// 查看当前登录用户是什么角色 // 查看当前登录用户是什么角色
// 当前登录用户的角色信息 // 当前登录用户的角色信息
List<Long> byUserId = permissionApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId()); List<Long> byUserId = permissionApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId());
@ -435,29 +431,33 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// 过滤出登录用户有的角色信息 // 过滤出登录用户有的角色信息
List<RoleReqDTO> collect = roleList.stream().filter(item -> byUserId.contains(item.getId())).collect(Collectors.toList()); List<RoleReqDTO> collect = roleList.stream().filter(item -> byUserId.contains(item.getId())).collect(Collectors.toList());
// 取出角色名称 // 取出角色名称
List<String> names = collect.stream().map(RoleReqDTO::getName).collect(Collectors.toList()); List<String> codes = collect.stream().map(RoleReqDTO::getCode).collect(Collectors.toList());
// 维修业务管理员--可以看所有数据但不能做操作
if (codes.contains(RepairRoleEnum.ADMIN.getCode())){
return RepairRoleEnum.ADMIN.getCode();
}
// 总检 // 总检
if (names.contains(RepairConstants.GENERAL_INSPECTION)){ if (codes.contains(RepairRoleEnum.INSPECTION.getCode())){
return 1; return RepairRoleEnum.INSPECTION.getCode();
} }
// 服务顾问 // 服务顾问
if (names.contains(RepairConstants.SERVICE_ADVISOR)){ if (codes.contains(RepairRoleEnum.ADVISOR.getName())){
return 2; return RepairRoleEnum.ADVISOR.getName();
} }
// 班组长 // 维修工或班组长
if (names.contains(RepairConstants.TEAM_LEADER)){ if (codes.contains(RepairRoleEnum.REPAIR_STAFF.getCode())){
return 3; return RepairRoleEnum.REPAIR_STAFF.getCode();
}
// 维修工
if (names.contains(RepairConstants.REPAIR_STAFF)){
return 4;
} }
// 维修仓库管理员 // 维修仓库管理员
if(names.contains(RepairConstants.REPAIR_WAREHOUSE)){ if(codes.contains(RepairRoleEnum.WAREHOUSE.getCode())){
return 5; return RepairRoleEnum.WAREHOUSE.getCode();
}
// 维修财务
if(codes.contains(RepairRoleEnum.WXCW.getCode())){
return RepairRoleEnum.WXCW.getCode();
} }
// 啥也不是 // 啥也不是
return -1; return null;
} }
/** /**

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.tickets.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.RepairRoleEnum;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.base.entity.RepairWorker; import cn.iocoder.yudao.module.base.entity.RepairWorker;
import cn.iocoder.yudao.module.base.service.RepairWorkerService; import cn.iocoder.yudao.module.base.service.RepairWorkerService;
@ -75,6 +76,8 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
@Resource @Resource
@Lazy @Lazy
private RepairWaresService repairWaresService; private RepairWaresService repairWaresService;
@Resource
private RepairWorkerService workerService;
/** /**
* 分页查询 * 分页查询
@ -86,35 +89,33 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
@Override @Override
public IPage<DlTicketWares> getPage(DlTicketWaresReqVO reqVO, Page<DlTicketWares> page){ public IPage<DlTicketWares> getPage(DlTicketWaresReqVO reqVO, Page<DlTicketWares> page){
// 确认查看者身份 // 确认查看者身份
Integer userRole = repairTicketsService.getUserRole(); String userRoleCode = repairTicketsService.getUserRole();
// 啥也不是 if(userRoleCode.equals(RepairRoleEnum.ADMIN.getCode())|| userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())){
if (userRole == -1){ //维修管理员和总检看所有数据
return null; }else if(userRoleCode.equals(RepairRoleEnum.ADVISOR.getCode())){
}
switch (userRole){
//服务顾问 //服务顾问
case 2:
reqVO.setAdviserId(SecurityFrameworkUtils.getLoginUserId()); reqVO.setAdviserId(SecurityFrameworkUtils.getLoginUserId());
break; }else if(userRoleCode.equals(RepairRoleEnum.REPAIR_STAFF.getCode())){
// 班组长 //维修工进一步判断是否是班组长
case 3: boolean ifLeader = workerService.getIfLeader();
// 查自己是什么班组的组长 if(ifLeader){
//班组长看本班组所有数据
RepairWorker one = repairWorkerService.getOne(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getUserId, SecurityFrameworkUtils.getLoginUserId())); RepairWorker one = repairWorkerService.getOne(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getUserId, SecurityFrameworkUtils.getLoginUserId()));
// 查自己班组的员工信息 // 查自己班组的员工信息
List<RepairWorker> list = repairWorkerService.list(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getWorkType, one.getWorkType())); List<RepairWorker> list = repairWorkerService.list(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getWorkType, one.getWorkType()));
// 所有的员工信息 // 所有的员工信息
List<Long> userIds = list.stream().map(RepairWorker::getUserId).collect(Collectors.toList()); List<Long> userIds = list.stream().map(RepairWorker::getUserId).collect(Collectors.toList());
reqVO.setUserIds(userIds); reqVO.setUserIds(userIds);
break; }else{
// 维修工 //普通维修工
case 4:
reqVO.setUserIds(Collections.singletonList(SecurityFrameworkUtils.getLoginUserId())); reqVO.setUserIds(Collections.singletonList(SecurityFrameworkUtils.getLoginUserId()));
break; }
}else if(userRoleCode.equals(RepairRoleEnum.WAREHOUSE.getCode())){
// 维修仓库管理员 // 维修仓库管理员
case 5:
reqVO.setStatus(null); reqVO.setStatus(null);
reqVO.setUserRole(5); reqVO.setUserRole(5);
break; }else{
return null;
} }
return baseMapper.getPage(reqVO, page); return baseMapper.getPage(reqVO, page);
} }