| 
					
				 | 
			
			
				@@ -1,18 +1,20 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.fs.erp.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.erp.constant.OrderStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.fs.erp.domain.ErpOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.fs.erp.domain.ErpOrderItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.fs.erp.domain.ErpOrderPayment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.fs.erp.domain.ErpRefundOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fs.erp.domain.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.erp.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.erp.http.JstErpHttpService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.erp.service.IErpOrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Arrays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Collections; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class JSTErpOrderServiceImpl implements IErpOrderService { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -97,11 +99,145 @@ public class JSTErpOrderServiceImpl implements IErpOrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 1. 构建查询请求DTO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OrderQueryRequestDTO requestDTO = new OrderQueryRequestDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        requestDTO.setOIds(Collections.singletonList(Long.valueOf(param.getCode()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 2. 调用ERP服务查询订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OrderQueryResponseDTO query = jstErpHttpService.query(requestDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 3. 构建响应对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ErpOrderQueryResponse response = new ErpOrderQueryResponse(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 4. 设置基本响应信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 5. 转换订单数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (query.getOrders() != null && !query.getOrders().isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<ErpOrderQuery> erpOrders = query.getOrders().stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .map(this::convertToErpOrderQuery) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setOrders(erpOrders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setOrders(Collections.emptyList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 将OrderQueryResponseDTO.Order转换为ErpOrderQuery 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param order 订单数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return ErpOrderQuery 转换后的订单数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ErpOrderQuery convertToErpOrderQuery(OrderQueryResponseDTO.Order order) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ErpOrderQuery erpOrder = new ErpOrderQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置基本订单信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setCode(order.getSoId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计算订单总数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (order.getItems() != null && !order.getItems().isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int totalQty = order.getItems().stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .mapToInt(OrderQueryResponseDTO.OrderItem::getQty) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .sum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            erpOrder.setQty(totalQty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置金额相关信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setAmount(order.getAmount() != null ? order.getAmount().doubleValue() : null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setPayment(order.getPaidAmount() != null ? order.getPaidAmount().doubleValue() : null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置其他订单属性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setCod(order.getIsCod()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setPlatform_code(order.getOrderFrom()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 尝试解析创建时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (order.getCreated() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                erpOrder.setCreatetime(formatter.parse(order.getCreated())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 日期解析异常处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 可以记录日志或保持为null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置店铺信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setShop_name(order.getShopName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setShop_code(String.valueOf(order.getShopId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置物流信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setExpress_name(order.getLogisticsCompany()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setExpress_code(order.getLcId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置收件人信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setReceiver_name(order.getReceiverName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setReceiver_phone(order.getReceiverPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setReceiver_mobile(order.getReceiverMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 构建完整地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StringBuilder addressBuilder = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.hasText(order.getReceiverAddress())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addressBuilder.append(order.getReceiverAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.hasText(order.getReceiverDistrict())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (addressBuilder.length() > 0) addressBuilder.append(", "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addressBuilder.append(order.getReceiverDistrict()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.hasText(order.getReceiverCity())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (addressBuilder.length() > 0) addressBuilder.append(", "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addressBuilder.append(order.getReceiverCity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.hasText(order.getReceiverState())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (addressBuilder.length() > 0) addressBuilder.append(", "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addressBuilder.append(order.getReceiverState()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.hasText(order.getReceiverCountry())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (addressBuilder.length() > 0) addressBuilder.append(", "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addressBuilder.append(order.getReceiverCountry()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.hasText(order.getReceiverZip())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (addressBuilder.length() > 0) addressBuilder.append(" "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addressBuilder.append(order.getReceiverZip()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        erpOrder.setReceiver_address(addressBuilder.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 处理发货相关信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (order.getShipment() != null && StringUtils.hasText(order.getShipment())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<ErpDeliverys> deliverysList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ErpDeliverys delivery = new ErpDeliverys(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            delivery.setMail_no(order.getShipment()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            delivery.setExpress_code(order.getLcId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            delivery.setExpress_name(order.getLogisticsCompany()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            delivery.setDelivery(true); // 假设有物流单号就是已发货状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            delivery.setCode(order.getSoId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            deliverysList.add(delivery); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            erpOrder.setDeliverys(deliverysList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 设置发货状态,假设有物流单号就是已发货状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            erpOrder.setDelivery_state(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            erpOrder.setDelivery_state(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return erpOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OrderCancelRequestDTO requestDTO = new OrderCancelRequestDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        requestDTO.setOIds(Collections.singletonList(Integer.valueOf(param.getTid()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        requestDTO.setCancelType("用户退款"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        requestDTO.setRemark("用户退款"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        jstErpHttpService.cancel(requestDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BaseResponse baseResponse = new BaseResponse(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        baseResponse.setSuccess(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return baseResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |