Package.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace App;
  3. use Illuminate\Database\Eloquent\Model;
  4. class Package extends Model
  5. {
  6. protected $fillable=[
  7. 'owner_id','logistic_number','delivery_number','batch_number','batch_rule','recipient','recipient_mobile','logistic_id',
  8. 'measuring_machine_id','weight','length','width','height','bulk','paper_box_id','status'
  9. ];
  10. protected $appends=[
  11. 'owner_name',
  12. 'logistic_name',
  13. 'measuringMachine_name',
  14. 'paperBox_name',
  15. 'WMSReflectPackage_name'
  16. ];
  17. public function owner(){
  18. return $this->belongsTo('App\Owner','owner_id','id');
  19. }
  20. public function logistic(){
  21. return $this->belongsTo('App\Logistic','logistic_id','id');
  22. }
  23. public function measuringMachine(){
  24. return $this->belongsTo('App\MeasuringMachine','measuring_machine_id','id');
  25. }
  26. public function paperBox(){
  27. return $this->belongsTo('App\paperBox','paper_box_id','id');
  28. }
  29. public function WMSReflectPackage(){
  30. return $this->hasOne('App\WMSReflectPackage','SOReference5','logistic_number');
  31. }
  32. public function getOwnerNameAttribute()
  33. {
  34. return $this['owner']? $this['owner']['name']:null;
  35. }
  36. public function getLogisticNameAttribute(){
  37. return $this['logistic']? $this['logistic']['name']:null;
  38. }
  39. public function getMeasuringMachineNameAttribute(){
  40. return $this['measuringMachine']? $this['measuringMachine']['name']:null;
  41. }
  42. public function getPaperBoxNameAttribute(){
  43. return $this['paperBox']? $this['paperBox']['model']:null;
  44. }
  45. public function getWMSReflectPackageNameAttribute(){
  46. return $this['WMSReflectPackage']? $this['WMSReflectPackage']['TASKID']:null;
  47. }
  48. //寻找相近纸箱ID
  49. public function checkPaperBox($max,$centre,$min,$owner_id){
  50. $sumDiffer=0;
  51. $maxDiffer=0;
  52. $paperBox_id=null;
  53. $boxes=Owner::select('id')->with('paperBoxes')->find($owner_id);
  54. foreach ($boxes->paperBoxes as $i=>$paperBox){
  55. if ($paperBox->length==$max&&$paperBox->width==$centre&&$paperBox->height==$min){
  56. $paperBox_id=$paperBox->id;
  57. break;
  58. }
  59. $lengthDiffer=abs($paperBox->length-$max);
  60. $widthDiffer=abs($paperBox->width-$centre);
  61. $heightDiffer=abs($paperBox->height-$min);
  62. $thisMaxDiffer=($lengthDiffer>=($widthDiffer>=$heightDiffer?$widthDiffer:$heightDiffer)?$lengthDiffer:($widthDiffer>=$heightDiffer?$widthDiffer:$heightDiffer));
  63. if($i==0){
  64. $maxDiffer=$thisMaxDiffer;
  65. $sumDiffer=$lengthDiffer+$widthDiffer+$heightDiffer;
  66. $paperBox_id=$paperBox->id;
  67. }
  68. if ($thisMaxDiffer==$maxDiffer){
  69. if($sumDiffer>($lengthDiffer+$widthDiffer+$heightDiffer)){
  70. $sumDiffer=$lengthDiffer+$widthDiffer+$heightDiffer;
  71. $paperBox_id=$paperBox->id;
  72. }
  73. }
  74. if ($thisMaxDiffer<$maxDiffer){
  75. $sumDiffer=$lengthDiffer+$widthDiffer+$heightDiffer;
  76. $maxDiffer=$thisMaxDiffer;
  77. $paperBox_id=$paperBox->id;
  78. }
  79. }
  80. return $paperBox_id;
  81. }
  82. }