Commit c9850e5b authored by hangjun83's avatar hangjun83

openapi 震坤行

parent f5576861
......@@ -121,4 +121,21 @@ class RhawnChemicalsService
throw $exception;
}
}
/**
* @获取震坤行对应的商品sku
* @param $pCode
* @return array
*/
public function getZkhGoodsSku($pCode)
{
$dbConnect = DB::connection('rhawn_mysql');
$model = $dbConnect->table('zkh_goods');
if(is_array($pCode)){
$model->whereIn('zg_r_pid',$pCode);
}else{
$model->where('zg_r_pid',$pCode);
}
return $model->get()->toArray();
}
}
......@@ -45,9 +45,14 @@ class RhawnOrdersService
}
}
/**
* @根据订单编号获取订单详情
* @param $orderNo
* @return array
*/
public function getSorderDetail($orderNo)
{
$sOrder = app(RhawnSordersRepository::class)->getSorderFromOrderCusPo($orderNo);
$sOrder = app(RhawnSordersRepository::class)->getSorderFromOrderNo($orderNo);
if(!$sOrder){
throw new \LogicException('该订单编号不存在!',500);
}
......@@ -83,15 +88,21 @@ class RhawnOrdersService
return $returnItem;
}
public function getSorderDeliveryDetail($dpdId)
/**
* @订单发货单详情
* @param $deliveryCode
* @return false|mixed|null
*/
public function getSorderDeliveryDetail($deliveryCode)
{
$dbConnect = DB::connection('rhawn_mysql');
$dpdetail = $dbConnect->table('dpdetail')
->join('dispatch','dispatch.dp_id','dpdetail.dp_id')
->where('dpd_id',$dpdId)
$dpdetail = $dbConnect->table('dispatch')
->join('dpdetail','dpdetail.dp_id','dispatch.dp_id')
->join('sorders','sorders.so_id','dispatch.so_id')
->join('soitems','soitems.si_id','dpdetail.si_id')
->where('dp_code',$deliveryCode)
->get()->toArray();
if($dpdetail){
$dpdetail = current($dpdetail);
return $dpdetail;
}
return null;
......
......@@ -221,39 +221,84 @@ class ZhenKhService
}
/**
* @ 订单发货
* @param null $deliveryId
* @订单发货
* @param $deliveryCode
*/
public function sendDeliveryOrder($deliveryId)
public function sendDeliveryOrder($deliveryCode)
{
try{
$orderDelivery = $this->rhawnOrderService->getSorderDeliveryDetail($deliveryId);
$expressArray = $this->apiService->getPlatformDataEntries('zkh_order_express','data_values');
if(empty($expressArray)){
$expressList = $this->apiService->expressLogistics($this->getToken());
if($expressList){
foreach($expressList as $express){
$tempExpress = [];
$tempExpress['id'] = $express['id'];
$tempExpress['expressCode'] = $express['expressCode'];
$tempExpress['expressName'] = $express['expressName'];
$tempExpress['status'] = $express['status'];
$tempExpress['logisticsLinkType'] = $express['logisticsLinkType'];
$expressArray[] = $tempExpress;
$orderDelivery = $this->rhawnOrderService->getSorderDeliveryDetail($deliveryCode);
if($orderDelivery){
$expressArray = $this->apiService->getPlatformDataEntries('zkh_order_express','data_values');
if(empty($expressArray)){
$expressList = $this->apiService->expressLogistics($this->getToken());
if($expressList){
//$sysDefault = ['JD', 'SF', 'ZT', 'YD', 'ZJS', 'DBL', 'YTO', 'YZPY', 'AN', 'STO', 'HHTT', 'WL', 'ziti'];
foreach($expressList as $express){
$tempExpress = [];
$tempExpress['id'] = $express['id'];
$tempExpress['expressCode'] = $express['expressCode'];
$tempExpress['expressName'] = $express['expressName'];
$tempExpress['status'] = $express['status'];
$tempExpress['logisticsLinkType'] = $express['logisticsLinkType'];
switch($express['expressCode']){
case 'debangkuaidi' : $expressArray['DBL'] = $tempExpress; break;
case 'yuantong' : $expressArray['YTO'] = $tempExpress; break;
case 'yunda' : $expressArray['YD'] = $tempExpress; break;
case 'guoeryue' : $expressArray['HHTT'] = $tempExpress; break;
case 'shunfeng' : $expressArray['SF'] = $tempExpress; break;
case 'jd' : $expressArray['JD'] = $tempExpress; break;
}
}
$this->apiService->storePlatformDataEntries('zkh_order_express',$expressArray);
}
}
$orderNo = current($orderDelivery)->so_cus_po;
$deliveryOrderDetail = $this->apiService->sendDeliveryOrder('5012255694',$this->getToken());
$deliveryDetail = [];
if($deliveryOrderDetail){
foreach($deliveryOrderDetail['lines'] as $order){
$deliveryDetail[$order['zkhSku']] = $order;
}
$this->apiService->storePlatformDataEntries('zkh_order_express',$expressArray);
}
}
//$deliveryOrderPost = [];
//$deliveryOrderPost['deliveryTime']
//获取发货单的详情
//$deliveryOrder = $this->apiService->sendDeliveryOrder($orderNo,$this->getToken());
//确认发货
//$this->apiService->ackDeliveryOrder($order,$deliveryOrder,$this->getToken());
$deliveryPost = [];
$currentOrderDelivery = current($orderDelivery);
$deliveryPost['deliveryTime'] = date('Y-m-d H:i:s',time());
$deliveryPost['deliveryWay'] = $currentOrderDelivery->dp_express_com == 'ziti' || $currentOrderDelivery->dp_express_com == 'WL' ? 3 : 1;
if($deliveryPost['deliveryWay'] == 1){
$zkhDelivery = $expressArray[$currentOrderDelivery->dp_express_com];
$deliveryPost['logisticsId'] = $zkhDelivery['id'];
$deliveryPost['logisticsName'] = $zkhDelivery['expressName'];
$deliveryPost['logisticsCode'] = $zkhDelivery['expressCode'];
}
$pids = [];
foreach($orderDelivery as $delivery){
$zkhGoods = $this->rhawnService->getZkhGoodsSku($delivery->p_id);
if(empty($zkhGoods)){
throw new \Exception('对应震坤行商品数据未找到');
}
$itemList = [];
foreach($zkhGoods as $goods){
$temp = [];
$temp['purchaseOrderId'] = $currentOrderDelivery->so_cus_po;
$temp['itemLineNumber'] = $deliveryDetail[$goods['zg_sku']]['itemLineNumber'];
$temp['planItemNumber'] = $deliveryDetail[$goods['zg_sku']]['itemLineNumber'];
$temp['zkhSku'] = $goods['zg_sku'];
$temp['materialDescribe'] = $deliveryDetail[$goods['zg_sku']]['materialDescribe'];
$temp['number'] = $currentOrderDelivery->so_cus_po;
$temp['unit'] = $deliveryDetail[$goods['zg_sku']]['unit'];
$itemList[] = $temp;
}
}
$deliveryPost['itemList'] = $itemList;
//确认发货
//$this->apiService->ackDeliveryOrder($order,$deliveryOrder,$this->getToken());
}
}catch(\Throwable $exception){
var_dump($exception->getMessage());
exit;
SimpleLogs::writeLog($exception->getMessage(),'sendDeliveryOrder', 'error');
}
}
......@@ -307,4 +352,5 @@ class ZhenKhService
return false;
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment