完善dou电子面单打印

This commit is contained in:
老齐 2024-06-19 16:14:28 +08:00
parent facc210f82
commit ff07e0a745
3 changed files with 324 additions and 0 deletions

View File

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

View File

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

View File

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