OracleIdxAsrsReceive.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App;
  3. use Carbon\Carbon;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Support\Facades\DB;
  6. class OracleIdxAsrsReceive extends Model
  7. {
  8. protected $connection="oracle";
  9. protected $primaryKey="GROUPTASKID";
  10. protected $table = 'idx_asrs_receive';
  11. protected $fillable = ['grouptaskid','grouptasksequence','userdefine1','userdefine2','addwho','addtime'];
  12. public $timestamps=false;
  13. public function getIncrementing(){ return false;}
  14. static public function saveOrUpdateWeightByBatch($batchNumber,$weight){
  15. $numbersesOfBatch=OracleDOCWaveDetails::select('picktotraceid as logistic_number','act_allocation_details.orderno')->where('doc_wave_details.waveno',$batchNumber)
  16. ->leftJoin('act_allocation_details','doc_wave_details.orderno','act_allocation_details.orderno')->get();
  17. $numbersesOfBatch=$numbersesOfBatch->unique('logistic_number');
  18. $logisticNumbers=$numbersesOfBatch->map(function($numbers){return $numbers['logistic_number'];});
  19. $logisticNumbers_toInsert=[];
  20. $idxAsrsReceives=OracleIdxAsrsReceive::whereIn('userdefine1',$logisticNumbers)->get();
  21. if($idxAsrsReceives->count()<$numbersesOfBatch->count()){
  22. foreach($numbersesOfBatch as $numbers){//跳过idx_asrs_receive已有快递单号
  23. foreach($idxAsrsReceives as $existingAsrsReceive){
  24. if($existingAsrsReceive['userdefine1']==$numbers['logistic_number']){
  25. continue 2;
  26. }
  27. }
  28. $logisticNumbers_toInsert[]=$numbers['logistic_number'];
  29. }
  30. $inserts='';
  31. $values=[];
  32. foreach($logisticNumbers_toInsert as $logisticNumber){
  33. $inserts .= " into idx_asrs_receive (grouptaskid,grouptasksequence,userdefine1,userdefine2,addwho,addtime)values(?,?,?,?,?,?) ";
  34. $values[] = $logisticNumber??'';
  35. $values[] = 1;
  36. $values[] = $logisticNumber??'';
  37. $values[] = $weight;
  38. $values[] = 'WAS';
  39. $values[] = Carbon::now();
  40. }
  41. DB::connection('oracle')->insert("insert all {$inserts} select * from dual",$values);
  42. }
  43. OracleIdxAsrsReceive::whereIn('userdefine1',$logisticNumbers)->update(['userdefine2'=>$weight]);
  44. }
  45. }