完善dou电子面单打印
This commit is contained in:
parent
facc210f82
commit
ff07e0a745
|
|
@ -0,0 +1,261 @@
|
|||
package com.qihang.pdd.controller;
|
||||
|
||||
|
||||
import cn.qihangerp.open.pdd.WaybillAccountApiHelper;
|
||||
import cn.qihangerp.open.pdd.WaybillApiHelper;
|
||||
import cn.qihangerp.open.pdd.common.ApiResultVo;
|
||||
import cn.qihangerp.open.pdd.model.WaybillAccount;
|
||||
import cn.qihangerp.open.pdd.model.WaybillCodeModule;
|
||||
import cn.qihangerp.open.pdd.request.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.qihang.common.common.AjaxResult;
|
||||
import com.qihang.common.enums.HttpStatus;
|
||||
import com.qihang.pdd.domain.ErpShipWaybill;
|
||||
import com.qihang.pdd.domain.OmsPddOrder;
|
||||
import com.qihang.pdd.domain.OmsPddWaybillAccount;
|
||||
import com.qihang.pdd.domain.bo.PddWaybillGetBo;
|
||||
import com.qihang.pdd.openapi.ApiCommon;
|
||||
import com.qihang.pdd.openapi.PullRequest;
|
||||
import com.qihang.pdd.service.ErpShipWaybillService;
|
||||
import com.qihang.pdd.service.OmsPddOrderService;
|
||||
import com.qihang.pdd.service.OmsPddWaybillAccountService;
|
||||
import com.qihang.security.common.BaseController;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.java.Log;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Log
|
||||
@AllArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/ewaybill")
|
||||
public class EwaybillController extends BaseController {
|
||||
private final ApiCommon apiCommon;
|
||||
private final OmsPddWaybillAccountService waybillAccountService;
|
||||
private final OmsPddOrderService orderService;
|
||||
private final ErpShipWaybillService erpShipWaybillService;
|
||||
|
||||
@GetMapping(value = "/get_waybill_account_list")
|
||||
public AjaxResult getWaybillAccountList(@RequestParam Long shopId) throws Exception {
|
||||
// if (params.getShopId() == null || params.getShopId() <= 0) {
|
||||
// return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
// }
|
||||
List<OmsPddWaybillAccount> list = waybillAccountService.list(
|
||||
new LambdaQueryWrapper<OmsPddWaybillAccount>().eq(OmsPddWaybillAccount::getShopId, shopId)
|
||||
.eq(OmsPddWaybillAccount::getIsShow, 1));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拉取电子面单账号
|
||||
* @param params
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/pull_waybill_account", method = RequestMethod.POST)
|
||||
public AjaxResult pullWaybillAccount(@RequestBody PullRequest params) throws Exception {
|
||||
if (params.getShopId() == null || params.getShopId() <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
}
|
||||
|
||||
var checkResult = apiCommon.checkBefore(params.getShopId());
|
||||
if (checkResult.getCode() != HttpStatus.SUCCESS) {
|
||||
return AjaxResult.error(checkResult.getCode(), checkResult.getMsg(), checkResult.getData());
|
||||
}
|
||||
String accessToken = checkResult.getData().getAccessToken();
|
||||
String appKey = checkResult.getData().getAppKey();
|
||||
String appSecret = checkResult.getData().getAppSecret();
|
||||
Long sellId = checkResult.getData().getSellerShopId();
|
||||
|
||||
ApiResultVo<WaybillAccount> apiResultVo = WaybillAccountApiHelper.pullWaybillBranchAccountList(appKey, appSecret, accessToken);
|
||||
List<OmsPddWaybillAccount> list = new ArrayList<>();
|
||||
if(apiResultVo.getCode()==0){
|
||||
for (var item : apiResultVo.getList()){
|
||||
for(var acc:item.getBranchAccountCols()){
|
||||
OmsPddWaybillAccount vo = new OmsPddWaybillAccount();
|
||||
vo.setShopId(params.getShopId());
|
||||
vo.setSellerId(sellId);
|
||||
vo.setIsShow(1);
|
||||
vo.setCpCode(item.getWpCode());
|
||||
vo.setCpType(item.getWpType());
|
||||
vo.setAllocatedQuantity(acc.getAllocatedQuantity());
|
||||
vo.setBranchCode(acc.getBranchCode());
|
||||
vo.setBranchName(acc.getBranchName());
|
||||
vo.setCancelQuantity(acc.getCancelQuantity());
|
||||
// vo.setPrintQuantity(acc.getPrintQuantity());
|
||||
vo.setQuantity(acc.getQuantity());
|
||||
if(acc.getShippAddressCols().size()>0) {
|
||||
vo.setAddressDetail(acc.getShippAddressCols().get(0).getDetail());
|
||||
vo.setArea(acc.getShippAddressCols().get(0).getDistrict());
|
||||
vo.setCity(acc.getShippAddressCols().get(0).getCity());
|
||||
vo.setProvince(acc.getShippAddressCols().get(0).getProvince());
|
||||
// vo.setWaybillAddressId(acc.getShippAddressCols().get(0).getWaybillAddressId().longValue());
|
||||
list.add(vo);
|
||||
}
|
||||
|
||||
waybillAccountService.save(vo);
|
||||
log.info("========添加pdd电子面单账户信息==========");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@PostMapping("/get_waybill_code")
|
||||
@ResponseBody
|
||||
public AjaxResult getWaybillCode(@RequestBody PddWaybillGetBo req) {
|
||||
if (req.getAccountId() == null || req.getAccountId() <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,请选择电子面单账户");
|
||||
}
|
||||
if (req.getShopId() == null || req.getShopId() <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
}
|
||||
if(req.getIds()==null || req.getIds().length<=0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有选择订单");
|
||||
}
|
||||
var checkResult = apiCommon.checkBefore(req.getShopId());
|
||||
if (checkResult.getCode() != HttpStatus.SUCCESS) {
|
||||
return AjaxResult.error(checkResult.getCode(), checkResult.getMsg(), checkResult.getData());
|
||||
}
|
||||
String accessToken = checkResult.getData().getAccessToken();
|
||||
String appKey = checkResult.getData().getAppKey();
|
||||
String appSecret = checkResult.getData().getAppSecret();
|
||||
Long sellerShopId = checkResult.getData().getSellerShopId();
|
||||
|
||||
// 获取电子面单账户信息(包含了发货地址信息)
|
||||
OmsPddWaybillAccount account = waybillAccountService.getById(req.getAccountId());
|
||||
|
||||
WaybillCloudPrintApplyNewRequest request = new WaybillCloudPrintApplyNewRequest();
|
||||
request.setWp_code(account.getCpCode());
|
||||
request.setNeed_encrypt(true);
|
||||
|
||||
WaybillCloudPrintApplyNewRequestContact sender = new WaybillCloudPrintApplyNewRequestContact();
|
||||
sender.setName(account.getName());
|
||||
sender.setMobile(account.getMobile());
|
||||
WaybillCloudPrintApplyNewRequestContactAddress addressDTO = new WaybillCloudPrintApplyNewRequestContactAddress();
|
||||
addressDTO.setCity(account.getCity());
|
||||
addressDTO.setProvince(account.getProvince());
|
||||
addressDTO.setDistrict(account.getArea());
|
||||
addressDTO.setTown("");
|
||||
addressDTO.setDetail(account.getAddressDetail());
|
||||
sender.setAddress(addressDTO);
|
||||
request.setSender(sender);
|
||||
|
||||
// 组合取号的订单信息trade_order_info_dtos
|
||||
List<WaybillCloudPrintApplyNewRequestTradeOrderInfoDto> orderList = new ArrayList<>();
|
||||
|
||||
for(String orderSn:req.getIds()){
|
||||
if(StringUtils.hasText(orderSn)){
|
||||
OmsPddOrder order = orderService.queryDetailByOrderSn(orderSn);
|
||||
if(order!=null) {
|
||||
WaybillCloudPrintApplyNewRequestTradeOrderInfoDto dto = new WaybillCloudPrintApplyNewRequestTradeOrderInfoDto();
|
||||
dto.setObject_id(order.getOrderSn());
|
||||
dto.setTemplate_url("https://file-link.pinduoduo.com/yunda_std");
|
||||
dto.setUser_id(sellerShopId);
|
||||
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
orderInfo.setOrder_channels_type("PDD");
|
||||
orderInfo.setTrade_order_list(new String[] {order.getOrderSn()});
|
||||
dto.setOrder_info(orderInfo);
|
||||
|
||||
|
||||
PackageInfo packageInfo = new PackageInfo();
|
||||
List<PackageInfoItem> items = new ArrayList<>();
|
||||
for (var orderItem : order.getItemList()) {
|
||||
PackageInfoItem item = new PackageInfoItem();
|
||||
item.setName(orderItem.getGoodsName());
|
||||
item.setCount(orderItem.getGoodsCount());
|
||||
items.add(item);
|
||||
}
|
||||
packageInfo.setItems(items);
|
||||
dto.setPackage_info(packageInfo);
|
||||
|
||||
|
||||
WaybillCloudPrintApplyNewRequestContact recipient = new WaybillCloudPrintApplyNewRequestContact();
|
||||
recipient.setName("启航");
|
||||
recipient.setMobile("15818590112");
|
||||
WaybillCloudPrintApplyNewRequestContactAddress recipientAddress = new WaybillCloudPrintApplyNewRequestContactAddress();
|
||||
recipientAddress.setProvince(order.getProvince());
|
||||
recipientAddress.setCity(order.getCity());
|
||||
recipientAddress.setDistrict(order.getTown());
|
||||
recipientAddress.setDetail(order.getAddress());
|
||||
recipient.setAddress(recipientAddress);
|
||||
dto.setRecipient(recipient);
|
||||
|
||||
orderList.add(dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
request.setTrade_order_info_dtos(orderList);
|
||||
|
||||
ApiResultVo<WaybillCodeModule> apiResultVo = WaybillApiHelper.getWaybillCode(appKey, appSecret, accessToken, request);
|
||||
if(apiResultVo.getCode()==0){
|
||||
// 保持数据
|
||||
for(var result: apiResultVo.getList()){
|
||||
ErpShipWaybill waybill = new ErpShipWaybill();
|
||||
waybill.setShopId(req.getShopId());
|
||||
waybill.setOrderId(result.getObject_id());
|
||||
waybill.setWaybillCode(result.getWaybill_code());
|
||||
waybill.setLogisticsCode(account.getCpCode());
|
||||
waybill.setPrintData(result.getPrint_data());
|
||||
erpShipWaybillService.waybillUpdate(waybill);
|
||||
log.info("====保存電子面單信息========"+result.getObject_id());
|
||||
}
|
||||
}else{
|
||||
return AjaxResult.error(apiResultVo.getMsg());
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
@PostMapping("/get_print_data")
|
||||
@ResponseBody
|
||||
public AjaxResult getPrintData(@RequestBody PddWaybillGetBo req) {
|
||||
if (req.getShopId() == null || req.getShopId() <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
}
|
||||
if (req.getIds() == null || req.getIds().length <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有选择订单");
|
||||
}
|
||||
List<ErpShipWaybill> listByOrderIds = erpShipWaybillService.getListByOrderIds(req.getShopId(), req.getIds());
|
||||
return AjaxResult.success(listByOrderIds);
|
||||
}
|
||||
|
||||
@PostMapping("/push_print_success")
|
||||
@ResponseBody
|
||||
public AjaxResult pushPrintSuccess(@RequestBody PddWaybillGetBo req) {
|
||||
if (req.getShopId() == null || req.getShopId() <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
}
|
||||
if (req.getIds() == null || req.getIds().length <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有选择订单");
|
||||
}
|
||||
erpShipWaybillService.printSuccess(req.getShopId(), req.getIds());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/push_ship_send")
|
||||
@ResponseBody
|
||||
public AjaxResult pushShipSend(@RequestBody PddWaybillGetBo req) {
|
||||
if (req.getShopId() == null || req.getShopId() <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
}
|
||||
if (req.getIds() == null || req.getIds().length <= 0) {
|
||||
return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有选择订单");
|
||||
}
|
||||
erpShipWaybillService.pushShipSend(req.getShopId(), req.getIds());
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.qihang.pdd.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PddWaybillGetBo {
|
||||
private Long accountId;//电子面单账户id
|
||||
private String[] ids;
|
||||
private Long shopId;//店铺Id
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
import request from '@/utils/request'
|
||||
// 获取电子面单账户list
|
||||
export function getWaybillAccountList(query) {
|
||||
return request({
|
||||
url: '/api/pdd-api/ewaybill/get_waybill_account_list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 更新电子面单账户
|
||||
export function pullWaybillAccount(data) {
|
||||
return request({
|
||||
url: '/api/pdd-api/ewaybill/pull_waybill_account',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 取号
|
||||
export function getWaybillCode(data) {
|
||||
return request({
|
||||
url: '/api/pdd-api/ewaybill/get_waybill_code',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取打印的数据
|
||||
export function getWaybillPrintData(data) {
|
||||
return request({
|
||||
url: '/api/pdd-api/ewaybill/get_print_data',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 打印成功
|
||||
export function pushWaybillPrintSuccess(data) {
|
||||
return request({
|
||||
url: '/api/pdd-api/ewaybill/push_print_success',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
export function pushShipSend(data) {
|
||||
return request({
|
||||
url: '/api/pdd-api/ewaybill/push_ship_send',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
Loading…
Reference in New Issue