TXO中的JPO

main
libowen 4 weeks ago
parent c40a4951a4
commit 3abe34db66

@ -0,0 +1,106 @@
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.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;
public class AegChange2_mxJPO {
private static final Logger LOGGER = Logger.getLogger(AegChange2_mxJPO.class.getName());
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";
private static final String EMAIL = "beiqi.xi@aeg-imc.com";
public void AegChangeNotify(Context context, String[] args) throws Exception {
String caId = args[0];
LOGGER.info("caId == > " + caId);
String getChangeTypeAndValue = "print bus " + caId + " select attribute[XP_ChangeAction_Ext.DistributionPersonList].value type dump |";
String changeTypeAndValue = MqlUtil.mqlCommand(context, getChangeTypeAndValue);
LOGGER.info("changeTypeAndValue ==> " + changeTypeAndValue);
String[] changInfoSplit = changeTypeAndValue.split("\\|");
LOGGER.info("changInfoSplit0 ==> " + changInfoSplit[0]);
LOGGER.info("changInfoSplit1 ==> " + changInfoSplit[1]);
if("Change Action".equals(changInfoSplit[1]) && !"".equals(changInfoSplit[0])){
String getCAInfo = "print bus " + caId + " select name attribute[Synopsis] description attribute[XP_ChangeAction_Ext.DistributionPersonList] attribute[Originator] dump |";
String caInfo = MqlUtil.mqlCommand(context, getCAInfo);
LOGGER.info("caInfo ==> " + caInfo);
String[] caInfoItem = caInfo.split("\\|");
Map<String, String> map = new HashMap<>();
map.put("projectName", caInfoItem[0]);
map.put("taskName", caInfoItem[1]);
map.put("description", caInfoItem[2]);
map.put("DocumentRecipient", caInfoItem[3]);
map.put("taskOwner", caInfoItem[4]);
send(map);
}
}
public void send(Map<String, String> itemMap){
LOGGER.info("=============> + <=================");
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(EMAIL));
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\u6240\u6709\u8005: " + itemMap.get("taskOwner") + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u6587\u4ef6\u63a5\u6536\u4eba: " + itemMap.get("DocumentRecipient") + "</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();
}
}
}

@ -0,0 +1,107 @@
import com.dassault_systemes.enovia.changerequest.impl.AffectedItem;
import com.dassault_systemes.enovia.enterprisechangemgt.common.ChangeAction;
import matrix.db.Context;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;
public class AegChange3_mxJPO {
private static final Logger LOGGER = Logger.getLogger(AegChange3_mxJPO.class.getName());
private static final String SEND_EMAIL = "aeg-scan@csge.com";
private static final String SEND_PASSWORD = "abcd-1234";
private static final String SMTP_HOST = "smtp.qiye.aliyun.com";
private static final String SMTP_PORT = "25";
private static final String EMAIL = "1654607107@qq.com";
public void AegChangeNotify(Context context, String[] args) throws Exception {
String caId = args[0];
LOGGER.info("caId == > " + caId);
// String getChangeType = "print bus " + caId + " select type dump |";
// String changeType = MqlUtil.mqlCommand(context, getChangeType);
//
// if("Change Action".equals(changeType)){
//
// String getCAInfo = "print bus " + caId + " select name attribute[Synopsis] description attribute[XP_ChangeAction_Ext.DistributionPersonList] attribute[Originator] dump |";
// String caInfo = MqlUtil.mqlCommand(context, getCAInfo);
//
// String[] caInfoItem = caInfo.split("\\|");
//
// }
ChangeAction changeAction = new ChangeAction("");
changeAction.getAffectedItems(context);
Map<String, String> map = new HashMap<>();
map.put("projectName", "123");
map.put("taskName", "123");
map.put("description", "123");
map.put("DocumentRecipient", "123");
map.put("taskOwner", "123");
send(map);
}
public void send(Map<String, String> itemMap){
LOGGER.info("=============> + <=================");
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(EMAIL));
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\u6240\u6709\u8005: " + itemMap.get("taskOwner") + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u6587\u4ef6\u63a5\u6536\u4eba: " + itemMap.get("DocumentRecipient") + "</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();
}
}
}

@ -0,0 +1,66 @@
import com.matrixone.apps.domain.util.FrameworkException;
import com.matrixone.apps.domain.util.MqlUtil;
import matrix.db.Context;
import java.util.logging.Logger;
public class AegChange4_mxJPO {
private static final Logger LOGGER = Logger.getLogger(AegChange2_mxJPO.class.getName());
private static final String purchaseGroup = "purchase.plm";
private static final String qualityGroup = "quality.plm";
private static final String operateGroupIBC = "plm.ibc";
private static final String operateGroupRMU = "plm.rmu";
private static final String operateGroupLV= "plm.lv";
public void CheckTrustee(Context context, String[] args) throws Exception {
String objId = args[0];
String personId = args[1];
String taskId = args[2];
LOGGER.info("objId ==> " + objId);
LOGGER.info("personId ==> " + personId);
LOGGER.info("taskId ==> " + taskId);
String getPersonName = "print bus " + personId + " select name dump |";
String personName = MqlUtil.mqlCommand(context, getPersonName);
LOGGER.info("personName ==> " + personName);
if(!personName.isEmpty()){
boolean isFlag = CheckIsPublicAccount(personName);
if(isFlag){
String getAssignedTask = "print bus " + taskId + " select to[Assigned Tasks].from.name dump |";
String assignedTasks = MqlUtil.mqlCommand(context, getAssignedTask);
LOGGER.info("assignedTasks ==> " + assignedTasks);
if(!assignedTasks.isEmpty()){
if(assignedTasks.contains("|")){
String[] assignedTaskItem = assignedTasks.split("\\|");
for(String item : assignedTaskItem){
if(CheckIsPublicAccount(item)){
NoticeInfo(context);
}
}
} else{
if (CheckIsPublicAccount(assignedTasks)) {
NoticeInfo(context);
}
}
}
}
}
}
public boolean CheckIsPublicAccount(String assignedName) throws FrameworkException {
if(assignedName.equals(purchaseGroup) || assignedName.equals(qualityGroup) || assignedName.equals(operateGroupIBC) || assignedName.equals(operateGroupLV) || assignedName.equals(operateGroupRMU)){
return true;
}
return false;
}
public void NoticeInfo(Context context) throws FrameworkException {
MqlUtil.mqlCommand(context,"notice $1","\u5df2\u6709\u516c\u5171\u8d26\u53f7\uff0c\u8bf7\u52ff\u591a\u6b21\u6dfb\u52a0");
throw new RuntimeException("\u5df2\u6709\u516c\u5171\u8d26\u53f7\uff0c\u8bf7\u52ff\u591a\u6b21\u6dfb\u52a0");
}
}

@ -0,0 +1,613 @@
import com.matrixone.apps.domain.DomainObject;
import com.matrixone.apps.domain.DomainRelationship;
import com.matrixone.apps.domain.util.ContextUtil;
import com.matrixone.apps.domain.util.FrameworkException;
import com.matrixone.apps.domain.util.MqlUtil;
import matrix.db.Context;
import matrix.db.JPO;
import matrix.util.MatrixException;
import matrix.util.StringList;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.Logger;
public class AegChange5_mxJPO {
private static final Logger LOGGER = Logger.getLogger(AegChange2_mxJPO.class.getName());
private static final SimpleDateFormat NEW_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINESE);
private static final String IBC = "plm.ibc";
private static final String LV = "plm.lv";
private static final String RMU = "plm.rmu";
private static final String PURCHASE = "purchase.plm";
private static final String QUALITY = "quality.PLM";
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";
String projectSpaceName = "";
StringList publicAccountList = null;
Map treeMap = null;
Map purchaseMap = null;
Map qualityMap = null;
Map ibcMap = null;
Map lvMap = null;
Map rmuMap = null;
public AegChange5_mxJPO(){
publicAccountList = new StringList();
publicAccountList.add("plm.ibc");
publicAccountList.add("plm.lv");
publicAccountList.add("plm.rmu");
publicAccountList.add("quality.PLM");
publicAccountList.add("purchase.plm");
treeMap = new TreeMap();
treeMap.put("","");
treeMap.put("li.su_Purchase","li.su_Purchase");
treeMap.put("feng.shen_Purchase","feng.shen_Purchase");
treeMap.put("chuanyong.hu_Purchase","chuanyong.hu_Purchase");
treeMap.put("dongmei.tang_Purchase","dongmei.tang_Purchase");
treeMap.put("lilin.fu_Purchase","lilin.fu_Purchase");
treeMap.put("xiaoyi.liu_Purchase","xiaoyi.liu_Purchase");
treeMap.put("wei.zhang_Quality","wei.zhang_Quality");
treeMap.put("xiangdong.yu_Quality","xiangdong.yu_Quality");
treeMap.put("dong.zhu_Quality","dong.zhu_Quality");
treeMap.put("ge.zhang_Quality","ge.zhang_Quality");
treeMap.put("lei.wang_Quality","lei.wang_Quality");
treeMap.put("ruifu.wu_Quality","ruifu.wu_Quality");
treeMap.put("xiaojun.wei_Quality","xiaojun.wei_Quality");
treeMap.put("xicheng.chen_Quality","xicheng.chen_Quality");
treeMap.put("lin.shen_Quality","lin.shen_Quality");
treeMap.put("vincent.zhao_IBC","vincent.zhao_IBC");
treeMap.put("yu.wang_IBC","yu.wang_IBC");
treeMap.put("shenfeng.xu_IBC","shenfeng.xu_IBC");
treeMap.put("hao.chen_LV","hao.chen_LV");
treeMap.put("qiang.he_LV","qiang.he_LV");
treeMap.put("baoqiang.chen_LV","baoqiang.chen_LV");
treeMap.put("yan.guo_LV","yan.guo_LV");
treeMap.put("delv.qi_LV","delv.qi_LV");
treeMap.put("fugao.he_RMU","fugao.he_RMU");
treeMap.put("yan.gu_RMU","yan.gu_RMU");
purchaseMap = new HashMap();
purchaseMap.put("li.su_Purchase","li.su_Purchase");
purchaseMap.put("feng.shen_Purchase","feng.shen_Purchase");
purchaseMap.put("chuanyong.hu_Purchase","chuanyong.hu_Purchase");
purchaseMap.put("dongmei.tang_Purchase","dongmei.tang_Purchase");
purchaseMap.put("lilin.fu_Purchase","lilin.fu_Purchase");
purchaseMap.put("xiaoyi.liu_Purchase","xiaoyi.liu_Purchase");
qualityMap = new HashMap();
qualityMap.put("wei.zhang_Quality","wei.zhang_Quality");
qualityMap.put("xiangdong.yu_Quality","xiangdong.yu_Quality");
qualityMap.put("dong.zhu_Quality","dong.zhu_Quality");
qualityMap.put("ge.zhang_Quality","ge.zhang_Quality");
qualityMap.put("lei.wang_Quality","lei.wang_Quality");
qualityMap.put("ruifu.wu_Quality","ruifu.wu_Quality");
qualityMap.put("xiaojun.wei_Quality","xiaojun.wei_Quality");
qualityMap.put("xicheng.chen_Quality","xicheng.chen_Quality");
qualityMap.put("lin.shen_Quality","lin.shen_Quality");
ibcMap = new HashMap();
ibcMap.put("vincent.zhao_IBC","vincent.zhao_IBC");
ibcMap.put("yu.wang_IBC","yu.wang_IBC");
ibcMap.put("shenfeng.xu_IBC","shenfeng.xu_IBC");
lvMap = new HashMap();
lvMap.put("hao.chen_LV","hao.chen_LV");
lvMap.put("qiang.he_LV","qiang.he_LV");
lvMap.put("baoqiang.chen_LV","baoqiang.chen_LV");
lvMap.put("yan.guo_LV","yan.guo_LV");
lvMap.put("delv.qi_LV","delv.qi_LV");
rmuMap = new HashMap();
rmuMap.put("fugao.he_RMU","fugao.he_RMU");
rmuMap.put("yan.gu_RMU","yan.gu_RMU");
}
public StringList isPublicAccountTaskEditable(Context context, String[] args) throws Exception {
Map programMap = JPO.unpackArgs(args);
List list = (List) programMap.get("objectList");
StringList stringList = new StringList();
for (int i = 0; i < list.size(); i++) {
Map map = (Map) list.get(i);
String itemId = (String) map.get("id");
String getTypeInfo = "print bus " + itemId + " select type current dump |";
String type = MqlUtil.mqlCommand(context, getTypeInfo);
if("Task".equals(type.split("\\|")[0]) && "Create".equals(type.split("\\|")[1])){
stringList.add("true");
} else {
stringList.add("false");
}
}
return stringList;
}
public StringList getRangeInfo(Context context, String[] args) throws Exception{
Map programMap = JPO.unpackArgs(args);
List list = (List) programMap.get("objectList");
StringList stringList = new StringList();
for (int i = 0; i < list.size(); i++) {
Map map = (Map) list.get(i);
String itemId = (String) map.get("id");
String getTypeInfo = "print bus " + itemId + " select type dump |";
String type = MqlUtil.mqlCommand(context, getTypeInfo);
if("Task".equals(type)){
String getPublcAccountTaskInfo = "print bus " + itemId + " select attribute[XP_Task_Ext.PublcAccountTask] dump |";
String publcAccountTaskInfo = MqlUtil.mqlCommand(context, getPublcAccountTaskInfo);
stringList.add(publcAccountTaskInfo);
} else {
stringList.add("");
}
}
return stringList;
}
public Map getPublcAccountTaskRange(Context context, String[] args) throws Exception {
return treeMap;
}
public void setPublicAccountTask(Context context, String[] args) throws Exception {
Map programMap = JPO.unpackArgs(args);
Map<String,String> paramMap = (Map) programMap.get("paramMap");
String newValue = paramMap.get("New Value");
String objId = paramMap.get("objectId");
if(!"".equals(newValue)){
String getTaskAssigns = "print bus " + objId + " select to[Assigned Tasks].from.name dump |";
String taskAssigns = MqlUtil.mqlCommand(context, getTaskAssigns);
LOGGER.info("taskAssigns ==> " + taskAssigns);
LOGGER.info("798798798");
if("".equals(taskAssigns)){
LOGGER.info("1321321312");
setPublicAccountForTask(context, objId, newValue);
}
// 循环判断 受托人中是否有公共账号的人
if(taskAssigns.contains("|")){
String[] taskAssignSplit = taskAssigns.split("\\|");
for (int i = 0; i < taskAssignSplit.length; i++) {
if (!isMatchPublicAccount(taskAssignSplit[i], newValue)) {
throw new MatrixException("\u516c\u5171\u8d26\u53f7\u4efb\u52a1\u6267\u884c\u4eba\u4e0e\u53d7\u6258\u4eba\u4e0d\u5339\u914d");
} else {
setPublicAccountForTask(context, objId, newValue);
}
}
} else {
LOGGER.info("isMatchPublicAccount(taskAssigns, newValue) ==> " + isMatchPublicAccount(taskAssigns, newValue));
if(!isMatchPublicAccount(taskAssigns, newValue)){
throw new MatrixException("\u516c\u5171\u8d26\u53f7\u4efb\u52a1\u6267\u884c\u4eba\u4e0e\u53d7\u6258\u4eba\u4e0d\u5339\u914d");
}
}
}
String updateItemInfo = "";
if("".equals(newValue)){
updateItemInfo = "modify bus " + objId + " XP_Task_Ext.PublcAccountTask ''";
}else{
updateItemInfo = "modify bus " + objId + " XP_Task_Ext.PublcAccountTask " + newValue;
}
MqlUtil.mqlCommand(context, updateItemInfo);
}
public int CheckTrustee(Context context, String[] args) throws Exception {
String objId = args[0];
String personId = args[1];
String taskId = args[2];
LOGGER.info("objId ==> " + objId);
LOGGER.info("personId ==> " + personId);
LOGGER.info("taskId ==> " + taskId);
int isFlag = 0;
String getPersonName = "print bus " + personId + " select name dump |";
String personName = null;
try {
personName = MqlUtil.mqlCommand(context, getPersonName);
LOGGER.info("personName ==> " + personName);
List<String> publicAccount = isPublicAccount(personName);
LOGGER.info("publicAccount ==> " + publicAccount.toString());
if("true".equals(publicAccount.get(0))){
String getTaskAssigns = "print bus " + taskId + " select to[Assigned Tasks].from.name dump |";
String taskAssigns = MqlUtil.mqlCommand(context, getTaskAssigns);
LOGGER.info("taskAssigns ==> " + taskAssigns);
if(!"".equals(taskAssigns))
{
if(taskAssigns.contains("|"))
{
String[] taskAssignSplit = taskAssigns.split("\\|");
for (int i = 0; i < taskAssignSplit.length; i++) {
if("true".equals(isPublicAccount(taskAssignSplit[i]).get(0)))
{
isFlag = 1;
}
}
} else{
String isFlags = isPublicAccount(taskAssigns).get(0);
LOGGER.info("isFlags ==> " + isFlags );
if ("true".equals(isPublicAccount(taskAssigns).get(0)))
{
isFlag = 1;
}
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if(isFlag == 1){
throw new MatrixException("\u4efb\u52a1\u7684\u53d7\u6258\u4eba\u4e0d\u53ef\u9009\u62e9\u4e24\u4e2a\u516c\u7528\u8d26\u53f7");
}
}
return isFlag;
}
/**
* ,
* @param context
* @param itemId Id
* @param newValue
* @throws FrameworkException
*/
public void setPublicAccountForTask(Context context, String itemId, String newValue) throws FrameworkException {
LOGGER.info("setPublicAccountForTask");
LOGGER.info("itemId ==> " + itemId);
LOGGER.info("newValue ==> " + newValue);
String publicAccount = newValue.split("_")[1];
LOGGER.info("publicAccount ==> " + publicAccount);
if("LV".equals(publicAccount)){
String getPersonId = "temp query bus Person plm.lv * select id dump |";
String personId = MqlUtil.mqlCommand(context, getPersonId);
setRelationship(context, itemId, personId.split("\\|")[3]);
} else if ("IBC".equals(publicAccount)) {
String getPersonId = "temp query bus Person plm.ibc * select id dump |";
String personId = MqlUtil.mqlCommand(context, getPersonId);
setRelationship(context, itemId, personId.split("\\|")[3]);
} else if ("RMU".equals(publicAccount)) {
String getPersonId = "temp query bus Person plm.rmu * select id dump |";
String personId = MqlUtil.mqlCommand(context, getPersonId);
setRelationship(context, itemId, personId.split("\\|")[3]);
} else if ("Purchase".equals(publicAccount)) {
String getPersonId = "temp query bus Person purchase.plm * select id dump |";
String personId = MqlUtil.mqlCommand(context, getPersonId);
setRelationship(context, itemId, personId.split("\\|")[3]);
} else if ("Quality".equals(publicAccount)) {
String getPersonId = "temp query bus Person quality.PLM * select id dump |";
String personId = MqlUtil.mqlCommand(context, getPersonId);
setRelationship(context, itemId, personId.split("\\|")[3]);
}
}
public void setRelationship(Context context, String itemId, String personId) throws FrameworkException {
LOGGER.info("setRelationship ==> 123");
LOGGER.info("itemId ==> " + itemId);
LOGGER.info("personId ==> " + personId);
DomainObject fromDomainObject = DomainObject.newInstance(context, personId);
DomainObject toDomainObject = DomainObject.newInstance(context, itemId);
DomainRelationship domainRelationship = DomainRelationship.connect(context, fromDomainObject, "Assigned Tasks", toDomainObject);
Map<String, String> map = new HashMap<>();
map.put("Assignee Role", "Task Assignee");
map.put("Percent Allocation", "100.0");
domainRelationship.setAttributeValues(context, map);
}
public void AEGAttributeTaskPublicAccountModify(Context context, String[] args) throws Exception {
String taskId = args[0];
String attrName = args[1];
String attrValue = args[2];
LOGGER.info("taskId ==> " + taskId);
LOGGER.info("attrName ==> " + attrName);
LOGGER.info("attrValue ==> " + attrValue);
int isFlag = 1;
if(!"".equals(attrValue)){
String getTaskAssigns = "print bus " + taskId + " select to[Assigned Tasks].from.name dump |";
String taskAssigns = MqlUtil.mqlCommand(context, getTaskAssigns);
LOGGER.info("taskAssigns ==> " + taskAssigns);
if("".equals(taskAssigns)){
setPublicAccountForTask(context, taskId, attrValue);
isFlag = 0;
} else {
if (taskAssigns.contains("|")){
String[] taskAssignSplit = taskAssigns.split("\\|");
for (int i = 0; i < taskAssignSplit.length; i++) {
LOGGER.info("taskAssignSplit ==> " + taskAssignSplit[i]);
LOGGER.info("=====>123<=====" + isPublicAccount(taskAssignSplit[i]).get(0));
if ("true".equals(isPublicAccount(taskAssignSplit[i]).get(0))) {
String publicAccountGroup = attrValue.split("_")[1].toLowerCase();
LOGGER.info("111==> "+ taskAssignSplit[i]);
LOGGER.info("222==> "+ publicAccountGroup);
if(taskAssignSplit[i].contains(publicAccountGroup)){
isFlag = 0;
break;
}
}
}
} else {
if(taskAssigns.contains(attrValue.split("_")[1].toLowerCase())){
LOGGER.info("99998888");
isFlag = 0;
} else {
LOGGER.info("999988887777666");
setPublicAccountForTask(context, taskId, attrValue);
isFlag = 0;
}
}
}
} else {
isFlag = 0;
}
LOGGER.info("====> " + isFlag);
if(isFlag == 1){
emxContextUtilBase_mxJPO.mqlError(context, "\u4efb\u52a1\u6267\u884c\u4eba\u4e0d\u662f\u5df2\u9009\u62e9\u7684\u516c\u5171\u8d26\u53f7\u90e8\u95e8");
throw new MatrixException("\u4efb\u52a1\u6267\u884c\u4eba\u4e0d\u662f\u5df2\u9009\u62e9\u7684\u516c\u5171\u8d26\u53f7\u90e8\u95e8");
}
}
public void AEGRelationshipAssignTaskDelete(Context context, String[] args) throws FrameworkException {
String objId = args[0];
String personId = args[1];
String taskId = args[2];
String personName = args[3];
LOGGER.info("objId ==> " + objId);
LOGGER.info("personId ==> " + personId);
LOGGER.info("taskId ==> " + taskId);
LOGGER.info("personName ==> " + personName);
String getAssignTasks = "print bus " + taskId + " select to[Assign Task].from.name dump |";
String assignTasks = MqlUtil.mqlCommand(context, getAssignTasks);
LOGGER.info("assignTasks ==> " + assignTasks);
if("".equals(assignTasks)){
String getPublicAccountAttrValue = "print bus " + taskId + " select attribute[XP_Task_Ext.PublcAccountTask].value dump |";
String publicAccountAttrValue = MqlUtil.mqlCommand(context, getPublicAccountAttrValue);
LOGGER.info("publicAccountAttrValue ==> " + publicAccountAttrValue);
if(!"".equals(publicAccountAttrValue)){
String updatePublicAccountAttrValue = "modify bus " + taskId + " XP_Task_Ext.PublcAccountTask ''";
ContextUtil.pushContext(context);
MqlUtil.mqlCommand(context, updatePublicAccountAttrValue);
ContextUtil.popContext(context);
}
}
}
public void AEGPolicyProjectTaskPromote(Context context, String[] args) throws Exception {
String objId = args[0];
LOGGER.info("objId ==> " + objId);
String getPublicAccountValue = "print bus " + objId + " select attribute[XP_Task_Ext.PublcAccountTask] dump |";
String publicAccount = MqlUtil.mqlCommand(context, getPublicAccountValue);
if(!"".equals(publicAccount)){
String emailInfo = publicAccount.split("_")[0];
String email = emailInfo + "@aeg-imc.com";
getProjectSpace(objId, context);
LOGGER.info("99999");
LOGGER.info(projectSpaceName);
String getTaskInfo = "print bus " + objId + " select name description attribute[Task Estimated Finish Date] owner dump |";
String taskInfo = MqlUtil.mqlCommand(context, getTaskInfo);
LOGGER.info("taskInfo ==> " + taskInfo);
String getAssignTask = "print bus " + objId + " select to[Assigned Tasks].from.name dump |";
String assignTasks = MqlUtil.mqlCommand(context, getAssignTask);
LOGGER.info("assignTasks ==> " + assignTasks);
String planFinishTimeInfo = taskInfo.split("\\|")[2];
LOGGER.info("planFinishTimeInfo ==> " + planFinishTimeInfo);
String planFinishTime = taskInfo.split("\\|")[2];
if(!"".equals(planFinishTimeInfo)) {
SimpleDateFormat inputFormat = new SimpleDateFormat("M/d/yyyy h:mm:ss a", Locale.ENGLISH);
try {
Date date = inputFormat.parse(planFinishTime);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy\u5e74MM\u6708dd\u65e5 HH:mm:ss", Locale.SIMPLIFIED_CHINESE);
planFinishTime = outputFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
LOGGER.info("planFinishTime ==> " + planFinishTime);
Map<String, String> map = new TreeMap<>();
map.put("name" , taskInfo.split("\\|")[0]);
map.put("description" , taskInfo.split("\\|")[1]);
map.put("taskPlanFinishDate" , taskInfo.split("\\|")[2]);
map.put("owner" , taskInfo.split("\\|")[3]);
map.put("taskExecutor" , assignTasks);
map.put("projectName" , projectSpaceName);
map.put("planFinishTime" , planFinishTime);
LOGGER.info("map ==> " + map.toString());
send(email, map);
}
}
public void getProjectSpace (String taskId, Context context) throws Exception {
String getUpToLevelType = "print bus " + taskId + " select to[SubTask].from.id to[SubTask].from.Type to[SubTask].from.Name dump |";
String upToLevelInfo = MqlUtil.mqlCommand(context, getUpToLevelType);
LOGGER.info("upToLevelInfo ==> " + upToLevelInfo);
if(!"".equals(upToLevelInfo)) {
String Type = upToLevelInfo.split("\\|")[1];
if ("Project Space".equals(Type)) {
projectSpaceName = upToLevelInfo.split("\\|")[2];
} else {
getProjectSpace(upToLevelInfo.split("\\|")[0], context);
}
}
}
/**
*
* truefalse
* @param taskAssign
* @param taskAssign
* @param newValue
* @return
*/
public Boolean isMatchPublicAccount(String taskAssign, String newValue){
if(IBC.equals(taskAssign)){
return ibcMap.containsValue(newValue);
} else if (LV.equals(taskAssign)) {
return lvMap.containsValue(newValue);
} else if (RMU.equals(taskAssign)) {
return rmuMap.containsValue(newValue);
} else if (PURCHASE.equals(taskAssign)) {
return purchaseMap.containsValue(newValue);
} else if (QUALITY.equals(taskAssign)) {
return qualityMap.containsValue(newValue);
}
return true;
}
/**
*
* @param taskAssign
* @return
*/
public List<String> isPublicAccount(String taskAssign){
List<String> list = new ArrayList<>();
if(IBC.equals(taskAssign)){
list.add("true");
list.add("ibc");
return list;
} else if (LV.equals(taskAssign)) {
list.add("true");
list.add("lv");
return list;
} else if (RMU.equals(taskAssign)) {
list.add("true");
list.add("rmu");
return list;
} else if (PURCHASE.equals(taskAssign)) {
list.add("true");
list.add("purchase");
return list;
} else if (QUALITY.equals(taskAssign)) {
list.add("true");
list.add("quality");
return list;
}
list.add("false");
list.add("");
return list;
}
public void send(String emailInfo, Map<String, String> itemMap){
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("name") + "</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\">" + "\u9879\u76ee\u540d\u79f0 : " + itemMap.get("projectName") + "</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("owner") + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u4efb\u52a1\u6267\u884c\u4eba : " + itemMap.get("taskExecutor") + "</p>\n" +
" <p style=\"text-align: left;color: grey;font-size:large\">" + "\u8ba1\u5212\u5b8c\u6210\u65e5\u671f : " + itemMap.get("planFinishTime") + "</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!");
}
}
Loading…
Cancel
Save