You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

469 lines
23 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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\u5bb3Dassault 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!");
}
}