Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

caozj 1 vuosi sitten
vanhempi
commit
9cf1849984

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

+ 3 - 16
hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseUpdateFlow.java

@@ -196,21 +196,14 @@ public class EhsdPurchaseUpdateFlow extends FlowDelegate {
 
         //先将当前合同id 以及 当前合同关联数据的合同id 改为临时id
         long tempId = IdWorker.getId();
-//        ehsdPurchaseService.update(q -> q.eq(BaseIdPo::getId, businessId).set(BaseIdPo::getId, tempId));
-        ehsdPurchaseService.updatePurchaseId(businessId,tempId,SecurityUtils.getUserId());
+        ehsdPurchaseService.updatePurchaseId(businessId,tempId,SecurityUtils.getUserId(),null);
         ehsdPurchaseProductService.update(q -> q.eq(EhsdPurchaseProduct::getPurchaseId, businessId).set(EhsdPurchaseProduct::getPurchaseId, tempId));
         ehsdPurchaseProjectService.update(q -> q.eq(EhsdPurchaseProject::getPurchaseId, businessId).set(EhsdPurchaseProject::getPurchaseId, tempId));
         ehsdPurchaseArrivalService.update(q -> q.eq(EhsdPurchaseArrival::getPurchaseId, businessId).set(EhsdPurchaseArrival::getPurchaseId, tempId));
 
 
         //将旧合同的id改为新合同id
-        ehsdPurchaseService.updatePurchaseId(oldPurchaseId,businessId,SecurityUtils.getUserId());
-        ehsdPurchaseService.update(q -> q
-                .eq(BaseIdPo::getId, oldPurchaseId)
-                .set(EhsdPurchase::getOldPurchaseId, oldPurchaseId)
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
+        ehsdPurchaseService.updatePurchaseId(oldPurchaseId,businessId,SecurityUtils.getUserId(),null);
         ehsdPurchaseProductService.update(q -> q
                 .eq(EhsdPurchaseProduct::getPurchaseId, oldPurchaseId)
                 .set(EhsdPurchaseProduct::getPurchaseId, businessId)
@@ -230,13 +223,7 @@ public class EhsdPurchaseUpdateFlow extends FlowDelegate {
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
         //将新合同id改为旧合同id
-        ehsdPurchaseService.updatePurchaseId(tempId,oldPurchaseId,SecurityUtils.getUserId());
-        ehsdPurchaseService.update(q -> q
-                .eq(BaseIdPo::getId, tempId)
-                .set(EhsdPurchase::getOldPurchaseId, businessId)
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
+        ehsdPurchaseService.updatePurchaseId(tempId,oldPurchaseId,SecurityUtils.getUserId(),businessId);
         ehsdPurchaseProductService.update(q -> q
                 .eq(EhsdPurchaseProduct::getPurchaseId, tempId)
                 .set(EhsdPurchaseProduct::getPurchaseId, oldPurchaseId)

+ 2 - 2
hx-sale/src/main/java/com/fjhx/sale/mapper/purchase/EhsdPurchaseMapper.java

@@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Param;
  * ehsd采购表 Mapper 接口
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-05-17
  */
 public interface EhsdPurchaseMapper extends BaseMapper<EhsdPurchase> {
@@ -23,5 +23,5 @@ public interface EhsdPurchaseMapper extends BaseMapper<EhsdPurchase> {
      */
     Page<EhsdPurchaseVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<EhsdPurchase> wrapper);
 
-    boolean updatePurchaseId(Long id, long newId, Long userId);
+    boolean updatePurchaseId(Long id, Long newId, Long userId, Long oldPurchaseId);
 }

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseService.java

@@ -56,5 +56,5 @@ public interface EhsdPurchaseService extends BaseService<EhsdPurchase> {
      */
     List<EhsdPurchaseVo> getListBySupplyId(String supplyId);
 
-    boolean updatePurchaseId(Long businessId, long tempId, Long userId);
+    boolean updatePurchaseId(Long id, Long newId, Long userId, Long oldPurchaseId);
 }

+ 55 - 4
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;
 
     /**
      * 分页
@@ -129,7 +141,7 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         wrapper.ne(EhsdPurchase::getStatus, FlowStatusEnum1.UPDATE.getKey());
 
         //不显示 在审批中 但是 有历史合同id的数据
-        wrapper.not(q->q
+        wrapper.not(q -> q
                 .eq(EhsdPurchase::getStatus, FlowStatusEnum1.UNDER_REVIEW.getKey())
                 .isNotNull("t1.old_purchase_id")
         );
@@ -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());
@@ -244,6 +294,7 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
 
     /**
      * 详情
+     *
      * @param id
      * @return
      */
@@ -306,7 +357,7 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         DynamicDataSourceContextHolder.push(SourceConstant.BASE);
         FlowExample flowExample = flowExampleService.getOne(Wrappers.<FlowExample>query().lambda().eq(FlowExample::getBusinessId, id));
         // 赋值流程id
-        if(ObjectUtil.isNotEmpty(flowExample)) {
+        if (ObjectUtil.isNotEmpty(flowExample)) {
             result.setFlowExampleId(flowExample.getId());
         }
 
@@ -392,8 +443,8 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
      * 采购id修改
      */
     @Override
-    public boolean updatePurchaseId(Long id, long newId, Long userId) {
-        return baseMapper.updatePurchaseId(id, newId, userId);
+    public boolean updatePurchaseId(Long id, Long newId, Long userId, Long oldPurchaseId) {
+        return baseMapper.updatePurchaseId(id, newId, userId, oldPurchaseId);
     }
 
 }

+ 8 - 1
hx-sale/src/main/resources/mapper/purchase/EhsdPurchaseMapper.xml

@@ -12,7 +12,14 @@
     </select>
 
     <update id="updatePurchaseId">
-        update ehsd_purchase set id = #{newId},update_user = #{userId},update_time = sysdate() where id = #{id}
+        update
+            ehsd_purchase
+        set id = #{newId},
+            update_user = #{userId},
+            update_time = sysdate()
+            <if test="oldPurchaseId != null">,old_purchase_id = #{oldPurchaseId}</if>
+        where
+            id = #{id}
     </update>