StoreStatusService.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Services;
  3. use App\OracleBasCode;
  4. use App\StoreStatus;
  5. use Carbon\Carbon;
  6. Class StoreStatusService
  7. {
  8. public function getByWms($asnHerders)
  9. {
  10. $statuses = array_unique(data_get($asnHerders, '*.asnstatus'));
  11. $statuses = array_diff($statuses, [null, '', '*']);
  12. $storeStatuses = StoreStatus::query()->whereIn('code', $statuses)->get();
  13. if ($storeStatuses->count() < count($statuses)) {
  14. $statuses = array_diff($statuses, data_get($storeStatuses, '*.code'));
  15. $storeStatus_list = $this->createStoreStatusByWms($statuses);
  16. $storeStatuses=$storeStatuses->concat($storeStatus_list);
  17. }
  18. return $storeStatuses;
  19. }
  20. public function createStoreStatusByWms($codes){
  21. if(!$codes) {return [];}
  22. $basCodes = OracleBasCode::query()
  23. ->where('codeid','ASN_STS')
  24. ->whereIn('code', $codes)
  25. ->get();
  26. $insert_params = [];
  27. $created_at = Carbon::now()->format('Y-m-d H:i:s');
  28. foreach ($basCodes as $item) {
  29. $insert_params[] = [
  30. 'code' => $item->code,
  31. 'name' => $item->codename_c,
  32. 'created_at' => $created_at,
  33. ];
  34. }
  35. try {
  36. if (count($insert_params) > 0) {
  37. $this->insert($insert_params);
  38. LogService::log(__METHOD__, __FUNCTION__, '批量创建 storeStatus success' . count($insert_params) . json_encode($insert_params) );
  39. }
  40. } catch (\Exception $e) {
  41. LogService::log(__METHOD__, __FUNCTION__, '批量创建 storeStatus error' . json_encode($insert_params) . '||' . $e->getMessage() . '||' . $e->getTraceAsString());
  42. } finally {
  43. return StoreStatus::query()->whereIn('code', $codes)->get();
  44. }
  45. }
  46. public function insert($fillables){
  47. return StoreStatus::query()->insert($fillables);
  48. }
  49. }