InventoryController.php 5.5 KB

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