package com.gk.hotwork.Service.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.hotwork.Domain.ElementManagement; import com.gk.hotwork.Domain.ElementTree; import com.gk.hotwork.Domain.Exception.BusinessException; import com.gk.hotwork.Domain.UserInfo; import com.gk.hotwork.Domain.Utils.StringUtils; import com.gk.hotwork.Mapper.ElementManagementMapper; import com.gk.hotwork.Service.ElementManagementService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @Service("elementManagementService") @Transactional public class ElementManagementImpl extends ServiceImpl implements ElementManagementService { @Autowired private ElementManagementMapper elementManagementMapper; /** * @Description: 分页 */ @Override public IPage selectPage(Page page, Map filter, UserInfo user) { return elementManagementMapper.selectPages(page,filter); } /** * @Description: 新增 */ @Override public void addOne(ElementManagement param, UserInfo user) { requiredVerification(param); param.setValidFlag(Boolean.TRUE); param.setUpdateBy(user.getRealname()); param.setCreateBy(user.getRealname()); param.setUpdateTime(new Date()); param.setCreateTime(new Date()); this.save(param); } /** * @Description: 修改 */ @Override public void modOne(ElementManagement param, UserInfo user) { selectVerification(param.getId()); requiredVerification(param); param.setUpdateTime(new Date()); param.setUpdateBy(user.getRealname()); this.updateById(param); } /** * @Description: 删除 */ @Override public void delOne(Long id, UserInfo user) { ElementManagement elementManagement = selectVerification(id); deleteVerification(elementManagement); ElementManagement delOne = new ElementManagement(); delOne.setId(id); delOne.setUpdateTime(new Date()); delOne.setUpdateBy(user.getRealname()); delOne.setValidFlag(Boolean.FALSE); this.updateById(delOne); } @Override public List getParentElement() { return elementManagementMapper.getElementByType(0); } public List getChindrenTree(List> list,Long pid){ List elementTreeList = new ArrayList(); for (Map e : list) { if(e.get("pid")!=null && pid.toString().equals(e.get("pid").toString())){ ElementTree elementTree=new ElementTree(); elementTree.setType(Integer.valueOf(e.get("type").toString())); elementTree.setLabel(e.get("label").toString()); elementTree.setValue(Long.valueOf(e.get("value").toString())); elementTree.setLeaf(e.get("isLeaf").toString().equals("1")?true:false); if(elementTree.isLeaf()){ elementTree.setChildren(new ArrayList()); elementTreeList.add(elementTree); }else{ elementTree.setChildren(getChindrenTree(list,elementTree.getValue())); elementTreeList.add(elementTree); } } } return elementTreeList; } @Override public List getElementTree() { List returnTree = new ArrayList<>(); List> list = elementManagementMapper.getElementTree(); //读取元素配置 for (Map map : list) { if(map.get("pid")==null){ //一级要素 ElementTree elementTree=new ElementTree(); elementTree.setType(Integer.valueOf(map.get("type").toString())); elementTree.setLabel(map.get("label").toString()); elementTree.setValue(Long.valueOf(map.get("value").toString())); elementTree.setLeaf(map.get("isLeaf").toString().equals("1")?true:false); elementTree.setChildren(getChindrenTree(list,Long.valueOf(map.get("value").toString()))); returnTree.add(elementTree); }else{ continue; } } return returnTree; } @Override public List getMenuType1Tree() { List returnTree = new ArrayList<>(); List> list = elementManagementMapper.getElementTree(); //读取元素配置 for (Map map : list) { if(map.get("pid")==null && "1".equals(map.get("mt").toString())){ //一级要素,MenuType1 ElementTree elementTree=new ElementTree(); elementTree.setType(Integer.valueOf(map.get("type").toString())); elementTree.setLabel(map.get("label").toString()); elementTree.setValue(Long.valueOf(map.get("value").toString())); elementTree.setLeaf(map.get("isLeaf").toString().equals("1")?true:false); elementTree.setChildren(getChindrenTree(list,Long.valueOf(map.get("value").toString()))); returnTree.add(elementTree); }else{ continue; } } return returnTree; } @Override public List getMenuType2Tree() { List returnTree = new ArrayList<>(); List> list = elementManagementMapper.getElementTree(); //读取元素配置 for (Map map : list) { if(map.get("pid")==null && "2".equals(map.get("mt").toString())){ //一级要素,MenuType2 ElementTree elementTree=new ElementTree(); elementTree.setType(Integer.valueOf(map.get("type").toString())); elementTree.setLabel(map.get("label").toString()); elementTree.setValue(Long.valueOf(map.get("value").toString())); elementTree.setLeaf(map.get("isLeaf").toString().equals("1")?true:false); elementTree.setChildren(getChindrenTree(list,Long.valueOf(map.get("value").toString()))); returnTree.add(elementTree); }else{ continue; } } return returnTree; } /** * 查询验证 * 验证对象存在 */ public ElementManagement selectVerification(Long id){ if (id == null) throw new BusinessException("id传参不能为空"); ElementManagement elementManagement = this.getById(id); if (elementManagement == null) throw new BusinessException("找不到对应实体"); return elementManagement; } /** * 操作验证 * 验证必填项 * */ public void requiredVerification(ElementManagement param){ if(StringUtils.isBlank(param.getName())) throw new BusinessException("请填写要素名称"); if (param.getType() == null) throw new BusinessException("请选择要素类型"); if (param.getType() == 1 && param.getParentId()==null){ throw new BusinessException("请选择父要素"); } } /** * 操作验证 * 删除已被B级要素绑定的A级要素 * */ public void deleteVerification(ElementManagement param){ if (param.getType()==0){ int count = this.count(new LambdaQueryWrapper() .eq(ElementManagement::getParentId, param.getId()) .eq(ElementManagement::getType , 1) .eq(ElementManagement::getValidFlag, Boolean.TRUE)); if (count > 0) throw new BusinessException("当前A级要素仍然有已绑定的B级要素,无法删除"); } } @Override public List getSuperElement(Integer type) { return elementManagementMapper.getElementByType(type); } }