PackageController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace App\Http\Controllers\Api\thirdPart\weight;
  3. use App\Events\WeightEvent;
  4. use App\Http\Controllers\Controller;
  5. use App\Jobs\WeightQueue;
  6. use App\MeasuringMachine;
  7. use App\Owner;
  8. use App\Package;
  9. use App\PaperBox;
  10. use function foo\func;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Support\Carbon;
  13. use Illuminate\Support\Facades\DB;
  14. use Illuminate\Support\Facades\Validator;
  15. class PackageController extends Controller
  16. {
  17. public function new_(Request $request){
  18. $reqDate=Carbon::now();
  19. $errors=$this->validatorWeight($request)->errors();
  20. if (count($errors)>0){
  21. $this->log(__METHOD__,'error'.__FUNCTION__,json_encode($request->all()).'||'.json_encode($errors),null);
  22. $response=["msg"=>$errors,"code"=>500,"data"=>null];
  23. return json_encode($response);
  24. }
  25. $measuringMachine=MeasuringMachine::where('code',$request->id)->first();
  26. if (!$measuringMachine){
  27. $measuringMachine=new MeasuringMachine([
  28. 'name'=>$request->id,
  29. 'code'=>$request->id
  30. ]);
  31. $measuringMachine->save();
  32. $this->log(__METHOD__,'weightApi(new measuring machine)'.__FUNCTION__,json_encode($request->all()),null);
  33. /*$response=["msg"=>"设备未录入在系统中","code"=>500,"data"=>null];
  34. return json_encode($response,JSON_UNESCAPED_UNICODE);*/
  35. }
  36. $package=Package::where('logistic_number',$request->barcode)->first();
  37. $length=$request->length;
  38. $width=$request->width;
  39. $height=$request->height;
  40. $max=($length>=($width>=$height?$width:$height)?$length:($width>=$height?$width:$height));
  41. if ($max==$length){
  42. $centre=$width>=$height?$width:$height;
  43. $min=$width<$height?$width:$height;
  44. }elseif ($max==$width){
  45. $centre=$length>=$height?$length:$height;
  46. $min=$length<$height?$length:$height;
  47. }else{
  48. $centre=$width>=$length?$width:$length;
  49. $min=$width<$length?$width:$length;
  50. }
  51. if ($package){
  52. $package->measuring_machine_id=$measuringMachine->id;
  53. $package->weight=$request->weight;
  54. $package->length=$max;
  55. $package->width=$centre;
  56. $package->height=$min;
  57. $package->bulk=$max*$centre*$min;
  58. $package->status="未上传";
  59. $packagePaperBox=new Package();
  60. $paperBox_id=$packagePaperBox->checkPaperBox($max,$centre,$min,$package->owner_id);
  61. if (!$paperBox_id){
  62. $this->log(__METHOD__,'weightApi(no paper box)'.__FUNCTION__,json_encode($request->all()),null);
  63. $response=["msg"=>"找不到相近纸箱!","code"=>500,"data"=>null];
  64. return json_encode($response,JSON_UNESCAPED_UNICODE);
  65. }
  66. $package->paper_box_id=$paperBox_id;
  67. $accomplishToWMS=new \App\Http\Controllers\Api\thirdPart\flux\PackageController();
  68. $result=$accomplishToWMS->accomplishToWMS($package);
  69. if ($result['result']=='success'){
  70. $package->status="已上传";
  71. }else{
  72. $package->status="上传异常";
  73. }
  74. if ($package->save()){
  75. event(new WeightEvent($package));
  76. $response=["msg"=>"保存成功",
  77. "code"=>200,
  78. "data"=>true,
  79. "serverMsg"=>null,
  80. "requestor"=>[
  81. "requestor"=>"1",
  82. "eventCode"=>"0",
  83. "reqDate"=>$reqDate,
  84. "resDate"=>Carbon::now()]
  85. ];
  86. $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request->all()).'|'.json_encode($response),null);
  87. return json_encode($response,JSON_UNESCAPED_UNICODE);
  88. }
  89. $response=["msg"=>"保存时发生错误(未上传)!","code"=>500,"data"=>null];
  90. return json_encode($response,JSON_UNESCAPED_UNICODE);
  91. /* $paper_box_id=DB::table('owner_paper_box')->select('paper_box_id')->where('owner_id',1);
  92. $paper_box=PaperBox::select('id')->whereIn('id',$paper_box_id)->orderBy("asb(($max*$centre*$min)-(length*width*height))");*/
  93. }
  94. if (!$package){
  95. $createPackage=new Package([
  96. 'logistic_number'=>$request->barcode,
  97. 'measuring_machine_id'=>$measuringMachine->id,
  98. 'weight'=>$request->weight,
  99. 'length'=>$max,
  100. 'width'=>$centre,
  101. 'height'=>$min,
  102. 'bulk'=>$max*$centre*$min,
  103. 'status'=>"未下发",
  104. ]);
  105. if ($createPackage->save()){
  106. WeightQueue::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440));
  107. $response=["msg"=>"保存成功",
  108. "code"=>200,
  109. "data"=>true,
  110. "serverMsg"=>null,
  111. "requestor"=>[
  112. "requestor"=>"1",
  113. "eventCode"=>"0",
  114. "reqDate"=>$reqDate,
  115. "resDate"=>Carbon::now()]
  116. ];
  117. $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request->all().$response),null);
  118. return json_encode($response,JSON_UNESCAPED_UNICODE);
  119. }
  120. $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request->all()),null);
  121. $response=["msg"=>"保存时发生错误(未下发)!","code"=>500,"data"=>null];
  122. return json_encode($response,JSON_UNESCAPED_UNICODE);
  123. }
  124. }
  125. public function validatorWeight(Request $request){
  126. $validator=Validator::make($request->input(),[
  127. 'id'=>['required','max:30',/*function ($attribute, $value, $fail) {
  128. $measuringMachine=MeasuringMachine::where('code',$value)->first();
  129. if (!$measuringMachine) {
  130. $fail($attribute.' 设备未录入在系统中!');
  131. }}*/],
  132. 'barcode'=>['required','max:191'],
  133. 'weight'=>['required','numeric','min:0'],
  134. 'length'=>['nullable','numeric','min:0'],
  135. 'width'=>['nullable','numeric','min:0'],
  136. 'height'=>['nullable','numeric','min:0'],
  137. ],[
  138. 'required'=>':attribute 为必填项',
  139. 'max'=>':attribute 字符过多或数值过大',
  140. 'min'=>':attribute 不得为负',
  141. 'numeric'=>':attribute 应为数字',
  142. ],[]);
  143. return $validator;
  144. }
  145. }