| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package com.ydtech.modules.admin.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.modules.admin.dao.SysOrganizationQuotationDao;
- import com.ydtech.modules.admin.dao.SysQuotationThemeDao;
- import com.ydtech.modules.admin.model.SysDept;
- import com.ydtech.modules.admin.model.dto.SysUserDto;
- import com.ydtech.modules.admin.model.po.SysOrganizationQuotation;
- import com.ydtech.modules.admin.model.po.SysQuotationTheme;
- import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
- import com.ydtech.modules.admin.service.SysOrganizationQuotationService;
- import com.ydtech.modules.admin.service.SysUserService;
- import com.ydtech.modules.base.model.dto.PageDto;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- @Service
- public class SysOrganizationQuotationImpl extends ServiceImpl<SysOrganizationQuotationDao, SysOrganizationQuotation> implements SysOrganizationQuotationService {
- /**
- * 通过递归遍历部门树结构,为每个部门设置报价信息和标记。
- *
- * @param quotationMap 包含部门ID和其对应报价信息的映射。
- * @param themeMap 包含报价主题ID和其对应信息的映射。
- * @param sysDepts 部门列表,代表需要遍历的部门树的根节点列表。
- */
- public void recursion(Map<String, SysOrganizationQuotation> quotationMap, Map<String, SysQuotationTheme> themeMap, List<SysDept> sysDepts) {
- // 遍历所有给定的部门
- for (SysDept sysDept : sysDepts) {
- // 获取当前部门的子部门列表
- List<SysDept> children = sysDept.getChildren();
- // 尝试从报价映射中获取当前部门的报价信息
- SysOrganizationQuotation quotation = quotationMap.get(sysDept.getId());
- // 初始化部门的标记和主题名称
- sysDept.setMark(1);
- sysDept.setThemeName("无");
- // 如果找到了报价信息,则设置部门的主题名称和颜色
- if (quotation != null) {
- SysQuotationTheme sysQuotationTheme = themeMap.get(quotation.getThemeCode());
- if (sysQuotationTheme != null) {
- sysDept.setThemeName(sysQuotationTheme.getQuotationAbbr());
- sysDept.setThemeColour(sysQuotationTheme.getThemeColour());
- }
- }
- // 如果部门ID包含特定字符,修改部门的标记
- if (sysDept.getId().contains("D") && !sysDept.getId().contains("M")) {
- sysDept.setMark(0);
- }
- // 递归处理当前部门的子部门
- recursion(quotationMap, themeMap, children);
- }
- }
- /**
- * 查询用户列表,并为每个用户设置其报价主题信息。
- *
- * @param userList 分页后的用户列表,是一个包含SysUserBaseVO对象的IPage实例。
- * SysUserBaseVO对象包含了用户的基本信息。
- * IPage是一个分页接口,用于表示分页结果。
- * 这个方法会为IPage中的每个SysUserBaseVO对象补充报价主题信息。
- */
- @Override
- public void findUserList(IPage<SysUserBaseVO> userList) {
- // 从分页列表中提取用户记录列表
- List<SysUserBaseVO> records = userList.getRecords();
- // 提取所有用户ID
- List<String> userIds = records.stream().map(SysUserBaseVO::getUserId).collect(Collectors.toList());
- // 根据用户ID列表查询每个用户的报价主题信息
- List<SysUserBaseVO> quotationTheme = baseMapper.findUserQuotationThemeList(userIds);
- // 遍历用户记录,为每个用户设置报价主题信息
- for (SysUserBaseVO record : records) {
- List<HashMap<String, String>> hashMaps = new ArrayList<>();
- // 找到当前用户的报价主题信息,并添加到当前用户的记录中
- for (SysUserBaseVO sysUserBaseVO : quotationTheme) {
- if (record.getUserId().equals(sysUserBaseVO.getUserId())){
- // 将主题颜色和报价缩写添加到哈希表中
- HashMap<String, String> hashMap = new HashMap<>();
- hashMap.put("themeColour",sysUserBaseVO.getThemeColour());
- hashMap.put("quotationAbbr",sysUserBaseVO.getQuotationAbbr());
- hashMaps.add(hashMap);
- }
- }
- // 设置用户的报价主题信息
- record.setQuotation(hashMaps);
- }
- }
- }
|