|
|
@@ -199,7 +199,7 @@ class OrderService
|
|
|
'paginate'=>$paginate,'page'=>$page]);
|
|
|
$params['ordernos'] = $ordernos;
|
|
|
}
|
|
|
- $sql="select ACT_ALLOCATION_DETAILS.picktotraceid,ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,DOC_ORDER_HEADER.CustomerID
|
|
|
+ $sql="select ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,DOC_ORDER_HEADER.CustomerID
|
|
|
,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.C_Tel1,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,DOC_ORDER_HEADER.EDIREMARKS2,
|
|
|
DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1
|
|
|
,DOC_ORDER_HEADER.soreference5,DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
|
|
|
@@ -239,9 +239,9 @@ class OrderService
|
|
|
left join BAS_CODES order_detail_code on order_detail_code.CODE=DOC_ORDER_DETAILS.linestatus and order_detail_code.codeid='SO_STS'
|
|
|
left join BAS_Customer on BAS_Customer.customerid=DOC_ORDER_HEADER.customerid
|
|
|
left join BAS_SKU on DOC_Order_Details.CustomerID=BAS_SKU.CustomerID and DOC_Order_Details.SKU=BAS_SKU.SKU
|
|
|
- left join ACT_ALLOCATION_DETAILS on DOC_Order_Details.orderno=ACT_ALLOCATION_DETAILS.orderno and
|
|
|
- DOC_Order_Details.orderlineno=ACT_ALLOCATION_DETAILS.orderlineno GROUP BY ACT_ALLOCATION_DETAILS.picktotraceid,
|
|
|
- ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,
|
|
|
+ left join ACT_ALLOCATION_DETAILS on DOC_Order_Details.orderno = ACT_ALLOCATION_DETAILS.orderno
|
|
|
+ and DOC_Order_Details.ORDERLINENO = ACT_ALLOCATION_DETAILS.ORDERLINENO
|
|
|
+ GROUP BY ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,
|
|
|
DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,
|
|
|
DOC_ORDER_HEADER.CustomerID,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.C_Tel1,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,
|
|
|
DOC_ORDER_HEADER.EDIREMARKS2,DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1, DOC_ORDER_HEADER.soreference5,
|
|
|
@@ -287,19 +287,13 @@ class OrderService
|
|
|
|
|
|
private function orderFormat($orders){
|
|
|
$commodities=[];
|
|
|
+ $orderNos = "(''";
|
|
|
$picktotraceids=[];
|
|
|
/*
|
|
|
* 第二种扁平化方式(节省空间): 使用快慢指针,因拿到数据正常为顺序数据,自下标1开始与上一条对比orderno唯一标识,不同则更新慢指针下标,
|
|
|
* 相同则为指定下标map类型数组追加一个键值对属性来记录同类数量,如N条,每次追加属性时先看属性是否存在,存在+1
|
|
|
* */
|
|
|
foreach ($orders as $index=>$order){
|
|
|
- if ($order->picktotraceid){
|
|
|
- if (array_key_exists($order->orderno,$picktotraceids)){
|
|
|
- if (!in_array($order->picktotraceid,$picktotraceids[$order->orderno],true)){
|
|
|
- array_push($picktotraceids[$order->orderno],$order->picktotraceid);
|
|
|
- };
|
|
|
- }else $picktotraceids[$order->orderno] = [$order->picktotraceid];
|
|
|
- }
|
|
|
if (isset($commodities[$order->orderno])){
|
|
|
array_push($commodities[$order->orderno],
|
|
|
["sku"=>$order->sku,"alternate_sku1"=>$order->alternate_sku1,"descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered
|
|
|
@@ -309,6 +303,13 @@ class OrderService
|
|
|
}
|
|
|
$commodities[$order->orderno]=[["sku"=>$order->sku,"alternate_sku1"=>$order->alternate_sku1,
|
|
|
"descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]];
|
|
|
+ $orderNos .= ",'".$order->orderno."'";
|
|
|
+ }
|
|
|
+ $orderNos .= ")";
|
|
|
+ $allocations = DB::connection("oracle")->select(DB::raw("SELECT DROPID,ORDERNO FROM ACT_ALLOCATION_DETAILS WHERE orderno IN ".$orderNos." GROUP BY (DROPID,ORDERNO)"));
|
|
|
+ foreach ($allocations as $allocation){
|
|
|
+ if (isset($picktotraceids[$allocation->orderno])) $picktotraceids[$allocation->orderno][] = $allocation->dropid;
|
|
|
+ else $picktotraceids[$allocation->orderno] = [$allocation->dropid];
|
|
|
}
|
|
|
$picktotraceids=json_encode($picktotraceids);
|
|
|
$orders=array_values($orders);
|