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<String, Object> redisTemplate;
|
@Autowired
|
private CompanyExtMapper companyExtMapper;
|
@Autowired
|
private CategoryExtMapper categoryExtMapper;
|
|
|
@Override
|
public PageData<CategoryExtListVO> findPage(PageWrap<QueryCategoryExtDTO> pageWrap) {
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
List<CategoryExtListVO> result = categoryExtMapper.selectList(pageWrap.getModel());
|
return PageData.from(new PageInfo<>(result));
|
}
|
|
@Override
|
public List<CategoryExtListVO> 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<CategoryExtListVO> 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<CategoryExtListVO> 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<CategoryExtListVO> 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<CategoryExtListVO> 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<CategoryExtListVO> treeCategoryList(QueryCategoryExtDTO param) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
param.setDeleted(Constants.ZERO);
|
param.setRootDepartId(user.getRootDepartment().getId());
|
param.setCateType("0");
|
List<CategoryExtListVO> list = categoryExtMapper.selectList(param);
|
List<CategoryExtListVO> bigAllList = getAllListByParentId("0",list);
|
|
//查询所有的大类
|
getCategoryDhildrenTree(bigAllList,list);
|
|
return bigAllList;
|
}
|
private void getCategoryDhildrenTree(List<CategoryExtListVO> blist, List<CategoryExtListVO> list) {
|
if(blist!=null && blist.size()>0){
|
for(CategoryExtListVO d : blist){
|
List<CategoryExtListVO> clist = getDepartListByParentId(d.getId(),list);
|
d.setChildrenList(clist);
|
getCategoryDhildrenTree(clist,list);
|
}
|
|
}
|
}
|
|
|
private List<CategoryExtListVO> getDepartListByParentId(Integer pId, List<CategoryExtListVO> clist) {
|
List<CategoryExtListVO> 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<CategoryExtListVO> getAllListByParentId(String type, List<CategoryExtListVO> clist) {
|
List<CategoryExtListVO> 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<CompanyExtListVO> list = companyExtMapper.selectList(dto);
|
if(list != null && list.size()>0){
|
QueryCategoryExtDTO d = new QueryCategoryExtDTO();
|
d.setDeleted(Constants.ZERO);
|
//查询全部企业信息
|
List<CategoryExtListVO> codeList = categoryExtMapper.selectList(d);
|
for(CompanyExtListVO com : list){
|
//当前企业的全部分类信息
|
List<CategoryExtListVO> clist = getAllByComId(com.getId(),codeList);
|
//加入redis缓存,以企业id为编码,缓存企业二维码
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_CATEGORY_KEY+com.getId(),clist);
|
}
|
}
|
}
|
|
private List<CategoryExtListVO> getAllByComId(Integer id, List<CategoryExtListVO> alllist) {
|
List<CategoryExtListVO> 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;
|
}
|
}
|