更新0804

This commit is contained in:
xyc 2025-08-04 16:14:04 +08:00
parent 17b5bbf83b
commit cf9b1f9234
8 changed files with 261 additions and 28 deletions

View File

@ -2602,14 +2602,17 @@ public class AppInspectionPartnerServiceImpl extends ServiceImpl<AppInspectionPa
).reversed());
// 对每个员工的 children count 降序排序
// 对每个员工的 children先移除 count == 0 的项再按 count 降序排序
staffCount.forEach(staff -> {
List<Map<String, Object>> children = (List<Map<String, Object>>) staff.get("children");
if (children != null) {
children.removeIf(child -> ((Long) child.getOrDefault("count", 0L)) == 0L);
children.sort(Comparator.comparingLong(
(Map<String, Object> child) -> (Long) child.getOrDefault("count", 0L)
).reversed());
}
});
return staffCount;
}

View File

@ -200,27 +200,7 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
List<UserDTO> tenantAdmin = roleApi.selectUserListByRoleCode(SecurityFrameworkUtils.getLoginUser().getTenantId(), "tenant_admin");
String content = String.join(",", keys);
if (CollUtil.isNotEmpty(tenantAdmin)) {
// 判断是服务套餐是检测还是驾校
switch (inspectionFile.getServicePackageId()) {
case "jiance":
for (UserDTO userDTO : tenantAdmin) {
noticeService.sentMessage(userDTO.getId(), content);
}
break;
case "jiaxiao":
for (UserDTO userDTO : tenantAdmin) {
// 准备发送参数
Map<String, Object> templateParams = new HashMap<>();
// 发送模版内容
templateParams.put("text", content);
commonNotifyMessageSendService.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
.setUserId(userDTO.getId())
.setTemplateCode(TICKET_EMPLOY)
.setSystemCode(SystemEnum.SCHOOL.getCode())
.setTemplateParams(templateParams));
}
break;
}
this.sendMessage(tenantAdmin.stream().map(UserDTO::getId).collect(Collectors.toList()), content, inspectionFile.getServicePackageId());
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
@ -759,4 +739,26 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
return parentFiles;
}
/**
* 发送消息
* @param userIdS 接收人id集合
* @param text 消息内容
* @param code 服务套餐id
*/
public void sendMessage(List<Long> userIdS, String text, String code) {
// 准备发送参数
Map<String, Object> templateParams = new HashMap<>();
// 发送模版内容
templateParams.put("text", text);
// 发送站内信
userIdS.forEach(userId -> {
commonNotifyMessageSendService.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
.setUserId(userId)
.setTemplateCode(TICKET_EMPLOY)
.setSystemCode(code)
.setTemplateParams(templateParams));
});
}
}

View File

@ -2,22 +2,42 @@ package cn.iocoder.yudao.module.base.controller.admin;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.CommonErrorCodeConstants;
import cn.iocoder.yudao.common.SystemEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.base.entity.RepairStaff;
import cn.iocoder.yudao.module.base.entity.RepairStaffSaveVo;
import cn.iocoder.yudao.module.base.service.RepairStaffService;
import cn.iocoder.yudao.module.staff.entity.CompanyStaff;
import cn.iocoder.yudao.module.staff.service.CompanyStaffService;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@RestController
@RequestMapping("/base/repair-staff")
@RequiredArgsConstructor
@ -25,6 +45,8 @@ public class RepairStaffController {
private final AdminUserService userService;
private final RoleService roleService;
private final RepairStaffService repairStaffService;
/**
* 获取维修员工信息
*
@ -36,7 +58,7 @@ public class RepairStaffController {
// 查询信息
AdminUserDO user = userService.getUser(id);
if (user == null) {
return CommonResult.error(400,"用户不存在");
return CommonResult.error(400, "用户不存在");
}
// 查询对应角色
@ -53,7 +75,40 @@ public class RepairStaffController {
.collect(Collectors.toList());
repairStaff.setRoles(weixiuRoleDOS);
return CommonResult.success(repairStaff);
return success(repairStaff);
}
/**
* 新增员工
*
* @param repairStaff 员工信息
* @return
*/
@PostMapping
public CommonResult<?> addStaff(@RequestBody RepairStaffSaveVo repairStaff) {
repairStaffService.addStaff(repairStaff);
return CommonResult.ok();
}
@GetMapping("/listSelectUser")
public CommonResult<?> listSelectUser(@Valid UserPageReqVO pageReqVO){
// 查询目前所有的userId
RolePageReqVO role = new RolePageReqVO();
role.setPageNo(1);
role.setPageSize(1000000);
IPage<UserDTO> userDTOIPage = roleService.selectListByRoleIdRepair(role);
// 获取所有的userId
List<Long> ids = userDTOIPage.getRecords().stream().map(UserDTO::getId).collect(Collectors.toList());
pageReqVO.setUserIds(ids);
// 获得用户分页列表
PageResult<AdminUserDO> pageResult = userService.getUserPage(pageReqVO);
return success(new PageResult<>(pageResult.getList(), pageResult.getTotal()));
}
@DeleteMapping("/deleteStaff")
public CommonResult<?> deleteStaff(Long id) {
repairStaffService.deleteStaff(id);
return CommonResult.ok();
}
}

View File

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.base.entity;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import lombok.Data;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@Data
public class RepairStaffSaveVo {
/**
* 选择的员工
*/
public List<UserDTO> repairStaffs;
/**
* 角色id
*/
private Set<Long> roleIds = Collections.emptySet();
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.base.service;
import cn.iocoder.yudao.module.base.entity.RepairStaffSaveVo;
public interface RepairStaffService {
/**
* 新增员工
*
* @param repairStaff
*/
public void addStaff(RepairStaffSaveVo repairStaff);
/**
* 删除员工
* @param id
*/
void deleteStaff(Long id);
}

View File

@ -0,0 +1,133 @@
package cn.iocoder.yudao.module.base.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.CommonErrorCodeConstants;
import cn.iocoder.yudao.common.SystemEnum;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.base.entity.RepairStaffSaveVo;
import cn.iocoder.yudao.module.base.service.RepairStaffService;
import cn.iocoder.yudao.module.staff.entity.CompanyStaff;
import cn.iocoder.yudao.module.staff.service.CompanyStaffService;
import cn.iocoder.yudao.module.staff.service.UniqueCodeService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@Service
@RequiredArgsConstructor
public class RepairStaffServiceImpl implements RepairStaffService {
private final AdminUserService userService;
private final RoleService roleService;
private final PermissionService permissionService;
private final CompanyStaffService companyStaffService;
private final DeptApi deptApi;
private final AdminUserApi adminUserApi;
private final UniqueCodeService uniqueCodeService;
public void addStaff(RepairStaffSaveVo repairStaff) {
// 获取当前登录用户的详细信息
AdminUserRespDTO loginUser = getLoginUser();
// 1. 分配角色
repairStaff.getRepairStaffs().forEach(item -> {
permissionService.assignUserRoleByServicePackageId(item.getId(), repairStaff.getRoleIds(), SystemEnum.REPAIR.getCode());
});
// 2. 查看员工表中是否存在
List<Long> oldIds = repairStaff.getRepairStaffs().stream().map(UserDTO::getId).collect(Collectors.toList());
List<CompanyStaff> staffList = companyStaffService.list(Wrappers.<CompanyStaff>lambdaQuery()
.in(CompanyStaff::getUserId, oldIds));
// 获取员工表中已有的用户ID集合
Set<Long> existUserIds = staffList.stream()
.map(CompanyStaff::getUserId)
.collect(Collectors.toSet());
// 找出不存在于员工表中的用户ID
List<UserDTO> notExistUsers = repairStaff.getRepairStaffs().stream()
.filter(user -> !existUserIds.contains(user.getId()))
.collect(Collectors.toList());
/* 插入员工库 */
DeptRespDTO loginDept = getLoginDept(loginUser.getDeptId());
// 添加员工
if (CollectionUtil.isNotEmpty(notExistUsers)) {
List<CompanyStaff> companyStaffs = new ArrayList<>();
for (UserDTO notExistUser : notExistUsers) {
CompanyStaff companyStaff = new CompanyStaff();
// 1 获取当前登录用户的企业信息给添加的员工
// 2 生成唯一推广码
String uniqueCode = uniqueCodeService.createUniqueCode();
if (!ObjectUtil.isNotEmpty(uniqueCode)) {
throw exception(CommonErrorCodeConstants.UNIQUE_CODE_CREATE_REPEAT);
}
companyStaff.setCorpId(loginDept.getCorpId());
companyStaff.setUserId(notExistUser.getId());
companyStaff.setName(notExistUser.getNickname());
companyStaff.setTel(notExistUser.getUsername());
companyStaff.setUniqueCode(uniqueCode);
companyStaffs.add(companyStaff);
}
companyStaffService.saveBatch(companyStaffs);
}
}
/**
* 删除员工
*
* @param id
*/
@Override
public void deleteStaff(Long id) {
boolean remove = companyStaffService.remove(Wrappers.<CompanyStaff>lambdaQuery()
.eq(CompanyStaff::getUserId, id));
}
/**
* 获取当前登录用户的部门详细信息
*
* @param deptId 部门ID
* @author 小李
* @date 17:28 2024/8/9
**/
private DeptRespDTO getLoginDept(Long deptId) {
return deptApi.getDept(deptId);
}
/**
* 获取当前登录用户的详细信息
*
* @author 小李
* @date 17:27 2024/8/9
**/
private AdminUserRespDTO getLoginUser() {
Long userId = SecurityFrameworkUtils.getLoginUserId();
return adminUserApi.getUser(userId);
}
}

View File

@ -393,7 +393,7 @@ public class RoleServiceImpl implements RoleService {
*
* @param roleId
* @return
*/
*/
@Override
public List<UserDTO> getListByUserId(Integer roleId) {
List<UserDTO> userDTOS = userRoleMapper.selectByRoleId(roleId);

View File

@ -97,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from system_users su
left join system_user_role sr on su.id = sr.user_id and sr.deleted = 0
left join system_role sr2 on sr.role_id = sr2.id
-- INNER JOIN dl_repair_worker dsc ON dsc.user_id = su.id
INNER JOIN company_staff dsc ON dsc.user_id = su.id
<where>
su.deleted = 0 and sr2.service_package_id = 'weixiu'