Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
B
BasicAPI
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杜科
BasicAPI
Commits
09bc7ce6
Commit
09bc7ce6
authored
Apr 10, 2023
by
shyWang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PDM前端改造
更改相关
parent
766187f2
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1780 additions
and
112 deletions
+1780
-112
AbstractBaseController.java
...com/yonde/basedata/controller/AbstractBaseController.java
+0
-30
SearchOperatorEnumUtil.java
src/com/yonde/basedata/search/SearchOperatorEnumUtil.java
+63
-2
BaseSearchService.java
src/com/yonde/basedata/service/BaseSearchService.java
+4
-1
IdVO.java
src/com/yonde/basedata/vo/IdVO.java
+1
-1
DxChangeOrderController.java
src/com/yonde/change/controller/DxChangeOrderController.java
+71
-14
DXChangeOrderService.java
src/com/yonde/change/service/DXChangeOrderService.java
+366
-15
WTChangeDataUtil.java
src/com/yonde/change/util/WTChangeDataUtil.java
+514
-0
DxChangeAffectedDataVo.java
src/com/yonde/change/vo/DxChangeAffectedDataVo.java
+25
-1
DxChangeAfterDataVo.java
src/com/yonde/change/vo/DxChangeAfterDataVo.java
+18
-0
DxChangeItemVo.java
src/com/yonde/change/vo/DxChangeItemVo.java
+8
-0
DxReportedAgainstVo.java
src/com/yonde/change/vo/DxReportedAgainstVo.java
+51
-3
DxChangeNoticeVo.java
src/com/yonde/change/vo/ecn/DxChangeNoticeVo.java
+11
-4
DxChangeRequestVo.java
src/com/yonde/change/vo/ecr/DxChangeRequestVo.java
+115
-1
DxProblemReportVo.java
src/com/yonde/change/vo/pr/DxProblemReportVo.java
+120
-0
ChangeOrderUtil.java
src/com/yonde/common/ChangeOrderUtil.java
+298
-4
DxSearchUtil.java
src/com/yonde/common/DxSearchUtil.java
+64
-29
RfUtil.java
src/com/yonde/common/RfUtil.java
+42
-4
WorkflowUtil.java
src/com/yonde/common/WorkflowUtil.java
+3
-0
DxDocController.java
src/com/yonde/doc/controller/DxDocController.java
+0
-1
PdmPartBean.java
src/com/yonde/part/bean/PdmPartBean.java
+6
-1
DxPartController.java
src/com/yonde/part/controller/DxPartController.java
+0
-1
No files found.
src/com/yonde/basedata/controller/AbstractBaseController.java
View file @
09bc7ce6
...
...
@@ -21,11 +21,9 @@ import java.util.Map;
public
class
AbstractBaseController
{
//@ApiOperation("根据模板id查询模板信息,包含模板节点、路径、及节点下的事件 路径下的事件")
@GetMapping
({
"/findDetail/{id}"
})
public
ApiResult
<
LifecycleTemplateVO
>
findDetail
(
@PathVariable
Long
id
)
{
//return ApiResult.ok(this.getService().findDetail(id));
return
ApiResult
.
ok
(
""
);
}
...
...
@@ -54,10 +52,7 @@ public class AbstractBaseController {
}
@DeleteMapping
({
"/batch/{ids}/{type}"
})
// id,id2,id3 linkId
//@SubPermission({"remove"})
public
ApiResult
deleteDxPartUsageLink
(
@PathVariable
(
"ids"
)
String
ids
,
@PathVariable
(
"type"
)
String
type
)
{
//this.getService().deleteAllIterationFromSameVersion(id);
try
{
List
<
String
>
idList
=
new
ArrayList
<
String
>();
if
(
ObjectsUtil
.
nonNull
(
ids
))
{
...
...
@@ -80,31 +75,6 @@ public class AbstractBaseController {
return
ApiResult
.
error
(
"501"
,
"删除失败"
,
e
);
}
}
/* //@ApiOperation("配置规范查询")
@PostMapping({"findBySpec"})
List<DxPartVO> findByConfigSpec(@RequestBody SearchQueryCondition specSearch) {
try {
List<DxPartVO> partVOS = DxPartService.findByConfigSpecSelect(specSearch);
return partVOS;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//@ApiOperation("深度查询")
@PostMapping({"find/recursion"})
List<DxPartVO> findRecursion(@RequestBody SearchQueryCondition specSearch) {
try {
List<DxPartVO> partVOS = DxPartService.findByConfigSpecSelect(specSearch);
return partVOS;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}*/
public
SearchItems
getPermSearchItems
(
BaseSearchCondition
permSearchParams
)
{
SearchItems
searchItems
=
new
SearchItems
();
...
...
src/com/yonde/basedata/search/SearchOperatorEnumUtil.java
View file @
09bc7ce6
...
...
@@ -2,11 +2,17 @@ package com.yonde.basedata.search;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.basedata.vo.*
;
import
com.yonde.change.vo.ecn.DxChangeNoticeVo
;
import
com.yonde.change.vo.ecr.DxChangeRequestVo
;
import
com.yonde.change.vo.pr.DxProblemReportVo
;
import
com.yonde.context.vo.DxContextVO
;
import
com.yonde.doc.vo.DxDocumentVO
;
import
com.yonde.part.vo.*
;
import
com.yonde.plan.vo.DxProcessDocDescribeLinkVO
;
import
com.yonde.plan.vo.DxProcessDocReferenceLinkVO
;
import
wt.change2.WTChangeIssue
;
import
wt.change2.WTChangeOrder2
;
import
wt.change2.WTChangeRequest2
;
import
wt.clients.beans.query.WTAttribute
;
import
wt.doc.WTDocument
;
import
wt.fc.ObjectIdentifier
;
...
...
@@ -19,7 +25,9 @@ import wt.util.WTAttributeNameIfc;
import
wt.vc.Iterated
;
import
wt.vc.views.ViewReference
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
SearchOperatorEnumUtil
{
...
...
@@ -46,23 +54,43 @@ public class SearchOperatorEnumUtil {
public
static
final
Map
<
String
,
String
>
docSearchItemMap
=
new
HashMap
();
// 文档搜索条件
public
static
final
Map
<
String
,
String
>
changeSearchItemMap
=
new
HashMap
();
// 变更搜索条件
public
static
final
Map
<
Class
<?>,
Map
<
String
,
String
>>
typeSearchItemMap
=
new
HashMap
();
// 类型搜索条件映射
public
static
final
Map
<
Class
<?>,
String
>
typeItemMap
=
new
HashMap
();
// 类型映射
public
static
final
Map
<
String
,
Class
<?>>
typeMap
=
new
HashMap
();
// 类型映射
public
static
final
Map
<
String
,
String
>
typeStrPrefixMap
=
new
HashMap
();
// 类型映射
public
static
final
Map
<
String
,
String
>
viewMap
=
new
HashMap
();
// 视图映射
public
static
final
Map
<
Class
<?>,
String
>
typePrefixMap
=
new
HashMap
();
// 类型映射
public
static
final
List
<
String
>
oidPrefixList
=
new
ArrayList
<
String
>();
//PDM类型
static
{
initSearchItemMap
();
initPartItemMap
();
initDocItemMap
();
initChangeItemMap
();
initTypeItemMap
();
initTypeMap
();
initViewMap
();
initTypePrefixMap
();
initOidPrefixList
();
}
public
static
void
initOidPrefixList
()
{
oidPrefixList
.
add
(
"OR:wt.part.WTPart:"
);
oidPrefixList
.
add
(
"OR:wt.doc.WTDocument:"
);
oidPrefixList
.
add
(
"OR:wt.change2.WTChangeOrder2:"
);
oidPrefixList
.
add
(
"OR:wt.change2.WTChangeRequest2:"
);
oidPrefixList
.
add
(
"OR:wt.change2.WTChangeIssue:"
);
oidPrefixList
.
add
(
"OR:wt.vc.baseline.ManagedBaseline:"
);
}
public
static
void
initViewMap
()
{
...
...
@@ -71,6 +99,16 @@ public class SearchOperatorEnumUtil {
viewMap
.
put
(
"3"
,
"Manufacture"
);
}
public
static
void
initTypeMap
()
{
typeMap
.
put
(
"DxDocument"
,
WTDocument
.
class
);
typeMap
.
put
(
"DxPart"
,
WTPart
.
class
);
typeMap
.
put
(
"DxChangeRequest"
,
WTChangeRequest2
.
class
);
typeMap
.
put
(
"DxChangeNotice"
,
WTChangeOrder2
.
class
);
typeMap
.
put
(
"DxDeviation"
,
WTChangeIssue
.
class
);
typeMap
.
put
(
"DxProblemReport"
,
WTChangeIssue
.
class
);
typeMap
.
put
(
"DxWaver"
,
WTChangeIssue
.
class
);
}
public
static
void
initTypePrefixMap
()
{
typePrefixMap
.
put
(
DxPartVO
.
class
,
"wt.part.WTPart:"
);
typePrefixMap
.
put
(
DxDocumentVO
.
class
,
"wt.doc.WTDocument:"
);
...
...
@@ -87,6 +125,10 @@ public class SearchOperatorEnumUtil {
typeStrPrefixMap
.
put
(
"com.yonde.dcs.xbom.common.entity.vo.DxPartVO"
,
"wt.part.WTPart:"
);
typeStrPrefixMap
.
put
(
"DxPart"
,
"wt.part.WTPart:"
);
typeStrPrefixMap
.
put
(
"DxDocument"
,
"wt.doc.WTDocument:"
);
typeStrPrefixMap
.
put
(
"com.yonde.dcs.cmt.common.entity.vo.DxChangeRequestVo"
,
"wt.change2.WTChangeRequest2:"
);
typeStrPrefixMap
.
put
(
"com.yonde.dcs.cmt.common.entity.vo.DxChangeNoticeVo"
,
"wt.change2.WTChangeOrder2:"
);
typeStrPrefixMap
.
put
(
"com.yonde.dcs.cmt.common.entity.vo.DxProblemReportVo"
,
"wt.change2.WTChangeIssue:"
);
typeStrPrefixMap
.
put
(
"com.yonde.dcs.document.common.entity.vo.DxDocumentVO"
,
"wt.doc.WTDocument:"
);
}
...
...
@@ -107,6 +149,10 @@ public class SearchOperatorEnumUtil {
typeItemMap
.
put
(
DxProcessDocReferenceLinkVO
.
class
,
"com.yonde.dcs.process.common.entity.vo.DxProcessDocReferenceLinkVO"
);
typeItemMap
.
put
(
DxProcessDocDescribeLinkVO
.
class
,
"com.yonde.dcs.process.common.entity.vo.DxProcessDocDescribeLinkVO"
);
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"
);
//TODO add
}
...
...
@@ -127,8 +173,8 @@ public class SearchOperatorEnumUtil {
+
ViewReference
.
KEY
+
"."
+
ObjectIdentifier
.
ID
);
partSearchItemMap
.
put
(
DX_STATE
,
WTPart
.
LIFE_CYCLE_STATE
);
partSearchItemMap
.
put
(
DX_MASTER_ID
,
Iterated
.
MASTER_REFERENCE
+
"."
+
ObjectReference
.
KEY
+
"."
+
ObjectIdentifier
.
ID
);
doc
SearchItemMap
.
put
(
"createTime"
,
WTPart
.
CREATE_TIMESTAMP
);
doc
SearchItemMap
.
put
(
"modifyTime"
,
WTPart
.
MODIFY_TIMESTAMP
);
part
SearchItemMap
.
put
(
"createTime"
,
WTPart
.
CREATE_TIMESTAMP
);
part
SearchItemMap
.
put
(
"modifyTime"
,
WTPart
.
MODIFY_TIMESTAMP
);
//部件类型映射
typeSearchItemMap
.
put
(
WTPart
.
class
,
partSearchItemMap
);
...
...
@@ -149,4 +195,19 @@ public class SearchOperatorEnumUtil {
typeSearchItemMap
.
put
(
WTDocument
.
class
,
docSearchItemMap
);
}
public
static
void
initChangeItemMap
()
{
changeSearchItemMap
.
put
(
DX_ID
,
"thePersistInfo.theObjectIdentifier.id"
);
changeSearchItemMap
.
put
(
DX_NUMBER
,
WTChangeOrder2
.
NUMBER
);
changeSearchItemMap
.
put
(
DX_NAME
,
WTChangeOrder2
.
NAME
);
changeSearchItemMap
.
put
(
DX_STATE
,
WTChangeOrder2
.
LIFE_CYCLE_STATE
);
changeSearchItemMap
.
put
(
"createTime"
,
WTChangeOrder2
.
CREATE_TIMESTAMP
);
changeSearchItemMap
.
put
(
"modifyTime"
,
WTChangeOrder2
.
MODIFY_TIMESTAMP
);
//更改类型映射
typeSearchItemMap
.
put
(
WTChangeOrder2
.
class
,
changeSearchItemMap
);
typeSearchItemMap
.
put
(
WTChangeRequest2
.
class
,
changeSearchItemMap
);
typeSearchItemMap
.
put
(
WTChangeIssue
.
class
,
changeSearchItemMap
);
}
}
src/com/yonde/basedata/service/BaseSearchService.java
View file @
09bc7ce6
...
...
@@ -167,9 +167,12 @@ public class BaseSearchService <V extends IdVO> implements RemoteAccess {
String
targetId
=
fileForm
.
getTargetId
();
String
operator
=
fileForm
.
getOperator
();
String
sourceIdType
=
fileForm
.
getSourceIdType
();
ContentHolder
holder
=
DxDocUtil
.
getDocById
(
sourceId
);
ContentHolder
holder
=
null
;
//DxDocUtil.getDocById(sourceId);
if
(
StringUtils
.
isNotEmpty
(
sourceIdType
)
&&
sourceIdType
.
toLowerCase
().
contains
(
"part"
))
{
holder
=
DxPartUtil
.
getPartById
(
sourceId
);
}
else
{
holder
=
(
ContentHolder
)
RfUtil
.
getWTObjectById
(
sourceId
);
}
if
(
"ADD"
.
equalsIgnoreCase
(
operator
))
{
ContentRoleType
roleType
=
ContentRoleType
.
PRIMARY
;
...
...
src/com/yonde/basedata/vo/IdVO.java
View file @
09bc7ce6
...
...
@@ -34,7 +34,7 @@ public class IdVO extends IdOnlyVO implements Serializable {
this
.
setId
(
PersistenceHelper
.
getObjectIdentifier
(
object
).
getId
());
this
.
createTime
=
DateTimeUtil
.
timeStampToString
(
object
.
getCreateTimestamp
());
this
.
modifyTime
=
DateTimeUtil
.
timeStampToString
(
object
.
getModifyTimestamp
());
}
finally
{
}
finally
{
SessionContext
.
setContext
(
previous
);
}
...
...
src/com/yonde/change/controller/DxChangeOrderController.java
View file @
09bc7ce6
package
com
.
yonde
.
change
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.yonde.basedata.controller.AbstractBaseController
;
import
com.yonde.basedata.entity.api.ApiResult
;
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.DxChangeNoticeVo
;
import
com.yonde.change.vo.ecr.DxChangeRequestVo
;
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.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
@RestController
@RequestMapping
({
"/changeOrder"
})
public
class
DxChangeOrderController
{
public
class
DxChangeOrderController
extends
AbstractBaseController
{
//@ApiOperation("深度保存对象")
@PostMapping
({
"createPR"
})
public
ApiResult
recursionPR
(
@RequestBody
Map
entity
,
HttpServletRequest
request
)
{
DxP
artVO
part
=
null
;
DxP
roblemReportVo
pr
=
null
;
try
{
String
jsonString
=
JSON
.
toJSONString
(
entity
);
DxProblemReportVo
entityVO
=
JSON
.
parseObject
(
jsonString
,
DxProblemReportVo
.
class
);
...
...
@@ -34,9 +41,9 @@ public class DxChangeOrderController {
//更新link
//part = DxPartService.updateDxPartUsageLink(entityVO);
}
else
{
//part = DxPartService.createDxPart
(entityVO, portUserName);
pr
=
DXChangeOrderService
.
createPR
(
entityVO
,
portUserName
);
}
return
ApiResult
.
ok
(
p
art
);
return
ApiResult
.
ok
(
p
r
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
...
...
@@ -46,7 +53,7 @@ public class DxChangeOrderController {
//@ApiOperation("深度保存对象")
@PostMapping
({
"createECR"
})
public
ApiResult
recursionECR
(
@RequestBody
Map
entity
,
HttpServletRequest
request
)
{
Dx
PartVO
part
=
null
;
Dx
ChangeRequestVo
ecr
=
null
;
try
{
String
jsonString
=
JSON
.
toJSONString
(
entity
);
DxChangeRequestVo
entityVO
=
JSON
.
parseObject
(
jsonString
,
DxChangeRequestVo
.
class
);
...
...
@@ -55,9 +62,9 @@ public class DxChangeOrderController {
//更新link
//part = DxPartService.updateDxPartUsageLink(entityVO);
}
else
{
//part = DxPartService.createDxPart
(entityVO, portUserName);
ecr
=
DXChangeOrderService
.
createECR
(
entityVO
,
portUserName
);
}
return
ApiResult
.
ok
(
part
);
return
ApiResult
.
ok
(
ecr
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
...
...
@@ -67,7 +74,7 @@ public class DxChangeOrderController {
//@ApiOperation("深度保存对象")
@PostMapping
({
"createECN"
})
public
ApiResult
recursionECN
(
@RequestBody
Map
entity
,
HttpServletRequest
request
)
{
Dx
PartVO
part
=
null
;
Dx
ChangeNoticeVo
ecn
=
null
;
try
{
String
jsonString
=
JSON
.
toJSONString
(
entity
);
DxChangeNoticeVo
entityVO
=
JSON
.
parseObject
(
jsonString
,
DxChangeNoticeVo
.
class
);
...
...
@@ -76,12 +83,62 @@ public class DxChangeOrderController {
//更新link
//part = DxPartService.updateDxPartUsageLink(entityVO);
}
else
{
//part = DxPartService.createDxPart
(entityVO, portUserName);
ecn
=
DXChangeOrderService
.
createECN
(
entityVO
,
portUserName
);
}
return
ApiResult
.
ok
(
part
);
return
ApiResult
.
ok
(
ecn
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
}
}
@GetMapping
({
"/DxReportedAgainst/search"
})
//@ApiOperation("获取PR相关对象")
public
List
getAffectedDataLink
(
@RequestParam
(
value
=
"targetId"
,
required
=
false
)
String
targetId
,
@RequestParam
(
value
=
"sourceId"
,
required
=
false
)
String
sourceId
,
HttpServletRequest
request
)
{
List
<
DxReportedAgainstVo
>
resultList
=
new
ArrayList
<
DxReportedAgainstVo
>();
try
{
if
(
StringUtils
.
isNotEmpty
(
sourceId
))
{
resultList
=
DXChangeOrderService
.
getChangeDataLink
(
Long
.
valueOf
(
sourceId
),
null
);
return
resultList
;
}
if
(
StringUtils
.
isNotEmpty
(
targetId
))
{
resultList
=
DXChangeOrderService
.
getAffectedDataLink
(
Long
.
valueOf
(
targetId
),
"DxProblemReport"
);
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
)
{
List
<
DxChangeAffectedDataVo
>
resultList
=
new
ArrayList
<
DxChangeAffectedDataVo
>();
try
{
if
(
StringUtils
.
isNotEmpty
(
sourceId
))
{
resultList
=
DXChangeOrderService
.
getChangeDataLink
(
Long
.
valueOf
(
sourceId
),
null
);
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
)
{
IdVO
idVO
=
null
;
try
{
idVO
=
DXChangeOrderService
.
getWorkingCopyById
(
id
,
type
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
idVO
;
}
}
src/com/yonde/change/service/DXChangeOrderService.java
View file @
09bc7ce6
package
com
.
yonde
.
change
.
service
;
import
com.yonde.basedata.search.SearchOperatorEnumUtil
;
import
com.yonde.basedata.vo.DxDocumentFolderVO
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.basedata.vo.RevisionControlledVO
;
import
com.yonde.change.util.WTChangeDataUtil
;
import
com.yonde.change.vo.DxChangeAffectedDataVo
;
import
com.yonde.change.vo.DxChangeAfterDataVo
;
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.pr.DxProblemReportVo
;
import
com.yonde.common.ChangeOrderUtil
;
import
com.yonde.common.CommonUtil
;
import
com.yonde.common.RfUtil
;
import
com.yonde.doc.service.DxDocService
;
import
wt.change2.Changeable2
;
import
wt.change2.WTChangeOrder2
;
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.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.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
import
wt.type.TypeDefinitionReference
;
import
wt.type.TypedUtilityServiceHelper
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Vector
;
public
class
DXChangeOrderService
{
public
class
DXChangeOrderService
implements
RemoteAccess
{
public
void
createPR
(
DxProblemReportVo
problemReportVo
)
{
public
static
DxProblemReportVo
createPR
(
DxProblemReportVo
entityVO
,
String
userName
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxProblemReportVo
)
RemoteMethodServer
.
getDefault
().
invoke
(
"createPR"
,
DXChangeOrderService
.
class
.
getName
(),
null
,
new
Class
[]
{
DxProblemReportVo
.
class
,
String
.
class
},
new
Object
[]
{
entityVO
,
userName
});
}
CommonUtil
.
initSessionContext
(
userName
);
WTContainer
container
=
null
;
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
))
{
changeIssue
=
WTChangeIssue
.
newWTChangeIssue
(
""
);
}
changeIssue
.
setNumber
(
entityVO
.
getNumber
());
changeIssue
.
setName
(
entityVO
.
getName
());
DxContextVO
dxContext
=
entityVO
.
getDxContext
();
if
(
ObjectsUtil
.
nonNull
(
dxContext
))
{
String
contextName
=
dxContext
.
getName
();
container
=
ContainerUtil
.
getContainerByName
(
contextName
);
}
if
(
ObjectsUtil
.
isNull
(
container
))
{
return
null
;
}
if
(
container
!=
null
)
{
changeIssue
.
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
(
changeIssue
,
location
);
FolderHelper
.
assignLocations
(
loacationMap
);
}
else
{
System
.
out
.
println
(
"未找到工程更改文件夹"
);
}
}
changeIssue
=
(
WTChangeIssue
)
ChangeHelper2
.
service
.
saveChangeIssue
(
changeIssue
);
//更新软属性
if
(
ObjectsUtil
.
nonNull
(
entityVO
.
getDynamicAttrs
()))
{
IBAUtil
.
forceSetIBAValues
(
changeIssue
,
entityVO
.
getDynamicAttrs
());
}
changeIssue
=
(
WTChangeIssue
)
PersistenceHelper
.
manager
.
refresh
(
changeIssue
);
//设置受影响对象
List
<
DxReportedAgainstVo
>
reportedAgainsts
=
entityVO
.
getReportedAgainsts
();
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);
}
ChangeOrderUtil
.
setIssueAffectedData
(
changeIssue
,
affectedDataVector
);
}
return
new
DxProblemReportVo
(
changeIssue
);
}
public
void
createECR
(
DxChangeRequestVo
changeRequestVo
)
{
public
static
DxChangeRequestVo
createECR
(
DxChangeRequestVo
entityVO
,
String
userName
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxChangeRequestVo
)
RemoteMethodServer
.
getDefault
().
invoke
(
"createECR"
,
DXChangeOrderService
.
class
.
getName
(),
null
,
new
Class
[]
{
DxChangeRequestVo
.
class
,
String
.
class
},
new
Object
[]
{
entityVO
,
userName
});
}
CommonUtil
.
initSessionContext
(
userName
);
WTChangeRequest2
ecr
=
null
;
WTContainer
container
=
null
;
String
name
=
entityVO
.
getName
();
if
(
ObjectsUtil
.
nonNull
(
entityVO
.
getId
()))
{
WTObject
objectById
=
RfUtil
.
getWTObjectById
(
entityVO
.
getId
());
if
(
ObjectsUtil
.
nonNull
(
objectById
))
{
ecr
=
(
WTChangeRequest2
)
objectById
;
}
}
if
(
ObjectsUtil
.
isNull
(
ecr
))
{
ecr
=
WTChangeRequest2
.
newWTChangeRequest2
(
name
);
}
String
number
=
entityVO
.
getNumber
();
if
(
number
!=
null
)
{
ecr
.
setNumber
(
number
);
}
DxContextVO
dxContext
=
entityVO
.
getDxContext
();
if
(
ObjectsUtil
.
nonNull
(
dxContext
))
{
String
contextName
=
dxContext
.
getName
();
container
=
ContainerUtil
.
getContainerByName
(
contextName
);
}
if
(
ObjectsUtil
.
isNull
(
container
))
{
return
null
;
}
if
(
container
!=
null
)
{
ecr
.
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
(
ecr
,
location
);
FolderHelper
.
assignLocations
(
loacationMap
);
}
else
{
System
.
out
.
println
(
"未找到工程更改文件夹"
);
}
}
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
()))
{
IBAUtil
.
forceSetIBAValues
(
ecr
,
entityVO
.
getDynamicAttrs
());
}
ecr
=
(
WTChangeRequest2
)
PersistenceHelper
.
manager
.
refresh
(
ecr
);
//设置受影响对象
List
<
DxChangeAffectedDataVo
>
affectedDatas
=
entityVO
.
getChangeAffectedDatas
();
Vector
affectedDataVector
=
new
Vector
();
if
(!
CollectionUtils
.
isEmpty
(
affectedDatas
))
{
for
(
DxChangeAffectedDataVo
affectedData
:
affectedDatas
)
{
Long
targetId
=
affectedData
.
getTargetId
();
String
pboType
=
affectedData
.
getPboType
();
String
typeStr
=
SearchOperatorEnumUtil
.
typeStrPrefixMap
.
get
(
pboType
);
Persistable
oid
=
CommonUtil
.
getPersistableByOid
(
"OR:"
+
typeStr
+
targetId
);
affectedDataVector
.
add
(
oid
);
}
ChangeOrderUtil
.
setECRAffectedData
(
ecr
,
affectedDataVector
);
}
DxChangeRequestVo
dxChangeRequestVo
=
new
DxChangeRequestVo
(
ecr
);
return
dxChangeRequestVo
;
}
public
static
DxChangeNoticeVo
createECN
(
DxChangeNoticeVo
changeNoticeVo
,
String
userName
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxChangeNoticeVo
)
RemoteMethodServer
.
getDefault
().
invoke
(
"c
heckin"
,
DxDoc
Service
.
class
.
getName
(),
null
,
return
(
DxChangeNoticeVo
)
RemoteMethodServer
.
getDefault
().
invoke
(
"c
reateECN"
,
DXChangeOrder
Service
.
class
.
getName
(),
null
,
new
Class
[]
{
DxChangeNoticeVo
.
class
,
String
.
class
},
new
Object
[]
{
changeNoticeVo
,
userName
});
}
CommonUtil
.
initSessionContext
(
userName
);
WTChangeOrder2
wtChangeOrder2
=
ChangeOrderUtil
.
createWTChangeOrder2
(
changeNoticeVo
.
getName
(),
null
,
null
,
""
,
changeNoticeVo
.
getDynamicAttrs
());
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
))
{
wtChangeOrder2
=
WTChangeOrder2
.
newWTChangeOrder2
(
changeNoticeVo
.
getName
());
}
wtChangeOrder2
=
ChangeOrderUtil
.
createWTChangeOrder2
(
wtChangeOrder2
,
changeNoticeVo
.
getName
(),
null
,
null
,
""
,
changeNoticeVo
.
getDynamicAttrs
());
//更新软属性
if
(
ObjectsUtil
.
nonNull
(
changeNoticeVo
.
getDynamicAttrs
()))
{
IBAUtil
.
forceSetIBAValues
(
wtChangeOrder2
,
changeNoticeVo
.
getDynamicAttrs
());
}
wtChangeOrder2
=
(
WTChangeOrder2
)
PersistenceHelper
.
manager
.
refresh
(
wtChangeOrder2
);
//设置受影响对象
List
<
Changeable2
>
affectedDataList
=
new
ArrayList
<
Changeable2
>();
List
<
DxChangeAffectedDataVo
>
affectedDatas
=
changeNoticeVo
.
getChangeAffectedDatas
();
for
(
DxChangeAffectedDataVo
affectedData
:
affectedDatas
)
{
String
pboClass
=
affectedData
.
getPboType
();
String
prefix
=
SearchOperatorEnumUtil
.
typeStrPrefixMap
.
get
(
pboClass
);
...
...
@@ -46,12 +224,185 @@ public class DXChangeOrderService {
affectedDataList
.
add
(
wtObjectByOid
);
}
wtChangeOrder2
=
ChangeOrderUtil
.
addAffectedDataToChangeNotice
(
wtChangeOrder2
,
affectedDataList
,
null
);
//设置产生对象
List
<
Changeable2
>
afterDataList
=
new
ArrayList
<
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
);
}
ChangeOrderUtil
.
addChangeableAfterToChangeNotice
(
wtChangeOrder2
,
afterDataList
,
null
);
//TODO
ChangeOrderUtil
.
addChangeNoticeToChangeRequest
(
wtChangeOrder2
,
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
);
}
}
}
changeNoticeVo
=
new
DxChangeNoticeVo
(
wtChangeOrder2
);
return
changeNoticeVo
;
}
/**
* 根据pbo 获取关联变更对象
* @param id
* @param sourceIdType
* @return
* @throws Exception
*/
public
static
List
getAffectedDataLink
(
Long
id
,
String
sourceIdType
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
List
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getAffectedDataLink"
,
DXChangeOrderService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
sourceIdType
});
}
CommonUtil
.
initSessionContext
(
null
);
List
resultList
=
new
ArrayList
();
WTObject
wtObjectById
=
RfUtil
.
getWTObjectById
(
id
);
RevisionControlledVO
revisionControlledVO
=
null
;
if
(
wtObjectById
instanceof
WTPart
)
{
revisionControlledVO
=
new
DxPartVO
((
WTPart
)
wtObjectById
);
}
else
if
(
wtObjectById
instanceof
WTDocument
)
{
revisionControlledVO
=
new
DxDocumentVO
((
WTDocument
)
wtObjectById
);
}
else
{
// TODO
}
if
(
"DxProblemReport"
.
equalsIgnoreCase
(
sourceIdType
))
{
List
<
WTChangeIssue
>
changeable
=
WTChangeDataUtil
.
getIssueByChangeable
((
Changeable2
)
wtObjectById
);
if
(!
CollectionUtils
.
isEmpty
(
changeable
))
{
for
(
WTChangeIssue
wtChangeIssue
:
changeable
)
{
DxProblemReportVo
reportVo
=
new
DxProblemReportVo
(
wtChangeIssue
);
DxReportedAgainstVo
againstVo
=
new
DxReportedAgainstVo
(
reportVo
,
revisionControlledVO
);
resultList
.
add
(
againstVo
);
}
}
}
if
(
"DxChangeRequest"
.
equalsIgnoreCase
(
sourceIdType
))
{
List
<
WTChangeRequest2
>
request2List
=
WTChangeDataUtil
.
getECRByChangeable
((
Changeable2
)
wtObjectById
);
if
(!
CollectionUtils
.
isEmpty
(
request2List
))
{
for
(
WTChangeRequest2
request2
:
request2List
)
{
DxChangeRequestVo
requestVo
=
new
DxChangeRequestVo
(
request2
);
DxChangeAffectedDataVo
dataVo
=
new
DxChangeAffectedDataVo
(
revisionControlledVO
,
requestVo
);
resultList
.
add
(
dataVo
);
}
}
}
if
(
"DxChangeNotice"
.
equalsIgnoreCase
(
sourceIdType
))
{
List
<
WTChangeOrder2
>
order2s
=
WTChangeDataUtil
.
getECNByAffectChange
((
Changeable2
)
wtObjectById
);
if
(!
CollectionUtils
.
isEmpty
(
order2s
))
{
for
(
WTChangeOrder2
order2
:
order2s
)
{
DxChangeNoticeVo
noticeVo
=
new
DxChangeNoticeVo
(
order2
);
DxChangeAffectedDataVo
dataVo
=
new
DxChangeAffectedDataVo
(
revisionControlledVO
,
noticeVo
);
resultList
.
add
(
dataVo
);
}
}
}
//TODO 产生对象集合
if
(
"AfterAffected"
.
equalsIgnoreCase
(
sourceIdType
))
{
List
<
WTChangeOrder2
>
order2s
=
WTChangeDataUtil
.
getECNByChangingChange
((
Changeable2
)
wtObjectById
);
if
(!
CollectionUtils
.
isEmpty
(
order2s
))
{
for
(
WTChangeOrder2
order2
:
order2s
)
{
DxChangeNoticeVo
noticeVo
=
new
DxChangeNoticeVo
(
order2
);
//DxChangeAffectedDataVo dataVo = new DxChangeAffectedDataVo(revisionControlledVO, noticeVo);
resultList
.
add
(
noticeVo
);
}
}
}
return
resultList
;
}
/**
* 根据变更对象 获取关联PBO
* @param id
* @param sourceIdType
* @return
* @throws Exception
*/
public
static
List
getChangeDataLink
(
Long
id
,
String
sourceIdType
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
List
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getChangeDataLink"
,
DXChangeOrderService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
sourceIdType
});
}
CommonUtil
.
initSessionContext
(
null
);
List
resultList
=
new
ArrayList
();
WTObject
wtObjectById
=
RfUtil
.
getWTObjectById
(
id
);
if
(
wtObjectById
instanceof
WTChangeOrder2
)
{
WTChangeOrder2
changeOrder2
=
(
WTChangeOrder2
)
wtObjectById
;
DxChangeNoticeVo
noticeVo
=
new
DxChangeNoticeVo
(
changeOrder2
);
List
<
WTObject
>
changeBefore
=
ChangeOrderUtil
.
getChangeBefore
(
changeOrder2
);
for
(
WTObject
wtObject
:
changeBefore
)
{
IdVO
changeableVO
=
WTChangeDataUtil
.
buildChangeableVO
(
wtObject
);
DxChangeAffectedDataVo
dataVo
=
new
DxChangeAffectedDataVo
((
RevisionControlledVO
)
changeableVO
,
noticeVo
);
resultList
.
add
(
dataVo
);
}
return
resultList
;
}
if
(
wtObjectById
instanceof
WTChangeRequest2
)
{
WTChangeRequest2
changeRequest2
=
(
WTChangeRequest2
)
wtObjectById
;
DxChangeRequestVo
requestVo
=
new
DxChangeRequestVo
(
changeRequest2
);
List
<
WTObject
>
changeBefore
=
ChangeOrderUtil
.
getChangeBefore
(
changeRequest2
);
for
(
WTObject
wtObject
:
changeBefore
)
{
IdVO
changeableVO
=
WTChangeDataUtil
.
buildChangeableVO
(
wtObject
);
DxChangeAffectedDataVo
dataVo
=
new
DxChangeAffectedDataVo
((
RevisionControlledVO
)
changeableVO
,
requestVo
);
resultList
.
add
(
dataVo
);
}
return
resultList
;
}
if
(
wtObjectById
instanceof
WTChangeIssue
)
{
WTChangeIssue
changeIssue
=
(
WTChangeIssue
)
wtObjectById
;
DxProblemReportVo
reportVo
=
new
DxProblemReportVo
(
changeIssue
);
List
<
WTObject
>
changeBefore
=
ChangeOrderUtil
.
getChangeBefore
(
changeIssue
);
for
(
WTObject
wtObject
:
changeBefore
)
{
IdVO
changeableVO
=
WTChangeDataUtil
.
buildChangeableVO
(
wtObject
);
DxReportedAgainstVo
againstVo
=
new
DxReportedAgainstVo
(
reportVo
,
(
RevisionControlledVO
)
changeableVO
);
resultList
.
add
(
againstVo
);
}
return
resultList
;
}
return
resultList
;
}
/**
* 根据id 获取变更对象
* @param id
* @param sourceIdType
* @return
* @throws Exception
*/
public
static
IdVO
getWorkingCopyById
(
Long
id
,
String
sourceIdType
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
IdVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getWorkingCopyById"
,
DXChangeOrderService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
sourceIdType
});
}
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
);
}
return
idVO
;
}
}
src/com/yonde/change/util/WTChangeDataUtil.java
0 → 100644
View file @
09bc7ce6
package
com
.
yonde
.
change
.
util
;
import
com.ptc.core.meta.common.impl.TypeIdentifierUtilityHelper
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.common.CommonUtil
;
import
com.yonde.doc.vo.DxDocumentVO
;
import
com.yonde.part.vo.DxPartVO
;
import
wt.change2.*
;
import
wt.doc.WTDocument
;
import
wt.enterprise.RevisionControlled
;
import
wt.fc.ObjectIdentifier
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.QueryResult
;
import
wt.fc.WTObject
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
import
wt.pdmlink.PDMLinkProduct
;
import
wt.query.QuerySpec
;
import
wt.query.SearchCondition
;
import
wt.util.WTException
;
import
wt.vc.VersionControlException
;
import
wt.vc.VersionControlHelper
;
import
wt.vc.baseline.Baseline
;
import
wt.vc.views.Variation2
;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
WTChangeDataUtil
implements
RemoteAccess
{
/**
* 根据oid获取产品名称
* @param oid
* @return
*/
public
static
PDMLinkProduct
getProductByOid
(
String
oid
){
if
(!
RemoteMethodServer
.
ServerFlag
)
{
try
{
return
(
PDMLinkProduct
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getProductByOid"
,
WTChangeDataUtil
.
class
.
getName
(),
null
,
new
Class
[]
{
String
.
class
},
new
Object
[]
{
oid
}
);
}
catch
(
RemoteException
e
)
{
e
.
printStackTrace
();
}
catch
(
InvocationTargetException
e
)
{
e
.
printStackTrace
();
}
}
/* try {
Persistable persistable = ToolUtils.getObjectByOid(oid);
if (persistable instanceof PDMLinkProduct) {
return (PDMLinkProduct) ToolUtils.getObjectByOid(oid);
} else if (persistable instanceof SubFolder) {
SubFolder subFolder = (SubFolder) ToolUtils.getObjectByOid(oid);
return (PDMLinkProduct) subFolder.getContainer();
} else if (persistable instanceof Cabinet) {
Cabinet cabinet = (Cabinet) ToolUtils.getObjectByOid(oid);
return (PDMLinkProduct) cabinet.getContainer();
}
} catch (WTException e) {
e.printStackTrace();
}*/
return
null
;
}
/**
* 获取行号信息
* @return
*/
public
static
String
getLineInfo
()
{
StackTraceElement
ste
=
new
Throwable
().
getStackTrace
()[
1
];
return
ste
.
getFileName
()
+
": Line "
+
ste
.
getLineNumber
();
}
/**
* This method is used to create ECR
*
* @param name
* name
* number
* @param attributes
* @param product
* @return
*/
/*public static WTChangeRequest2 createECR(String name, HashMap attributes, PDMLinkProduct product) {
WTChangeRequest2 ecr = null;
try {
ecr = WTChangeRequest2.newWTChangeRequest2(getStringValue((String) attributes.get("partNumber")));
//设置软类型
TypeDefinitionReference tdr = TypedUtilityServiceHelper.service
.getTypeDefinitionReference("CAIC.EngineeringChangeRequest");
ecr.setTypeDefinitionReference(tdr);
if (product != null){
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);
}
String PartNumber = getStringValue((String) attributes.get("partNumber"));
if (!StringUtil.isEmpty(PartNumber)){
IBAHelper.setIBAStringValue(ecr, "PartNumber", PartNumber);
}
String CUSTPHASE = getStringValue((String) attributes.get("custPhase"));
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);
if (product != null){
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);
}
String PartNumber = getStringValue((String) attributes.get("partNumber"));
if (!StringUtil.isEmpty(PartNumber)){
IBAHelper.setIBAStringValue(ecr, "PartNumber", PartNumber);
}
String CUSTPHASE = getStringValue((String) attributes.get("custPhase"));
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
*/
public
static
String
getStringValue
(
String
value
)
{
if
(
value
==
null
)
return
""
;
value
=
value
.
trim
();
return
value
;
}
/**
* 通过产品oid获取基线对象
* @param oid
* @return
*/
public
static
List
getBaseLineByProductId
(
String
oid
){
List
<
Baseline
>
result
=
new
ArrayList
<
Baseline
>();
try
{
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
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
result
;
}
/**
* 获取更改请求
* @param changeable2
* @return
*/
public
static
List
<
WTChangeRequest2
>
getECRByChangeable
(
Changeable2
changeable2
)
{
List
aWTECR
=
new
ArrayList
();
String
user
=
""
;
try
{
user
=
wt
.
session
.
SessionHelper
.
manager
.
getPrincipal
().
getName
();
wt
.
session
.
SessionHelper
.
manager
.
setAdministrator
();
if
(
changeable2
==
null
)
{
return
null
;
}
QueryResult
results
=
ChangeHelper2
.
service
.
getRelevantChangeRequests
(
changeable2
);
while
(
results
.
hasMoreElements
())
{
WTChangeRequest2
wtECR
=
(
WTChangeRequest2
)
results
.
nextElement
();
aWTECR
.
add
(
wtECR
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
user
!=
null
&&
!
user
.
equals
(
""
))
wt
.
session
.
SessionHelper
.
manager
.
setPrincipal
(
user
);
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
return
aWTECR
;
}
/**
* 受影响对象关联ECN
* @param changeable2
* @return
*/
public
static
List
<
WTChangeOrder2
>
getECNByAffectChange
(
Changeable2
changeable2
)
{
List
ecnList
=
new
ArrayList
();
String
user
=
""
;
try
{
user
=
wt
.
session
.
SessionHelper
.
manager
.
getPrincipal
().
getName
();
wt
.
session
.
SessionHelper
.
manager
.
setAdministrator
();
if
(
changeable2
==
null
)
{
return
null
;
}
QueryResult
results
=
ChangeHelper2
.
service
.
getAffectingChangeActivities
(
changeable2
);
while
(
results
.
hasMoreElements
())
{
WTChangeActivity2
wtChangeActivity2
=
(
WTChangeActivity2
)
results
.
nextElement
();
QueryResult
orders
=
ChangeHelper2
.
service
.
getChangeOrder
(
wtChangeActivity2
);
while
(
orders
.
hasMoreElements
())
{
WTChangeOrder2
ecn
=
(
WTChangeOrder2
)
orders
.
nextElement
();
ecnList
.
add
(
ecn
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
user
!=
null
&&
!
user
.
equals
(
""
))
wt
.
session
.
SessionHelper
.
manager
.
setPrincipal
(
user
);
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
return
ecnList
;
}
/**
* 受影响对象关联ECN 自变更通告产生
* @param changeable2
* @return
*/
public
static
List
<
WTChangeOrder2
>
getECNByChangingChange
(
Changeable2
changeable2
)
{
List
ecnList
=
new
ArrayList
();
String
user
=
""
;
try
{
user
=
wt
.
session
.
SessionHelper
.
manager
.
getPrincipal
().
getName
();
wt
.
session
.
SessionHelper
.
manager
.
setAdministrator
();
if
(
changeable2
==
null
)
{
return
null
;
}
QueryResult
results
=
ChangeHelper2
.
service
.
getChangingChangeActivities
(
changeable2
);
while
(
results
.
hasMoreElements
())
{
WTChangeActivity2
wtChangeActivity2
=
(
WTChangeActivity2
)
results
.
nextElement
();
QueryResult
orders
=
ChangeHelper2
.
service
.
getChangeOrder
(
wtChangeActivity2
);
while
(
orders
.
hasMoreElements
())
{
WTChangeOrder2
ecn
=
(
WTChangeOrder2
)
orders
.
nextElement
();
ecnList
.
add
(
ecn
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
user
!=
null
&&
!
user
.
equals
(
""
))
wt
.
session
.
SessionHelper
.
manager
.
setPrincipal
(
user
);
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
return
ecnList
;
}
/**
* 获取问题请求
* @param changeable2
* @return
*/
public
static
List
<
WTChangeIssue
>
getIssueByChangeable
(
Changeable2
changeable2
)
{
List
changeIssueList
=
new
ArrayList
();
String
user
=
""
;
try
{
user
=
wt
.
session
.
SessionHelper
.
manager
.
getPrincipal
().
getName
();
wt
.
session
.
SessionHelper
.
manager
.
setAdministrator
();
if
(
changeable2
==
null
)
{
return
null
;
}
QueryResult
results
=
ChangeHelper2
.
service
.
getReportedAgainstChangeIssue
(
changeable2
);
while
(
results
.
hasMoreElements
())
{
WTChangeIssue
wtChangeIssue
=
(
WTChangeIssue
)
results
.
nextElement
();
changeIssueList
.
add
(
wtChangeIssue
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
user
!=
null
&&
!
user
.
equals
(
""
))
wt
.
session
.
SessionHelper
.
manager
.
setPrincipal
(
user
);
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
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
);
while
(
results
.
hasMoreElements
())
{
WTChangeRequest2
wtECR
=
(
WTChangeRequest2
)
results
.
nextElement
();
String
objType
=
TypeIdentifierUtilityHelper
.
service
.
getTypeIdentifier
(
wtECR
)+
""
;
if
(
objType
.
endsWith
(
"CAIC.PartNumberChangeRequest"
)){
ecp
=
wtECR
;
result
=
ecp
.
getNumber
();
}
}
return
result
;
}
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
)
{
idVO
=
new
DxDocumentVO
((
WTDocument
)
changeable2
);
return
idVO
;
}
return
idVO
;
}
public
static
void
main
(
String
[]
args
)
{
//获取软属性
// IBAHelper.getIBAStringValue(product, ibaKey);
//设置软属性
// IBAHelper.setIBAStringValue(obj, ibaKey, value);
//通过oid获取对象
// ToolUtils.getObjectByOid(oid);
}
}
src/com/yonde/change/vo/DxChangeAffectedDataVo.java
View file @
09bc7ce6
package
com
.
yonde
.
change
.
vo
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.basedata.vo.RevisionControlledVO
;
import
com.yonde.common.entity.DxIterationVOHolder
;
import
java.io.Serializable
;
/**
* 受影响对象LINK
*/
public
class
DxChangeAffectedDataVo
{
public
class
DxChangeAffectedDataVo
implements
Serializable
{
private
String
pboType
;
private
Long
pboId
;
...
...
@@ -29,11 +32,32 @@ public class DxChangeAffectedDataVo {
public
String
displayDxViewName
;
private
RevisionControlledVO
target
;
private
IdVO
source
;
private
Long
sourceId
;
private
String
sourceIdType
;
private
Long
targetId
;
private
String
targetIdType
;
public
DxChangeAffectedDataVo
()
{
}
public
DxChangeAffectedDataVo
(
RevisionControlledVO
target
,
IdVO
source
)
{
this
.
target
=
target
;
this
.
targetId
=
target
.
getId
();
this
.
targetIdType
=
target
.
getSubTypeName
();
this
.
source
=
source
;
this
.
sourceId
=
source
.
getId
();
this
.
sourceIdType
=
source
.
getSubTypeName
();
}
public
IdVO
getSource
()
{
return
source
;
}
public
void
setSource
(
IdVO
source
)
{
this
.
source
=
source
;
}
public
String
getPboType
()
{
return
pboType
;
}
...
...
src/com/yonde/change/vo/DxChangeAfterDataVo.java
View file @
09bc7ce6
...
...
@@ -12,6 +12,24 @@ public class DxChangeAfterDataVo {
private
String
sourceIdType
;
private
Long
targetId
;
private
String
targetIdType
;
private
String
pboType
;
private
Long
pboId
;
public
String
getPboType
()
{
return
pboType
;
}
public
void
setPboType
(
String
pboType
)
{
this
.
pboType
=
pboType
;
}
public
Long
getPboId
()
{
return
pboId
;
}
public
void
setPboId
(
Long
pboId
)
{
this
.
pboId
=
pboId
;
}
public
RevisionControlledVO
getTarget
()
{
return
target
;
...
...
src/com/yonde/change/vo/DxChangeItemVo.java
0 → 100644
View file @
09bc7ce6
package
com
.
yonde
.
change
.
vo
;
import
com.yonde.basedata.vo.IdVO
;
import
java.io.Serializable
;
public
class
DxChangeItemVo
extends
IdVO
implements
Serializable
{
}
src/com/yonde/change/vo/DxReportedAgainstVo.java
View file @
09bc7ce6
package
com
.
yonde
.
change
.
vo
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.basedata.vo.RevisionControlledVO
;
import
com.yonde.change.vo.pr.DxProblemReportVo
;
import
com.yonde.common.ObjectsUtil
;
import
java.io.Serializable
;
/**
*
受影响对象
*
PR Link
*/
public
class
DxReportedAgainstVo
implements
Serializable
{
public
class
DxReportedAgainstVo
extends
IdVO
implements
Serializable
{
private
RevisionControlledVO
target
;
private
DxProblemReportVo
source
;
private
Long
sourceId
;
private
String
sourceIdType
;
private
RevisionControlledVO
target
;
//
private
Long
targetId
;
private
String
targetIdType
;
private
Long
pboId
;
private
String
pboType
;
public
DxReportedAgainstVo
(
DxProblemReportVo
source
,
RevisionControlledVO
target
)
{
if
(
ObjectsUtil
.
nonNull
(
source
))
{
this
.
source
=
source
;
this
.
sourceId
=
source
.
getId
();
this
.
sourceIdType
=
source
.
getDxClassname
().
substring
(
source
.
getDxClassname
().
lastIndexOf
(
"."
)
+
1
);
this
.
id
=
sourceId
;
this
.
createTime
=
source
.
getCreateTime
();
this
.
modifyTime
=
source
.
getModifyTime
();
}
if
(
ObjectsUtil
.
nonNull
(
target
))
{
this
.
target
=
target
;
this
.
targetId
=
target
.
getId
();
this
.
targetIdType
=
target
.
getDxClassname
().
substring
(
target
.
getDxClassname
().
lastIndexOf
(
"."
)
+
1
);
}
}
public
Long
getPboId
()
{
return
pboId
;
}
public
void
setPboId
(
Long
pboId
)
{
this
.
pboId
=
pboId
;
}
public
String
getPboType
()
{
return
pboType
;
}
public
void
setPboType
(
String
pboType
)
{
this
.
pboType
=
pboType
;
}
public
DxProblemReportVo
getSource
()
{
return
source
;
}
public
void
setSource
(
DxProblemReportVo
source
)
{
this
.
source
=
source
;
}
public
RevisionControlledVO
getTarget
()
{
return
target
;
}
...
...
src/com/yonde/change/vo/ecn/DxChangeNoticeVo.java
View file @
09bc7ce6
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.common.ChangeOrderUtil
;
import
com.yonde.common.DxCommonUtils
;
import
com.yonde.common.IBAHelper
;
import
com.yonde.common.ObjectsUtil
;
import
com.yonde.context.vo.DxContextVO
;
import
wt.change2.WTChangeOrder2
;
import
wt.org.WTOrganization
;
import
wt.
util.WTException
;
import
wt.
type.ClientTypedUtility
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Locale
;
public
class
DxChangeNoticeVo
extends
IdVO
implements
Serializable
{
...
...
@@ -45,10 +47,15 @@ public class DxChangeNoticeVo extends IdVO implements Serializable {
this
.
number
=
wtChangeOrder2
.
getNumber
();
this
.
state
=
wtChangeOrder2
.
getState
().
getState
().
toString
();
WTOrganization
organization
=
wtChangeOrder2
.
getOrganization
();
if
(
ObjectsUtil
.
nonNull
(
organization
))
{
this
.
setDxOrganization
(
new
DxOrganizationVO
(
organization
));
}
this
.
setDxContext
(
new
DxContextVO
(
wtChangeOrder2
.
getContainer
()));
this
.
setModifier
(
new
DxUserVO
(
wtChangeOrder2
.
getModifier
().
getPrincipal
()));
this
.
setCreator
(
new
DxUserVO
(
wtChangeOrder2
.
getCreator
().
getPrincipal
()));
this
.
dynamicAttrs
=
IBAHelper
.
getAllIBAValues
(
wtChangeOrder2
);
this
.
subTypeName
=
"DxChangeNotice"
;
//TODO 要映射
this
.
subTypeDisplayName
=
ClientTypedUtility
.
getLocalizedTypeName
(
wtChangeOrder2
,
Locale
.
SIMPLIFIED_CHINESE
);
this
.
setObjFileLinks
(
DxCommonUtils
.
buildObjFileLinks
(
wtChangeOrder2
));
//ChangeOrderUtil.get
...
...
src/com/yonde/change/vo/ecr/DxChangeRequestVo.java
View file @
09bc7ce6
package
com
.
yonde
.
change
.
vo
.
ecr
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.basedata.vo.DxDocumentFolderVO
;
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.common.DxCommonUtils
;
import
com.yonde.common.IBAHelper
;
import
com.yonde.common.ObjectsUtil
;
import
com.yonde.context.vo.DxContextVO
;
import
org.apache.commons.lang.StringUtils
;
import
wt.change2.WTChangeRequest2
;
import
wt.org.WTOrganization
;
import
wt.type.ClientTypedUtility
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Locale
;
/**
* ECR
*/
public
class
DxChangeRequestVo
extends
IdVO
{
public
class
DxChangeRequestVo
extends
IdVO
implements
Serializable
{
private
String
number
;
private
String
name
;
...
...
@@ -23,8 +34,111 @@ public class DxChangeRequestVo extends IdVO {
private
Long
dxOrganizationId
;
private
String
dxOrganizationIdType
;
private
DxDocumentFolderVO
folderVO
;
private
List
<
ObjFileLinkVO
>
objFileLinks
;
//受影响对象
private
List
<
DxChangeAffectedDataVo
>
changeAffectedDatas
;
public
DxChangeRequestVo
(
WTChangeRequest2
ecr
)
throws
Exception
{
super
(
ecr
);
this
.
name
=
ecr
.
getName
();
this
.
number
=
ecr
.
getNumber
();
this
.
state
=
ecr
.
getState
().
getState
().
getDisplay
();
WTOrganization
organization
=
ecr
.
getOrganization
();
if
(
ObjectsUtil
.
nonNull
(
organization
))
{
this
.
setDxOrganization
(
new
DxOrganizationVO
(
organization
));
}
this
.
setDxContext
(
new
DxContextVO
(
ecr
.
getContainer
()));
this
.
subTypeName
=
"DxChangeRequest"
;
//TODO 要映射
this
.
subTypeDisplayName
=
ClientTypedUtility
.
getLocalizedTypeName
(
ecr
,
Locale
.
SIMPLIFIED_CHINESE
);
this
.
setModifier
(
new
DxUserVO
(
ecr
.
getModifier
().
getPrincipal
()));
this
.
setCreator
(
new
DxUserVO
(
ecr
.
getCreator
().
getPrincipal
()));
this
.
dynamicAttrs
=
IBAHelper
.
getAllIBAValues
(
ecr
);
if
(
StringUtils
.
isNotEmpty
(
ecr
.
getDescription
()))
{
this
.
getDynamicAttrs
().
put
(
"description"
,
ecr
.
getDescription
());
}
this
.
setObjFileLinks
(
DxCommonUtils
.
buildObjFileLinks
(
ecr
));
}
public
String
getNumber
()
{
return
number
;
}
public
void
setNumber
(
String
number
)
{
this
.
number
=
number
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getState
()
{
return
state
;
}
public
void
setState
(
String
state
)
{
this
.
state
=
state
;
}
public
DxContextVO
getDxContext
()
{
return
dxContext
;
}
public
void
setDxContext
(
DxContextVO
dxContext
)
{
this
.
dxContext
=
dxContext
;
}
public
Long
getDxContextId
()
{
return
dxContextId
;
}
public
void
setDxContextId
(
Long
dxContextId
)
{
this
.
dxContextId
=
dxContextId
;
}
public
DxOrganizationVO
getDxOrganization
()
{
return
dxOrganization
;
}
public
void
setDxOrganization
(
DxOrganizationVO
dxOrganization
)
{
this
.
dxOrganization
=
dxOrganization
;
}
public
Long
getDxOrganizationId
()
{
return
dxOrganizationId
;
}
public
void
setDxOrganizationId
(
Long
dxOrganizationId
)
{
this
.
dxOrganizationId
=
dxOrganizationId
;
}
public
String
getDxOrganizationIdType
()
{
return
dxOrganizationIdType
;
}
public
void
setDxOrganizationIdType
(
String
dxOrganizationIdType
)
{
this
.
dxOrganizationIdType
=
dxOrganizationIdType
;
}
public
List
<
ObjFileLinkVO
>
getObjFileLinks
()
{
return
objFileLinks
;
}
public
void
setObjFileLinks
(
List
<
ObjFileLinkVO
>
objFileLinks
)
{
this
.
objFileLinks
=
objFileLinks
;
}
public
List
<
DxChangeAffectedDataVo
>
getChangeAffectedDatas
()
{
return
changeAffectedDatas
;
}
public
void
setChangeAffectedDatas
(
List
<
DxChangeAffectedDataVo
>
changeAffectedDatas
)
{
this
.
changeAffectedDatas
=
changeAffectedDatas
;
}
}
src/com/yonde/change/vo/pr/DxProblemReportVo.java
View file @
09bc7ce6
package
com
.
yonde
.
change
.
vo
.
pr
;
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.DxReportedAgainstVo
;
import
com.yonde.common.DxCommonUtils
;
import
com.yonde.common.IBAHelper
;
import
com.yonde.common.ObjectsUtil
;
import
com.yonde.context.vo.DxContextVO
;
import
org.apache.commons.lang.StringUtils
;
import
wt.change2.WTChangeIssue
;
import
wt.org.WTOrganization
;
import
wt.type.ClientTypedUtility
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Locale
;
/**
* PR
*/
public
class
DxProblemReportVo
extends
IdVO
implements
Serializable
{
private
String
name
;
private
String
number
;
private
String
state
;
private
String
problemSource
;
private
String
problemCategory
;
private
String
comments
;
...
...
@@ -20,8 +36,112 @@ public class DxProblemReportVo extends IdVO implements Serializable {
private
String
problemIdentity
;
private
Short
technologyPriority
;
private
DxContextVO
dxContext
;
private
Long
dxContextId
;
private
DxOrganizationVO
dxOrganization
;
private
Long
dxOrganizationId
;
private
String
dxOrganizationIdType
;
private
List
<
DxReportedAgainstVo
>
reportedAgainsts
;
private
List
<
ObjFileLinkVO
>
objFileLinks
;
public
DxProblemReportVo
()
{
}
public
DxProblemReportVo
(
WTChangeIssue
ifc
)
throws
Exception
{
super
(
ifc
);
this
.
name
=
ifc
.
getName
();
this
.
number
=
ifc
.
getNumber
();
this
.
state
=
ifc
.
getState
().
getState
().
toString
();
WTOrganization
organization
=
ifc
.
getOrganization
();
if
(
ObjectsUtil
.
nonNull
(
organization
))
{
this
.
setDxOrganization
(
new
DxOrganizationVO
(
organization
));
}
this
.
setDxContext
(
new
DxContextVO
(
ifc
.
getContainer
()));
this
.
subTypeName
=
"DxProblemReport"
;
//TODO 要映射
this
.
subTypeDisplayName
=
ClientTypedUtility
.
getLocalizedTypeName
(
ifc
,
Locale
.
SIMPLIFIED_CHINESE
);
this
.
setModifier
(
new
DxUserVO
(
ifc
.
getModifier
().
getPrincipal
()));
this
.
setCreator
(
new
DxUserVO
(
ifc
.
getCreator
().
getPrincipal
()));
this
.
dynamicAttrs
=
IBAHelper
.
getAllIBAValues
(
ifc
);
if
(
StringUtils
.
isNotEmpty
(
ifc
.
getDescription
()))
{
this
.
getDynamicAttrs
().
put
(
"description"
,
ifc
.
getDescription
());
}
this
.
setObjFileLinks
(
DxCommonUtils
.
buildObjFileLinks
(
ifc
));
}
public
DxContextVO
getDxContext
()
{
return
dxContext
;
}
public
void
setDxContext
(
DxContextVO
dxContext
)
{
this
.
dxContext
=
dxContext
;
}
public
Long
getDxContextId
()
{
return
dxContextId
;
}
public
void
setDxContextId
(
Long
dxContextId
)
{
this
.
dxContextId
=
dxContextId
;
}
public
DxOrganizationVO
getDxOrganization
()
{
return
dxOrganization
;
}
public
void
setDxOrganization
(
DxOrganizationVO
dxOrganization
)
{
this
.
dxOrganization
=
dxOrganization
;
}
public
Long
getDxOrganizationId
()
{
return
dxOrganizationId
;
}
public
void
setDxOrganizationId
(
Long
dxOrganizationId
)
{
this
.
dxOrganizationId
=
dxOrganizationId
;
}
public
String
getDxOrganizationIdType
()
{
return
dxOrganizationIdType
;
}
public
void
setDxOrganizationIdType
(
String
dxOrganizationIdType
)
{
this
.
dxOrganizationIdType
=
dxOrganizationIdType
;
}
public
String
getState
()
{
return
state
;
}
public
void
setState
(
String
state
)
{
this
.
state
=
state
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getNumber
()
{
return
number
;
}
public
void
setNumber
(
String
number
)
{
this
.
number
=
number
;
}
public
List
<
ObjFileLinkVO
>
getObjFileLinks
()
{
return
objFileLinks
;
}
public
void
setObjFileLinks
(
List
<
ObjFileLinkVO
>
objFileLinks
)
{
this
.
objFileLinks
=
objFileLinks
;
}
public
String
getProblemSource
()
{
return
problemSource
;
}
...
...
src/com/yonde/common/ChangeOrderUtil.java
View file @
09bc7ce6
package
com
.
yonde
.
common
;
import
com.yonde.basedata.search.SearchOperatorEnumUtil
;
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
;
import
wt.change2.*
;
import
wt.fc.*
;
import
wt.fc.collections.WTArrayList
;
import
wt.fc.collections.WTCollection
;
import
wt.fc.collections.WTHashSet
;
import
wt.fc.collections.WTList
;
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
;
...
...
@@ -35,6 +38,7 @@ import wt.workflow.engine.WfEngineHelper;
import
wt.workflow.engine.WfProcess
;
import
wt.workflow.engine.WfState
;
import
java.rmi.RemoteException
;
import
java.sql.Timestamp
;
import
java.util.*
;
...
...
@@ -126,6 +130,45 @@ public class ChangeOrderUtil
return
changeOrder
;
}
/**
* @param name
* @param ecnType
* @param folder
* @param description
* @return
* @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
{
if
(
ObjectsUtil
.
isNull
(
changeOrder
))
{
changeOrder
=
WTChangeOrder2
.
newWTChangeOrder2
(
name
);
}
TypeDefinitionReference
typeDefinitionRef
=
TypedUtility
.
getTypeDefinitionReference
(
ecnType
);
if
(
typeDefinitionRef
==
null
)
{
typeDefinitionRef
=
TypeDefinitionReference
.
newTypeDefinitionReference
();
}
changeOrder
.
setTypeDefinitionReference
(
typeDefinitionRef
);
if
(!
StringUtils
.
isEmpty
(
description
)){
changeOrder
.
setDescription
(
description
);
}
changeOrder
.
setChangeNoticeComplexity
(
ChangeNoticeComplexity
.
BASIC
);
if
(
ObjectsUtil
.
isNull
(
folder
))
{
WTContainer
container
=
changeOrder
.
getContainer
();
WTContainerRef
containerRef
=
WTContainerRef
.
newWTContainerRef
(
container
);
folder
=
FolderHelper
.
service
.
getFolder
(
"/Default/"
,
containerRef
);
}
FolderHelper
.
assignLocation
((
FolderEntry
)
changeOrder
,
folder
);
changeOrder
=
(
WTChangeOrder2
)
ChangeHelper2
.
service
.
saveChangeOrder
(
changeOrder
);
if
(
ObjectsUtil
.
nonNull
(
ibaMap
))
{
IBAUtil
.
forceSetIBAValues
(
changeOrder
,
ibaMap
);
}
changeOrder
=
(
WTChangeOrder2
)
PersistenceHelper
.
manager
.
refresh
(
changeOrder
);
return
changeOrder
;
}
/**
* autoCreateECAFromECN
*
...
...
@@ -424,6 +467,70 @@ public class ChangeOrderUtil
}
return
null
;
}
/**
* This method is used to get ECR by it's number.
*
* @param issueNumber
* @return
*/
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
())
{
return
(
WTChangeIssue
)
results
.
nextElement
();
}
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
/**
* get all affected object from ecr
*
* @param ecr
* @return
* @throws ChangeException2
* @throws WTException
*/
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
())
{
WTObject
object
=
(
WTObject
)
res
.
nextElement
();
list
.
add
(
object
);
}
return
list
;
}
/**
* get all affected object from issue
*
* @param issue
* @return
* @throws ChangeException2
* @throws WTException
*/
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
())
{
WTObject
object
=
(
WTObject
)
res
.
nextElement
();
list
.
add
(
object
);
}
return
list
;
}
/**
* get all affected object from ECN
...
...
@@ -768,4 +875,191 @@ public class ChangeOrderUtil
return
cr
;
}
/**
* 为变更请求添加内容对象
*
* @param issue 目标变更请求
* @param changeable 变更请求内容对象
* @return 添加好的变更请求对象
*/
public
static
WTChangeIssue
addChangeableToChangeIssue
(
WTChangeIssue
issue
,
Changeable2
changeable
)
{
try
{
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
false
);
try
{
Vector
changeables
=
new
Vector
();
changeables
.
add
(
changeable
);
ChangeHelper2
.
service
.
storeAssociations
(
RelevantAnalysisData
.
class
,
issue
,
changeables
);
issue
=
(
WTChangeIssue
)
PersistenceHelper
.
manager
.
refresh
(
issue
);
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
issue
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
issue
;
}
/**
* 创建ECR和受影响对象直接关联
*
* @param ecr
* @param affectedData
*/
@SuppressWarnings
({
"rawtypes"
,
"null"
})
public
static
void
setECRAffectedData
(
WTChangeRequest2
ecr
,
Vector
affectedData
)
{
String
user
=
""
;
try
{
user
=
wt
.
session
.
SessionHelper
.
manager
.
getPrincipal
().
getName
();
wt
.
session
.
SessionHelper
.
manager
.
setAdministrator
();
}
catch
(
Exception
e
)
{
}
try
{
Vector
vector
=
ChangeHelper2
.
service
.
storeAssociations
(
RelevantRequestData2
.
class
,
ecr
,
affectedData
);
if
(
vector
!=
null
)
System
.
out
.
println
(
"\t==after adding affected data, return vector="
+
vector
.
toString
());
else
System
.
out
.
println
(
"\t==after adding affected data, return vector="
+
vector
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(!
""
.
equals
(
user
))
{
try
{
wt
.
session
.
SessionHelper
.
manager
.
setPrincipal
(
user
);
}
catch
(
Exception
e
)
{
}
}
}
/**
* 创建Issue和受影响对象直接关联
*
* @param issue
* @param affectedData
*/
@SuppressWarnings
({
"rawtypes"
,
"null"
})
public
static
void
setIssueAffectedData
(
WTChangeIssue
issue
,
Vector
affectedData
)
{
String
user
=
""
;
try
{
user
=
wt
.
session
.
SessionHelper
.
manager
.
getPrincipal
().
getName
();
wt
.
session
.
SessionHelper
.
manager
.
setAdministrator
();
}
catch
(
Exception
e
)
{
}
try
{
Vector
vector
=
ChangeHelper2
.
service
.
storeAssociations
(
RelevantAnalysisData
.
class
,
issue
,
affectedData
);
if
(
vector
!=
null
)
System
.
out
.
println
(
"\t==after adding affected data, return vector="
+
vector
.
toString
());
else
System
.
out
.
println
(
"\t==after adding affected data, return vector="
+
vector
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(!
""
.
equals
(
user
))
{
try
{
wt
.
session
.
SessionHelper
.
manager
.
setPrincipal
(
user
);
}
catch
(
Exception
e
)
{
}
}
}
/**
* This method is used to create ECR
*
* @param entityVO
* @return
* @throws WTException
* @throws WTPropertyVetoException
* @throws RemoteException
* @throws ChangeException2
*/
@SuppressWarnings
({
"rawtypes"
})
private
static
WTChangeRequest2
createECR
(
DxChangeRequestVo
entityVO
,
WTContainer
container
)
throws
WTException
,
WTPropertyVetoException
,
RemoteException
{
WTChangeRequest2
ecr
=
null
;
String
name
=
entityVO
.
getName
();
ecr
=
WTChangeRequest2
.
newWTChangeRequest2
(
name
);
String
number
=
entityVO
.
getNumber
();
if
(
number
!=
null
)
{
ecr
.
setNumber
(
number
);
}
DxContextVO
dxContext
=
entityVO
.
getDxContext
();
if
(
ObjectsUtil
.
nonNull
(
dxContext
))
{
String
contextName
=
dxContext
.
getName
();
container
=
ContainerUtil
.
getContainerByName
(
contextName
);
}
if
(
ObjectsUtil
.
isNull
(
container
))
{
return
null
;
}
if
(
container
!=
null
)
{
ecr
.
setContainer
(
container
);
String
folderPath
=
null
;
DxDocumentFolderVO
folderVO
=
null
;
if
(
ObjectsUtil
.
nonNull
(
folderVO
))
{
folderPath
=
folderVO
.
getFullPath
();
}
//Folder folder = DxCommonUtils.makeFolder(folderPath, container.getContainerReference());
//设置ecr的文件夹路径
Folder
location
=
DxCommonUtils
.
makeFolder
(
folderPath
,
container
.
getContainerReference
());
//String changeFolder = FolderUtil.getFolderString(FolderUtil.CHANGE_FOLDER);
if
(
location
!=
null
){
WTValuedHashMap
loacationMap
=
new
WTValuedHashMap
();
loacationMap
.
put
(
ecr
,
location
);
FolderHelper
.
assignLocations
(
loacationMap
);
}
else
{
System
.
out
.
println
(
"未找到工程更改文件夹"
);
}
}
String
type
=
entityVO
.
getSubTypeName
();
if
(
StringUtils
.
isNotEmpty
(
type
))
{
TypeDefinitionReference
tdr
=
TypedUtilityServiceHelper
.
service
.
getTypeDefinitionReference
(
type
);
ecr
.
setTypeDefinitionReference
(
tdr
);
}
ecr
=
(
WTChangeRequest2
)
ChangeHelper2
.
service
.
saveChangeRequest
(
ecr
);
List
<
DxChangeAffectedDataVo
>
affectedDatas
=
entityVO
.
getChangeAffectedDatas
();
Vector
affectedDataVector
=
new
Vector
();
if
(!
CollectionUtils
.
isEmpty
(
affectedDatas
))
{
for
(
DxChangeAffectedDataVo
affectedData
:
affectedDatas
)
{
Long
targetId
=
affectedData
.
getTargetId
();
String
pboType
=
affectedData
.
getPboType
();
String
typeStr
=
SearchOperatorEnumUtil
.
typeStrPrefixMap
.
get
(
pboType
);
Persistable
oid
=
CommonUtil
.
getPersistableByOid
(
"OR:"
+
typeStr
+
targetId
);
affectedDataVector
.
add
(
oid
);
setECRAffectedData
(
ecr
,
affectedDataVector
);
}
}
/* String partNum = attributes.get("PARTNUMBER");
if(StringUtils.isNotEmpty(partNum)){
WTPart part = PartUtil.findRightVersionPart(partNum);
if(part != null) {
Vector affectedData = new Vector();
affectedData.add(part);
//受影响成品
ChangeHelper2.service.storeAssociations(RelatedProductData.class, ecr, affectedData);
}
}*/
return
ecr
;
}
/**
* retrive a not-null value of a given string
*
* @param value
* @return
*/
private
static
String
getStringValue
(
String
value
)
{
if
(
value
==
null
)
return
""
;
value
=
value
.
trim
();
return
value
;
}
}
\ No newline at end of file
src/com/yonde/common/DxSearchUtil.java
View file @
09bc7ce6
...
...
@@ -5,7 +5,9 @@ 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.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.doc.vo.DxDocumentVO
;
import
com.yonde.part.vo.DxPartVO
;
import
org.apache.commons.collections.CollectionUtils
;
...
...
@@ -13,6 +15,10 @@ import org.apache.commons.lang.StringUtils;
import
org.apache.log4j.Logger
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
wt.change2.VersionableChangeItem
;
import
wt.change2.WTChangeIssue
;
import
wt.change2.WTChangeOrder2
;
import
wt.change2.WTChangeRequest2
;
import
wt.doc.WTDocument
;
import
wt.fc.*
;
import
wt.log4j.LogR
;
...
...
@@ -25,6 +31,7 @@ import wt.session.SessionServerHelper;
import
wt.util.WTAttributeNameIfc
;
import
wt.util.WTException
;
import
wt.vc.Iterated
;
import
wt.vc.baseline.Baseline
;
import
wt.vc.views.View
;
import
wt.vc.views.ViewHelper
;
import
wt.vc.wip.WorkInProgressHelper
;
...
...
@@ -80,7 +87,7 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
List
<
String
>
indices
=
searchQueryCondition
.
getIndices
();
Class
cls
=
WTPart
.
class
;
if
(
StringUtils
.
isNotEmpty
(
searchQueryCondition
.
getName
()))
{
cls
=
WTDocument
.
class
;
cls
=
SearchOperatorEnumUtil
.
typeMap
.
get
(
searchQueryCondition
.
getName
())
;
}
try
{
//合并查询条件
...
...
@@ -91,13 +98,14 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
//构建查询
QuerySpec
querySpec
=
DxSearchUtil
.
buildQuerySpec
(
searchItems
,
cls
);
//通用查询条件
if
(!
cls
.
getName
().
toLowerCase
().
contains
(
"change"
))
{
// Case 1:检入状态
if
(
querySpec
.
getConditionCount
()
>
0
)
{
querySpec
.
appendAnd
();
}
querySpec
.
appendWhere
(
WorkInProgressHelper
.
getSearchCondition
(
cls
,
WorkInProgressState
.
CHECKED_IN
,
tru
e
),
cls
,
WorkInProgressState
.
WORKING
,
fals
e
),
new
int
[]{
0
});
if
(
CollectionUtils
.
isNotEmpty
(
indices
))
{
if
(
querySpec
.
getConditionCount
()
>
0
)
{
...
...
@@ -107,15 +115,22 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
SearchCondition
.
IS_TRUE
);
querySpec
.
appendWhere
(
condition
,
new
int
[]{
0
});
}
}
//创建时间排序
querySpec
.
appendOrderBy
(
cls
,
"thePersistInfo.createStamp"
,
true
);
//page
int
pageFrom
=
0
;
int
pageSize
=
9999
;
if
(
ObjectsUtil
.
nonNull
(
searchQueryCondition
.
getPageFrom
()))
{
pageFrom
=
searchQueryCondition
.
getPageFrom
()
-
1
;
pageSize
=
searchQueryCondition
.
getPageSize
();
}
BasicPageableQuerySpec
bpqs
=
new
BasicPageableQuerySpec
();
bpqs
.
setPrimaryStatement
(
querySpec
);
logger
.
error
(
"pageFrom===="
+
(
searchQueryCondition
.
getPageFrom
()-
1
)*
searchQueryCondition
.
getPageSize
()
);
logger
.
error
(
"pageSize===="
+
searchQueryCondition
.
getPageSize
()
);
bpqs
.
setOffset
(
(
searchQueryCondition
.
getPageFrom
()-
1
)*
searchQueryCondition
.
getPageSize
()
);
bpqs
.
setRange
(
searchQueryCondition
.
getPageSize
()
);
logger
.
error
(
"pageFrom===="
+
pageFrom
*
pageSize
);
logger
.
error
(
"pageSize===="
+
pageSize
);
bpqs
.
setOffset
(
pageFrom
*
pageSize
);
bpqs
.
setRange
(
pageSize
);
bpqs
.
setBackgroundThreadEnabled
(
false
);
bpqs
.
setLimitModeEnabled
(
true
);
//bpqs.setAdvancedQueryEnabled();
...
...
@@ -129,23 +144,43 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
/**
* 生成反馈结果
* @param o
* @param
part
List
* @param
obj
List
* @param indices
* @throws Exception
*/
public
static
void
buildQueryResult
(
WTObject
o
,
List
part
List
,
List
<
String
>
indices
)
throws
Exception
{
public
static
void
buildQueryResult
(
WTObject
o
,
List
obj
List
,
List
<
String
>
indices
)
throws
Exception
{
if
(
o
instanceof
WTPart
)
{
WTPart
wtPart
=
(
WTPart
)
o
;
DxPartVO
dxPartVO
=
new
DxPartVO
(
wtPart
);
part
List
.
add
(
dxPartVO
);
obj
List
.
add
(
dxPartVO
);
return
;
}
if
(
o
instanceof
WTDocument
)
{
WTDocument
document
=
(
WTDocument
)
o
;
DxDocumentVO
dxPartVO
=
new
DxDocumentVO
(
document
);
partList
.
add
(
dxPartVO
);
}
else
{
//TODO ...other type
objList
.
add
(
dxPartVO
);
return
;
}
if
(
o
instanceof
WTChangeOrder2
)
{
WTChangeOrder2
changeOrder2
=
(
WTChangeOrder2
)
o
;
DxChangeNoticeVo
changeNoticeVo
=
new
DxChangeNoticeVo
(
changeOrder2
);
objList
.
add
(
changeNoticeVo
);
return
;
}
if
(
o
instanceof
WTChangeRequest2
)
{
WTChangeRequest2
changeRequest2
=
(
WTChangeRequest2
)
o
;
DxChangeRequestVo
changeRequestVo
=
new
DxChangeRequestVo
(
changeRequest2
);
objList
.
add
(
changeRequestVo
);
return
;
}
if
(
o
instanceof
WTChangeIssue
)
{
WTChangeIssue
issue
=
(
WTChangeIssue
)
o
;
DxProblemReportVo
problemReportVo
=
new
DxProblemReportVo
(
issue
);
objList
.
add
(
problemReportVo
);
return
;
}
if
(
o
instanceof
Baseline
)
{
// TODO 基线
}
}
...
...
@@ -255,6 +290,11 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
if
(
fieldName
.
toLowerCase
().
contains
(
"stamp"
)
&&
ObjectsUtil
.
nonNull
(
value
))
{
value
=
Timestamp
.
valueOf
(
String
.
valueOf
(
value
));
}
if
(
value
instanceof
Long
||
fieldName
.
contains
(
Iterated
.
MASTER_REFERENCE
)
||
fieldName
.
equalsIgnoreCase
(
WTAttributeNameIfc
.
ID_NAME
))
{
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
op
,
Long
.
valueOf
(
String
.
valueOf
(
value
)));
return
sc
;
}
if
(
value
instanceof
String
)
{
String
scVal
=
String
.
valueOf
(
value
);
if
(
"LIKE"
.
equalsIgnoreCase
(
op
))
{
...
...
@@ -264,11 +304,6 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
op
,
scVal
);
return
sc
;
}
if
(
value
instanceof
Long
||
fieldName
.
contains
(
Iterated
.
MASTER_REFERENCE
)
||
fieldName
.
equalsIgnoreCase
(
WTAttributeNameIfc
.
ID_NAME
))
{
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
op
,
Long
.
valueOf
(
String
.
valueOf
(
value
)));
return
sc
;
}
if
(
value
instanceof
Integer
)
{
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
op
,
Integer
.
valueOf
(
String
.
valueOf
(
value
)));
...
...
src/com/yonde/common/RfUtil.java
View file @
09bc7ce6
package
com
.
yonde
.
common
;
import
com.yonde.basedata.search.SearchOperatorEnumUtil
;
import
wt.doc.WTDocument
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.ReferenceFactory
;
import
wt.fc.WTObject
;
import
wt.fc.WTReference
;
import
wt.fc.*
;
import
wt.lifecycle.LifeCycleHelper
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
...
...
@@ -96,6 +94,46 @@ public class RfUtil {
return
p
;
}
/**
* 通过oid获取WTObject
*
* @param id
* @return
* @throws WTException
* @throws RemoteException
* @throws InvocationTargetException
*/
public
static
WTObject
getWTObjectById
(
Long
id
)
{
WTObject
p
=
null
;
boolean
flag
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
false
);
try
{
List
<
String
>
oidPrefixList
=
SearchOperatorEnumUtil
.
oidPrefixList
;
for
(
String
prefix:
oidPrefixList
)
{
p
=
getWTObjectById
(
id
,
prefix
);
if
(
ObjectsUtil
.
nonNull
(
p
))
{
break
;
}
}
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
flag
);
}
return
p
;
}
public
static
WTObject
getWTObjectById
(
Long
id
,
String
prefix
)
{
WTObject
p
=
null
;
try
{
String
oid
=
prefix
+
id
;
WTReference
wtreference
=
rf
.
getReference
(
oid
);
if
(
wtreference
!=
null
)
{
wtreference
.
refresh
();
p
=
(
WTObject
)
wtreference
.
getObject
();
}
}
catch
(
WTException
e
)
{
}
return
p
;
}
/**
* 根据对象oid获取WTReference
*
...
...
src/com/yonde/common/WorkflowUtil.java
View file @
09bc7ce6
...
...
@@ -758,6 +758,9 @@ public class WorkflowUtil implements RemoteAccess {
try
{
WfProcessDefinition
processDefinition
=
WfDefinerHelper
.
service
.
getProcessDefinition
(
templateName
,
context_ref
);
log
.
error
(
"===temp Name==="
+
templateName
);
log
.
error
(
"===context_ref==="
+
context_ref
);
log
.
error
(
"===processDefinition==="
+
processDefinition
);
wfprocess
=
WfEngineHelper
.
service
.
createProcess
(
processDefinition
,
team_spec
,
context_ref
);
wfprocess
.
setName
(
processname
);
ProcessData
processData
=
wfprocess
.
getContext
();
...
...
src/com/yonde/doc/controller/DxDocController.java
View file @
09bc7ce6
...
...
@@ -32,7 +32,6 @@ public class DxDocController extends AbstractBaseController {
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
dxDocumentVO
;
}
...
...
src/com/yonde/part/bean/PdmPartBean.java
View file @
09bc7ce6
...
...
@@ -16,6 +16,7 @@ import java.io.Serializable;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
public
class
PdmPartBean
implements
Serializable
,
Cloneable
{
...
...
@@ -50,7 +51,11 @@ public class PdmPartBean implements Serializable, Cloneable {
this
.
parentNumber
=
parent
.
getNumber
();
Quantity
qt
=
usageLink
.
getQuantity
();
this
.
setAmount
(
qt
.
getAmount
());
this
.
setUnit
(
qt
.
getUnit
().
toString
());
String
unit
=
qt
.
getUnit
().
getDisplay
(
Locale
.
SIMPLIFIED_CHINESE
);
if
(
"每个"
.
equals
(
unit
))
{
unit
=
"个"
;
}
this
.
setUnit
(
unit
);
WTPartMaster
uses
=
(
WTPartMaster
)
usageLink
.
getUses
();
WTPart
child
=
PartUtil
.
getLatestPartByNoViewWithState
(
uses
.
getNumber
(),
parent
.
getViewName
(),
null
,
false
);
if
(
ObjectsUtil
.
nonNull
(
child
))
{
...
...
src/com/yonde/part/controller/DxPartController.java
View file @
09bc7ce6
...
...
@@ -63,7 +63,6 @@ public class DxPartController extends AbstractBaseController {
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
dxPartVO
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment