Kaynağa Gözat

feat: 批量订单导入;

hanchaolong 2 hafta önce
ebeveyn
işleme
f669281fe3

+ 20 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/dto/JDOrderDTO.java

@@ -97,12 +97,16 @@ public class JDOrderDTO implements Serializable {
     @ColumnWidth(30)
     private String sendStartTime;
 
+    private Date pickupStartTime;
+
     /** 上门取件结束时间 */
 //    @DateTimeFormat("yyyy-MM-dd HH:00:00")
     @ExcelProperty(value = "上门取件结束时间", order = 11, format = "TEXT")
     @ColumnWidth(30)
     private String sendEndTime;
 
+    private Date pickupEndTime;
+
     /** 产品类型 */
     @ExcelProperty(value = "产品类型", order = 12)
     @ColumnWidth(15)
@@ -328,4 +332,20 @@ public class JDOrderDTO implements Serializable {
     public void setIsReceiptCollect(String isReceiptCollect) {
         this.isReceiptCollect = isReceiptCollect;
     }
+
+    public Date getPickupStartTime() {
+        return pickupStartTime;
+    }
+
+    public void setPickupStartTime(Date pickupStartTime) {
+        this.pickupStartTime = pickupStartTime;
+    }
+
+    public Date getPickupEndTime() {
+        return pickupEndTime;
+    }
+
+    public void setPickupEndTime(Date pickupEndTime) {
+        this.pickupEndTime = pickupEndTime;
+    }
 }

+ 50 - 4
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillOrderServiceImpl.java

@@ -18,6 +18,7 @@ import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.datascope.annotation.DataScope;
 import com.ruoyi.common.redis.service.RedisIdGenerator;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.front.service.impl.Kuaidi100Service;
 import com.ruoyi.logistics.constant.JDDictConstants;
 import com.ruoyi.logistics.constant.RedisCacheConstants;
 import com.ruoyi.logistics.domain.BizAddressBook;
@@ -72,6 +73,9 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
     @Autowired
     private SysDeptRateServiceImpl sysDeptRateService;
 
+    @Autowired
+    private Kuaidi100Service kuaidi100Service;
+
     /**
      * 查询运单管理
      * 
@@ -457,7 +461,28 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
         if (StringUtils.isBlank(dto.getSenderAddress())) {
             throw new ServiceException("数据异常!寄件详细地址不能为空");
         }
-        
+
+        Map param = new HashMap();
+        param.put("param", dto.getSenderAddress());
+        try {
+            Map result = kuaidi100Service.queryIcrExpres(param);
+            Map<String, Object> receiverData = (Map<String, Object>) result.get("data");
+            List<Map<String, Object>> receiverResultList = (List<Map<String, Object>>) receiverData.get("result");
+            Map<String, Object> receiverResult = receiverResultList.get(0);
+            Map<String, Object> receiverXzq = (Map<String, Object>) receiverResult.get("xzq");
+            // 从 fullName 拆分 省,市,区
+            String receiverFullName = (String) receiverXzq.get("fullName");
+            String[] receiverSplit = receiverFullName.split(",");
+            String receiverProvince = receiverSplit[0];
+            String receiverCity = receiverSplit[1];
+            String receiverDistrict = receiverSplit[2];
+            dto.setSenderProvince(receiverProvince);
+            dto.setSenderCity(receiverCity);
+            dto.setSenderCounty(receiverDistrict);
+        } catch (Exception e) {
+            throw new ServiceException("数据异常!寄件详细地址识别有误");
+        }
+
         // 校验收件人信息
         if (StringUtils.isBlank(dto.getReceiverName())) {
             throw new ServiceException("数据异常!收件人姓名不能为空");
@@ -468,6 +493,25 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
         if (StringUtils.isBlank(dto.getReceiverAddress())) {
             throw new ServiceException("数据异常!收件详细地址不能为空");
         }
+        param.put("param", dto.getSenderAddress());
+        try {
+            Map result = kuaidi100Service.queryIcrExpres(param);
+            Map<String, Object> receiverData = (Map<String, Object>) result.get("data");
+            List<Map<String, Object>> receiverResultList = (List<Map<String, Object>>) receiverData.get("result");
+            Map<String, Object> receiverResult = receiverResultList.get(0);
+            Map<String, Object> receiverXzq = (Map<String, Object>) receiverResult.get("xzq");
+            // 从 fullName 拆分 省,市,区
+            String receiverFullName = (String) receiverXzq.get("fullName");
+            String[] receiverSplit = receiverFullName.split(",");
+            String receiverProvince = receiverSplit[0];
+            String receiverCity = receiverSplit[1];
+            String receiverDistrict = receiverSplit[2];
+            dto.setReceiverProvince(receiverProvince);
+            dto.setReceiverCity(receiverCity);
+            dto.setReceiverCounty(receiverDistrict);
+        } catch (Exception e) {
+            throw new ServiceException("数据异常!收件详细地址识别有误");
+        }
         
         // 校验货物信息
         if (StringUtils.isBlank(dto.getGoodsName())) {
@@ -487,9 +531,11 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
         if (dto.getSendStartTime() == null || dto.getSendEndTime() == null) {
             throw new ServiceException("数据异常!上门取件开始时间和结束时间不能为空");
         }
-//        if (dto.getSendStartTime().after(dto.getSendEndTime())) {
-//            throw new ServiceException("数据异常!上门取件开始时间不能晚于结束时间");
-//        }
+        dto.setPickupStartTime(DateUtils.dateTime(dto.getSendStartTime(), "yyyy-MM-dd HH:mm:ss"));
+        dto.setPickupEndTime(DateUtils.dateTime(dto.getSendEndTime(), "yyyy-MM-dd HH:mm:ss"));
+        if (dto.getPickupStartTime().getTime() > dto.getPickupEndTime().getTime()) {
+            throw new ServiceException("数据异常!上门取件开始时间不能大于上门取件结束时间");
+        }
         
         // 校验产品类型
         if (StringUtils.isBlank(dto.getProductCode())) {