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.

218 lines
10 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.dassault_systemes.enovia.enterprisechangemgt.common.ChangeAction;
import com.matrixone.apps.domain.util.ContextUtil;
import com.matrixone.apps.domain.util.FrameworkException;
import com.matrixone.apps.domain.util.MapList;
import com.matrixone.apps.domain.util.MqlUtil;
import matrix.db.Context;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;
public class AegChange_mxJPO {
private static final Logger LOGGER = Logger.getLogger(AegChange_mxJPO.class.getName());
private static final SimpleDateFormat NEW_DATE_FORMAT=new SimpleDateFormat("yyyy-MM-dd",Locale.getDefault());
private static final SimpleDateFormat ORIGINAL_DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a", Locale.US);
public void getPersonInfo(Context context, String[] args) throws Exception {
String TitleValue = "";
String DateValue = "";
String ChangeActionId = "";
String PersonName = "";
String ChineseName = "";
String InboxTaskId = args[0];
String getObjectRouteType = "print bus " + InboxTaskId + " select from[Route Task].to.to[Object Route].from.type from[Route Task].to.to[Object Route].from.id dump | ";
String objectRouteType = MqlUtil.mqlCommand(context, getObjectRouteType);
LOGGER.info("isChangeAction === > " + objectRouteType);
String[] caInfo = objectRouteType.split("\\|");
if(caInfo.length == 2){
String isChangeAction = caInfo[0];
String caID = caInfo[1];
// 首先判断该变更类型是否为CA
if("Change Action".equals(isChangeAction)){
LOGGER.info("isChangeAction ===> " + isChangeAction);
LOGGER.info("caID ====> " + caID);
ChangeAction changeAction = new ChangeAction(caID);
//获取已实现的更改
MapList mapList = changeAction.getRealizedChanges(context);
Boolean isDrawingFlag = false;
//判断已实现的更改的类型有没有为 "Drawing" 的
for (int i = 0; i < mapList.size(); i++) {
Map map = (Map) mapList.get(i);
if ("Drawing".equals(map.get("type"))) {
isDrawingFlag = true;
break;
}
}
LOGGER.info("isDrawingFlag ===> " + isDrawingFlag);
if(isDrawingFlag){
// 获取数据为 : CA的ID 、 审批人的中文 、 该节点所属人 、 该节点实际完成时间 、 该节点的审批人
String getInfo = "print bus " + InboxTaskId + " select from[Route Task].to.to[Object Route].from.id attribute[Title] owner from[Route Task].to.from[Route Node].attribute[Actual Completion Date] from[Route Task].to.from[Route Node].attribute[Title] dump |";
String inboxInfo = MqlUtil.mqlCommand(context, getInfo);
LOGGER.info("inboxInfo ==> " + inboxInfo);
String[] splitInfo = inboxInfo.split("\\|");
if(splitInfo.length > 3){
ChangeActionId = splitInfo[0];
if(!splitInfo[1].isEmpty() && splitInfo[1].contains("@")){
TitleValue = splitInfo[1].split("@")[0];
}
if(!splitInfo[1].isEmpty() && !splitInfo[2].isEmpty()){
String Title = splitInfo[1];
PersonName = splitInfo[2];
// 这个逻辑稍微有点复杂总体就是通过Title 找到对应的 实际完成时间
for (int i = 3 + (splitInfo.length - 3)/2; i < splitInfo.length; i++) {
if(Title.equals(splitInfo[i])) {
DateValue = splitInfo[i-(splitInfo.length-3)/2];
break;
}
}
//getChineseName
String getChineseName = "temp query bus Person " + PersonName + " * select attribute[Title] dump |";
String PersonNameInfo = MqlUtil.mqlCommand(context, getChineseName);
String[] PersonNameInfoLength = PersonNameInfo.split("\\|");
if(PersonNameInfoLength.length == 4) {
ChineseName = PersonNameInfo.split("\\|")[3];
}else{
ChineseName = PersonName;
}
//Processing date format 进行时间格式的转换
try {
Date date = ORIGINAL_DATE_FORMAT.parse(DateValue);
DateValue = NEW_DATE_FORMAT.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
LOGGER.info("DateValue ==> " + DateValue);
LOGGER.info("ChineseName ==> " + ChineseName);
LOGGER.info("ChangeActionId ==> " + ChangeActionId);
LOGGER.info("TitleValue ==> " + TitleValue);
for (int i = 0; i < mapList.size(); i++) {
Map map = (Map) mapList.get(i);
String drawingId = (String) map.get("id");
if(! "Drawing".equals(map.get("type")))
{
continue;
}
//主要是判断设计者是否已经有了数据,有了数据之后就不进行操作剩余的赋值操作了
Boolean isFlag = getAttrDesignInfo(context, drawingId);
if(!isFlag){
String chineseName = getChineseName(context, drawingId);
String cnTime = getCNTime(context,drawingId);
updateAttrDesign(context,drawingId,chineseName,cnTime);
}
// 这个就是普通的数据赋值操作
if("\u6279\u51c6".equals(TitleValue))
{
updateAttr(context,drawingId,"XP_Drawing_Ext.approval",ChineseName,"XP_Drawing_Ext.approval_date",DateValue);
} else if ("\u8bbe\u8ba1".equals(TitleValue))
{
updateAttr(context,drawingId,"XP_Drawing_Ext.design",ChineseName,"XP_Drawing_Ext.design_date",DateValue);
} else if ("\u6821\u5bf9".equals(TitleValue))
{
updateAttr(context, drawingId, "XP_Drawing_Ext.check", ChineseName, "XP_Drawing_Ext.check_date", DateValue);
} else if ("\u6807\u51c6\u5316".equals(TitleValue))
{
updateAttr(context, drawingId, " XP_Drawing_Ext.standard", ChineseName, "XP_Drawing_Ext.standard_date", DateValue);
} else if ("\u5de5\u827a".equals(TitleValue))
{
updateAttr(context, drawingId, "XP_Drawing_Ext.technique", ChineseName, "XP_Drawing_Ext.technique_date", DateValue);
}
}
}
}
}
}
}
}
// 赋值操作
public void updateAttr(Context context,String drawingId, String personNameKey, String personNameValue, String attrDateKey, String arrDateValue) throws FrameworkException {
String updateAttrName = "modify bus " + drawingId + " " + personNameKey + " " + personNameValue + " " + attrDateKey + " " + arrDateValue ;
LOGGER.info("updateAttName === >" + updateAttrName);
ContextUtil.pushContext(context);
MqlUtil.mqlCommand(context,updateAttrName);
ContextUtil.popContext(context);
}
// 判断设计者是否有值
public Boolean getAttrDesignInfo(Context context, String drawingId) throws FrameworkException {
String getDesignInfo = "print bus " +drawingId + " select Attribute[XP_Drawing_Ext.design].value dump |";
String designInfo = MqlUtil.mqlCommand(context, getDesignInfo);
if(designInfo.isEmpty())
{
return false;
}
return true;
}
// 获取中文名
public String getChineseName(Context context, String drawingId) throws FrameworkException {
String getUsName = "print bus " + drawingId + " select owner dump |";
String usName = MqlUtil.mqlCommand(context, getUsName);
String getCnName = "temp query bus Person " + usName + " * select attribute[Title] dump |";
String getNameInfo = MqlUtil.mqlCommand(context, getCnName);
String cnName = getNameInfo.split("\\|")[3];
return cnName;
}
// 获取中国的时间
public String getCNTime(Context context, String drawingId) throws Exception {
String getUsTime = "print bus " + drawingId + " select originated dump |";
String usTime = MqlUtil.mqlCommand(context,getUsTime);
Date date = ORIGINAL_DATE_FORMAT.parse(usTime);
String cnTime = NEW_DATE_FORMAT.format(date);
return cnTime;
}
// 向设计者赋值 (仅仅只为设计)
public void updateAttrDesign(Context context, String drawingId, String drawingOwner, String drawingDate) throws FrameworkException{
String updateAttrName = "modify bus " + drawingId + " XP_Drawing_Ext.design " + drawingOwner + " XP_Drawing_Ext.design_date " + drawingDate ;
ContextUtil.pushContext(context);
MqlUtil.mqlCommand(context,updateAttrName);
ContextUtil.popContext(context);
}
}