Browse Source

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/purchase

hexiao 2 years ago
parent
commit
af31150eb0

+ 11 - 5
purchase-admin/src/main/java/com/ozs/web/controller/base/BaseProfessionalController.java

@@ -1,6 +1,7 @@
 package com.ozs.web.controller.base;
 
 import com.ozs.base.domain.BaseProfessional;
+import com.ozs.base.domain.vo.BaseProfessionalVo;
 import com.ozs.base.service.BaseProfessionalService;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
@@ -8,9 +9,7 @@ import com.ozs.common.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -46,6 +45,13 @@ public class BaseProfessionalController extends BaseController {
         return toAjax(baseProfessionalService.removeById(baseProfessional.getId()));
     }
 
+    @ApiOperation(value = "批量删除专业库", notes = "必传 idList")
+    @PostMapping("/deleteIds")
+    public AjaxResult deleteByIdLIst(@RequestBody BaseProfessionalVo baseProfessionalVo) {
+        baseProfessionalService.deleteIds(baseProfessionalVo.getDeleteIds());
+        return success();
+    }
+
     @ApiOperation(value = "修改专业库", notes = "必传 id 及修改数据")
     @PostMapping("/updateProfessional")
     public AjaxResult updateProfessional(BaseProfessional baseProfessional) {
@@ -57,8 +63,8 @@ public class BaseProfessionalController extends BaseController {
 
     @ApiOperation(value = "查询专业库树结构", notes = "非必传 查询条件:品目名称")
     @PostMapping("/selectBaseProfessional")
-    public AjaxResult selectBaseProfessional(BaseProfessional baseProfessional) {
-        List<BaseProfessional> baseSupplierList = baseProfessionalService.selectBaseProfessional(baseProfessional);
+    public AjaxResult selectBaseProfessional(BaseProfessionalVo baseProfessionalVo) {
+        List<BaseProfessionalVo> baseSupplierList = baseProfessionalService.selectBaseProfessional(baseProfessionalVo);
         return success(baseSupplierList);
     }
 }

+ 43 - 27
purchase-common/src/main/java/com/ozs/common/utils/bean/BeanUtils.java

@@ -11,31 +11,32 @@ import java.util.regex.Pattern;
  *
  * @author ruoyi
  */
-public class BeanUtils extends org.springframework.beans.BeanUtils
-{
-    /** Bean方法名中属性名开始的下标 */
+public class BeanUtils extends org.springframework.beans.BeanUtils {
+    /**
+     * Bean方法名中属性名开始的下标
+     */
     private static final int BEAN_METHOD_PROP_INDEX = 3;
 
-    /** * 匹配getter方法的正则表达式 */
+    /**
+     * 匹配getter方法的正则表达式
+     */
     private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)");
 
-    /** * 匹配setter方法的正则表达式 */
+    /**
+     * 匹配setter方法的正则表达式
+     */
     private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)");
 
     /**
      * Bean属性复制工具方法。
      *
      * @param dest 目标对象
-     * @param src 源对象
+     * @param src  源对象
      */
-    public static void copyBeanProp(Object dest, Object src)
-    {
-        try
-        {
+    public static void copyBeanProp(Object dest, Object src) {
+        try {
             copyProperties(src, dest);
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -46,8 +47,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
      * @param obj 对象
      * @return 对象的setter方法列表
      */
-    public static List<Method> getSetterMethods(Object obj)
-    {
+    public static List<Method> getSetterMethods(Object obj) {
         // setter方法列表
         List<Method> setterMethods = new ArrayList<Method>();
 
@@ -56,11 +56,9 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
 
         // 查找setter方法
 
-        for (Method method : methods)
-        {
+        for (Method method : methods) {
             Matcher m = SET_PATTERN.matcher(method.getName());
-            if (m.matches() && (method.getParameterTypes().length == 1))
-            {
+            if (m.matches() && (method.getParameterTypes().length == 1)) {
                 setterMethods.add(method);
             }
         }
@@ -75,18 +73,15 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
      * @return 对象的getter方法列表
      */
 
-    public static List<Method> getGetterMethods(Object obj)
-    {
+    public static List<Method> getGetterMethods(Object obj) {
         // getter方法列表
         List<Method> getterMethods = new ArrayList<Method>();
         // 获取所有方法
         Method[] methods = obj.getClass().getMethods();
         // 查找getter方法
-        for (Method method : methods)
-        {
+        for (Method method : methods) {
             Matcher m = GET_PATTERN.matcher(method.getName());
-            if (m.matches() && (method.getParameterTypes().length == 0))
-            {
+            if (m.matches() && (method.getParameterTypes().length == 0)) {
                 getterMethods.add(method);
             }
         }
@@ -103,8 +98,29 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
      * @return 属性名一样返回true,否则返回false
      */
 
-    public static boolean isMethodPropEquals(String m1, String m2)
-    {
+    public static boolean isMethodPropEquals(String m1, String m2) {
         return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
     }
+
+    /**
+     * 将实体类转换为Vo类
+     * @param list
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> entityListToVOList(List<?> list, Class<T> clazz) {
+        List<T> result = new ArrayList<>(list.size());
+        for (Object source : list) {
+            T target;
+            try {
+                target = clazz.getDeclaredConstructor().newInstance();
+            } catch (Exception e) {
+                throw new RuntimeException();
+            }
+            BeanUtils.copyProperties(source, target);
+            result.add(target);
+        }
+        return result;
+    }
 }

+ 0 - 2
purchase-system/src/main/java/com/ozs/base/domain/BaseProfessional.java

@@ -12,8 +12,6 @@ import java.util.List;
 @TableName("base_professional")
 public class BaseProfessional implements Serializable {
 
-    private List<BaseProfessional> baseProfessionalList;
-
     /**
      * 主键ID
      */

+ 19 - 0
purchase-system/src/main/java/com/ozs/base/domain/vo/BaseProfessionalVo.java

@@ -0,0 +1,19 @@
+package com.ozs.base.domain.vo;
+
+import com.ozs.base.domain.BaseProfessional;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class BaseProfessionalVo extends BaseProfessional {
+//    private Integer id;
+//    private String professionalName;
+//    private String professionalCode;
+//    private String purchaseState;
+//    private String professionalGrade;
+//    private String parentCode;
+    private List<BaseProfessionalVo> baseProfessionalVoList;
+    private List<Integer> deleteIds;
+}

+ 0 - 16
purchase-system/src/main/java/com/ozs/base/domain/vo/BaseProfessionalVo1.java

@@ -1,16 +0,0 @@
-package com.ozs.base.domain.vo;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class BaseProfessionalVo1 {
-    private Integer id;
-    private String professionalName;
-    private String professionalCode;
-    private String purchaseState;
-    private String professionalGrade;
-    private String parentCode;
-    private List<BaseProfessionalVo1> baseProfessionalVoList;
-}

+ 7 - 1
purchase-system/src/main/java/com/ozs/base/mapper/BaseProfessionalMapper.java

@@ -2,8 +2,10 @@ package com.ozs.base.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ozs.base.domain.BaseProfessional;
+import com.ozs.base.domain.vo.BaseProfessionalVo;
 import com.ozs.common.core.domain.entity.SysProcurementStandard;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -16,5 +18,9 @@ public interface BaseProfessionalMapper extends BaseMapper<BaseProfessional> {
 
     List<BaseProfessional> selectoneGradeList(String professionalCode);
 
-    List<BaseProfessional> selectBaseProfessional(BaseProfessional baseProfessional);
+    List<BaseProfessional> selectBaseProfessional(BaseProfessionalVo baseProfessionalVo);
+
+    int countByParentCode(@Param("professionalCode") String professionalCode);
+
+    List<BaseProfessional> selectByParentCode(String professionalCode);
 }

+ 4 - 1
purchase-system/src/main/java/com/ozs/base/service/BaseProfessionalService.java

@@ -2,9 +2,12 @@ package com.ozs.base.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.base.domain.BaseProfessional;
+import com.ozs.base.domain.vo.BaseProfessionalVo;
 
 import java.util.List;
 
 public interface BaseProfessionalService extends IService<BaseProfessional> {
-    List<BaseProfessional> selectBaseProfessional(BaseProfessional baseProfessional);
+    List<BaseProfessionalVo> selectBaseProfessional(BaseProfessionalVo baseProfessional);
+
+    void deleteIds(List<Integer> deleteIds);
 }

+ 34 - 12
purchase-system/src/main/java/com/ozs/base/service/impl/BaseProfessionalServiceImpl.java

@@ -2,8 +2,13 @@ package com.ozs.base.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ozs.base.domain.BaseProfessional;
+import com.ozs.base.domain.vo.BaseProfessionalVo;
 import com.ozs.base.mapper.BaseProfessionalMapper;
 import com.ozs.base.service.BaseProfessionalService;
+import com.ozs.common.core.domain.entity.SysDictType;
+import com.ozs.common.exception.ServiceException;
+import com.ozs.common.utils.DictUtils;
+import com.ozs.common.utils.bean.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -17,21 +22,37 @@ public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMap
     private BaseProfessionalMapper baseProfessionalMapper;
 
     @Override
-    public List<BaseProfessional> selectBaseProfessional(BaseProfessional baseProfessional) {
-        List<BaseProfessional> allList = baseProfessionalMapper.selectBaseProfessional(baseProfessional);
-        List<BaseProfessional> treeList = buildTree(allList);
+    public void deleteIds(List<Integer> deleteIds) {
+        for (Integer  deleteId : deleteIds) {
+            BaseProfessional baseProfessional = baseProfessionalMapper.selectById(deleteId);
+            List<BaseProfessional> baseProfessionalList = baseProfessionalMapper.selectByParentCode(baseProfessional.getProfessionalCode());
+//            int ii = baseProfessionalMapper.countByParentCode(baseProfessional.getProfessionalCode());
+            if (baseProfessionalList.size() > 0) {
+                throw new ServiceException(String.format("%1$s已有子级,不能删除", baseProfessional.getProfessionalName()));
+            }
+            baseProfessionalMapper.deleteById(deleteId);
+        }
+    }
+
+    @Override
+    public List<BaseProfessionalVo> selectBaseProfessional(BaseProfessionalVo baseProfessionalVo) {
+        List<BaseProfessional> allList = baseProfessionalMapper.selectBaseProfessional(baseProfessionalVo);
+        // 将实体类转换为Vo类
+        List<BaseProfessionalVo> allListVo = BeanUtils.entityListToVOList(allList, BaseProfessionalVo.class);
+        List<BaseProfessionalVo> treeList = buildTree(allListVo);
         return treeList;
     }
 
     /**
      * 构建树形结构
+     *
      * @return
      */
-    public static List<BaseProfessional> buildTree(List<BaseProfessional> allList) {
+    public static List<BaseProfessionalVo> buildTree(List<BaseProfessionalVo> allList) {
         //创建集合封装最终数据
-        List<BaseProfessional> trees = new ArrayList<>();
+        List<BaseProfessionalVo> trees = new ArrayList<>();
         //遍历所有菜单集合
-        for (BaseProfessional baseProfessional : allList) {
+        for (BaseProfessionalVo baseProfessional : allList) {
             //找到递归入口,parentId=0
             if (baseProfessional.getParentCode().equals("0")) {
                 trees.add(findChildren(baseProfessional, allList));
@@ -44,18 +65,19 @@ public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMap
      * 从根节点进行递归查询,查询子节点
      * 判断 编码 =  父级编码是否相同,如果相同是子节点,进行数据封装
      */
-    private static BaseProfessional findChildren(BaseProfessional baseProfessional, List<BaseProfessional> allList) {
+    private static BaseProfessionalVo findChildren(BaseProfessionalVo baseProfessional, List<BaseProfessionalVo> allList) {
         //数据初始化
-        baseProfessional.setBaseProfessionalList(new ArrayList<BaseProfessional>());
+        baseProfessional.setBaseProfessionalVoList(new ArrayList<BaseProfessionalVo>());
         //遍历递归查找
-        for (BaseProfessional it : allList) {
+        for (BaseProfessionalVo it : allList) {
             if (baseProfessional.getProfessionalCode().equals(it.getParentCode())) {
-                if (baseProfessional.getBaseProfessionalList() == null) {
-                    baseProfessional.setBaseProfessionalList(new ArrayList<>());
+                if (baseProfessional.getBaseProfessionalVoList() == null) {
+                    baseProfessional.setBaseProfessionalVoList(new ArrayList<>());
                 }
-                baseProfessional.getBaseProfessionalList().add(findChildren(it, allList));
+                baseProfessional.getBaseProfessionalVoList().add(findChildren(it, allList));
             }
         }
         return baseProfessional;
     }
+
 }

+ 9 - 1
purchase-system/src/main/resources/mapper/base/BaseProfessionalMapper.xml

@@ -13,7 +13,7 @@
         <result property="parentCode" column="parent_code"/>
     </resultMap>
 
-    <select id="selectBaseProfessional" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+    <select id="selectBaseProfessional" parameterType="com.ozs.base.domain.vo.BaseProfessionalVo" resultMap="BaseProfessionalResult">
         select * from base_professional
         <where>
             <if test="professionalName != null and professionalName != ''">
@@ -32,4 +32,12 @@
         select * from base_professional where professional_code = #{professionalCode}
     </select>
 
+    <select id="countByParentCodec" parameterType="java.lang.String">
+        select count(id) from base_professional where parent_code = #{professionalCode}
+    </select>
+
+    <select id="selectByParentCode" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+        select * from base_professional where parent_code = #{professionalCode}
+    </select>
+
 </mapper>