InventoryController.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Owner;
  4. use App\Services\AllInventoryService;
  5. use App\Services\InventoryDailyLogService;
  6. use App\Services\InventoryService;
  7. use App\Services\OwnerService;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\DB;
  10. use Illuminate\Support\Facades\Gate;
  11. use Oursdreams\Export\Export;
  12. class InventoryController extends Controller
  13. {
  14. public function __construct()
  15. {
  16. app()->singleton('inventoryService',InventoryService::class);
  17. app()->singleton('AllInventoryService',AllInventoryService::class);
  18. }
  19. //动库报表
  20. public function changeInventory(Request $request){
  21. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  22. $oracleActTransactingLogs=app('inventoryService')->paginate($request->input());
  23. $oracleActTransactingLogs=json_encode($oracleActTransactingLogs);
  24. $owners = app("OwnerService")->getIntersectPermitting(["code", "name"]);
  25. $isTotalStock=false;
  26. $page = $request->page ?? 1;
  27. return view('inventory.statement.changeInventory',compact('oracleActTransactingLogs','page','owners','isTotalStock'));
  28. }
  29. //全部库存
  30. public function allInventory(Request $request){
  31. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  32. /** @var AllInventoryService $service */
  33. $service = app('AllInventoryService');
  34. $oracleActTransactingLogs= $service->paginate($request->input());
  35. $oracleActTransactingLogs=json_encode($oracleActTransactingLogs);
  36. $owners = app("OwnerService")->getIntersectPermitting(["code", "name"]);
  37. $isTotalStock=true;
  38. $page = $request->page ?? 1;
  39. return view('inventory.statement.changeInventory',compact('oracleActTransactingLogs','page','owners','isTotalStock'));
  40. }
  41. public function exportData(Request $request){
  42. if(!Gate::allows("库存管理-库存")){ return redirect(url('/')); }
  43. if ($request->checkAllSign){
  44. $params = $request->input();
  45. unset($params['checkAllSign']);
  46. $sql=app('inventoryService')->getSql($request->input());
  47. $e = new Export();
  48. $e->setOracleConnection(config('database.connections.oracle.host'),
  49. config('database.connections.oracle.port'),config('database.connections.oracle.database')
  50. ,config('database.connections.oracle.username'),config('database.connections.oracle.password'));
  51. $e->setFileName("动库报表");
  52. return $e->sql($sql,[
  53. "货主"=>"货主","库位"=>"库位",
  54. "产品编码"=>"产品编码","产品条码"=>"产品条码",
  55. "商品名称"=>"商品名称","属性仓"=>"属性仓",
  56. "质量状态"=>"质量状态","失效日期"=>"失效日期",
  57. "批号"=>"批号","移出数量"=>"移出数量","移入数量"=>"移入数量"
  58. ])->direct();
  59. }else return "暂时关闭,如需开启请联系管理员";
  60. }
  61. public function exportAllInventory(Request $request){
  62. if(!Gate::allows("库存管理-库存")){ return view("denied"); }
  63. if ($request->checkAllSign){
  64. $params = $request->input();
  65. unset($params['checkAllSign']);
  66. $sql=app('AllInventoryService')->getSql($request->input());
  67. $result = DB::connection("oracle")->select($sql);
  68. $row = [
  69. "货主","库位", "产品编码","产品条码",
  70. "商品名称","属性仓", "质量状态","失效日期", "批号","在库数量","占用数量"
  71. ];
  72. $list = [];
  73. foreach ($result as $item) {
  74. $list[] = [
  75. $item->货主,
  76. $item->库位,
  77. $item->产品编码,
  78. $item->产品条码,
  79. $item->商品名称,
  80. $item->属性仓,
  81. $item->质量状态,
  82. $item->失效日期,
  83. $item->批号,
  84. $item->在库数量,
  85. $item->占用数量
  86. ];
  87. }
  88. return Export::make($row, $list, "库存报表记录");
  89. }else return "暂时关闭,如需开启请联系管理员";
  90. }
  91. /*
  92. * 库存体积
  93. */
  94. function dailyLog(Request $request,OwnerService $ownerService){
  95. if (!Gate::allows('库存管理-库存体积')){return redirect(url('/')); }
  96. /** @var InventoryDailyLogService*/
  97. $inventoryDailyLogs = app('InventoryDailyLogService')->paginate($request->input());
  98. $owners = $ownerService->getIntersectPermitting();
  99. $param = $request->input();
  100. return view('inventory.statement.dailyLog',compact('inventoryDailyLogs','owners','param'));
  101. }
  102. //获取记录监听货主
  103. function getLoggingOwner(){
  104. $loggingOwners = app('InventoryDailyLogService')->getInventoryDailyLoggingOwner('owner_id');
  105. return array_column($loggingOwners->toArray(),'owner_id');
  106. }
  107. //添加记录监听货主
  108. function addLoggingOwner(Request $request){
  109. if (!Gate::allows('库存管理-库存体积-管理监听货主')){return redirect(url('/')); }
  110. $owner_id = $request->owner_id;
  111. if (!$owner_id || !is_numeric($owner_id))return ['success'=>false,'data'=>'传递参数错误!'];
  112. $loggingOwner = app('InventoryDailyLogService')->firstOrCreate(['owner_id'=>$owner_id]);
  113. if (!$loggingOwner)return ['success'=>false,'data'=>'录入失败!'];
  114. return ['success'=>true,'data'=>$loggingOwner->owner_id];
  115. }
  116. //导出库存体积记录
  117. public function exportDailyLog(Request $request){
  118. if (!Gate::allows('库存管理-库存体积')){return redirect(url('/')); }
  119. if ($request->checkAllSign){
  120. $params = $request->input();
  121. unset($params['checkAllSign']);
  122. $sql=app('InventoryDailyLogService')->getSql($params);
  123. }else $sql=app('InventoryDailyLogService')->getSql(['id'=>$request->data]);
  124. $rule = ["created_at"=> "mysqlDate"];
  125. $e = new Export();
  126. $e->setMysqlConnection(config('database.connections.mysql.host'),
  127. config('database.connections.mysql.port'),config('database.connections.mysql.database')
  128. ,config('database.connections.mysql.username'),config('database.connections.mysql.password'));
  129. $e->setFileName("库存体积");
  130. return $e->sql($sql,[
  131. "owner_name"=>"货主","created_at"=>"日期",
  132. "commodity_name"=>"商品名称","commodity_sku"=>"商品编码",
  133. "commodity_barcode_code"=>"商品条码","depository_name"=>"属性仓",
  134. "amount"=>"在库数量","commodity_length"=>"长",
  135. "commodity_width"=>"宽","commodity_height"=>"高",
  136. "commodity_volumn"=>"体积","volumn_occupied"=>"总占用体积",
  137. "gross_weight"=>"总毛重"
  138. ],$rule)->direct();
  139. }
  140. }