yzc 2 anni fa
parent
commit
d7041bf997

+ 33 - 7
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -2,8 +2,6 @@ package com.fjhx.purchase.service.arrival.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
@@ -171,7 +169,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         JSONObject json = JSONObject.parseObject(victoriatouristJson);
         Long deliverGoodsId = json.getLong("deliverGoodsId");
 
-        if(ObjectUtil.isEmpty(deliverGoodsId)){
+        if (ObjectUtil.isEmpty(deliverGoodsId)) {
             throw new ServiceException("发货id不能为空");
         }
 
@@ -184,15 +182,15 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         SubscribeDetail byId = subscribeDetailService.getById(subscribeDetailId);
         Subscribe byId1 = subscribeService.getById(byId.getSubscribeId());
         String victoriatouristJson1 = byId1.getVictoriatouristJson();
-        if(ObjectUtil.isNotEmpty(victoriatouristJson1)){
+        if (ObjectUtil.isNotEmpty(victoriatouristJson1)) {
             //去申购单取仓库id
             JSONObject json1 = JSONObject.parseObject(victoriatouristJson1);
             Long receiptWarehouseId = json1.getLong("receiptWarehouseId");
-            json.put("receiptWarehouseId",receiptWarehouseId);
+            json.put("receiptWarehouseId", receiptWarehouseId);
         }
         //赋值物流公司名称
         CompanyInfo logisticsCompanyCode = companyInfoService.getOne(q -> q.eq(CompanyInfo::getCode, json.getString("logisticsCompanyCode")));
-        json.put("logisticsCompanyName",logisticsCompanyCode.getName());
+        json.put("logisticsCompanyName", logisticsCompanyCode.getName());
         //修改发货记录的状态为到货
         wdlyService.updateDeliverGoodsStatus(deliverGoodsId);
 
@@ -219,7 +217,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
         List<Long> arrivalDids = arrivalDetailList.stream().map(ArrivalDetail::getPurchaseDetailId).collect(Collectors.toList());
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.listByIds(arrivalDids);
-        if(ObjectUtil.isNotEmpty(purchaseDetailList)) {
+        if (ObjectUtil.isNotEmpty(purchaseDetailList)) {
             Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getId, Function.identity()));
             for (ArrivalDetail d : arrivalDetailList) {
                 Long id = IdWorker.getId();
@@ -242,6 +240,34 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         DynamicDataSourceContextHolder.push(SourceConstant.WMS);
         stockWaitDetailsService.saveBatch(stockWaitDetailsList);
         DynamicDataSourceContextHolder.poll();
+
+        //修改到货状态
+        Integer flag = 0;
+        List<PurchaseDetail> purchaseDetailsList1 = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getPurchaseId, purchase.getId()));
+        if (ObjectUtil.isNotEmpty(purchaseDetailsList1)) {
+            List<Long> purchaseDetailsIds = purchaseDetailsList1.stream().map(PurchaseDetail::getId).collect(Collectors.toList());
+            List<ArrivalDetail> arrivalDetailsList1 = arrivalDetailService.list(q -> q.in(ArrivalDetail::getPurchaseDetailId, purchaseDetailsIds));
+            if (ObjectUtil.isNotEmpty(arrivalDetailsList1)) {
+                Map<Long, List<ArrivalDetail>> arrivalDetailsMap = arrivalDetailsList1.stream().collect(Collectors.groupingBy(ArrivalDetail::getPurchaseDetailId));
+                for (PurchaseDetail purchaseDetail : purchaseDetailsList1) {
+                    List<ArrivalDetail> arrivalDetails = arrivalDetailsMap.get(purchaseDetail.getId());
+                    BigDecimal count = arrivalDetails.stream()
+                            .map(ArrivalDetail::getCount)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    if (purchaseDetail.getCount().compareTo(count) >= 0) {
+                        flag++;
+                    }
+                }
+                if (purchaseDetailsList1.size() == flag) {
+                    //完全到货
+                    purchase.setArrivalStatus(20);
+                } else {
+                    //部分到货
+                    purchase.setArrivalStatus(10);
+                }
+                purchaseService.updateById(purchase);
+            }
+        }
     }
 
     @Override