package doumeemes.service.ext.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.ext.CategoryExtMapper; import doumeemes.dao.ext.CompanyExtMapper; import doumeemes.dao.ext.dto.QueryBarcodeParamExtDTO; import doumeemes.dao.ext.dto.QueryCategoryExtDTO; import doumeemes.dao.ext.dto.QueryCompanyExtDTO; import doumeemes.dao.ext.vo.BarcodeParamExtListVO; import doumeemes.dao.ext.vo.CategoryExtListVO; import doumeemes.dao.ext.vo.CompanyExtListVO; import doumeemes.service.business.CategoryService; import doumeemes.service.ext.CategoryExtService; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * 设置类分类信息表Service实现 * @author 江蹄蹄 * @date 2022/04/27 16:15 */ @Service public class CategoryExtServiceImpl implements CategoryExtService { @Autowired private RedisTemplate redisTemplate; @Autowired private CompanyExtMapper companyExtMapper; @Autowired private CategoryExtMapper categoryExtMapper; @Override public PageData findPage(PageWrap pageWrap) { PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); List result = categoryExtMapper.selectList(pageWrap.getModel()); return PageData.from(new PageInfo<>(result)); } @Override public List getListByType(String type,Integer rootDepartId,String cateType,String id) { QueryCategoryExtDTO queryCategoryExtDTO=new QueryCategoryExtDTO(); queryCategoryExtDTO.setDeleted(Constants.ZERO); queryCategoryExtDTO.setType(type); queryCategoryExtDTO.setRootDepartId(rootDepartId); queryCategoryExtDTO.setCateType(cateType); if(StringUtils.isNotEmpty(id)){ queryCategoryExtDTO.setParentId(Integer.valueOf(id)); } List result = categoryExtMapper.selectList(queryCategoryExtDTO); return result; } @Override public void loadCom(CompanyExtListVO com ) { QueryCategoryExtDTO d = new QueryCategoryExtDTO(); d.setDeleted(Constants.ZERO); d.setCompanyId(com.getId()); //查询全部企业部门信息 List clist = categoryExtMapper.selectList(d); //加入redis缓存,以企业id为编码,缓存企业分类 RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_CATEGORY_KEY+com.getId(),clist); } @Override public CategoryExtListVO getByCategoryId(Integer comId, Integer id){ if(comId==null || id == null){ return null; } //查询缓存数据 List clist = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_CATEGORY_KEY+comId,ArrayList.class); if(clist!=null){ for(CategoryExtListVO model:clist){ if(Constants.equalsInteger(id,model.getId())){ return model; } } } return null; } @Override public CategoryExtListVO getByCategoryId(Integer comId, Integer id,List clist){ if(comId==null || id == null){ return null; } //查询缓存数据 if(clist!=null){ for(CategoryExtListVO model:clist){ if(Constants.equalsInteger(id,model.getId())){ return model; } } } return null; } @Override public List treeCategoryList(QueryCategoryExtDTO param) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); param.setDeleted(Constants.ZERO); param.setRootDepartId(user.getRootDepartment().getId()); param.setCateType("0"); List list = categoryExtMapper.selectList(param); List bigAllList = getAllListByParentId("0",list); //查询所有的大类 getCategoryDhildrenTree(bigAllList,list); return bigAllList; } private void getCategoryDhildrenTree(List blist, List list) { if(blist!=null && blist.size()>0){ for(CategoryExtListVO d : blist){ List clist = getDepartListByParentId(d.getId(),list); d.setChildrenList(clist); getCategoryDhildrenTree(clist,list); } } } private List getDepartListByParentId(Integer pId, List clist) { List list = null; if(clist!= null){ for(CategoryExtListVO d :clist){ if(Constants.equalsInteger(d.getParentId(),pId)){ if(list == null){ list = new ArrayList<>(); } list.add(d); } } } return list; } private List getAllListByParentId(String type, List clist) { List list = null; if(clist!= null){ for(CategoryExtListVO d :clist){ if(StringUtils.equals(type ,d.getType())){ if(list == null){ list = new ArrayList<>(); } list.add(d); } } } return list; } @Override public void loadAll() { QueryCompanyExtDTO dto = new QueryCompanyExtDTO(); dto.setDeleted(Constants.ZERO); //查询全部企业信息 List list = companyExtMapper.selectList(dto); if(list != null && list.size()>0){ QueryCategoryExtDTO d = new QueryCategoryExtDTO(); d.setDeleted(Constants.ZERO); //查询全部企业信息 List codeList = categoryExtMapper.selectList(d); for(CompanyExtListVO com : list){ //当前企业的全部分类信息 List clist = getAllByComId(com.getId(),codeList); //加入redis缓存,以企业id为编码,缓存企业二维码 RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_CATEGORY_KEY+com.getId(),clist); } } } private List getAllByComId(Integer id, List alllist) { List list = null; if(alllist!= null){ for(CategoryExtListVO d :alllist){ if(d.getCompanyId()!=null && Constants.equalsInteger(id,d.getCompanyId())){ if(list == null){ list = new ArrayList<>(); } list.add(d); } } } return list; } }