Browse Source

新增入库采购合同查询接口

fgd 1 year ago
parent
commit
d168ffed31

+ 30 - 0
sd-business/src/main/java/com/sd/business/controller/purchase/PurchaseBomController.java

@@ -0,0 +1,30 @@
+package com.sd.business.controller.purchase;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
+import com.sd.business.entity.purchase.vo.PurchaseBomSelectVo;
+import com.sd.business.service.purchase.PurchaseBomService;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+/**
+ * 采购合同 bom
+ */
+@RestController
+@RequestMapping("/purchaseBom")
+public class PurchaseBomController {
+    @Autowired
+    private PurchaseBomService purchaseBomService;
+
+    /**
+     * 采购合同 bom分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseBomSelectVo> page(@RequestBody PurchaseBomSelectDto dto) {
+        return purchaseBomService.getPage(dto);
+    }
+
+}

+ 11 - 0
sd-business/src/main/java/com/sd/business/controller/purchase/PurchaseController.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -70,4 +72,13 @@ public class PurchaseController {
         purchaseService.delete(dto.getId());
     }
 
+    /**
+     * 采购可入库列表
+     * @return
+     */
+    @PostMapping("/purchaseInStorageList")
+    public List<PurchaseVo> purchaseInStorageList() {
+        return purchaseService.getPurchaseInStorageList();
+    }
+
 }

+ 70 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseBomSelectDto.java

@@ -4,6 +4,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 采购合同bom列表查询入参实体
  *
@@ -13,5 +15,73 @@ import lombok.Setter;
 @Getter
 @Setter
 public class PurchaseBomSelectDto extends BaseSelectDto {
+    /**
+     * 采购合同id
+     */
+    private Long purchaseId;
+
+    /**
+     * bom品名
+     */
+    private String bomName;
+
+    /**
+     * bom品号
+     */
+    private String bomCode;
+
+    /**
+     * 规格品名
+     */
+    private String bomSpecName;
+
+    /**
+     * 规格品号
+     */
+    private String bomSpecCode;
+
+    /**
+     * 种类 字典:bom_species
+     */
+    private String species;
+
+    /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String chromatophore;
+
+    /**
+     * 压纹工艺 字典:bom_embossingProcess
+     */
+    private String embossingProcess;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String frontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String reverseGrain;
+
+    /**
+     * 颜色
+     */
+    private String colour;
+
+    /**
+     * 售价体系id
+     */
+    private Long priceSystemId;
+
+    /**
+     * bom分类id
+     */
+    private Long bomClassifyId;
 
+    /**
+     * bom分类id
+     */
+    private List<Long> bomClassifyIdList;
 }

+ 83 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/vo/PurchaseBomInfoVo.java

@@ -0,0 +1,83 @@
+package com.sd.business.entity.purchase.vo;
+
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class PurchaseBomInfoVo extends PurchaseBom {
+
+    /**
+     * bom id
+     */
+    private Long bomId;
+
+
+    /**
+     * bom规格 id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 图片路径
+     */
+    private String mainImgUrl;
+
+    /**
+     * bom规格品名
+     */
+    private String bomSpecName;
+
+    /**
+     * bom规格品号
+     */
+    private String bomSpecCode;
+
+    /**
+     * 颜色
+     */
+    private String colour;
+
+    /**
+     * 成本价
+     */
+    private BigDecimal costPrice;
+
+    /**
+     * 对内销售价(含税)
+     */
+    private BigDecimal internalSellingPrice;
+
+    /**
+     * 对外销售价(含税)
+     */
+    private BigDecimal externalSellingPrice;
+
+    /**
+     * 安全库存
+     */
+    private BigDecimal safetyStock;
+
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
+
+    /**
+     * 高 cm
+     */
+    private BigDecimal height;
+
+    /**
+     * 净重 g
+     */
+    private BigDecimal netWeight;
+}

+ 77 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/vo/PurchaseBomSelectVo.java

@@ -0,0 +1,77 @@
+package com.sd.business.entity.purchase.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 采购合同bom列表查询返回值实体
+ *
+ * @author
+ * @since 2023-08-07
+ */
+@Getter
+@Setter
+public class PurchaseBomSelectVo {
+
+    /**
+     * bom id
+     */
+    private Long bomId;
+
+    /**
+     * bom品号
+     */
+    private String bomCode;
+
+    /**
+     * bom 品名
+     */
+    private String bomName;
+
+    /**
+     * 项目小类 字典:bom_itemSubclass
+     */
+    private String itemSubclass;
+
+    /**
+     * 种类 字典:bom_species
+     */
+    private String species;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String frontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String reverseGrain;
+
+    /**
+     * LOGO
+     */
+    private String logo;
+
+    /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String chromatophore;
+
+    /**
+     * 压纹工艺 字典:bom_embossingProcess
+     */
+    private String embossingProcess;
+
+    /**
+     * 产品主图
+     */
+    private String mainImgUrl;
+
+    /**
+     * bom规格信息列表
+     */
+    private List<PurchaseBomInfoVo> purchaseBomInfoList;
+}

+ 19 - 0
sd-business/src/main/java/com/sd/business/mapper/purchase/PurchaseBomMapper.java

@@ -4,10 +4,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.sd.business.entity.purchase.vo.PurchaseBomInfoVo;
+import com.sd.business.entity.purchase.vo.PurchaseBomSelectVo;
 import com.sd.business.entity.purchase.vo.PurchaseBomVo;
 import com.sd.business.entity.purchase.vo.PurchaseInTransitBomVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -28,4 +32,19 @@ public interface PurchaseBomMapper extends BaseMapper<PurchaseBom> {
      * 采购在途物料bom分页
      */
     Page<PurchaseInTransitBomVo> getPurchaseInTransitBomPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseInTransitBomVo> wrapper);
+
+
+    /**
+     * 查询采购 bom 分页
+     * @param wrapper
+     * @return
+     */
+    Page<PurchaseBomSelectVo> getPurchaseBomPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseBom> wrapper);
+
+    /**
+     * 查询采购bom和bom规格详情
+     * @param wrapper
+     * @return
+     */
+    List<PurchaseBomInfoVo> getPurchaseBomInfoList(@Param("ew") IWrapper<PurchaseBom> wrapper);
 }

+ 8 - 0
sd-business/src/main/java/com/sd/business/mapper/purchase/PurchaseMapper.java

@@ -7,6 +7,8 @@ import com.sd.business.entity.purchase.po.Purchase;
 import com.sd.business.entity.purchase.vo.PurchaseVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,4 +25,10 @@ public interface PurchaseMapper extends BaseMapper<Purchase> {
      */
     Page<PurchaseVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Purchase> wrapper);
 
+    /**
+     * 获取入库未完成的采购合同
+     * @param wrapper
+     * @return
+     */
+    List<PurchaseVo> getPurchaseInStorageList(IWrapper<Purchase> wrapper);
 }

+ 2 - 1
sd-business/src/main/java/com/sd/business/service/purchase/PurchaseBomService.java

@@ -5,6 +5,7 @@ import com.ruoyi.common.core.service.BaseService;
 import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
 import com.sd.business.entity.purchase.dto.PurchaseInTransitBomSelectDto;
 import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.sd.business.entity.purchase.vo.PurchaseBomSelectVo;
 import com.sd.business.entity.purchase.vo.PurchaseBomVo;
 import com.sd.business.entity.purchase.vo.PurchaseInTransitBomVo;
 
@@ -22,7 +23,7 @@ public interface PurchaseBomService extends BaseService<PurchaseBom> {
     /**
      * 采购合同bom分页
      */
-    Page<PurchaseBomVo> getPage(PurchaseBomSelectDto dto);
+    Page<PurchaseBomSelectVo> getPage(PurchaseBomSelectDto dto);
 
     /**
      * 采购合同bom明细

+ 7 - 0
sd-business/src/main/java/com/sd/business/service/purchase/PurchaseService.java

@@ -7,6 +7,8 @@ import com.sd.business.entity.purchase.dto.PurchaseSelectDto;
 import com.sd.business.entity.purchase.po.Purchase;
 import com.sd.business.entity.purchase.vo.PurchaseVo;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -43,4 +45,9 @@ public interface PurchaseService extends BaseService<Purchase> {
      */
     void delete(Long id);
 
+    /**
+     * 获取可入库的采购合同列表
+     * @return
+     */
+    List<PurchaseVo> getPurchaseInStorageList();
 }

+ 61 - 2
sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseBomServiceImpl.java

@@ -1,20 +1,32 @@
 package com.sd.business.service.purchase.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.bom.po.Bom;
 import com.sd.business.entity.bom.po.BomSpec;
 import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
 import com.sd.business.entity.purchase.dto.PurchaseInTransitBomSelectDto;
 import com.sd.business.entity.purchase.po.Purchase;
 import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.sd.business.entity.purchase.vo.PurchaseBomInfoVo;
+import com.sd.business.entity.purchase.vo.PurchaseBomSelectVo;
 import com.sd.business.entity.purchase.vo.PurchaseBomVo;
 import com.sd.business.entity.purchase.vo.PurchaseInTransitBomVo;
 import com.sd.business.mapper.purchase.PurchaseBomMapper;
+import com.sd.business.service.bom.BomClassifyService;
+import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.purchase.PurchaseBomService;
+import com.sd.framework.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 
 /**
  * <p>
@@ -27,11 +39,58 @@ import org.springframework.stereotype.Service;
 @Service
 public class PurchaseBomServiceImpl extends ServiceImpl<PurchaseBomMapper, PurchaseBom> implements PurchaseBomService {
 
+    @Autowired
+    private BomSpecService bomSpecService;
+
+    @Autowired
+    private BomClassifyService bomClassifyService;
+
+
     @Override
-    public Page<PurchaseBomVo> getPage(PurchaseBomSelectDto dto) {
+    public Page<PurchaseBomSelectVo> getPage(PurchaseBomSelectDto dto) {
+        Assert.notEmpty(dto.getPurchaseId(), "采购合同id不能为空");
         IWrapper<PurchaseBom> wrapper = getWrapper();
+        wrapper.eq("pb", PurchaseBom::getPurchaseId, dto.getPurchaseId());
+        wrapper.like("b", Bom::getName, dto.getBomName());
+        wrapper.like("b", Bom::getCode, dto.getBomCode());
+        wrapper.eq("b", Bom::getSpecies, dto.getSpecies());
+        wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
+        wrapper.eq("b", Bom::getEmbossingProcess, dto.getEmbossingProcess());
+        wrapper.eq("b", Bom::getFrontGrain, dto.getFrontGrain());
+        wrapper.eq("b", Bom::getReverseGrain, dto.getReverseGrain());
+        wrapper.eq("bs", BomSpec::getColour, dto.getColour());
+        wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
+        wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
+        if (ObjectUtil.isNotNull(dto.getBomClassifyId())) {
+            List<Long> childrenIdList = bomClassifyService.getChildrenIdList(dto.getBomClassifyId());
+            wrapper.in("b", Bom::getBomClassifyId, childrenIdList);
+        }
+        if (ObjectUtil.isNotNull(dto.getBomClassifyIdList())) {
+            List<Long> childrenIdList = bomClassifyService.getChildrenIdList(dto.getBomClassifyIdList());
+            wrapper.in("b", Bom::getBomClassifyId, childrenIdList);
+        }
+        wrapper.orderByDesc("b", Bom::getId);
+        wrapper.groupBy("b.id");
+        Page<PurchaseBomSelectVo> page = this.baseMapper.getPurchaseBomPage(dto.getPage(), wrapper);
+        List<PurchaseBomSelectVo> records = page.getRecords();
+        if (records.size() == 0) {
+            return page;
+        }
+
+        List<Long> bomIdList = records.stream().map(PurchaseBomSelectVo::getBomId).collect(Collectors.toList());
+        wrapper = IWrapper.getWrapper();
+        wrapper.eq("pb", PurchaseBom::getPurchaseId, dto.getPurchaseId());
+        wrapper.in("bs", BomSpec::getBomId, bomIdList);
+        wrapper.eq("bs", BomSpec::getColour, dto.getColour());
+        wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
+        wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
         wrapper.orderByDesc("pb", PurchaseBom::getId);
-        Page<PurchaseBomVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<PurchaseBomInfoVo> list = this.baseMapper.getPurchaseBomInfoList(wrapper);
+        Map<Long, List<PurchaseBomInfoVo>> bomSpecIdMap = list.stream().collect(Collectors.groupingBy(PurchaseBomInfoVo::getBomId));
+
+        for (PurchaseBomSelectVo record : records) {
+            record.setPurchaseBomInfoList(bomSpecIdMap.get(record.getBomId()));
+        }
         return page;
     }
 

+ 9 - 0
sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseServiceImpl.java

@@ -3,6 +3,7 @@ package com.sd.business.service.purchase.impl;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.flow.enums.FlowStatusEnum;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
@@ -225,4 +226,12 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> i
         purchaseBomService.remove(q -> q.eq(PurchaseBom::getPurchaseId, id));
     }
 
+    @Override
+    public List<PurchaseVo> getPurchaseInStorageList() {
+        IWrapper<Purchase> wrapper = getWrapper();
+        wrapper.eq("p", Purchase::getFlowStatus, FlowStatusEnum.PASS.getKey());
+        wrapper.eq("p", Purchase::getStorageStatus, StatusConstant.NO);
+        return this.baseMapper.getPurchaseInStorageList(wrapper);
+    }
+
 }

+ 54 - 0
sd-business/src/main/resources/mapper/purchase/PurchaseBomMapper.xml

@@ -10,6 +10,7 @@
                pb.unit_price,
                pb.tax_rate,
                pb.purchase_quantity,
+               pb.arrival_quantity,
                pb.return_quantity,
                pb.paid_amount,
                pb.create_user,
@@ -20,6 +21,59 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getPurchaseBomPage" resultType="com.sd.business.entity.purchase.vo.PurchaseBomSelectVo">
+        select
+            b.id bomId,
+            b.code bomCode,
+            b.name bomName,
+            b.item_subclass,
+            b.species,
+            b.front_grain,
+            b.reverse_grain,
+            b.logo,
+            b.chromatophore,
+            b.embossing_process,
+            b.main_img_url
+        from purchase_bom pb
+                 LEFT JOIN bom_spec bs on pb.bom_spec_id = bs.id
+                 LEFT JOIN bom b on bs.bom_id = b.id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getPurchaseBomInfoList" resultType="com.sd.business.entity.purchase.vo.PurchaseBomInfoVo">
+        select pb.id,
+               pb.purchase_id,
+               pb.apply_buy_bom_id,
+               pb.bom_spec_id,
+               pb.unit_price,
+               pb.tax_rate,
+               pb.purchase_quantity,
+               pb.arrival_quantity,
+               pb.return_quantity,
+               pb.paid_amount,
+               pb.create_user,
+               pb.create_time,
+               pb.update_user,
+               pb.update_time,
+               bs.id bomSpesId,
+               bs.bom_id,
+               bs.main_img_url,
+               bs.name,
+               bs.code,
+               bs.colour,
+               bs.cost_price,
+               bs.internal_selling_price,
+               bs.external_selling_price,
+               bs.safety_stock,
+               bs.length,
+               bs.width,
+               bs.height,
+               bs.net_weight
+        from purchase_bom pb
+             LEFT JOIN bom_spec bs on pb.bom_spec_id = bs.id
+            ${ew.customSqlSegment}
+    </select>
+
     <select id="getPurchaseInTransitBomPage" resultType="com.sd.business.entity.purchase.vo.PurchaseInTransitBomVo">
         select
             bs.code bomSpecCode,

+ 8 - 0
sd-business/src/main/resources/mapper/purchase/PurchaseMapper.xml

@@ -12,4 +12,12 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getPurchaseInStorageList" resultType="com.sd.business.entity.purchase.vo.PurchaseVo">
+        select p.*,
+               s.name  supplierName
+        from purchase p
+                 left join supplier s on p.supplier_id = s.id
+            ${wrapper.customSqlSegment}
+    </select>
+
 </mapper>