| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- namespace App\Services;
- use App\OracleDOCOrderHeader;
- use App\OrderIssue;
- use App\RejectedBill;
- use App\Services\common\BatchUpdateService;
- use App\Services\common\DataHandlerService;
- use Carbon\Carbon;
- Class RejectedBillService
- {
- private function conditionQuery(array $params)
- {
- $query = RejectedBill::query();
- if ($params['order_number'] ?? false) {
- $query->whereIn('order_number', $params['order_number']);
- }
- return $query;
- }
- public function get(array $params)
- {
- return $this->conditionQuery($params)->get();
- }
- public function create(array $params)
- {
- return RejectedBill::query()->create($params);
- }
- /**
- * 同步退回单号
- * @param RejectedBill $rejectedBill
- */
- public function syncOrderIssue($rejectedBill)
- {
- $rejectedBill->syncOrderIssue();
- }
- public function syncLoadedStatusByAsnHerder($asnHerders)
- {
- $updateParams=$this->getNeedUpdateLoadedStatusByWms($asnHerders);
- if (!$updateParams)return;
- if (count($updateParams) > 1) {
- $this->batchUpdate($updateParams);
- }
- }
- public function getNeedUpdateLoadedStatusByWms($asnHerders)
- {
- if ($asnHerders->isEmpty()) return null;
- $updateCollect = $this->getUpdateCollect($asnHerders);
- if ($updateCollect->isEmpty()) return null;
- $logisticNumberReturn = $this->getLogisticNumberReturn($updateCollect);
- $rejectedBills = $this->getRejectedBills($logisticNumberReturn);
- if (!$rejectedBills) return null;
- $updateParams = [[
- 'logistic_number_return', 'is_loaded', 'updated_at'
- ]];
- $updated_at = Carbon::now()->toDateTimeString();
- /** @var DataHandlerService $dataHandlerService */
- $dataHandlerService = app(DataHandlerService::class);
- $rejectedBills_map = $dataHandlerService->dataHeader(['logistic_number_return'], $rejectedBills);
- foreach ($updateCollect as $data) {
- if (!$data->asnreference3 && !$data->notes) {
- continue;
- }
- $result = [];
- if ($data->asnreference3) {
- $rejectedBill = $dataHandlerService->getKeyValue(['logistic_number_return' => $data->asnreference3], $rejectedBills_map);
- if ($rejectedBill && $rejectedBill->is_loaded != 1) $updateParams[] = [
- 'logistic_number_return' => $data->asnreference3,
- 'is_loaded' => 1,
- 'updated_at' => $updated_at,
- ];
- } else {
- preg_match("/[a-zA-Z]{0,5}\d{6,20}/", $data->notes, $result);
- if (count($result)<1) continue;
- $rejectedBill = $dataHandlerService->getKeyValue(['logistic_number_return' => $result[0]], $rejectedBills_map);
- if ($rejectedBill && $rejectedBill->is_loaded != 1) $updateParams[] = [
- 'logistic_number_return' => $result[0],
- 'is_loaded' => 1,
- 'updated_at' => $updated_at,
- ];
- $result = [];
- }
- }
- return $updateParams;
- }
- public function getUpdateCollect($asnHerders)
- {
- $updateCollect = collect();
- foreach ($asnHerders as $asnHerder) {
- if ($asnHerder->asnType && $asnHerder->asnStatus &&
- ($asnHerder->asnType->codename_c == '退货入库' || $asnHerder->asnType->codename_c == '其他入库')
- && ($asnHerder->asnStatus->codename_c == '完全收货' ||$asnHerder->asnStatus->codename_c == 'ASN关闭')) {
- $updateCollect->add($asnHerder);
- }
- }
- return $updateCollect;
- }
- public function getLogisticNumberReturn($updateCollect)
- {
- $logisticNumberReturn = [];
- foreach ($updateCollect as $data) {
- if (!$data->asnreference3 && !$data->notes) {
- continue;
- }
- $result = [];
- if ($data->asnreference3) {
- array_push($logisticNumberReturn, $data->asnreference3);
- } else {
- preg_match("/[a-zA-Z]{0,5}\d{6,20}/", $data->notes, $result);
- if (count($result) > 0) array_push($logisticNumberReturn, $result[0]);
- $result = [];
- }
- }
- return $logisticNumberReturn;
- }
- public function batchUpdate($params)
- {
- return app(BatchUpdateService::class)->batchUpdate('rejected_bills', $params);
- }
- public function getRejectedBills(array $logisticNumberReturn)
- {
- if (count($logisticNumberReturn) < 1) {
- return null;
- }
- return RejectedBill::query()->whereIn('logistic_number_return', $logisticNumberReturn)->get();
- }
- }
|