import com.matrixone.apps.domain.DomainObject ;
import com.matrixone.apps.domain.DomainRelationship ;
import com.matrixone.apps.domain.util.FrameworkException ;
import com.matrixone.apps.domain.util.MqlUtil ;
import matrix.db.Context ;
import javax.mail.* ;
import javax.mail.internet.InternetAddress ;
import javax.mail.internet.MimeMessage ;
import java.util.* ;
import java.util.logging.Logger ;
public class AegPublicAccountMailIntegrate_mxJPO {
private static final Logger LOGGER = Logger . getLogger ( AegPublicAccountMailIntegrate_mxJPO . class . getName ( ) ) ;
private static final String OperatingUserGroup = "0007\u8425\u8fd0\u7ec4" ;
private static final String ProcurementUserGroup = "0005\u91c7\u8d2d\u7ec4" ;
private static final String QualityUserGroup = "0006\u8d28\u91cf\u7ec4" ;
private static final String SEND_EMAIL = "aegplm@aeg-imc.com" ;
private static final String SEND_PASSWORD = "Aeg-1887" ;
private static final String SMTP_HOST = "smtp.partner.outlook.cn" ;
private static final String SMTP_PORT = "587" ;
public void updateApprovalInfo ( Context context , String [ ] args ) throws Exception {
String routeId = args [ 0 ] ;
String changeId = args [ 1 ] ;
LOGGER . info ( "routeId ==> " + routeId ) ;
LOGGER . info ( "changeId ==> " + changeId ) ;
String getRouteType = "print bus " + routeId + " select type dump |" ;
String routeType = MqlUtil . mqlCommand ( context , getRouteType ) ;
LOGGER . info ( "routeType ==> " + routeType ) ;
if ( "Route" . equals ( routeType ) )
{
String getChangeType = "print bus " + changeId + " select type dump |" ;
String changeType = MqlUtil . mqlCommand ( context , getChangeType ) ;
String getRouteNodeInfo = "print bus " + routeId + " select from[Route Node].to.id dump |" ;
String routeNodeInfo = MqlUtil . mqlCommand ( context , getRouteNodeInfo ) ;
LOGGER . info ( "routeNodeInfo ==> " + routeNodeInfo ) ;
List < String > groupIdList = getGroupId ( context ) ;
if ( ! "" . equals ( groupIdList ) )
{
if ( routeNodeInfo . contains ( "|" ) )
{
String [ ] routeNodeIdItem = routeNodeInfo . split ( "\\|" ) ;
LOGGER . info ( "routeNodeIdItem ==> " + routeNodeIdItem . toString ( ) ) ;
for ( int i = 0 ; i < routeNodeIdItem . length ; i + + ) {
String itemId = routeNodeIdItem [ i ] ;
LOGGER . info ( "=========================" ) ;
LOGGER . info ( "routeNodeIdItemID ==> " + itemId ) ;
for ( int j = 0 ; j < groupIdList . size ( ) ; j + + ) {
LOGGER . info ( "groupId ===> " + groupIdList . get ( j ) ) ;
if ( groupIdList . get ( j ) . equals ( itemId ) )
{
LOGGER . info ( "=====> " + groupIdList . get ( j ) ) ;
LOGGER . info ( "=====> " + itemId ) ;
checkChangeAttrValue ( context , j , changeType , changeId , routeId , itemId ) ;
}
}
}
for ( int i = 0 ; i < routeNodeIdItem . length ; i + + ) {
String itemId = routeNodeIdItem [ i ] ;
LOGGER . info ( "=========================" ) ;
LOGGER . info ( "routeNodeIdItemID ==> " + itemId ) ;
for ( int j = 0 ; j < groupIdList . size ( ) ; j + + ) {
LOGGER . info ( "groupId ===> " + groupIdList . get ( j ) ) ;
if ( groupIdList . get ( j ) . equals ( itemId ) )
{
replaceRouteNode ( context , routeId , itemId , changeId ) ;
}
}
}
} else {
if ( groupIdList . contains ( routeNodeInfo ) )
{
for ( int i = 0 ; i < groupIdList . size ( ) ; i + + ) {
if ( groupIdList . get ( i ) . equals ( routeNodeInfo ) ) {
checkChangeAttrValue ( context , i , changeType , changeId , routeId , routeNodeInfo ) ;
}
}
replaceRouteNode ( context , routeId , routeNodeInfo , changeId ) ;
}
}
}
}
}
public void checkChangeAttrValue ( Context context , Integer index , String changeType , String changeId , String routeId , String routeNodeInfo ) throws FrameworkException {
boolean isFlag = false ;
if ( index = = 0 ) {
if ( "Change Action" . equals ( changeType ) ) {
isFlag = attrInputVerification ( context , changeId , "XP_ChangeAction_Ext.operate" ) ;
} else {
isFlag = attrInputVerification ( context , changeId , "XP_ChangeRequest_Ext.operate" ) ;
}
if ( ! isFlag ) {
MqlUtil . mqlCommand ( context , "notice $1" , "\u8bf7\u4e3a\u8425\u8fd0\u5ba1\u6279\u4eba\u586b\u9009\u503c" ) ;
throw new RuntimeException ( "\u8bf7\u4e3a\u8425\u8fd0\u5ba1\u6279\u4eba\u586b\u9009\u503c" ) ;
}
} else if ( index = = 1 ) {
if ( "Change Action" . equals ( changeType ) ) {
isFlag = attrInputVerification ( context , changeId , "XP_ChangeAction_Ext.quality" ) ;
} else {
isFlag = attrInputVerification ( context , changeId , "XP_ChangeRequest_Ext.quality" ) ;
}
if ( ! isFlag ) {
MqlUtil . mqlCommand ( context , "notice $1" , "\u8bf7\u4e3a\u8d28\u91cf\u5ba1\u6279\u4eba\u586b\u9009\u503c" ) ;
throw new RuntimeException ( "\u8bf7\u4e3a\u8d28\u91cf\u5ba1\u6279\u4eba\u586b\u9009\u503c" ) ;
}
} else if ( index = = 2 ) {
if ( "Change Action" . equals ( changeType ) ) {
isFlag = attrInputVerification ( context , changeId , "XP_ChangeAction_Ext.purchase" ) ;
} else {
isFlag = attrInputVerification ( context , changeId , "XP_ChangeRequest_Ext.purchase" ) ;
}
if ( ! isFlag ) {
MqlUtil . mqlCommand ( context , "notice $1" , "\u8bf7\u4e3a\u91c7\u8d2d\u5ba1\u6279\u4eba\u586b\u9009\u503c" ) ;
throw new RuntimeException ( "\u8bf7\u4e3a\u91c7\u8d2d\u5ba1\u6279\u4eba\u586b\u9009\u503c" ) ;
}
}
}
public Boolean attrInputVerification ( Context context , String changeId , String queryProperties ) throws FrameworkException {
String getAttrValue = "print bus " + changeId + " select attribute[" + queryProperties + "].value dump |" ;
LOGGER . info ( "getAttrValue ==> " + getAttrValue ) ;
String value = MqlUtil . mqlCommand ( context , getAttrValue ) ;
LOGGER . info ( " ====>attrValue " + value ) ;
if ( "" . equals ( value ) )
{
return false ;
}
return true ;
}
public List < String > getGroupId ( Context context ) {
String getReplaceInfo = "temp query bus Group * * where 'attribute[Title].value == " + OperatingUserGroup + " || attribute[Title].value == " + ProcurementUserGroup + " || attribute[Title].value == " + QualityUserGroup + "' select id dump |" ;
LOGGER . info ( "getReplaceId ==> " + getReplaceInfo ) ;
List < String > list = new ArrayList < > ( ) ;
try {
String replaceInfo = MqlUtil . mqlCommand ( context , getReplaceInfo ) ;
LOGGER . info ( "replaceInfo ==> " + replaceInfo ) ;
String [ ] replaceInfoSplit = replaceInfo . split ( "\n" ) ;
if ( replaceInfoSplit . length > 0 )
{
for ( String value : replaceInfoSplit )
{
String itemId = value . split ( "\\|" ) [ 3 ] ;
list . add ( itemId ) ;
LOGGER . info ( "itemId ==> " + itemId ) ;
}
}
} catch ( FrameworkException e ) {
throw new RuntimeException ( e ) ;
}
return list ;
}
public Map < String , List < String > > getCAAttrInfo ( Context context , String changeId ) {
Map < String , List < String > > map = new HashMap < > ( ) ;
try {
String caAttrInfo = getChangeAttrInfo ( context , changeId ) ;
if ( caAttrInfo . contains ( "|" ) & & ! "" . equals ( caAttrInfo ) ) {
String [ ] attrInfoSplit = caAttrInfo . split ( "\\|" ) ;
for ( int i = 0 ; i < attrInfoSplit . length ; i + + ) {
List < String > list = new ArrayList < > ( ) ;
LOGGER . info ( "attrInfoSplit[i] ==> " + attrInfoSplit [ i ] ) ;
if ( ! "" . equals ( attrInfoSplit [ i ] ) ) {
String publicAccountEmailInfo = attrInfoSplit [ i ] . split ( "_" ) [ 0 ] ;
String publicAccountInfo = attrInfoSplit [ i ] . split ( "_" ) [ 1 ] ;
LOGGER . info ( "publicAccountEmailInfo ==> " + publicAccountEmailInfo ) ;
LOGGER . info ( "publicAccountInfo ==> " + publicAccountInfo ) ;
String getPublicAccountInfoIdInfo = "" ;
if ( i = = 2 )
{
getPublicAccountInfoIdInfo = "temp query bus Person " + "PLM." + publicAccountInfo + " - select id dump |" ;
LOGGER . info ( "getPublicAccountInfoIdInfo ==> " + getPublicAccountInfoIdInfo ) ;
} else {
getPublicAccountInfoIdInfo = "temp query bus Person " + publicAccountInfo + ".PLM" + " - select id dump |" ;
LOGGER . info ( "getPublicAccountInfoIdInfo ==> " + getPublicAccountInfoIdInfo ) ;
}
String publicAccountIdInfo = MqlUtil . mqlCommand ( context , getPublicAccountInfoIdInfo ) ;
LOGGER . info ( "publicAccountIdInfo ==> " + publicAccountIdInfo ) ;
if ( ! "" . equals ( publicAccountIdInfo ) ) {
String publicAccountId = publicAccountIdInfo . split ( "\\|" ) [ 3 ] ;
LOGGER . info ( "=========> " + publicAccountId ) ;
list . add ( publicAccountEmailInfo ) ;
list . add ( publicAccountId ) ;
if ( i = = 0 & & attrInfoSplit [ i ] . contains ( "_" ) ) {
map . put ( "purchase" , list ) ;
} else if ( i = = 1 & & attrInfoSplit [ i ] . contains ( "_" ) ) {
map . put ( "quality" , list ) ;
} else if ( i = = 2 & & attrInfoSplit [ i ] . contains ( "_" ) ) {
map . put ( "operate" , list ) ;
}
LOGGER . info ( "=====> 11111111111" ) ;
}
}
}
}
} catch ( FrameworkException e ) {
throw new RuntimeException ( e ) ;
}
return map ;
}
public String getChangeAttrInfo ( Context context , String changeId ) throws FrameworkException {
String getChangeType = "print bus " + changeId + " select type dump |" ;
String changeType = MqlUtil . mqlCommand ( context , getChangeType ) ;
String getChangeInfo = "" ;
if ( "Change Action" . equals ( changeType ) ) {
getChangeInfo = "print bus " + changeId + " select attribute[XP_ChangeAction_Ext.purchase].value attribute[XP_ChangeAction_Ext.quality].value attribute[XP_ChangeAction_Ext.operate].value dump |" ;
LOGGER . info ( "getChangeInfo ==> " + getChangeInfo ) ;
} else {
getChangeInfo = "print bus " + changeId + " select attribute[XP_ChangeRequest_Ext.purchase].value attribute[XP_ChangeRequest_Ext.quality].value attribute[XP_ChangeRequest_Ext.operate].value dump |" ;
LOGGER . info ( "getChangeInfo ==> " + getChangeInfo ) ;
}
String changeAttrInfo = MqlUtil . mqlCommand ( context , getChangeInfo ) ;
return changeAttrInfo ;
}
public void sendMail ( Context context , String [ ] args ) throws Exception {
String inboxTaskId = args [ 0 ] ;
String relId = args [ 1 ] ;
System . out . println ( "===>" + inboxTaskId ) ;
System . out . println ( "===>" + relId ) ;
System . out . println ( "==========================" ) ;
String publicAccountEmail = "" ;
String getProjectType = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.type dump |" ;
String projectType = MqlUtil . mqlCommand ( context , getProjectType ) ;
if ( "Change Action" . equals ( projectType ) | | "Change Request" . equals ( projectType ) )
{
String getTaskTitle = "print bus " + inboxTaskId + " select attribute[Title] dump |" ;
String Title = MqlUtil . mqlCommand ( context , getTaskTitle ) ;
LOGGER . info ( "Title ==> " + Title ) ;
if ( ! "" . equals ( Title ) )
{
if ( Title . contains ( "\u751f\u4ea7" ) | | Title . contains ( "\u8d28\u91cf" ) | | Title . contains ( "\u91c7\u8d2d" ) )
{
String emailInfo = "" ;
boolean isFlag = false ;
if ( Title . contains ( "\u751f\u4ea7" ) ) {
String getObjInfo = "" ;
if ( "Change Action" . equals ( projectType ) ) {
getObjInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.attribute[XP_ChangeAction_Ext.operate] dump |" ;
} else {
getObjInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.attribute[XP_ChangeRequest_Ext.operate] dump |" ;
}
String objInfo = MqlUtil . mqlCommand ( context , getObjInfo ) ;
LOGGER . info ( "objInfo ==> " + objInfo ) ;
if ( ! "" . equals ( objInfo ) )
{
isFlag = true ;
String privatePersonInfo = objInfo . split ( "_" ) [ 0 ] + "@aeg-imc.com" ;
publicAccountEmail = "plm." + objInfo . split ( "_" ) [ 1 ] + "@aeg-imc.com" ;
LOGGER . info ( "privatePersonInfo ==> " + privatePersonInfo ) ;
LOGGER . info ( "publicAccountEmail ==> " + publicAccountEmail ) ;
emailInfo = privatePersonInfo ;
}
} else if ( Title . contains ( "\u8d28\u91cf" ) ) {
String getObjInfo = "" ;
if ( "Change Action" . equals ( projectType ) ) {
getObjInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.attribute[XP_ChangeAction_Ext.quality] dump |" ;
} else {
getObjInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.attribute[XP_ChangeRequest_Ext.quality] dump |" ;
}
String objInfo = MqlUtil . mqlCommand ( context , getObjInfo ) ;
LOGGER . info ( "objInfo ==> " + objInfo ) ;
if ( ! "" . equals ( objInfo ) & & objInfo . contains ( "_" ) )
{
isFlag = true ;
String privatePersonInfo = objInfo . split ( "_" ) [ 0 ] + "@aeg-imc.com" ;
publicAccountEmail = objInfo . split ( "_" ) [ 1 ] + ".plm" + "@aeg-imc.com" ;
LOGGER . info ( "privatePersonInfo ==> " + privatePersonInfo ) ;
LOGGER . info ( "publicAccountEmail ==> " + publicAccountEmail ) ;
emailInfo = privatePersonInfo ;
}
} else if ( Title . contains ( "\u91c7\u8d2d" ) ) {
String getObjInfo = "" ;
if ( "Change Action" . equals ( projectType ) ) {
getObjInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.attribute[XP_ChangeAction_Ext.purchase] dump |" ;
} else {
getObjInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.attribute[XP_ChangeRequest_Ext.purchase] dump |" ;
}
String objInfo = MqlUtil . mqlCommand ( context , getObjInfo ) ;
LOGGER . info ( "objInfo ==> " + objInfo ) ;
if ( ! "" . equals ( objInfo ) )
{
isFlag = true ;
String privatePersonInfo = objInfo . split ( "_" ) [ 0 ] + "@aeg-imc.com" ;
publicAccountEmail = objInfo . split ( "_" ) [ 1 ] + ".plm" + "@aeg-imc.com" ;
LOGGER . info ( "privatePersonInfo ==> " + privatePersonInfo ) ;
LOGGER . info ( "publicAccountEmail ==> " + publicAccountEmail ) ;
emailInfo = privatePersonInfo ;
}
}
LOGGER . info ( "isFlag ==> " + isFlag ) ;
if ( isFlag )
{
String itemInfo = "" ;
if ( "Change Action" . equals ( projectType ) ) {
String getItemInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.name from[Route Task].to.to[Object Route].from.attribute[Synopsis] from[Route Task].to.to[Object Route].from.description from[Route Task].to.owner from[Project Task].to.name dump |" ;
itemInfo = MqlUtil . mqlCommand ( context , getItemInfo ) ;
} else {
String getItemInfo = "print bus " + inboxTaskId + " select from[Route Task].to.to[Object Route].from.name from[Route Task].to.to[Object Route].from.attribute[Title] from[Route Task].to.to[Object Route].from.description from[Route Task].to.owner from[Project Task].to.name dump |" ;
itemInfo = MqlUtil . mqlCommand ( context , getItemInfo ) ;
}
LOGGER . info ( "itemInfo ==> " + itemInfo ) ;
if ( ! "" . equals ( itemInfo ) ) {
String [ ] splitInfo = itemInfo . split ( "\\|" ) ;
Map < String , String > map = new HashMap < > ( ) ;
LOGGER . info ( "splitInfo ==> " + splitInfo . length ) ;
if ( splitInfo . length = = 5 )
{
map . put ( "Synopsis" , splitInfo [ 1 ] ) ;
map . put ( "projectName" , splitInfo [ 0 ] ) ;
map . put ( "description" , splitInfo [ 2 ] ) ;
map . put ( "taskOwner" , splitInfo [ 3 ] ) ;
map . put ( "userName" , splitInfo [ 4 ] ) ;
map . put ( "publicAccountEmail" , publicAccountEmail ) ;
}
send ( emailInfo , map ) ;
}
}
}
}
}
}
public void send ( String emailInfo , Map < String , String > itemMap ) {
LOGGER . info ( "=============> + <=================" ) ;
LOGGER . info ( itemMap . get ( "description" ) ) ;
LOGGER . info ( itemMap . get ( "Synopsis" ) ) ;
Properties properties = new Properties ( ) ;
properties . put ( "mail.smtp.auth" , "true" ) ;
properties . put ( "mail.smtp.starttls.enable" , "true" ) ;
properties . put ( "mail.smtp.host" , SMTP_HOST ) ;
properties . put ( "mail.smtp.port" , SMTP_PORT ) ;
properties . put ( "mail.smtp.ssl.protocols" , "TLSv1.2" ) ;
Session session = Session . getInstance ( properties ,
new javax . mail . Authenticator ( ) {
protected PasswordAuthentication getPasswordAuthentication ( ) {
return new PasswordAuthentication ( SEND_EMAIL , SEND_PASSWORD ) ;
}
} ) ;
session . setDebug ( true ) ;
Message message = new MimeMessage ( session ) ;
try {
message . setFrom ( new InternetAddress ( SEND_EMAIL ) ) ;
message . setRecipients ( Message . RecipientType . TO , InternetAddress . parse ( emailInfo ) ) ;
//message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("1654607107@qq.com"));
String body = "<div style=\"text-align: center;margin-left:12px;margin-right: 12px;margin-top:100px;background-color:#005685;\n" +
" ;border-radius: 30px\">" +
" <div style=\"padding-top: 30px;padding-left: 50px;padding-right: 50px\">\n" +
" <p style=\"text-align: center;color:azure;font-size: xx-large\">" + itemMap . get ( "projectName" ) + "</p>\n" +
" </div>" +
" <div style=\"display: flex;justify-content: center;align-items: center\">\n" +
" <div style=\"padding-left: 30px;background-color: white;border-radius: 10px;height: 260px;min-width:400px;padding-top: 30px;\">\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u4efb\u52a1\u540d\u79f0: " + itemMap . get ( "taskName" ) + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u4efb\u52a1\u63cf\u8ff0: " + itemMap . get ( "description" ) + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u4efb\u52a1\u5206\u914d\u4eba: " + itemMap . get ( "taskOwner" ) + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u4efb\u52a1\u6267\u884c\u4eba: " + itemMap . get ( "userName" ) + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u5ba1\u6279\u8d26\u53f7\u4e3a: " + itemMap . get ( "publicAccountEmail" ) + "</p>\n" +
" <a href=\"https://plm.aegpm.com/3ddashboard\" style=\"font-size:medium\">查看任务</a>\n" +
" </div>\n" +
" </div>\n" +
" <div style=\" padding-top:10px;color: white;padding-left: 20px;padding-right: 20px\" >\n" +
" <p>\u672c\u90ae\u4ef6\u53ca\u6240\u6709\u9644\u4ef6\u4ec5\u4f9b\u6536\u4ef6\u5730\u5740\u4e2d\u7684\u4e2a\u4eba\u6216\u5b9e\u4f53\u4f7f\u7528\uff0c\u8fd9\u4e9b\u5185\u5bb9\u5747\u5c5e\u673a\u5bc6\u4fe1\u606f\u5e76\u6216\u8bbe\u6709\u6743\u9650</p>\n" +
" </div>\n" +
" <div style=\"display: flex;justify-content: center;align-items: center;margin-bottom: 50px\">\n" +
" <p style=\"text-align: left;margin-left:50px;margin-right: 50px;color:lightgray;font-size: small\">\u5982\u679c\u60a8\u4e0d\u662f\u4efb\u4f55\u6307\u5b9a\u7684\u6536\u4ef6\u4eba\u6216\u8bef\u6536\u5230\u672c\u90ae\u4ef6, <br>\n" +
" (i) \u60a8\u4e0d\u80fd\u9605\u8bfb\u3001\u6cc4\u6f0f\u6216\u590d\u5236\u672c\u90ae\u4ef6; <br>\n" +
" (ii) \u8bf7\u901a\u8fc7\u7535\u5b50\u90ae\u4ef6\u901a\u77e5\u60a8\u6536\u4ef6\u7684\u53d1\u4ef6\u4eba\u5e76\u5220\u9664\u672c\u90ae\u4ef6\u53ca\u6240\u6709\u9644\u4ef6; <br>\n" +
" (iii) \u5bf9\u4e8e\u56e0\u4f7f\u7528\u6216\u4f9d\u636e\u672c\u90ae\u4ef6\u800c\u5f15\u8d77\u7684\u4efb\u4f55\u635f\u5931\u6216\u635f\u5bb3, Dassault Systemes \u6982\u4e0d\u8d1f\u8d23\u6216\u627f\u62c5\u8d23\u4efb。</p>\n" +
" </div>\n" +
" </div>"
;
message . setSubject ( "subject" ) ;
message . setContent ( body , "text/html;charset=utf-8" ) ;
Transport . send ( message ) ;
} catch ( MessagingException e ) {
throw new RuntimeException ( ) ;
}
System . out . println ( "Email sent successfully!" ) ;
}
}