Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
openApi
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hj
openApi
Commits
f477dea9
Commit
f477dea9
authored
Sep 09, 2022
by
hangjun83
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
药明康德
parent
28426dfe
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
479 additions
and
152 deletions
+479
-152
server/app/ImportExport/BaseExport.php
server/app/ImportExport/BaseExport.php
+19
-9
server/app/ImportExport/WuxiLab/Models/WuxiLabPackagesExportModel.php
...mportExport/WuxiLab/Models/WuxiLabPackagesExportModel.php
+2
-2
server/app/ImportExport/WuxiLab/Models/WuxiLabProductsExportModel.php
...mportExport/WuxiLab/Models/WuxiLabProductsExportModel.php
+1
-1
server/app/ImportExport/WuxiLab/Models/WuxiLabStocksExportModel.php
.../ImportExport/WuxiLab/Models/WuxiLabStocksExportModel.php
+1
-1
server/app/ImportExport/WuxiLab/WuxiLabExport.php
server/app/ImportExport/WuxiLab/WuxiLabExport.php
+26
-28
server/app/Jobs/WuxiLabJob.php
server/app/Jobs/WuxiLabJob.php
+3
-0
server/app/Repositories/Eloquent/RhawnRawRepositoryEloquent.php
.../app/Repositories/Eloquent/RhawnRawRepositoryEloquent.php
+13
-0
server/app/Repositories/Eloquent/ThirdApiPlatformRepositoryEloquent.php
...ositories/Eloquent/ThirdApiPlatformRepositoryEloquent.php
+0
-25
server/app/Services/ThirdPlatform/Api/WuxiApiService.php
server/app/Services/ThirdPlatform/Api/WuxiApiService.php
+136
-32
server/app/Services/ThirdPlatform/Api/ZhenkhApiService.php
server/app/Services/ThirdPlatform/Api/ZhenkhApiService.php
+1
-1
server/app/Services/ThirdPlatform/PlatformAbstractService.php
...er/app/Services/ThirdPlatform/PlatformAbstractService.php
+1
-1
server/app/Services/WuxiLabService.php
server/app/Services/WuxiLabService.php
+231
-42
server/app/Support/Traits/HttpClientHelpers.php
server/app/Support/Traits/HttpClientHelpers.php
+34
-1
server/database/seeds/local/ThridApiPlatformSeeder.php
server/database/seeds/local/ThridApiPlatformSeeder.php
+11
-9
No files found.
server/app/ImportExport/BaseExport.php
View file @
f477dea9
<?php
namespace
App\Export
;
namespace
App\
Import
Export
;
use
App\Services\SysLogService
;
use
App\Support\Facades\SimpleLogs
;
use
Maatwebsite\Excel\Facades\Excel
;
use
Maatwebsite\Excel\Excel
as
BaseExcel
;
...
...
@@ -26,14 +27,23 @@ class BaseExport
public
function
storeExcel
(
$excelContent
,
$filePath
,
$diskType
=
null
){
if
(
$diskType
==
null
){
$diskType
=
config
(
'filesystem.default'
);
$diskType
=
config
(
'filesystem
s
.default'
);
}
$result
=
Excel
::
store
(
$excelContent
,
$filePath
,
$diskType
,
$this
->
expand
);
try
{
if
(
Excel
::
store
(
$excelContent
,
$filePath
,
$diskType
,
$this
->
expand
)){
$logContent
=
[
'filePath'
=>
$filePath
,
'diskType'
=>
$diskType
,
'datetime'
=>
time
()
];
app
(
SysLogService
::
class
)
->
addOperationLogs
(
$logContent
);
SimpleLogs
::
writeLog
(
$logContent
,
__CLASS__
.
':storeExcel'
);
return
true
;
}
return
false
;
}
catch
(
\Throwable
$exception
){
SimpleLogs
::
writeLog
(
$exception
->
getMessage
(),
__CLASS__
.
':storeExcel'
,
'error'
);
throw
$exception
;
}
}
}
server/app/ImportExport/WuxiLab/Models/WuxiLabPackagesExportModel.php
View file @
f477dea9
<?php
namespace
App\Export\WuxiLab\Models
;
namespace
App\
Import
Export\WuxiLab\Models
;
use
Maatwebsite\Excel\Concerns\FromArray
;
use
Maatwebsite\Excel\Concerns\ShouldAutoSize
;
...
...
@@ -32,7 +32,7 @@ class WuxiLabPackagesExportModel implements FromArray,WithHeadings, ShouldAutoSi
array_push
(
$exportRows
,[
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
''
]);
foreach
(
$rows
as
$key
=>
$row
){
array_push
(
$exportRows
,[
$row
[
'r_code'
],
''
,
$row
[
'p_pack'
]
.
'
/
'
.
$row
[
'p_pack_unit'
],
$row
[
'p_stock'
]
==
0
?
'0'
:
$row
[
'p_stock'
],
'CN-SH'
,
$row
[
'p_price'
],
'0.5'
,
$row
[
'r_code'
],
''
,
$row
[
'p_pack'
]
.
''
.
$row
[
'p_pack_unit'
],
$row
[
'p_stock'
]
==
0
?
'0'
:
$row
[
'p_stock'
],
'CN-SH'
,
$row
[
'p_price'
],
'0.5'
,
'RMB'
,
'CN'
,
$row
[
'p_price'
]
*
0.5
]);
}
...
...
server/app/ImportExport/WuxiLab/Models/WuxiLabProductsExportModel.php
View file @
f477dea9
<?php
namespace
App\Export\WuxiLab\Models
;
namespace
App\
Import
Export\WuxiLab\Models
;
use
Maatwebsite\Excel\Concerns\FromArray
;
use
Maatwebsite\Excel\Concerns\ShouldAutoSize
;
...
...
server/app/ImportExport/WuxiLab/Models/WuxiLabStocksExportModel.php
View file @
f477dea9
<?php
namespace
App\Export\WuxiLab\Models
;
namespace
App\
Import
Export\WuxiLab\Models
;
use
Maatwebsite\Excel\Concerns\FromArray
;
use
Maatwebsite\Excel\Concerns\ShouldAutoSize
;
...
...
server/app/ImportExport/WuxiLab/WuxiLabExport.php
View file @
f477dea9
<?php
namespace
App\Export\WuxiLab
;
namespace
App\
Import
Export\WuxiLab
;
use
App\Export\BaseExport
;
use
App\Export\WuxiLab\Models\WuxiLabPackagesExportModel
;
use
App\Export\WuxiLab\Models\WuxiLabProductsExportModel
;
use
App\Export\WuxiLab\Models\WuxiLabStocksExportModel
;
use
App\
Import
Export\BaseExport
;
use
App\
Import
Export\WuxiLab\Models\WuxiLabPackagesExportModel
;
use
App\
Import
Export\WuxiLab\Models\WuxiLabProductsExportModel
;
use
App\
Import
Export\WuxiLab\Models\WuxiLabStocksExportModel
;
class
WuxiLabExport
extends
BaseExport
{
...
...
@@ -21,7 +21,7 @@ class WuxiLabExport extends BaseExport
public
function
getSavePath
(
$fileName
)
{
if
(
$this
->
filePath
==
''
){
$this
->
filePath
=
config
(
'filesystem
.default'
)
.
'/
public/Excel/'
;
$this
->
filePath
=
config
(
'filesystem
s.default.root'
)
.
'
public/Excel/'
;
}
return
$this
->
filePath
.
date
(
'Ymd'
,
time
())
.
'/'
.
$fileName
;
}
...
...
@@ -36,18 +36,14 @@ class WuxiLabExport extends BaseExport
* @param $saveContent
* @param null $model
*/
public
function
saveExcel
(
$saveContent
,
$model
=
null
)
public
function
saveExcel
(
$saveContent
,
$model
=
'product'
)
{
if
(
$model
==
null
){
$model
=
$this
->
defaultExportModel
;
if
(
!
is_array
(
$model
)
&&
$model
==
null
){
throw
new
\Exception
(
'excel 文档生成错误,无法找到对应生成类型!'
)
;
}
if
(
!
is_array
(
$model
)
&&
$model
!=
null
){
$model
=
explode
(
','
,
$model
);
}
foreach
(
$model
as
$m
){
switch
(
$m
){
$export
=
null
;
switch
(
$model
){
case
'product'
:
$export
=
new
WuxiLabProductsExportModel
(
$saveContent
[
'rawList'
]);
break
;
...
...
@@ -59,9 +55,11 @@ class WuxiLabExport extends BaseExport
break
;
}
$savePath
=
$this
->
getSavePath
(
$this
->
getFileName
(
$m
)
$this
->
getFileName
(
$model
)
);
$this
->
storeExcel
(
$export
,
$savePath
);
$result
=
$this
->
storeExcel
(
$export
,
$savePath
);
if
(
$result
){
return
$savePath
;
}
}
}
server/app/Jobs/WuxiLabJob.php
View file @
f477dea9
...
...
@@ -47,6 +47,9 @@ class WuxiLabJob extends Job
case
'batchUpdateProduct'
:
$service
->
batchUpdateProducts
();
break
;
case
'test'
:
$service
->
test
(
$this
->
params
);
break
;
default
:
}
}
...
...
server/app/Repositories/Eloquent/RhawnRawRepositoryEloquent.php
View file @
f477dea9
...
...
@@ -54,6 +54,19 @@ class RhawnRawRepositoryEloquent extends BaseRepository implements RhawnRawRepos
return
$rawList
->
toArray
();
}
public
function
getRawProductsThroughtCode
(
$rawCode
)
{
$raw
=
RhawnRaw
::
query
()
->
join
(
'chemicals'
,
'chemicals.c_id'
,
'raw.c_id'
);
if
(
!
is_array
(
$rawCode
)){
$raw
->
where
(
'r_code'
,
$rawCode
);
}
else
{
$raw
->
whereIn
(
'r_code'
,
!
is_array
(
$rawCode
));
}
$rawList
=
$raw
->
get
();
return
$rawList
->
toArray
();
}
public
function
getProductPackage
(
$rawProductIds
)
{
$packagesList
=
RhawnProducts
::
query
()
...
...
server/app/Repositories/Eloquent/ThirdApiPlatformRepositoryEloquent.php
View file @
f477dea9
...
...
@@ -15,31 +15,6 @@ use Prettus\Validator\Contracts\ValidatorInterface;
*/
class
ThirdApiPlatformRepositoryEloquent
extends
BaseRepository
implements
ThirdApiPlatformRepository
{
protected
$fieldSearchable
=
[
'platform_name'
,
'platform_title'
,
];
/**
* 定义validator的检索规则
* @var \string[][]
*/
public
$rules
=
[
ValidatorInterface
::
RULE_CREATE
=>
[
'platform_name'
=>
'required'
,
'platform_title'
=>
'required'
,
'platform_type'
=>
'required'
,
'platform_token'
=>
'required'
,
'platform_status'
=>
'required'
,
],
ValidatorInterface
::
RULE_UPDATE
=>
[
'platform_name'
=>
'required'
,
'platform_title'
=>
'required'
,
'platform_type'
=>
'required'
,
'platform_token'
=>
'required'
,
'platform_status'
=>
'required'
,
]
];
/**
* Specify Model class name.
*
...
...
server/app/Services/ThirdPlatform/Api/WuxiApiService.php
View file @
f477dea9
...
...
@@ -14,6 +14,7 @@ namespace App\Services\ThirdPlatform\Api;
use
App\ImportExport\WuxiLab\WuxiLabExport
;
use
App\Repositories\Contracts\ThirdApiPlatformRepository
;
use
App\Services\ThirdPlatform\PlatformAbstractService
;
use
App\Support\Facades\SimpleLogs
;
use
App\Support\Traits\HttpClientHelpers
;
...
...
@@ -40,21 +41,21 @@ class WuxiApiService extends PlatformAbstractService
$params
=
[];
$params
[
'chemicalProducts'
]
=
$this
->
mergeApiMetaData
(
$product
);
$response
=
$this
->
getPostClient
(
'https://api.uploadcatalog.com
/api/v1/update'
,
$params
,
[
$response
=
$this
->
getPostClient
(
$this
->
platformInfo
[
'platform_url'
]
.
'
/api/v1/update'
,
$params
,
[
$this
->
platformInfo
[
'platform_params'
][
'username'
],
$this
->
platformInfo
[
'platform_params'
][
'password'
]
]);
return
$this
->
apiResponse
(
$response
);
}
}
catch
(
\Exception
$e
){
return
$this
->
requestError
(
$e
);
$this
->
requestError
(
$e
);
}
}
public
function
backgroundLogin
()
{
if
(
$this
->
checkPlatformStatus
()){
$response
=
$this
->
getPostClient
(
'https://www.uploadcatalog.com
/json_login'
,[
$response
=
$this
->
getPostClient
(
$this
->
platformInfo
[
'platform_params'
][
'adminUrl'
]
.
'
/json_login'
,[
'username'
=>
$this
->
platformInfo
[
'platform_params'
][
'username'
],
'password'
=>
$this
->
platformInfo
[
'platform_params'
][
'password'
]
],
null
,[
...
...
@@ -65,51 +66,154 @@ class WuxiApiService extends PlatformAbstractService
}
}
public
function
pushBatchUploadProducts
(
$token
)
public
function
pushBatchUploadFile
(
$type
,
$fileName
,
$token
)
{
if
(
$this
->
checkPlatformStatus
()){
$params
=
[];
$params
[
'companyId'
]
=
'6789'
;
$params
[
'type'
]
=
'PRODUCT_CHEMICAL'
;
$params
[
'batchId'
]
=
'7d686e0b-8a08-e9e9-7d1f-916c387dea08'
;
$filePath
=
app
(
WuxiLabExport
::
class
)
->
getSavePath
(
'wuxiLab_package_2022_08_08_063609'
);
$params
[
'file'
]
=
fopen
(
$filePath
.
'.csv'
,
'r'
);
switch
(
$type
){
case
'product'
:
$type
=
'PRODUCT_CHEMICAL'
;
break
;
case
'package'
:
$type
=
'PACKAGE_CHEMICAL'
;
break
;
case
'stock'
:
$type
=
'INVENTORY_CHEMICAL'
;
break
;
}
$cookie
=
'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN;Auth-Token='
.
$token
.
';'
;
$params
=
[];
$params
[
'companyId'
]
=
$this
->
platformInfo
[
'platform_params'
][
'companyId'
];
$params
[
'type'
]
=
$type
;
$params
[
'batchId'
]
=
'65d30cab-92b7-8d4a-ae00-d5474c93d4f7'
;
$response
=
$this
->
getPostClient
(
'https://www.uploadcatalog.com/excel/chemical/upload'
,
$params
,
null
,[
'cookie'
=>
$cookie
]);
$filePath
=
app
(
WuxiLabExport
::
class
)
->
getSavePath
(
$fileName
);
$filePath
=
storage_path
(
'app/'
.
$filePath
);
$params
[
'file'
][
'name'
]
=
$fileName
.
'.xlsx'
;
$params
[
'file'
][
'contents'
]
=
\GuzzleHttp\Psr7\Utils
::
tryFopen
(
$filePath
.
'.xlsx'
,
'r'
);
return
json_decode
(
$response
,
true
)[
'token'
];
try
{
$response
=
$this
->
getMultipartPostClient
(
$this
->
platformInfo
[
'platform_params'
][
'adminUrl'
]
.
'/excel/chemical/upload'
,
$params
,
null
,[
'cookie'
=>
$this
->
getCookie
(
$token
),
]);
if
(
$this
->
apiResponse
(
$response
)){
unset
(
$params
[
'file'
]);
$urlParams
=
[];
foreach
(
$params
as
$key
=>
$param
){
$urlParams
[]
=
$key
.
'='
.
$param
;
}
$confirmResponse
=
$this
->
clientRequest
(
'post'
,
$this
->
platformInfo
[
'platform_params'
][
'adminUrl'
]
.
'/excel/finish?'
.
implode
(
'&'
,
$urlParams
),
[
'headers'
=>
[
'cookie'
=>
$this
->
getCookie
(
$token
),
'content-type'
=>
'application/json;charset=UTF-8'
]
]);
$result
=
$this
->
apiResponse
(
$confirmResponse
);
if
(
$result
[
'success'
]
==
true
){
return
true
;
}
}
return
false
;
}
catch
(
\Throwable
$exception
){
SimpleLogs
::
writeLog
(
$exception
->
getMessage
(),
__CLASS__
.
':pushBatchUploadProducts'
,
'error'
);
//file_put_contents('./error.txt',$exception->getMessage());
}
}
}
/**
* @更新包装规格
* @param $packages
* @param $token
* @return false|mixed|void
*/
public
function
pushBatchUpdatePackages
(
$packages
,
$token
)
{
try
{
if
(
$this
->
checkPlatformStatus
()){
$params
=
[];
$params
[
'company_id'
]
=
'6789'
;
$params
[
'company_id'
]
=
$this
->
platformInfo
[
'platform_params'
][
'companyId'
]
;
$params
[
'product_type'
]
=
'CHAMICAL'
;
$params
=
array_merge
(
$params
,
$packages
);
$cookie
=
'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN;Auth-Token='
.
$token
.
';'
;
$response
=
$this
->
getPostClient
(
$this
->
platformInfo
[
'platform_params'
][
'adminUrl'
]
.
'/package/specification/save'
,
$params
,
null
,
[
'cookie'
=>
$this
->
getCookie
(
$token
)
]);
return
$this
->
apiResponse
(
$response
);
}
}
catch
(
\Exception
$e
){
$this
->
requestError
(
$e
);
}
}
public
function
getPackageList
(
$token
)
{
try
{
if
(
$this
->
checkPlatformStatus
()){
$params
=
[];
$params
[
'companyId'
]
=
$this
->
platformInfo
[
'platform_params'
][
'companyId'
];
$params
[
'productType'
]
=
'CHAMICAL'
;
$urlParams
=
[];
foreach
(
$params
as
$key
=>
$param
){
$urlParams
[]
=
$key
.
'='
.
$param
;
}
$response
=
$this
->
getPostClient
(
'https://www.uploadcatalog.com/package/specification/save'
,
$params
,
null
,
[
'cookie'
=>
$cookie
$response
=
$this
->
clientRequest
(
'get'
,
$this
->
platformInfo
[
'platform_params'
][
'adminUrl'
]
.
'/package/specification/count?'
.
implode
(
'&'
,
$urlParams
),
[
'headers'
=>
[
'cookie'
=>
$this
->
getCookie
(
$token
),
'content-type'
=>
'application/json;charset=UTF-8'
]
]);
if
(
$response
&&
$response
>
0
){
$page
=
1
;
$count
=
ceil
(
$response
/
30
);
$packageList
=
[];
while
(
true
){
$params
[
'page'
]
=
$page
;
$params
[
'rows'
]
=
30
;
$urlParams
=
[];
foreach
(
$params
as
$key
=>
$param
){
$urlParams
[]
=
$key
.
'='
.
$param
;
}
$packageListResponse
=
$this
->
clientRequest
(
'get'
,
$this
->
platformInfo
[
'platform_params'
][
'adminUrl'
]
.
'/package/specification/list?'
.
implode
(
'&'
,
$urlParams
),
[
'headers'
=>
[
'cookie'
=>
$this
->
getCookie
(
$token
),
'content-type'
=>
'application/json;charset=UTF-8'
]
]);
$result
=
$this
->
apiResponse
(
$packageListResponse
);
if
(
$result
){
$packageList
=
array_merge
(
$packageList
,
$result
);
}
$page
++
;
if
(
$page
>
$count
){
break
;
}
sleep
(
2
);
}
return
$packageList
;
}
return
$this
->
apiResponse
(
$response
);
}
}
catch
(
\Exception
$e
){
return
$this
->
requestError
(
$e
);
$this
->
requestError
(
$e
);
}
}
private
function
getCookie
(
$token
)
{
return
'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN;Auth-Token='
.
$token
.
';'
;
}
/**
* 整理组装 api 数据
* @param $metaData
...
...
@@ -123,7 +227,6 @@ class WuxiApiService extends PlatformAbstractService
$mergeData
=
[];
foreach
(
$metaData
[
'rawList'
]
as
$datas
){
$tempData
[
'supplier_product_id'
]
=
$datas
[
'r_code'
];
$tempData
[
'mdl'
]
=
''
;
$tempData
[
'cas'
]
=
$datas
[
'c_cas'
];
...
...
@@ -148,8 +251,11 @@ class WuxiApiService extends PlatformAbstractService
if
(
isset
(
$metaData
[
'packageList'
][
$datas
[
'r_code'
]])){
$package
=
$metaData
[
'packageList'
][
$datas
[
'r_code'
]];
$pack
[
'unit_description'
]
=
$package
[
'p_pack_unit'
];
$pack
[
'package_status'
]
=
$package
[
'p_status'
]
==
'1'
?
'ACTIVE'
:
'INACTIVE'
;
$pack
[
'package_status'
]
=
$package
[
'p_status'
]
==
'1'
&&
$package
[
'p_show'
]
==
'1'
?
'ACTIVE'
:
'INACTIVE'
;
$tempData
[
'status'
]
=
$package
[
'p_show'
]
==
'1'
?
'ACTIVE'
:
'INACTIVE'
;
$pack
[
'inventorys'
]
=
[
'package_quantity'
=>
$package
[
'p_stock'
],
'stock_status'
=>
$package
[
'p_stock'
]
>
0
?
'INSTOCK'
:
'OUTSTOK'
,
...
...
@@ -188,16 +294,14 @@ class WuxiApiService extends PlatformAbstractService
{
$decodeResponse
=
json_decode
(
$response
,
true
);
if
(
$decodeResponse
){
if
(
!
empty
(
$decodeResponse
[
'successProduct'
])){
return
true
;
}
return
$decodeResponse
;
}
return
false
;
}
protected
function
requestError
(
$response
)
{
return
false
;
SimpleLogs
::
writeLog
(
$response
->
getMessage
(),
'WuxiApi error'
,
'error'
);
throw
$response
;
}
}
server/app/Services/ThirdPlatform/Api/ZhenkhApiService.php
View file @
f477dea9
...
...
@@ -362,7 +362,7 @@ class ZhenkhApiService extends PlatformAbstractService
protected
function
requestError
(
$response
)
{
SimpleLogs
::
writeLog
(
$response
->
getMessage
(),
'api error'
,
'error'
);
SimpleLogs
::
writeLog
(
$response
->
getMessage
(),
'
Zhenkh
api error'
,
'error'
);
throw
$response
;
}
...
...
server/app/Services/ThirdPlatform/PlatformAbstractService.php
View file @
f477dea9
...
...
@@ -112,6 +112,6 @@ abstract class PlatformAbstractService
public
function
removePlatformDataEntries
(
$dataKey
)
{
return
$this
->
dataEntriesService
->
removeEntriesValues
(
$dataKey
);
return
$this
->
dataEntriesService
->
removeEntriesValues
(
$
this
->
getPlatformInfo
(
'id'
),
$
dataKey
);
}
}
server/app/Services/WuxiLabService.php
View file @
f477dea9
...
...
@@ -18,7 +18,10 @@ use App\Repositories\Models\RhawnProducts;
use
App\Services\Kafka\KafkaService
;
use
App\Services\ThirdPlatform\Api\WuxiApiService
;
use
App\Services\ThirdPlatform\PlatformAbstractService
;
use
App\Support\Facades\SimpleKafka
;
use
App\Support\Facades\SimpleLogs
;
use
App\Support\Traits\Helpers
;
use
Illuminate\Filesystem\Filesystem
;
use
longlang\phpkafka\Protocol\ApiVersions\ApiVersionsResponse
;
class
WuxiLabService
...
...
@@ -27,6 +30,7 @@ class WuxiLabService
public
function
__construct
()
{
$this
->
apiService
=
(
new
WuxiApiService
(
app
(
ThirdApiPlatformRepository
::
class
)));
$this
->
rhawnChemicalsService
=
app
(
RhawnChemicalsService
::
class
);
}
/**
...
...
@@ -36,12 +40,11 @@ class WuxiLabService
{
$status
=
$this
->
apiService
->
checkPlatformStatus
();
if
(
$status
){
$rhawnChemicalsService
=
app
(
RhawnChemicalsService
::
class
);
$limit
=
$this
->
platformInfo
[
'platform_params'
][
'batchNums'
];
$limit
=
$this
->
apiService
->
getPlatformInfo
(
'platform_params'
)[
'batchNums'
];
$page
=
0
;
while
(
true
)
{
$rawList
=
$rhawnChemicalsService
->
getChemicalRawList
(
$page
*
$limit
,
$limit
);
$rawList
=
$
this
->
rhawnChemicalsService
->
getChemicalRawList
(
$page
*
$limit
,
$limit
);
if
(
!
$rawList
)
{
break
;
}
...
...
@@ -49,7 +52,7 @@ class WuxiLabService
foreach
(
$rawList
as
$raw
)
{
$rawIdList
[]
=
$raw
[
'r_id'
];
}
$packages
=
$rhawnChemicalsService
->
getChemicalPackage
(
$rawIdList
);
$packages
=
$
this
->
rhawnChemicalsService
->
getChemicalPackage
(
$rawIdList
);
$newPackages
=
[];
if
(
$packages
){
foreach
(
$packages
as
$pack
){
...
...
@@ -57,13 +60,14 @@ class WuxiLabService
}
}
if
(
!
empty
(
$rawList
)){
app
(
KafkaService
::
class
)
->
produerSend
(
SimpleKafka
::
produerSend
(
[
'params'
=>
[
'rawList'
=>
$rawList
,
'packageList'
=>
$newPackages
],
'consumer'
=>
'App\Services\WuxiLabService'
,
'method'
=>
'batchUpdate
Api
'
'consumer'
=>
__CLASS__
,
'method'
=>
'batchUpdate
ToWuxiLab
'
]
],
'wuxilab'
);
}
break
;
...
...
@@ -71,23 +75,67 @@ class WuxiLabService
}
}
public
function
test
(
$rawCode
)
{
try
{
$rawsList
=
$this
->
rhawnChemicalsService
->
getChemicalRawThroughtCode
(
$rawCode
);
if
(
$rawsList
){
foreach
(
$rawsList
as
$raw
)
{
$rawIdList
[]
=
$raw
[
'r_id'
];
}
$packages
=
$this
->
rhawnChemicalsService
->
getChemicalPackage
(
$rawIdList
);
$newPackages
=
[];
if
(
$packages
){
foreach
(
$packages
as
$pack
){
$newPackages
[
$pack
[
'r_code'
]]
=
$pack
;
}
}
/*$path = app(WuxiLabExport::class)->saveExcel(
['rawList' => $rawsList,'packageList' => $newPackages],
'package'
);
if($path){
list($file,$expend) = explode('.',$path);
$newPath = $file.'.'.strtolower($expend);
$cmd = 'mv '.storage_path('app/'.$path).' '.storage_path('app/'.$newPath);
trim(shell_exec("$cmd 2>&1"));
$filePathList = explode('/',$file);
$fileName = $filePathList[count($filePathList) - 1];
$result = $this->apiService->pushBatchUploadFile('package',$fileName, $this->apiService->backgroundLogin());
if($result){
$cmd = 'rm -rf '.storage_path('app/'.$newPath);
trim(shell_exec("$cmd 2>&1"));
SimpleLogs::writeLog('文件名为:'.$fileName.'路径:'.$newPath.'药明康德后台上传完成', __CLASS__.':processNotExistProductsUpdate');
}
}*/
$result
=
$this
->
apiService
->
pushBatchUpdateProduct
([
'rawList'
=>
$rawsList
,
'packageList'
=>
$newPackages
]);
var_dump
(
$result
);
}
}
catch
(
\Throwable
$exception
){
var_dump
(
$exception
->
getMessage
());
SimpleLogs
::
writeLog
(
$exception
->
getMessage
(),
__CLASS__
.
':processNotExistProductsUpdate'
,
'error'
);
}
}
/**
* @批量后台请求更新规格
* @param null $params
*/
public
function
batchUpdatePackagesInfo
(
$params
=
null
)
{
$token
=
$this
->
apiService
->
backgroundLogi
n
();
$token
=
$this
->
getToke
n
();
$wuxiLabPackage
=
[
'bottle'
,
'box'
,
'bp'
,
'case'
,
'ea'
,
'g'
,
'gal'
,
'hole'
,
'kg'
,
'kit'
,
'l'
,
'm'
,
'm2'
,
'mg'
,
'ml'
,
'mm'
,
'mmol'
,
'mu'
,
'ng'
,
'nmole'
,
'od'
,
'package'
,
'pair'
,
'piece'
,
'pmole'
,
'RL'
,
'sets'
,
'test'
,
'unit'
,
'vial'
,
'xa'
,
'µci'
,
'µg'
,
'µl'
,
'µmol'
];
/*$rhawnChemicalsService = app(RhawnChemicalsService::class);
$packagesUnit = $rhawnChemicalsService->getProductPackagesThroughGroupByPackUnit();*/
$path
=
config
(
'filesystems.disks.local.root'
)
.
'/upload/'
.
$params
;
$generator
=
Helpers
::
yieldLoadCsv
(
$path
);
//$path = config('filesystems.disks.local.root').'/upload/'.$params;
//$generator = Helpers::yieldLoadCsv($path);
// yield 循环逐行读取csv内容
while
(
$generator
->
valid
())
{
/*
while ($generator->valid()) {
$content = $generator->current();
var_dump
(
$content
);
if(in_array($content[1],$wuxiLabPackage)){
$this->apiService->pushBatchUpdatePackages([
'unit_quantity' => $content[0], 'unit_type' => $content[1], 'unit_description' => $content[0].$content[1]
...
...
@@ -95,53 +143,194 @@ class WuxiLabService
}
usleep(30000);
$generator->next();
}
}*/
$packageList
=
$this
->
apiService
->
getPackageList
(
$token
);
$rhawnChemicalsService
=
app
(
RhawnChemicalsService
::
class
);
$packagesUnit
=
$rhawnChemicalsService
->
getProductPackagesThroughGroupByPackUnit
();
/*foreach($packagesUnit as $unit){
if(in_array($unit['p_pack_unit'],$wuxiLabPackage)){
$service->pushBatchUpdatePackages([
'unit_quantity' => $unit['p_pack'], 'unit_type' => $unit['p_pack_unit'], 'unit_description' => $unit['p_pack'].$unit['p_pack_unit']
foreach
(
$packagesUnit
as
$package
){
if
(
!
empty
(
$packageList
)){
$exist
=
0
;
foreach
(
$packageList
as
$p
){
$name
=
$package
[
'p_pack'
]
.
$package
[
'p_pack_unit'
];
if
(
$name
==
$p
[
'unitDescription'
]){
$exist
=
1
;
}
}
if
(
!
$exist
){
if
(
!
in_array
(
$package
[
'p_pack_unit'
],
$wuxiLabPackage
)){
continue
;
}
$this
->
apiService
->
pushBatchUpdatePackages
([
'unit_quantity'
=>
$package
[
'p_pack'
],
'unit_type'
=>
$package
[
'p_pack_unit'
],
'unit_description'
=>
$package
[
'p_pack'
]
.
$package
[
'p_pack_unit'
]
],
$token
);
}
}*/
}
}
}
public
function
batchUploadProducts
()
/**
* @处理不存在商品的更新
* @param $params
* @return false|void
*/
public
function
processProductsUpdateThroughtExcel
(
$params
)
{
//$token = $service->backgroundLogin();
if
(
!
isset
(
$params
[
'products'
])
||
empty
(
$params
[
'products'
])){
return
false
;
}
$token
=
'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI3OTAwODcwNTlAcXEuY29tIiwiaXNzIjoiTGFiTmV0d29yayIsImlhdCI6MTY2MDUyNTg0NiwiZXhwIjoxNjYwNTQ3NDQ2LCJyb2xlcyI6IlJPTEVfU1VQUExJRVIiLCJhcHBsaWNhdGlvbiI6ImZ1bGxtb29uIiwidG9rZW4iOiIwNmQ1ZWIyNy0yYjMxLTQ3NjUtYTIzNS1lOTJhMzJjMjFhMjAiLCJjb21wYW55IjoiWUVIWCIsInByZWZlcnJlZExhbmd1YWdlIjoiIiwiamRlSWQiOiI5MDI2MDkyIiwiY29tcGFueU5hbWUiOiLkuIrmtbfmmJPmganljJblrabmioDmnK_mnInpmZDlhazlj7gifQ.oVk2WQeR6NlTvruRrh4I_2YenvKTejyeOd5-tbgXe9g'
;
$result
=
$this
->
apiService
->
pushBatchUploadProducts
(
$token
);
try
{
$rawsList
=
$this
->
rhawnChemicalsService
->
getChemicalRawThroughtCode
(
$params
[
'products'
]);
if
(
$rawsList
){
foreach
(
$rawsList
as
$raw
)
{
$rawIdList
[]
=
$raw
[
'r_id'
];
}
$packages
=
$this
->
rhawnChemicalsService
->
getChemicalPackage
(
$rawIdList
);
$newPackages
=
[];
if
(
$packages
){
foreach
(
$packages
as
$pack
){
$newPackages
[
$pack
[
'r_code'
]]
=
$pack
;
}
}
$path
=
app
(
WuxiLabExport
::
class
)
->
saveExcel
(
[
'rawList'
=>
$rawsList
,
'packageList'
=>
$newPackages
]
);
if
(
$path
){
list
(
$file
,
$expend
)
=
explode
(
'.'
,
$path
);
$newPath
=
$file
.
'.'
.
strtolower
(
$expend
);
$cmd
=
'mv '
.
storage_path
(
'app/'
.
$path
)
.
' '
.
storage_path
(
'app/'
.
$newPath
);
trim
(
shell_exec
(
"
$cmd
2>&1"
));
$filePathList
=
explode
(
'/'
,
$file
);
$fileName
=
$filePathList
[
count
(
$filePathList
)
-
1
];
$result
=
$this
->
apiService
->
pushBatchUploadFile
(
$params
[
'type'
],
$fileName
,
$this
->
getToken
());
if
(
$result
){
SimpleLogs
::
writeLog
(
'文件名为:'
.
$fileName
.
'路径:'
.
$newPath
.
'药明康德后台上传完成'
,
__CLASS__
.
':processNotExistProductsUpdate'
);
}
}
}
}
catch
(
\Throwable
$exception
){
SimpleLogs
::
writeLog
(
$exception
->
getMessage
(),
__CLASS__
.
':processNotExistProductsUpdate'
,
'error'
);
}
}
public
function
batchUpdateApi
(
$updateData
)
/**
* @批量更新商品
* @param $updateData
*/
public
function
batchUpdateToWuxiLab
(
$updateData
)
{
if
(
!
isset
(
$updateData
[
'rawList'
])
||
empty
(
$updateData
[
'rawList'
])){
return
false
;
}
if
(
!
isset
(
$updateData
[
'packageList'
])
||
empty
(
$updateData
[
'packageList'
])){
return
false
;
}
try
{
$result
=
$this
->
apiService
->
pushBatchUpdateProduct
(
$updateData
);
if
(
$result
){
if
(
$result
[
'status'
]
===
false
){
app
(
KafkaService
::
class
)
->
produerSend
(
if
(
isset
(
$result
[
'errorProduct'
])
&&
!
empty
(
$result
[
'errorProduct'
])){
$storeEntries
=
$this
->
apiService
->
getPlatformDataEntries
(
'wuxiLab_not_exist_products'
,
'data_values'
);
/*if(!is_null($storeEntries) && count($storeEntries['products']) >= $this->apiService->getPlatformInfo('platform_params')['excelCreateLimit']){
SimpleKafka::produerSend(
[
'params' => ['products' => $storeEntries['products'],'type' => 'product'],
'consumer' => __CLASS__,
'method' => 'processProductsUpdateThroughtExcel'
]
);
$this->apiService->removePlatformDataEntries('wuxiLab_not_exist_products');
$storeEntries = null;
}*/
foreach
(
$result
[
'errorProduct'
]
as
$errorProduct
){
if
(
$errorProduct
[
'reason'
]
==
'PRODUCT_NOT_EXIST'
){
if
(
!
is_null
(
$storeEntries
)
&&
!
empty
(
$storeEntries
[
'products'
])){
if
(
!
in_array
(
$errorProduct
[
'data'
],
$storeEntries
[
'products'
])){
array_push
(
$storeEntries
[
'products'
],
$errorProduct
[
'data'
]);
}
}
else
{
$storeEntries
[
'products'
][]
=
$errorProduct
[
'data'
];
}
}
}
$this
->
apiService
->
storePlatformDataEntries
(
'wuxiLab_not_exist_products'
,[
'products'
=>
$storeEntries
[
'products'
]]);
}
//更新成功,批量更新包装规格
$storeEntries
=
$this
->
apiService
->
getPlatformDataEntries
(
'wuxiLab_do_not_update_products'
,
'data_values'
);
if
(
!
is_null
(
$storeEntries
)
&&
count
(
$storeEntries
[
'products'
])
>=
$this
->
apiService
->
getPlatformInfo
(
'platform_params'
)[
'excelCreateLimit'
]){
SimpleKafka
::
produerSend
(
[
''
=>
''
,
'params'
=>
$updateData
'params'
=>
[
'products'
=>
$storeEntries
[
'products'
],
'type'
=>
'package'
],
'consumer'
=>
__CLASS__
,
'method'
=>
'processProductsUpdateThroughtExcel'
]
);
$this
->
apiService
->
removePlatformDataEntries
(
'wuxiLab_do_not_update_products'
);
}
foreach
(
$result
[
'successProduct'
]
as
$successProduct
){
if
(
!
is_null
(
$storeEntries
)
&&
!
empty
(
$storeEntries
[
'products'
])){
if
(
!
in_array
(
$successProduct
,
$storeEntries
[
'products'
])){
array_push
(
$storeEntries
[
'products'
],
$successProduct
);
}
}
else
{
$storeEntries
[
'products'
][]
=
$successProduct
;
}
}
}
}
catch
(
\Throwable
$exception
){
SimpleLogs
::
writeLog
(
$exception
->
getMessage
(),
__CLASS__
.
':batchUpdateToWuxiLab'
,
'error'
);
var_dump
(
$exception
->
getMessage
());
}
}
unset
(
$result
[
'status'
]);
/**
* @ 获取api token
* @return false|mixed
*/
public
function
getToken
(){
try
{
$token
=
$this
->
apiService
->
getPlatformDataEntries
(
'wuxilab_backlogin_token'
,
'data_values'
);
if
(
empty
(
$token
)){
$apiToken
=
$this
->
apiService
->
backgroundLogin
();
if
(
$apiToken
){
$backloginToken
=
[];
$backloginToken
[
'currentTime'
]
=
time
();
$backloginToken
[
'token'
]
=
$apiToken
;
$this
->
apiService
->
storePlatformDataEntries
(
'wuxilab_backlogin_token'
,
$backloginToken
);
return
$apiToken
;
}
}
else
{
//超过有效期,重新请求获取
if
(
intval
(
gmdate
(
'i'
,
time
()
-
intval
(
$token
[
'currentTime'
])))
>
30
){
$apiToken
=
$this
->
apiService
->
backgroundLogin
();
if
(
$apiToken
){
$apiToken
[
'currentTime'
]
=
time
();
$this
->
apiService
->
storePlatformDataEntries
(
'zkh_api_token'
,
$apiToken
);
return
$apiToken
[
'token'
];
}
}
return
$token
[
'token'
];
}
}
catch
(
\Exception
$exception
){
SimpleLogs
::
writeLog
(
$exception
->
getMessage
(),
__CLASS__
.
':token error'
,
'error'
);
return
false
;
}
}
/**
* 初始化生成产品excel文档
* @初始化生成产品excel文档
* @param $exportLimit
*/
public
function
initCreateProductsToExcel
(
$exportLimit
)
{
$rhawnChemicalsService
=
app
(
RhawnChemicalsService
::
class
);
$limit
=
$exportLimit
;
$page
=
0
;
while
(
true
)
{
$rawList
=
$rhawnChemicalsService
->
getChemicalRawList
(
$page
*
$limit
,
$limit
);
$rawList
=
$
this
->
rhawnChemicalsService
->
getChemicalRawList
(
$page
*
$limit
,
$limit
);
if
(
!
$rawList
)
{
break
;
}
...
...
@@ -149,7 +338,7 @@ class WuxiLabService
foreach
(
$rawList
as
$raw
)
{
$rawIdList
[]
=
$raw
[
'r_id'
];
}
$packages
=
$rhawnChemicalsService
->
getChemicalPackage
(
$rawIdList
);
$packages
=
$
this
->
rhawnChemicalsService
->
getChemicalPackage
(
$rawIdList
);
$newPackages
=
[];
if
(
$packages
){
foreach
(
$packages
as
$pack
){
...
...
server/app/Support/Traits/HttpClientHelpers.php
View file @
f477dea9
...
...
@@ -12,7 +12,7 @@ trait HttpClientHelpers
{
$options
=
[];
$options
[
'headers'
][
'User-Agent'
]
=
$this
->
randomUserAgent
()
;
$options
[
'headers'
][
'User-Agent'
]
=
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'
;
$options
[
'debug'
]
=
env
(
'API_DEBUG'
);
return
$options
;
...
...
@@ -44,6 +44,39 @@ trait HttpClientHelpers
return
$this
->
clientRequest
(
'post'
,
$uri
,
$options
);
}
public
function
getMultipartPostClient
(
$uri
,
$paramsBody
=
[],
$auth
=
null
,
$header
=
null
)
{
$options
=
[
'headers'
=>
[]
];
$paramsOptions
=
[];
foreach
(
$paramsBody
as
$key
=>
$params
){
if
(
$key
!=
'file'
){
array_push
(
$paramsOptions
,[
'name'
=>
$key
,
'contents'
=>
$params
]);
}
else
{
array_push
(
$paramsOptions
,[
'name'
=>
'file'
,
'filename'
=>
$params
[
'name'
],
'contents'
=>
$params
[
'contents'
]
]);
}
}
$options
[
'multipart'
]
=
$paramsOptions
;
if
(
$auth
&&
is_array
(
$auth
)){
$options
[
'auth'
]
=
$auth
;
}
if
(
!
is_null
(
$header
)){
$options
[
'headers'
]
=
array_merge
(
$options
[
'headers'
],
$header
);
}
return
$this
->
clientRequest
(
'post'
,
$uri
,
$options
);
}
protected
function
clientRequest
(
$requestType
,
$uri
,
$options
)
{
$requestOptions
=
$this
->
getDefaultOptions
();
...
...
server/database/seeds/local/ThridApiPlatformSeeder.php
View file @
f477dea9
...
...
@@ -3,14 +3,13 @@
use
Illuminate\Database\Seeder
;
use
Illuminate\Support\Facades\DB
;
use
Spatie\Permission\Models\Role
;
class
ThridApiPlatformSeeder
extends
Seeder
{
use
\App\Support\Traits\Helpers
;
protected
$thirdapiplatform
=
[
/*
[
[
'platform_name'
=>
'integle'
,
'platform_title'
=>
'integle'
,
'platform_url'
=>
'http://suppliers.integle.com'
,
...
...
@@ -31,8 +30,8 @@ class ThridApiPlatformSeeder extends Seeder
'platform_type'
=>
'third'
,
'platform_status'
=>
'1'
,
'platform_token'
=>
''
,
],
*/
/*
[
],
[
'platform_name'
=>
'bide'
,
'platform_title'
=>
'bide'
,
'platform_url'
=>
'http://220.248.71.110:9000'
,
...
...
@@ -42,8 +41,8 @@ class ThridApiPlatformSeeder extends Seeder
'platform_type'
=>
'third'
,
'platform_status'
=>
'1'
,
'platform_token'
=>
''
,
],
*/
/*
[
],
[
'platform_name'
=>
'bjs'
,
'platform_title'
=>
'bjs'
,
'platform_url'
=>
'http://220.248.71.110:9000'
,
...
...
@@ -53,7 +52,7 @@ class ThridApiPlatformSeeder extends Seeder
'platform_type'
=>
'third'
,
'platform_status'
=>
'1'
,
'platform_token'
=>
''
,
],
*/
],
[
'platform_name'
=>
'zkh'
,
'platform_title'
=>
'震坤行'
,
...
...
@@ -89,7 +88,10 @@ class ThridApiPlatformSeeder extends Seeder
'username'
=>
'790087059@qq.com'
,
'password'
=>
'YXH1992xb'
,
'auth'
=>
'dGVzdDEyMzpwYXNzNDU2'
,
'batchNums'
=>
'500'
'batchNums'
=>
'500'
,
'companyId'
=>
'6789'
,
'adminUrl'
=>
'https://www.uploadcatalog.com'
,
'excelCreateLimit'
=>
100
]);
break
;
case
"bide"
:
...
...
@@ -121,7 +123,7 @@ class ThridApiPlatformSeeder extends Seeder
$platform
[
'created_at'
]
=
date
(
'Y-m-d H:i:s'
,
time
());
$platform
[
'updated_at'
]
=
date
(
'Y-m-d H:i:s'
,
time
());
$thirdApiPlatformRepo
->
updateOrCreate
(
$platform
);
$thirdApiPlatformRepo
->
updateOrCreate
(
[
'platform_name'
=>
$platform
[
'platform_name'
]],
$platform
);
}
DB
::
commit
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment