OracleDocOrderPackingSummary.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App;
  3. use Carbon\Carbon;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Support\Facades\DB;
  6. use App\Traits\ModelLogChanging;
  7. class OracleDocOrderPackingSummary extends Model
  8. {
  9. use ModelLogChanging;
  10. protected $connection="oracle";
  11. protected $primaryKey="traceid";
  12. protected $table = 'doc_order_packing_summary';
  13. protected $fillable = ['traceid','orderno','grossweight','addwho','addtime','editwho','edittime'];
  14. public $timestamps=false;
  15. public function getIncrementing(){ return false;}
  16. static public function saveOrUpdateWeightByBatch($batchNumber,$weight){
  17. $numbersesOfBatch=OracleDOCWaveDetails::select('picktotraceid as logistic_number','act_allocation_details.orderno')->where('doc_wave_details.waveno',$batchNumber)
  18. ->leftJoin('act_allocation_details','doc_wave_details.orderno','act_allocation_details.orderno')->get();
  19. $numbersesOfBatch=$numbersesOfBatch->unique('logistic_number');
  20. $numbersUseful=$numbersesOfBatch->map(function($numbers){return $numbers['logistic_number'];});
  21. $numbersUseful_toInsert=[];
  22. $oneIdxAsrsReceive=OracleDocOrderPackingSummary::whereIn('traceid',$numbersUseful)->get();
  23. if($oneIdxAsrsReceive->count()<$numbersesOfBatch->count()){
  24. foreach($numbersesOfBatch as $numbers){//跳过idx_asrs_receive已有快递单号
  25. foreach($oneIdxAsrsReceive as $existingAsrsReceive){
  26. if($existingAsrsReceive['userdefine1']==$numbers['logistic_number']){
  27. continue 2;
  28. }
  29. }
  30. $numbersUseful_toInsert[]=$numbers;
  31. }
  32. if (count($numbersUseful_toInsert) > 0) {
  33. $inserts='';
  34. $values=[];
  35. foreach($numbersUseful_toInsert as $numbers){
  36. $inserts .= " into doc_order_packing_summary (traceid,orderno,grossweight,addwho,addtime,editwho,edittime)values(?,?,?,?,?,?,?) ";
  37. $values[] = $numbers['logistic_number']??'';
  38. $values[] = $numbers['orderno']??'';
  39. $values[] = $weight;
  40. $values[] = 'WAS';
  41. $values[] = Carbon::now();
  42. $values[] = 'WAS';
  43. $values[] = Carbon::now();
  44. }
  45. if (!!$inserts) {
  46. try {
  47. DB::connection('oracle')->insert("insert all {$inserts} select * from dual",$values);
  48. }catch (\Exception $e){return;}
  49. }
  50. }
  51. }
  52. OracleDocOrderPackingSummary::whereIn('traceid',$numbersUseful)->update(['grossweight'=>$weight]);
  53. }
  54. }