Browse Source

添加了采购合同数据

wxf 1 year ago
parent
commit
8fd21f011c
17 changed files with 652 additions and 38 deletions
  1. 51 0
      sd-business/src/main/java/com/sd/business/controller/purchase/PurchaseBomController.java
  2. 7 0
      sd-business/src/main/java/com/sd/business/entity/apply/dto/ApplyBuyDto.java
  3. 17 0
      sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseBomDto.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseBomSelectDto.java
  5. 15 0
      sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseSelectDto.java
  6. 38 0
      sd-business/src/main/java/com/sd/business/entity/purchase/enums/PurchaseEnums.java
  7. 63 0
      sd-business/src/main/java/com/sd/business/entity/purchase/po/PurchaseBom.java
  8. 57 0
      sd-business/src/main/java/com/sd/business/entity/purchase/vo/PurchaseBomVo.java
  9. 21 0
      sd-business/src/main/java/com/sd/business/entity/purchase/vo/PurchaseVo.java
  10. 6 1
      sd-business/src/main/java/com/sd/business/flow/ApplyBuyFlow.java
  11. 135 0
      sd-business/src/main/java/com/sd/business/flow/PurchaseFlow.java
  12. 35 0
      sd-business/src/main/java/com/sd/business/mapper/purchase/PurchaseBomMapper.java
  13. 43 0
      sd-business/src/main/java/com/sd/business/service/purchase/PurchaseBomService.java
  14. 58 0
      sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseBomServiceImpl.java
  15. 41 1
      sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseServiceImpl.java
  16. 40 0
      sd-business/src/main/resources/mapper/purchase/PurchaseBomMapper.xml
  17. 8 36
      sd-business/src/main/resources/mapper/purchase/PurchaseMapper.xml

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

@@ -0,0 +1,51 @@
+package com.sd.business.controller.purchase;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.purchase.vo.PurchaseBomVo;
+import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.service.purchase.PurchaseBomService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 采购合同bom 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-08-07
+ */
+@RestController
+@RequestMapping("/purchaseBom")
+public class PurchaseBomController {
+
+    @Autowired
+    private PurchaseBomService purchaseBomService;
+
+    /**
+     * 采购合同bom分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseBomVo> page(@RequestBody PurchaseBomSelectDto dto) {
+        return purchaseBomService.getPage(dto);
+    }
+
+    /**
+     * 采购合同bom明细
+     */
+    @PostMapping("/detail")
+    public PurchaseBomVo detail(@RequestBody BaseSelectDto dto) {
+        return purchaseBomService.detail(dto.getId());
+    }
+
+    /**
+     * 采购合同bom删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        purchaseBomService.delete(dto.getId());
+    }
+
+}

+ 7 - 0
sd-business/src/main/java/com/sd/business/entity/apply/dto/ApplyBuyDto.java

@@ -2,6 +2,7 @@ package com.sd.business.entity.apply.dto;
 
 import com.sd.business.entity.apply.po.ApplyBuy;
 import com.sd.business.entity.apply.po.ApplyBuyBom;
+import com.sd.business.entity.apply.vo.ApplyBuyBomVo;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -24,4 +25,10 @@ public class ApplyBuyDto extends ApplyBuy {
     @NotEmpty(message = "申购明细不能为空")
     private List<ApplyBuyBom> applyBuyBomList;
 
+    /**
+     * 申购bom
+     */
+    @NotEmpty(message = "申购明细不能为空")
+    private List<ApplyBuyBomVo> applyBuyBomVoList;
+
 }

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseBomDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.purchase.dto;
+
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购合同bom新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-08-07
+ */
+@Getter
+@Setter
+public class PurchaseBomDto extends PurchaseBom {
+
+}

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

@@ -0,0 +1,17 @@
+package com.sd.business.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购合同bom列表查询入参实体
+ *
+ * @author 
+ * @since 2023-08-07
+ */
+@Getter
+@Setter
+public class PurchaseBomSelectDto extends BaseSelectDto {
+
+}

+ 15 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/dto/PurchaseSelectDto.java

@@ -13,5 +13,20 @@ import lombok.Setter;
 @Getter
 @Setter
 public class PurchaseSelectDto extends BaseSelectDto {
+    /**
+     * 采购合同编号
+     */
+    private String code;
+
+    /**
+     * 流程状态 -1草稿  0未发起 1进行中 2已通过 3已驳回
+     */
+    private Integer flowStatus;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
 
 }

+ 38 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/enums/PurchaseEnums.java

@@ -0,0 +1,38 @@
+package com.sd.business.entity.purchase.enums;
+
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.fjhx.flow.enums.FlowStatusEnum;
+import com.ruoyi.common.exception.ServiceException;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Getter
+@AllArgsConstructor
+public enum PurchaseEnums {
+    DRAUGHT(1, "草稿"),
+    NOT_INITIATED(2, "未发起"),
+    IN_PROGRESS(3, "进行中"),
+    PASSED(4, "已通过"),
+    REJECTED(5, "已驳回"),
+            ;
+
+    private final Integer key;
+
+    private final String value;
+
+    private static final Map<Integer, PurchaseEnums> map = new HashMap<>();
+
+    static {
+        for (PurchaseEnums value : PurchaseEnums.values()) {
+            map.put(value.getKey(), value);
+        }
+    }
+
+
+
+}

+ 63 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/po/PurchaseBom.java

@@ -0,0 +1,63 @@
+package com.sd.business.entity.purchase.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 采购合同bom
+ * </p>
+ *
+ * @author 
+ * @since 2023-08-07
+ */
+@Getter
+@Setter
+@TableName("purchase_bom")
+public class PurchaseBom extends BasePo {
+
+    /**
+     * 采购合同id
+     */
+    private Long purchaseId;
+
+    /**
+     * 申购单bom id
+     */
+    private Long applyBuyBomId;
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 含税单价
+     */
+    private BigDecimal unitPrice;
+
+    /**
+     * 税率
+     */
+    private BigDecimal taxRate;
+
+    /**
+     * 采购数量
+     */
+    private BigDecimal purchaseQuantity;
+
+    /**
+     * 退货数量
+     */
+    private BigDecimal returnQuantity;
+
+    /**
+     * 已付金额
+     */
+    private BigDecimal paidAmount;
+
+}

+ 57 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/vo/PurchaseBomVo.java

@@ -0,0 +1,57 @@
+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;
+
+/**
+ * 采购合同bom列表查询返回值实体
+ *
+ * @author
+ * @since 2023-08-07
+ */
+@Getter
+@Setter
+public class PurchaseBomVo extends PurchaseBom {
+    /**
+     * 含税小计
+     */
+    private BigDecimal sumPriceAmount;
+
+    /**
+     * 不含税小计
+     */
+    private BigDecimal taxSumPriceAmount;
+
+    /**
+     * bom规格编码
+     */
+    private String specCode;
+
+    /**
+     * bom规格名称
+     */
+    private String specName;
+
+    /**
+     * bom规格颜色
+     */
+    private String colour;
+
+    /**
+     * bom规格长
+     */
+    private BigDecimal length;
+
+    /**
+     * bom规格宽
+     */
+    private BigDecimal width;
+
+    /**
+     * bom规格高
+     */
+    private BigDecimal height;
+}

+ 21 - 0
sd-business/src/main/java/com/sd/business/entity/purchase/vo/PurchaseVo.java

@@ -1,9 +1,12 @@
 package com.sd.business.entity.purchase.vo;
 
 import com.sd.business.entity.purchase.po.Purchase;
+import com.sd.business.entity.purchase.po.PurchaseBom;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 采购合同列表查询返回值实体
  *
@@ -13,5 +16,23 @@ import lombok.Setter;
 @Getter
 @Setter
 public class PurchaseVo extends Purchase {
+    /**
+     * 供应商名称
+     */
+    private  String supplierName;
+
+    /**
+     * 申购单号
+     */
+    private String applyBuyCode;
+
+    /**
+     * 采购详情数据
+     */
+    private List<PurchaseBomVo> purchaseBomVoList;
 
+    /**
+     * 采购详情数据
+     */
+    private List<PurchaseBom> purchaseBomList;
 }

+ 6 - 1
sd-business/src/main/java/com/sd/business/flow/ApplyBuyFlow.java

@@ -1,6 +1,8 @@
 package com.sd.business.flow;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowThreadLocalUtil;
@@ -11,10 +13,12 @@ import com.ruoyi.common.utils.SecurityUtils;
 import com.sd.business.entity.apply.dto.ApplyBuyDto;
 import com.sd.business.entity.apply.po.ApplyBuy;
 import com.sd.business.entity.apply.po.ApplyBuyBom;
+import com.sd.business.entity.apply.vo.ApplyBuyBomVo;
 import com.sd.business.service.apply.ApplyBuyBomService;
 import com.sd.business.service.apply.ApplyBuyService;
 import com.sd.business.util.CodeEnum;
 import com.sd.framework.util.Assert;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -52,7 +56,8 @@ public class ApplyBuyFlow extends FlowDelegate {
         applyBuyDto.setFlowId(flowId);
         applyBuyDto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
 
-        List<ApplyBuyBom> applyBuyBomList = applyBuyDto.getApplyBuyBomList();
+        List<ApplyBuyBomVo> applyBuyBomVoList = applyBuyDto.getApplyBuyBomVoList();
+        List<ApplyBuyBom> applyBuyBomList = BeanUtil.copyToList(applyBuyBomVoList, ApplyBuyBom.class);
         for (ApplyBuyBom applyBuyBom : applyBuyBomList) {
             applyBuyBom.setApplyBuyId(applyBuyId);
             applyBuyBom.setPurchaseQuantity(BigDecimal.ZERO);

+ 135 - 0
sd-business/src/main/java/com/sd/business/flow/PurchaseFlow.java

@@ -0,0 +1,135 @@
+package com.sd.business.flow;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.flow.enums.FlowStatusEnum;
+import com.sd.business.entity.apply.po.ApplyBuy;
+import com.sd.business.entity.apply.po.ApplyBuyBom;
+import com.sd.business.entity.purchase.enums.PurchaseEnums;
+import com.sd.business.entity.purchase.po.Purchase;
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.sd.business.entity.purchase.vo.PurchaseBomVo;
+import com.sd.business.entity.purchase.vo.PurchaseVo;
+import com.sd.business.service.apply.ApplyBuyBomService;
+import com.sd.business.service.apply.ApplyBuyService;
+import com.sd.business.service.purchase.PurchaseBomService;
+import com.sd.business.service.purchase.PurchaseService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 发起流程
+ */
+@Service
+public class PurchaseFlow  extends FlowDelegate {
+    @Autowired
+    private PurchaseService purchaseService;
+
+    @Autowired
+    private PurchaseBomService purchaseBomService;
+
+    @Autowired
+    private ApplyBuyService applyBuyService;
+
+    @Autowired
+    private ApplyBuyBomService  applyBuyBomService;
+
+    @Override
+    public String getFlowKey() {
+        return "purchase";
+    }
+
+    /**
+     * 流程发起
+     */
+
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+        PurchaseVo purchase = submitData.toJavaObject(PurchaseVo.class);
+
+        //判断是否存在采购ID,如果存在说明已经暂存
+        if (ObjectUtil.isNotEmpty(purchase.getId())){
+            purchase.setFlowStatus(PurchaseEnums.IN_PROGRESS.getKey());
+            purchase.setFlowId(flowId);
+            //修改采购暂存表的数据
+            purchaseService.updateById(purchase);
+
+            //删除采购bom表的数据
+            purchaseBomService.remove(Wrappers.<PurchaseBom>lambdaQuery().eq(PurchaseBom::getPurchaseId,purchase.getId()));
+
+            //获取到采购bom表的数据
+            List<PurchaseBom> purchaseBomList = purchase.getPurchaseBomList();
+            //添加采购bom表的数据
+            purchaseBomList.forEach(purchaseBom -> purchaseBom.setPurchaseId(purchase.getId()));
+            purchaseBomService.saveBatch(purchaseBomList);
+        }else {
+            //修改状态为进行中
+            purchase.setFlowStatus(PurchaseEnums.IN_PROGRESS.getKey());
+            purchase.setFlowId(flowId);
+            purchaseService.save(purchase);
+            //获取到采购bom表的数据
+            List<PurchaseBom> purchaseBomList = purchase.getPurchaseBomList();
+            //添加采购bom表的数据
+            purchaseBomList.forEach(purchaseBom -> purchaseBom.setPurchaseId(purchase.getId()));
+            purchaseBomService.saveBatch(purchaseBomList);
+        }
+        return purchase.getId();
+    }
+
+    /**
+     * 流程结束
+     * @param flowId
+     * @param businessId
+     * @param submitData
+     */
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        Purchase purchase = purchaseService.getById(businessId);
+        purchase.setFlowStatus(PurchaseEnums.PASSED.getKey());
+        purchase.setFlowId(flowId);
+        //修改采购暂存表的数据
+        purchaseService.updateById(purchase);
+
+        //修改申购表的状态为已申购
+        ApplyBuy applyBuy = new ApplyBuy();
+        applyBuy.setId(purchase.getApplyBuyId());
+        applyBuy.setFlowStatus(4);
+        applyBuyService.updateById(applyBuy);
+
+
+        //查询采购合同bom表的信息
+        List<PurchaseBom> purchaseBoms = purchaseBomService.list(Wrappers.<PurchaseBom>lambdaQuery().eq(PurchaseBom::getPurchaseId, businessId));
+
+        List<ApplyBuyBom> applyBuyBomList = new ArrayList<>();
+        //修改申购bom表的采购数量
+        for (PurchaseBom purchaseBom : purchaseBoms) {
+            ApplyBuyBom applyBuyBom = new ApplyBuyBom();
+            applyBuyBom.setPurchaseQuantity(purchaseBom.getPurchaseQuantity());
+            applyBuyBom.setId(purchaseBom.getApplyBuyBomId());
+            applyBuyBomList.add(applyBuyBom);
+        }
+        applyBuyBomService.updateBatchById(applyBuyBomList);
+
+    }
+
+    /**
+     * 流程驳回
+     * @param flowId
+     * @param businessId
+     * @param flowStatus
+     */
+    @Override
+    public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        Purchase purchase = purchaseService.getById(businessId);
+        purchase.setFlowStatus(PurchaseEnums.REJECTED.getKey());
+        purchase.setFlowId(flowId);
+        //修改采购暂存表的数据
+        purchaseService.updateById(purchase);
+    }
+}

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

@@ -0,0 +1,35 @@
+package com.sd.business.mapper.purchase;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.purchase.vo.PurchaseBomVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 采购合同bom Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-08-07
+ */
+public interface PurchaseBomMapper extends BaseMapper<PurchaseBom> {
+
+    /**
+     * 采购合同bom分页
+     */
+    Page<PurchaseBomVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseBom> wrapper);
+
+    /**
+     * 查询采购单详情数据
+     * @param query
+     * @return
+     */
+    List<PurchaseBomVo> getList(@Param("ew") LambdaQueryWrapper<PurchaseBom> query);
+}

+ 43 - 0
sd-business/src/main/java/com/sd/business/service/purchase/PurchaseBomService.java

@@ -0,0 +1,43 @@
+package com.sd.business.service.purchase;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.purchase.vo.PurchaseBomVo;
+import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 采购合同bom 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-08-07
+ */
+public interface PurchaseBomService extends BaseService<PurchaseBom> {
+
+    /**
+     * 采购合同bom分页
+     */
+    Page<PurchaseBomVo> getPage(PurchaseBomSelectDto dto);
+
+    /**
+     * 采购合同bom明细
+     */
+    PurchaseBomVo detail(Long id);
+
+    /**
+     * 采购合同bom删除
+     */
+    void delete(Long id);
+
+    /**
+     * 查询采购单详情数据
+     * @param query
+     */
+    List<PurchaseBomVo> getList(LambdaQueryWrapper<PurchaseBom> query);
+}

+ 58 - 0
sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseBomServiceImpl.java

@@ -0,0 +1,58 @@
+package com.sd.business.service.purchase.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.sd.business.mapper.purchase.PurchaseBomMapper;
+import com.sd.business.service.purchase.PurchaseBomService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.purchase.vo.PurchaseBomVo;
+import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 采购合同bom 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-08-07
+ */
+@Service
+public class PurchaseBomServiceImpl extends ServiceImpl<PurchaseBomMapper, PurchaseBom> implements PurchaseBomService {
+
+    @Override
+    public Page<PurchaseBomVo> getPage(PurchaseBomSelectDto dto) {
+        IWrapper<PurchaseBom> wrapper = getWrapper();
+        wrapper.orderByDesc("pb", PurchaseBom::getId);
+        Page<PurchaseBomVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public PurchaseBomVo detail(Long id) {
+        PurchaseBom PurchaseBom = this.getById(id);
+        PurchaseBomVo result = BeanUtil.toBean(PurchaseBom, PurchaseBomVo.class);
+        return result;
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 查询采购单详情数据
+     * @param query
+     */
+    @Override
+    public List<PurchaseBomVo> getList(LambdaQueryWrapper<PurchaseBom> query) {
+        return baseMapper.getList(query);
+    }
+
+}

+ 41 - 1
sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseServiceImpl.java

@@ -1,17 +1,30 @@
 package com.sd.business.service.purchase.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.util.ListUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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.purchase.dto.PurchaseDto;
 import com.sd.business.entity.purchase.dto.PurchaseSelectDto;
 import com.sd.business.entity.purchase.po.Purchase;
+import com.sd.business.entity.purchase.po.PurchaseBom;
+import com.sd.business.entity.purchase.vo.PurchaseBomVo;
 import com.sd.business.entity.purchase.vo.PurchaseVo;
 import com.sd.business.mapper.purchase.PurchaseMapper;
+import com.sd.business.service.purchase.PurchaseBomService;
 import com.sd.business.service.purchase.PurchaseService;
+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>
@@ -23,12 +36,39 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> implements PurchaseService {
+    @Autowired
+    private PurchaseBomService purchaseBomService;
 
     @Override
     public Page<PurchaseVo> getPage(PurchaseSelectDto dto) {
         IWrapper<Purchase> wrapper = getWrapper();
-        wrapper.orderByDesc("p", Purchase::getId);
+        //采购单号
+        wrapper.like("p",Purchase::getCode,dto.getCode());
+        //采购单价
+        wrapper.eq("p",Purchase::getFlowStatus,dto.getFlowStatus());
+        //供应商名称
+        wrapper.like("s.name",dto.getSupplierName());
+        wrapper.orderByDesc("p", Purchase::getCreateTime);
+        //查询采购单数据
         Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+
+        List<PurchaseVo> records = page.getRecords();
+
+        //获取到采购单ID
+        List<Long> ids = records.stream().map(PurchaseVo::getId).collect(Collectors.toList());
+        //查询采购单详情数据
+        LambdaQueryWrapper<PurchaseBom> query = Wrappers.lambdaQuery();
+        query.in(PurchaseBom::getPurchaseId,ids);
+        List<PurchaseBomVo> purchaseBomVoList = purchaseBomService.getList(query);
+        Map<Long, List<PurchaseBomVo>> purchaseBomVoMap = purchaseBomVoList.stream().collect(Collectors.groupingBy(PurchaseBomVo::getPurchaseId));
+
+        //赋值采购详情数据
+        for (PurchaseVo record : records) {
+            List<PurchaseBomVo> purchaseBomVos = purchaseBomVoMap.get(record.getId());
+            if (ObjectUtil.isEmpty(purchaseBomVos)){
+                record.setPurchaseBomVoList(purchaseBomVos);
+            }
+        }
         return page;
     }
 

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

@@ -0,0 +1,40 @@
+<?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.sd.business.mapper.purchase.PurchaseBomMapper">
+    <select id="getPage" resultType="com.sd.business.entity.purchase.vo.PurchaseBomVo">
+        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.return_quantity,
+            pb.paid_amount,
+            pb.create_user,
+            pb.create_time,
+            pb.update_user,
+            pb.update_time
+        from purchase_bom pb
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getList" resultType="com.sd.business.entity.purchase.vo.PurchaseBomVo">
+        SELECT
+            pb.*,
+            pb.return_quantity * pb.unit_price sumPriceAmount,
+            pb.return_quantity * pb.tax_price taxSumPriceAmount,
+            bs.`code` specCode,
+            bs.`name` specName,
+            bs.colour,
+            bs.length,
+            bs.width,
+            bs.height
+        FROM
+            purchase_bom pb
+                JOIN bom_spec bs ON pb.bom_spec_id = bs.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

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

@@ -2,42 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sd.business.mapper.purchase.PurchaseMapper">
     <select id="getPage" resultType="com.sd.business.entity.purchase.vo.PurchaseVo">
-        select p.id,
-               p.code,
-               p.apply_buy_id,
-               p.supplier_id,
-               p.province,
-               p.city,
-               p.detailed_address,
-               p.contact_person,
-               p.contact_number,
-               p.receive_goods_type,
-               p.receive_province,
-               p.receive_city,
-               p.receive_detailed_address,
-               p.receive_postcode,
-               p.receive_contact_person,
-               p.receive_contact_number,
-               p.settlement_method,
-               p.invoice_type,
-               p.delivery_date,
-               p.currency,
-               p.advance_payment,
-               p.total_amount_including_tax,
-               p.total_amount_excluding_tax,
-               p.contract_template_id,
-               p.contract,
-               p.return_amount,
-               p.closed_account_amount,
-               p.deductible_amount,
-               p.payment_status,
-               p.flow_id,
-               p.flow_status,
-               p.create_user,
-               p.create_time,
-               p.update_user,
-               p.update_time
-        from purchase p
+           SELECT
+                  p.*,
+                  s.name supplierName,
+                  ad.code applyBuyCode
+           FROM
+                  purchase p
+                  JOIN supplier s ON p.supplier_id = s.id
+                  JOIN apply_buy ab ON p.apply_buy_id = ab.id
             ${ew.customSqlSegment}
     </select>