Эх сурвалжийг харах

采购明细添加 待采购数量,客户名称添加唯一检查

yzc 1 жил өмнө
parent
commit
8ae3f3f2f4

+ 15 - 4
hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerServiceImpl.java

@@ -37,10 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -232,6 +229,13 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
     @Override
     @DSTransactional
     public void add(CustomerDto customerDto) {
+        //客户名称 唯一检查
+        Customer repeatCustomer = this.getOne(q -> q.eq(Customer::getName, customerDto.getName()));
+        if (ObjectUtil.isNotEmpty(repeatCustomer)) {
+            Map<Long, String> nickNameMapByIds = UserUtil.getNickNameMapByIds(Collections.singletonList(repeatCustomer.getUserId()));
+            String userName = nickNameMapByIds.get(repeatCustomer.getUserId());
+            throw new ServiceException("添加失败。该客户名称已存在,绑定的业务员为" + userName);
+        }
 
         CustomizeAreaUtil.setAreaId(customerDto);
 
@@ -249,6 +253,13 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
     @DSTransactional
     @Override
     public void edit(CustomerDto customerDto) {
+        //客户名称 唯一检查
+        Customer repeatCustomer = this.getOne(q -> q.eq(Customer::getName, customerDto.getName()).ne(Customer::getId, customerDto.getId()));
+        if (ObjectUtil.isNotEmpty(repeatCustomer)) {
+            Map<Long, String> nickNameMapByIds = UserUtil.getNickNameMapByIds(Collections.singletonList(repeatCustomer.getUserId()));
+            String userName = nickNameMapByIds.get(repeatCustomer.getUserId());
+            throw new ServiceException("修改失败。该客户名称已存在,绑定的业务员为" + userName);
+        }
 
         CustomizeAreaUtil.setAreaId(customerDto);
 

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/vo/EhsdPurchaseProductVo.java

@@ -37,4 +37,9 @@ public class EhsdPurchaseProductVo extends EhsdPurchaseProduct {
     private Integer definition;
 
     private BigDecimal rate;
+
+    /**
+     * 待采购数量
+     */
+    private BigDecimal expendQuantity;
 }

+ 50 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -27,9 +27,12 @@ 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.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.pay.PayService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetailProduct;
 import com.fjhx.sale.entity.pack.vo.PackDetailProductVo;
@@ -39,10 +42,13 @@ import com.fjhx.sale.entity.purchase.po.*;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseDocumentaryVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
+import com.fjhx.sale.entity.sample.po.SampleProduct;
 import com.fjhx.sale.mapper.purchase.EhsdPurchaseMapper;
+import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.sale.service.pack.PackDetailProductService;
 import com.fjhx.sale.service.pack.PackDetailService;
 import com.fjhx.sale.service.purchase.*;
+import com.fjhx.sale.service.sample.SampleProductService;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
@@ -104,6 +110,12 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     private EhsdPurchaseProductMountingsService ehsdPurchaseProductMountingsService;
     @Autowired
     private InvoiceDetailsService invoiceDetailsService;
+    @Autowired
+    private ContractProductService contractProductService;
+    @Autowired
+    private SampleProductService sampleProductService;
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
 
     /**
      * 分页
@@ -209,6 +221,44 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
             }
         }
 
+        //赋值产品待采购数量信息
+        if (ObjectUtils.isNotEmpty(ehsdPurchaseProductList)) {
+            //申购来源
+            List<EhsdPurchaseProductVo> subscribeSource = ehsdPurchaseProductVos.stream().filter(item -> Objects.equals(item.getDataResource(),0)).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(subscribeSource)) {
+                List<Long> subscribeDetailSourceIds = subscribeSource.stream().map(EhsdPurchaseProductVo::getDataResourceId).distinct().collect(Collectors.toList());
+                Map<Long, SubscribeDetail> contractProductMap = subscribeDetailService.mapKEntity(SubscribeDetail::getId, q -> q.in(SubscribeDetail::getId, subscribeDetailSourceIds));
+                for (EhsdPurchaseProductVo ehsdPurchaseProductVo : subscribeSource) {
+                    SubscribeDetail subscribeDetail = contractProductMap.get(ehsdPurchaseProductVo.getDataResourceId());
+                    BigDecimal count = subscribeDetail.getCount();
+                    //获取已采购数量
+                    List<EhsdPurchaseProduct> ehsdPurchaseProductList1 = ehsdPurchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getDataResource, 0).eq(EhsdPurchaseProduct::getSubscribeDetailId, subscribeDetail.getId()));
+                    BigDecimal add = ObjectUtils.isEmpty(ehsdPurchaseProductList1) ? BigDecimal.ZERO : ehsdPurchaseProductList1.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    ehsdPurchaseProductVo.setExpendQuantity(count.subtract(add));
+                }
+            }
+            //合同来源
+            List<EhsdPurchaseProductVo> contractSource = ehsdPurchaseProductVos.stream().filter(item -> Objects.equals(item.getDataResource(),1)).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(contractSource)) {
+                List<Long> contractSourceIds = contractSource.stream().map(EhsdPurchaseProductVo::getDataResourceId).distinct().collect(Collectors.toList());
+                Map<Long, ContractProduct> contractProductMap = contractProductService.mapKEntity(ContractProduct::getId, q -> q.in(ContractProduct::getId, contractSourceIds));
+                for (EhsdPurchaseProductVo ehsdPurchaseProductVo : contractSource) {
+                    ContractProduct stringObjectMap = contractProductMap.get(ehsdPurchaseProductVo.getDataResourceId());
+                    ehsdPurchaseProductVo.setExpendQuantity(stringObjectMap.getExpendQuantity());
+                }
+            }
+            //样品单来源
+            List<EhsdPurchaseProductVo> sampleSource = ehsdPurchaseProductVos.stream().filter(item -> Objects.equals(item.getDataResource(),2)).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(sampleSource)) {
+                List<Long> sampleSourceIds = sampleSource.stream().map(EhsdPurchaseProductVo::getDataResourceId).distinct().collect(Collectors.toList());
+                Map<Long, SampleProduct> sampleProductMap = sampleProductService.mapKEntity(SampleProduct::getId, q -> q.in(SampleProduct::getId, sampleSourceIds));
+                for (EhsdPurchaseProductVo ehsdPurchaseProductVo : sampleSource) {
+                    SampleProduct stringObjectMap = sampleProductMap.get(ehsdPurchaseProductVo.getDataResourceId());
+                    ehsdPurchaseProductVo.setExpendQuantity(stringObjectMap.getExpendQuantity());
+                }
+            }
+        }
+
         //赋值产品信息
         productInfoService.attributeAssign(ehsdPurchaseProductVos, EhsdPurchaseProductVo::getProductId, (item, product) -> {
             item.setDefinition(product.getDefinition());