Commit abb72b07 authored by shyWang's avatar shyWang

PDM前端改造

基线相关、副本接口抽取
parent 0e9eb478
......@@ -7,6 +7,7 @@ import com.yonde.basedata.search.SearchQueryCondition;
import com.yonde.basedata.service.BaseSearchService;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.lc.LifecycleTemplateVO;
import com.yonde.change.service.DXChangeOrderService;
import com.yonde.common.ObjectsUtil;
import com.yonde.part.vo.DxPartDescribeLinkVO;
import com.yonde.part.vo.DxPartReferenceLinkVO;
......@@ -57,6 +58,21 @@ public class AbstractBaseController {
}
}
@GetMapping({"/version/getWorkingCopy/{objId}"})
//@ApiOperation("获取副本")
public IdVO getWorkingCopy(@PathVariable Long objId, @RequestParam(value = "id", required = false) Long id, HttpServletRequest request) {
IdVO idVO = null;
try {
if (ObjectsUtil.isNull(objId) || objId == 0) {
objId = id;
}
idVO = BaseSearchService.getWorkingCopy(objId);
} catch (Exception e) {
e.printStackTrace();
}
return idVO;
}
@DeleteMapping({"/batch/{ids}/{type}"})// id,id2,id3 linkId
public ApiResult deleteDxPartUsageLink(@PathVariable("ids") String ids, @PathVariable("type") String type) {
try {
......
......@@ -2,6 +2,7 @@ package com.yonde.basedata.search;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.vo.*;
import com.yonde.baseline.vo.DxBaselineVO;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.change.vo.DxChangeAfterDataVo;
import com.yonde.change.vo.DxReportedAgainstVo;
......@@ -26,6 +27,8 @@ import wt.part.WTPartMaster;
import wt.query.SearchCondition;
import wt.util.WTAttributeNameIfc;
import wt.vc.Iterated;
import wt.vc.baseline.Baseline;
import wt.vc.baseline.ManagedBaseline;
import wt.vc.views.ViewReference;
import java.util.ArrayList;
......@@ -59,6 +62,8 @@ public class SearchOperatorEnumUtil {
public static final Map<String, String> changeSearchItemMap = new HashMap();// 变更搜索条件
public static final Map<String, String> baselineSearchItemMap = new HashMap();// 基线搜索条件
public static final Map<Class<?>, Map<String, String>> typeSearchItemMap = new HashMap();// 类型搜索条件映射
public static final Map<Class<?>, String> typeItemMap = new HashMap();// 类型映射
......@@ -79,6 +84,7 @@ public class SearchOperatorEnumUtil {
initPartItemMap();
initDocItemMap();
initChangeItemMap();
initBaselineItemMap();
initTypeItemMap();
initTypeMap();
......@@ -94,6 +100,7 @@ public class SearchOperatorEnumUtil {
oidPrefixList.add("OR:wt.change2.WTChangeRequest2:");
oidPrefixList.add("OR:wt.change2.WTChangeIssue:");
oidPrefixList.add("OR:wt.vc.baseline.ManagedBaseline:");
oidPrefixList.add("OR:wt.epm.EPMDocument:");
}
public static void initViewMap() {
......@@ -111,6 +118,7 @@ public class SearchOperatorEnumUtil {
typeMap.put("DxDeviation", WTChangeIssue.class);
typeMap.put("DxProblemReport", WTChangeIssue.class);
typeMap.put("DxWaver", WTChangeIssue.class);
typeMap.put("DxBaseline", ManagedBaseline.class);
}
public static void initTypePrefixMap() {
......@@ -159,6 +167,7 @@ public class SearchOperatorEnumUtil {
typeItemMap.put(DxReportedAgainstVo.class, "com.yonde.dcs.cmt.common.entity.vo.DxReportedAgainstVo");
typeItemMap.put(DxChangeAffectedDataVo.class, "com.yonde.dcs.cmt.common.entity.vo.DxChangeAffectedDataVo");
typeItemMap.put(DxChangeAfterDataVo.class, "com.yonde.dcs.cmt.common.entity.vo.DxChangeAfterDataVo");
typeItemMap.put(DxBaselineVO.class, "com.yonde.dcs.xbom.common.entity.vo.DxBaselineVO");
//TODO add
}
......@@ -202,6 +211,20 @@ public class SearchOperatorEnumUtil {
}
public static void initBaselineItemMap() {
baselineSearchItemMap.put(DX_ID, "thePersistInfo.theObjectIdentifier.id");
baselineSearchItemMap.put(DX_NUMBER, ManagedBaseline.NUMBER);
baselineSearchItemMap.put(DX_NAME, ManagedBaseline.NAME);
baselineSearchItemMap.put(DX_STATE, ManagedBaseline.LIFE_CYCLE_STATE);
baselineSearchItemMap.put("createTime", ManagedBaseline.CREATE_TIMESTAMP);
baselineSearchItemMap.put("modifyTime", ManagedBaseline.MODIFY_TIMESTAMP);
baselineSearchItemMap.put(DX_MASTER_ID, "thePersistInfo.theObjectIdentifier.id");
//基线类型映射
typeSearchItemMap.put(ManagedBaseline.class, baselineSearchItemMap);
}
public static void initChangeItemMap() {
changeSearchItemMap.put(DX_ID, "thePersistInfo.theObjectIdentifier.id");
changeSearchItemMap.put(DX_NUMBER, WTChangeOrder2.NUMBER);
......@@ -209,7 +232,7 @@ public class SearchOperatorEnumUtil {
changeSearchItemMap.put(DX_STATE, WTChangeOrder2.LIFE_CYCLE_STATE);
changeSearchItemMap.put("createTime", WTChangeOrder2.CREATE_TIMESTAMP);
changeSearchItemMap.put("modifyTime", WTChangeOrder2.MODIFY_TIMESTAMP);
changeSearchItemMap.put(DX_MASTER_ID, "thePersistInfo.theObjectIdentifier.id");
//更改类型映射
typeSearchItemMap.put(WTChangeOrder2.class, changeSearchItemMap);
typeSearchItemMap.put(WTChangeRequest2.class, changeSearchItemMap);
......
......@@ -2,25 +2,31 @@ package com.yonde.basedata.service;
import com.yonde.basedata.data.DxPageImpl;
import com.yonde.basedata.entity.api.ApiResult;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.search.SearchOperatorEnumUtil;
import com.yonde.basedata.search.SearchQueryCondition;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.ObjFileLinkVO;
import com.yonde.baseline.vo.DxBaselineVO;
import com.yonde.change.service.DXChangeOrderService;
import com.yonde.change.vo.ecn.DxChangeNoticeVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
import com.yonde.change.vo.pr.DxProblemReportVo;
import com.yonde.common.*;
import com.yonde.doc.vo.DxDocumentVO;
import com.yonde.part.service.DxPartService;
import com.yonde.part.vo.DxPart;
import com.yonde.part.vo.DxPartVO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import wt.change2.WTChangeIssue;
import wt.change2.WTChangeOrder2;
import wt.change2.WTChangeRequest2;
import wt.content.ApplicationData;
import wt.content.ContentHolder;
import wt.content.ContentRoleType;
import wt.doc.WTDocument;
import wt.epm.EPMDocument;
import wt.fc.PagingQueryResult;
import wt.fc.WTObject;
import wt.log4j.LogR;
......@@ -31,6 +37,8 @@ import wt.session.SessionContext;
import wt.session.SessionHelper;
import wt.session.SessionServerHelper;
import wt.util.WTProperties;
import wt.vc.baseline.ManagedBaseline;
import wt.vc.wip.WorkInProgressHelper;
import java.io.File;
import java.util.ArrayList;
......@@ -49,17 +57,60 @@ public class BaseSearchService <V extends IdVO> implements RemoteAccess {
return null;
}
public IdVO getWorkingCopy(Long id) throws Exception {
WTObject wtObjectByOid = RfUtil.getWTObjectByOid(id + "");
if (wtObjectByOid instanceof WTDocument) {
WTDocument doc = (WTDocument) wtObjectByOid;
public static IdVO getWorkingCopy(Long id) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (IdVO) RemoteMethodServer.getDefault().invoke("getWorkingCopy", BaseSearchService.class.getName(), null,
new Class[] { Long.class },
new Object[] { id });
}
CommonUtil.initSessionContext(null);
IdVO idVO = null;
WTObject wtObjectById = RfUtil.getWTObjectById(id);
if (wtObjectById instanceof WTDocument) {
WTDocument doc = (WTDocument) wtObjectById;
WTDocument workingCopyOfDoc = DocUtil.getWorkingCopyOfDoc(doc);
DxDocumentVO dxDocumentVO = new DxDocumentVO(workingCopyOfDoc);
return dxDocumentVO;
idVO = new DxDocumentVO(workingCopyOfDoc);
return idVO;
}
if (wtObjectById instanceof WTPart) {
WTPart partById = (WTPart) wtObjectById;
if (CommonUtil.isCheckedOut(partById)) {
WTPart partByIdCp = (WTPart) CommonUtil.getWorkingCopyVersion(partById);
logger.error("getCopyOfPart ====" + partByIdCp);
DxPartVO dxPartVO = new DxPartVO(partByIdCp);
if (ObjectsUtil.isNull(dxPartVO.getLocker())) {
logger.error("dxPartVO.getLocker() ====" + dxPartVO.getLocker());
dxPartVO.setLockerVO(partById);
}
idVO = dxPartVO;
} else {
idVO = new DxPartVO(partById);
}
return idVO;
}
if (wtObjectByOid instanceof WTPart) {
if (wtObjectById instanceof WTChangeOrder2) {
idVO = new DxChangeNoticeVo((WTChangeOrder2) wtObjectById);
return idVO;
}
if (wtObjectById instanceof WTChangeRequest2) {
idVO = new DxChangeRequestVo((WTChangeRequest2) wtObjectById);
return idVO;
}
if (wtObjectById instanceof WTChangeIssue) {
idVO = new DxProblemReportVo((WTChangeIssue) wtObjectById);
return idVO;
}
if (wtObjectById instanceof ManagedBaseline) {
ManagedBaseline baseline = (ManagedBaseline) wtObjectById;
idVO = new DxBaselineVO(baseline);
return idVO;
}
if (wtObjectById instanceof EPMDocument) {
}
// TODO 其他类型
return null;
}
......
package com.yonde.baseline.controller;
import com.alibaba.fastjson.JSON;
import com.yonde.basedata.controller.AbstractBaseController;
import com.yonde.basedata.entity.api.ApiResult;
import com.yonde.basedata.vo.RevisionControlledVO;
import com.yonde.baseline.service.DxBaselineService;
import com.yonde.baseline.vo.DxBaselineVO;
import com.yonde.common.ObjectsUtil;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
public class DxBaselineController extends AbstractBaseController {
//@ApiOperation("获取基线成员矩阵")
@PostMapping({"/getMemberMatrix"})
public ApiResult getMemberMatrix(@RequestBody Long[] ids) {
//return ApiResult.ok(this.service.getMemberMatrix(ids));
return null;
}
//@ApiOperation("通过基线成员获取基线列表")
@PostMapping({"/findMemberLink"})
public ApiResult findMemberLink(@RequestBody RevisionControlledVO member) {
//return ApiResult.ok(this.service.findMemberLink((IdOnlyVO)member));
return null;
}
//@ApiOperation("基线冻结")
@PostMapping({"/frozen/{id}"})
public ApiResult frozen(@PathVariable("id") Long id) {
//return ApiResult.ok(this.service.frozen(id));
return null;
}
//@ApiOperation("基线解冻")
@PostMapping({"/unFrozen/{id}"})
public ApiResult unFrozen(@PathVariable("id") Long id) {
//return ApiResult.ok(this.service.unFrozen(id));
return null;
}
//保存基线
@PostMapping({"recursion"})
public ApiResult recursion(@RequestBody Map entity, HttpServletRequest request) {
try {
String jsonString = JSON.toJSONString(entity);
DxBaselineVO entityVO = JSON.parseObject(jsonString, DxBaselineVO.class);
String portUserName = request.getHeader("portUserName");
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("MODIFY")) {
//更新link
entityVO = DxBaselineService.updateBaseline(entityVO, portUserName);
} else {
entityVO = DxBaselineService.createBaseline(entityVO, portUserName);
}
return ApiResult.ok(entityVO);
} catch (Exception e) {
e.printStackTrace();
return ApiResult.error("501", e.getCause().getLocalizedMessage(), e);
}
}
}
package com.yonde.baseline.service;
import com.yonde.baseline.vo.DxBaselineMemberVO;
import com.yonde.baseline.vo.DxBaselineVO;
import com.yonde.common.*;
import com.yonde.context.vo.DxContextVO;
import com.yonde.doc.vo.DxDocumentVO;
import com.yonde.part.vo.DxPartVO;
import org.apache.commons.collections.CollectionUtils;
import wt.doc.WTDocument;
import wt.epm.EPMDocument;
import wt.fc.IdentityHelper;
import wt.fc.Persistable;
import wt.fc.QueryResult;
import wt.fc.WTObject;
import wt.fc.collections.WTCollection;
import wt.fc.collections.WTHashSet;
import wt.inf.container.WTContainer;
import wt.method.RemoteAccess;
import wt.method.RemoteMethodServer;
import wt.part.WTPart;
import wt.pom.Transaction;
import wt.session.SessionServerHelper;
import wt.util.WTException;
import wt.vc.baseline.BaselineHelper;
import wt.vc.baseline.ManagedBaseline;
import wt.vc.baseline.ManagedBaselineIdentity;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class DxBaselineService implements RemoteAccess {
public static DxBaselineVO createBaseline(DxBaselineVO baselineVO, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxBaselineVO) RemoteMethodServer.getDefault().invoke("createBaseline", DxBaselineService.class.getName(), null,
new Class[] { DxBaselineVO.class, String.class},
new Object[] { baselineVO, userName});
}
Transaction ts = null;
CommonUtil.initSessionContext(userName);
DxBaselineVO dxBaselineVO = null;
boolean enforced = SessionServerHelper.manager.setAccessEnforced(false);
try {
ts = new Transaction();
ts.start();
WTContainer container = null;
DxContextVO dxContext = baselineVO.getDxContext();
if (ObjectsUtil.nonNull(dxContext)) {
String contextName = dxContext.getName();
container = ContainerUtil.getContainerByName(contextName);
}
if (ObjectsUtil.isNull(container)) {
throw new WTException("上下文不可为空!");
}
ManagedBaseline baseline = BaseLineUtil.createBaseline(baselineVO.getSubTypeName(), baselineVO.getName(), baselineVO.getNumber(), container);
//添加基线对象
List<DxBaselineMemberVO> baselineMembers = baselineVO.getBaselineMembers();
if (CollectionUtils.isNotEmpty(baselineMembers)) {
WTCollection collectDocuments = new WTHashSet();
for (DxBaselineMemberVO member : baselineMembers) {
Long id = member.getTarget().getId();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
collectDocuments.add(wtObjectById);
}
BaselineHelper.service.addToBaseline(collectDocuments, baseline);
}
//更新软属性
if (ObjectsUtil.nonNull(baselineVO.getDynamicAttrs())) {
IBAUtil.forceSetIBAValues(baseline, baselineVO.getDynamicAttrs());
}
dxBaselineVO = new DxBaselineVO(baseline);
ts.commit();
ts = null;
} finally {
if (ObjectsUtil.nonNull(ts)) {
ts.rollback();
}
SessionServerHelper.manager.setAccessEnforced(enforced);
}
return dxBaselineVO;
}
public static DxBaselineVO updateBaseline(DxBaselineVO baselineVO, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxBaselineVO) RemoteMethodServer.getDefault().invoke("updateBaseline", DxBaselineService.class.getName(), null,
new Class[] { DxBaselineVO.class, String.class},
new Object[] { baselineVO, userName});
}
Transaction ts = null;
CommonUtil.initSessionContext(userName);
ManagedBaseline baseline = null;
DxBaselineVO dxBaselineVO = null;
boolean enforced = SessionServerHelper.manager.setAccessEnforced(false);
try {
ts = new Transaction();
ts.start();
if (ObjectsUtil.nonNull(baselineVO.getId())) {
WTObject objectById = RfUtil.getWTObjectById(baselineVO.getId());
if (ObjectsUtil.nonNull(objectById)) {
baseline = (ManagedBaseline) objectById;
}
}
if (ObjectsUtil.isNull(baseline)) {
throw new WTException("编辑失败:基线不存在!");
}
ManagedBaselineIdentity identificationObject = (ManagedBaselineIdentity)baseline.getIdentificationObject();
identificationObject.setName(baselineVO.getName());
IdentityHelper.service.changeIdentity(baseline, identificationObject); // 重命名名称
dxBaselineVO = new DxBaselineVO(baseline);
//更新基线对象
QueryResult items = BaselineHelper.service.getBaselineItems(baseline);
Vector vector = items.getObjectVector().getVector();
//删除基线对象
BaselineHelper.service.removeFromBaseline( vector,baseline);
List<DxBaselineMemberVO> baselineMembers = baselineVO.getBaselineMembers();
if (CollectionUtils.isNotEmpty(baselineMembers)) {
WTCollection collectDocuments = new WTHashSet();
for (DxBaselineMemberVO member : baselineMembers) {
Long id = member.getTarget().getId();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
collectDocuments.add(wtObjectById);
}
BaselineHelper.service.addToBaseline(collectDocuments, baseline);
}
//更新软属性
if (ObjectsUtil.nonNull(baselineVO.getDynamicAttrs())) {
IBAUtil.forceSetIBAValues(baseline, baselineVO.getDynamicAttrs());
}
ts.commit();
ts = null;
} finally {
if (ObjectsUtil.nonNull(ts)) {
ts.rollback();
}
SessionServerHelper.manager.setAccessEnforced(enforced);
}
return dxBaselineVO;
}
public static void buildDxBaselineMembers(DxBaselineVO baselineVO) throws Exception {
Long id = baselineVO.getId();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
if (ObjectsUtil.nonNull(wtObjectById)) {
ManagedBaseline baseline = (ManagedBaseline) wtObjectById;
DxBaselineVO dxBaselineVO = buildDxBaseline(baseline);
baselineVO.setBaselineMembers(dxBaselineVO.getBaselineMembers());
}
}
public static DxBaselineVO buildDxBaseline(ManagedBaseline baseline) throws Exception {
DxBaselineVO dxBaselineVO = new DxBaselineVO(baseline);
QueryResult baselineItems = BaselineHelper.service.getBaselineItems(baseline);
List<DxBaselineMemberVO> memberVOList = new ArrayList<DxBaselineMemberVO>();
while (baselineItems.hasMoreElements()) {
Persistable obj = (Persistable) baselineItems.nextElement();
if (obj instanceof WTPart) {
DxPartVO dxPartVO = new DxPartVO((WTPart) obj);
DxBaselineMemberVO memberVO = new DxBaselineMemberVO(dxBaselineVO, dxPartVO);
memberVOList.add(memberVO);
continue;
}
if (obj instanceof WTDocument) {
DxDocumentVO dxDocumentVO = new DxDocumentVO((WTDocument) obj);
DxBaselineMemberVO memberVO = new DxBaselineMemberVO(dxBaselineVO, dxDocumentVO);
memberVOList.add(memberVO);
continue;
}
if (obj instanceof EPMDocument) {
//TODO
}
}
dxBaselineVO.setBaselineMembers(memberVOList);
return dxBaselineVO;
}
}
package com.yonde.baseline.vo;
import com.yonde.basedata.vo.RevisionControlledVO;
import java.io.Serializable;
public class DxBaselineMemberVO implements Serializable {
private DxBaselineVO source;
private RevisionControlledVO target;
private Long sourceId;
private String sourceIdType;
private Long targetId;
private String targetIdType;
public DxBaselineMemberVO() {
}
public DxBaselineMemberVO(DxBaselineVO source, RevisionControlledVO target) {
this.source = source;
this.sourceId = source.getId();
this.sourceIdType = source.getSubTypeName();
this.target = target;
this.targetId = target.getId();
this.targetIdType = target.getSubTypeName();
}
public DxBaselineVO getSource() {
return source;
}
public void setSource(DxBaselineVO source) {
this.source = source;
}
public RevisionControlledVO getTarget() {
return target;
}
public void setTarget(RevisionControlledVO target) {
this.target = target;
}
public Long getSourceId() {
return sourceId;
}
public void setSourceId(Long sourceId) {
this.sourceId = sourceId;
}
public String getSourceIdType() {
return sourceIdType;
}
public void setSourceIdType(String sourceIdType) {
this.sourceIdType = sourceIdType;
}
public Long getTargetId() {
return targetId;
}
public void setTargetId(Long targetId) {
this.targetId = targetId;
}
public String getTargetIdType() {
return targetIdType;
}
public void setTargetIdType(String targetIdType) {
this.targetIdType = targetIdType;
}
}
package com.yonde.baseline.vo;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.vo.DxOrganizationVO;
import com.yonde.basedata.vo.IdVO;
import com.yonde.common.IBAHelper;
import com.yonde.common.ObjectsUtil;
import com.yonde.context.vo.DxContextVO;
import wt.org.WTOrganization;
import wt.type.ClientTypedUtility;
import wt.util.WTException;
import wt.vc.baseline.ManagedBaseline;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Locale;
public class DxBaselineVO extends IdVO implements Serializable {
private List<DxBaselineMemberVO> baselineMembers;
private Boolean frozenState;
private String name;
private String number;
private String state;
private Long versionId;
private DxContextVO dxContext;
private Long dxContextId;
private DxOrganizationVO dxOrganization;
private Long dxOrganizationId;
private String dxOrganizationIdType;
public DxBaselineVO() {
}
public DxBaselineVO(ManagedBaseline baseline) throws WTException, RemoteException, InvocationTargetException {
super(baseline);
this.versionId = this.id;
this.state = baseline.getState().getState().toString();
this.frozenState = baseline.isDirty();
this.name = baseline.getName();
this.number = baseline.getNumber();
// 获取基线对象
WTOrganization organization = baseline.getContainer().getOrganization();
if (ObjectsUtil.nonNull(organization)) {
this.setDxOrganization(new DxOrganizationVO(organization));
}
this.setDxContext(new DxContextVO(baseline.getContainer()));
this.setModifier(new DxUserVO(baseline.getCreator().getPrincipal()));
this.setCreator(new DxUserVO(baseline.getCreator().getPrincipal()));
this.dynamicAttrs = IBAHelper.getAllIBAValues(baseline);
this.subTypeName = "DxBaseline";//TODO 要映射
this.subTypeDisplayName = ClientTypedUtility.getLocalizedTypeName(baseline, Locale.SIMPLIFIED_CHINESE);
}
public List<DxBaselineMemberVO> getBaselineMembers() {
return baselineMembers;
}
public void setBaselineMembers(List<DxBaselineMemberVO> baselineMembers) {
this.baselineMembers = baselineMembers;
}
public Boolean getFrozenState() {
return frozenState;
}
public void setFrozenState(Boolean frozenState) {
this.frozenState = frozenState;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Long getVersionId() {
return versionId;
}
public void setVersionId(Long versionId) {
this.versionId = versionId;
}
public DxContextVO getDxContext() {
return dxContext;
}
public void setDxContext(DxContextVO dxContext) {
this.dxContext = dxContext;
}
public Long getDxContextId() {
return dxContextId;
}
public void setDxContextId(Long dxContextId) {
this.dxContextId = dxContextId;
}
public DxOrganizationVO getDxOrganization() {
return dxOrganization;
}
public void setDxOrganization(DxOrganizationVO dxOrganization) {
this.dxOrganization = dxOrganization;
}
public Long getDxOrganizationId() {
return dxOrganizationId;
}
public void setDxOrganizationId(Long dxOrganizationId) {
this.dxOrganizationId = dxOrganizationId;
}
public String getDxOrganizationIdType() {
return dxOrganizationIdType;
}
public void setDxOrganizationIdType(String dxOrganizationIdType) {
this.dxOrganizationIdType = dxOrganizationIdType;
}
}
......@@ -181,7 +181,7 @@ public class DxChangeOrderController extends AbstractBaseController {
return resultList;
}
@GetMapping({"/version/getWorkingCopy"})
/* @GetMapping({"/version/getWorkingCopy"})
//@ApiOperation("获取变更对象")
public IdVO getWorkingCopy(@RequestParam("id") Long id, @RequestParam("type") String type, HttpServletRequest request) {
IdVO idVO = null;
......@@ -191,5 +191,5 @@ public class DxChangeOrderController extends AbstractBaseController {
e.printStackTrace();
}
return idVO;
}
}*/
}
package com.yonde.common;
import wt.fc.IdentityHelper;
import wt.fc.PersistenceHelper;
import wt.folder.Folder;
import wt.folder.FolderEntry;
import wt.folder.FolderHelper;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerRef;
import wt.lifecycle.LifeCycleHelper;
import wt.session.SessionHelper;
import wt.type.ClientTypedUtility;
import wt.type.TypeDefinitionReference;
import wt.type.TypedUtility;
import wt.util.WTException;
import wt.vc.baseline.ManagedBaseline;
import wt.vc.baseline.ManagedBaselineIdentity;
public class BaseLineUtil {
public static ManagedBaseline createBaseline(String baselineType, String baselineNum, WTContainer container) throws Exception {
ManagedBaseline baseline = ManagedBaseline.newManagedBaseline();
baseline.setName(baselineNum);
baseline.setNumber(baselineNum);
baseline.setContainer(container);
TypeDefinitionReference typeDef = TypedUtility.getTypeDefinitionReference(baselineType);
if(typeDef == null) throw new WTException("没有此类型:"+baselineType);
baseline.setTypeDefinitionReference(typeDef);
LifeCycleHelper.setLifeCycle(baseline,
LifeCycleHelper.service.getLifeCycleTemplate("", container.getContainerReference()));
WTContainerRef containerRef = WTContainerRef.newWTContainerRef(baseline.getContainer());
Folder assignedFolder = FolderHelper.service.saveFolderPath("/Default", containerRef);
FolderHelper.assignLocation((FolderEntry) baseline, assignedFolder);
baseline = (ManagedBaseline) PersistenceHelper.manager.save(baseline);
String localizedTypeName = ClientTypedUtility.getLocalizedTypeName(baseline, SessionHelper.getLocale());
ManagedBaselineIdentity identificationObject = (ManagedBaselineIdentity)baseline.getIdentificationObject();
identificationObject.setName(localizedTypeName);
IdentityHelper.service.changeIdentity(baseline, identificationObject); // 重命名名称
return baseline;
}
public static ManagedBaseline createBaseline(String baselineType, String baselineNum, String baselineName, WTContainer container) throws Exception {
ManagedBaseline baseline = ManagedBaseline.newManagedBaseline();
baseline.setName(baselineName);
baseline.setNumber(baselineNum);
baseline.setContainer(container);
if (ObjectsUtil.isNull(baselineType)) {
baselineType = "wt.vc.baseline.ManagedBaseline";
} else {
}
TypeDefinitionReference typeDef = TypedUtility.getTypeDefinitionReference(baselineType);
if(typeDef == null) throw new WTException("没有此类型:"+baselineType);
baseline.setTypeDefinitionReference(typeDef);
/*LifeCycleHelper.setLifeCycle(baseline,
LifeCycleHelper.service.getLifeCycleTemplate("", container.getContainerReference()));*/
WTContainerRef containerRef = WTContainerRef.newWTContainerRef(baseline.getContainer());
Folder assignedFolder = FolderHelper.service.saveFolderPath("/Default", containerRef);
FolderHelper.assignLocation((FolderEntry) baseline, assignedFolder);
baseline = (ManagedBaseline) PersistenceHelper.manager.save(baseline);
ManagedBaselineIdentity identificationObject = (ManagedBaselineIdentity)baseline.getIdentificationObject();
identificationObject.setName(baselineName);
IdentityHelper.service.changeIdentity(baseline, identificationObject); // 重命名名称
return baseline;
}
/*private static void addMembers(ManagedBaseline mb, WTPart product, BaselineBean paramBean) throws Exception {
String type = getTypeInternalName(mb);
//功能基线、分配基线内存放的是:文档对象
WTCollection collectDocuments = new WTHashSet();
if(type.equals(BaselineConstant.TYPE_ABL_BASELINE) || type.equals(BaselineConstant.TYPE_FBL_BASELINE)) {
collectDocuments = collectDocuments(paramBean, product, type);
}else if(type.equals(BaselineConstant.TYPE_PBL_BASELINE)) {
*//**
* 产品基线内存放的是:模型、技术文件、Mbom、工艺文件、软件 (软件由下游反馈,其他从PDM系统直接获取)
*//*
// WTCollection collectEPMDocument = collectEPMDocument(product);
// WTCollection collectTecnicalDoc = collectTecnicalDoc(product);
// WTCollection collectMBOM = collectMBOM(product);
// WTCollection collectCraftDoc = collectCraftDoc(collectMBOM);
// WTCollection collectSoftware = collectSoftware(product);
// collectDocuments = collectDocuments(paramBean, product, type);
// collectDocuments.addAll(collectEPMDocument);
// collectDocuments.addAll(collectTecnicalDoc);
// collectDocuments.addAll(collectMBOM);
// collectDocuments.addAll(collectCraftDoc);
// collectDocuments.addAll(collectSoftware);
// 本次只修改了产品基线的收集逻辑,其他收集逻辑暂不做调整,等问题需求号后在判断,不过目前看来可能存在问题20200617
// EBOM关联的EPM文档,和包含部件编号的图样文件
WTCollection collectTecnicalDoc = collectTecnicalDoc(product);
// 产品的整个MBOM
product = PartUtils.getRealeasePartByNumber(product.getNumber(), ViewConstant.MANUFACTURE);
WTCollection collectMBOM = collectMBOM(product);
// MBOM关联的工艺计划对象及工艺计划下的操作
WTCollection collectCraftDoc = collectCraftDoc(collectMBOM);
//获取产品基线文档
WTCollection collectPLDoc = collectPLDocuments(product);
collectDocuments.addAll(collectTecnicalDoc);
collectDocuments.addAll(collectMBOM);
collectDocuments.addAll(collectCraftDoc);
collectDocuments.addAll(collectPLDoc);
}else if(type.equals(BaselineConstant.TYPE_TBL_BASELINE) || type.equals(BaselineConstant.TYPE_VBL_BASELINE)) {
//转阶段基线内存放的是:模型、技术文件、EBOM
WTCollection collectEPMDocument = collectEPMDocument(product);
WTCollection collectTecnicalDoc = collectTecnicalDoc(product);
WTPart productDesign = getPartByNoAndView(product.getNumber(),"");
WTCollection collectEBOM = collectMBOM(productDesign);
collectDocuments.addAll(collectEPMDocument);
collectDocuments.addAll(collectTecnicalDoc);
collectDocuments.addAll(collectEBOM);
}
BaselineHelper.service.addToBaseline(collectDocuments, mb);
}*/
}
package com.yonde.common;
import com.ptc.core.command.common.bean.repository.PageRequest;
import com.yonde.basedata.data.DxPageImpl;
import com.yonde.basedata.search.SearchItem;
import com.yonde.basedata.search.SearchItems;
import com.yonde.basedata.search.SearchOperatorEnumUtil;
import com.yonde.basedata.search.SearchQueryCondition;
import com.yonde.baseline.service.DxBaselineService;
import com.yonde.baseline.vo.DxBaselineVO;
import com.yonde.change.service.DXChangeOrderService;
import com.yonde.change.vo.ecn.DxChangeNoticeVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
......@@ -17,7 +18,6 @@ import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import wt.change2.VersionableChangeItem;
import wt.change2.WTChangeIssue;
import wt.change2.WTChangeOrder2;
import wt.change2.WTChangeRequest2;
......@@ -33,7 +33,7 @@ import wt.session.SessionServerHelper;
import wt.util.WTAttributeNameIfc;
import wt.util.WTException;
import wt.vc.Iterated;
import wt.vc.baseline.Baseline;
import wt.vc.baseline.ManagedBaseline;
import wt.vc.views.View;
import wt.vc.views.ViewHelper;
import wt.vc.wip.WorkInProgressHelper;
......@@ -105,7 +105,7 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
//构建查询
QuerySpec querySpec = DxSearchUtil.buildQuerySpec(searchItems, cls);
//通用查询条件
if (!cls.getName().toLowerCase().contains("change")) {
if (!(cls.getName().toLowerCase().contains("change") || cls.getName().toLowerCase().contains("baseline") )) {
// Case 1:检入状态
if (querySpec.getConditionCount() > 0) {
querySpec.appendAnd();
......@@ -169,6 +169,13 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
objList.add(dxPartVO);
return;
}
if (o instanceof ManagedBaseline) {
//基线
ManagedBaseline baseline = (ManagedBaseline) o;
DxBaselineVO baselineVO = DxBaselineService.buildDxBaseline(baseline);
objList.add(baselineVO);
return;
}
List before = DXChangeOrderService.getChangeDataLink(id, "before");
if (o instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) o;
......@@ -193,9 +200,6 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
objList.add(problemReportVo);
return;
}
if (o instanceof Baseline) {
// TODO 基线
}
}
/**
......
......@@ -20,10 +20,7 @@ import java.util.Map;
@RequestMapping({"/DxDocument"})
public class DxDocController extends AbstractBaseController {
/* @Autowired
public DxDocService docService;*/
@GetMapping({"/version/getWorkingCopy/{id}"})
/* @GetMapping({"/version/getWorkingCopy/{id}"})
//@ApiOperation("获取工作副本")
public DxDocumentVO getWorkingCopy(@PathVariable Long id, HttpServletRequest request) {
DxDocumentVO dxDocumentVO = null;
......@@ -33,7 +30,7 @@ public class DxDocController extends AbstractBaseController {
e.printStackTrace();
}
return dxDocumentVO;
}
}*/
@GetMapping({"/version/{id}"})
//@ApiOperation("获取部件对象")
......
......@@ -5,11 +5,14 @@ import com.yonde.basedata.controller.AbstractBaseController;
import com.yonde.basedata.entity.api.ApiResult;
import com.yonde.basedata.exception.DxBusinessException;
import com.yonde.basedata.search.BaseSearchCondition;
import com.yonde.change.service.DXChangeOrderService;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.common.ObjectsUtil;
import com.yonde.part.service.DxPartService;
import com.yonde.part.service.PartService;
import com.yonde.part.vo.BOMQueryVO;
import com.yonde.part.vo.DxPartVO;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
......@@ -27,7 +30,7 @@ public class DxPartController extends AbstractBaseController {
return PartService.getPartByNumber(number, view);
}
@GetMapping({"/version/getWorkingCopy/{id}"})
/* @GetMapping({"/version/getWorkingCopy/{id}"})
//@ApiOperation("获取工作副本")
public DxPartVO getWorkingCopy(@PathVariable Long id) {
DxPartVO dxPartVO = null;
......@@ -38,7 +41,7 @@ public class DxPartController extends AbstractBaseController {
}
return dxPartVO;
}
}*/
@GetMapping({"/version/{id}"})
//@ApiOperation("获取部件对象")
......@@ -211,4 +214,25 @@ public class DxPartController extends AbstractBaseController {
}
return ApiResult.ok((Object)null, "流程创建成功!");
}
@GetMapping({"/DxEquivalenceLink/search"})
//@ApiOperation("获取更改相关对象")
public List getEquivalenceLink(@RequestParam(value = "targetId", required = false) String targetId, @RequestParam(value = "sourceId", required = false) String sourceId, @RequestParam(value = "sourceIdType", required = false) String sourceIdType, HttpServletRequest request) {
List<DxPartVO> resultList = new ArrayList<DxPartVO>();
try {
//上游对等件
if (StringUtils.isNotEmpty(sourceId)) {
resultList = DxPartService.getEquivalenceLink(Long.valueOf(sourceId),"up");
return resultList;
}
//下游对等件
if (StringUtils.isNotEmpty(targetId)) {
resultList = DxPartService.getEquivalenceLink(Long.valueOf(targetId), "down");
return resultList;
}
} catch (Exception e) {
e.printStackTrace();
}
return resultList;
}
}
......@@ -3,6 +3,7 @@ package com.yonde.part.service;
import com.yonde.basedata.data.DxPageImpl;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.search.BaseSearchCondition;
import com.yonde.basedata.search.SearchOperatorEnumUtil;
import com.yonde.basedata.search.SearchQueryCondition;
import com.yonde.basedata.vo.IdVO;
import com.yonde.common.*;
......@@ -14,6 +15,7 @@ import wt.doc.WTDocument;
import wt.doc.WTDocumentMaster;
import wt.fc.PersistenceHelper;
import wt.fc.QueryResult;
import wt.fc.WTObject;
import wt.log4j.LogR;
import wt.method.RemoteAccess;
import wt.method.RemoteMethodServer;
......@@ -36,24 +38,6 @@ import java.util.List;
public class DxPartService implements RemoteAccess, Serializable {
private static Logger logger = LogR.getLogger(DxPartService.class.getName());
private static final long serialVersionUID = 1L;
public DxPageImpl<DxPartVO> findByConfigSpec(SearchQueryCondition searchQueryCondition) throws Exception {
DxPageImpl<DxPartVO> byConfigSpecSelect = DxSearchUtil.findByConfigSpec(searchQueryCondition);
return byConfigSpecSelect;
}
/* public static List findByConfigSpecSelect (SearchQueryCondition searchQueryCondition) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (List) RemoteMethodServer.getDefault().invoke("findByConfigSpecSelect", DxPartService.class.getName(), null,
new Class[] { SearchQueryCondition.class},
new Object[] { searchQueryCondition});
}
logger.error("findByConfigSpecSelect===111" + searchQueryCondition.toString());
*//*boolean enforce = SessionServerHelper.manager.setAccessEnforced(false);*//*
List<IdVO> partList = DxSearchUtil.findByConfigSpecSelect(searchQueryCondition);
return partList;
}*/
public static DxPageImpl<DxPartVO> findByConfigSpecPage(BaseSearchCondition specSearch) {
return null;
......@@ -623,7 +607,7 @@ public class DxPartService implements RemoteAccess, Serializable {
return;
}
String tempName = "PBOM签审工作流";
SessionContext previous = SessionContext.newContext();
CommonUtil.initSessionContext(null);
try {
SessionHelper.manager.setAdministrator();
WTPart partById = DxPartUtil.getPartById(id);
......@@ -633,7 +617,62 @@ public class DxPartService implements RemoteAccess, Serializable {
WorkflowUtil.createProcess(partById, null, partById.getContainerReference(),
tempName + "_" + partById.getNumber(), tempName, null);
} finally {
SessionContext.setContext(previous);
}
}
public static List getEquivalenceLink(Long id, String type) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (List)RemoteMethodServer.getDefault().invoke("getEquivalenceLink", DxPartService.class.getName(), null,
new Class[] { Long.class, String.class},
new Object[] { id, type});
}
List resultList = new ArrayList();
CommonUtil.initSessionContext(null);
WTObject wtObjectById = RfUtil.getWTObjectById(id);
if (ObjectsUtil.nonNull(wtObjectById)) {
WTPart part = (WTPart) wtObjectById;
String viewName = part.getViewName();
if ("up".equalsIgnoreCase(type)) {
//工艺视图 取 设计视图
if (SearchOperatorEnumUtil.viewMap.get("2").equalsIgnoreCase(viewName)) {
WTPart viewPart = PartUtil.getLatestViewPart(part.getNumber(), SearchOperatorEnumUtil.viewMap.get("1"));
if (ObjectsUtil.nonNull(viewPart)) {
DxPartVO dxPartVO = new DxPartVO(viewPart);
resultList.add(dxPartVO);
}
return resultList;
}
//制造视图 取 工艺视图
if (SearchOperatorEnumUtil.viewMap.get("3").equalsIgnoreCase(viewName)) {
WTPart viewPart = PartUtil.getLatestViewPart(part.getNumber(), SearchOperatorEnumUtil.viewMap.get("2"));
if (ObjectsUtil.nonNull(viewPart)) {
DxPartVO dxPartVO = new DxPartVO(viewPart);
resultList.add(dxPartVO);
}
return resultList;
}
}
if ("down".equalsIgnoreCase(type)) {
//设计视图 取 工艺视图
if (SearchOperatorEnumUtil.viewMap.get("1").equalsIgnoreCase(viewName)) {
WTPart viewPart = PartUtil.getLatestViewPart(part.getNumber(), SearchOperatorEnumUtil.viewMap.get("2"));
if (ObjectsUtil.nonNull(viewPart)) {
DxPartVO dxPartVO = new DxPartVO(viewPart);
resultList.add(dxPartVO);
}
return resultList;
}
//工艺视图 取 制造视图
if (SearchOperatorEnumUtil.viewMap.get("2").equalsIgnoreCase(viewName)) {
WTPart viewPart = PartUtil.getLatestViewPart(part.getNumber(), SearchOperatorEnumUtil.viewMap.get("3"));
if (ObjectsUtil.nonNull(viewPart)) {
DxPartVO dxPartVO = new DxPartVO(viewPart);
resultList.add(dxPartVO);
}
return resultList;
}
}
}
return resultList;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment