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