package com.zt.life.sys.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zt.common.constant.Constant; import com.zt.common.service.BaseService; import com.zt.common.utils.CacheUtils; import com.zt.core.oss.service.QdISysOssService; import com.zt.life.core.constant.Cache; import com.zt.life.sys.dao.SysOssConfigDao; import com.zt.life.sys.dto.OssDto; import com.zt.life.sys.mapstruct.OssExMapper; import com.zt.life.sys.model.SysOssConfig; import com.zt.modules.oss.service.SysOssService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * SYS_OSS_CONFIG * * @author zt generator * @since 1.0.0 2020-08-25 */ @Service public class QdSysOssConfigService extends BaseService { @Autowired private OssExMapper ossExMapper; @Autowired private QdISysOssService qdISysOssService; @Autowired private SysOssService sysOssServices; public List getOssConfig() { // 这里手动缓存,不然在当前方法内调用缓存无效 List all = null;//(List) CacheUtils.get(Cache.CONFIG, "all"); if (all == null) { all = new ArrayList<>(); List configs = baseDao.selectList(new QueryWrapper() .eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO).lambda().orderByAsc(SysOssConfig::getSort)); if (configs.size() > 0) { Map busiMap = new HashMap<>(); Map groupMap = new HashMap<>(); for (SysOssConfig config : configs) { OssDto dto = busiMap.get(config.getBusiType()); if (dto == null) { dto = new OssDto(config.getBusiType(), config.getBusiTypeName()); busiMap.put(config.getBusiType(), dto); all.add(dto); } String group = config.getBusiFieldGroup(); OssDto.OssFieldGroupDto groupDto = groupMap.get(group); if (groupDto == null) { groupDto = new OssDto.OssFieldGroupDto(group); dto.getGroups().add(groupDto); groupMap.put(group, groupDto); } groupDto.getFields().add(ossExMapper.toDto(config)); } } CacheUtils.put(Cache.CONFIG, "all", all); } return all.stream().map(ossDto -> { try { return ossDto.clone(); } catch (CloneNotSupportedException e) { } return null; }).collect(Collectors.toList()); } /** * 查询附件 * * @param busiId * @param busiType * @return */ public OssDto getOssByBusiType(Long busiId, String busiType) { List dtos = this.getOssConfig().stream().filter(config -> config.getBusiType().equals(busiType)) .collect(Collectors.toList()); if (dtos.size() > 0) { OssDto dto = dtos.get(0); if (busiId != null && busiId > 0) { for (OssDto.OssFieldGroupDto groupDto : dto.getGroups()) { for (OssDto.OssFieldDto fieldDto : groupDto.getFields()) { fieldDto.getFiles().addAll(qdISysOssService.getOsses(busiId, busiType, fieldDto.getBusiField())); } } } return dto; } return null; } }