package com.connor.jd.plm.action; import java.util.Arrays; import java.util.List; import com.connor.jd.plm.utils.JDMethodUtil; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.common.actions.AbstractAIFAction; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCProperty; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; public class DeleteItemRevisionAction extends AbstractAIFAction { private AbstractAIFApplication app; public DeleteItemRevisionAction(AbstractAIFApplication arg0, String arg1) { super(arg0, arg1); this.app = arg0; // TODO Auto-generated constructor stub } @Override public void run() { // TODO Auto-generated method stub TCSession session = (TCSession) app.getSession(); InterfaceAIFComponent[] targets = app.getTargetComponents(); String[] allow = JDMethodUtil.getPrefStrArray("connor_wl_type", session); String[] allow2 = JDMethodUtil.getPrefStrArray("connor_tz_type", session); String[] allow3 = JDMethodUtil.getPrefStrArray("jd2_wltz_Revise_allow", session); System.out.println("connor_wl_type===>" + Arrays.toString(allow)); System.out.println("connor_tz_type===>" + Arrays.toString(allow2)); System.out.println("jd2_wltz_Revise_allow===>" + Arrays.toString(allow3)); List pref = Arrays.asList(allow); List pref2 = Arrays.asList(allow2); List pref3 = Arrays.asList(allow3); for (InterfaceAIFComponent target : targets) { System.out.println(target.getType()); if (target instanceof TCComponentItemRevision) { if (!pref.contains(target.getType()) && !pref2.contains(target.getType()) && !pref3.contains(target.getType())) { try { MessageBox.post(target.getProperty("object_string") + "既不是物料也不是图纸,不执行删除", "提示", MessageBox.WARNING); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return; } TCComponentItemRevision rev = (TCComponentItemRevision) target; try { String loginUser = session.getUser().getProperty("object_string"); // String owningUser = rev.getProperty("owning_user"); // System.out.println("loginUser===>" + loginUser); // System.out.println("owningUser===>" + owningUser); boolean[] isAccess = session.getTCAccessControlService().checkPrivileges(rev.getItem(), new String[] { "WRITE", "DELETE" }); if (isAccess[0] && isAccess[1]) { TCComponentItem item = rev.getItem(); TCComponent[] released = item.getReleasedItemRevisions(); for (TCComponent comp : released) { if (comp.getUid().equals(rev.getUid())) { MessageBox.post(target.getProperty("object_string") + "无法删除,物料已经发布", "提示", MessageBox.WARNING); return; } } session.getUserService().call("bs_bypass", new Object[] { true }); System.out.println("rev uid===>" + rev.getUid()); AIFComponentContext[] aifs = rev.whereReferenced(); for (AIFComponentContext aif : aifs) { if (aif.getComponent() instanceof TCComponent) { TCComponent temp = (TCComponent) aif.getComponent(); if (temp.getUid().equals(rev.getItem().getUid())) { System.out.println("跳过对象"); continue; } System.out.println("引用者===>" + temp.getProperty("onject_string")); TCProperty[] tcProps = temp.getAllTCProperties(); for (TCProperty tcProp : tcProps) { if (tcProp.isReferenceType()) { if (tcProp.isNotArray()) { if (tcProp.getReferenceValue() != null && tcProp.getReferenceValue().getUid().equals(rev.getUid())) { System.out.println("关系===>" + tcProp.getPropertyName()); temp.cutOperation(tcProp.getPropertyName(), new TCComponent[] { rev }); } } else { TCComponent[] comps = tcProp.getReferenceValueArray(); for (TCComponent comp : comps) { if (comp.getUid().equals(rev.getUid())) { System.out.println("关系===>" + tcProp.getPropertyName()); temp.cutOperation(tcProp.getPropertyName(), new TCComponent[] { rev }); } } } } } } } // if (pref.contains(target.getType())) { // rev.cutOperation("TC_Is_Represented_By", rev.getRelatedComponents("TC_Is_Represented_By")); // } else { // rev.cutOperation("representation_for", rev.getRelatedComponents("representation_for")); // } rev.delete(); session.getUserService().call("bs_bypass", new Object[] { false }); MessageBox.post("删除成功", "提示", MessageBox.WARNING); } else { MessageBox.post(target.getProperty("object_string") + "无修改和删除权限", "提示", MessageBox.WARNING); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }