package com.hxzk.gps.service.impl.Department; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hxzk.gps.controller.DepartMent.Results.DepartMentResult; import com.hxzk.gps.controller.DepartMent.dto.DpeartMentTreeTableDto; import com.hxzk.gps.controller.Person.Results.PersonResult; import com.hxzk.gps.controller.System.SystemLogUtil; import com.hxzk.gps.entity.Department.TbDepartment; import com.hxzk.gps.entity.Person.TbPerson; import com.hxzk.gps.entity.System.TbSystemOperationLog; import com.hxzk.gps.mapper.Department.TbDepartmentMapper; import com.hxzk.gps.service.Company.TbCompanyService; import com.hxzk.gps.service.Department.TbDepartmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hxzk.gps.service.System.TbSystemOperationLogService; import com.hxzk.gps.util.AuToComplete; import com.hxzk.gps.util.GetUser.UserInfoUtil; import com.hxzk.gps.util.MessageUtils.MessageUtils; import com.hxzk.gps.util.Result.ReturnMessage; import com.hxzk.gps.util.Result.TableDto; import com.hxzk.gps.util.Time.TimeUtil; import com.hxzk.gps.util.UDP.UDP_Department; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author YuZhiTong * @since 2025-05-18 */ @Service public class TbDepartmentServiceImpl extends ServiceImpl implements TbDepartmentService { @Autowired TbCompanyService companyService; @Autowired TbSystemOperationLogService systemOperationLogService; @Override public DepartMentResult FindDepartmentInfo(DpeartMentTreeTableDto departmentTreeTableDto) { // 创建查询包装器 QueryWrapper queryWrapper = new QueryWrapper<>(); // 处理部门 ID 为空的情况 if (StringUtils.isEmpty(departmentTreeTableDto.getDepartmentId())) { List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId()); queryWrapper.in("companyid", list); } else { queryWrapper.eq("companyid", departmentTreeTableDto.getDepartmentId()); } // 处理部门名称查询条件 Optional.ofNullable(departmentTreeTableDto.getDepartmentname()).ifPresent(departmentname -> queryWrapper.like("departmentname", departmentname)); // 使用PageHelper进行分页查询 Page page = PageHelper.startPage(departmentTreeTableDto.getPageNum(), departmentTreeTableDto.getPageSize()) .doSelectPage(() -> baseMapper.selectList(queryWrapper)); // 封装部门列表 TableDto tableDto = new TableDto(page.getResult(), page.getPageNum(), page.getPageSize(), page.getTotal()); // 获取成功消息 String message = MessageUtils.getMessage("Success"); // 返回结果 return new DepartMentResult(200, message, tableDto); } @Override public List DepartmentAutocomplete(TbDepartment department) { if (department.getCompanyid().equals("")){ department.setCompanyid(UserInfoUtil.getUserCompanyId()); } List companyids = companyService.getChildCompanyIds(department.getCompanyid()); QueryWrapper queryWrapper = new QueryWrapper<>(); String id = Optional.ofNullable(department.getCompanyid()) .filter(s -> !s.isEmpty()) .orElse(UserInfoUtil.getUserCompanyId()); queryWrapper.in("companyid",companyids); List departmentList = baseMapper.selectList(queryWrapper); List addCustomerList = departmentList.stream() .map(departments -> { AuToComplete addCustomer = new AuToComplete(); addCustomer.setValue(departments.getDepartmentname()); addCustomer.setLink(String.valueOf(departments.getId())); return addCustomer; }) .collect(Collectors.toList()); return addCustomerList; } @Override public TbDepartment FindOneDepartMent(TbPerson person) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("departmentname",person.getPDepartment()); queryWrapper.eq("company",Optional.ofNullable(person.getCompany()).orElse(UserInfoUtil.getUserCompany())); return baseMapper.selectOne(queryWrapper); } /* * 新增部门 * @param department 部门信息 * @return 结果信息 * */ @Override public ReturnMessage add(TbDepartment department) { /* 声明操作状态 * */ boolean isSuccess = false; department.setCompanyid(UserInfoUtil.isNullGetCompanyId(department.getCompanyid())); // 检查部门是否重复 if (isDepartmentRepeat(department)) { return ReturnMessage.ReturnMessageError("DepartmentRepeat"); } try { department.setBaoliu5(UserInfoUtil.getUserName()); department.setAddtime(TimeUtil.GetTime()); baseMapper.insert(department); /* * 发送指令到CS * */ UDP_Department.AddDepartment(department); isSuccess = true; }catch (Exception e){ } return SystemLogUtil.handleAddResult(isSuccess,"DepartmentAdd",department.getDepartmentname()); } /* * 修改部门 * @param department 部门图标信息 * @return 结果信息 * */ @Override public ReturnMessage update(TbDepartment department) { /* 声明操作状态 * */ boolean isSuccess = false; // 设置公司 ID department.setCompanyid(UserInfoUtil.isNullGetCompanyId(department.getCompanyid())); // 检查部门是否重复 if (isUpDepartmentRepeat(department)) { return ReturnMessage.ReturnMessageError("DepartmentRepeat"); } try { // 更新部门信息 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", department.getId()); department.setAddtime(TimeUtil.GetTime()); baseMapper.update(department, queryWrapper); /* * 发送指令到CS * */ UDP_Department.UpDepartment(department); isSuccess = true; }catch (Exception e){ } return SystemLogUtil.handleUpdateResult(isSuccess,"DepartmentUpdate",department.getDepartmentname()); } /* * 删除部门 * @param department 部门信息 * @return 结果信息 * */ @Override public ReturnMessage delete(TbDepartment department) { /* 声明操作状态 * */ boolean isSuccess = false; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id",department.getId()); try { baseMapper.delete(queryWrapper); UDP_Department.DeDepartment(department); isSuccess = true; }catch (Exception e){ } return SystemLogUtil.handleDeleteResult(isSuccess,"DepartmentDelete",department.getDepartmentname()); } /** * 检查部门是否重复 * @param department 部门信息 * @return 如果部门重复返回 true,否则返回 false */ private boolean isDepartmentRepeat(TbDepartment department) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("company", department.getCompany()) .eq("departmentname", department.getDepartmentname()); return baseMapper.selectCount(queryWrapper) > 0; } private boolean isUpDepartmentRepeat(TbDepartment department) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("company", department.getCompany()) .eq("departmentname", department.getDepartmentname()); return baseMapper.selectCount(queryWrapper) > 1; } }