Răsfoiți Sursa

供应商价格

24282 2 ani în urmă
părinte
comite
58ffee5240

+ 67 - 0
admin/src/main/java/com/fjhx/admin/controller/supplier/SupplierPriceController.java

@@ -0,0 +1,67 @@
+package com.fjhx.admin.controller.supplier;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.admin.entity.product.vo.SupplierPriceAddVo;
+import com.fjhx.admin.entity.supplier.dto.SupplierPriceDto;
+import com.fjhx.admin.entity.supplier.dto.SupplierPriceSelectDto;
+import com.fjhx.admin.entity.supplier.vo.SupplierPriceVo;
+import com.fjhx.admin.service.supplier.SupplierPriceService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 供应商价格 前端控制器
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@RestController
+@RequestMapping("/supplierPrice")
+public class SupplierPriceController {
+
+    @Autowired
+    private SupplierPriceService supplierPriceService;
+
+    /**
+     * 供应商价格分页
+     */
+    @PostMapping("/page")
+    public Page<SupplierPriceVo> page(@RequestBody SupplierPriceSelectDto dto) {
+        return supplierPriceService.getPage(dto);
+    }
+
+    /**
+     * 供应商价格新增
+     *
+     * @return
+     */
+    @PostMapping("/add")
+    public SupplierPriceAddVo add(@Validated @RequestBody SupplierPriceDto supplierPriceDto) {
+        return supplierPriceService.add(supplierPriceDto);
+    }
+
+    /**
+     * 供应商价格编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SupplierPriceDto supplierPriceDto) {
+        supplierPriceService.edit(supplierPriceDto);
+    }
+
+    /**
+     * 供应商价格删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        supplierPriceService.delete(dto.getId());
+    }
+
+}

+ 7 - 0
admin/src/main/java/com/fjhx/admin/entity/product/po/ProductInfo.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * <p>
  * 产品库
@@ -19,6 +21,11 @@ import lombok.Setter;
 public class ProductInfo extends BasePo {
 
     /**
+     * 定义 1产品 2物料
+     */
+    private Integer definition;
+
+    /**
      * 产品分类id
      */
     private Long productClassifyId;

+ 23 - 0
admin/src/main/java/com/fjhx/admin/entity/product/vo/SupplierPriceAddVo.java

@@ -0,0 +1,23 @@
+package com.fjhx.admin.entity.product.vo;
+
+import com.fjhx.admin.entity.supplier.po.SupplierPrice;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class SupplierPriceAddVo {
+
+    /**
+     * 是否添加成功
+     */
+    private boolean addSuccess;
+
+    /**
+     * 失败说明列表
+     */
+    private List<SupplierPrice> existSupplierPriceList;
+
+}

+ 29 - 0
admin/src/main/java/com/fjhx/admin/entity/supplier/dto/SupplierPriceDto.java

@@ -0,0 +1,29 @@
+package com.fjhx.admin.entity.supplier.dto;
+
+import com.fjhx.admin.entity.supplier.po.SupplierPrice;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 供应商价格新增编辑入参实体
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+public class SupplierPriceDto extends SupplierPrice {
+
+    /**
+     * 供应商价格列表
+     */
+    private List<SupplierPrice> supplierPriceList;
+
+    /**
+     * 存在重复是否修改
+     */
+    private boolean renewWhileItExists;
+
+}

+ 27 - 0
admin/src/main/java/com/fjhx/admin/entity/supplier/dto/SupplierPriceSelectDto.java

@@ -0,0 +1,27 @@
+package com.fjhx.admin.entity.supplier.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 供应商价格列表查询入参实体
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+public class SupplierPriceSelectDto extends BaseSelectDto {
+
+    /**
+     * 供应商类型 1贸易商 2工厂
+     */
+    private Integer supplierType;
+
+    /**
+     * 定义 1产品 2物料
+     */
+    private Integer definition;
+
+}

+ 40 - 0
admin/src/main/java/com/fjhx/admin/entity/supplier/po/SupplierPrice.java

@@ -0,0 +1,40 @@
+package com.fjhx.admin.entity.supplier.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 供应商价格
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+@TableName("supplier_price")
+public class SupplierPrice extends BasePo {
+
+    /**
+     * 供应商id
+     */
+    @NotNull(message = "供应商id不能为空")
+    private Long supplierInfoId;
+
+    /**
+     * 产品id
+     */
+    private Long productInfoId;
+
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+
+}

+ 68 - 0
admin/src/main/java/com/fjhx/admin/entity/supplier/vo/SupplierPriceVo.java

@@ -0,0 +1,68 @@
+package com.fjhx.admin.entity.supplier.vo;
+
+import com.fjhx.admin.entity.supplier.po.SupplierPrice;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 供应商价格列表查询返回值实体
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+public class SupplierPriceVo extends SupplierPrice {
+
+
+    /**
+     * 货品类型 1产品 2物料
+     */
+    private Integer definition;
+
+    /**
+     * 所属分类id
+     */
+    private Long productClassifyId;
+
+    /**
+     * 所属分类
+     */
+    private String productClassifyName;
+
+    /**
+     * 所属类型
+     */
+    private String productType;
+
+    /**
+     * 货品编码
+     */
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    private String productName;
+
+    /**
+     * 规格型号
+     */
+    private String productSpec;
+
+    /**
+     * 单位
+     */
+    private String productUnit;
+
+    /**
+     * 供应商类型 1贸易商 2工厂
+     */
+    private Integer supplierType;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+}

+ 26 - 0
admin/src/main/java/com/fjhx/admin/mapper/supplier/SupplierPriceMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.admin.mapper.supplier;
+
+import com.fjhx.admin.entity.supplier.po.SupplierPrice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.admin.entity.supplier.vo.SupplierPriceVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 供应商价格 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+public interface SupplierPriceMapper extends BaseMapper<SupplierPrice> {
+
+    /**
+     * 供应商价格分页
+     */
+    Page<SupplierPriceVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SupplierPrice> wrapper);
+
+}

+ 44 - 0
admin/src/main/java/com/fjhx/admin/service/supplier/SupplierPriceService.java

@@ -0,0 +1,44 @@
+package com.fjhx.admin.service.supplier;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.admin.entity.product.vo.SupplierPriceAddVo;
+import com.fjhx.admin.entity.supplier.dto.SupplierPriceDto;
+import com.fjhx.admin.entity.supplier.dto.SupplierPriceSelectDto;
+import com.fjhx.admin.entity.supplier.po.SupplierPrice;
+import com.fjhx.admin.entity.supplier.vo.SupplierPriceVo;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 供应商价格 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+public interface SupplierPriceService extends BaseService<SupplierPrice> {
+
+    /**
+     * 供应商价格分页
+     */
+    Page<SupplierPriceVo> getPage(SupplierPriceSelectDto dto);
+
+    /**
+     * 供应商价格新增
+     *
+     * @return
+     */
+    SupplierPriceAddVo add(SupplierPriceDto supplierPriceDto);
+
+    /**
+     * 供应商价格编辑
+     */
+    void edit(SupplierPriceDto supplierPriceDto);
+
+    /**
+     * 供应商价格删除
+     */
+    void delete(Long id);
+
+}

+ 113 - 0
admin/src/main/java/com/fjhx/admin/service/supplier/impl/SupplierPriceServiceImpl.java

@@ -0,0 +1,113 @@
+package com.fjhx.admin.service.supplier.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.admin.entity.product.po.ProductInfo;
+import com.fjhx.admin.entity.product.vo.SupplierPriceAddVo;
+import com.fjhx.admin.entity.supplier.dto.SupplierPriceDto;
+import com.fjhx.admin.entity.supplier.dto.SupplierPriceSelectDto;
+import com.fjhx.admin.entity.supplier.po.SupplierInfo;
+import com.fjhx.admin.entity.supplier.po.SupplierPrice;
+import com.fjhx.admin.entity.supplier.vo.SupplierPriceVo;
+import com.fjhx.admin.mapper.supplier.SupplierPriceMapper;
+import com.fjhx.admin.service.supplier.SupplierPriceService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 供应商价格 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Service
+public class SupplierPriceServiceImpl extends ServiceImpl<SupplierPriceMapper, SupplierPrice> implements SupplierPriceService {
+
+    @Override
+    public Page<SupplierPriceVo> getPage(SupplierPriceSelectDto dto) {
+        IWrapper<SupplierPrice> wrapper = getWrapper();
+        wrapper.orderByDesc("sp", SupplierPrice::getId);
+        wrapper.eq("si", SupplierInfo::getType, dto.getSupplierType());
+        wrapper.eq("pi", ProductInfo::getDefinition, dto.getDefinition());
+        wrapper.keyword(dto,
+                new SqlField("si.name"),
+                new SqlField("pi.name"),
+                new SqlField("pi.code")
+        );
+        Page<SupplierPriceVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public SupplierPriceAddVo add(SupplierPriceDto supplierPriceDto) {
+        SupplierPriceAddVo supplierPriceAddVo = new SupplierPriceAddVo();
+
+        // 添加产品列表
+        List<SupplierPrice> supplierPriceList = supplierPriceDto.getSupplierPriceList();
+        // 添加产品id列表
+        List<Long> productInfoIdList = supplierPriceList.stream().map(SupplierPrice::getProductInfoId).collect(Collectors.toList());
+
+        // 供应商id
+        Long supplierInfoId = supplierPriceDto.getSupplierInfoId();
+
+        // 存在供应商价格列表
+        List<SupplierPrice> existSupplierPriceList = list(q -> q
+                .eq(SupplierPrice::getSupplierInfoId, supplierInfoId)
+                .in(SupplierPrice::getProductInfoId, productInfoIdList));
+
+        if (existSupplierPriceList.size() == 0) {
+            supplierPriceList.forEach(item -> item.setSupplierInfoId(supplierPriceDto.getSupplierInfoId()));
+            saveBatch(supplierPriceList);
+            supplierPriceAddVo.setAddSuccess(true);
+            return supplierPriceAddVo;
+        }
+
+        // 存在价格更新
+        if (supplierPriceDto.isRenewWhileItExists()) {
+
+            // 产品id,明细map
+            Map<Long, SupplierPrice> map = existSupplierPriceList.stream()
+                    .collect(Collectors.toMap(SupplierPrice::getProductInfoId, Function.identity()));
+
+            for (SupplierPrice supplierPrice : supplierPriceList) {
+                supplierPrice.setSupplierInfoId(supplierInfoId);
+
+                SupplierPrice existSupplierPrice = map.get(supplierPrice.getProductInfoId());
+                if (existSupplierPrice != null) {
+                    supplierPrice.setId(existSupplierPrice.getId());
+                    supplierPrice.setPrice(existSupplierPrice.getPrice());
+                }
+            }
+            saveOrUpdateBatch(supplierPriceList);
+            supplierPriceAddVo.setAddSuccess(true);
+            return supplierPriceAddVo;
+        }
+
+        // 存在价格不更新
+        supplierPriceAddVo.setExistSupplierPriceList(existSupplierPriceList);
+        return supplierPriceAddVo;
+    }
+
+    @Override
+    public void edit(SupplierPriceDto supplierPriceDto) {
+        supplierPriceDto.setSupplierInfoId(null);
+        supplierPriceDto.setProductInfoId(null);
+
+        this.updateById(supplierPriceDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 26 - 0
admin/src/main/resources/mapper/supplier/SupplierPriceMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.admin.mapper.supplier.SupplierPriceMapper">
+    <select id="getPage" resultType="com.fjhx.admin.entity.supplier.vo.SupplierPriceVo">
+        select sp.id,
+               sp.supplier_info_id,
+               sp.product_info_id,
+               sp.price,
+               si.name       supplierName,
+               si.type       supplierType,
+               pi.definition productDefinition,
+               pi.product_classify_id,
+               pc.name       productClassifyName,
+               pi.type       productType,
+               pi.code       productCode,
+               pi.name       productName,
+               pi.spec       productSpec,
+               pi.unit       productUnit
+        from supplier_price sp
+                 inner join supplier_info si on sp.supplier_info_id = si.id
+                 inner join product_info pi on sp.product_info_id = pi.id
+                 inner join product_classify pc on pi.product_classify_id = pc.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>