TestController.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Batch;
  4. use App\CommodityBarcode;
  5. use App\Components\AsyncResponse;
  6. use App\Components\Database;
  7. use App\Components\ErrorPush;
  8. use App\Exceptions\Exception;
  9. use App\OracleDOCWaveDetails;
  10. use App\Order;
  11. use App\OrderBin;
  12. use App\OrderCommodity;
  13. use App\Rejected;
  14. use App\RejectedBill;
  15. use App\RejectedBillItem;
  16. use App\Services\LogService;
  17. use App\Services\OracleDocAsnHerderService;
  18. use App\Services\OracleDOCOrderHeaderService;
  19. use App\Services\OrderCommodityService;
  20. use App\Services\OrderService;
  21. use App\Services\OwnerService;
  22. use App\Services\RejectedBillService;
  23. use App\Services\StoreItemService;
  24. use App\Services\StoreService;
  25. use App\Services\WaveService;
  26. use App\Services\WaybillService;
  27. use App\SortingStation;
  28. use App\Store;
  29. use App\User;
  30. use App\UserToken;
  31. use App\ValueStore;
  32. use App\Warehouse;
  33. use App\Waybill;
  34. use Carbon\Carbon;
  35. use Illuminate\Database\Eloquent\Collection;
  36. use Illuminate\Http\Request;
  37. use Illuminate\Support\Facades\Auth;
  38. use Illuminate\Support\Facades\DB;
  39. use Illuminate\Support\Facades\Hash;
  40. use Illuminate\Support\Facades\Http;
  41. use Illuminate\Support\Str;
  42. use Zttp\Zttp;
  43. class TestController extends Controller
  44. {
  45. use AsyncResponse, ErrorPush, Database;
  46. const ASNREFERENCE_2 = 'ASNREFERENCE2';
  47. public function __construct()
  48. {
  49. $this->data["active_test"] = "active";
  50. }
  51. public function method(Request $request, $method)
  52. {
  53. try {
  54. return call_user_func([$this, $method], $request);
  55. }catch (\BadMethodCallException $e){
  56. dd("方法不存在");
  57. }
  58. }
  59. public function test(Request $request)
  60. {
  61. $waybill = Waybill::query()->where("waybill_number","BSZX2209079840")->first();
  62. $json="
  63. {
  64. \"request\": [
  65. {
  66. \"OrderNo\": \"{$waybill['wms_bill_number']}\",
  67. \"DELIVERYNO\": \"{$waybill['waybill_number']}\"
  68. }
  69. ]
  70. }
  71. ";
  72. $sendingJson = json_decode($json,true);
  73. $url=url(config('api.flux.waybill.new'));
  74. try{
  75. $response = Zttp::post($url, $sendingJson);
  76. }catch (\Exception $exception){
  77. dd('CURL请求异常:'.$exception->getMessage());
  78. return false;
  79. }
  80. $responseJson = $response->json();
  81. if(!$responseJson||!isset($responseJson['Response'])||!$responseJson['Response']['return']['returnFlag']=='1'){
  82. dd("向WMS提交运单失败!!SO单号:{$waybill['wms_bill_number']}。提交:{$json},返回:{$response->body()}, URL:{$url}");
  83. return false;
  84. }
  85. Controller::logS(__METHOD__,''.__FUNCTION__,"向WMS提交运单成功,SO单号:{$waybill['wms_bill_number']}。返回:{$response->body()}",0);
  86. return true;
  87. }
  88. public function test1()
  89. {
  90. /** @var OracleDocAsnHerderService $oracleDocAsnHerderService */
  91. $oracleDocAsnHerderService = app(OracleDocAsnHerderService::class);
  92. $asnHerders = $oracleDocAsnHerderService->getWmsAsnOnStartDateEdit('2022-10-26 20:30:00');
  93. if (count($asnHerders)<1) return;
  94. $this->createStore($asnHerders,"update");
  95. }
  96. public function createStore($asnHerders,$isUpdate=null)
  97. {
  98. if (!$asnHerders) return null;
  99. /** @var OwnerService $ownerService */
  100. $ownerService = app(OwnerService::class);
  101. $owner_codes = [];
  102. $warehouse_codes = [];
  103. foreach ($asnHerders as $asnHerder) {
  104. if (!empty($asnHerder['customerid']))
  105. $owner_codes[$asnHerder['customerid']] = $asnHerder['customerid'];
  106. if (!empty($asnHerder['warehouseid']))
  107. $warehouse_codes[$asnHerder['warehouseid']] = $asnHerder['warehouseid'];
  108. }
  109. $owners = $ownerService->getOwnerByCodes($owner_codes);
  110. $warehouses = Warehouse::query()->get();
  111. $owners_code_map=[];
  112. foreach ($owners as $owner) {
  113. $owners_code_map[$owner->code] = $owner;
  114. }
  115. $warehouses_code_map=[];
  116. foreach ($warehouses as $warehouse) {
  117. $warehouses_code_map[$warehouse->code] = $warehouse;
  118. }
  119. $params = $this->getParamsByAsnHeader($asnHerders, $owners_code_map, $warehouses_code_map);
  120. dd($params);
  121. if (count($params) > 0) $this->insertStore($params);
  122. /** @var StoreItemService $storeItemService */
  123. $storeItemService = app(StoreItemService::class);
  124. $storeItemService->storeItemCreateByWms($asnHerders);
  125. /** @var RejectedBillService $rejectedBillService */
  126. $rejectedBillService = app(RejectedBillService::class);
  127. $rejectedBillService->syncLoadedStatusByAsnHerder($asnHerders);
  128. }
  129. public function getParamsByAsnHeader($asnHerders, $owners_code_map, $warehouses_code_map)
  130. {
  131. $params = [];
  132. $stores = Store::query()->whereIn('asn_code', data_get($asnHerders, '*.asnno'))->get();
  133. $store_asn_code_map = [];
  134. foreach ($stores as $store) {
  135. $store_asn_code_map[$store->asn_code] = $store;
  136. }
  137. foreach ($asnHerders as $asnHerder) {
  138. if ($store_asn_code_map[$asnHerder->asnno] ?? false) continue;
  139. $owner = $owners_code_map[$asnHerder->customerid] ?? null;
  140. $warehouse = $warehouses_code_map[$asnHerder->warehouseid] ?? null;
  141. $status = null;
  142. $fast = null;
  143. if ($asnHerder->asnStatus && $asnHerder->asnStatus->codename_c == '完全收货') $status = '已入库';
  144. if ($asnHerder->asnStatus && $asnHerder->asnStatus->codename_c == '订单创建') $status = '未入库';
  145. if ($asnHerder->asnType && $asnHerder->asnType->codename_c == '调拨入库') $fast = '快速入库';
  146. $params[] = [
  147. 'asn_code' => $asnHerder->asnno,
  148. 'warehouse_id' => $warehouse->id ?? null,
  149. 'owner_id' => $owner->id ?? null,
  150. 'stored_method' => $asnHerder->asnType ? $asnHerder->asnType->codename_c : '',
  151. 'status' => $status ? $status : $asnHerder->asnStatus->codename_c,
  152. 'remark' => $asnHerder->notes ?? null,
  153. 'created_at' => $asnHerder->addtime ?? null,
  154. 'updated_at' => $asnHerder->edittime ?? null,
  155. 'is_fast_stored' => $fast,
  156. ];
  157. }
  158. return $params;
  159. }
  160. public function insertStore(array $params)
  161. {
  162. if (count($params) === 0) return;
  163. foreach (array_chunk($params, 1000) as $item) {
  164. $bool = $this->insert($item);
  165. if ($bool) {
  166. app('LogService')->log(__METHOD__, __FUNCTION__, "批量创建 store success " . count($item) . ' || ' . json_encode($item));
  167. } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 store FAILED " . ' || ' . json_encode($item));
  168. }
  169. }
  170. public function insert($params)
  171. {
  172. return Store::query()->insert($params);
  173. }
  174. }