Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
pdstask
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
曲欣亮
pdstask
Commits
a1e2f276
Commit
a1e2f276
authored
Nov 30, 2020
by
Quxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
X
parent
bdad5e3a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
108 additions
and
118 deletions
+108
-118
EmailServiceTest.java
src/main/java/com/egolm/pds/EmailServiceTest.java
+1
-1
MailObject.java
src/main/java/com/egolm/pds/bean/MailObject.java
+0
-24
ProductsTask.java
src/main/java/com/egolm/pds/schedule/ProductsTask.java
+79
-58
EmailService.java
src/main/java/com/egolm/pds/service/EmailService.java
+28
-35
No files found.
src/main/java/com/egolm/pds/EmailServiceTest.java
View file @
a1e2f276
...
...
@@ -20,7 +20,7 @@ public class EmailServiceTest {
@Test
public
void
sendEmailTest
()
{
try
{
service
.
sendForsync
(
"测试邮件"
,
"测试邮件"
);
service
.
sendForsync
(
0
,
"测试邮件"
,
"测试邮件"
);
}
catch
(
Throwable
e
)
{
e
.
printStackTrace
();
}
...
...
src/main/java/com/egolm/pds/bean/MailObject.java
deleted
100644 → 0
View file @
bdad5e3a
package
com
.
egolm
.
pds
.
bean
;
public
class
MailObject
{
private
String
subject
;
private
String
content
;
public
String
getSubject
()
{
return
subject
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setSubject
(
String
subject
)
{
this
.
subject
=
subject
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
}
src/main/java/com/egolm/pds/schedule/ProductsTask.java
View file @
a1e2f276
package
com
.
egolm
.
pds
.
schedule
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.logging.Log
;
...
...
@@ -49,67 +51,86 @@ public class ProductsTask {
private
void
executeUpdateTask
()
{
Map
<
String
,
String
>
headers
=
new
HashMap
<
String
,
String
>();
headers
.
put
(
authKey
,
authValue
);
while
(
true
)
{
String
responseBody
=
HttpUtil
.
get
(
urlQuery
,
headers
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
responseBody
);
JSONArray
jsonArray
=
jsonObject
.
getJSONArray
(
"data"
);
if
(
jsonArray
==
null
||
jsonArray
.
size
()
==
0
)
{
break
;
}
else
{
for
(
int
i
=
0
;
i
<
jsonArray
.
size
();
i
++)
{
JSONObject
productJsonObject
=
jsonArray
.
getJSONObject
(
i
);
String
article_description
=
productJsonObject
.
getString
(
"article_description"
);
String
article_group_no
=
productJsonObject
.
getString
(
"article_group_no"
);
String
article_short_description
=
productJsonObject
.
getString
(
"article_short_description"
);
String
article_type
=
productJsonObject
.
getString
(
"article_type"
);
String
barcode
=
productJsonObject
.
getString
(
"barcode"
);
String
buying_price
=
productJsonObject
.
getString
(
"buying_price"
);
String
buying_price_with_tax
=
productJsonObject
.
getString
(
"buying_price_with_tax"
);
Integer
case_qty
=
productJsonObject
.
getInteger
(
"case_qty"
);
String
deduction
=
productJsonObject
.
getString
(
"deduction"
);
String
made_in
=
productJsonObject
.
getString
(
"made_in"
);
String
order_way
=
productJsonObject
.
getString
(
"order_way"
);
String
pack_unit
=
productJsonObject
.
getString
(
"pack_unit"
);
String
selling_price
=
productJsonObject
.
getString
(
"selling_price"
);
String
specification
=
productJsonObject
.
getString
(
"specification"
);
String
stores
=
productJsonObject
.
getString
(
"stores"
);
String
supplier_article_no
=
productJsonObject
.
getString
(
"supplier_article_no"
);
String
supplier_no
=
productJsonObject
.
getString
(
"supplier_no"
);
String
tax_rate
=
productJsonObject
.
getString
(
"tax_rate"
);
String
trade_mode
=
productJsonObject
.
getString
(
"trade_mode"
);
String
weight_article
=
productJsonObject
.
getString
(
"weight_article"
);
Object
transactionId
=
productJsonObject
.
get
(
"transaction_id"
);
Map
<
String
,
Object
>
productMap
=
new
HashMap
<
String
,
Object
>();
productMap
.
put
(
"article_description"
,
article_description
);
productMap
.
put
(
"article_group_no"
,
article_group_no
);
productMap
.
put
(
"article_short_description"
,
article_short_description
);
productMap
.
put
(
"article_type"
,
article_type
);
productMap
.
put
(
"barcode"
,
barcode
);
productMap
.
put
(
"buying_price"
,
buying_price
);
productMap
.
put
(
"buying_price_with_tax"
,
buying_price_with_tax
);
productMap
.
put
(
"case_qty"
,
case_qty
);
productMap
.
put
(
"deduction"
,
deduction
);
productMap
.
put
(
"made_in"
,
made_in
);
productMap
.
put
(
"order_way"
,
order_way
);
productMap
.
put
(
"pack_unit"
,
pack_unit
);
productMap
.
put
(
"selling_price"
,
selling_price
);
productMap
.
put
(
"specification"
,
specification
);
productMap
.
put
(
"stores"
,
stores
);
productMap
.
put
(
"supplier_article_no"
,
supplier_article_no
);
productMap
.
put
(
"supplier_no"
,
supplier_no
);
productMap
.
put
(
"tax_rate"
,
tax_rate
);
productMap
.
put
(
"trade_mode"
,
trade_mode
);
productMap
.
put
(
"weight_article"
,
weight_article
);
productMap
.
put
(
"dLastUpdateTime"
,
new
Date
());
try
{
pdsService
.
savePdsProduct
(
transactionId
,
productMap
);;
}
catch
(
Throwable
e
)
{
log
.
error
(
""
,
e
);
emailService
.
sendForasync
(
"PDS TASK ERROR"
,
productJsonObject
.
toJSONString
(),
e
);
List
<
PdsErrDetail
>
errs
=
new
ArrayList
<
PdsErrDetail
>();
try
{
while
(
true
)
{
String
responseBody
=
HttpUtil
.
get
(
urlQuery
,
headers
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
responseBody
);
JSONArray
jsonArray
=
jsonObject
.
getJSONArray
(
"data"
);
if
(
jsonArray
==
null
||
jsonArray
.
size
()
==
0
)
{
break
;
}
else
{
for
(
int
i
=
0
;
i
<
jsonArray
.
size
();
i
++)
{
JSONObject
productJsonObject
=
jsonArray
.
getJSONObject
(
i
);
String
article_description
=
productJsonObject
.
getString
(
"article_description"
);
String
article_group_no
=
productJsonObject
.
getString
(
"article_group_no"
);
String
article_short_description
=
productJsonObject
.
getString
(
"article_short_description"
);
String
article_type
=
productJsonObject
.
getString
(
"article_type"
);
String
barcode
=
productJsonObject
.
getString
(
"barcode"
);
String
buying_price
=
productJsonObject
.
getString
(
"buying_price"
);
String
buying_price_with_tax
=
productJsonObject
.
getString
(
"buying_price_with_tax"
);
Integer
case_qty
=
productJsonObject
.
getInteger
(
"case_qty"
);
String
deduction
=
productJsonObject
.
getString
(
"deduction"
);
String
made_in
=
productJsonObject
.
getString
(
"made_in"
);
String
order_way
=
productJsonObject
.
getString
(
"order_way"
);
String
pack_unit
=
productJsonObject
.
getString
(
"pack_unit"
);
String
selling_price
=
productJsonObject
.
getString
(
"selling_price"
);
String
specification
=
productJsonObject
.
getString
(
"specification"
);
String
stores
=
productJsonObject
.
getString
(
"stores"
);
String
supplier_article_no
=
productJsonObject
.
getString
(
"supplier_article_no"
);
String
supplier_no
=
productJsonObject
.
getString
(
"supplier_no"
);
String
tax_rate
=
productJsonObject
.
getString
(
"tax_rate"
);
String
trade_mode
=
productJsonObject
.
getString
(
"trade_mode"
);
String
weight_article
=
productJsonObject
.
getString
(
"weight_article"
);
Object
transactionId
=
productJsonObject
.
get
(
"transaction_id"
);
Map
<
String
,
Object
>
productMap
=
new
HashMap
<
String
,
Object
>();
productMap
.
put
(
"article_description"
,
article_description
);
productMap
.
put
(
"article_group_no"
,
article_group_no
);
productMap
.
put
(
"article_short_description"
,
article_short_description
);
productMap
.
put
(
"article_type"
,
article_type
);
productMap
.
put
(
"barcode"
,
barcode
);
productMap
.
put
(
"buying_price"
,
buying_price
);
productMap
.
put
(
"buying_price_with_tax"
,
buying_price_with_tax
);
productMap
.
put
(
"case_qty"
,
case_qty
);
productMap
.
put
(
"deduction"
,
deduction
);
productMap
.
put
(
"made_in"
,
made_in
);
productMap
.
put
(
"order_way"
,
order_way
);
productMap
.
put
(
"pack_unit"
,
pack_unit
);
productMap
.
put
(
"selling_price"
,
selling_price
);
productMap
.
put
(
"specification"
,
specification
);
productMap
.
put
(
"stores"
,
stores
);
productMap
.
put
(
"supplier_article_no"
,
supplier_article_no
);
productMap
.
put
(
"supplier_no"
,
supplier_no
);
productMap
.
put
(
"tax_rate"
,
tax_rate
);
productMap
.
put
(
"trade_mode"
,
trade_mode
);
productMap
.
put
(
"weight_article"
,
weight_article
);
productMap
.
put
(
"dLastUpdateTime"
,
new
Date
());
try
{
pdsService
.
savePdsProduct
(
transactionId
,
productMap
);;
}
catch
(
Throwable
e
)
{
log
.
error
(
""
,
e
);
PdsErrDetail
err
=
new
PdsErrDetail
(
JSON
.
toJSONString
(
productJsonObject
),
e
);
errs
.
add
(
err
);
}
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
""
,
e
);
PdsErrDetail
err
=
new
PdsErrDetail
(
null
,
e
);
errs
.
add
(
err
);
}
finally
{
emailService
.
sendPdsErrorDetails
(
"PDS TASK ERROR"
,
errs
);
}
}
public
static
class
PdsErrDetail
{
public
final
String
data
;
public
final
Throwable
e
;
public
PdsErrDetail
(
String
data
,
Throwable
e
)
{
this
.
data
=
data
;
this
.
e
=
e
;
}
}
...
...
src/main/java/com/egolm/pds/service/EmailService.java
View file @
a1e2f276
...
...
@@ -2,61 +2,54 @@ package com.egolm.pds.service;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
com.egolm.common.DateUtil
;
import
com.egolm.common.MailUtil
;
import
com.egolm.pds.bean.MailObject
;
import
com.egolm.pds.bean.MailConfig
;
import
com.egolm.pds.
utils.ThrowableUt
il
;
import
com.egolm.pds.
schedule.ProductsTask.PdsErrDeta
il
;
@Component
public
class
EmailService
{
@Autowired
private
MailConfig
config
;
private
static
final
Log
log
=
LogFactory
.
getLog
(
EmailService
.
class
);
private
static
final
LinkedBlockingQueue
<
MailObject
>
queue
=
new
LinkedBlockingQueue
<
MailObject
>();
public
void
sendForasync
(
String
subject
,
String
content
,
Throwable
e
)
{
StringBuffer
stackString
=
ThrowableUtil
.
toStackString
(
e
);
public
void
sendPdsErrorDetails
(
String
subject
,
List
<
PdsErrDetail
>
errs
)
{
String
timeString
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
);
MailObject
emailObject
=
new
MailObject
();
emailObject
.
setSubject
(
subject
);
emailObject
.
setContent
(
"<pre>"
+
timeString
+
"\r\n"
+
subject
+
"\r\n"
+
content
+
"\r\n"
+
stackString
.
toString
()
+
"</pre>"
);
queue
.
add
(
emailObject
);
StringBuffer
bodyString
=
new
StringBuffer
();
bodyString
.
append
(
timeString
).
append
(
System
.
lineSeparator
());
for
(
PdsErrDetail
err:
errs
)
{
bodyString
.
append
(
err
.
data
).
append
(
System
.
lineSeparator
());
bodyString
.
append
(
err
.
e
.
getMessage
()).
append
(
System
.
lineSeparator
());
}
bodyString
.
append
(
System
.
lineSeparator
()).
append
(
System
.
lineSeparator
()).
append
(
System
.
lineSeparator
());
this
.
sendForsync
(
5
,
subject
,
"<pre>"
+
bodyString
.
toString
()
+
"</pre>"
);
}
@Scheduled
(
initialDelay
=
5000
,
fixedRate
=
Long
.
MAX_VALUE
)
private
void
exec
()
{
while
(
true
)
{
MailObject
obj
=
null
;
try
{
obj
=
queue
.
take
();
this
.
sendForsync
(
obj
.
getSubject
(),
obj
.
getContent
());
}
catch
(
Throwable
e
)
{
log
.
error
(
""
,
e
);
if
(
obj
!=
null
)
{
queue
.
add
(
obj
);
public
void
sendForsync
(
int
tryCount
,
String
subject
,
String
content
)
{
try
{
String
host
=
config
.
getHost
();
Integer
port
=
config
.
getPort
();
String
username
=
config
.
getUsername
();
String
password
=
config
.
getPassword
();
String
from
=
config
.
getFrom
();
List
<
String
>
to
=
config
.
getTo
();
MailUtil
.
sendBySmtp
(
host
,
port
,
true
,
username
,
password
,
from
,
subject
,
content
,
null
,
to
.
toArray
(
new
String
[
to
.
size
()]));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
if
(
tryCount
>
0
)
{
try
{
Thread
.
sleep
(
1000L
*
60
*
5
);
}
catch
(
InterruptedException
e1
)
{
e1
.
printStackTrace
();
}
this
.
sendForsync
(--
tryCount
,
subject
,
content
);
}
}
}
public
void
sendForsync
(
String
subject
,
String
content
)
{
String
host
=
config
.
getHost
();
Integer
port
=
config
.
getPort
();
String
username
=
config
.
getUsername
();
String
password
=
config
.
getPassword
();
String
from
=
config
.
getFrom
();
List
<
String
>
to
=
config
.
getTo
();
MailUtil
.
sendBySmtp
(
host
,
port
,
true
,
username
,
password
,
from
,
subject
,
content
,
null
,
to
.
toArray
(
new
String
[
to
.
size
()]));
}
}
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