|
@@ -14,9 +14,10 @@ import com.haha.entity.dto.ReplenishmentOrderUpdateDTO;
|
|
|
import com.haha.mapper.ReplenishmentOrderItemMapper;
|
|
import com.haha.mapper.ReplenishmentOrderItemMapper;
|
|
|
import com.haha.mapper.ReplenishmentOrderMapper;
|
|
import com.haha.mapper.ReplenishmentOrderMapper;
|
|
|
import com.haha.service.ReplenishmentOrderService;
|
|
import com.haha.service.ReplenishmentOrderService;
|
|
|
-import com.qdb.sdk.QdbClient;
|
|
|
|
|
-import com.qdb.sdk.model.request.OrderGoods;
|
|
|
|
|
-import com.qdb.sdk.model.request.OrderSaveRequest;
|
|
|
|
|
|
|
+// TODO: 企得宝 ERP SDK - 暂未对接,后续接入时取消注释
|
|
|
|
|
+// import com.qdb.sdk.QdbClient;
|
|
|
|
|
+// import com.qdb.sdk.model.request.OrderGoods;
|
|
|
|
|
+// import com.qdb.sdk.model.request.OrderSaveRequest;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -30,7 +31,6 @@ import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 补货单服务实现
|
|
* 补货单服务实现
|
|
@@ -44,8 +44,9 @@ public class ReplenishmentOrderServiceImpl extends ServiceImpl<ReplenishmentOrde
|
|
|
private final ReplenishmentOrderMapper orderMapper;
|
|
private final ReplenishmentOrderMapper orderMapper;
|
|
|
private final ReplenishmentOrderItemMapper orderItemMapper;
|
|
private final ReplenishmentOrderItemMapper orderItemMapper;
|
|
|
|
|
|
|
|
- @Autowired(required = false)
|
|
|
|
|
- private QdbClient qdbClient;
|
|
|
|
|
|
|
+ // TODO: 企得宝 ERP SDK - 暂未对接,后续接入时取消注释
|
|
|
|
|
+ // @Autowired(required = false)
|
|
|
|
|
+ // private QdbClient qdbClient;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<ReplenishmentOrder> getPage(ReplenishmentOrderQueryDTO queryDTO) {
|
|
public IPage<ReplenishmentOrder> getPage(ReplenishmentOrderQueryDTO queryDTO) {
|
|
@@ -273,76 +274,12 @@ public class ReplenishmentOrderServiceImpl extends ServiceImpl<ReplenishmentOrde
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public ReplenishmentOrder syncToErp(Long id) {
|
|
public ReplenishmentOrder syncToErp(Long id) {
|
|
|
|
|
+ // TODO: 企得宝 ERP SDK - 暂未对接,后续接入时实现
|
|
|
|
|
+ log.warn("syncToErp 暂未实现: id={}", id);
|
|
|
ReplenishmentOrder order = getById(id);
|
|
ReplenishmentOrder order = getById(id);
|
|
|
if (order == null) {
|
|
if (order == null) {
|
|
|
throw new BusinessException(404, "补货单不存在");
|
|
throw new BusinessException(404, "补货单不存在");
|
|
|
}
|
|
}
|
|
|
- if (order.getStatus() != ReplenishmentOrderStatusEnum.SUBMITTED.getCode()) {
|
|
|
|
|
- throw new BusinessException(400, "仅已提交状态的补货单可同步到ERP");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (qdbClient == null) {
|
|
|
|
|
- throw new BusinessException(500, "ERP客户端未配置,无法同步");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- List<ReplenishmentOrderItem> items = orderItemMapper.selectByOrderId(id);
|
|
|
|
|
- if (items.isEmpty()) {
|
|
|
|
|
- throw new BusinessException(400, "补货单明细为空,无法同步");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 构建订单商品列表
|
|
|
|
|
- List<OrderGoods> goodsList = items.stream().map(item -> {
|
|
|
|
|
- BigDecimal price = item.getUnitPrice() != null ? item.getUnitPrice() : BigDecimal.ZERO;
|
|
|
|
|
- BigDecimal qty = BigDecimal.valueOf(item.getPlannedQuantity());
|
|
|
|
|
- return OrderGoods.builder()
|
|
|
|
|
- .platformGoodsCode(item.getProductCode() != null ? item.getProductCode() : "")
|
|
|
|
|
- .platformGoodsName(item.getProductName() != null ? item.getProductName() : "")
|
|
|
|
|
- .quantity(qty)
|
|
|
|
|
- .price(price)
|
|
|
|
|
- .realPrice(price)
|
|
|
|
|
- .build();
|
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
-
|
|
|
|
|
- // 构建订单上传请求
|
|
|
|
|
- // TODO: shopId 需要映射为 ERP 系统中的店铺ID,当前暂用设备关联的门店ID
|
|
|
|
|
- // TODO: receiver* 收件人信息需从设备/门店地址中获取,当前暂不填充
|
|
|
|
|
- // TODO: warehouseName 需确认与 ERP 仓库名称一致
|
|
|
|
|
- OrderSaveRequest request = OrderSaveRequest.builder()
|
|
|
|
|
- .shopId(order.getShopId())
|
|
|
|
|
- .tradeNo(order.getOrderNo())
|
|
|
|
|
- .platformTradeStatus("02")
|
|
|
|
|
- .platformRefundStatus("0")
|
|
|
|
|
- .orderTypeCode("3")
|
|
|
|
|
- .postAmount(BigDecimal.ZERO)
|
|
|
|
|
- .payAmount(order.getTotalAmount() != null ? order.getTotalAmount() : BigDecimal.ZERO)
|
|
|
|
|
- // TODO: 从设备/门店信息中获取收件人地址
|
|
|
|
|
- // .receiverProvince(null)
|
|
|
|
|
- // .receiverCity(null)
|
|
|
|
|
- // .receiverDistrict(null)
|
|
|
|
|
- // .receiverAddress(null)
|
|
|
|
|
- // .receiverName(null)
|
|
|
|
|
- // .receiverMobile(null)
|
|
|
|
|
- .ordersGoods(goodsList)
|
|
|
|
|
- .buyerMessage(order.getRemark())
|
|
|
|
|
- .sellerMessage("设备补货单: " + order.getDeviceId())
|
|
|
|
|
- // TODO: 确认仓库名称与 ERP 一致
|
|
|
|
|
- .warehouseName(order.getWarehouseName())
|
|
|
|
|
- .build();
|
|
|
|
|
-
|
|
|
|
|
- try {
|
|
|
|
|
- qdbClient.getOrderApi().saveOrder(request);
|
|
|
|
|
-
|
|
|
|
|
- order.setStatus(ReplenishmentOrderStatusEnum.SYNCED_TO_ERP.getCode());
|
|
|
|
|
- order.setErpSyncTime(LocalDateTime.now());
|
|
|
|
|
- order.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
- updateById(order);
|
|
|
|
|
-
|
|
|
|
|
- log.info("补货单同步ERP成功: id={}, orderNo={}", id, order.getOrderNo());
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("补货单同步ERP失败: id={}, orderNo={}, error={}", id, order.getOrderNo(), e.getMessage());
|
|
|
|
|
- throw new BusinessException(500, "ERP同步失败: " + e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
fillStatusLabel(order);
|
|
fillStatusLabel(order);
|
|
|
return order;
|
|
return order;
|
|
|
}
|
|
}
|