|
@@ -0,0 +1,95 @@
|
|
|
+package com.fjhx.admin.service.material.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.admin.entity.material.dto.MaterialClassifyDto;
|
|
|
+import com.fjhx.admin.entity.material.po.MaterialClassify;
|
|
|
+import com.fjhx.admin.mapper.material.MaterialClassifyMapper;
|
|
|
+import com.fjhx.admin.service.material.MaterialClassifyService;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
+import com.ruoyi.common.utils.TreeUtil;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 物料分类 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author zlj
|
|
|
+ * @since 2023-03-17
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class MaterialClassifyServiceImpl extends ServiceImpl<MaterialClassifyMapper, MaterialClassify> implements MaterialClassifyService {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<JSONObject> tree(MaterialClassify materialClassify) {
|
|
|
+ // 分类名称
|
|
|
+ String name = materialClassify.getName();
|
|
|
+
|
|
|
+ List<MaterialClassify> list = lambdaQuery()
|
|
|
+ .select(MaterialClassify::getId, MaterialClassify::getName, MaterialClassify::getParentId)
|
|
|
+ .like(ObjectUtil.isNotEmpty(name), MaterialClassify::getName, name)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ // 构建树形
|
|
|
+ return TreeUtil.buildTree("name", list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void add(MaterialClassifyDto materialClassifyDto) {
|
|
|
+ Long parentId = materialClassifyDto.getParentId();
|
|
|
+ if (parentId == null) {
|
|
|
+ materialClassifyDto.setParentId(0L);
|
|
|
+ materialClassifyDto.setParentIdSet(null);
|
|
|
+ } else if (parentId == 0L) {
|
|
|
+ materialClassifyDto.setParentIdSet(null);
|
|
|
+ } else {
|
|
|
+ // 查询父级分类
|
|
|
+ MaterialClassify materialClassify = getById(parentId);
|
|
|
+ if (materialClassify == null) {
|
|
|
+ throw new ServiceException("没有找到父级分类");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 赋值父级id集合
|
|
|
+ String parentIdSet = materialClassify.getParentIdSet();
|
|
|
+ materialClassifyDto.setParentIdSet((ObjectUtil.isEmpty(parentIdSet) ? "" : parentIdSet + ",") + parentId);
|
|
|
+ }
|
|
|
+
|
|
|
+ peerNameOnly(materialClassifyDto.getParentId(), materialClassifyDto.getName(), null);
|
|
|
+
|
|
|
+ this.save(materialClassifyDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(MaterialClassifyDto materialClassifyDto) {
|
|
|
+ peerNameOnly(materialClassifyDto.getParentId(), materialClassifyDto.getName(), materialClassifyDto.getId());
|
|
|
+ this.updateById(materialClassifyDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保证同级名称不重复
|
|
|
+ */
|
|
|
+ private void peerNameOnly(Long parentId, String classifyName, Long excludeId) {
|
|
|
+
|
|
|
+ Long count = lambdaQuery()
|
|
|
+ .eq(MaterialClassify::getParentId, parentId)
|
|
|
+ .eq(MaterialClassify::getName, classifyName)
|
|
|
+ .ne(ObjectUtil.isNotEmpty(excludeId), MaterialClassify::getId, excludeId)
|
|
|
+ .count();
|
|
|
+
|
|
|
+ if (count != 0) {
|
|
|
+ throw new ServiceException("存在相同分类名称");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|