qt5107 hace 2 años
padre
commit
1fd88c92ca

+ 82 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/classify/ClassifyTypeEnum.java

@@ -0,0 +1,82 @@
+package com.fjhx.enums.classify;
+
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 分类类型枚举
+ */
+public enum ClassifyTypeEnum {
+    CLASSIFY_TYPE_1(1, "产品分类"),
+    CLASSIFY_TYPE_2(2, "物料分类"),
+    ;
+
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    private static final HashMap<Integer, ClassifyTypeEnum> classMap = new HashMap<>();
+
+    ClassifyTypeEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+
+    static {
+        for (ClassifyTypeEnum value : ClassifyTypeEnum.values()) {
+            classMap.put(value.getKey(), value);
+        }
+    }
+
+    /**
+     * 根据type获取枚举
+     */
+    public static ClassifyTypeEnum get(Integer type) {
+        return classMap.get(type);
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (Func.isNotEmpty(map)) {
+            return map;
+        }
+        for (ClassifyTypeEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    /**
+     * 通过key获取名称
+     *
+     * @param key
+     * @return
+     */
+    public static String getNameByKey(Integer key) {
+        if (key == null || key < 0) {
+            return StringPool.EMPTY;
+        }
+        Map<Integer, String> map = getMap();
+        return map.getOrDefault(key, StringPool.EMPTY);
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 14 - 5
hx-service/victoriatourist/src/main/java/com/fjhx/controller/classify/ClassifyController.java

@@ -1,10 +1,10 @@
 package com.fjhx.controller.classify;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
 import com.fjhx.entity.classify.Classify;
 import com.fjhx.params.classify.ClassifyVo;
 import com.fjhx.service.classify.ClassifyService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -29,28 +29,37 @@ public class ClassifyController {
     private ClassifyService classifyService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Map<String, Object> condition){
+    public R page(@RequestBody Map<String, Object> condition) {
         Page<Classify> result = classifyService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody ClassifyVo classifyVo){
+    public R add(@RequestBody ClassifyVo classifyVo) {
         classifyService.add(classifyVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody ClassifyVo classifyVo){
+    public R edit(@RequestBody ClassifyVo classifyVo) {
         classifyService.edit(classifyVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody ClassifyVo classifyVo){
+    public R delete(@RequestBody ClassifyVo classifyVo) {
         classifyService.delete(classifyVo);
         return R.success();
     }
 
+    @PostMapping("/tree")
+    public R tree(@RequestBody ClassifyVo entity) {
+        return R.success(classifyService.tree(entity));
+    }
+
+    @PostMapping("/details")
+    public R details(@RequestBody ClassifyVo entity) {
+        return R.success(classifyService.getById(entity.getId()));
+    }
 }
 

+ 4 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/service/classify/ClassifyService.java

@@ -1,10 +1,12 @@
 package com.fjhx.service.classify;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
 import com.fjhx.entity.classify.Classify;
 import com.fjhx.params.classify.ClassifyVo;
-import com.fjhx.base.BaseService;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,4 +27,5 @@ public interface ClassifyService extends BaseService<Classify> {
 
     void delete(ClassifyVo classifyVo);
 
+    List<JSONObject> tree(ClassifyVo entity);
 }

+ 51 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/service/classify/impl/ClassifyServiceImpl.java

@@ -1,14 +1,24 @@
 package com.fjhx.service.classify.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.entity.classify.Classify;
-import com.fjhx.params.classify.ClassifyVo;
+import com.fjhx.entity.material.Material;
+import com.fjhx.enums.classify.ClassifyTypeEnum;
 import com.fjhx.mapper.classify.ClassifyMapper;
+import com.fjhx.params.classify.ClassifyVo;
 import com.fjhx.service.classify.ClassifyService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.service.material.MaterialService;
+import com.fjhx.utils.TreeUtil;
 import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -22,6 +32,8 @@ import java.util.Map;
 @Service
 public class ClassifyServiceImpl extends ServiceImpl<ClassifyMapper, Classify> implements ClassifyService {
 
+    private MaterialService materialService = SpringUtil.getBean(MaterialService.class);
+
     @Override
     public Page<Classify> getPage(Map<String, Object> condition) {
 
@@ -32,17 +44,54 @@ public class ClassifyServiceImpl extends ServiceImpl<ClassifyMapper, Classify> i
 
     @Override
     public void add(ClassifyVo classifyVo) {
+        if (Func.isEmpty(classifyVo.getParentId())) {
+            classifyVo.setParentId(0L);
+            classifyVo.setParentIdSet("0");
+        }
         save(classifyVo);
     }
 
     @Override
     public void edit(ClassifyVo classifyVo) {
+        if (Func.isEmpty(classifyVo.getParentId())) {
+            classifyVo.setParentId(0L);
+            classifyVo.setParentIdSet("0");
+        }
         updateById(classifyVo);
     }
 
     @Override
     public void delete(ClassifyVo classifyVo) {
+        //查询是否存在子级
+        List<Classify> list = lambdaQuery().apply("FIND_IN_SET(" + classifyVo.getId() + ", role_id)").list();
+        if (Func.isNotEmpty(list)) {
+            throw new ServiceException("存在子级,无法删除!");
+        } else {
+            if (classifyVo.getType() == ClassifyTypeEnum.CLASSIFY_TYPE_2.getKey()) {
+                //查询是否被物料挂钩
+                List<Material> materials = materialService.lambdaQuery().eq(Material::getClassifyId, classifyVo.getId()).list();
+                if (Func.isNotEmpty(materials)) {
+                    throw new ServiceException("有物料绑定,无法删除!");
+                }
+            } else {
+                //查询是否被产品挂钩
+            }
+        }
         removeById(classifyVo.getId());
     }
 
+    @Override
+    public List<JSONObject> tree(ClassifyVo entity) {
+        if (Func.isEmpty(entity.getType())) {
+            return new ArrayList<>();
+        }
+
+        //查询数据
+        List<Classify> classifies = lambdaQuery().eq(Classify::getType, entity.getType()).apply(Func.isNotEmpty(entity.getName()), "instr(`name`, '" + entity.getName() + "') > 0").list();
+        if (Func.isEmpty(classifies)) {
+            return new ArrayList<>();
+        }
+
+        return TreeUtil.buildTreeObj(classifies);
+    }
 }