|
@@ -1,16 +1,31 @@
|
|
|
package com.sd.cainiao.service.impl;
|
|
|
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
+import com.sd.cainiao.entity.bo.BasicKeyBo;
|
|
|
import com.sd.cainiao.entity.dto.TakeNumParamDto;
|
|
|
import com.sd.cainiao.service.IsticeService;
|
|
|
+import com.taobao.pac.sdk.cp.PacClient;
|
|
|
+import com.taobao.pac.sdk.cp.SendSysParams;
|
|
|
+import com.taobao.pac.sdk.cp.dataobject.request.TMS_WAYBILL_GET.*;
|
|
|
+import com.taobao.pac.sdk.cp.dataobject.response.TMS_WAYBILL_GET.TmsWaybillGetResponse;
|
|
|
+import com.taobao.pac.sdk.cp.dataobject.response.TMS_WAYBILL_GET.WaybillCloudPrintResponse;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
+@Service
|
|
|
public class IsticeServiceImpl implements IsticeService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BasicKeyBo basicKeyBo;
|
|
|
+
|
|
|
@Override
|
|
|
public List<Map<String, Object>> takeNumBatch(List<TakeNumParamDto> dto) {
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -72,16 +87,11 @@ public class IsticeServiceImpl implements IsticeService {
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
@@ -106,4 +116,110 @@ public class IsticeServiceImpl implements IsticeService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ public List<WaybillCloudPrintResponse> takeNum(TakeNumParamDto dto) {
|
|
|
+ PacClient client = new PacClient(basicKeyBo.getAppKey(), basicKeyBo.getSecretKey(), basicKeyBo.getUrl());
|
|
|
+
|
|
|
+ SendSysParams params = new SendSysParams();
|
|
|
+ params.setFromCode(basicKeyBo.getToken());
|
|
|
+
|
|
|
+ TmsWaybillGetRequest request = new TmsWaybillGetRequest();
|
|
|
+
|
|
|
+ request.setCpCode(dto.getCpCode());
|
|
|
+
|
|
|
+ request.setSender(getSender(dto));
|
|
|
+
|
|
|
+ request.setTradeOrderInfoDtos(getTradeOrderInfoDtoList(dto));
|
|
|
+
|
|
|
+ TmsWaybillGetResponse response = client.send(request, params);
|
|
|
+ if (response.isSuccess()) {
|
|
|
+ return response.getWaybillCloudPrintResponseList();
|
|
|
+ }
|
|
|
+
|
|
|
+ throw new ServiceException(response.getErrorMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取交易订单信息
|
|
|
+ */
|
|
|
+ private List<TradeOrderInfoDto> getTradeOrderInfoDtoList(TakeNumParamDto dto) {
|
|
|
+ List<TradeOrderInfoDto> tradeOrderInfoDtoList = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ TradeOrderInfoDto tradeOrderInfoDto = new TradeOrderInfoDto();
|
|
|
+ tradeOrderInfoDto.setObjectId(dto.getObjectId());
|
|
|
+ tradeOrderInfoDto.setTemplateUrl(dto.getEmsTemplateUrl());
|
|
|
+ tradeOrderInfoDto.setOrderInfo(getOrderInfoDto(dto));
|
|
|
+ tradeOrderInfoDto.setPackageInfo(getPackageInfo(dto));
|
|
|
+ tradeOrderInfoDto.setRecipient(getRecipient(dto));
|
|
|
+ tradeOrderInfoDtoList.add(tradeOrderInfoDto);
|
|
|
+
|
|
|
+ return tradeOrderInfoDtoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OrderInfoDto getOrderInfoDto(TakeNumParamDto dto) {
|
|
|
+
|
|
|
+ List<String> orderList = new ArrayList<>();
|
|
|
+
|
|
|
+ orderList.add(dto.getOrderNum());
|
|
|
+
|
|
|
+ OrderInfoDto orderInfoDto = new OrderInfoDto();
|
|
|
+ orderInfoDto.setOrderChannelsType("OTHERS");
|
|
|
+ orderInfoDto.setTradeOrderList(orderList);
|
|
|
+
|
|
|
+ return orderInfoDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private PackageInfoDto getPackageInfo(TakeNumParamDto dto) {
|
|
|
+ PackageInfoDto packageInfoDto = new PackageInfoDto();
|
|
|
+ packageInfoDto.setWeight(dto.getWeight());
|
|
|
+ packageInfoDto.setVolume(dto.getVolume());
|
|
|
+ packageInfoDto.setItems(getItems(dto));
|
|
|
+ return packageInfoDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Item> getItems(TakeNumParamDto dto) {
|
|
|
+ return dto.getItems().stream().map(itemParamDto -> {
|
|
|
+ Item item = new Item();
|
|
|
+ item.setName(itemParamDto.getItemName());
|
|
|
+ item.setCount(itemParamDto.getItemCount());
|
|
|
+ return item;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取发件人发件地址
|
|
|
+ */
|
|
|
+ private UserInfoDto getSender(TakeNumParamDto dto) {
|
|
|
+
|
|
|
+ AddressDto sendAddress = new AddressDto();
|
|
|
+ sendAddress.setProvince(dto.getProvince());
|
|
|
+ sendAddress.setCity(dto.getCity());
|
|
|
+ sendAddress.setDistrict(dto.getDistrict());
|
|
|
+ sendAddress.setDetail(dto.getDetail());
|
|
|
+
|
|
|
+ UserInfoDto sender = new UserInfoDto();
|
|
|
+ sender.setName(dto.getName());
|
|
|
+ sender.setPhone(dto.getPhone());
|
|
|
+ sender.setMobile(dto.getMobile());
|
|
|
+ sender.setAddress(sendAddress);
|
|
|
+ return sender;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取收件人收件地址
|
|
|
+ */
|
|
|
+ private UserInfoDto getRecipient(TakeNumParamDto dto) {
|
|
|
+ AddressDto receiveAddress = new AddressDto();
|
|
|
+ receiveAddress.setProvince(dto.getReceiveProvince());
|
|
|
+ receiveAddress.setCity(dto.getReceiveCity());
|
|
|
+ receiveAddress.setDistrict(dto.getReceiveDistrict());
|
|
|
+ receiveAddress.setDetail(dto.getReceiveDetail());
|
|
|
+
|
|
|
+ UserInfoDto receiver = new UserInfoDto();
|
|
|
+ receiver.setName(dto.getReceiveName());
|
|
|
+ receiver.setMobile(dto.getReceiveMobile());
|
|
|
+ receiver.setAddress(receiveAddress);
|
|
|
+ return receiver;
|
|
|
+ }
|
|
|
+
|
|
|
}
|