ProcessController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Http\Controllers\Api\thirdPart\flux;
  3. use App\Commodity;
  4. use App\CommodityBarcode;
  5. use App\OracleBasSKU;
  6. use App\OracleDOCASNDetail;
  7. use App\OracleDOCMovementDetail;
  8. use App\OracleDOCMovementHeader;
  9. use App\OracleDOCOrderDetail;
  10. use App\Http\Controllers\Controller;
  11. use App\Owner;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Auth;
  14. class ProcessController extends Controller
  15. {
  16. public function getProcessContent(Request $request){
  17. $wms_code=$request->input('wms_code');
  18. if (!$wms_code)return ['error'=>'提交的单据号为空'];
  19. $docASNs=OracleDOCASNDetail::where("ASNNo",$wms_code)->get(); //入库单
  20. if (count($docASNs)>0){
  21. $owner=Owner::where("code",$docASNs[0]->customerid)->first();
  22. if (!$owner)$owner=$this->storeOwner($docASNs[0]->customerid);
  23. if (!$owner)return ['error'=>'找到了入库单,但未查询到货主代码!'];
  24. $commodities=[];
  25. foreach ($docASNs as $docASN){
  26. $commodity=Commodity::where('sku',$docASN->sku)->first();
  27. if (!$commodity)$commodity = $this->storeCommodity($docASN->customerid,$docASN->sku);
  28. if (!$commodity)continue;
  29. array_push($commodities,['id'=>$commodity->id,'name'=>$commodity->name,
  30. 'barcodes'=>$commodity->barcodes,'sku'=>$commodity->sku,'amount'=>$docASN->expectedqty]);
  31. }
  32. $processContent=[
  33. 'wms_code'=>$wms_code,
  34. 'owner_name'=>$owner->name,
  35. 'owner_id'=>$owner->id,
  36. 'commodities'=>$commodities,
  37. 'bill_type'=>'入库单',
  38. ];
  39. return json_encode($processContent);
  40. }
  41. $docOrders=OracleDOCOrderDetail::where("OrderNo",$wms_code)->get();//出库单
  42. if (count($docOrders)>0){
  43. $owner=Owner::where("code",$docOrders[0]->customerid)->first();
  44. if (!$owner)$owner=$this->storeOwner($docOrders[0]->customerid);
  45. if (!$owner)return ['error'=>'找到了入库单,但未查询到货主代码!'];
  46. $commodities=[];
  47. foreach ($docOrders as $docOrder){
  48. $commodity=Commodity::where('sku',$docOrder->sku)->first();
  49. if (!$commodity)$commodity = $this->storeCommodity($docOrder->customerid,$docOrder->sku);
  50. if (!$commodity)continue;
  51. array_push($commodities,['id'=>$commodity->id,'name'=>$commodity->name,
  52. 'barcodes'=>$commodity->barcodes,'sku'=>$commodity->sku,'amount'=>$docOrder->qtyordered]);
  53. }
  54. $processContent=[
  55. 'wms_code'=>$wms_code,
  56. 'owner_name'=>$owner->name,
  57. 'owner_id'=>$owner->id,
  58. 'commodities'=>$commodities,
  59. 'bill_type'=>'出库单',
  60. ];
  61. return json_encode($processContent);
  62. }
  63. $docMovementDetails=OracleDOCMovementDetail::where("MDOCNO",$wms_code)->get();//移库单
  64. if (count($docMovementDetails)>0){
  65. $docMovementHeader=OracleDOCMovementHeader::select('CustomerID')->find($wms_code);
  66. if (!$docMovementHeader)return ['error'=>'找到了移库单,但未查询移库单表头!'];
  67. $owner=Owner::where("code",$docMovementHeader->customerid)->first();
  68. if (!$owner)$owner=$this->storeOwner($docMovementHeader->customerid);
  69. if (!$owner)return ['error'=>'找到了入库单,但未查询到货主代码!'];
  70. $commodities=[];
  71. foreach ($docMovementDetails as $docMovementDetail){
  72. $commodity=Commodity::where('sku',$docMovementDetail->sku)->first();
  73. if (!$commodity)$commodity = $this->storeCommodity($owner->code,$docMovementDetail->sku);
  74. if (!$commodity)continue;
  75. array_push($commodities,['id'=>$commodity->id,'name'=>$commodity->name,
  76. 'barcodes'=>$commodity->barcodes,'sku'=>$commodity->sku,'amount'=>$docMovementDetail->toqty]);
  77. }
  78. $processContent=[
  79. 'wms_code'=>$wms_code,
  80. 'owner_name'=>$owner->name,
  81. 'owner_id'=>$owner->id,
  82. 'commodities'=>$commodities,
  83. 'bill_type'=>'移库单',
  84. ];
  85. return json_encode($processContent);
  86. }
  87. return ['error'=>'未查到对应单据号'];
  88. }
  89. private function storeCommodity($owner_code,$sku){
  90. $oracleBasSku=OracleBasSKU::where("CustomerID",$owner_code)->where("SKU",$sku)->first();
  91. if (!$oracleBasSku)return;
  92. $owner=Owner::where('code',$owner_code)->first();
  93. if (!$owner)$owner=$this->storeOwner($owner_code);
  94. $commodity=new Commodity([
  95. "name"=>$oracleBasSku->descr_c,
  96. "sku"=>$oracleBasSku->sku,
  97. "owner_id"=>$owner->id,
  98. ]);
  99. $commodity->save();
  100. if ($oracleBasSku->alternate_sku1){
  101. $barcode=$this->storeCommodityBarCode($oracleBasSku->alternate_sku1,$commodity->id);
  102. $commodity->barcodes=[[$barcode]];
  103. }
  104. $this->log(__METHOD__, 'FLUX二次加工单接口录入商品__' . __FUNCTION__, json_encode($commodity), Auth::user()['id']);
  105. return $commodity;
  106. }
  107. private function storeCommodityBarCode($code,$commodity_id){
  108. $barcode=new CommodityBarcode([
  109. 'code'=>$code,
  110. 'commodity_id'=>$commodity_id,
  111. ]);
  112. $barcode->save();
  113. $this->log(__METHOD__, 'FLUX二次加工单接口录入商品条码__' . __FUNCTION__, json_encode($barcode), Auth::user()['id']);
  114. }
  115. private function storeOwner($code){
  116. $owner=new Owner([
  117. "name"=>$code,
  118. "code"=>$code
  119. ]);
  120. $owner->save();
  121. $this->log(__METHOD__, 'FLUX二次加工单接口录入货主__' . __FUNCTION__, json_encode($owner), Auth::user()['id']);
  122. return $owner;
  123. }
  124. }