U8ServerService.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. namespace App\Service;
  3. use Illuminate\Support\Facades\DB;
  4. class U8ServerService extends Service
  5. {
  6. protected $databaseService;
  7. /**
  8. * @var string|null
  9. */
  10. protected $error;
  11. /**
  12. * U8ServerService constructor.
  13. */
  14. public function __construct($loginUser = [])
  15. {
  16. $service = new U8DatabaseServerService($loginUser);
  17. $this->databaseService = $service->db;
  18. $this->error = $service->error;
  19. }
  20. /**
  21. * 获取错误信息
  22. *
  23. * @return string|null
  24. */
  25. public function getError()
  26. {
  27. return $this->error;
  28. }
  29. public function purchaseRequisition($data, $user){
  30. $qx = $user['qx'];
  31. $order_date = $data['order_date'] ?? [];
  32. $order_date = array_filter($order_date);
  33. $order_number = $data['order_number'] ?? [];
  34. $model = $this->databaseService->table('PU_AppVouch as a')
  35. ->leftJoin('Person as c', 'c.cPersonCode', 'a.cPersonCode')
  36. ->when(empty($qx), function ($query) use($user){
  37. return $query->where('a.cMaker',$user['username']);
  38. })
  39. ->when(! empty($order_number), function ($query) use($order_number){
  40. return $query->where('a.cCode',$order_number);
  41. })
  42. ->when(! empty($order_date), function ($query) use($order_date){
  43. $start = date('Y-m-d H:i:s.000', $order_date[0]);
  44. $end = date('Y-m-d H:i:s.000', $order_date[1]);
  45. return $query->whereBetween('a.dDate', [$start, $end]);
  46. })
  47. ->where(function ($query) {
  48. $query->where('a.iverifystateex', 0)
  49. ->OrwhereNull('a.iverifystateex');
  50. })
  51. ->select('a.cMaker as crt_name', DB::raw("COALESCE(c.cPersonName, '') as purchase_name"),'a.cBusType as business_type','a.cCode as order_number',DB::raw("CONVERT(varchar(10), a.dDate, 120) as order_date"))
  52. ->orderBy('a.ID','desc');
  53. $list = $this->limit($model,'',$data);
  54. return [true , $list];
  55. }
  56. public function purchaseRequisitionDetail($data, $user){
  57. if(empty($data['order_number'])) return [false, '采购请购单号不能为空'];
  58. $order = $this->databaseService->table('PU_AppVouch as a')
  59. ->leftJoin('Person as c', 'c.cPersonCode', 'a.cPersonCode')
  60. // ->where('a.cMaker',$user['username'])
  61. // ->where('a.iverifystateex',0)
  62. ->select('a.cMaker as crt_name', DB::raw("COALESCE(c.cPersonName, '') as purchase_name"),'a.cBusType as business_type','a.cCode as order_number',DB::raw("CONVERT(varchar(10), a.dDate, 120) as order_date"),'a.ID as id')
  63. ->first();
  64. if(empty($order)) return [false, '采购请购单不存在'];
  65. $order = $order->toArray();
  66. $detail = $this->databaseService->table('PU_AppVouchs as a')
  67. ->leftJoin('Inventory as b', 'b.cInvCode', 'a.cInvCode')
  68. ->leftJoin('ComputationUnit as c', 'c.cComunitCode', 'b.cComUnitCode')
  69. ->where('a.ID', $order['id'])
  70. ->select('b.cInvName as product_title','b.cInvCode as product_code','a.fQuantity as quantity','c.cComUnitName as unit_title',DB::raw("CONVERT(varchar(10), a.dRequirDate, 120) as need_arrived_date"))
  71. ->get()->toArray();
  72. $order['detail'] = $detail;
  73. return [true, $order];
  74. }
  75. public function purchaseOrder($data, $user){
  76. $qx = $user['qx'];
  77. $order_date = $data['order_date'] ?? [];
  78. $order_date = array_filter($order_date);
  79. $order_number = $data['order_number'] ?? [];
  80. $model = $this->databaseService->table('PO_Pomain as a')
  81. ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cVenCode')
  82. ->when(empty($qx), function ($query) use($user){
  83. return $query->where('a.cMaker',$user['username']);
  84. })
  85. ->when(! empty($order_number), function ($query) use($order_number){
  86. return $query->where('a.cPOID',$order_number);
  87. })
  88. ->when(! empty($order_date), function ($query) use($order_date){
  89. $start = date('Y-m-d H:i:s.000', $order_date[0]);
  90. $end = date('Y-m-d H:i:s.000', $order_date[1]);
  91. return $query->whereBetween('a.dPODate', [$start, $end]);
  92. })
  93. ->where('a.iverifystateex',0)
  94. ->select('a.cMaker as crt_name', 'a.cBusType as business_type','a.cPOID as order_number',DB::raw("CONVERT(varchar(10), a.dPODate, 120) as order_date"),'c.cVenName as supplier_title')
  95. ->orderBy('a.POID','desc');
  96. $list = $this->limit($model,'',$data);
  97. return [true , $list];
  98. }
  99. public function purchaseOrderDetail($data, $user){
  100. if(empty($data['order_number'])) return [false, '采购单号不能为空'];
  101. $order = $this->databaseService->table('PO_Pomain as a')
  102. ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cVenCode')
  103. // ->where('a.cMaker',$user['username'])
  104. // ->where('a.iverifystateex',0)
  105. ->select('a.cMaker as crt_name', 'a.cBusType as business_type','a.cPOID as order_number',DB::raw("CONVERT(varchar(10), a.dPODate, 120) as order_date"),'c.cVenName as supplier_title','a.POID as id')
  106. ->first();
  107. if(empty($order)) return [false, '采购单不存在'];
  108. $order = $order->toArray();
  109. $detail = $this->databaseService->table('PO_Podetails as a')
  110. ->leftJoin('Inventory as b', 'b.cInvCode', 'a.cInvCode')
  111. ->leftJoin('ComputationUnit as c', 'c.cComunitCode', 'b.cComUnitCode')
  112. ->where('a.POID', $order['id'])
  113. ->select('b.cInvName as product_title','b.cInvCode as product_code','a.iQuantity as quantity','c.cComUnitName as unit_title','a.iSum as amount')
  114. ->get()->toArray();
  115. $order['detail'] = $detail;
  116. return [true, $order];
  117. }
  118. public function paymentOrder($data, $user){
  119. $qx = $user['qx'];
  120. $order_date = $data['order_date'] ?? [];
  121. $order_date = array_filter($order_date);
  122. $order_number = $data['order_number'] ?? [];
  123. $model = $this->databaseService->table('AP_ApplyPayVouch as a')
  124. ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cDwCode')
  125. ->when(empty($qx), function ($query) use($user){
  126. return $query->where('a.cOperator',$user['username']);
  127. })
  128. ->when(! empty($order_number), function ($query) use($order_number){
  129. return $query->where('a.cVouchID',$order_number);
  130. })
  131. ->when(! empty($order_date), function ($query) use($order_date){
  132. $start = date('Y-m-d H:i:s.000', $order_date[0]);
  133. $end = date('Y-m-d H:i:s.000', $order_date[1]);
  134. return $query->whereBetween('a.dVouchDate', [$start, $end]);
  135. })
  136. ->whereNull('a.cCheckMan')
  137. ->select('a.cOperator as crt_name', 'c.cVenName as supplier_title','a.cVouchID as order_number',DB::raw("CONVERT(varchar(10), a.dVouchDate, 120) as order_date"))
  138. ->orderBy('a.PID','desc');
  139. $list = $this->limit($model,'',$data);
  140. return [true , $list];
  141. }
  142. public function paymentOrderDetail($data, $user){
  143. if(empty($data['order_number'])) return [false, '付款单号不能为空'];
  144. $order = $this->databaseService->table('AP_ApplyPayVouch as a')
  145. ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cDwCode')
  146. // ->where('a.cOperator',$user['username'])
  147. // ->whereNull('a.cCheckMan')
  148. ->select('a.cOperator as crt_name', 'c.cVenName as supplier_title','a.cVouchID as order_number',DB::raw("CONVERT(varchar(10), a.dVouchDate, 120) as order_date"),'a.PID as id')
  149. ->first();
  150. if(empty($order)) return [false, '付款单不存在'];
  151. $order = $order->toArray();
  152. $detail = $this->databaseService->table('AP_ApplyPayVouchs as a')
  153. ->where('a.PID', $order['id'])
  154. ->select('a.cSource as source','a.cCoVouchID as source_order_number','a.iApplyAmt_f as amount')
  155. ->get()->toArray();
  156. $order['detail'] = $detail;
  157. return [true, $order];
  158. }
  159. public function getOrderDetails($data,$user){
  160. $type = $data['type'];
  161. if($type == 1){
  162. // 采购单
  163. [$success, $order] = $this->purchaseOrderDetail($data,$user);
  164. }elseif ($type == 2){
  165. // 请购单
  166. [$success, $order] = $this->purchaseRequisitionDetail($data,$user);
  167. }else{
  168. // 付款单
  169. [$success, $order] = $this->paymentOrderDetail($data,$user);
  170. }
  171. return [$success, $order];
  172. }
  173. }