李白
7 小时以前 5024682a739495a9546803188af8b203c6ad8a18
客商、销售员、产品、排产计划后台加入list列表,产品加入treeList接口
9个文件已修改
154 ■■■■■ 已修改文件
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SalesMan.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SalesManController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java
@@ -95,4 +95,8 @@
    @Column(columnDefinition = "bigint comment '所属区域Id'")
    private Long areaId;
    @Schema(description = "所属区域")
    @Column(columnDefinition = "bigint comment '所属区域'")
    private Long areaName;
}
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
@@ -1,12 +1,16 @@
package com.by4cloud.platformx.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Transient;
import lombok.Data;
import org.hibernate.annotations.Comment;
import jakarta.persistence.Table;
import java.util.List;
/**
 * @author wjli
@@ -39,7 +43,14 @@
    @Column(columnDefinition = "double default 0.00 comment '税率'")
    private Double taxRate;
    @Schema(description = "分类ID")
    @Column(columnDefinition = "bigint comment '分类ID'")
    private Long categoryId;
    @Schema(description = "父ID")
    @Column(columnDefinition = "bigint comment '父ID'")
    private Long parentId;
    /**
     * 标的物
     */
    @Transient
    @TableField(exist = false)
    private List<Product> children;
}
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SalesMan.java
@@ -35,5 +35,4 @@
    @Column(columnDefinition = "VARCHAR(20) comment '联系电话'")
    private String phone;
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java
@@ -51,6 +51,18 @@
        return R.ok(businessCustomerService.page(page, wrapper));
    }
    /**
     * 分页查询
     * @param businessCustomer 客商信息
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/list" )
    @PreAuthorize("@pms.hasPermission('business_businessCustomer_view')" )
    public R getBusinessCustomerList(@ParameterObject BusinessCustomer businessCustomer) {
        LambdaQueryWrapper<BusinessCustomer> wrapper = Wrappers.lambdaQuery();
        return R.ok(businessCustomerService.list(wrapper));
    }
    /**
     * 通过id查询客商信息
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java
@@ -9,6 +9,7 @@
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.business.entity.Product;
import com.by4cloud.platformx.business.service.ProductService;
import com.by4cloud.platformx.common.security.annotation.Inner;
import org.springframework.security.access.prepost.PreAuthorize;
import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -51,6 +52,33 @@
        return R.ok(productService.page(page, wrapper));
    }
    /**
     * 分页查询
     * @param product 产品信息
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/list" )
    @PreAuthorize("@pms.hasPermission('business_product_view')" )
    @Inner(value = false)
    public R getProductList(@ParameterObject Product product) {
        LambdaQueryWrapper<Product> wrapper = Wrappers.lambdaQuery();
        return R.ok(productService.list(wrapper));
    }
    /**
     * 层级查询
     * @param product 商品表
     * @return
     */
    @Operation(summary = "层级查询" , description = "层级查询" )
    @GetMapping("/treeList" )
    //@PreAuthorize("@pms.hasPermission('business_product_view')" )
    @Inner(value = false)
    public R getNewsCategoryTree(@ParameterObject Product product) {
        return R.ok(productService.treeList(product.getParentId(), product.getProductName()));
    }
    /**
     * 通过id查询产品信息
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
@@ -51,6 +51,18 @@
        return R.ok(productionPlanService.page(page, wrapper));
    }
    /**
     * 分页查询
     * @param productionPlan 排产计划
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/list" )
    @PreAuthorize("@pms.hasPermission('business_productionPlan_view')" )
    public R getProductionPlanList(@ParameterObject ProductionPlan productionPlan) {
        LambdaQueryWrapper<ProductionPlan> wrapper = Wrappers.lambdaQuery();
        return R.ok(productionPlanService.list(wrapper));
    }
    /**
     * 通过id查询排产计划
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SalesManController.java
@@ -51,6 +51,19 @@
        return R.ok(salesManService.page(page, wrapper));
    }
    /**
     * 分页查询
     * @param salesMan 销售人员
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/list" )
    @PreAuthorize("@pms.hasPermission('business_salesMan_view')" )
    public R getSalesManList(@ParameterObject SalesMan salesMan) {
        LambdaQueryWrapper<SalesMan> wrapper = Wrappers.lambdaQuery();
        return R.ok(salesManService.list(wrapper));
    }
    /**
     * 通过id查询销售人员
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java
@@ -1,8 +1,12 @@
package com.by4cloud.platformx.business.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.business.entity.Product;
import java.util.List;
public interface ProductService extends IService<Product> {
    List<Tree<Long>> treeList(Long parentId, String productName);
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
@@ -1,10 +1,24 @@
package com.by4cloud.platformx.business.service.impl;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.business.entity.Product;
import com.by4cloud.platformx.business.mapper.ProductMapper;
import com.by4cloud.platformx.business.service.ProductService;
import jakarta.validation.constraints.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
 * 产品信息
 *
@@ -13,4 +27,53 @@
 */
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
    @Override
    public List<Tree<Long>> treeList(Long parentId, String productName) {
        Long parent = parentId == null ? 0l : parentId;
        List<TreeNode<Long>> collect = baseMapper
                .selectList(Wrappers.<Product>lambdaQuery()
                        .like(StrUtil.isNotBlank(productName), Product::getProductName, productName)
                        .orderByAsc(Product::getCreateTime))
                .stream().map(getNodeFunction()).collect(Collectors.toList());
        // 模糊查询 不组装树结构 直接返回 表格方便编辑
        if (StrUtil.isNotBlank(productName)) {
            return collect.stream().map(node -> {
                Tree<Long> tree = new Tree<>();
                tree.putAll(node.getExtra());
                BeanUtils.copyProperties(node, tree);
                return tree;
            }).collect(Collectors.toList());
        }
        return TreeUtil.build(collect, parent);
    }
    @NotNull
    private Function<Product, TreeNode<Long>> getNodeFunction() {
        return product -> {
            TreeNode<Long> node = new TreeNode<>();
            node.setId(product.getId());
            node.setName(product.getProductName());
            node.setParentId(product.getParentId());
            node.setWeight(product.getParentId());
            // 扩展属性
            Map<String, Object> extra = new HashMap<>();
//            extra.put("picPath", category.getPicPath());
//            extra.put("Type", category.getType());
//            extra.put("isShow", category.getIsShow());
//            extra.put("iconPicPath", category.getIconPath());
//            extra.put("status", category.getStatus());
            // 适配 vue3
            Map<String, Object> meta = new HashMap<>();
            meta.put("title", product.getProductName());
            meta.put("icon", product.getPrice());
            extra.put("meta", meta);
            node.setExtra(extra);
            return node;
        };
    }
}