package com.gkhy.safePlatform.equipment.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.gkhy.safePlatform.commons.co.ContextCacheUser;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.query.PageQuery;
|
import com.gkhy.safePlatform.commons.utils.BeanCopyUtils;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import com.gkhy.safePlatform.equipment.entity.SafeMaterialClassifyDO;
|
import com.gkhy.safePlatform.equipment.entity.SafeMaterialClassifyInfo;
|
import com.gkhy.safePlatform.equipment.enums.EquipmentResultCodes;
|
import com.gkhy.safePlatform.equipment.excepiton.EquipmentException;
|
import com.gkhy.safePlatform.equipment.model.dto.req.MaterialClassifyQuery;
|
import com.gkhy.safePlatform.equipment.model.dto.req.SafeMaterialClassifyAddReq;
|
import com.gkhy.safePlatform.equipment.model.dto.req.SafeMaterialClassifyModReq;
|
import com.gkhy.safePlatform.equipment.model.dto.resp.SafeMaterialClassifyDto;
|
import com.gkhy.safePlatform.equipment.model.dto.resp.SafeMaterialClassifyStockDto;
|
import com.gkhy.safePlatform.equipment.service.MaterialClassifyService;
|
import com.gkhy.safePlatform.equipment.service.baseService.SafeMaterialClassifyInfoService;
|
import com.gkhy.safePlatform.equipment.service.baseService.SafeMaterialInfoService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service("MaterialClassifyService")
|
public class MaterialClassifyServiceImpl implements MaterialClassifyService {
|
@Autowired
|
private SafeMaterialClassifyInfoService safeMaterialClassifyInfoService;
|
@Autowired
|
private SafeMaterialInfoService safeMaterialInfoService;
|
|
@Override
|
public List<SafeMaterialClassifyDto> list() {
|
List<SafeMaterialClassifyInfo> list = safeMaterialClassifyInfoService.list();
|
//过滤出父级
|
List<SafeMaterialClassifyInfo> parentList = list
|
.stream()
|
.filter(item -> item.getParentId().equals(0l))
|
.collect(Collectors.toList());
|
List<SafeMaterialClassifyDto> respDTOList = new ArrayList<>();
|
//只有二级不采用递归
|
for (SafeMaterialClassifyInfo classifyInfo:parentList) {
|
SafeMaterialClassifyDto respDTO = new SafeMaterialClassifyDto();
|
respDTO.setId(classifyInfo.getId());
|
respDTO.setMaterialClassifyName(classifyInfo.getMaterialClassifyName());
|
respDTO.setParentId(classifyInfo.getParentId());
|
List<SafeMaterialClassifyInfo> childList = list
|
.stream()
|
.filter(item -> item.getParentId().equals(classifyInfo.getId()))
|
.collect(Collectors.toList());
|
List<SafeMaterialClassifyDto> childDTOList = new ArrayList<>();
|
for (SafeMaterialClassifyInfo child:childList){
|
SafeMaterialClassifyDto childDTO = new SafeMaterialClassifyDto();
|
childDTO.setId(child.getId());
|
childDTO.setMaterialClassifyName(child.getMaterialClassifyName());
|
childDTO.setParentId(child.getParentId());
|
childDTOList.add(childDTO);
|
}
|
respDTO.setChildList(childDTOList);
|
respDTOList.add(respDTO);
|
}
|
|
return respDTOList;
|
}
|
|
@Override
|
public ResultVO save(ContextCacheUser currentUser, SafeMaterialClassifyAddReq req) {
|
ResultVO resultVO = null;
|
|
SafeMaterialClassifyInfo classifyInfo = new SafeMaterialClassifyInfo();
|
classifyInfo.setMaterialClassifyName(req.getMaterialClassifyName());
|
if(null != req.getParentId()){
|
classifyInfo.setParentId(req.getParentId());
|
}else{
|
classifyInfo.setParentId(0l);
|
}
|
boolean flag = safeMaterialClassifyInfoService.save(classifyInfo);
|
if (flag){
|
resultVO = new ResultVO(ResultCodes.OK);
|
}else {
|
resultVO = new ResultVO(ResultCodes.SERVER_ADD_ERROR);
|
}
|
return resultVO;
|
}
|
|
@Override
|
public ResultVO update(ContextCacheUser currentUser, SafeMaterialClassifyModReq req) {
|
ResultVO resultVO = null;
|
if(req.getId() == null){
|
throw new EquipmentException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
SafeMaterialClassifyInfo classifyInfo = new SafeMaterialClassifyInfo();
|
classifyInfo.setMaterialClassifyName(req.getMaterialClassifyName());
|
classifyInfo.setId(req.getId());
|
boolean flag = safeMaterialClassifyInfoService.updateById(classifyInfo);
|
if (flag){
|
resultVO = new ResultVO(ResultCodes.OK);
|
}else {
|
resultVO = new ResultVO(ResultCodes.SERVER_UPDATE_ERROR);
|
}
|
return resultVO;
|
}
|
|
@Override
|
public ResultVO delete(Long id) {
|
if(id == null){
|
throw new EquipmentException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
SafeMaterialClassifyInfo classify = safeMaterialClassifyInfoService.queryById(id);
|
if(null == classify){
|
throw new EquipmentException(EquipmentResultCodes.DATA_NOT_EXIST);
|
}
|
if(0 == classify.getParentId()){//一级
|
List<SafeMaterialClassifyInfo> childrenList = safeMaterialClassifyInfoService.getListByParentId(id);
|
if (childrenList.size()>0){
|
throw new EquipmentException(ResultCodes.SERVER_DEL_ERROR,"改类型存在小类,不可删除!");
|
}
|
}else {//二级
|
//判断是否被绑定
|
int count = safeMaterialInfoService.getCountBySmallClassifyId(id);
|
if(count > 0){
|
throw new EquipmentException(ResultCodes.SERVER_DEL_ERROR,"该类型已被绑定,不可删除!");
|
}
|
}
|
//如果没有被绑定,逻辑删除
|
SafeMaterialClassifyInfo classifyInfo = new SafeMaterialClassifyInfo();
|
classifyInfo.setId(id);
|
classifyInfo.setDelFlag(1);
|
safeMaterialClassifyInfoService.updateById(classifyInfo);
|
|
return new ResultVO(ResultCodes.OK);
|
}
|
|
@Override
|
public SafeMaterialClassifyDto queryById(Long id) {
|
if(id == null){
|
throw new EquipmentException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
SafeMaterialClassifyInfo classifyInfo = safeMaterialClassifyInfoService.queryById(id);
|
if(null == classifyInfo){
|
throw new EquipmentException(EquipmentResultCodes.DATA_NOT_EXIST);
|
}
|
List<SafeMaterialClassifyInfo> childList = new ArrayList<>();
|
if(0l == classifyInfo.getParentId()){
|
childList = safeMaterialClassifyInfoService.getListByParentId(id);
|
}
|
SafeMaterialClassifyDto respDTO = new SafeMaterialClassifyDto();
|
respDTO.setId(classifyInfo.getId());
|
respDTO.setMaterialClassifyName(classifyInfo.getMaterialClassifyName());
|
respDTO.setParentId(classifyInfo.getParentId());
|
List<SafeMaterialClassifyDto> childDtoList = new ArrayList<>();
|
for (SafeMaterialClassifyInfo child:childList){
|
SafeMaterialClassifyDto childDto = new SafeMaterialClassifyDto();
|
childDto.setId(child.getId());
|
childDto.setMaterialClassifyName(child.getMaterialClassifyName());
|
childDto.setParentId(child.getParentId());
|
childDtoList.add(childDto);
|
}
|
respDTO.setChildList(childDtoList);
|
return respDTO;
|
}
|
|
/**
|
* 根据小类id获取大小类相关信息
|
* @param smallClassifyId
|
* @return
|
*/
|
public SafeMaterialClassifyDO getBigAndSmallClassifyInfo(Long smallClassifyId){
|
if(null == smallClassifyId){
|
throw new EquipmentException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
SafeMaterialClassifyDO classifyDO = safeMaterialClassifyInfoService.getBigAndSmallClassify(smallClassifyId);
|
return classifyDO;
|
}
|
/**
|
* 根据小类ids获取小类相关信息
|
* @param ids
|
* @return
|
*/
|
public List<SafeMaterialClassifyDto> getClassifyListByIds(List<Long> ids){
|
if(CollectionUtils.isEmpty(ids)){
|
throw new EquipmentException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
List<SafeMaterialClassifyInfo> list = safeMaterialClassifyInfoService.getClassifyListByIds(ids);
|
List<SafeMaterialClassifyDto> classifyDtoList = new ArrayList<>();
|
for (SafeMaterialClassifyInfo classifyInfo:list){
|
SafeMaterialClassifyDto classifyDto = new SafeMaterialClassifyDto();
|
BeanUtils.copyProperties(classifyInfo,classifyDto);
|
classifyDtoList.add(classifyDto);
|
}
|
return classifyDtoList;
|
}
|
|
@Override
|
public List<SafeMaterialClassifyDO> getTraceabilityClassifyList(List<Long> smallClassifyIds) {
|
if(CollectionUtils.isEmpty(smallClassifyIds)){
|
throw new EquipmentException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
return safeMaterialClassifyInfoService.getTraceabilityClassifyList(smallClassifyIds);
|
}
|
|
@Override
|
public SearchResultVO<List<SafeMaterialClassifyDto>> listByPage(PageQuery<MaterialClassifyQuery> pageQuery) {
|
Page<SafeMaterialClassifyInfo> page = new Page<>(pageQuery.getPageIndex(),pageQuery.getPageSize());
|
List<SafeMaterialClassifyInfo> classifyInfoList = safeMaterialClassifyInfoService.listByPage(page, pageQuery.getSearchParams());
|
List<SafeMaterialClassifyInfo> childList = new ArrayList<>();
|
if (!CollectionUtils.isEmpty(classifyInfoList)) {
|
List<Long> parentIdList = classifyInfoList.stream().map(SafeMaterialClassifyInfo::getId).collect(Collectors.toList());
|
childList = safeMaterialClassifyInfoService.getListByParentIds(parentIdList);
|
}
|
List<SafeMaterialClassifyDto> respList = new ArrayList<>();
|
for(SafeMaterialClassifyInfo classifyInfo:classifyInfoList){
|
SafeMaterialClassifyDto classifyDto = new SafeMaterialClassifyDto();
|
classifyDto.setId(classifyInfo.getId());
|
classifyDto.setMaterialClassifyName(classifyInfo.getMaterialClassifyName());
|
classifyDto.setParentId(classifyInfo.getParentId());
|
//获取子级
|
List<SafeMaterialClassifyInfo> selectList = childList.stream().filter(cl -> cl.getParentId().equals(classifyInfo.getId())).collect(Collectors.toList());
|
List<SafeMaterialClassifyDto> childRespList = new ArrayList<>();
|
if(selectList.size()>0){
|
childRespList = BeanCopyUtils.copyBeanList(selectList,SafeMaterialClassifyDto.class);
|
}
|
classifyDto.setChildList(childRespList);
|
respList.add(classifyDto);
|
}
|
return new SearchResultVO<>(true,
|
page.getCurrent(),
|
page.getSize(),
|
page.getPages(),
|
page.getTotal(),
|
respList,
|
ResultCodes.OK);
|
}
|
|
|
}
|