Browse Source

跟单记录

24282 2 years ago
parent
commit
a9938ef794

+ 1 - 1
hx-common/src/main/java/com/fjhx/common/entity/documentary/eums/DocumentaryTypeEnum.java

@@ -15,7 +15,7 @@ public enum DocumentaryTypeEnum {
 
     sales(1, "销售跟单", "contractServiceImpl"),
 
-    purchase(2, "采购跟单", "purchaseDocumentaryImpl");
+    purchase(2, "采购跟单", "purchaseServiceImpl");
 
     /**
      * 跟单类型

+ 5 - 0
hx-purchase/pom.xml

@@ -51,6 +51,11 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-customer</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 20 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/bo/PurchaseDocumentaryBo.java

@@ -0,0 +1,20 @@
+package com.fjhx.purchase.entity.purchase.bo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PurchaseDocumentaryBo {
+
+    /**
+     * 销售合同号
+     */
+    private String code;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+}

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDocumentaryVo.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.entity.purchase.vo;
+
+import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.entity.documentary.vo.DocumentaryRecordVo;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Setter
+public class PurchaseDocumentaryVo extends Purchase implements DocumentaryData {
+
+    /**
+     * 供应商名称
+     */
+    private String supplyName;
+
+    /**
+     * 跟单记录
+     */
+    private Map<Long, List<DocumentaryRecordVo>> documentaryRecord;
+
+}

+ 53 - 13
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.purchase.service.purchase.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -9,15 +10,20 @@ 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.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
+import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
+import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDocumentaryVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.purchase.mapper.purchase.PurchaseMapper;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
@@ -29,6 +35,8 @@ import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.commons.collections4.MapUtils;
@@ -46,12 +54,13 @@ import java.util.stream.Collectors;
  * 采购 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-06
  */
 @DS(SourceConstant.PURCHASE)
 @Service
-public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> implements PurchaseService {
+public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
+        implements PurchaseService, GetDocumentaryBusinessTemplate {
 
     @Autowired
     private SupplierInfoService supplierInfoService;
@@ -70,8 +79,13 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> i
 
     @Autowired
     private ArrivalDetailService arrivalDetailService;
+
+    @Autowired
+    private CustomerService customerService;
+
     /**
      * 列表
+     *
      * @param dto
      * @return
      */
@@ -183,24 +197,24 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> i
      */
     @Override
     public List<Purchase> getListBySupplyId(String supplyId) {
-        if(StringUtils.isEmpty(supplyId)){
+        if (StringUtils.isEmpty(supplyId)) {
             throw new ServiceException("供应商ID不能为空");
         }
-        List<Purchase> list = this.list(Wrappers.<Purchase>query().lambda().eq(Purchase::getSupplyId,supplyId).eq(Purchase::getPurchaseStatus,PurchaseStatusEnum.PASS.getKey()));
+        List<Purchase> list = this.list(Wrappers.<Purchase>query().lambda().eq(Purchase::getSupplyId, supplyId).eq(Purchase::getPurchaseStatus, PurchaseStatusEnum.PASS.getKey()));
         List<Long> ids = list.stream().distinct().map(Purchase::getId).collect(Collectors.toList());
         List<InvoiceDetailsVo> invoiceDetailsList = invoiceDetailsService.getSumMoneyByPurchaseIds(ids);
-        Map<Long,BigDecimal> invoiceMap = invoiceDetailsList.stream().collect(Collectors.toMap(InvoiceDetailsVo::getPurchaseId,InvoiceDetailsVo::getSumMoney));
+        Map<Long, BigDecimal> invoiceMap = invoiceDetailsList.stream().collect(Collectors.toMap(InvoiceDetailsVo::getPurchaseId, InvoiceDetailsVo::getSumMoney));
         List<PayDetailVo> payDetailVoList = payDetailService.getSumMoneyByPurchaseIds(ids);
-        Map<Long,BigDecimal> payMap = payDetailVoList.stream().collect(Collectors.toMap(PayDetailVo::getPurchaseId,PayDetailVo::getSumMoney));
-        for(Purchase p:list){
-            if(MapUtils.isNotEmpty(invoiceMap)){
-                p.setSumInvoiceMoney(invoiceMap.getOrDefault(p.getId(),null));
-            }else{
+        Map<Long, BigDecimal> payMap = payDetailVoList.stream().collect(Collectors.toMap(PayDetailVo::getPurchaseId, PayDetailVo::getSumMoney));
+        for (Purchase p : list) {
+            if (MapUtils.isNotEmpty(invoiceMap)) {
+                p.setSumInvoiceMoney(invoiceMap.getOrDefault(p.getId(), null));
+            } else {
                 p.setSumInvoiceMoney(BigDecimal.ZERO);
             }
-            if(MapUtils.isNotEmpty(payMap)){
-                p.setSumPayMoney(payMap.getOrDefault(p.getId(),null));
-            }else{
+            if (MapUtils.isNotEmpty(payMap)) {
+                p.setSumPayMoney(payMap.getOrDefault(p.getId(), null));
+            } else {
                 p.setSumPayMoney(BigDecimal.ZERO);
             }
         }
@@ -208,4 +222,30 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> i
         return list;
     }
 
+    @Override
+    public Page<? extends DocumentaryData> getDocumentaryPage(JSONObject selectData, BaseSelectDto dto, List<Long> excludeBusinessId) {
+        PurchaseDocumentaryBo bo = selectData.toJavaObject(PurchaseDocumentaryBo.class);
+
+        IWrapper<Purchase> wrapper = IWrapper.getWrapper();
+        wrapper.like(Purchase::getCode, bo.getCode());
+        wrapper.eq(Purchase::getCreateUser, bo.getUserId());
+        wrapper.eq(Purchase::getPurchaseStatus, 30);
+        wrapper.notIn(Purchase::getId, excludeBusinessId);
+        wrapper.orderByDesc(Purchase::getId);
+
+        Page<Purchase> itemPage = page(dto.getPage(), wrapper);
+        Page<PurchaseDocumentaryVo> page = PageUtils.copyPage(itemPage, PurchaseDocumentaryVo.class);
+        List<PurchaseDocumentaryVo> records = page.getRecords();
+
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 供应商名称
+        supplierInfoService.attributeAssign(records, Purchase::getSupplyId, (item, supplier) -> {
+            item.setSupplyName(supplier.getName());
+        });
+
+        return page;
+    }
 }

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractDocumentary.java → hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractDocumentaryVo.java

@@ -11,7 +11,7 @@ import java.util.Map;
 
 @Getter
 @Setter
-public class ContractDocumentary extends Contract implements DocumentaryData {
+public class ContractDocumentaryVo extends Contract implements DocumentaryData {
 
     /**
      * 客户名称

+ 4 - 3
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -14,7 +14,7 @@ import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.vo.ContractDocumentary;
+import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.contract.ContractService;
@@ -142,12 +142,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         IWrapper<Contract> wrapper = IWrapper.getWrapper();
         wrapper.like(Contract::getCode, bo.getCode());
         wrapper.eq(Contract::getCreateUser, bo.getUserId());
+        wrapper.eq(Contract::getStatus, 30);
         wrapper.notIn(Contract::getId, excludeBusinessId);
         wrapper.orderByDesc(Contract::getId);
 
         Page<Contract> itemPage = page(dto.getPage(), wrapper);
-        Page<ContractDocumentary> page = PageUtils.copyPage(itemPage, ContractDocumentary.class);
-        List<ContractDocumentary> records = page.getRecords();
+        Page<ContractDocumentaryVo> page = PageUtils.copyPage(itemPage, ContractDocumentaryVo.class);
+        List<ContractDocumentaryVo> records = page.getRecords();
 
         if (records.size() == 0) {
             return page;