From cf9b1f9234f9589af8b4bb4cde71798ae7305019 Mon Sep 17 00:00:00 2001 From: xyc <3422692813@qq.com> Date: Mon, 4 Aug 2025 16:14:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B00804?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AppInspectionPartnerServiceImpl.java | 3 + .../impl/InspectionFileServiceImpl.java | 44 +++--- .../admin/RepairStaffController.java | 65 ++++++++- .../module/base/entity/RepairStaffSaveVo.java | 21 +++ .../base/service/RepairStaffService.java | 19 +++ .../service/impl/RepairStaffServiceImpl.java | 133 ++++++++++++++++++ .../service/permission/RoleServiceImpl.java | 2 +- .../main/resources/mapper/UserRoleMapper.xml | 2 +- 8 files changed, 261 insertions(+), 28 deletions(-) create mode 100644 dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java create mode 100644 dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java create mode 100644 dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java index e92bfec1..269bb851 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java @@ -2602,14 +2602,17 @@ public class AppInspectionPartnerServiceImpl extends ServiceImpl { List> children = (List>) staff.get("children"); if (children != null) { + children.removeIf(child -> ((Long) child.getOrDefault("count", 0L)) == 0L); children.sort(Comparator.comparingLong( (Map child) -> (Long) child.getOrDefault("count", 0L) ).reversed()); } }); + return staffCount; } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java index b13b3801..6e4b74e7 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java @@ -200,27 +200,7 @@ public class InspectionFileServiceImpl extends ServiceImpl 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 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 userIdS, String text, String code) { + // 准备发送参数 + Map templateParams = new HashMap<>(); + // 发送模版内容 + templateParams.put("text", text); + // 发送站内信 + userIdS.forEach(userId -> { + commonNotifyMessageSendService.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO() + .setUserId(userId) + .setTemplateCode(TICKET_EMPLOY) + .setSystemCode(code) + .setTemplateParams(templateParams)); + }); + + } + } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java index 9a914b5a..364e02fa 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java @@ -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 userDTOIPage = roleService.selectListByRoleIdRepair(role); + // 获取所有的userId + List ids = userDTOIPage.getRecords().stream().map(UserDTO::getId).collect(Collectors.toList()); + pageReqVO.setUserIds(ids); + // 获得用户分页列表 + PageResult 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(); } } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java new file mode 100644 index 00000000..b689d532 --- /dev/null +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java @@ -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 repairStaffs; + /** + * 角色id + */ + private Set roleIds = Collections.emptySet(); +} diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java new file mode 100644 index 00000000..37e1f472 --- /dev/null +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java @@ -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); +} diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java new file mode 100644 index 00000000..1d65993e --- /dev/null +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java @@ -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 oldIds = repairStaff.getRepairStaffs().stream().map(UserDTO::getId).collect(Collectors.toList()); + List staffList = companyStaffService.list(Wrappers.lambdaQuery() + .in(CompanyStaff::getUserId, oldIds)); + + // 获取员工表中已有的用户ID集合 + Set existUserIds = staffList.stream() + .map(CompanyStaff::getUserId) + .collect(Collectors.toSet()); + + // 找出不存在于员工表中的用户ID + List notExistUsers = repairStaff.getRepairStaffs().stream() + .filter(user -> !existUserIds.contains(user.getId())) + .collect(Collectors.toList()); + + /* 插入员工库 */ + DeptRespDTO loginDept = getLoginDept(loginUser.getDeptId()); + + // 添加员工 + if (CollectionUtil.isNotEmpty(notExistUsers)) { + List 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.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); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java index cc601948..5dd1a110 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java @@ -393,7 +393,7 @@ public class RoleServiceImpl implements RoleService { * * @param roleId * @return - */ + */ @Override public List getListByUserId(Integer roleId) { List userDTOS = userRoleMapper.selectByRoleId(roleId); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/UserRoleMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/UserRoleMapper.xml index d6f9d417..2bdf6635 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/UserRoleMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/UserRoleMapper.xml @@ -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 su.deleted = 0 and sr2.service_package_id = 'weixiu'