|
@@ -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;
|
|
|
+ }
|
|
|
}
|