StoreCheckingReceiveController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Imports\StoreCheckingReceiveImport;
  4. use App\Services\StoreCheckingReceiveService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Cache;
  7. use Maatwebsite\Excel\Facades\Excel;
  8. class StoreCheckingReceiveController extends Controller
  9. {
  10. public function mission(Request $request){
  11. /** @var StoreCheckingReceiveService $service */
  12. $service = app('storeCheckingReceiveService');
  13. $params = $request->input();
  14. $storeCheckingReceives = $service->paginate($params);
  15. $owners = app('ownerService')->getSelection();
  16. return view('store.checkingReceive.mission',compact('storeCheckingReceives','params','owners'));
  17. }
  18. public function import(Request $request){
  19. $fileSuffix=$request->file('file')->getClientOriginalExtension();
  20. if ($fileSuffix != 'xlsx' && $fileSuffix != 'xls' && $fileSuffix != 'csv')
  21. return ['success'=>false,'data'=>'不支持该文件类型'];
  22. $isCovering = $request->input('isCovering');
  23. ini_set('max_execution_time',2500);
  24. ini_set('memory_limit','1526M');
  25. $fileSuffix = ucwords($fileSuffix);
  26. Excel::import(new StoreCheckingReceiveImport($isCovering),$request->file('file')->path(),null,$fileSuffix);
  27. if (Cache::has('storeCheckingReceive')){
  28. return Cache::pull('storeCheckingReceive');
  29. }
  30. return ["success"=>false, "data"=>"读取导入文件错误"];
  31. }
  32. public function show($id){
  33. /** @var StoreCheckingReceiveService $service */
  34. $service = app('storeCheckingReceiveService');
  35. $storeCheckingReceive = $service->find($id);
  36. if ($storeCheckingReceive->owner ?? false){
  37. $commodityController = new CommodityController();
  38. $commodityController->syncOwnerCommodities($storeCheckingReceive->owner->id, $storeCheckingReceive->owner->code);
  39. }
  40. return view('store.checkingReceive.show',compact('storeCheckingReceive'));
  41. }
  42. public function insertItem(Request $request){
  43. $mission_id = $request->mission_id ?? false;
  44. $goods = $request->goods ?? false;
  45. if (!$mission_id || !$goods)return ['success'=>false, 'data'=>'参数传递错误!'];
  46. $storeCheckingReceive = app('storeCheckingReceiveService')->find($mission_id);
  47. if (!$storeCheckingReceive)return ['success'=>false, 'data'=>'盘收任务不存在'];
  48. $item_id = null;
  49. $item_amount = null;
  50. foreach ($storeCheckingReceive->storeCheckingReceiveItems as $item){
  51. if (!$item->commodity)continue;
  52. if (count($item->commodity->barcodes) < 1)continue;
  53. foreach ($item->commodity->barcodes as $barcode){
  54. if ($barcode->code == $goods['barcode']){
  55. if ($goods['bin_number'] == $item->bin_number &&
  56. $goods['batch_number'] == $item->batch_code &&
  57. $goods['produce_date'] == $item->produce_date &&
  58. $goods['valid_date'] == $item->valid_date){
  59. $item_id = $item->id;
  60. $item_amount = $item->amount;
  61. break;
  62. }
  63. }
  64. }
  65. }
  66. if ($item_id){
  67. $item = app('storeCheckingReceiveItemService')->update(['id'=>$item_id],['amount'=>($item_amount+$goods['amount'])]);
  68. $item->load(['commodity'=>function($query){
  69. $query->with('barcodes');
  70. }]);
  71. return ['success'=>true, 'type'=>"update", 'data'=>$item];
  72. }
  73. $commodity_barcode = app('commodityBarcodeService')->first([
  74. 'code' => $goods['barcode'],
  75. ]);
  76. if (!$commodity_barcode) return ['success'=>false, 'data'=>'该条码未找到对应商品'];
  77. $item = app('storeCheckingReceiveItemService')->create([
  78. 'store_checking_receive_id' => $mission_id,
  79. 'bin_number' => $goods['bin_number'],
  80. 'commodity_id' => $commodity_barcode->commodity_id,
  81. 'produced_at' => $goods['produced_at'],
  82. 'invalid_at' => $goods['invalid_at'],
  83. 'batch_code' => $goods['batch_number'],
  84. ]);
  85. $item->load(['commodity'=>function($query){
  86. $query->with('barcodes');
  87. }]);
  88. return ['success'=>true, 'type'=>'create', 'data'=>$item];
  89. }
  90. }