InventoryController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\OracleBasCustomer;
  4. use App\Services\AllInventoryService;
  5. use App\Services\InventoryService;
  6. use App\Services\OwnerService;
  7. use Exception;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Gate;
  10. use Illuminate\Support\Facades\Http;
  11. class InventoryController extends Controller
  12. {
  13. public function __construct()
  14. {
  15. app()->singleton('inventoryService',InventoryService::class);
  16. app()->singleton('allInventoryService',AllInventoryService::class);
  17. }
  18. //动库报表
  19. public function changeInventory(Request $request){
  20. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  21. $oracleActTransactingLogs=app('inventoryService')->paginate($request->input());
  22. $oracleActTransactingLogs=json_encode($oracleActTransactingLogs);
  23. $owners=OracleBasCustomer::query()->select('customerid','descr_c')->where('customer_type','OW')->where('active_flag','Y')->get();
  24. $isTotalStock=false;
  25. $page = $request->page ?? 1;
  26. return view('inventory.statement.changeInventory',compact('oracleActTransactingLogs','page','owners','isTotalStock'));
  27. }
  28. //全部库存
  29. public function allInventory(Request $request){
  30. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  31. $oracleActTransactingLogs=app('allInventoryService')->paginate($request->input());
  32. $oracleActTransactingLogs=json_encode($oracleActTransactingLogs);
  33. $owners=OracleBasCustomer::query()->select('customerid','descr_c')->where('customer_type','OW')->where('active_flag','Y')->get();
  34. $isTotalStock=true;
  35. $page = $request->page ?? 1;
  36. return view('inventory.statement.changeInventory',compact('oracleActTransactingLogs','page','owners','isTotalStock'));
  37. }
  38. public function exportData(Request $request){
  39. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  40. if ($request->checkAllSign){
  41. $params = $request->input();
  42. unset($params['checkAllSign']);
  43. $sql=app('inventoryService')->getSql($request->input());
  44. $post = Http::post(config('go.export.url'),['type'=>'inventory','sql'=>$sql]);
  45. }else {
  46. $post = Http::post(config('go.export.url'), ['type' => 'inventory', 'data' => $request->data]);
  47. }
  48. if ($post->status() == 500){
  49. throw new \Exception($post->header("Msg"));
  50. }
  51. return response($post, 200, [
  52. "Content-type" => "application/octet-stream",
  53. "Content-Disposition" => "attachment; filename=库存记录-" . date('ymdHis') . '.xlsx',
  54. ]);
  55. }
  56. public function exportAllInventory(Request $request){
  57. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  58. if ($request->checkAllSign){
  59. $params = $request->input();
  60. unset($params['checkAllSign']);
  61. $sql=app('allInventoryService')->getSql($request->input());
  62. $post = Http::post(config('go.export.url'),['type'=>'allInventory','sql'=>$sql]);
  63. }else{
  64. $post = Http::post(config('go.export.url'),['type'=>'allInventory','data'=>$request->data]);
  65. }
  66. if ($post->status() == 500){
  67. throw new Exception($post->header("Msg"));
  68. }
  69. return response($post,200, [
  70. "Content-type"=>"application/octet-stream",
  71. "Content-Disposition"=>"attachment; filename=全部库存-".date('ymdHis').'.xlsx',
  72. ]);
  73. }
  74. /*
  75. * 库存体积
  76. */
  77. function dailyLog(Request $request,OwnerService $ownerService){
  78. if (!Gate::allows('库存管理-库存体积')){return redirect(url('/')); }
  79. /** @var InventoryService*/
  80. $inventoryDailyLogs = app('inventoryDailyLogService')->paginate($request->input());
  81. $owners = $ownerService->getSelection();
  82. $param = $request->input();
  83. return view('inventory.statement.dailyLog',compact('inventoryDailyLogs','owners','param'));
  84. }
  85. //获取记录监听货主
  86. function getLoggingOwner(){
  87. $loggingOwners = app('inventoryDailyLogService')->getInventoryDailyLoggingOwner('owner_id');
  88. return array_column($loggingOwners->toArray(),'owner_id');
  89. }
  90. //添加记录监听货主
  91. function addLoggingOwner(Request $request){
  92. if (!Gate::allows('库存管理-库存体积-管理监听货主')){return redirect(url('/')); }
  93. $owner_id = $request->owner_id;
  94. if (!$owner_id || !is_numeric($owner_id))return ['success'=>false,'data'=>'传递参数错误!'];
  95. $loggingOwner = app('inventoryDailyLogService')->firstOrCreate(['owner_id'=>$owner_id]);
  96. if (!$loggingOwner)return ['success'=>false,'data'=>'录入失败!'];
  97. return ['success'=>true,'data'=>$loggingOwner->owner_id];
  98. }
  99. //导出库存体积记录
  100. public function exportDailyLog(Request $request){
  101. if (!Gate::allows('库存管理-库存体积')){return redirect(url('/')); }
  102. if ($request->checkAllSign){
  103. $params = $request->input();
  104. unset($params['checkAllSign']);
  105. $sql=app('inventoryDailyLogService')->getSql($params);
  106. }else $sql=app('inventoryDailyLogService')->getSql(['id'=>$request->data]);
  107. $post = Http::post(config('go.export.url'),['type'=>'inventoryDailyLog','sql'=>$sql]);
  108. if ($post->status() == 500){
  109. throw new Exception($post->header("Msg"));
  110. }
  111. return response($post,200, [
  112. "Content-type"=>"application/octet-stream",
  113. "Content-Disposition"=>"attachment; filename=库存体积记录-".date('ymdHis').'.xlsx',
  114. ]);
  115. }
  116. }