|
@@ -1,8 +1,10 @@
|
|
|
package com.fjhx.sale.service.purchase.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -14,14 +16,20 @@ import com.fjhx.common.entity.documentary.bo.DocumentaryData;
|
|
|
import com.fjhx.common.enums.FlowStatusEnum1;
|
|
|
import com.fjhx.common.service.corporation.CorporationService;
|
|
|
import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
|
|
|
+import com.fjhx.flow.entity.flow.po.FlowExample;
|
|
|
import com.fjhx.flow.service.flow.FlowExampleService;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.purchase.entity.invoice.po.InvoiceDetails;
|
|
|
import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
|
|
|
+import com.fjhx.purchase.entity.pay.po.Pay;
|
|
|
+import com.fjhx.purchase.entity.pay.po.PayDetail;
|
|
|
import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
|
|
|
+import com.fjhx.purchase.entity.pay.vo.PayVo;
|
|
|
import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
|
|
|
import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
|
|
|
import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
|
|
|
import com.fjhx.purchase.service.pay.PayDetailService;
|
|
|
+import com.fjhx.purchase.service.pay.PayService;
|
|
|
import com.fjhx.sale.entity.pack.po.PackDetail;
|
|
|
import com.fjhx.sale.entity.pack.po.PackDetailProduct;
|
|
|
import com.fjhx.sale.entity.pack.vo.PackDetailProductVo;
|
|
@@ -52,6 +60,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -76,6 +85,10 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
|
|
|
@Autowired
|
|
|
private SupplierInfoService supplierInfoService;
|
|
|
@Autowired
|
|
|
+ private PayService payService;
|
|
|
+ @Autowired
|
|
|
+ private PayDetailService payDetailService;
|
|
|
+ @Autowired
|
|
|
private CorporationService corporationService;
|
|
|
@Autowired
|
|
|
private FlowExampleService flowExampleService;
|
|
@@ -84,13 +97,13 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
|
|
|
@Autowired
|
|
|
private EhsdPurchaseArrivalService ehsdPurchaseArrivalService;
|
|
|
@Autowired
|
|
|
+ private EhsdPurchaseService ehsdPurchaseService;
|
|
|
+ @Autowired
|
|
|
private ProductInfoService productInfoService;
|
|
|
@Autowired
|
|
|
private EhsdPurchaseProductMountingsService ehsdPurchaseProductMountingsService;
|
|
|
@Autowired
|
|
|
private InvoiceDetailsService invoiceDetailsService;
|
|
|
- @Autowired
|
|
|
- private PayDetailService payDetailService;
|
|
|
|
|
|
/**
|
|
|
* 分页
|
|
@@ -229,6 +242,77 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 详情
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public PayVo payDetail(Long id) {
|
|
|
+ Pay pay = payService.getById(id);
|
|
|
+ if (pay == null) {
|
|
|
+ throw new ServiceException("没有找到采购付款记录");
|
|
|
+ }
|
|
|
+
|
|
|
+ PayVo result = BeanUtil.toBean(pay, PayVo.class);
|
|
|
+
|
|
|
+ // 赋值供应商名称
|
|
|
+ SupplierInfo supplierInfo = supplierInfoService.getById(pay.getSupplyId());
|
|
|
+ result.setSupplyName(supplierInfo.getName());
|
|
|
+
|
|
|
+ // 赋值采购付款明细
|
|
|
+ List<PayDetail> payDetailList = payDetailService.list(q -> q.eq(PayDetail::getPayId, id));
|
|
|
+ List<PayDetailVo> payDetailVoList = BeanUtil.copyToList(payDetailList, PayDetailVo.class);
|
|
|
+ result.setPayDetailVoList(payDetailVoList);
|
|
|
+
|
|
|
+ if (payDetailVoList.size() == 0) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 赋值采购付款明细采购合同编号、采购合同金额
|
|
|
+ ehsdPurchaseService.attributeAssign(payDetailVoList, PayDetail::getPurchaseId, (item, purchase) -> {
|
|
|
+ item.setPurchaseCode(purchase.getCode());
|
|
|
+ item.setPurchaseAmount(purchase.getAmount());
|
|
|
+ });
|
|
|
+
|
|
|
+ // 赋值采购付款明细已收发票金额
|
|
|
+ List<Long> purchaseIdList = payDetailVoList.stream()
|
|
|
+ .map(PayDetail::getPurchaseId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (purchaseIdList.size() == 0) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //赋值已付款金额
|
|
|
+ Map<Long, List<PayDetail>> payDetailMap = payDetailService.mapKGroup(PayDetail::getPurchaseId, q -> q.in(PayDetail::getPurchaseId, purchaseIdList));
|
|
|
+ for (PayDetailVo payDetail : payDetailVoList) {
|
|
|
+ List<PayDetail> payDetail1 = payDetailMap.get(payDetail.getPurchaseId());
|
|
|
+ BigDecimal sumMoney = payDetail1.stream().map(PayDetail::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ payDetail.setSumMoney(sumMoney);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<InvoiceDetails> list = invoiceDetailsService.list(q -> q.in(InvoiceDetails::getPurchaseId, purchaseIdList));
|
|
|
+ Map<Long, BigDecimal> invoiceAmountMap = list.stream().collect(Collectors.toMap(
|
|
|
+ InvoiceDetails::getPurchaseId,
|
|
|
+ InvoiceDetails::getMoney,
|
|
|
+ BigDecimal::add
|
|
|
+ ));
|
|
|
+ payDetailVoList.forEach(item -> item.setInvoiceAmount(invoiceAmountMap.getOrDefault(item.getPurchaseId(), BigDecimal.ZERO)));
|
|
|
+
|
|
|
+ //赋值流程ID
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
+ FlowExample flowExample = flowExampleService.getOne(Wrappers.<FlowExample>query().lambda().eq(FlowExample::getBusinessId, id));
|
|
|
+ // 赋值流程id
|
|
|
+ if(ObjectUtil.isNotEmpty(flowExample)) {
|
|
|
+ result.setFlowExampleId(flowExample.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void add(EhsdPurchaseDto ehsdPurchaseDto) {
|
|
|
this.save(ehsdPurchaseDto);
|