Package.php 3.5 KB

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