浏览代码

京东退货excel导入问题处理

yzc 2 年之前
父节点
当前提交
17eb39c693

+ 21 - 9
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackServiceImpl.java

@@ -28,7 +28,6 @@ import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
-import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -166,7 +165,7 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
                     //判断是否是组合
                     if (1 == json.getInteger("combination")) {
                         JSONArray productCombinationList = json.getJSONArray("productCombinationList");
-                        if(ObjectUtil.isEmpty(productCombinationList)){
+                        if (ObjectUtil.isEmpty(productCombinationList)) {
                             continue;
                         }
                         for (int i = 0; i < productCombinationList.size(); i++) {
@@ -189,22 +188,22 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
                 map.put(productInfo.getId(), quantity.add(jdBackDetails.getQuantity()));
             }
             //创建待质检记录
-            if(ObjectUtil.isEmpty(map)){
+            if (ObjectUtil.isEmpty(map)) {
                 return;
             }
             List<JdBackQualityWait> addJdBackQualityWaitList = new ArrayList<>();
             //获取已存在的待质检产品列表
-            List<JdBackQualityWait> jdBackQualityWaitList1 = jdBackQualityWaitService.listByIds(map.keySet());
-            Map<Long, JdBackQualityWait> JdBackQualityWaitMap = jdBackQualityWaitList1.stream().collect(Collectors.toMap(JdBackQualityWait::getProductId,Function.identity()));
+            List<JdBackQualityWait> jdBackQualityWaitList1 = jdBackQualityWaitService.list(q -> q.in(JdBackQualityWait::getProductId, map.keySet()));
+            Map<Long, JdBackQualityWait> JdBackQualityWaitMap = jdBackQualityWaitList1.stream().collect(Collectors.toMap(JdBackQualityWait::getProductId, Function.identity()));
             for (Map.Entry<Long, BigDecimal> entry : map.entrySet()) {
-                JdBackQualityWait oldJdBackQualityWait = JdBackQualityWaitMap.getOrDefault(entry.getKey(),new JdBackQualityWait());
+                JdBackQualityWait oldJdBackQualityWait = JdBackQualityWaitMap.getOrDefault(entry.getKey(), new JdBackQualityWait());
                 oldJdBackQualityWait.setProductId(entry.getKey());
                 //计算历史待质检+当前待质检
-                BigDecimal oldQuantity = oldJdBackQualityWait.getQuantity()==null?BigDecimal.ZERO:oldJdBackQualityWait.getQuantity();
-                oldJdBackQualityWait.setQuantity( oldQuantity.add(entry.getValue()));
+                BigDecimal oldQuantity = oldJdBackQualityWait.getQuantity() == null ? BigDecimal.ZERO : oldJdBackQualityWait.getQuantity();
+                oldJdBackQualityWait.setQuantity(oldQuantity.add(entry.getValue()));
 
                 //添加部分直接丢list统一处理
-                if(ObjectUtil.isEmpty(oldJdBackQualityWait.getId())){
+                if (ObjectUtil.isEmpty(oldJdBackQualityWait.getId())) {
                     addJdBackQualityWaitList.add(oldJdBackQualityWait);
                 }
                 //处理更新部分
@@ -258,6 +257,19 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
             return;
         }
 
+        //判断运单号是否唯一
+        List<String> waybillList = jdBackDetailsList.stream().map(JdBackDetails::getWaybill).collect(Collectors.toList());
+        List<JdBack> list1 = list(q -> q.in(JdBack::getWaybill, waybillList));
+        if (list1.size() > 0) {
+            List<String> waybillList1 = list1.stream().map(JdBack::getWaybill).collect(Collectors.toList());
+            throw new ServiceException("以下运单号已存在,请检查:" + waybillList1);
+        }
+
+        //赋值退货数量excel导入默认退货数量为1
+        for (JdBackDetails jdBackDetails : jdBackDetailsList) {
+            jdBackDetails.setQuantity(BigDecimal.ONE);
+        }
+
         List<String> productCodeString = jdBackDetailsList.stream().map(JdBackDetails::getProductCode).distinct().collect(Collectors.toList());
         List<String> list = productInfoService.listObject(ProductInfo::getCode, q -> q.in(ProductInfo::getCode, productCodeString));
         StringJoiner stringJoiner = new StringJoiner(",");