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

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