Commit 52e269b4 authored by shyWang's avatar shyWang

PDM前端改造

更改相关
parent 09bc7ce6
......@@ -14,6 +14,7 @@ import com.yonde.part.vo.DxUsageLinkVO;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -27,6 +28,11 @@ public class AbstractBaseController {
return ApiResult.ok("");
}
@GetMapping({"/findWTObj/{id}"})
public ApiResult<LifecycleTemplateVO> findWTObj(@PathVariable Long id) {
return ApiResult.ok("");
}
//@ApiOperation("配置规范查询")
@PostMapping({"findBySpec"})
Map<String, Object> findByConfigSpec(@RequestBody SearchQueryCondition specSearch) {
......@@ -76,6 +82,24 @@ public class AbstractBaseController {
}
}
@PostMapping({"/version/newVersions"})
public List newVersions(@RequestBody Map idMap, HttpServletRequest request) {
String ids = (String) idMap.get("ids");
List<String> idList = new ArrayList<String>();
if (ObjectsUtil.nonNull(ids)) {
String[] split = ids.split(",");
idList = new ArrayList<String>(Arrays.asList(split));
}
String portUserName = request.getHeader("portUserName");
List list = new ArrayList<String>();
try {
list = BaseSearchService.newVersions(idList, portUserName);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public SearchItems getPermSearchItems(BaseSearchCondition permSearchParams) {
SearchItems searchItems = new SearchItems();
searchItems.setOperator(SearchItems.BooleanOperator.AND);
......
......@@ -2,6 +2,9 @@ package com.yonde.basedata.search;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.vo.*;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.change.vo.DxChangeAfterDataVo;
import com.yonde.change.vo.DxReportedAgainstVo;
import com.yonde.change.vo.ecn.DxChangeNoticeVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
import com.yonde.change.vo.pr.DxProblemReportVo;
......@@ -101,6 +104,7 @@ public class SearchOperatorEnumUtil {
public static void initTypeMap() {
typeMap.put("DxDocument", WTDocument.class);
typeMap.put("doc", WTDocument.class);
typeMap.put("DxPart", WTPart.class);
typeMap.put("DxChangeRequest", WTChangeRequest2.class);
typeMap.put("DxChangeNotice", WTChangeOrder2.class);
......@@ -152,7 +156,9 @@ public class SearchOperatorEnumUtil {
typeItemMap.put(DxChangeRequestVo.class, "com.yonde.dcs.cmt.common.entity.vo.DxChangeRequestVo");
typeItemMap.put(DxChangeNoticeVo.class, "com.yonde.dcs.cmt.common.entity.vo.DxChangeNoticeVo");
typeItemMap.put(DxProblemReportVo.class, "com.yonde.dcs.cmt.common.entity.vo.DxProblemReportVo");
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");
//TODO add
}
......
......@@ -9,6 +9,8 @@ import com.yonde.basedata.vo.ObjFileLinkVO;
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;
......@@ -27,6 +29,7 @@ import wt.method.RemoteMethodServer;
import wt.part.WTPart;
import wt.session.SessionContext;
import wt.session.SessionHelper;
import wt.session.SessionServerHelper;
import wt.util.WTProperties;
import java.io.File;
......@@ -105,6 +108,42 @@ public class BaseSearchService <V extends IdVO> implements RemoteAccess {
return false;
}
public static List newVersions(List<String> idList, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (List) RemoteMethodServer.getDefault().invoke("newVersions", BaseSearchService.class.getName(), null,
new Class[] { List.class, String.class },
new Object[] { idList,userName });
}
CommonUtil.initSessionContext(userName);
List resultList = new ArrayList();
boolean enforced = SessionServerHelper.manager.setAccessEnforced(false);
try {
for (String id : idList) {
WTObject wtObjectById = RfUtil.getWTObjectById(Long.valueOf(id));
String comment = userName + "修订";
if (wtObjectById instanceof WTPart) {
WTPart wtPart = (WTPart) wtObjectById;
wtPart = PartUtil.reviseWTPart(wtPart, comment);
DxPartVO dxPart = new DxPartVO(wtPart);
resultList.add(dxPart);
continue;
}
if (wtObjectById instanceof WTDocument) {
WTDocument wtDocument = (WTDocument) wtObjectById;
wtDocument = DocUtil.reviseWTDocument(wtDocument, comment);
DxDocumentVO dxDocumentVO = new DxDocumentVO(wtDocument);
resultList.add(dxDocumentVO);
continue;
}
//TODO other type add
}
} finally {
SessionServerHelper.manager.setAccessEnforced(enforced);
}
return resultList;
}
public static void uploadFile(CommonsMultipartFile file, ObjFileLinkVO fileForm) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
RemoteMethodServer.getDefault().invoke("uploadFile", BaseSearchService.class.getName(), null,
......
......@@ -2,6 +2,7 @@ package com.yonde.basedata.vo;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.common.DateTimeUtil;
import wt.change2.VersionableChangeItem;
import wt.doc.WTDocument;
import wt.doc.WTDocumentMaster;
import wt.enterprise.RevisionControlled;
......@@ -56,6 +57,18 @@ public class DxMasterVO extends IdVO implements Serializable {
}
}
public DxMasterVO(VersionableChangeItem changeItem) throws WTException {
this.id = PersistenceHelper.getObjectIdentifier(changeItem).getId();
this.objectType = changeItem.getDisplayType().toString();
this.number = changeItem.getName();
this.name = changeItem.getName();
this.setCreator(new DxUserVO(changeItem.getCreator().getPrincipal()));
this.setModifier(new DxUserVO(changeItem.getModifier().getPrincipal()));
this.creatorId = this.getCreator().getUserId();
this.modifierId = this.getModifier().getUserId();
this.subTypeName = "DxMaster";
}
public String getNumber() {
return number;
}
......
package com.yonde.basedata.vo;
import com.yonde.common.DateTimeUtil;
import wt.change2.VersionableChangeItem;
import wt.enterprise.RevisionControlled;
import wt.fc.PersistenceHelper;
import wt.util.WTException;
......@@ -41,6 +42,20 @@ public class DxVersionVO implements Serializable {
}
}
public DxVersionVO(VersionableChangeItem controlled) throws WTException {
if(null != controlled) {
this.versionKey = controlled.getVersionIdentifier().getValue();
this.masterId = PersistenceHelper.getObjectIdentifier(controlled.getMaster()).getId();
//this.master = new DxMasterVO(controlled);
this.checkOuted = false;
this.versionId = PersistenceHelper.getObjectIdentifier(controlled).getId();
this.displayVersion = this.versionKey + "." + controlled.getIterationIdentifier().getValue();
this.iterationId = controlled.getIterationIdentifier().getValue();
this.iterationCreateTime = DateTimeUtil.timeStampToString(controlled.getCreateTimestamp());
this.iterationCreateId = PersistenceHelper.getObjectIdentifier(controlled.getCreator().getObject()).getId();
}
}
public String getVersionKey() {
return versionKey;
}
......
......@@ -97,13 +97,13 @@ public class RevisionControlledVO extends IdVO implements Serializable {
} else {
if (WorkInProgressHelper.isCheckedOut(object)) {
Workable copyVersion = CommonUtil.getWorkingCopyVersion(object);
if (ObjectsUtil.isNull(copyVersion.getLocker())) {
if (ObjectsUtil.nonNull(copyVersion.getLocker())) {
if (copyVersion instanceof WTDocument) {
WTDocument previousVersionDoc = CommonUtil.getPreviousVersionDoc((WTDocument) copyVersion);
this.setLockerSign(previousVersionDoc);
//WTDocument previousVersionDoc = CommonUtil.getPreviousVersionDoc((WTDocument) copyVersion);
this.setLockerSign((WTDocument) copyVersion);
} else if (copyVersion instanceof WTPart) {
WTPart wtPart = CommonUtil.getPreviousVersion((WTPart) copyVersion);
this.setLockerSign(wtPart);
//WTPart wtPart = CommonUtil.getPreviousVersion((WTPart) copyVersion);
this.setLockerSign((WTPart) copyVersion);
}
// TODO
}
......
......@@ -7,16 +7,16 @@ import com.yonde.basedata.vo.IdVO;
import com.yonde.change.service.DXChangeOrderService;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.change.vo.DxReportedAgainstVo;
import com.yonde.change.vo.ecn.DxAddressedByVo;
import com.yonde.change.vo.ecn.DxChangeNoticeVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
import com.yonde.change.vo.ecr.DxFormalizedByVo;
import com.yonde.change.vo.pr.DxProblemReportVo;
import com.yonde.common.ObjectsUtil;
import com.yonde.doc.service.DxDocService;
import com.yonde.doc.vo.DxDocumentVO;
import com.yonde.part.service.DxPartService;
import com.yonde.part.vo.DxPartVO;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.*;
import wt.log4j.LogR;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
......@@ -28,25 +28,27 @@ import java.util.Map;
@RequestMapping({"/changeOrder"})
public class DxChangeOrderController extends AbstractBaseController {
private static final Logger log = LogR.getLogger(DxChangeOrderController.class.getName());
//@ApiOperation("深度保存对象")
@PostMapping({"createPR"})
public ApiResult recursionPR(@RequestBody Map entity, HttpServletRequest request) {
DxProblemReportVo pr = null;
try {
String jsonString = JSON.toJSONString(entity);
log.error("PR param======" + entity);
DxProblemReportVo entityVO = JSON.parseObject(jsonString, DxProblemReportVo.class);
log.error("PR entityVO======" + entityVO);
String portUserName = request.getHeader("portUserName");
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("NO_CHANGE")) {
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("MODIFY")) {
//更新link
//part = DxPartService.updateDxPartUsageLink(entityVO);
pr = DXChangeOrderService.modifyPR(entityVO, portUserName);
} else {
pr = DXChangeOrderService.createPR(entityVO, portUserName);
}
return ApiResult.ok(pr);
} catch (Exception e) {
e.printStackTrace();
return ApiResult.error("501", e.getLocalizedMessage(), e);
return ApiResult.error("501", e.getCause().getLocalizedMessage(), e);
}
}
......@@ -58,16 +60,16 @@ public class DxChangeOrderController extends AbstractBaseController {
String jsonString = JSON.toJSONString(entity);
DxChangeRequestVo entityVO = JSON.parseObject(jsonString, DxChangeRequestVo.class);
String portUserName = request.getHeader("portUserName");
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("NO_CHANGE")) {
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("MODIFY")) {
//更新link
//part = DxPartService.updateDxPartUsageLink(entityVO);
ecr = DXChangeOrderService.modifyECR(entityVO, portUserName);
} else {
ecr = DXChangeOrderService.createECR(entityVO, portUserName);
}
return ApiResult.ok(ecr);
} catch (Exception e) {
e.printStackTrace();
return ApiResult.error("501", e.getLocalizedMessage(), e);
return ApiResult.error("501", e.getCause().getLocalizedMessage(), e);
}
}
......@@ -79,16 +81,16 @@ public class DxChangeOrderController extends AbstractBaseController {
String jsonString = JSON.toJSONString(entity);
DxChangeNoticeVo entityVO = JSON.parseObject(jsonString, DxChangeNoticeVo.class);
String portUserName = request.getHeader("portUserName");
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("NO_CHANGE")) {
if (ObjectsUtil.nonNull(entityVO.getOperator()) && entityVO.getOperator().equals("MODIFY")) {
//更新link
//part = DxPartService.updateDxPartUsageLink(entityVO);
ecn = DXChangeOrderService.modifyECN(entityVO, portUserName);
} else {
ecn = DXChangeOrderService.createECN(entityVO, portUserName);
}
return ApiResult.ok(ecn);
} catch (Exception e) {
e.printStackTrace();
return ApiResult.error("501", e.getLocalizedMessage(), e);
return ApiResult.error("501", e.getCause().getLocalizedMessage(), e);
}
}
......@@ -111,9 +113,39 @@ public class DxChangeOrderController extends AbstractBaseController {
return resultList;
}
@GetMapping({"/DxAddressedBy/search"})
//@ApiOperation("获取ECN相关ECR")
public List getDxAddressedBy(@RequestParam(value = "targetId", required = false) String targetId,@RequestParam(value = "sourceId", required = false) String sourceId, HttpServletRequest request) {
List<DxAddressedByVo> resultList = new ArrayList<DxAddressedByVo>();
try {
if (StringUtils.isNotEmpty(targetId)) {
resultList = DXChangeOrderService.getECRByECN(Long.valueOf(targetId));
return resultList;
}
} catch (Exception e) {
e.printStackTrace();
}
return resultList;
}
@GetMapping({"/DxFormalizedBy/search"})
//@ApiOperation("获取ECN相关ECR")
public List getDxFormalizedBy(@RequestParam(value = "targetId", required = false) String targetId,@RequestParam(value = "sourceId", required = false) String sourceId, HttpServletRequest request) {
List<DxFormalizedByVo> resultList = new ArrayList<DxFormalizedByVo>();
try {
if (StringUtils.isNotEmpty(sourceId)) {
resultList = DXChangeOrderService.getIssueByECR(Long.valueOf(sourceId));
return resultList;
}
} catch (Exception e) {
e.printStackTrace();
}
return resultList;
}
@GetMapping({"/DxChangeAffectedData/search"})
//@ApiOperation("获取更改相关对象")
public List getChangeAffectedDataLink(@RequestParam(value = "targetId", required = false) String targetId, @RequestParam(value = "sourceId", required = false) String sourceId, @RequestParam("sourceIdType") String sourceIdType, HttpServletRequest request) {
public List getChangeAffectedDataLink(@RequestParam(value = "targetId", required = false) String targetId, @RequestParam(value = "sourceId", required = false) String sourceId, @RequestParam(value = "sourceIdType", required = false) String sourceIdType, HttpServletRequest request) {
List<DxChangeAffectedDataVo> resultList = new ArrayList<DxChangeAffectedDataVo>();
try {
if (StringUtils.isNotEmpty(sourceId)) {
......@@ -130,6 +162,25 @@ public class DxChangeOrderController extends AbstractBaseController {
return resultList;
}
@GetMapping({"/DxCMReferenceLink/search"})
//@ApiOperation("获取更改相关对象")
public List getCMReferenceLink(@RequestParam(value = "targetId", required = false) String targetId, @RequestParam(value = "sourceId", required = false) String sourceId, @RequestParam(value = "sourceIdType", required = false) String sourceIdType, HttpServletRequest request) {
List<DxChangeAffectedDataVo> resultList = new ArrayList<DxChangeAffectedDataVo>();
try {
if (StringUtils.isNotEmpty(sourceId)) {
resultList = DXChangeOrderService.getChangeDataLink(Long.valueOf(sourceId),"after");
return resultList;
}
if (StringUtils.isNotEmpty(targetId)) {
resultList = DXChangeOrderService.getAffectedDataLink(Long.valueOf(targetId), sourceIdType);
return resultList;
}
} catch (Exception e) {
e.printStackTrace();
}
return resultList;
}
@GetMapping({"/version/getWorkingCopy"})
//@ApiOperation("获取变更对象")
public IdVO getWorkingCopy(@RequestParam("id") Long id, @RequestParam("type") String type, HttpServletRequest request) {
......
......@@ -11,28 +11,31 @@ import com.yonde.change.vo.DxReportedAgainstVo;
import com.yonde.change.vo.ecn.DxAddressedByVo;
import com.yonde.change.vo.ecn.DxChangeNoticeVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
import com.yonde.change.vo.ecr.DxFormalizedByVo;
import com.yonde.change.vo.pr.DxProblemReportVo;
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.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.util.CollectionUtils;
import wt.change2.*;
import wt.doc.WTDocument;
import wt.fc.Persistable;
import wt.fc.PersistenceHelper;
import wt.fc.QueryResult;
import wt.fc.WTObject;
import wt.fc.collections.WTValuedHashMap;
import wt.folder.Folder;
import wt.folder.FolderHelper;
import wt.inf.container.WTContainer;
import wt.log4j.LogR;
import wt.method.RemoteAccess;
import wt.method.RemoteMethodServer;
import wt.part.WTPart;
import wt.pom.Transaction;
import wt.type.TypeDefinitionReference;
import wt.type.TypedUtilityServiceHelper;
import wt.util.WTException;
import java.util.ArrayList;
import java.util.List;
......@@ -40,6 +43,8 @@ import java.util.Vector;
public class DXChangeOrderService implements RemoteAccess {
private static final Logger log = LogR.getLogger(DXChangeOrderService.class.getName());
public static DxProblemReportVo createPR(DxProblemReportVo entityVO, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
......@@ -57,7 +62,10 @@ public class DXChangeOrderService implements RemoteAccess {
}
}
if (ObjectsUtil.isNull(changeIssue)) {
changeIssue = WTChangeIssue.newWTChangeIssue("");
changeIssue = WTChangeIssue.newWTChangeIssue();
TypeDefinitionReference tydef = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("wt.change2.WTChangeIssue");
changeIssue.setTypeDefinitionReference(tydef);
}
changeIssue.setNumber(entityVO.getNumber());
changeIssue.setName(entityVO.getName());
......@@ -67,7 +75,7 @@ public class DXChangeOrderService implements RemoteAccess {
container = ContainerUtil.getContainerByName(contextName);
}
if (ObjectsUtil.isNull(container)) {
return null;
throw new WTException("上下文不可为空!");
}
if (container != null) {
changeIssue.setContainer(container);
......@@ -83,9 +91,13 @@ public class DXChangeOrderService implements RemoteAccess {
loacationMap.put(changeIssue, location);
FolderHelper.assignLocations(loacationMap);
} else {
System.out.println("未找到工程更改文件夹");
throw new WTException(String.format("未找到工程更改文件夹%d", folderPath));
}
} else {
throw new WTException(String.format("型号上下文%d不存在", dxContext.getName()));
}
changeIssue.setRequester(userName);
log.error("PR=====" + changeIssue);
changeIssue = (WTChangeIssue) ChangeHelper2.service.saveChangeIssue(changeIssue);
//更新软属性
if (ObjectsUtil.nonNull(entityVO.getDynamicAttrs())) {
......@@ -97,18 +109,93 @@ public class DXChangeOrderService implements RemoteAccess {
if (!CollectionUtils.isEmpty(reportedAgainsts)) {
Vector affectedDataVector = new Vector();
for (DxReportedAgainstVo reportedAgainst : reportedAgainsts) {
Long targetId = reportedAgainst.getPboId();
String pboType = reportedAgainst.getPboType();
String typeStr = SearchOperatorEnumUtil.typeStrPrefixMap.get(pboType);
Persistable oid = CommonUtil.getPersistableByOid("OR:" + typeStr + targetId);
affectedDataVector.add(oid);
//ifc = ChangeOrderUtil.addChangeableToChangeIssue(ifc, (Changeable2) oid);
int targetId = reportedAgainst.getPboId();
log.error("PR targetId====" + targetId);
log.error("PR targetType====" + reportedAgainst.getPboType());
WTObject wtObjectById = RfUtil.getWTObjectById((long) targetId);
log.error("PR 受影响对象====" + wtObjectById);
if (ObjectsUtil.nonNull(wtObjectById)) {
affectedDataVector.add(wtObjectById);
}
}
if (!CollectionUtils.isEmpty(affectedDataVector)) {
ChangeOrderUtil.setIssueAffectedData(changeIssue, affectedDataVector);
}
ChangeOrderUtil.setIssueAffectedData(changeIssue, affectedDataVector);
}
return new DxProblemReportVo(changeIssue);
}
public static DxProblemReportVo modifyPR(DxProblemReportVo entityVO, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxProblemReportVo) RemoteMethodServer.getDefault().invoke("modifyPR", DXChangeOrderService.class.getName(), null,
new Class[] { DxProblemReportVo.class, String.class},
new Object[] { entityVO, userName});
}
CommonUtil.initSessionContext(userName);
WTChangeIssue changeIssue = null;
if (ObjectsUtil.nonNull(entityVO.getId())) {
WTObject objectById = RfUtil.getWTObjectById(entityVO.getId());
if (ObjectsUtil.nonNull(objectById)) {
changeIssue = (WTChangeIssue) objectById;
}
}
if (ObjectsUtil.isNull(changeIssue)) {
throw new WTException("编辑失败:PR不存在!");
}
if (ObjectsUtil.nonNull(entityVO.getName())) {
changeIssue.setName(entityVO.getName());
ChangeOrderUtil.updateChangeItemName(changeIssue, entityVO.getName());
}
changeIssue.setRequester(userName);
log.error("PR=====" + changeIssue);
changeIssue = (WTChangeIssue) ChangeHelper2.service.saveChangeIssue(changeIssue);
//更新软属性
if (ObjectsUtil.nonNull(entityVO.getDynamicAttrs())) {
IBAUtil.forceSetIBAValues(changeIssue, entityVO.getDynamicAttrs());
}
changeIssue = (WTChangeIssue) PersistenceHelper.manager.refresh(changeIssue);
Transaction ts = null;
try {
ts = new Transaction();
ts.start();
ChangeOrderUtil.deletePrData(changeIssue);
//设置受影响对象
List<DxReportedAgainstVo> reportedAgainsts = entityVO.getReportedAgainsts();
if (!CollectionUtils.isEmpty(reportedAgainsts)) {
Vector affectedDataVector = new Vector();
for (DxReportedAgainstVo reportedAgainst : reportedAgainsts) {
long targetId = reportedAgainst.getPboId();
if (ObjectsUtil.isNull(targetId) || targetId == 0) {
targetId = reportedAgainst.getTarget().getId();
}
log.error("PR targetId====" + targetId);
WTObject wtObjectById = RfUtil.getWTObjectById(targetId);
log.error("PR 受影响对象====" + wtObjectById);
if (ObjectsUtil.nonNull(wtObjectById)) {
affectedDataVector.add(wtObjectById);
}
}
if (!CollectionUtils.isEmpty(affectedDataVector)) {
ChangeOrderUtil.setIssueAffectedData(changeIssue, affectedDataVector);
}
}
ts.commit();
ts = null;
} finally {
if (ts != null) {
ts.rollback();
}
}
return new DxProblemReportVo(changeIssue);
}
/**
* 创建ECR
* @param entityVO
* @param userName
* @return
* @throws Exception
*/
public static DxChangeRequestVo createECR(DxChangeRequestVo entityVO, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxChangeRequestVo) RemoteMethodServer.getDefault().invoke("createECR", DXChangeOrderService.class.getName(), null,
......@@ -127,6 +214,9 @@ public class DXChangeOrderService implements RemoteAccess {
}
if (ObjectsUtil.isNull(ecr)) {
ecr = WTChangeRequest2.newWTChangeRequest2(name);
TypeDefinitionReference tydef = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("wt.change2.WTChangeRequest2");
ecr.setTypeDefinitionReference(tydef);
}
String number = entityVO.getNumber();
if (number != null) {
......@@ -138,7 +228,7 @@ public class DXChangeOrderService implements RemoteAccess {
container = ContainerUtil.getContainerByName(contextName);
}
if (ObjectsUtil.isNull(container)) {
return null;
throw new WTException("上下文不可为空!");
}
if (container != null) {
ecr.setContainer(container);
......@@ -157,12 +247,13 @@ public class DXChangeOrderService implements RemoteAccess {
System.out.println("未找到工程更改文件夹");
}
}
String type = entityVO.getSubTypeName();
// TODO 动态获取变更类型
/* String type = entityVO.getSubTypeName();
if (StringUtils.isNotEmpty(type)) {
TypeDefinitionReference tdr = TypedUtilityServiceHelper.service
.getTypeDefinitionReference(type);
ecr.setTypeDefinitionReference(tdr);
}
}*/
ecr = (WTChangeRequest2) ChangeHelper2.service.saveChangeRequest(ecr);
//更新软属性
if (ObjectsUtil.nonNull(entityVO.getDynamicAttrs())) {
......@@ -174,18 +265,108 @@ public class DXChangeOrderService implements RemoteAccess {
Vector affectedDataVector = new Vector();
if (!CollectionUtils.isEmpty(affectedDatas)) {
for (DxChangeAffectedDataVo affectedData : affectedDatas) {
Long targetId = affectedData.getTargetId();
long targetId = affectedData.getPboId();
if (ObjectsUtil.isNull(targetId) || targetId == 0) {
targetId = affectedData.getTarget().getId();
}
String pboType = affectedData.getPboType();
log.error("ECR targetId====" + targetId);
log.error("ECR targetType====" + pboType);
String typeStr = SearchOperatorEnumUtil.typeStrPrefixMap.get(pboType);
Persistable oid = CommonUtil.getPersistableByOid("OR:" + typeStr + targetId);
affectedDataVector.add(oid);
if (ObjectsUtil.nonNull(oid)) {
affectedDataVector.add(oid);
}
}
ChangeOrderUtil.setECRAffectedData(ecr, affectedDataVector);
}
//关联Issue、ECR
List<DxFormalizedByVo> formalizedBys = entityVO.getFormalizedBys();
if (!CollectionUtils.isEmpty(formalizedBys)) {
for (DxFormalizedByVo formalizedBy : formalizedBys) {
DxProblemReportVo target = formalizedBy.getTarget();
Long id = target.getId();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
if (ObjectsUtil.nonNull(wtObjectById)) {
ChangeOrderUtil.addChangeRequestToChangeIssue((WTChangeIssue) wtObjectById,ecr);
}
}
}
DxChangeRequestVo dxChangeRequestVo = new DxChangeRequestVo(ecr);
return dxChangeRequestVo;
}
public static DxChangeRequestVo modifyECR(DxChangeRequestVo entityVO, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxChangeRequestVo) RemoteMethodServer.getDefault().invoke("modifyECR", DXChangeOrderService.class.getName(), null,
new Class[] { DxChangeRequestVo.class, String.class},
new Object[] { entityVO, userName});
}
CommonUtil.initSessionContext(userName);
WTChangeRequest2 ecr = null;
if (ObjectsUtil.nonNull(entityVO.getId())) {
WTObject objectById = RfUtil.getWTObjectById(entityVO.getId());
if (ObjectsUtil.nonNull(objectById)) {
ecr = (WTChangeRequest2) objectById;
}
}
if (ObjectsUtil.isNull(ecr)) {
throw new WTException("修改失败:该ECR不存在!");
}
String name = entityVO.getName();
if (name != null) {
ecr.setName(name);
ChangeOrderUtil.updateChangeItemName(ecr, name);
}
ecr = (WTChangeRequest2) ChangeHelper2.service.saveChangeRequest(ecr);
//更新软属性
if (ObjectsUtil.nonNull(entityVO.getDynamicAttrs())) {
IBAUtil.forceSetIBAValues(ecr, entityVO.getDynamicAttrs());
}
ecr = (WTChangeRequest2) PersistenceHelper.manager.refresh(ecr);
Transaction ts = null;
try {
ts = new Transaction();
ts.start();
ChangeOrderUtil.deleteEcrData(ecr);
//设置受影响对象
List<DxChangeAffectedDataVo> affectedDatas = entityVO.getChangeAffectedDatas();
Vector affectedDataVector = new Vector();
if (!CollectionUtils.isEmpty(affectedDatas)) {
for (DxChangeAffectedDataVo affectedData : affectedDatas) {
long targetId = affectedData.getPboId();
if (ObjectsUtil.isNull(targetId) || targetId == 0) {
targetId = affectedData.getTarget().getId();
}
log.error("ECR targetId====" + targetId);
WTObject wtObjectById = RfUtil.getWTObjectById(targetId);
if (ObjectsUtil.nonNull(wtObjectById)) {
affectedDataVector.add(wtObjectById);
}
}
ChangeOrderUtil.setECRAffectedData(ecr, affectedDataVector);
}
ts.commit();
ts = null;
} finally {
if (ObjectsUtil.nonNull(ts)) {
ts.rollback();
}
}
DxChangeRequestVo dxChangeRequestVo = new DxChangeRequestVo(ecr);
return dxChangeRequestVo;
}
/**
* 创建ECN
* @param changeNoticeVo
* @param userName
* @return
* @throws Exception
*/
public static DxChangeNoticeVo createECN(DxChangeNoticeVo changeNoticeVo, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxChangeNoticeVo) RemoteMethodServer.getDefault().invoke("createECN", DXChangeOrderService.class.getName(), null,
......@@ -195,6 +376,7 @@ public class DXChangeOrderService implements RemoteAccess {
CommonUtil.initSessionContext(userName);
WTChangeOrder2 wtChangeOrder2 = null;
WTContainer container = null;
if (ObjectsUtil.nonNull(changeNoticeVo.getId())) {
WTObject objectById = RfUtil.getWTObjectById(changeNoticeVo.getId());
if (ObjectsUtil.nonNull(objectById)) {
......@@ -202,7 +384,37 @@ public class DXChangeOrderService implements RemoteAccess {
}
}
if (ObjectsUtil.isNull(wtChangeOrder2)) {
wtChangeOrder2 = WTChangeOrder2.newWTChangeOrder2(changeNoticeVo.getName());
wtChangeOrder2 = WTChangeOrder2.newWTChangeOrder2();
TypeDefinitionReference tydef = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("wt.change2.WTChangeOrder2");
wtChangeOrder2.setTypeDefinitionReference(tydef);
wtChangeOrder2.setName(changeNoticeVo.getName());
wtChangeOrder2.setNumber(changeNoticeVo.getNumber());
DxContextVO dxContext = changeNoticeVo.getDxContext();
if (ObjectsUtil.nonNull(dxContext)) {
String contextName = dxContext.getName();
container = ContainerUtil.getContainerByName(contextName);
}
if (ObjectsUtil.isNull(container)) {
throw new WTException("上下文不可为空!");
}
if (container != null) {
wtChangeOrder2.setContainer(container);
String folderPath = null;
DxDocumentFolderVO folderVO = null;
if (ObjectsUtil.nonNull(folderVO)) {
folderPath = folderVO.getFullPath();
}
//设置ecr的文件夹路径
Folder location = DxCommonUtils.makeFolder(folderPath, container.getContainerReference());
if(location != null) {
WTValuedHashMap loacationMap = new WTValuedHashMap();
loacationMap.put(wtChangeOrder2, location);
FolderHelper.assignLocations(loacationMap);
} else {
System.out.println("未找到工程更改文件夹");
}
}
}
wtChangeOrder2 = ChangeOrderUtil.createWTChangeOrder2(wtChangeOrder2, changeNoticeVo.getName(), null,
null, "",changeNoticeVo.getDynamicAttrs());
......@@ -213,29 +425,39 @@ public class DXChangeOrderService implements RemoteAccess {
}
wtChangeOrder2 = (WTChangeOrder2) PersistenceHelper.manager.refresh(wtChangeOrder2);
//设置受影响对象
List<Changeable2> affectedDataList = new ArrayList<Changeable2>();
Vector<Changeable2> affectedDataList = new Vector<Changeable2>();
List<DxChangeAffectedDataVo> affectedDatas = changeNoticeVo.getChangeAffectedDatas();
for (DxChangeAffectedDataVo affectedData : affectedDatas) {
String pboClass = affectedData.getPboType();
String prefix = SearchOperatorEnumUtil.typeStrPrefixMap.get(pboClass);
Long pboId = affectedData.getPboId();
Changeable2 wtObjectByOid = (Changeable2) RfUtil.getWTObjectByOid("OR:" + prefix + pboId);
affectedDataList.add(wtObjectByOid);
if (!CollectionUtils.isEmpty(affectedDatas)) {
for (DxChangeAffectedDataVo affectedData : affectedDatas) {
Long pboId = (long) affectedData.getPboId();
if (ObjectsUtil.isNull(pboId) || pboId == 0) {
pboId = affectedData.getTarget().getId();
}
log.error("ECN targetId====" + pboId);
log.error("ECN targetType====" + affectedData.getPboType());
Changeable2 wtObjectByOid = (Changeable2) RfUtil.getWTObjectById(pboId);
log.error("ECN wtObjectByOid====" + wtObjectByOid);
affectedDataList.add(wtObjectByOid);
}
wtChangeOrder2 = ChangeOrderUtil.addAffectedDataToChangeNotice(wtChangeOrder2, affectedDataList, null);
}
wtChangeOrder2 = ChangeOrderUtil.addAffectedDataToChangeNotice(wtChangeOrder2, affectedDataList, null);
//设置产生对象
List<Changeable2> afterDataList = new ArrayList<Changeable2>();
Vector<Changeable2> afterDataList = new Vector<Changeable2>();
List<DxChangeAfterDataVo> referenceLink = changeNoticeVo.getSourceDxCMReferenceLink();
for (DxChangeAfterDataVo dxChangeAfterDataVo : referenceLink) {
String pboClass = dxChangeAfterDataVo.getPboType();
String prefix = SearchOperatorEnumUtil.typeStrPrefixMap.get(pboClass);
Long pboId = dxChangeAfterDataVo.getPboId();
Changeable2 wtObjectByOid = (Changeable2) RfUtil.getWTObjectByOid("OR:" + prefix + pboId);
afterDataList.add(wtObjectByOid);
if (!CollectionUtils.isEmpty(referenceLink)) {
for (DxChangeAfterDataVo dxChangeAfterDataVo : referenceLink) {
Long pboId = dxChangeAfterDataVo.getPboId();
if (ObjectsUtil.isNull(pboId) || pboId == 0) {
pboId = dxChangeAfterDataVo.getTarget().getId();
}
log.error("ECN targetId2====" + pboId);
log.error("ECN targetType2====" + dxChangeAfterDataVo.getPboType());
Changeable2 wtObjectByOid = (Changeable2) RfUtil.getWTObjectById(pboId);
log.error("ECN SourceDxCMReferenceLink====" + wtObjectByOid);
afterDataList.add(wtObjectByOid);
}
ChangeOrderUtil.addChangeableAfterToChangeNotice(wtChangeOrder2, afterDataList, null);
}
ChangeOrderUtil.addChangeableAfterToChangeNotice(wtChangeOrder2, afterDataList, null);
//关联ECN、ECR
List<DxAddressedByVo> addressedBys = changeNoticeVo.getAddressedBys();
......@@ -254,6 +476,103 @@ public class DXChangeOrderService implements RemoteAccess {
return changeNoticeVo;
}
/**
* 修改ECN
* @param changeNoticeVo
* @param userName
* @return
* @throws Exception
*/
public static DxChangeNoticeVo modifyECN(DxChangeNoticeVo changeNoticeVo, String userName) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (DxChangeNoticeVo) RemoteMethodServer.getDefault().invoke("modifyECN", DXChangeOrderService.class.getName(), null,
new Class[] { DxChangeNoticeVo.class, String.class},
new Object[] { changeNoticeVo, userName});
}
CommonUtil.initSessionContext(userName);
WTChangeOrder2 wtChangeOrder2 = null;
if (ObjectsUtil.nonNull(changeNoticeVo.getId())) {
WTObject objectById = RfUtil.getWTObjectById(changeNoticeVo.getId());
if (ObjectsUtil.nonNull(objectById)) {
wtChangeOrder2 = (WTChangeOrder2) objectById;
}
}
if (ObjectsUtil.isNull(wtChangeOrder2)) {
throw new WTException("修改失败:该ECN不存在!");
}
String name = changeNoticeVo.getName();
if (ObjectsUtil.nonNull(name)) {
changeNoticeVo.setName(name);
ChangeOrderUtil.updateChangeItemName(wtChangeOrder2, name);
}
wtChangeOrder2 = (WTChangeOrder2) ChangeHelper2.service.saveChangeOrder(wtChangeOrder2);
//更新软属性
if (ObjectsUtil.nonNull(changeNoticeVo.getDynamicAttrs())) {
IBAUtil.forceSetIBAValues(wtChangeOrder2, changeNoticeVo.getDynamicAttrs());
}
wtChangeOrder2 = (WTChangeOrder2) PersistenceHelper.manager.refresh(wtChangeOrder2);
Transaction ts = null;
try {
ts = new Transaction();
ts.start();
ChangeOrderUtil.deleteChangeBefore(wtChangeOrder2);
//设置受影响对象
Vector<Changeable2> affectedDataList = new Vector<Changeable2>();
List<DxChangeAffectedDataVo> affectedDatas = changeNoticeVo.getChangeAffectedDatas();
if (!CollectionUtils.isEmpty(affectedDatas)) {
for (DxChangeAffectedDataVo affectedData : affectedDatas) {
Long pboId = (long) affectedData.getPboId();
if (ObjectsUtil.isNull(pboId) || pboId == 0) {
pboId = affectedData.getTarget().getId();
}
log.error("ECN targetId====" + pboId);
Changeable2 wtObjectByOid = (Changeable2) RfUtil.getWTObjectById(pboId);
log.error("ECN wtObjectByOid====" + wtObjectByOid);
affectedDataList.add(wtObjectByOid);
}
wtChangeOrder2 = ChangeOrderUtil.addAffectedDataToChangeNotice(wtChangeOrder2, affectedDataList, null);
}
ChangeOrderUtil.deleteChangeAfter(wtChangeOrder2);
//设置产生对象
Vector<Changeable2> afterDataList = new Vector<Changeable2>();
List<DxChangeAfterDataVo> referenceLink = changeNoticeVo.getSourceDxCMReferenceLink();
if (!CollectionUtils.isEmpty(referenceLink)) {
for (DxChangeAfterDataVo dxChangeAfterDataVo : referenceLink) {
Long pboId = dxChangeAfterDataVo.getPboId();
if (ObjectsUtil.isNull(pboId) || pboId == 0) {
pboId = dxChangeAfterDataVo.getTarget().getId();
}
log.error("ECN targetId2====" + pboId);
Changeable2 wtObjectByOid = (Changeable2) RfUtil.getWTObjectById(pboId);
log.error("ECN SourceDxCMReferenceLink====" + wtObjectByOid);
afterDataList.add(wtObjectByOid);
}
ChangeOrderUtil.addChangeableAfterToChangeNotice(wtChangeOrder2, afterDataList, null);
}
//关联ECN、ECR
/* List<DxAddressedByVo> addressedBys = changeNoticeVo.getAddressedBys();
if (!CollectionUtils.isEmpty(addressedBys)) {
for (DxAddressedByVo addressedBy : addressedBys) {
DxChangeRequestVo source = addressedBy.getSource();
String prefix = SearchOperatorEnumUtil.typeStrPrefixMap.get(source.getDxClassname());
String oid = "OR:" + prefix + source.getId();
WTChangeRequest2 persistableByOid = (WTChangeRequest2) CommonUtil.getPersistableByOid(oid);
if (ObjectsUtil.nonNull(persistableByOid)) {
ChangeOrderUtil.addChangeNoticeToChangeRequest(wtChangeOrder2,persistableByOid);
}
}
}*/
ts.commit();
ts = null;
} finally {
if (ObjectsUtil.nonNull(ts)) {
ts.rollback();
}
}
changeNoticeVo = new DxChangeNoticeVo(wtChangeOrder2);
return changeNoticeVo;
}
/**
* 根据pbo 获取关联变更对象
* @param id
......@@ -341,11 +660,17 @@ public class DXChangeOrderService implements RemoteAccess {
CommonUtil.initSessionContext(null);
List resultList = new ArrayList();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
log.error("getChangeDataLink====" + wtObjectById);
if (wtObjectById instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) wtObjectById;
DxChangeNoticeVo noticeVo = new DxChangeNoticeVo(changeOrder2);
List<WTObject> changeBefore = ChangeOrderUtil.getChangeBefore(changeOrder2);
for (WTObject wtObject : changeBefore) {
List<WTObject> changeData;
if ("after".equalsIgnoreCase(sourceIdType)) {
changeData = ChangeOrderUtil.getChangeAfter(changeOrder2);
} else {
changeData = ChangeOrderUtil.getChangeBefore(changeOrder2);
}
for (WTObject wtObject : changeData) {
IdVO changeableVO = WTChangeDataUtil.buildChangeableVO(wtObject);
DxChangeAffectedDataVo dataVo = new DxChangeAffectedDataVo((RevisionControlledVO) changeableVO, noticeVo);
resultList.add(dataVo);
......@@ -368,6 +693,7 @@ public class DXChangeOrderService implements RemoteAccess {
WTChangeIssue changeIssue = (WTChangeIssue) wtObjectById;
DxProblemReportVo reportVo = new DxProblemReportVo(changeIssue);
List<WTObject> changeBefore = ChangeOrderUtil.getChangeBefore(changeIssue);
log.error("issue changeBefore=====" + changeBefore.size());
for (WTObject wtObject : changeBefore) {
IdVO changeableVO = WTChangeDataUtil.buildChangeableVO(wtObject);
DxReportedAgainstVo againstVo = new DxReportedAgainstVo(reportVo, (RevisionControlledVO) changeableVO);
......@@ -379,6 +705,65 @@ public class DXChangeOrderService implements RemoteAccess {
return resultList;
}
/**
* 根据ECN获取ECR
* @param id
* @return
* @throws Exception
*/
public static List getECRByECN(Long id) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (List) RemoteMethodServer.getDefault().invoke("getECRByECN", DXChangeOrderService.class.getName(), null,
new Class[] { Long.class },
new Object[] { id });
}
CommonUtil.initSessionContext(null);
List resultList = new ArrayList();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
log.error("getECRByECN====" + wtObjectById);
if (wtObjectById instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) wtObjectById;
DxChangeNoticeVo noticeVo = new DxChangeNoticeVo(changeOrder2);
List<WTChangeRequest2> request2s = ChangeOrderUtil.getChangeRequestByChangeNotice(changeOrder2);
for (WTChangeRequest2 request2 : request2s) {
DxChangeRequestVo requestVo = new DxChangeRequestVo(request2);
DxAddressedByVo addressedByVo = new DxAddressedByVo(requestVo, noticeVo);
resultList.add(addressedByVo);
}
}
return resultList;
}
/**
* 根据ECR获取Issue
* @param id
* @return
* @throws Exception
*/
public static List getIssueByECR(Long id) throws Exception {
if (!RemoteMethodServer.ServerFlag) {
return (List) RemoteMethodServer.getDefault().invoke("getIssueByECR", DXChangeOrderService.class.getName(), null,
new Class[] { Long.class },
new Object[] { id });
}
CommonUtil.initSessionContext(null);
List resultList = new ArrayList();
WTObject wtObjectById = RfUtil.getWTObjectById(id);
log.error("getIssueByECR====" + wtObjectById);
if (wtObjectById instanceof WTChangeRequest2) {
WTChangeRequest2 changeRequest2 = (WTChangeRequest2) wtObjectById;
DxChangeRequestVo requestVo = new DxChangeRequestVo(changeRequest2);
List<WTChangeIssue> issues = ChangeOrderUtil.getChangeIssueByChangeRequest(changeRequest2);
for (WTChangeIssue issue : issues) {
//DxChangeRequestVo requestVo = new DxChangeRequestVo(request2);
DxProblemReportVo problemReportVo = new DxProblemReportVo(issue);
DxFormalizedByVo formalizedByVo = new DxFormalizedByVo(requestVo, problemReportVo);
resultList.add(formalizedByVo);
}
}
return resultList;
}
/**
* 根据id 获取变更对象
* @param id
......@@ -395,13 +780,15 @@ public class DXChangeOrderService implements RemoteAccess {
CommonUtil.initSessionContext(null);
WTObject wtObjectById = RfUtil.getWTObjectById(id);
IdVO idVO = null;
if (wtObjectById instanceof WTChangeOrder2) {
idVO = new DxChangeNoticeVo((WTChangeOrder2) wtObjectById);
} else if (wtObjectById instanceof WTChangeRequest2) {
idVO = new DxChangeRequestVo((WTChangeRequest2) wtObjectById);
} else {
// TODO
idVO = new DxProblemReportVo((WTChangeIssue) wtObjectById);
if (ObjectsUtil.nonNull(wtObjectById)) {
if (wtObjectById instanceof WTChangeOrder2) {
idVO = new DxChangeNoticeVo((WTChangeOrder2) wtObjectById);
} else if (wtObjectById instanceof WTChangeRequest2) {
idVO = new DxChangeRequestVo((WTChangeRequest2) wtObjectById);
} else {
// TODO
idVO = new DxProblemReportVo((WTChangeIssue) wtObjectById);
}
}
return idVO;
}
......
......@@ -32,7 +32,7 @@ import java.util.List;
public class WTChangeDataUtil implements RemoteAccess {
/**
* 根据oid获取产品名称
* 根据oid获取产品名称
* @param oid
* @return
*/
......@@ -40,10 +40,10 @@ public class WTChangeDataUtil implements RemoteAccess {
if (!RemoteMethodServer.ServerFlag) {
try {
return (PDMLinkProduct) RemoteMethodServer.getDefault().invoke(
"getProductByOid",
"getProductByOid",
WTChangeDataUtil.class.getName(),
null,
new Class[] { String.class },
new Class[] { String.class },
new Object[] { oid }
);
} catch (RemoteException e) {
......@@ -52,8 +52,8 @@ public class WTChangeDataUtil implements RemoteAccess {
e.printStackTrace();
}
}
/* try {
Persistable persistable = ToolUtils.getObjectByOid(oid);
if (persistable instanceof PDMLinkProduct) {
......@@ -70,22 +70,22 @@ public class WTChangeDataUtil implements RemoteAccess {
}*/
return null;
}
/**
* 获取行号信息
* 获取行号信息
* @return
*/
public static String getLineInfo() {
StackTraceElement ste = new Throwable().getStackTrace()[1];
return ste.getFileName() + ": Line " + ste.getLineNumber();
StackTraceElement ste = new Throwable().getStackTrace()[1];
return ste.getFileName() + ": Line " + ste.getLineNumber();
}
/**
* This method is used to create ECR
*
*
* @param name
* name
* number
......@@ -97,7 +97,7 @@ public class WTChangeDataUtil implements RemoteAccess {
WTChangeRequest2 ecr = null;
try {
ecr = WTChangeRequest2.newWTChangeRequest2(getStringValue((String) attributes.get("partNumber")));
//设置软类型
//设置软类型
TypeDefinitionReference tdr = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("CAIC.EngineeringChangeRequest");
ecr.setTypeDefinitionReference(tdr);
......@@ -105,7 +105,7 @@ public class WTChangeDataUtil implements RemoteAccess {
ecr.setContainer(product);
}
ecr = (WTChangeRequest2) ChangeHelper2.service.saveChangeRequest(ecr);
String SecurityLabel = getStringValue((String) attributes.get("securityLevel"));
if (!StringUtil.isEmpty(SecurityLabel)){
IBAHelper.setIBAStringValue(ecr, "SECURITYLEVEL", SecurityLabel);
......@@ -120,47 +120,47 @@ public class WTChangeDataUtil implements RemoteAccess {
if (!StringUtil.isEmpty(CUSTPHASE)){
IBAHelper.setIBAStringValue(ecr, "CUSTPHASE", CUSTPHASE);
}
String ChangeBasis = getStringValue((String) attributes.get("changeBasis"));
if (!StringUtil.isEmpty(ChangeBasis)){
IBAHelper.setIBAStringValue(ecr, "ChangeBasis", ChangeBasis);
}
String ChangeBasisOther = getStringValue((String) attributes.get("changeBasisOther"));
if (!StringUtil.isEmpty(ChangeBasisOther)){
IBAHelper.setIBAStringValue(ecr, "ChangeBasisOther", ChangeBasisOther);
}
String ChangeBasisCoordination = getStringValue((String) attributes.get("changeBasisCoordination"));
if (!StringUtil.isEmpty(ChangeBasisCoordination)){
IBAHelper.setIBAStringValue(ecr, "ChangeBasisCoordination", ChangeBasisCoordination);
}
String changeReason = getStringValue((String) attributes.get("changeReason"));
if (!StringUtil.isEmpty(changeReason)){
//更改理由富文本
//更改理由富文本
System.out.println(getLineInfo()+"----->"+changeReason);
}
String changeContent = getStringValue((String) attributes.get("designChangeContent"));
if (!StringUtil.isEmpty(changeContent)){
//更改内容富文本
//更改内容富文本
System.out.println(getLineInfo()+"----->"+changeContent);
}
} catch (Exception e) {
e.printStackTrace();
}
return ecr;
}*/
/*public static WTChangeRequest2 createECP(String name, HashMap attributes, PDMLinkProduct product) {
WTChangeRequest2 ecr = null;
try {
ecr = WTChangeRequest2.newWTChangeRequest2(getStringValue((String) attributes.get("partNumber")));
//设置软类型
//设置软类型
TypeDefinitionReference tdr = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("CAIC.PartNumberChangeRequest");
ecr.setTypeDefinitionReference(tdr);
......@@ -168,7 +168,7 @@ public class WTChangeDataUtil implements RemoteAccess {
ecr.setContainer(product);
}
ecr = (WTChangeRequest2) ChangeHelper2.service.saveChangeRequest(ecr);
String SecurityLabel = getStringValue((String) attributes.get("securityLevel"));
if (!StringUtil.isEmpty(SecurityLabel)){
IBAHelper.setIBAStringValue(ecr, "SECURITYLEVEL", SecurityLabel);
......@@ -183,44 +183,44 @@ public class WTChangeDataUtil implements RemoteAccess {
if (!StringUtil.isEmpty(CUSTPHASE)){
IBAHelper.setIBAStringValue(ecr, "CUSTPHASE", CUSTPHASE);
}
String ChangeBasis = getStringValue((String) attributes.get("changeBasis"));
if (!StringUtil.isEmpty(ChangeBasis)){
IBAHelper.setIBAStringValue(ecr, "ChangeBasis", ChangeBasis);
}
String ChangeBasisOther = getStringValue((String) attributes.get("changeBasisOther"));
if (!StringUtil.isEmpty(ChangeBasisOther)){
IBAHelper.setIBAStringValue(ecr, "ChangeBasisOther", ChangeBasisOther);
}
String ChangeBasisCoordination = getStringValue((String) attributes.get("changeBasisCoordination"));
if (!StringUtil.isEmpty(ChangeBasisCoordination)){
IBAHelper.setIBAStringValue(ecr, "ChangeBasisCoordination", ChangeBasisCoordination);
}
String changeReason = getStringValue((String) attributes.get("changeReason"));
if (!StringUtil.isEmpty(changeReason)){
//更改理由富文本
//更改理由富文本
System.out.println(getLineInfo()+"----->"+changeReason);
}
String changeContent = getStringValue((String) attributes.get("designChangeContent"));
if (!StringUtil.isEmpty(changeContent)){
//更改内容富文本
//更改内容富文本
System.out.println(getLineInfo()+"----->"+changeContent);
}
} catch (Exception e) {
e.printStackTrace();
}
return ecr;
}*/
/**
* retrive a not-null value of a given string
*
*
* @param value
* @return
*/
......@@ -231,10 +231,10 @@ public class WTChangeDataUtil implements RemoteAccess {
return value;
}
/**
* 通过产品oid获取基线对象
* 通过产品oid获取基线对象
* @param oid
* @return
*/
......@@ -244,15 +244,15 @@ public class WTChangeDataUtil implements RemoteAccess {
PDMLinkProduct wtProduct = (PDMLinkProduct) CommonUtil.getPersistableByOid(oid);
if(wtProduct == null) return null;
ObjectIdentifier objProduct = PersistenceHelper.getObjectIdentifier(wtProduct);
QuerySpec criteria = new QuerySpec(Baseline.class);
criteria.appendSearchCondition(new SearchCondition(Baseline.class,
"containerReference.key",SearchCondition.EQUAL,objProduct));
QueryResult results = PersistenceHelper.manager.find(criteria);
while(results.hasMoreElements()){
Baseline wtECR = (Baseline)results.nextElement();
result.add(wtECR);
}
criteria.appendSearchCondition(new SearchCondition(Baseline.class,
"containerReference.key",SearchCondition.EQUAL,objProduct));
QueryResult results = PersistenceHelper.manager.find(criteria);
while(results.hasMoreElements()){
Baseline wtECR = (Baseline)results.nextElement();
result.add(wtECR);
}
} catch (Exception e) {
e.printStackTrace();
}
......@@ -261,7 +261,7 @@ public class WTChangeDataUtil implements RemoteAccess {
/**
* 获取更改请求
* 获取更改请求
* @param changeable2
* @return
*/
......@@ -293,7 +293,7 @@ public class WTChangeDataUtil implements RemoteAccess {
}
/**
* 受影响对象关联ECN
* 受影响对象关联ECN
* @param changeable2
* @return
*/
......@@ -329,7 +329,7 @@ public class WTChangeDataUtil implements RemoteAccess {
}
/**
* 受影响对象关联ECN 自变更通告产生
* 受影响对象关联ECN 自变更通告产生
* @param changeable2
* @return
*/
......@@ -365,7 +365,7 @@ public class WTChangeDataUtil implements RemoteAccess {
}
/**
* 获取问题请求
* 获取问题请求
* @param changeable2
* @return
*/
......@@ -395,83 +395,83 @@ public class WTChangeDataUtil implements RemoteAccess {
}
return changeIssueList;
}
/**
* 按照编号,版本获取前一大版的历史版本Part对象
*
* @return 上一大版本的最新小版本对象
*/
public static WTPart getWTPartPreviousVersion(WTPart part)
throws WTException {
if (part == null)
return null;
String version = part.getVersionIdentifier().getValue();
String view = part.getViewName();
int order = 0;
Variation2 type2 = part.getVariation2();
if (type2 != null) {
order = type2.getOrder();
}
WTPart previousVersion = null;
QueryResult qr = VersionControlHelper.service.allVersionsOf(part.getMaster());// 获取所有版本的物料
WTPart tempPart = null;
boolean flag = false;
while (qr.hasMoreElements()) {
Object object = (Object) qr.nextElement();
if (object instanceof WTPart) {
tempPart = (WTPart) object;
if (!tempPart.getViewName().equals(view)) {
continue;
}
if (tempPart.getVersionIdentifier().getValue().equals(version)) {
flag = true;
continue;
}
if (!flag) {
continue;
}
if (order > 0) {
int order2 = 0;
Variation2 temptype2 = tempPart.getVariation2();
if (temptype2 != null) {
order2 = temptype2.getOrder();
}
if (order != order2) {
continue;
}
}
if (isGreaterThan(part, tempPart)) {
previousVersion = tempPart;
break;
}
}
}
return previousVersion;
}
/**
*
* 比较版本
*
* @param rc1
* @param rc2
* @return
* @throws VersionControlException
*/
public static boolean isGreaterThan(RevisionControlled rc1, RevisionControlled rc2) throws VersionControlException {
return rc1.getVersionIdentifier().getSeries().greaterThan(rc2.getVersionIdentifier().getSeries());
}
public static String getECPNumberByPart(WTPart part)throws Exception{
String result = "";
WTPart prePart = getWTPartPreviousVersion(part);
WTChangeRequest2 ecp = null;
QueryResult results = ChangeHelper2.service.getRelevantChangeRequests(prePart);
* 按照编号,版本获取前一大版的历史版本Part对象
*
* @return 上一大版本的最新小版本对象
*/
public static WTPart getWTPartPreviousVersion(WTPart part)
throws WTException {
if (part == null)
return null;
String version = part.getVersionIdentifier().getValue();
String view = part.getViewName();
int order = 0;
Variation2 type2 = part.getVariation2();
if (type2 != null) {
order = type2.getOrder();
}
WTPart previousVersion = null;
QueryResult qr = VersionControlHelper.service.allVersionsOf(part.getMaster());// 获取所有版本的物料
WTPart tempPart = null;
boolean flag = false;
while (qr.hasMoreElements()) {
Object object = (Object) qr.nextElement();
if (object instanceof WTPart) {
tempPart = (WTPart) object;
if (!tempPart.getViewName().equals(view)) {
continue;
}
if (tempPart.getVersionIdentifier().getValue().equals(version)) {
flag = true;
continue;
}
if (!flag) {
continue;
}
if (order > 0) {
int order2 = 0;
Variation2 temptype2 = tempPart.getVariation2();
if (temptype2 != null) {
order2 = temptype2.getOrder();
}
if (order != order2) {
continue;
}
}
if (isGreaterThan(part, tempPart)) {
previousVersion = tempPart;
break;
}
}
}
return previousVersion;
}
/**
*
* 比较版本
*
* @param rc1
* @param rc2
* @return
* @throws VersionControlException
*/
public static boolean isGreaterThan(RevisionControlled rc1, RevisionControlled rc2) throws VersionControlException {
return rc1.getVersionIdentifier().getSeries().greaterThan(rc2.getVersionIdentifier().getSeries());
}
public static String getECPNumberByPart(WTPart part)throws Exception{
String result = "";
WTPart prePart = getWTPartPreviousVersion(part);
WTChangeRequest2 ecp = null;
QueryResult results = ChangeHelper2.service.getRelevantChangeRequests(prePart);
while (results.hasMoreElements()) {
WTChangeRequest2 wtECR = (WTChangeRequest2) results.nextElement();
String objType = TypeIdentifierUtilityHelper.service.getTypeIdentifier(wtECR)+"";
......@@ -479,15 +479,15 @@ public class WTChangeDataUtil implements RemoteAccess {
ecp = wtECR;
result = ecp.getNumber();
}
}
return result;
}
return result;
}
public static IdVO buildChangeableVO(WTObject changeable2) throws Exception {
IdVO idVO = null;
if (changeable2 instanceof WTPart) {
idVO = new DxPartVO((WTPart) changeable2);
public static IdVO buildChangeableVO(WTObject changeable2) throws Exception {
IdVO idVO = null;
if (changeable2 instanceof WTPart) {
idVO = new DxPartVO((WTPart) changeable2);
return idVO;
}
if (changeable2 instanceof WTDocument) {
......@@ -496,19 +496,7 @@ public class WTChangeDataUtil implements RemoteAccess {
}
return idVO;
}
public static void main(String[] args) {
//获取软属性
// IBAHelper.getIBAStringValue(product, ibaKey);
//设置软属性
// IBAHelper.setIBAStringValue(obj, ibaKey, value);
//通过oid获取对象
// ToolUtils.getObjectByOid(oid);
}
}
......@@ -2,17 +2,18 @@ package com.yonde.change.vo;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.RevisionControlledVO;
import com.yonde.common.entity.DxIterationVOHolder;
import com.yonde.doc.vo.DxDocumentVO;
import com.yonde.part.vo.DxPartVO;
import java.io.Serializable;
/**
* 受影响对象LINK
*/
public class DxChangeAffectedDataVo implements Serializable {
public class DxChangeAffectedDataVo extends IdVO implements Serializable {
private String pboType;
private Long pboId;
private int pboId;
private Boolean isDraft;
private String draftName;
private String draftNumber;
......@@ -48,6 +49,19 @@ public class DxChangeAffectedDataVo implements Serializable {
this.source = source;
this.sourceId = source.getId();
this.sourceIdType = source.getSubTypeName();
if (target instanceof DxPartVO) {
DxPartVO dxPartVO = (DxPartVO) target;
this.displayName = dxPartVO.getName();
this.displayNumber = dxPartVO.getNumber();
this.displayVersion = dxPartVO.getDisplayVersion();
this.displayTypeName = dxPartVO.getSubTypeDisplayName();
}else if (target instanceof DxDocumentVO) {
DxDocumentVO dxDocumentVO = (DxDocumentVO) target;
this.displayName = dxDocumentVO.getName();
this.displayNumber = dxDocumentVO.getNumber();
this.displayVersion = dxDocumentVO.getDisplayVersion();
this.displayTypeName = dxDocumentVO.getSubTypeDisplayName();
}
}
public IdVO getSource() {
......@@ -66,11 +80,11 @@ public class DxChangeAffectedDataVo implements Serializable {
this.pboType = pboType;
}
public Long getPboId() {
public int getPboId() {
return pboId;
}
public void setPboId(Long pboId) {
public void setPboId(int pboId) {
this.pboId = pboId;
}
......
package com.yonde.change.vo;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.RevisionControlledVO;
import java.io.Serializable;
/**
* 改后对象LINK
*/
public class DxChangeAfterDataVo {
public class DxChangeAfterDataVo extends IdVO implements Serializable {
private RevisionControlledVO target;
private Long sourceId;
......@@ -15,6 +18,9 @@ public class DxChangeAfterDataVo {
private String pboType;
private Long pboId;
public DxChangeAfterDataVo() {
}
public String getPboType() {
return pboType;
}
......
package com.yonde.change.vo;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.vo.DxMasterVO;
import com.yonde.basedata.vo.DxVersionVO;
import com.yonde.basedata.vo.IdVO;
import wt.change2.VersionableChangeItem;
import wt.util.WTException;
import java.io.Serializable;
public class DxChangeItemVo extends IdVO implements Serializable {
private DxVersionVO version;
private Long versionId;
private String versionKey;
private String displayVersion;
private String iterationId;
private String iterationCreateTime;
private Long iterationCreateId;
private DxMasterVO masterVO;
private Long masterId;
private Long creatorId;
private Long modifierId;
private String lockNote;
private String lockDate;
private DxUserVO locker;
private Long lockerId;
private Long sandboxId = 0L;
private String secretCode = "NonSecret";
public DxChangeItemVo() {
}
public DxChangeItemVo(VersionableChangeItem changeItem) throws WTException {
super(changeItem);
this.setMasterVO(new DxMasterVO(changeItem));
this.setVersion(new DxVersionVO(changeItem));
}
public DxVersionVO getVersion() {
return version;
}
public void setVersion(DxVersionVO version) {
this.version = version;
this.versionId = version.getVersionId();
this.versionKey = version.getVersionKey();
}
public Long getVersionId() {
return versionId;
}
public void setVersionId(Long versionId) {
this.versionId = versionId;
}
public String getVersionKey() {
return versionKey;
}
public void setVersionKey(String versionKey) {
this.versionKey = versionKey;
}
public String getDisplayVersion() {
return displayVersion;
}
public void setDisplayVersion(String displayVersion) {
this.displayVersion = displayVersion;
}
public String getIterationId() {
return iterationId;
}
public void setIterationId(String iterationId) {
this.iterationId = iterationId;
}
public String getIterationCreateTime() {
return iterationCreateTime;
}
public void setIterationCreateTime(String iterationCreateTime) {
this.iterationCreateTime = iterationCreateTime;
}
public Long getIterationCreateId() {
return iterationCreateId;
}
public void setIterationCreateId(Long iterationCreateId) {
this.iterationCreateId = iterationCreateId;
}
public DxMasterVO getMasterVO() {
return masterVO;
}
public void setMasterVO(DxMasterVO masterVO) {
this.masterVO = masterVO;
this.masterId = masterVO.getId();
}
public Long getMasterId() {
return masterId;
}
public void setMasterId(Long masterId) {
this.masterId = masterId;
}
public Long getCreatorId() {
return creatorId;
}
public void setCreatorId(Long creatorId) {
this.creatorId = creatorId;
}
public Long getModifierId() {
return modifierId;
}
public void setModifierId(Long modifierId) {
this.modifierId = modifierId;
}
public String getLockNote() {
return lockNote;
}
public void setLockNote(String lockNote) {
this.lockNote = lockNote;
}
public String getLockDate() {
return lockDate;
}
public void setLockDate(String lockDate) {
this.lockDate = lockDate;
}
public DxUserVO getLocker() {
return locker;
}
public void setLocker(DxUserVO locker) {
this.locker = locker;
}
public Long getLockerId() {
return lockerId;
}
public void setLockerId(Long lockerId) {
this.lockerId = lockerId;
}
public Long getSandboxId() {
return sandboxId;
}
public void setSandboxId(Long sandboxId) {
this.sandboxId = sandboxId;
}
public String getSecretCode() {
return secretCode;
}
public void setSecretCode(String secretCode) {
this.secretCode = secretCode;
}
}
package com.yonde.change.vo;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.RevisionControlledVO;
import com.yonde.change.vo.pr.DxProblemReportVo;
......@@ -10,6 +11,12 @@ import java.io.Serializable;
/**
* PR Link
*/
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
property = "classname",
visible = true,
defaultImpl = DxReportedAgainstVo.class
)
public class DxReportedAgainstVo extends IdVO implements Serializable {
private DxProblemReportVo source;
......@@ -20,9 +27,12 @@ public class DxReportedAgainstVo extends IdVO implements Serializable {
private Long targetId;
private String targetIdType;
private Long pboId;
private int pboId;
private String pboType;
public DxReportedAgainstVo() {
}
public DxReportedAgainstVo(DxProblemReportVo source, RevisionControlledVO target) {
if (ObjectsUtil.nonNull(source)) {
this.source = source;
......@@ -39,11 +49,11 @@ public class DxReportedAgainstVo extends IdVO implements Serializable {
}
}
public Long getPboId() {
public int getPboId() {
return pboId;
}
public void setPboId(Long pboId) {
public void setPboId(int pboId) {
this.pboId = pboId;
}
......
......@@ -2,7 +2,9 @@ package com.yonde.change.vo.ecn;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
public class DxAddressedByVo {
import java.io.Serializable;
public class DxAddressedByVo implements Serializable {
private DxChangeRequestVo source;
private DxChangeNoticeVo target;
private Long sourceId;
......@@ -10,6 +12,18 @@ public class DxAddressedByVo {
private Long targetId;
private String targetIdType;
public DxAddressedByVo() {
}
public DxAddressedByVo(DxChangeRequestVo source, DxChangeNoticeVo target) {
this.source = source;
this.sourceId = source.getId();
this.sourceIdType = source.getSubTypeName();
this.target = target;
this.targetId = target.getId();
this.targetIdType = target.getSubTypeName();
}
public DxChangeRequestVo getSource() {
return source;
}
......
......@@ -2,10 +2,10 @@ package com.yonde.change.vo.ecn;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.vo.DxOrganizationVO;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.ObjFileLinkVO;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.change.vo.DxChangeAfterDataVo;
import com.yonde.change.vo.DxChangeItemVo;
import com.yonde.common.DxCommonUtils;
import com.yonde.common.IBAHelper;
import com.yonde.common.ObjectsUtil;
......@@ -18,11 +18,12 @@ import java.io.Serializable;
import java.util.List;
import java.util.Locale;
public class DxChangeNoticeVo extends IdVO implements Serializable {
public class DxChangeNoticeVo extends DxChangeItemVo implements Serializable {
private String number;
private String name;
private String state;
private Long versionId;
private DxContextVO dxContext;
private Long dxContextId;
......@@ -43,6 +44,7 @@ public class DxChangeNoticeVo extends IdVO implements Serializable {
public DxChangeNoticeVo(WTChangeOrder2 wtChangeOrder2) throws Exception {
super(wtChangeOrder2);
this.versionId = this.id;
this.name = wtChangeOrder2.getName();
this.number = wtChangeOrder2.getNumber();
this.state = wtChangeOrder2.getState().getState().toString();
......@@ -61,6 +63,14 @@ public class DxChangeNoticeVo extends IdVO implements Serializable {
}
public Long getVersionId() {
return versionId;
}
public void setVersionId(Long versionId) {
this.versionId = versionId;
}
public String getNumber() {
return number;
}
......
......@@ -6,6 +6,7 @@ import com.yonde.basedata.vo.DxOrganizationVO;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.ObjFileLinkVO;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.change.vo.DxChangeItemVo;
import com.yonde.common.DxCommonUtils;
import com.yonde.common.IBAHelper;
import com.yonde.common.ObjectsUtil;
......@@ -22,11 +23,12 @@ import java.util.Locale;
/**
* ECR
*/
public class DxChangeRequestVo extends IdVO implements Serializable {
public class DxChangeRequestVo extends DxChangeItemVo implements Serializable {
private String number;
private String name;
private String state;
private Long versionId;
private DxContextVO dxContext;
private Long dxContextId;
......@@ -41,8 +43,14 @@ public class DxChangeRequestVo extends IdVO implements Serializable {
//受影响对象
private List<DxChangeAffectedDataVo> changeAffectedDatas;
private List<DxFormalizedByVo> formalizedBys;
public DxChangeRequestVo() {
}
public DxChangeRequestVo(WTChangeRequest2 ecr) throws Exception{
super(ecr);
this.versionId = this.id;
this.name = ecr.getName();
this.number = ecr.getNumber();
this.state = ecr.getState().getState().getDisplay();
......@@ -62,6 +70,22 @@ public class DxChangeRequestVo extends IdVO implements Serializable {
this.setObjFileLinks(DxCommonUtils.buildObjFileLinks(ecr));
}
public List<DxFormalizedByVo> getFormalizedBys() {
return formalizedBys;
}
public void setFormalizedBys(List<DxFormalizedByVo> formalizedBys) {
this.formalizedBys = formalizedBys;
}
public Long getVersionId() {
return versionId;
}
public void setVersionId(Long versionId) {
this.versionId = versionId;
}
public String getNumber() {
return number;
}
......
package com.yonde.change.vo.ecr;
import com.yonde.change.vo.pr.DxProblemReportVo;
import java.io.Serializable;
public class DxFormalizedByVo implements Serializable {
private DxProblemReportVo target;
private DxChangeRequestVo source;
private Long sourceId;
private String sourceIdType;
private Long targetId;
private String targetIdType;
public DxFormalizedByVo() {
}
public DxFormalizedByVo(DxChangeRequestVo source, DxProblemReportVo target) {
this.target = target;
this.targetId = target.getId();
this.targetIdType = target.getSubTypeName();
this.source = source;
this.sourceId = source.getId();
this.sourceIdType = source.getSubTypeName();
}
public DxProblemReportVo getTarget() {
return target;
}
public void setTarget(DxProblemReportVo target) {
this.target = target;
}
public DxChangeRequestVo getSource() {
return source;
}
public void setSource(DxChangeRequestVo source) {
this.source = source;
}
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.change.vo.pr;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.yonde.basedata.entity.users.DxUserVO;
import com.yonde.basedata.vo.DxOrganizationVO;
import com.yonde.basedata.vo.DxVersionVO;
import com.yonde.basedata.vo.IdVO;
import com.yonde.basedata.vo.ObjFileLinkVO;
import com.yonde.change.vo.DxChangeItemVo;
import com.yonde.change.vo.DxReportedAgainstVo;
import com.yonde.common.DxCommonUtils;
import com.yonde.common.IBAHelper;
......@@ -22,12 +25,17 @@ import java.util.Locale;
/**
* PR
*/
public class DxProblemReportVo extends IdVO implements Serializable {
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
property = "classname",
visible = true,
defaultImpl = DxProblemReportVo.class
)
public class DxProblemReportVo extends DxChangeItemVo implements Serializable {
private String name;
private String number;
private String state;
private String problemSource;
private String problemCategory;
private String comments;
......@@ -46,6 +54,9 @@ public class DxProblemReportVo extends IdVO implements Serializable {
private List<ObjFileLinkVO> objFileLinks;
private boolean latest = true;
private boolean checkOuted = false;
public DxProblemReportVo() {
}
......@@ -57,6 +68,7 @@ public class DxProblemReportVo extends IdVO implements Serializable {
WTOrganization organization = ifc.getOrganization();
if (ObjectsUtil.nonNull(organization)) {
this.setDxOrganization(new DxOrganizationVO(organization));
this.objOrgId = this.dxOrganization.getId();
}
this.setDxContext(new DxContextVO(ifc.getContainer()));
this.subTypeName = "DxProblemReport";//TODO 要映射
......@@ -70,12 +82,29 @@ public class DxProblemReportVo extends IdVO implements Serializable {
this.setObjFileLinks(DxCommonUtils.buildObjFileLinks(ifc));
}
public boolean isLatest() {
return latest;
}
public void setLatest(boolean latest) {
this.latest = latest;
}
public boolean isCheckOuted() {
return checkOuted;
}
public void setCheckOuted(boolean checkOuted) {
this.checkOuted = checkOuted;
}
public DxContextVO getDxContext() {
return dxContext;
}
public void setDxContext(DxContextVO dxContext) {
this.dxContext = dxContext;
this.dxContextId = dxContext.getId();
}
public Long getDxContextId() {
......
......@@ -5,7 +5,6 @@ import com.yonde.basedata.vo.DxDocumentFolderVO;
import com.yonde.change.vo.DxChangeAffectedDataVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
import com.yonde.context.vo.DxContextVO;
import org.apache.commons.collections.ListUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.util.CollectionUtils;
......@@ -15,8 +14,6 @@ import wt.fc.collections.*;
import wt.folder.Folder;
import wt.folder.FolderEntry;
import wt.folder.FolderHelper;
import wt.folder.FolderNotFoundException;
import wt.iba.value.IBAHolder;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerRef;
import wt.lifecycle.LifeCycleServerHelper;
......@@ -34,6 +31,7 @@ import wt.type.TypedUtility;
import wt.type.TypedUtilityServiceHelper;
import wt.util.WTException;
import wt.util.WTPropertyVetoException;
import wt.vc.Mastered;
import wt.workflow.engine.WfEngineHelper;
import wt.workflow.engine.WfProcess;
import wt.workflow.engine.WfState;
......@@ -43,16 +41,14 @@ import java.sql.Timestamp;
import java.util.*;
/**
*
* @author liuwei
*/
public class ChangeOrderUtil
{
public class ChangeOrderUtil {
private static final Logger LOGGER = LogR.getLogger(ChangeOrderUtil.class.getName());
/**
* create changeOrder
*
*
* @param ecnType
* @param name
* @param folder
......@@ -65,18 +61,18 @@ public class ChangeOrderUtil
* @throws WTPropertyVetoException
*/
public static WTChangeOrder2 createWTChangeOrder2(String ecnType, String name, Folder folder,
ChangeNoticeComplexity changeNoticeComplexity, String description, Timestamp timestamp,
Map<String, String> ibaMap) throws WTException, WTPropertyVetoException{
ChangeNoticeComplexity changeNoticeComplexity, String description, Timestamp timestamp,
Map<String, String> ibaMap) throws WTException, WTPropertyVetoException {
WTChangeOrder2 changeOrder = WTChangeOrder2.newWTChangeOrder2(name);
TypeDefinitionReference typeDefinitionRef = TypedUtility.getTypeDefinitionReference(ecnType);
if (typeDefinitionRef == null) {
typeDefinitionRef = TypeDefinitionReference.newTypeDefinitionReference();
}
changeOrder.setTypeDefinitionReference(typeDefinitionRef);
if(!StringUtils.isEmpty(description)){
if (!StringUtils.isEmpty(description)) {
changeOrder.setDescription(description);
}
if (timestamp != null){
if (timestamp != null) {
changeOrder.setNeedDate(timestamp);
}
changeOrder.setChangeNoticeComplexity(changeNoticeComplexity);
......@@ -102,9 +98,8 @@ public class ChangeOrderUtil
* @throws WTException
* @throws WTPropertyVetoException
*/
public static WTChangeOrder2 createWTChangeOrder2(String name, String ecnType, Folder folder, String description,Map<String, Object> ibaMap)
throws WTException, WTPropertyVetoException
{
public static WTChangeOrder2 createWTChangeOrder2(String name, String ecnType, Folder folder, String description, Map<String, Object> ibaMap)
throws WTException, WTPropertyVetoException {
WTChangeOrder2 changeOrder = WTChangeOrder2.newWTChangeOrder2(name);
TypeDefinitionReference typeDefinitionRef = TypedUtility.getTypeDefinitionReference(ecnType);
......@@ -112,7 +107,7 @@ public class ChangeOrderUtil
typeDefinitionRef = TypeDefinitionReference.newTypeDefinitionReference();
}
changeOrder.setTypeDefinitionReference(typeDefinitionRef);
if(!StringUtils.isEmpty(description)){
if (!StringUtils.isEmpty(description)) {
changeOrder.setDescription(description);
}
changeOrder.setChangeNoticeComplexity(ChangeNoticeComplexity.BASIC);
......@@ -139,19 +134,15 @@ public class ChangeOrderUtil
* @throws WTException
* @throws WTPropertyVetoException
*/
public static WTChangeOrder2 createWTChangeOrder2(WTChangeOrder2 changeOrder, String name, String ecnType, Folder folder, String description,Map<String, Object> ibaMap)
throws WTException, WTPropertyVetoException
{
public static WTChangeOrder2 createWTChangeOrder2(WTChangeOrder2 changeOrder, String name, String ecnType, Folder folder, String description, Map<String, Object> ibaMap)
throws WTException, WTPropertyVetoException, RemoteException {
if (ObjectsUtil.isNull(changeOrder)) {
changeOrder = WTChangeOrder2.newWTChangeOrder2(name);
TypeDefinitionReference tydef = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("wt.change2.WTChangeOrder2");
changeOrder.setTypeDefinitionReference(tydef);
}
TypeDefinitionReference typeDefinitionRef = TypedUtility.getTypeDefinitionReference(ecnType);
if (typeDefinitionRef == null) {
typeDefinitionRef = TypeDefinitionReference.newTypeDefinitionReference();
}
changeOrder.setTypeDefinitionReference(typeDefinitionRef);
if(!StringUtils.isEmpty(description)){
if (!StringUtils.isEmpty(description)) {
changeOrder.setDescription(description);
}
changeOrder.setChangeNoticeComplexity(ChangeNoticeComplexity.BASIC);
......@@ -171,23 +162,20 @@ public class ChangeOrderUtil
/**
* autoCreateECAFromECN
*
*
* @param changeOrder
* @return
* @throws WTException
* @throws WTPropertyVetoException
*/
public static WTChangeActivity2 createECA(WTChangeOrder2 changeOrder) throws WTException, WTPropertyVetoException
{
public static WTChangeActivity2 createECA(WTChangeOrder2 changeOrder) throws WTException, WTPropertyVetoException {
WTPrincipalReference sessioner = wt.session.SessionHelper.manager.getPrincipalReference();
// return createECA(changeOrder, "EC LoadSheet_" + docName + "_" +
// changeOrder.getName(), sessioner, sessioner);
return createECA(changeOrder, changeOrder.getName(), sessioner, sessioner);
}
/**
* create the ECA and set the attribute
*
*
* @param changeOrder
* @param econame
* @param sessioner1
......@@ -198,33 +186,25 @@ public class ChangeOrderUtil
* @throws WTPropertyVetoException
*/
public static WTChangeActivity2 createECA(WTChangeOrder2 changeOrder, String econame,
WTPrincipalReference sessioner1, WTPrincipalReference sessioner2) throws WTException,
WTPropertyVetoException
{
WTPrincipalReference sessioner1, WTPrincipalReference sessioner2) throws WTException {
WTChangeActivity2 changeActivity = null;
try
{
ChangeOrderIfc co = (ChangeOrderIfc) changeOrder;
try {
changeActivity = WTChangeActivity2.newWTChangeActivity2(econame);
changeActivity.setDescription(econame);
changeActivity.setContainer(changeOrder.getContainer());
WTContainer container = changeOrder.getContainer();
WTContainerRef containerRef = WTContainerRef.newWTContainerRef(container);
Folder folder = FolderHelper.service.getFolder("/Default/", containerRef);
ChangeActivityIfc ca = (ChangeActivityIfc) changeActivity;
ChangeActivityIfc ca = changeActivity;
FolderHelper.assignLocation((FolderEntry) ca, folder);
// FolderHelper.assignLocation((FolderEntry)ca,
// FolderHelper.getFolder(changeOrder));
ca = (ChangeActivityIfc) PersistenceHelper.manager.save(ca);
IncludedIn2Delegate del = new IncludedIn2Delegate();
IncludedInIfc inc = (IncludedInIfc) del.getBinaryLink((ChangeItemIfc) co, ca);
inc = (IncludedInIfc) PersistenceHelper.manager.save(inc);
changeActivity = (WTChangeActivity2) ca;
IncludedInIfc inc = (IncludedInIfc) del.getBinaryLink(changeOrder, ca);
PersistenceHelper.manager.save(inc);
changeActivity = (WTChangeActivity2) PersistenceHelper.manager.refresh(ca);
} catch (Exception e)
{
} catch (Exception e) {
LOGGER.error(e.getLocalizedMessage(), e);
throw new WTException(e, e.getLocalizedMessage());
}
......@@ -233,7 +213,7 @@ public class ChangeOrderUtil
/**
* The method used to judge whether the object has been existend in the result item.
*
*
* @param persistable
* @param ca
* @return
......@@ -241,16 +221,13 @@ public class ChangeOrderUtil
* @throws WTPropertyVetoException
*/
public static boolean inChangeablesAfter(Persistable persistable, WTChangeActivity2 ca) throws WTException,
WTPropertyVetoException
{
WTPropertyVetoException {
boolean flag = false;
QueryResult caResult = ChangeHelper2.service.getChangeablesAfter(ca);
while (caResult.hasMoreElements())
{
while (caResult.hasMoreElements()) {
Persistable persistableAfter = (Persistable) caResult.nextElement();
flag = persistable.equals(persistableAfter);
if (flag)
{
if (flag) {
break;
}
}
......@@ -259,7 +236,7 @@ public class ChangeOrderUtil
/**
* The method used to judge whether the object has been existend in the affect item.
*
*
* @param persistable
* @param ca
* @return
......@@ -267,16 +244,13 @@ public class ChangeOrderUtil
* @throws WTPropertyVetoException
*/
public static boolean inChangeablesBefore(Persistable persistable, WTChangeActivity2 ca) throws WTException,
WTPropertyVetoException
{
WTPropertyVetoException {
boolean flag = false;
QueryResult caResult = ChangeHelper2.service.getChangeablesBefore(ca);
while (caResult.hasMoreElements())
{
while (caResult.hasMoreElements()) {
Persistable persistableAfter = (Persistable) caResult.nextElement();
flag = persistable.equals(persistableAfter);
if (flag)
{
if (flag) {
break;
}
}
......@@ -285,50 +259,42 @@ public class ChangeOrderUtil
/**
* The method used to judge whether the object has the running ecn.
*
*
* @param changeable
* @return
* @throws WTException
*/
public static boolean hasEcnRunning(Changeable2 changeable) throws WTException
{
public static boolean hasEcnRunning(Changeable2 changeable) throws WTException {
boolean result = false;
if (changeable == null)
{
if (changeable == null) {
return result;
}
String ecnTypes = "CTO_Change,CTO_MFGReady_Release,CTO_OB,CTO_Planning_Release";
String states = "OPEN,UNDERREVIEW";
try
{
try {
// get ECA
QueryResult qrr = ChangeHelper2.service.getChangingChangeActivities(changeable);
while (qrr.hasMoreElements())
{
while (qrr.hasMoreElements()) {
WTChangeActivity2 eca = (WTChangeActivity2) qrr.nextElement();
// get ecn
QueryResult qr1 = ChangeHelper2.service.getChangeOrder(eca);
if (qr1 != null && qr1.hasMoreElements())
{
if (qr1 != null && qr1.hasMoreElements()) {
WTChangeOrder2 ecn = (WTChangeOrder2) qr1.nextElement();
String type = TypedUtilityServiceHelper.service.getExternalTypeIdentifier(ecn);
LOGGER.debug("====ecntype:" + type);
if (type != null && ecnTypes.contains(type.substring(type.lastIndexOf(".") + 1)))
{
if (type != null && ecnTypes.contains(type.substring(type.lastIndexOf(".") + 1))) {
String ecnState = ecn.getState().getState().toString();
LOGGER.debug("====ecnState:" + ecnState);
if (states.contains(ecnState))
{
if (states.contains(ecnState)) {
return true;
}
}
}
}
} catch (Exception e)
{
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
throw new WTException(e);
}
......@@ -337,35 +303,29 @@ public class ChangeOrderUtil
/**
* The method used to judge whether the object has the running process.
*
*
* @param p
* @return
* @throws Exception
*/
public static boolean hasProcessSingle(Persistable p) throws WTException
{
public static boolean hasProcessSingle(Persistable p) throws WTException {
boolean result = false;
QueryResult qrProcs = WfEngineHelper.service.getAssociatedProcesses(p, null, null);
while (qrProcs.hasMoreElements())
{
while (qrProcs.hasMoreElements()) {
WfProcess proc = (WfProcess) qrProcs.nextElement();
if (proc.getState().equals(WfState.OPEN_RUNNING))
{
if (proc.getState().equals(WfState.OPEN_RUNNING)) {
return true;
}
}
if (p instanceof Promotable)
{
if (p instanceof Promotable) {
WTCollection col = new WTHashSet();
col.add((Promotable) p);
WTCollection pns = MaturityHelper.service.getPromotionNotices(col);
Iterator itr = pns.iterator();
while (itr.hasNext())
{
while (itr.hasNext()) {
ObjectReference or = (ObjectReference) itr.next();
if (hasProcessSingle(or.getObject()))
{
if (hasProcessSingle(or.getObject())) {
return true;
}
}
......@@ -391,26 +351,21 @@ public class ChangeOrderUtil
/**
* This method is used to get ECN by it's name or number.
*
* @param name
* ECN name or number
*
* @param name ECN name or number
* @return Engineering Change Notice
*/
public static WTChangeOrder2 getECN(String name)
{
try
{
public static WTChangeOrder2 getECN(String name) {
try {
QuerySpec criteria = new QuerySpec(WTChangeOrder2.class);
criteria.appendSearchCondition(new SearchCondition(WTChangeOrder2.class, WTChangeOrder2.NAME,
SearchCondition.EQUAL, name, false));
QueryResult results = PersistenceHelper.manager.find(criteria);
if (results.hasMoreElements())
{
if (results.hasMoreElements()) {
return (WTChangeOrder2) results.nextElement();
}
} catch (Exception e)
{
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return null;
......@@ -418,25 +373,20 @@ public class ChangeOrderUtil
/**
* This method is used to get ECN by it's number.
*
* @param number
* ECN name or number
*
* @param number ECN name or number
* @return Engineering Change Notice
*/
public static WTChangeOrder2 getECNByNumber(String number)
{
try
{
public static WTChangeOrder2 getECNByNumber(String number) {
try {
QuerySpec criteria = new QuerySpec(WTChangeOrder2.class);
criteria.appendSearchCondition(new SearchCondition(WTChangeOrder2.class, WTChangeOrder2.NUMBER,
SearchCondition.EQUAL, number, false));
QueryResult results = PersistenceHelper.manager.find(criteria);
if (results.hasMoreElements())
{
if (results.hasMoreElements()) {
return (WTChangeOrder2) results.nextElement();
}
} catch (Exception e)
{
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return null;
......@@ -444,50 +394,43 @@ public class ChangeOrderUtil
/**
* This method is used to get ECR by it's number.
*
*
* @param ecrNumber
* @return
*/
public static WTChangeRequest2 getECRByNumber(String ecrNumber)
{
try
{
public static WTChangeRequest2 getECRByNumber(String ecrNumber) {
try {
QuerySpec criteria = new QuerySpec(WTChangeRequest2.class);
criteria.appendSearchCondition(new SearchCondition(WTChangeRequest2.class, WTChangeRequest2.NUMBER,
SearchCondition.EQUAL, ecrNumber, false));
QueryResult results = PersistenceHelper.manager.find(criteria);
if (results.hasMoreElements())
{
if (results.hasMoreElements()) {
return (WTChangeRequest2) results.nextElement();
}
} catch (Exception e)
{
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return null;
}
/**
* This method is used to get ECR by it's number.
*
* @param issueNumber
* @return
*/
public static WTChangeIssue getIssueByNumber(String issueNumber)
{
try
{
public static WTChangeIssue getIssueByNumber(String issueNumber) {
try {
QuerySpec criteria = new QuerySpec(WTChangeIssue.class);
criteria.appendSearchCondition(new SearchCondition(WTChangeIssue.class, WTChangeIssue.NUMBER,
SearchCondition.EQUAL, issueNumber, false));
QueryResult results = PersistenceHelper.manager.find(criteria);
if (results.hasMoreElements())
{
if (results.hasMoreElements()) {
return (WTChangeIssue) results.nextElement();
}
} catch (Exception e)
{
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return null;
......@@ -505,8 +448,7 @@ public class ChangeOrderUtil
public static List<WTObject> getChangeBefore(WTChangeRequest2 ecr) throws ChangeException2, WTException {
List<WTObject> list = new ArrayList<WTObject>();
QueryResult res = ChangeHelper2.service.getChangeables(ecr);
while (res.hasMoreElements())
{
while (res.hasMoreElements()) {
WTObject object = (WTObject) res.nextElement();
list.add(object);
}
......@@ -524,17 +466,16 @@ public class ChangeOrderUtil
public static List<WTObject> getChangeBefore(WTChangeIssue issue) throws ChangeException2, WTException {
List<WTObject> list = new ArrayList<WTObject>();
QueryResult res = ChangeHelper2.service.getChangeables(issue);
while (res.hasMoreElements())
{
while (res.hasMoreElements()) {
WTObject object = (WTObject) res.nextElement();
list.add(object);
}
return list;
}
/**
* get all affected object from ECN
*
*
* @param ecn
* @return
* @throws ChangeException2
......@@ -543,12 +484,10 @@ public class ChangeOrderUtil
public static List<WTObject> getChangeBefore(WTChangeOrder2 ecn) throws ChangeException2, WTException {
List<WTObject> list = new ArrayList<WTObject>();
QueryResult result = ChangeHelper2.service.getChangeActivities(ecn);
while (result.hasMoreElements())
{
while (result.hasMoreElements()) {
WTChangeActivity2 activity = (WTChangeActivity2) result.nextElement();
QueryResult res = ChangeHelper2.service.getChangeablesBefore(activity);
while (res.hasMoreElements())
{
while (res.hasMoreElements()) {
WTObject object = (WTObject) res.nextElement();
list.add(object);
}
......@@ -558,21 +497,18 @@ public class ChangeOrderUtil
/**
* get all resulting object from ECN
*
*
* @param ecn
* @return
* @throws WTException
*/
public static List<WTObject> getChangeAfter(WTChangeOrder2 ecn) throws WTException
{
public static List<WTObject> getChangeAfter(WTChangeOrder2 ecn) throws WTException {
List<WTObject> list = new ArrayList<WTObject>();
QueryResult result = ChangeHelper2.service.getChangeActivities(ecn);
while (result.hasMoreElements())
{
while (result.hasMoreElements()) {
WTChangeActivity2 activity = (WTChangeActivity2) result.nextElement();
QueryResult res = ChangeHelper2.service.getChangeablesAfter(activity);
while (res.hasMoreElements())
{
while (res.hasMoreElements()) {
WTObject object = (WTObject) res.nextElement();
list.add(object);
}
......@@ -582,29 +518,45 @@ public class ChangeOrderUtil
/**
* get all ChangeRequests of ChangeNotice
*
*
* @param cn
* @return
* @throws WTException
*/
public static List<WTChangeRequest2> getChangeRequestByChangeNotice(WTChangeOrder2 cn) throws WTException
{
public static List<WTChangeRequest2> getChangeRequestByChangeNotice(WTChangeOrder2 cn) throws WTException {
List<WTChangeRequest2> results = new ArrayList<WTChangeRequest2>();
QueryResult qr = ChangeHelper2.service.getChangeRequest(cn);
while (qr.hasMoreElements())
{
while (qr.hasMoreElements()) {
WTChangeRequest2 cr = (WTChangeRequest2) qr.nextElement();
if (!results.contains(cr))
{
if (!results.contains(cr)) {
results.add(cr);
}
}
return results;
}
/**
* get all ChangeIssues of ChangeRequest
*
* @param cr
* @return
* @throws WTException
*/
public static List<WTChangeIssue> getChangeIssueByChangeRequest(WTChangeRequest2 cr) throws WTException {
List<WTChangeIssue> results = new ArrayList<WTChangeIssue>();
QueryResult qr = ChangeHelper2.service.getChangeIssues(cr);
while (qr.hasMoreElements()) {
WTChangeIssue issue = (WTChangeIssue) qr.nextElement();
if (!results.contains(issue)) {
results.add(issue);
}
}
return results;
}
/**
* add Changeable Before To ChangeNotice
*
*
* @param cn
* @param changeables
* @param caName
......@@ -612,40 +564,43 @@ public class ChangeOrderUtil
* @throws WTException
* @throws
*/
public static WTChangeOrder2 addAffectedDataToChangeNotice(WTChangeOrder2 cn, List<Changeable2> changeables,
String caName) throws WTException
{
QueryResult qr = ChangeHelper2.service.getChangeActivities(cn);
WTChangeActivity2 toBeAddedCA = null;
while (qr.hasMoreElements())
{
WTChangeActivity2 ca = (WTChangeActivity2) qr.nextElement();
if (caName == null || caName.equals(""))
{
toBeAddedCA = ca;
break;
} else
{
if (caName.trim().equals(ca.getName()))
{
public static WTChangeOrder2 addAffectedDataToChangeNotice(WTChangeOrder2 cn, Vector<Changeable2> changeables,
String caName) throws WTException, WTPropertyVetoException {
boolean enforced = SessionServerHelper.manager.setAccessEnforced(false);
try {
QueryResult qr = ChangeHelper2.service.getChangeActivities(cn);
WTChangeActivity2 toBeAddedCA = null;
while (qr.hasMoreElements()) {
WTChangeActivity2 ca = (WTChangeActivity2) qr.nextElement();
if (caName == null || caName.equals("")) {
toBeAddedCA = ca;
break;
} else {
if (caName.trim().equals(ca.getName())) {
toBeAddedCA = ca;
break;
}
}
toBeAddedCA = ca;
}
toBeAddedCA = ca;
}
if (toBeAddedCA != null)
{
ChangeHelper2.service.storeAssociations(AffectedActivityData.class, toBeAddedCA,
ObjectsUtil.toVector(changeables));
if (ObjectsUtil.isNull(toBeAddedCA)) {
toBeAddedCA = ChangeOrderUtil.createECA(cn);
}
LOGGER.error("toBeAddedCA======" + toBeAddedCA);
LOGGER.error("changeables======" + changeables.size());
Vector vector = ChangeHelper2.service.storeAssociations(AffectedActivityData.class, toBeAddedCA,
changeables);
LOGGER.error("changeables vector======" + vector.size());
cn = (WTChangeOrder2) PersistenceHelper.manager.refresh(cn);
} finally {
SessionServerHelper.manager.setAccessEnforced(enforced);
}
cn = (WTChangeOrder2) PersistenceHelper.manager.refresh(cn);
return cn;
}
/**
* add Changeable After To ChangeNotice
*
*
* @param cn
* @param changeables
* @param caName
......@@ -653,85 +608,88 @@ public class ChangeOrderUtil
* @throws WTException
* @throws
*/
public static WTChangeOrder2 addChangeableAfterToChangeNotice(WTChangeOrder2 cn, List<Changeable2> changeables,
String caName) throws WTException
{
public static WTChangeOrder2 addChangeableAfterToChangeNotice(WTChangeOrder2 cn, Vector<Changeable2> changeables,
String caName) throws WTException, WTPropertyVetoException {
QueryResult qr = ChangeHelper2.service.getChangeActivities(cn);
WTChangeActivity2 toBeAddedCA = null;
while (qr.hasMoreElements())
{
while (qr.hasMoreElements()) {
WTChangeActivity2 ca = (WTChangeActivity2) qr.nextElement();
if (caName == null || caName.equals(""))
{
if (caName == null || caName.equals("")) {
toBeAddedCA = ca;
break;
} else
{
if (caName.trim().equals(ca.getName()))
{
} else {
if (caName.trim().equals(ca.getName())) {
toBeAddedCA = ca;
break;
}
}
toBeAddedCA = ca;
}
if (toBeAddedCA != null)
{
ChangeHelper2.service.storeAssociations(ChangeRecord2.class, toBeAddedCA,
ObjectsUtil.toVector(changeables));
if (ObjectsUtil.isNull(toBeAddedCA)) {
toBeAddedCA = ChangeOrderUtil.createECA(cn);
}
ChangeHelper2.service.storeAssociations(ChangeRecord2.class, toBeAddedCA,
changeables);
cn = (WTChangeOrder2) PersistenceHelper.manager.refresh(cn);
return cn;
}
/**
* add ChangeNotice To ChangeRequest
*
*
* @param cn
* @return
*/
public static WTChangeOrder2 addChangeNoticeToChangeRequest(WTChangeOrder2 cn, WTChangeRequest2 cr)
throws WTException
{
try
{
throws WTException {
try {
ChangeHelper2.service.saveAddressedBy(cr, cn);
cn = (WTChangeOrder2) PersistenceHelper.manager.refresh(cn);
} catch (WTException e)
{
} catch (WTException e) {
LOGGER.error(e.getMessage(), e);
throw new WTException(e, e.getMessage());
}
return cn;
}
/**
* add ChangeRequest To WTChangeIssue
*
* @param issue
* @return
*/
public static WTChangeRequest2 addChangeRequestToChangeIssue(WTChangeIssue issue, WTChangeRequest2 cr)
throws WTException {
try {
ChangeHelper2.service.saveFormalizedBy(cr, issue);
cr = (WTChangeRequest2) PersistenceHelper.manager.refresh(cr);
} catch (WTException e) {
LOGGER.error(e.getMessage(), e);
throw new WTException(e, e.getMessage());
}
return cr;
}
/**
* check ChangeNotice is have a ChangeRequest
*
*
* @param cn
* @param changeRequestNumber
* @return
*/
public static boolean checkChangeNoticeHasChangeRequest(WTChangeOrder2 cn, String changeRequestNumber)
{
try
{
public static boolean checkChangeNoticeHasChangeRequest(WTChangeOrder2 cn, String changeRequestNumber) {
try {
QueryResult qr = ChangeHelper2.service.getChangeRequest(cn);
while (qr.hasMoreElements())
{
while (qr.hasMoreElements()) {
WTChangeRequest2 cr = (WTChangeRequest2) qr.nextElement();
if (changeRequestNumber == null || changeRequestNumber.trim().equals(""))
{
if (changeRequestNumber == null || changeRequestNumber.trim().equals("")) {
return true;
}
if (cr.getNumber().equalsIgnoreCase(changeRequestNumber))
{
if (cr.getNumber().equalsIgnoreCase(changeRequestNumber)) {
return true;
}
}
} catch (WTException e)
{
} catch (WTException e) {
LOGGER.error(e.getMessage(), e);
}
return false;
......@@ -741,65 +699,124 @@ public class ChangeOrderUtil
* @param changeOrder
* @throws WTException
*/
public static void deleteChangeAfter(WTChangeOrder2 changeOrder) throws WTException
{
public static void deleteChangeAfter(WTChangeOrder2 changeOrder) throws WTException {
QueryResult ecas = ChangeHelper2.service.getChangeActivities(changeOrder);
while (ecas.hasMoreElements())
{
while (ecas.hasMoreElements()) {
WTChangeActivity2 eca = (WTChangeActivity2) ecas.nextElement();
QueryResult afterItems = ChangeHelper2.service.getChangeablesAfter(eca);
while (afterItems.hasMoreElements())
{
while (afterItems.hasMoreElements()) {
WTObject object = (WTObject) afterItems.nextElement();
QueryResult qrt = PersistenceHelper.manager.find(ChangeRecord2.class, eca,
ChangeRecord2.CHANGE_ACTIVITY2_ROLE, object);
Vector<Persistable> vector = new Vector<Persistable>();
if (qrt.hasMoreElements())
{
if (qrt.hasMoreElements()) {
vector = qrt.getObjectVector().getVector();
for (int i = 0; i < vector.size(); i++)
{
PersistenceHelper.manager.delete((Persistable) vector.get(i));
for (int i = 0; i < vector.size(); i++) {
PersistenceHelper.manager.delete(vector.get(i));
}
}
}
}
}
/**
* @param changeOrder
* @throws WTException
*/
public static void deleteChangeBefore(WTChangeOrder2 changeOrder) throws WTException {
QueryResult ecas = ChangeHelper2.service.getChangeActivities(changeOrder);
while (ecas.hasMoreElements()) {
WTChangeActivity2 eca = (WTChangeActivity2) ecas.nextElement();
QueryResult afterItems = ChangeHelper2.service.getChangeablesBefore(eca);
while (afterItems.hasMoreElements()) {
WTObject object = (WTObject) afterItems.nextElement();
QueryResult qrt = PersistenceHelper.manager.find(AffectedActivityData.class, eca,
AffectedActivityData.CHANGE_ACTIVITY2_ROLE, object);
Vector<Persistable> vector = new Vector<Persistable>();
if (qrt.hasMoreElements()) {
vector = qrt.getObjectVector().getVector();
for (int i = 0; i < vector.size(); i++) {
PersistenceHelper.manager.delete(vector.get(i));
}
}
}
}
}
/**
* @param issue
* @throws WTException
*/
public static void deletePrData(WTChangeIssue issue) throws WTException {
QueryResult items = ChangeHelper2.service.getChangeables(issue);
while (items.hasMoreElements()) {
WTObject object = (WTObject) items.nextElement();
QueryResult qrt = PersistenceHelper.manager.find(ReportedAgainst.class, issue,
ReportedAgainst.CHANGEABLE2_ROLE, object);
Vector<Persistable> vector = new Vector<Persistable>();
if (qrt.hasMoreElements()) {
vector = qrt.getObjectVector().getVector();
for (int i = 0; i < vector.size(); i++) {
PersistenceHelper.manager.delete(vector.get(i));
}
}
}
}
/**
* @param changeRequest2
* @throws WTException
*/
public static void deleteEcrData(WTChangeRequest2 changeRequest2) throws WTException {
QueryResult items = ChangeHelper2.service.getChangeables(changeRequest2);
while (items.hasMoreElements()) {
WTObject object = (WTObject) items.nextElement();
QueryResult qrt = PersistenceHelper.manager.find(RelevantRequestData2.class, changeRequest2,
RelevantRequestData2.CHANGEABLE2_ROLE, object);
Vector<Persistable> vector = new Vector<Persistable>();
if (qrt.hasMoreElements()) {
vector = qrt.getObjectVector().getVector();
for (int i = 0; i < vector.size(); i++) {
PersistenceHelper.manager.delete(vector.get(i));
}
}
}
}
public static void setStateOfPartAfter(ChangeOrder2 order, State state) throws WTException {
QueryResult qr = ChangeHelper2.service.getChangeablesAfter(order);
WTList changeables = new WTArrayList(qr);
LifeCycleServerHelper.service.setState(changeables, state);
}
public static void setStateOfAffected(ChangeOrder2 order, State state) throws WTException {
QueryResult qr = ChangeHelper2.service.getChangeablesBefore(order);
WTList changeables = new WTArrayList(qr);
LifeCycleServerHelper.service.setState(changeables, state);
}
public static List<WTChangeOrder2> getEcnByNumberPrefix(String numberPrefix) throws WTException {
List<WTChangeOrder2> ecnList = new ArrayList<WTChangeOrder2>();
WTChangeOrder2 ecn = null;
QuerySpec querySpec = new QuerySpec(WTChangeOrder2.class);
querySpec.setAdvancedQueryEnabled(true);
SearchCondition searchCondi = new SearchCondition(WTChangeOrder2.class,
WTChangeOrder2.NUMBER, SearchCondition.LIKE, numberPrefix + "%");
querySpec.appendWhere(searchCondi, new int[] { 0 });
QueryResult qr = PersistenceHelper.manager
.find((StatementSpec) querySpec);
while (qr.hasMoreElements()) {
ecn = (WTChangeOrder2) qr.nextElement();
ecnList.add(ecn);
}
return ecnList;
}
List<WTChangeOrder2> ecnList = new ArrayList<WTChangeOrder2>();
WTChangeOrder2 ecn = null;
QuerySpec querySpec = new QuerySpec(WTChangeOrder2.class);
querySpec.setAdvancedQueryEnabled(true);
SearchCondition searchCondi = new SearchCondition(WTChangeOrder2.class,
WTChangeOrder2.NUMBER, SearchCondition.LIKE, numberPrefix + "%");
querySpec.appendWhere(searchCondi, new int[]{0});
QueryResult qr = PersistenceHelper.manager
.find((StatementSpec) querySpec);
while (qr.hasMoreElements()) {
ecn = (WTChangeOrder2) qr.nextElement();
ecnList.add(ecn);
}
return ecnList;
}
/**
* Get firist eca by ecn
*
*
* @param ecn
* @return
*/
......@@ -813,9 +830,10 @@ public class ChangeOrderUtil
}
return eca;
}
/**
* query eca by ecn
*
*
* @param ecn
* @return
*/
......@@ -831,8 +849,10 @@ public class ChangeOrderUtil
return null;
}
/**
* getECNByECA
*
* @param eca
* @return
*/
......@@ -841,7 +861,7 @@ public class ChangeOrderUtil
try {
QueryResult queryResult1 = ChangeHelper2.service.getChangeOrder(eca);
order2 = (WTChangeOrder2) queryResult1.nextElement();
} catch (WTException e) {
} catch (WTException e) {
LOGGER.error(e.getMessage());
}
return order2;
......@@ -878,7 +898,7 @@ public class ChangeOrderUtil
/**
* 为变更请求添加内容对象
*
* @param issue 目标变更请求
* @param issue 目标变更请求
* @param changeable 变更请求内容对象
* @return 添加好的变更请求对象
*/
......@@ -909,7 +929,7 @@ public class ChangeOrderUtil
* @param ecr
* @param affectedData
*/
@SuppressWarnings({ "rawtypes", "null" })
@SuppressWarnings({"rawtypes", "null"})
public static void setECRAffectedData(WTChangeRequest2 ecr, Vector affectedData) {
String user = "";
try {
......@@ -941,7 +961,7 @@ public class ChangeOrderUtil
* @param issue
* @param affectedData
*/
@SuppressWarnings({ "rawtypes", "null" })
@SuppressWarnings({"rawtypes", "null"})
public static void setIssueAffectedData(WTChangeIssue issue, Vector affectedData) {
String user = "";
try {
......@@ -950,7 +970,7 @@ public class ChangeOrderUtil
} catch (Exception e) {
}
try {
Vector vector = ChangeHelper2.service.storeAssociations(RelevantAnalysisData.class, issue,
Vector vector = ChangeHelper2.service.storeAssociations(ReportedAgainst.class, issue,
affectedData);
if (vector != null)
System.out.println("\t==after adding affected data, return vector=" + vector.toString());
......@@ -977,7 +997,7 @@ public class ChangeOrderUtil
* @throws RemoteException
* @throws ChangeException2
*/
@SuppressWarnings({ "rawtypes" })
@SuppressWarnings({"rawtypes"})
private static WTChangeRequest2 createECR(DxChangeRequestVo entityVO, WTContainer container)
throws WTException, WTPropertyVetoException, RemoteException {
WTChangeRequest2 ecr = null;
......@@ -1007,7 +1027,7 @@ public class ChangeOrderUtil
//设置ecr的文件夹路径
Folder location = DxCommonUtils.makeFolder(folderPath, container.getContainerReference());
//String changeFolder = FolderUtil.getFolderString(FolderUtil.CHANGE_FOLDER);
if(location != null){
if (location != null) {
WTValuedHashMap loacationMap = new WTValuedHashMap();
loacationMap.put(ecr, location);
FolderHelper.assignLocations(loacationMap);
......@@ -1048,6 +1068,37 @@ public class ChangeOrderUtil
return ecr;
}
/**
* 更改改名
* @param changeItem
* @param name
* @throws Exception
*/
public static void updateChangeItemName(VersionableChangeItem changeItem, String name) throws Exception {
Mastered master = changeItem.getMaster();
if (master instanceof WTChangeOrder2Master) {
WTChangeOrder2Master changeOrder2Master = (WTChangeOrder2Master) master;
WTChangeOrder2MasterIdentity identity = (WTChangeOrder2MasterIdentity)changeOrder2Master.getIdentificationObject();
identity.setName(name);
IdentityHelper.service.changeIdentity(changeOrder2Master, identity);
return;
}
if (master instanceof WTChangeIssueMaster) {
WTChangeIssueMaster issueMaster = (WTChangeIssueMaster) master;
WTChangeIssueMasterIdentity identity = (WTChangeIssueMasterIdentity)issueMaster.getIdentificationObject();
identity.setName(name);
IdentityHelper.service.changeIdentity(issueMaster, identity);
return;
}
if (master instanceof WTChangeRequest2Master) {
WTChangeRequest2Master changeRequest2Master = (WTChangeRequest2Master) master;
WTChangeRequest2MasterIdentity identity = (WTChangeRequest2MasterIdentity) changeRequest2Master.getIdentificationObject();
identity.setName(name);
IdentityHelper.service.changeIdentity(changeRequest2Master, identity);
return;
}
}
/**
* retrive a not-null value of a given string
*
......@@ -1061,5 +1112,5 @@ public class ChangeOrderUtil
return value;
}
}
\ No newline at end of file
......@@ -612,13 +612,12 @@ public class CommonUtil implements RemoteAccess {
* @throws WTException
*/
public static WTPart getPreviousVersion(WTPart part) {
WTPart result = null;
WTPart result = part;
try{
String vid = VersionControlHelper.getVersionIdentifier((Versioned) part).getValue();
WTPartMaster partMaster = (WTPartMaster) part.getMaster();
QueryResult qr = VersionControlHelper.service.allVersionsOf(partMaster);
while (qr.hasMoreElements()) {
result = (WTPart)qr.nextElement();
String vid2 = VersionControlHelper.getVersionIdentifier((Versioned)result).getValue();
//modified by luofeng on 20160818 获取前一个版本必须是相同视图的版本
String currView = part.getViewName() == null ? "":part.getViewName();
......@@ -626,6 +625,7 @@ public class CommonUtil implements RemoteAccess {
if (vid2.compareTo(vid) < 0 && preView.equals(currView)){
break;
}
result = (WTPart)qr.nextElement();
}
}catch(WTException wte){
log.error(wte.getMessage());
......@@ -838,6 +838,4 @@ public class CommonUtil implements RemoteAccess {
}
return folder;
}
}
......@@ -164,6 +164,9 @@ public class DxPartUtil implements RemoteAccess, Serializable {
WTPart latestVersionPart = part;
if (qr.hasMoreElements()) {
latestVersionPart = (WTPart) qr.nextElement();
while (!latestVersionPart.getViewName().equals(part.getViewName())) {
latestVersionPart = (WTPart) qr.nextElement();
}
}
for (int i = 1; i < count; i++) {
VersionControlHelper.setVersionIdentifier(latestVersionPart, VersionControlHelper.nextVersionId(latestVersionPart));
......
......@@ -5,6 +5,7 @@ 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.change.service.DXChangeOrderService;
import com.yonde.change.vo.ecn.DxChangeNoticeVo;
import com.yonde.change.vo.ecr.DxChangeRequestVo;
import com.yonde.change.vo.pr.DxProblemReportVo;
......@@ -80,10 +81,15 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
return DxPageImpl.fromPage(ts);
}
/**
* 通用查询接口
* @param searchQueryCondition
* @return
* @throws Exception
*/
public static PagingQueryResult findByConfigSpecSelect (SearchQueryCondition searchQueryCondition) throws Exception {
CommonUtil.initSessionContext(null);
boolean enforce = SessionServerHelper.manager.setAccessEnforced(false);
List partList;
List<String> indices = searchQueryCondition.getIndices();
Class cls = WTPart.class;
if (StringUtils.isNotEmpty(searchQueryCondition.getName())) {
......@@ -107,6 +113,7 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
WorkInProgressHelper.getSearchCondition(
cls, WorkInProgressState.WORKING, false),
new int[]{0});
// Case 2:最新版
if (CollectionUtils.isNotEmpty(indices)) {
if (querySpec.getConditionCount() > 0) {
querySpec.appendAnd();
......@@ -133,7 +140,6 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
bpqs.setRange(pageSize);
bpqs.setBackgroundThreadEnabled(false);
bpqs.setLimitModeEnabled(true);
//bpqs.setAdvancedQueryEnabled();
PagingQueryResult qr = (PagingQueryResult) PersistenceHelper.manager.find(bpqs);
return qr;
} finally {
......@@ -149,6 +155,7 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
* @throws Exception
*/
public static void buildQueryResult(WTObject o, List objList, List<String> indices) throws Exception {
long id = PersistenceHelper.getObjectIdentifier(o).getId();
if (o instanceof WTPart) {
WTPart wtPart = (WTPart) o;
DxPartVO dxPartVO = new DxPartVO(wtPart);
......@@ -161,21 +168,27 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
objList.add(dxPartVO);
return;
}
List before = DXChangeOrderService.getChangeDataLink(id, "before");
if (o instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) o;
DxChangeNoticeVo changeNoticeVo = new DxChangeNoticeVo(changeOrder2);
List after = DXChangeOrderService.getChangeDataLink(id, "after");
changeNoticeVo.setSourceDxCMReferenceLink(after);
changeNoticeVo.setChangeAffectedDatas(before);
objList.add(changeNoticeVo);
return;
}
if (o instanceof WTChangeRequest2) {
WTChangeRequest2 changeRequest2 = (WTChangeRequest2) o;
DxChangeRequestVo changeRequestVo = new DxChangeRequestVo(changeRequest2);
changeRequestVo.setChangeAffectedDatas(before);
objList.add(changeRequestVo);
return;
}
if (o instanceof WTChangeIssue) {
WTChangeIssue issue = (WTChangeIssue) o;
DxProblemReportVo problemReportVo = new DxProblemReportVo(issue);
problemReportVo.setReportedAgainsts(before);
objList.add(problemReportVo);
return;
}
......@@ -184,6 +197,13 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
}
}
/**
* 构建查询条件
* @param searchItems
* @param clazz
* @return
* @throws Exception
*/
public static QuerySpec buildQuerySpec(SearchItems searchItems, Class<? extends WTObject> clazz) throws Exception {
Map<String, String> typeSearchMap = SearchOperatorEnumUtil.typeSearchItemMap.get(clazz);
if (typeSearchMap == null || typeSearchMap.size() == 0) {
......@@ -229,8 +249,8 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
/* if (fieldName.equals("masterId")) {
return null;
}*/
// TODO fieldName.equals(SearchOperatorEnumUtil.DX_ID)||
if (fieldName.equals("checkOuted") || fieldName.equals("creatorId")) {
// TODO fieldName.equals(SearchOperatorEnumUtil.DX_ID)||latest
if (fieldName.equals("checkOuted") || fieldName.equals("creatorId")|| fieldName.equals("latest")) {
continue;
}
//视图
......
......@@ -27,7 +27,7 @@ public class ObjectsUtil {
public static Vector toVector(List vote) {
Vector vector = new Vector();
if (CollectionUtils.isEmpty(vote)) {
if (!CollectionUtils.isEmpty(vote)) {
vector.addAll(vote);
}
return vector;
......
......@@ -9,7 +9,9 @@ import org.apache.log4j.Logger;
import wt.fc.*;
import wt.fc.collections.WTValuedHashMap;
import wt.folder.Folder;
import wt.folder.FolderEntry;
import wt.folder.FolderHelper;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerRef;
import wt.log4j.LogR;
import wt.method.RemoteAccess;
......@@ -23,6 +25,7 @@ import wt.query.QuerySpec;
import wt.query.SearchCondition;
import wt.session.SessionHelper;
import wt.session.SessionServerHelper;
import wt.team.TeamReference;
import wt.type.TypedUtility;
import wt.util.WTException;
import wt.vc.VersionControlHelper;
......@@ -547,4 +550,49 @@ public class PartUtil implements RemoteAccess {
}
return childs;
}
/**
* revise WTDocument
*
* @param document
* WTDocument
* @return WTDocument
* @throws WTException
*/
public static WTPart reviseWTPart(WTPart document, String comment) throws WTException {
WTPart wtPart = document;
try {
if (wtPart == null) {
return null;
}
WTContainer container = wtPart.getContainer();
WTContainerRef containerRef = WTContainerRef.newWTContainerRef(container); // container.getContainerReference();//
TeamReference teamReference = wtPart.getTeamId();
Folder oldFoler = FolderHelper.getFolder(wtPart);
if (oldFoler == null)
{
String strLocation = wtPart.getLocation();
oldFoler = FolderHelper.service.getFolder(strLocation, containerRef);
}
wtPart = (WTPart) wt.vc.VersionControlHelper.service.newVersion(wtPart);
if (teamReference != null)
{
wtPart.setTeamId(teamReference);
}
VersionControlHelper.setNote(wtPart, comment == null ? "" : comment);
wtPart.setContainer(container);
FolderHelper.assignLocation((FolderEntry) wtPart, oldFoler);
wtPart = (WTPart) PersistenceHelper.manager.save(wtPart);
wtPart = (WTPart) PersistenceHelper.manager.refresh(wtPart);
} catch (Exception e) {
logger.error("Auto Revise Failed :" + e);
logger.error("Original comment :" + comment);
throw new WTException(e);
}
return wtPart;
}
}
package com.yonde.common;
import com.yonde.basedata.search.SearchOperatorEnumUtil;
import org.apache.log4j.Logger;
import wt.doc.WTDocument;
import wt.fc.*;
import wt.lifecycle.LifeCycleHelper;
import wt.method.RemoteMethodServer;
import wt.fc.PersistenceHelper;
import wt.fc.ReferenceFactory;
import wt.fc.WTObject;
import wt.fc.WTReference;
import wt.log4j.LogR;
import wt.part.WTPart;
import wt.session.SessionContext;
import wt.session.SessionHelper;
......@@ -16,11 +19,10 @@ import wt.vc.VersionControlHelper;
import java.lang.reflect.InvocationTargetException;
import java.rmi.RemoteException;
import java.util.List;
import static org.apache.commons.lang.StringUtils.isNotBlank;
public class RfUtil {
public static final ReferenceFactory rf = new ReferenceFactory();
private static final Logger log = LogR.getLogger(RfUtil.class.getName());
public static WTDocument getDoc(String oid){
//checkArgument(isNotBlank(oid));
try {
......@@ -122,14 +124,15 @@ public class RfUtil {
public static WTObject getWTObjectById(Long id, String prefix) {
WTObject p = null;
String oid = prefix + id;
try {
String oid = prefix + id;
WTReference wtreference = rf.getReference(oid);
if (wtreference != null) {
wtreference.refresh();
p = (WTObject) wtreference.getObject();
}
} catch (WTException e) {
log.error("get wtobj WTException====" + e.getMessage());
}
return p;
}
......
......@@ -192,15 +192,20 @@ public class DxPartService implements RemoteAccess, Serializable {
}
SessionContext previous = SessionContext.newContext();
DxPartVO dxPartVO = null;
boolean enforced = false;
try {
SessionHelper.manager.setAdministrator();
logger.error("getCopyOf ====" + id);
enforced = SessionServerHelper.manager.setAccessEnforced(false);
WTPart partById = DxPartUtil.getPartById(id);
logger.error("get partById====" + partById);
if (CommonUtil.isCheckedOut(partById)) {
WTPart partByIdCp = (WTPart) CommonUtil.getWorkingCopyVersion(partById);
logger.error("getCopyOfPart ====" + partByIdCp);
dxPartVO = new DxPartVO(partByIdCp);
if (ObjectsUtil.isNull(dxPartVO.getLocker())) {
dxPartVO.setLockerVO(CommonUtil.getPreviousVersion(partById));
logger.error("dxPartVO.getLocker() ====" + dxPartVO.getLocker());
dxPartVO.setLockerVO(partById);
}
} else {
dxPartVO = new DxPartVO(partById);
......@@ -213,6 +218,7 @@ public class DxPartService implements RemoteAccess, Serializable {
} finally {
SessionContext.setContext(previous);
SessionServerHelper.manager.setAccessEnforced(enforced);
}
return dxPartVO;
}
......
......@@ -2,6 +2,9 @@ package com.yonde.wfc.service;
import com.yonde.basedata.search.SearchOperatorEnumUtil;
import com.yonde.basedata.vo.IdVO;
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.ObjectsUtil;
import com.yonde.common.RfUtil;
import com.yonde.common.WTUserUtil;
......@@ -13,6 +16,9 @@ import com.yonde.wfc.vo.DxWfProcessTaskVO;
import com.yonde.wfc.vo.DxWfProcessVO;
import com.yonde.wfc.vo.DxWfTaskOperationArgsVO;
import org.apache.commons.lang.StringUtils;
import wt.change2.WTChangeIssue;
import wt.change2.WTChangeOrder2;
import wt.change2.WTChangeRequest2;
import wt.doc.WTDocument;
import wt.fc.Persistable;
import wt.fc.QueryResult;
......@@ -119,13 +125,34 @@ public class WfcProcessService implements RemoteAccess {
if (pbo instanceof WTDocument) {
WTDocument document = (WTDocument) pbo;
objVO = new DxDocumentVO(document);
} else if (pbo instanceof WTPart) {
return objVO;
}
if (pbo instanceof WTPart) {
WTPart part = (WTPart) pbo;
objVO = new DxPartVO(part);
} else {
// TODO 其他类型
return objVO;
}
if (pbo instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) pbo;
objVO = new DxChangeNoticeVo(changeOrder2);
return objVO;
}
if (pbo instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) pbo;
objVO = new DxChangeNoticeVo(changeOrder2);
return objVO;
}
if (pbo instanceof WTChangeRequest2) {
WTChangeRequest2 changeRequest2 = (WTChangeRequest2) pbo;
objVO = new DxChangeRequestVo(changeRequest2);
return objVO;
}
if (pbo instanceof WTChangeIssue) {
WTChangeIssue changeIssue = (WTChangeIssue) pbo;
objVO = new DxProblemReportVo(changeIssue);
return objVO;
}
// TODO 其他类型
}
}
} finally {
......
package com.yonde.wfc.vo;
import com.yonde.common.WorkflowUtil;
import wt.change2.WTChangeIssue;
import wt.change2.WTChangeOrder2;
import wt.change2.WTChangeRequest2;
import wt.doc.WTDocument;
import wt.fc.Persistable;
import wt.part.WTPart;
import wt.vc.baseline.ManagedBaseline;
import wt.workflow.engine.WfProcess;
import wt.workflow.engine.WfTemplateProcessor;
import java.io.Serializable;
import java.util.Map;
......@@ -39,8 +42,25 @@ public class DxWfBizExtInfo implements Serializable {
WTPart part = (WTPart) pbo;
taskTitle = part.getName() + "_" + part.getNumber();
this.bizObjectState = part.getState().toString();
} else {
// TODO 更改单 等
} else if (pbo instanceof WTChangeOrder2) {
WTChangeOrder2 changeOrder2 = (WTChangeOrder2) pbo;
taskTitle = changeOrder2.getName() + "_" + changeOrder2.getNumber();
this.bizObjectState = changeOrder2.getState().toString();
} else if (pbo instanceof WTChangeRequest2) {
WTChangeRequest2 changeRequest2 = (WTChangeRequest2) pbo;
taskTitle = changeRequest2.getName() + "_" + changeRequest2.getNumber();
this.bizObjectState = changeRequest2.getState().toString();
} else if (pbo instanceof WTChangeIssue) {
WTChangeIssue changeIssue = (WTChangeIssue) pbo;
taskTitle = changeIssue.getName() + "_" + changeIssue.getNumber();
this.bizObjectState = changeIssue.getState().toString();
} else if (pbo instanceof ManagedBaseline) {
ManagedBaseline baseline = (ManagedBaseline) pbo;
taskTitle = baseline.getName() + "_" + baseline.getNumber();
this.bizObjectState = baseline.getState().toString();
}
else {
// TODO 其他类型 等
}
this.taskTitle = taskTitle;
String processName = process.getTemplate().getName();
......
......@@ -60,7 +60,7 @@ public class DxWfProcessTaskVO implements Serializable {
private String instruction;
private String layoutId = "defaultInfo";
private List<String> lastComments;
private DxWfBizExtInfo bizExtInfo;
private DxWfBizExtInfo bizExtInfo;//待办详情显示
//private DxWfTaskExtRelationInfoVO DxWfTaskExtRelationInfoVO;
private String parentTaskId;
private boolean forwardFlag;
......
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