OracleDOCOrderHeaderService.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace App\Services;
  3. use App\OracleActAllocationDetails;
  4. use App\OracleBasCode;
  5. use App\OracleBasCustomer;
  6. use App\OracleDOCOrderDetail;
  7. use App\OracleDOCOrderHeader;
  8. use App\Owner;
  9. use App\Traits\ServiceAppAop;
  10. class OracleDOCOrderHeaderService
  11. {
  12. use ServiceAppAop;
  13. protected $modelClass=OracleDOCOrderHeader::class;
  14. static $columns =[
  15. 'DOC_Order_Header.OrderNo','DOC_Order_Header.CustomerID','DOC_Order_Header.OrderTime',
  16. 'DOC_Order_Header.SOReference1', 'DOC_Order_Header.ConsigneeID','DOC_Order_Header.C_Contact',
  17. 'DOC_Order_Header.ConsigneeName','DOC_Order_Header.C_Address1', 'DOC_Order_Header.C_City',
  18. 'DOC_Order_Header.C_Province','DOC_Order_Header.UserDefine1','DOC_Order_Header.AddTime',
  19. 'DOC_Order_Header.EditTime','DOC_Order_Header.Notes','DOC_Order_Header.CarrierID',
  20. 'DOC_Order_Header.CarrierName', 'DOC_Order_Header.LastShipmentTime','DOC_Order_Header.EDISendFlag',
  21. 'DOC_Order_Header.SOReference5', 'DOC_Order_Header.C_Tel2','DOC_Order_Header.Transportation',
  22. 'DOC_Order_Header.WareHouseId','DOC_Order_Header.SOStatus','DOC_Order_Header.C_Tel1','DOC_Order_Header.C_District',
  23. 'DOC_Order_Header.IssuePartyName','DOC_Order_Header.OrderType','DOC_Order_Header.WaveNo',
  24. 'DOC_Order_Header.ReleaseStatus','DOC_Order_Header.h_edi_20','DOC_Order_Header.h_edi_03',
  25. ];
  26. public function getQuery(){
  27. return OracleDOCOrderHeader::query()->selectRaw(implode(',',self::$columns))
  28. ->with(['oracleBASCustomer'=>function($query){
  29. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  30. },'oracleDOCOrderDetails'=>function($query){
  31. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered,doc_order_details.Location,doc_order_details.OrderLineNo,doc_order_details.d_edi_03');
  32. }, 'actAllocationDetails'=>function($query){
  33. $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku,ACT_Allocation_Details.Location,ACT_Allocation_Details.SkuLineNo,ACT_Allocation_Details.OrderLineno,ACT_Allocation_Details.CheckTime');
  34. },'oracleBASCode'=>function($query){
  35. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  36. },'orderType'=>function($query){
  37. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  38. }]);
  39. }
  40. public function getOrderTracking()
  41. {
  42. return OracleDOCOrderHeader::query()->selectRaw(implode(',',self::$columns))
  43. ->with(['oracleBASCustomer'=>function($query){
  44. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  45. },'oracleDOCOrderDetails'=>function($query){
  46. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered,doc_order_details.Location,doc_order_details.OrderLineNo,doc_order_details.d_edi_03');
  47. }, 'actAllocationDetails'=>function($query){
  48. $query->with(['oracleDocOrderSerialNos'=>function($query){
  49. $query->selectRaw('SerialNo,OrderNo,Sku,AllocationDetailsId');
  50. }]);
  51. $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku,ACT_Allocation_Details.Location,ACT_Allocation_Details.SkuLineNo,ACT_Allocation_Details.OrderLineno,ACT_Allocation_Details.CheckTime');
  52. },'oracleBASCode'=>function($query){
  53. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  54. },'orderType'=>function($query){
  55. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  56. }]);
  57. }
  58. function first(array $params){
  59. $order = OracleDOCOrderHeader::query();
  60. foreach ($params as $column => $value){
  61. $order->where($column, $value);
  62. }
  63. return $order->first();
  64. }
  65. public function getWmsOrderOnStartDateCreate($startDate){
  66. /** @var Owner $owners */
  67. $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
  68. return OracleDOCOrderHeader::query()
  69. ->with(['oracleDOCOrderDetails', 'actAllocationDetails.oracleDocOrderSubSerialNos','oracleBASCode','oracleBASCustomer'])
  70. ->where('DOC_Order_Header.addTime','>=',$startDate)
  71. ->whereIn('DOC_Order_Header.customerID',data_get($owners,'*.code'))
  72. ->get();
  73. }
  74. public function getWmsOrderOnStartDateEdit($startDate){
  75. /** @var Owner $owners */
  76. $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
  77. return OracleDOCOrderHeader::query()
  78. ->with(['oracleDOCOrderDetails', 'actAllocationDetails.oracleDocOrderSubSerialNos','oracleBASCode','oracleBASCustomer'])
  79. ->where('DOC_Order_Header.EditTime','>=',$startDate)
  80. ->whereColumn('DOC_Order_Header.EditTime','<>','DOC_Order_Header.addTime')
  81. ->whereIn('DOC_Order_Header.customerID',data_get($owners,'*.code'))
  82. ->get();
  83. }
  84. /**
  85. * @param OracleDOCOrderHeader $orderHeader
  86. * @return array|mixed
  87. */
  88. public function getLogisticNumbers($orderHeader)
  89. {
  90. if(!$orderHeader ?? false){return [];}
  91. $actAllocationDetails = $orderHeader->actAllocationDetails ?? [];
  92. return array_unique(array_diff(data_get($actAllocationDetails,'*.picktotraceid'),['','*',null]));
  93. }
  94. public function getWMSOrderOnStartDate($startDate)
  95. {
  96. return $this->getQuery()->where('DOC_Order_Header.addTime','>=',$startDate)
  97. ->whereColumn('DOC_Order_Header.editTime','=','DOC_Order_Header.addTime')
  98. ->orderByDesc('DOC_Order_Header.addTime')
  99. ->get();
  100. }
  101. public function getWMSOrderOnEditDate($startDate){
  102. return $this->getQuery()->where('DOC_Order_Header.editTime','>=',$startDate)
  103. ->whereColumn('DOC_Order_Header.editTime','!=','DOC_Order_Header.addTime')
  104. ->orderByDesc('DOC_Order_Header.editTime')
  105. ->get();
  106. }
  107. public function getOrderInfoByOrderNos($orderNos)
  108. {
  109. if(empty($orderNos))return collect();
  110. if(count($orderNos) == 0)return collect();
  111. return $this->getQuery()->whereIn('DOC_Order_Header.OrderNo',$orderNos)->get();
  112. }
  113. public function loadMissing($orderHeaders)
  114. {
  115. return $orderHeaders->loadMissing(['oracleBASCustomer'=>function($query){
  116. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  117. },'oracleDOCOrderDetails'=>function($query){
  118. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered,doc_order_details.Location,doc_order_details.OrderLineNo,doc_order_details.d_edi_03');
  119. }, 'actAllocationDetails'=>function($query){
  120. $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku,ACT_Allocation_Details.Location,ACT_Allocation_Details.SkuLineNo,ACT_Allocation_Details.OrderLineno,ACT_Allocation_Details.CheckTime');
  121. },'oracleBASCode'=>function($query){
  122. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  123. },'orderType'=>function($query){
  124. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  125. }]);
  126. }
  127. }