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
ee457e27
Commit
ee457e27
authored
Feb 22, 2023
by
shyWang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PDM前端改造
产品中心改造初始提交
parent
e27fad09
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
2312 additions
and
191 deletions
+2312
-191
AbstractBaseController.java
...com/yonde/basedata/controller/AbstractBaseController.java
+51
-25
DxPrincipalVO.java
src/com/yonde/basedata/entity/users/DxPrincipalVO.java
+0
-1
DxUserVO.java
src/com/yonde/basedata/entity/users/DxUserVO.java
+31
-2
BaseSearchCondition.java
src/com/yonde/basedata/search/BaseSearchCondition.java
+1
-1
SearchOperatorEnumUtil.java
src/com/yonde/basedata/search/SearchOperatorEnumUtil.java
+38
-3
BaseSearchService.java
src/com/yonde/basedata/service/BaseSearchService.java
+24
-6
DxDocumentFolderVO.java
src/com/yonde/basedata/vo/DxDocumentFolderVO.java
+30
-0
IdVO.java
src/com/yonde/basedata/vo/IdVO.java
+40
-4
RevisionControlledVO.java
src/com/yonde/basedata/vo/RevisionControlledVO.java
+59
-22
LifecycleStateVO.java
src/com/yonde/basedata/vo/lc/LifecycleStateVO.java
+4
-0
LifecycleTemplateVO.java
src/com/yonde/basedata/vo/lc/LifecycleTemplateVO.java
+23
-0
CommonUtil.java
src/com/yonde/common/CommonUtil.java
+62
-0
ContainerUtil.java
src/com/yonde/common/ContainerUtil.java
+641
-0
DxCommonUtils.java
src/com/yonde/common/DxCommonUtils.java
+0
-2
DxPartUtil.java
src/com/yonde/common/DxPartUtil.java
+293
-8
DxSearchUtil.java
src/com/yonde/common/DxSearchUtil.java
+78
-26
DxContentController.java
src/com/yonde/context/controller/DxContentController.java
+24
-0
DxContextService.java
src/com/yonde/context/service/DxContextService.java
+148
-0
DxContextVO.java
src/com/yonde/context/vo/DxContextVO.java
+64
-3
DxDocController.java
src/com/yonde/doc/controller/DxDocController.java
+81
-0
DxDocService.java
src/com/yonde/doc/service/DxDocService.java
+168
-2
DxDocUtil.java
src/com/yonde/doc/util/DxDocUtil.java
+119
-0
DxDocumentVO.java
src/com/yonde/doc/vo/DxDocumentVO.java
+28
-0
DxPartController.java
src/com/yonde/part/controller/DxPartController.java
+57
-39
DxUsageLinkController.java
src/com/yonde/part/controller/DxUsageLinkController.java
+60
-0
DxPartService.java
src/com/yonde/part/service/DxPartService.java
+174
-19
DxPartServiceImpl.java
src/com/yonde/part/service/impl/DxPartServiceImpl.java
+2
-2
DxPartVO.java
src/com/yonde/part/vo/DxPartVO.java
+9
-11
DxUsageLinkVO.java
src/com/yonde/part/vo/DxUsageLinkVO.java
+1
-14
DxViewVO.java
src/com/yonde/part/vo/DxViewVO.java
+2
-1
No files found.
src/com/yonde/basedata/controller/AbstractBaseController.java
View file @
ee457e27
package
com
.
yonde
.
basedata
.
controller
;
import
com.yonde.basedata.data.DxPageImpl
;
import
com.yonde.basedata.entity.api.ApiResult
;
import
com.yonde.basedata.search.BaseSearchCondition
;
import
com.yonde.basedata.search.SearchItems
;
import
com.yonde.basedata.search.SearchQueryCondition
;
import
com.yonde.basedata.service.BaseSearchService
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.basedata.vo.lc.LifecycleTemplateVO
;
import
com.yonde.common.ObjectsUtil
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
public
class
AbstractBaseController
<
V
extends
IdVO
,
S
extends
BaseSearchService
>
{
import
java.util.List
;
S
getService
()
{
return
(
S
)
new
BaseSearchService
<
V
>();
}
public
class
AbstractBaseController
{
/*
@PostMapping({"recursion"})
ApiResult recursionObj(@RequestBody V entity) {
return ApiResult.ok(this.getService().saveRecursion(entity));
//@ApiOperation("根据模板id查询模板信息,包含模板节点、路径、及节点下的事件 路径下的事件")
@GetMapping
({
"/findDetail/{id}"
})
public
ApiResult
<
LifecycleTemplateVO
>
findDetail
(
@PathVariable
Long
id
)
{
//return ApiResult.ok(this.getService().findDetail(id));
return
ApiResult
.
ok
(
""
);
}
@PostMapping({"/search"})
//@ApiOperation("查询所有")
ApiResult<DxPageImpl<V>> findAll(@RequestBody SearchQueryCondition searchQueryCondition, @RequestParam(required = false) BaseSearchCondition permSearchParams) {
SearchItems searchItems = searchQueryCondition.getSearchItems();
if (ObjectsUtil.nonNull(searchItems)) {
SearchItems permSearchItems = this.getPermSearchItems(permSearchParams);
searchQueryCondition.getSearchItems().addChild(permSearchItems);
//@ApiOperation("配置规范查询")
@PostMapping
({
"findBySpec"
})
List
<
IdVO
>
findByConfigSpec
(
@RequestBody
SearchQueryCondition
specSearch
)
{
try
{
List
<
IdVO
>
partVOS
=
BaseSearchService
.
findByConfigSpecSelect
(
specSearch
);
return
partVOS
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
return ApiResult.ok(this.getService().search(searchQueryCondition));
}
@GetMapping({"/version/getWorkingCopy/{id}"})
//@ApiOperation("获取工作副本")
ApiResult getWorkingCopy(@PathVariable Long id) {
//@ApiOperation("深度查询")
@PostMapping
({
"find/recursion"
})
List
<
IdVO
>
findRecursion
(
@RequestBody
SearchQueryCondition
specSearch
)
{
try
{
List
<
IdVO
>
partVOS
=
BaseSearchService
.
findByConfigSpecSelect
(
specSearch
);
return
partVOS
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/* //@ApiOperation("配置规范查询")
@PostMapping({"findBySpec"})
List<DxPartVO> findByConfigSpec(@RequestBody SearchQueryCondition specSearch) {
try {
return ApiResult.ok(this.getService().getWorkingCopy(id));
List<DxPartVO> partVOS = DxPartService.findByConfigSpecSelect(specSearch);
return partVOS;
} catch (Exception e) {
e.printStackTrace();
return
ApiResult.error("","",e)
;
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
();
searchItems
.
setOperator
(
SearchItems
.
BooleanOperator
.
AND
);
...
...
@@ -68,7 +95,6 @@ public class AbstractBaseController<V extends IdVO, S extends BaseSearchService>
}
//TODO 其他基础接口
}
src/com/yonde/basedata/entity/users/DxPrincipalVO.java
View file @
ee457e27
...
...
@@ -21,7 +21,6 @@ public class DxPrincipalVO extends IdVO implements Serializable {
public
DxPrincipalVO
(
WTPrincipal
principal
)
throws
WTException
{
super
(
principal
);
this
.
num
=
principal
.
getName
();
this
.
setId
(
PersistenceHelper
.
getObjectIdentifier
(
principal
).
getId
());
}
public
String
getName
()
{
...
...
src/com/yonde/basedata/entity/users/DxUserVO.java
View file @
ee457e27
...
...
@@ -24,6 +24,9 @@ public class DxUserVO extends DxPrincipalVO implements Serializable, RemoteAcces
private
Boolean
existAccount
;
private
Long
userId
;
private
String
userName
;
private
String
number
;
private
String
lockerName
;
public
DxUserVO
()
{
}
...
...
@@ -32,8 +35,10 @@ public class DxUserVO extends DxPrincipalVO implements Serializable, RemoteAcces
super
(
principal
);
if
(
principal
!=
null
)
{
WTUser
user
=
(
WTUser
)
principal
;
this
.
userId
=
this
.
id
;
this
.
setName
(
user
.
getFullName
());
this
.
userId
=
PersistenceHelper
.
getObjectIdentifier
(
user
).
getId
();
this
.
userName
=
user
.
getFullName
();
this
.
number
=
String
.
valueOf
(
userId
);
this
.
setName
(
userName
);
this
.
telephone
=
user
.
getTelephoneNumber
();
this
.
mail
=
user
.
getEMail
();
...
...
@@ -42,6 +47,30 @@ public class DxUserVO extends DxPrincipalVO implements Serializable, RemoteAcces
}
}
public
String
getLockerName
()
{
return
lockerName
;
}
public
void
setLockerName
(
String
lockerName
)
{
this
.
lockerName
=
lockerName
;
}
public
String
getUserName
()
{
return
userName
;
}
public
void
setUserName
(
String
userName
)
{
this
.
userName
=
userName
;
}
public
String
getNumber
()
{
return
number
;
}
public
void
setNumber
(
String
number
)
{
this
.
number
=
number
;
}
public
String
getNickName
()
{
return
nickName
;
}
...
...
src/com/yonde/basedata/search/BaseSearchCondition.java
View file @
ee457e27
...
...
@@ -131,7 +131,7 @@ public class BaseSearchCondition implements Serializable {
if
(!
ObjectsUtil
.
isNull
(
branchIds
)
&&
!
branchIds
.
isEmpty
())
{
SearchItem
si
=
new
SearchItem
();
si
.
fieldName
=
"branchId"
;
si
.
operator
=
SearchItem
.
Operator
.
IN
.
value
;
si
.
operator
=
SearchItem
.
Operator
.
IN
;
si
.
value
=
ObjectsUtil
.
join
(
","
,
branchIds
);
this
.
searchItems
.
addItem
(
si
);
this
.
addSearchItemWithOr
(
si
);
...
...
src/com/yonde/basedata/search/SearchOperatorEnumUtil.java
View file @
ee457e27
package
com
.
yonde
.
basedata
.
search
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.basedata.vo.DxMasterVO
;
import
com.yonde.basedata.vo.DxVersionVO
;
import
com.yonde.context.vo.DxContextVO
;
import
com.yonde.doc.vo.DxDocumentVO
;
import
com.yonde.part.vo.DxPartVO
;
import
com.yonde.part.vo.DxViewVO
;
import
wt.clients.beans.query.WTAttribute
;
import
wt.doc.WTDocument
;
import
wt.part.WTPart
;
import
wt.query.SearchCondition
;
import
wt.util.WTAttributeNameIfc
;
import
wt.vc.views.ViewReference
;
import
java.util.HashMap
;
...
...
@@ -20,18 +29,44 @@ public class SearchOperatorEnumUtil {
public
static
final
String
DX_STATE
=
"state"
;
public
static
final
String
DX_TYPE
=
"type"
;
public
static
final
Map
<
String
,
String
>
commonSearchItemMap
=
new
HashMap
();
// 通用搜索条件
public
static
final
Map
<
String
,
String
>
partSearchItemMap
=
new
HashMap
();
// 部件搜索条件
public
static
final
Map
<
String
,
String
>
docSearchItemMap
=
new
HashMap
();
// 文档搜索条件
public
static
final
Map
<
Class
<?>,
Map
<
String
,
String
>>
typeSearchItemMap
=
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
<
Long
,
String
>
viewMap
=
new
HashMap
();
// 视图映射
static
{
initSearchItemMap
();
initPartItemMap
();
initDocItemMap
();
initTypeItemMap
();
initViewMap
();
}
public
static
void
initViewMap
()
{
viewMap
.
put
(
1L
,
"Design"
);
viewMap
.
put
(
2L
,
"Planning"
);
viewMap
.
put
(
3L
,
"Manufacture"
);
}
public
static
void
initTypeItemMap
()
{
typeItemMap
.
put
(
DxPartVO
.
class
,
"com.yonde.dcs.xbom.common.entity.vo.DxPartVO"
);
typeItemMap
.
put
(
DxDocumentVO
.
class
,
"com.yonde.dcs.document.common.entity.vo.DxDocumentVO"
);
typeItemMap
.
put
(
DxUserVO
.
class
,
""
);
typeItemMap
.
put
(
DxViewVO
.
class
,
"com.yonde.dex.view.common.entity.DxViewVO"
);
typeItemMap
.
put
(
DxVersionVO
.
class
,
"com.yonde.dex.version.plugin.common.entity.DxVersionVO"
);
typeItemMap
.
put
(
DxMasterVO
.
class
,
"com.yonde.dex.version.plugin.common.entity.DxMasterVO"
);
typeItemMap
.
put
(
DxContextVO
.
class
,
"com.yonde.dex.context.common.vo.DxContextProjectVO"
);
//TODO add
}
public
static
void
initSearchItemMap
()
{
...
...
@@ -41,7 +76,7 @@ public class SearchOperatorEnumUtil {
}
public
static
void
initPartItemMap
()
{
partSearchItemMap
.
put
(
DX_ID
,
WT
Part
.
PERSIST_INFO
+
".key.id"
);
partSearchItemMap
.
put
(
DX_ID
,
WT
AttributeNameIfc
.
ID_NAME
);
partSearchItemMap
.
put
(
DX_NUMBER
,
WTPart
.
NUMBER
);
partSearchItemMap
.
put
(
DX_NAME
,
WTPart
.
NAME
);
partSearchItemMap
.
put
(
DX_VIEWID
,
WTPart
.
VIEW
+
"."
...
...
@@ -53,7 +88,7 @@ public class SearchOperatorEnumUtil {
}
public
static
void
initDocItemMap
()
{
docSearchItemMap
.
put
(
DX_ID
,
WT
Document
.
PERSIST_INFO
+
".key.id"
);
docSearchItemMap
.
put
(
DX_ID
,
WT
AttributeNameIfc
.
ID_NAME
);
docSearchItemMap
.
put
(
DX_NUMBER
,
WTDocument
.
NUMBER
);
docSearchItemMap
.
put
(
DX_NAME
,
WTDocument
.
NAME
);
docSearchItemMap
.
put
(
DX_STATE
,
WTDocument
.
LIFE_CYCLE_STATE
);
...
...
src/com/yonde/basedata/service/BaseSearchService.java
View file @
ee457e27
...
...
@@ -5,25 +5,31 @@ import com.yonde.basedata.entity.api.ApiResult;
import
com.yonde.basedata.search.SearchQueryCondition
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.common.DocUtil
;
import
com.yonde.common.DxSearchUtil
;
import
com.yonde.common.RfUtil
;
import
com.yonde.doc.vo.DxDocumentVO
;
import
com.yonde.part.service.DxPartService
;
import
org.apache.log4j.Logger
;
import
org.springframework.stereotype.Service
;
import
wt.doc.WTDocument
;
import
wt.fc.WTObject
;
import
wt.log4j.LogR
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
import
wt.util.WTException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
public
class
BaseSearchService
<
V
extends
IdVO
>{
import
java.util.List
;
@Service
public
class
BaseSearchService
<
V
extends
IdVO
>
implements
RemoteAccess
{
private
static
Logger
logger
=
LogR
.
getLogger
(
BaseSearchService
.
class
.
getName
());
public
DxPageImpl
<
V
>
search
(
SearchQueryCondition
searchQueryCondition
){
return
null
;
};
public
ApiResult
saveRecursion
(
V
entity
)
{
return
null
;
}
;
}
public
IdVO
getWorkingCopy
(
Long
id
)
throws
Exception
{
WTObject
wtObjectByOid
=
RfUtil
.
getWTObjectByOid
(
id
+
""
);
...
...
@@ -38,4 +44,16 @@ public class BaseSearchService <V extends IdVO>{
}
return
null
;
}
public
static
List
findByConfigSpecSelect
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
List
)
RemoteMethodServer
.
getDefault
().
invoke
(
"findByConfigSpecSelect"
,
BaseSearchService
.
class
.
getName
(),
null
,
new
Class
[]
{
SearchQueryCondition
.
class
},
new
Object
[]
{
searchQueryCondition
});
}
logger
.
error
(
"findByConfigSpecSelect===111"
+
searchQueryCondition
.
toString
());
/*boolean enforce = SessionServerHelper.manager.setAccessEnforced(false);*/
List
<
IdVO
>
partList
=
DxSearchUtil
.
findByConfigSpecSelect
(
searchQueryCondition
);;
return
partList
;
}
}
src/com/yonde/basedata/vo/DxDocumentFolderVO.java
View file @
ee457e27
...
...
@@ -12,5 +12,35 @@ public class DxDocumentFolderVO extends IdVO{
private
List
<
DxDocumentVO
>
dxDocuments
;
public
String
getFullPath
()
{
return
fullPath
;
}
public
void
setFullPath
(
String
fullPath
)
{
this
.
fullPath
=
fullPath
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
Boolean
getLeaf
()
{
return
isLeaf
;
}
public
void
setLeaf
(
Boolean
leaf
)
{
isLeaf
=
leaf
;
}
public
List
<
DxDocumentVO
>
getDxDocuments
()
{
return
dxDocuments
;
}
public
void
setDxDocuments
(
List
<
DxDocumentVO
>
dxDocuments
)
{
this
.
dxDocuments
=
dxDocuments
;
}
}
src/com/yonde/basedata/vo/IdVO.java
View file @
ee457e27
...
...
@@ -2,6 +2,7 @@ package com.yonde.basedata.vo;
import
com.fasterxml.jackson.annotation.JsonTypeInfo
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.basedata.search.SearchOperatorEnumUtil
;
import
com.yonde.common.DateTimeUtil
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.WTObject
;
...
...
@@ -11,14 +12,17 @@ import wt.util.WTException;
import
java.io.Serializable
;
@JsonTypeInfo
(
use
=
JsonTypeInfo
.
Id
.
CLASS
,
property
=
"
dxClassn
ame"
,
visible
=
true
)
@JsonTypeInfo
(
use
=
JsonTypeInfo
.
Id
.
CLASS
,
property
=
"
classN
ame"
,
visible
=
true
)
public
class
IdVO
extends
IdOnlyVO
implements
Serializable
{
protected
String
dxClassname
;
private
String
dxClassname
=
SearchOperatorEnumUtil
.
typeItemMap
.
get
(
this
.
getClass
());
private
String
className
;
private
DxUserVO
creator
;
private
DxUserVO
modifier
;
protected
String
modifyTime
;
protected
String
createTime
;
private
String
operator
;
public
IdVO
()
{
}
...
...
@@ -36,6 +40,38 @@ public class IdVO extends IdOnlyVO implements Serializable {
}
public
String
getClassName
()
{
return
className
;
}
public
void
setClassName
(
String
className
)
{
this
.
className
=
className
;
}
public
String
getOperator
()
{
return
operator
;
}
public
void
setOperator
(
String
operator
)
{
this
.
operator
=
operator
;
}
public
DxUserVO
getCreator
()
{
return
creator
;
}
public
void
setCreator
(
DxUserVO
creator
)
{
this
.
creator
=
creator
;
}
public
DxUserVO
getModifier
()
{
return
modifier
;
}
public
void
setModifier
(
DxUserVO
modifier
)
{
this
.
modifier
=
modifier
;
}
public
String
getDxClassname
()
{
return
dxClassname
;
}
...
...
src/com/yonde/basedata/vo/RevisionControlledVO.java
View file @
ee457e27
package
com
.
yonde
.
basedata
.
vo
;
import
com.fasterxml.jackson.annotation.JsonTypeInfo
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.common.DateTimeUtil
;
import
com.yonde.part.vo.DxPartVO
;
import
wt.enterprise.RevisionControlled
;
import
wt.fc.Persistable
;
import
wt.org.WTPrincipal
;
...
...
@@ -12,6 +14,12 @@ import wt.util.WTException;
import
java.io.Serializable
;
@JsonTypeInfo
(
use
=
JsonTypeInfo
.
Id
.
CLASS
,
property
=
"classname"
,
visible
=
true
,
defaultImpl
=
RevisionControlledVO
.
class
)
public
class
RevisionControlledVO
extends
IdVO
implements
Serializable
{
private
DxVersionVO
version
;
private
Long
versionId
;
...
...
@@ -24,14 +32,17 @@ public class RevisionControlledVO extends IdVO implements Serializable {
private
DxMasterVO
masterVO
;
private
Long
masterId
;
private
DxUserVO
creator
;
private
DxUserVO
modifier
;
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
RevisionControlledVO
()
{
}
...
...
@@ -43,15 +54,20 @@ public class RevisionControlledVO extends IdVO implements Serializable {
// To set the user of the session to be the administrator
SessionHelper
.
manager
.
setAdministrator
();
this
.
setModifier
(
new
DxUserVO
((
WTPrincipal
)
object
.
getModifier
().
getObject
()));
this
.
modifierId
=
this
.
getModifier
().
getId
();
this
.
setCreator
(
new
DxUserVO
((
WTPrincipal
)
object
.
getCreator
().
getObject
()));
System
.
out
.
println
(
"createor========="
+
this
.
creator
);
Persistable
persistable
=
object
.
getLocker
().
getObject
();
this
.
creatorId
=
this
.
getCreator
().
getId
();
this
.
setLockerVO
(
object
);
/* Persistable persistable = object.getLocker().getObject();
if (persistable != null) {
WTUser locker = ((WTUser) persistable);
this.setLockNote(object.getLockNote());
this.setLockDate(DateTimeUtil.timeStampToString(object.getLockDate()));
this
.
setLocker
(
new
DxUserVO
(
locker
));
}
DxUserVO dxUserVO = new DxUserVO(locker);
dxUserVO.setLockerName(dxUserVO.getUserName());
this.setLocker(dxUserVO);
this.lockerId = this.getLocker().getId();
}*/
}
finally
{
SessionContext
.
setContext
(
previous
);
}
...
...
@@ -59,6 +75,19 @@ public class RevisionControlledVO extends IdVO implements Serializable {
//object.c
}
public
void
setLockerVO
(
RevisionControlled
object
)
throws
WTException
{
Persistable
persistable
=
object
.
getLocker
().
getObject
();
if
(
persistable
!=
null
)
{
WTUser
locker
=
((
WTUser
)
persistable
);
this
.
setLockNote
(
object
.
getLockNote
());
this
.
setLockDate
(
DateTimeUtil
.
timeStampToString
(
object
.
getLockDate
()));
DxUserVO
dxUserVO
=
new
DxUserVO
(
locker
);
dxUserVO
.
setLockerName
(
dxUserVO
.
getUserName
());
this
.
setLocker
(
dxUserVO
);
this
.
lockerId
=
this
.
getLocker
().
getId
();
}
}
public
DxVersionVO
getVersion
()
{
return
version
;
}
...
...
@@ -84,6 +113,30 @@ public class RevisionControlledVO extends IdVO implements Serializable {
//this.number = masterVO.getNumber();
}
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
;
}
public
Long
getLockerId
()
{
return
lockerId
;
}
public
void
setLockerId
(
Long
lockerId
)
{
this
.
lockerId
=
lockerId
;
}
public
String
getLockNote
()
{
return
lockNote
;
}
...
...
@@ -107,23 +160,7 @@ public class RevisionControlledVO extends IdVO implements Serializable {
public
void
setLocker
(
DxUserVO
locker
)
{
this
.
locker
=
locker
;
}
public
DxUserVO
getCreator
()
{
return
creator
;
}
public
void
setCreator
(
DxUserVO
creator
)
{
this
.
creator
=
creator
;
this
.
creatorId
=
creator
.
getId
();
}
public
DxUserVO
getModifier
()
{
return
modifier
;
}
public
void
setModifier
(
DxUserVO
modifier
)
{
this
.
modifier
=
modifier
;
this
.
modifierId
=
modifier
.
getId
();
}
public
Long
getCreatorId
()
{
return
creatorId
;
...
...
src/com/yonde/basedata/vo/lc/LifecycleStateVO.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
basedata
.
vo
.
lc
;
public
class
LifecycleStateVO
{
}
src/com/yonde/basedata/vo/lc/LifecycleTemplateVO.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
basedata
.
vo
.
lc
;
import
java.util.List
;
public
class
LifecycleTemplateVO
{
//@ApiModelProperty("描述")
private
String
description
;
//@ApiModelProperty("是否启用")
private
Boolean
enable
;
//@ApiModelProperty("状态变化流程图描述")
private
String
layout
;
/* @XmlElementProperty(
name = "stateVos",
isList = true
)*/
private
List
<
LifecycleStateVO
>
stateVos
;
/* @XmlElementProperty(
name = "stateTraceVos",
isList = true
)*/
//private List<LifecycleStateTraceVO> stateTraceVos;
}
src/com/yonde/common/CommonUtil.java
View file @
ee457e27
...
...
@@ -3,6 +3,7 @@ package com.yonde.common;
import
com.ptc.core.components.util.OidHelper
;
import
com.ptc.core.htmlcomp.jstable.SandboxStatusHelper
;
import
com.ptc.core.htmlcomp.jstable.ServerStatusHelper
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.log4j.Logger
;
import
wt.access.AccessControlHelper
;
...
...
@@ -19,6 +20,8 @@ import wt.epm.workspaces.EPMWorkspace;
import
wt.fc.*
;
import
wt.fc.collections.WTCollection
;
import
wt.folder.Folder
;
import
wt.folder.FolderEntry
;
import
wt.folder.FolderHelper
;
import
wt.inf.container.WTContained
;
import
wt.inf.container.WTContainer
;
import
wt.inf.container.WTContainerRef
;
...
...
@@ -63,6 +66,7 @@ import java.rmi.RemoteException;
import
java.text.MessageFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
public
class
CommonUtil
implements
RemoteAccess
{
private
static
final
Logger
log
=
LogR
.
getLogger
(
CommonUtil
.
class
.
getName
());
...
...
@@ -686,6 +690,64 @@ public class CommonUtil implements RemoteAccess {
}
}
public
static
void
setFolder
(
WTContainerRef
wtcontainerref
,
FolderEntry
folderentry
,
String
s
)
throws
WTException
{
if
(
s
!=
null
&&
wtcontainerref
!=
null
)
{
Folder
folder
=
null
;
//处理文件
List
<
String
>
folderPathList
=
new
ArrayList
<
String
>();
recursionCreateFolder
(
s
,
folderPathList
);
int
i
=
0
;
String
[]
ida
=
new
String
[
folderPathList
.
size
()];
for
(
Iterator
it
=
folderPathList
.
iterator
();
it
.
hasNext
();
)
ida
[
i
++]
=
((
String
)
it
.
next
());
Arrays
.
sort
(
ida
,
new
Comparator
<
String
>()
{
@Override
public
int
compare
(
String
o1
,
String
o2
)
{
int
x
=
o1
.
length
();
int
y
=
o2
.
length
();
//(x < y) ? -1 : ((x == y) ? 0 : 1)
return
(
x
<
y
)
?
-
1
:
((
x
==
y
)
?
0
:
1
);
}
});
/* folderPathList.stream()
.sorted(
(a, b) -> {
return Integer.compare(a.length(), b.length());
})
.collect(Collectors.toList());*/
System
.
out
.
println
(
">>>>>>folderPathList="
+
folderPathList
);
//创建不存在的文件夹信息
if
(
CollectionUtils
.
isNotEmpty
(
folderPathList
))
{
for
(
String
folderPath
:
folderPathList
)
{
try
{
folder
=
FolderHelper
.
service
.
getFolder
(
folderPath
,
wtcontainerref
);
}
catch
(
WTException
e
)
{
folder
=
null
;
}
if
(
folder
==
null
)
{
folder
=
FolderHelper
.
service
.
createSubFolder
(
folderPath
,
wtcontainerref
);
}
}
}
if
(
folder
==
null
)
{
throw
new
WTException
(
"文件夹不存在请检查文件夹路径!"
+
s
);
}
FolderHelper
.
assignLocation
(
folderentry
,
folder
);
}
}
public
static
List
recursionCreateFolder
(
String
folderPath
,
List
folderList
)
{
if
(
StringUtils
.
contains
(
folderPath
,
"/"
)
&&
(!
StringUtils
.
equalsIgnoreCase
(
folderPath
,
"/Default"
)))
{
folderList
.
add
(
folderPath
);
folderPath
=
folderPath
.
substring
(
0
,
folderPath
.
lastIndexOf
(
"/"
));
recursionCreateFolder
(
folderPath
,
folderList
);
}
return
folderList
;
}
}
src/com/yonde/common/ContainerUtil.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
common
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.log4j.Logger
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.QueryResult
;
import
wt.inf.container.*
;
import
wt.inf.library.WTLibrary
;
import
wt.inf.team.ContainerTeam
;
import
wt.inf.team.ContainerTeamHelper
;
import
wt.inf.team.ContainerTeamManaged
;
import
wt.inf.team.StandardContainerTeamService
;
import
wt.inf.template.ContainerTemplateHelper
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.org.*
;
import
wt.pdmlink.PDMLinkProduct
;
import
wt.project.Role
;
import
wt.projmgmt.admin.Project2
;
import
wt.query.QuerySpec
;
import
wt.query.SearchCondition
;
import
wt.session.SessionHelper
;
import
wt.session.SessionServerHelper
;
import
wt.team.TeamException
;
import
wt.type.TypeDefinitionReference
;
import
wt.type.TypedUtility
;
import
wt.util.WTAttributeNameIfc
;
import
wt.util.WTException
;
import
wt.util.WTPropertyVetoException
;
import
java.io.Serializable
;
import
java.rmi.RemoteException
;
import
java.text.ParseException
;
import
java.util.*
;
/**
* 该工具类封装了对于Container的一系列底层操作
*
* @author mliu
*/
public
class
ContainerUtil
implements
RemoteAccess
,
Serializable
{
private
static
final
Logger
cscDebug
=
Logger
.
getLogger
(
ContainerUtil
.
class
);
private
static
final
long
serialVersionUID
=
5458003848567223542L
;
/**
* 通过名称查找PDMLinkProduct
*
* @param name 查询PDMLinkProduct名称条件
* @param accessControlled 是否受到权限制约
* @return 返回查询到的PDMLinkProduct对象
*/
public
static
PDMLinkProduct
getPDMLinkProduct
(
String
name
,
boolean
accessControlled
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
PDMLinkProduct
)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getPDMLinkProduct"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
String
.
class
,
boolean
.
class
},
new
Object
[]{
name
,
accessControlled
});
}
else
{
PDMLinkProduct
product
=
null
;
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
accessControlled
);
try
{
QuerySpec
qs
=
new
QuerySpec
(
PDMLinkProduct
.
class
);
SearchCondition
sc
=
new
SearchCondition
(
PDMLinkProduct
.
class
,
PDMLinkProduct
.
NAME
,
SearchCondition
.
EQUAL
,
name
,
false
);
qs
.
appendSearchCondition
(
sc
);
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
(
qs
);
if
(
qr
.
hasMoreElements
())
{
product
=
(
PDMLinkProduct
)
qr
.
nextElement
();
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
product
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 通过名称查找WTLibrary
*
* @param name 查询WTLibrary名称条件
* @param accessControlled 是否受到权限制约
* @return 返回查询到的WTLibrary对象
*/
public
static
WTLibrary
getLibrary
(
String
name
,
boolean
accessControlled
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
WTLibrary
)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getLibrary"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
String
.
class
,
boolean
.
class
},
new
Object
[]{
name
,
accessControlled
});
}
else
{
WTLibrary
library
=
null
;
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
accessControlled
);
try
{
QuerySpec
qs
=
new
QuerySpec
(
WTLibrary
.
class
);
SearchCondition
sc
=
new
SearchCondition
(
WTLibrary
.
class
,
WTLibrary
.
NAME
,
SearchCondition
.
EQUAL
,
name
,
false
);
qs
.
appendSearchCondition
(
sc
);
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
(
qs
);
if
(
qr
.
hasMoreElements
())
{
library
=
(
WTLibrary
)
qr
.
nextElement
();
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
library
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 通过名称查找Project2
*
* @param name 查询Project2名称条件
* @param accessControlled 是否受到权限制约
* @return 返回查询到的Project2对象
*/
public
static
Project2
getProject
(
String
name
,
boolean
accessControlled
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
Project2
)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getProject"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
String
.
class
,
boolean
.
class
},
new
Object
[]{
name
,
accessControlled
});
}
else
{
Project2
project
=
null
;
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
accessControlled
);
try
{
QuerySpec
qs
=
new
QuerySpec
(
Project2
.
class
);
SearchCondition
sc
=
new
SearchCondition
(
Project2
.
class
,
Project2
.
NAME
,
SearchCondition
.
EQUAL
,
name
,
false
);
qs
.
appendSearchCondition
(
sc
);
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
(
qs
);
if
(
qr
.
hasMoreElements
())
{
project
=
(
Project2
)
qr
.
nextElement
();
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
project
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 通过编号查找Project2
*
* @param number 查询Project2编号条件
* @param accessControlled 是否受到权限制约
* @return 返回查询到的Project2对象
*/
public
static
Project2
getProjectByNumber
(
String
number
,
boolean
accessControlled
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
Project2
)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getProjectByNumber"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
String
.
class
,
boolean
.
class
},
new
Object
[]{
number
,
accessControlled
});
}
else
{
Project2
project
=
null
;
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
accessControlled
);
try
{
QuerySpec
qs
=
new
QuerySpec
(
Project2
.
class
);
SearchCondition
sc
=
new
SearchCondition
(
Project2
.
class
,
Project2
.
PROJECT_NUMBER
,
SearchCondition
.
EQUAL
,
number
,
false
);
qs
.
appendSearchCondition
(
sc
);
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
(
qs
);
if
(
qr
.
hasMoreElements
())
{
project
=
(
Project2
)
qr
.
nextElement
();
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
project
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 通过名称查找OrgContainer组织对象
*
* @param name 查询OrgContainer名称条件
* @param accessControlled 是否受到权限制约
* @return 返回查询到的OrgContainer对象
*/
public
static
OrgContainer
getOrgContainer
(
String
name
,
boolean
accessControlled
)
throws
WTException
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
OrgContainer
)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getOrgContainer"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
String
.
class
,
boolean
.
class
},
new
Object
[]{
name
,
accessControlled
});
}
else
{
OrgContainer
org
=
null
;
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
accessControlled
);
try
{
QuerySpec
criteria
=
new
QuerySpec
(
OrgContainer
.
class
);
criteria
.
appendWhere
(
new
SearchCondition
(
OrgContainer
.
class
,
OrgContainer
.
NAME
,
SearchCondition
.
EQUAL
,
name
,
false
));
QueryResult
results
=
PersistenceHelper
.
manager
.
find
(
criteria
);
if
(
results
.
hasMoreElements
())
{
org
=
(
OrgContainer
)
results
.
nextElement
();
}
else
{
return
null
;
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
org
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 得到Container对象的团队角色列表
*
* @param teammanaged 可包含团队的Container对象
* @return Container团队角色列表
*/
public
static
ArrayList
<
Role
>
getContainerTeamRoles
(
ContainerTeamManaged
teammanaged
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
ArrayList
<
Role
>)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getContainerTeamRoles"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
ContainerTeamManaged
.
class
},
new
Object
[]{
teammanaged
});
}
else
{
ArrayList
<
Role
>
result
=
new
ArrayList
<
Role
>();
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
false
);
try
{
try
{
ContainerTeam
team
=
ContainerTeamHelper
.
service
.
getContainerTeam
(
teammanaged
);
Vector
v
=
team
.
getRoles
();
if
(
v
==
null
)
{
return
result
;
}
for
(
int
i
=
0
;
i
<
v
.
size
();
i
++)
{
Object
obj
=
v
.
get
(
i
);
if
(
obj
instanceof
Role
)
{
Role
role
=
(
Role
)
obj
;
if
(!
result
.
contains
(
role
))
result
.
add
(
role
);
}
}
}
catch
(
TeamException
e
)
{
e
.
printStackTrace
();
}
catch
(
WTException
e
)
{
e
.
printStackTrace
();
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
result
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
new
ArrayList
<
Role
>();
}
/**
* 得到Container对象的指定角色的成员列表
*
* @param teammanaged 可包含团队的Container对象
* @param role 指定的团队角色
* @return Container的指定Role的成员列表(WTPrincipalReference)
*/
public
static
ArrayList
<
WTPrincipalReference
>
getContainerPrincipalByRole
(
ContainerTeamManaged
teammanaged
,
Role
role
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
ArrayList
<
WTPrincipalReference
>)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getContainerPrincipalByRole"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
ContainerTeamManaged
.
class
,
Role
.
class
},
new
Object
[]{
teammanaged
,
role
});
}
else
{
ArrayList
<
WTPrincipalReference
>
result
=
new
ArrayList
<
WTPrincipalReference
>();
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
false
);
try
{
try
{
ContainerTeam
team
=
ContainerTeamHelper
.
service
.
getContainerTeam
(
teammanaged
);
StandardContainerTeamService
scts
=
StandardContainerTeamService
.
newStandardContainerTeamService
();
WTGroup
wtgroup
=
scts
.
findContainerTeamGroup
(
team
,
ContainerTeamHelper
.
ROLE_GROUPS
,
role
.
toString
());
if
(
wtgroup
!=
null
)
{
Enumeration
enumeration
=
OrganizationServicesHelper
.
manager
.
members
(
wtgroup
,
false
,
true
);
while
(
enumeration
.
hasMoreElements
())
{
WTPrincipalReference
wtprincipalreference
=
WTPrincipalReference
.
newWTPrincipalReference
(
(
WTPrincipal
)
enumeration
.
nextElement
());
if
(!
result
.
contains
(
wtprincipalreference
))
{
result
.
add
(
wtprincipalreference
);
}
}
}
}
catch
(
TeamException
e
)
{
e
.
printStackTrace
();
}
catch
(
WTException
e
)
{
e
.
printStackTrace
();
}
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
return
result
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
new
ArrayList
<
WTPrincipalReference
>();
}
/**
* 搜索组织下的组
*
* @param orgcontainer
* @return
* @throws WTPropertyVetoException
* @throws WTException
* @create date: 2011-7-28下午2:05:12
* @methodName: getOrgContainerWTGroup
* @return: Enumeration<WTGroup>
*/
public
static
<
T
extends
WTContainer
>
Enumeration
<
WTGroup
>
getOrgContainerWTGroup
(
T
orgcontainer
)
throws
WTPropertyVetoException
,
WTException
{
PrincipalSpec
principalspec
=
new
PrincipalSpec
();
principalspec
.
setContainerReference
(
WTContainerRef
.
newWTContainerRef
(
orgcontainer
));
principalspec
.
setPerformLookup
(
false
);
principalspec
.
setIncludeAllServices
(
false
);
DirectoryContextProvider
adirectorycontextprovider
[]
=
WTContainerHelper
.
service
.
getPublicContextProviders
(
principalspec
);
Enumeration
<
WTGroup
>
foundGrps
=
OrganizationServicesHelper
.
manager
.
findLikeGroups
(
"*"
,
adirectorycontextprovider
[
0
]);
return
foundGrps
;
}
public
static
WTContainer
getContainerByName
(
String
name
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
WTContainer
)
RemoteMethodServer
.
getDefault
()
.
invoke
(
"getContainerByName"
,
ContainerUtil
.
class
.
getName
(),
null
,
new
Class
[]{
String
.
class
},
new
Object
[]{
name
});
}
else
{
WTContainer
container
=
null
;
QuerySpec
qs
;
try
{
qs
=
new
QuerySpec
(
WTContainer
.
class
);
SearchCondition
sc
=
new
SearchCondition
(
WTContainer
.
class
,
WTContainer
.
NAME
,
SearchCondition
.
EQUAL
,
name
);
qs
.
appendWhere
(
sc
);
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
(
qs
);
while
(
qr
.
hasMoreElements
())
{
container
=
(
WTContainer
)
qr
.
nextElement
();
cscDebug
.
debug
(
" "
);
cscDebug
.
debug
(
" WTContainerName="
+
container
.
getName
());
cscDebug
.
debug
(
" WTContainerType="
+
container
.
getType
());
}
return
container
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
static
void
main
(
String
[]
args
)
throws
WTException
{
// ************************ Test of getPDMLinkProduct ********************************
/* PDMLinkProduct product = ContainerUtil.getPDMLinkProduct(args[0], Boolean.parseBoolean(args[1]));
System.out.println("Find Product = " + product);*/
// ************************ Test of getLibrary ********************************
/* WTLibrary library = ContainerUtil.getLibrary(args[0], Boolean.parseBoolean(args[1]));
System.out.println("Find Library = " + library);*/
// ************************ Test of getProject ********************************
/* Project2 project = ContainerUtil.getProject(args[0], Boolean.parseBoolean(args[1]));
System.out.println("Find Project = " + project); */
// ************************ Test of getProjectByNumber ********************************
/* Project2 project = ContainerUtil.getProjectByNumber(args[0], Boolean.parseBoolean(args[1]));
System.out.println("Find Project = " + project);*/
// ************************ Test of getProjectByNumber ********************************
/* OrgContainer org = ContainerUtil.getOrgContainer(args[0], Boolean.parseBoolean(args[1]));
System.out.println("Find OrgContainer = " + org); */
// ************************ Test of getContainerTeamRoles ********************************
/* PDMLinkProduct product = ContainerUtil.getPDMLinkProduct(args[0], false);
ArrayList<Role> roles = ContainerUtil.getContainerTeamRoles(product);
for (int i = 0; i < roles.size(); i++) {
System.out.println("Find Role = " + roles.get(i));
}*/
// ************************ Test of getContainerPrincipalByRole ********************************
/* PDMLinkProduct product = ContainerUtil.getPDMLinkProduct(args[0], false);
ArrayList<Role> roles = ContainerUtil.getContainerTeamRoles(product);
for (int i = 0; i < roles.size(); i++) {
System.out.println("Find Role = " + (roles.get(i)).getDisplay());
ArrayList<WTPrincipalReference> principals = ContainerUtil.getContainerPrincipalByRole(product, roles.get(i));
for (int j = 0; j < principals.size(); j++) {
System.out.println("--> " + (principals.get(j)).getDisplayName());
}
}*/
}
/**
* 创建产品容器
*
* @param organization 所属组织
* @param productName 产品容器名称
* @param templateName 产品容器模板名称
* @return 新创建的产品容器
* @throws WTException
* @throws WTPropertyVetoException
*/
public
static
PDMLinkProduct
createPDMLinkProduct
(
WTOrganization
organization
,
String
productName
,
String
templateName
,
String
typeDef
,
Map
ibaMap
)
throws
WTException
,
WTPropertyVetoException
{
PDMLinkProduct
product
=
PDMLinkProduct
.
newPDMLinkProduct
();
OrgContainer
orgContainer
=
WTContainerHelper
.
service
.
getOrgContainer
(
organization
);
product
.
setContainer
(
orgContainer
);
product
.
setName
(
productName
);
if
(
StringUtils
.
isBlank
(
templateName
))
{
templateName
=
"General Product"
;
}
TypeDefinitionReference
typedefinitionreference
=
TypedUtility
.
getTypeDefinitionReference
(
typeDef
);
if
(
typedefinitionreference
!=
null
)
{
product
.
setTypeDefinitionReference
(
typedefinitionreference
);
}
WTContainerTemplate
template
=
ContainerTemplateHelper
.
service
.
getContainerTemplate
(
WTContainerRef
.
newWTContainerRef
(
orgContainer
),
templateName
,
PDMLinkProduct
.
class
);
if
(
template
==
null
)
{
throw
new
WTException
(
"不存在名称为"
+
templateName
+
"的产品容器模板。"
);
}
product
.
setContainerTemplate
(
template
);
WTContainerHelper
.
setPrivateAccess
(
product
,
false
);
product
=
(
PDMLinkProduct
)
ContainerTeamHelper
.
setSendInvitations
(
product
,
false
);
product
=
(
PDMLinkProduct
)
WTContainerHelper
.
service
.
create
(
product
);
try
{
if
(
ibaMap
!=
null
&&
CollectionUtils
.
isNotEmpty
(
ibaMap
.
keySet
()))
{
Set
keySet
=
ibaMap
.
keySet
();
for
(
Iterator
it
=
keySet
.
iterator
();
it
.
hasNext
();
)
{
String
ibaName
=
(
String
)
it
.
next
();
Object
value
=
ibaMap
.
get
(
ibaName
);
if
(
value
!=
null
)
{
//IBAUtility.setIBAAnyValue(product, ibaName, value.toString());
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
product
;
}
/*public static QueryResult searchContainer(ContainerSearchForm searchForm) {
String currentUserName = "";
try {
currentUserName = SessionHelper.getPrincipal().getName();
SessionHelper.manager.setAdministrator();
if (!RemoteMethodServer.ServerFlag) {
return (QueryResult) RemoteMethodServer.getDefault()
.invoke(
"search",
ContainerUtil.class.getName(),
null,
new Class[]{ContainerSearchForm.class},
new Object[]{searchForm});
} else {
QuerySpec qs;
try {
qs = new QuerySpec(WTContainer.class);
if (StringUtils.isNotBlank(searchForm.getName())) {
String name = searchForm.getName();
if (StringUtils.containsIgnoreCase(name, "*")) {
name = name.replaceAll("\\*", "%");
} else {
name = "%" + name + "%";
}
SearchCondition sc =
new SearchCondition(WTContainer.class, WTContainer.NAME, SearchCondition.LIKE, name);
qs.appendWhere(sc);
}
if (StringUtils.isNotBlank(searchForm.getCreator())) {
if (qs.getConditionCount() > 0) {
qs.appendAnd();
}
WTUser creator = CSCPrincipal.getUserByNameOrFullName(searchForm.getCreator());
if (creator == null) {
throw new AccsException("未找到:“" + searchForm.getCreator() + "”的用户");
}
SearchCondition sc =
new SearchCondition(WTContainer.class, WTContainer.CREATOR + "." + WTAttributeNameIfc.REF_OBJECT_ID,
SearchCondition.EQUAL,
creator.getPersistInfo().getObjectIdentifier().getId());
qs.appendWhere(sc);
}
QueryResult qr = PersistenceHelper.manager.find(qs);
return qr;
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//切换为操作者
try {
SessionHelper.manager.setPrincipal(currentUserName);
} catch (WTException e) {
e.printStackTrace();
}
}
return null;
}*/
}
src/com/yonde/common/DxCommonUtils.java
View file @
ee457e27
...
...
@@ -19,8 +19,6 @@ import java.io.Serializable;
public
class
DxCommonUtils
implements
RemoteAccess
,
Serializable
{
/**
*
* 返回检出的工作副本,如果已经检出,则返回已经存在的工作副本
...
...
src/com/yonde/common/DxPartUtil.java
View file @
ee457e27
package
com
.
yonde
.
common
;
import
com.ptc.core.meta.common.TypeIdentifier
;
import
com.ptc.core.meta.common.TypeIdentifierHelper
;
import
com.ptc.windchill.enterprise.copy.server.CoreMetaUtility
;
import
com.yonde.basedata.search.SearchOperatorEnumUtil
;
import
com.yonde.context.vo.DxContextVO
;
import
com.yonde.part.vo.DxPartVO
;
import
com.yonde.part.vo.DxUsageLinkVO
;
import
com.yonde.part.vo.DxViewVO
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.log4j.Logger
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.QueryResult
;
import
wt.lifecycle.LifeCycleManaged
;
import
org.apache.tools.ant.taskdefs.SQLExec
;
import
wt.fc.*
;
import
wt.fc.collections.WTValuedHashMap
;
import
wt.folder.Folder
;
import
wt.folder.FolderHelper
;
import
wt.iba.value.IBAHolder
;
import
wt.inf.container.WTContainer
;
import
wt.log4j.LogR
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
import
wt.part.WTPartHelper
;
import
wt.part.WTPartUsageLink
;
import
wt.part.*
;
import
wt.pom.Transaction
;
import
wt.session.SessionContext
;
import
wt.session.SessionHelper
;
import
wt.util.WTContext
;
import
wt.util.WTException
;
import
wt.vc.VersionControlHelper
;
import
wt.vc.views.View
;
import
wt.vc.views.ViewHelper
;
import
wt.vc.wip.CheckoutLink
;
import
wt.vc.wip.WorkInProgressHelper
;
import
wt.vc.wip.Workable
;
import
java.io.Serializable
;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -124,6 +139,28 @@ public class DxPartUtil implements RemoteAccess, Serializable {
return
part
;
}
/**
* 获取下一大版本
* @param part
* @param count
* @return
* @throws Exception
*/
public
static
String
getNextVersion
(
WTPart
part
,
int
count
)
throws
Exception
{
if
(
count
<
1
)
count
=
1
;
QueryResult
qr
=
VersionControlHelper
.
service
.
allVersionsOf
(
part
.
getMaster
());
WTPart
latestVersionPart
=
part
;
if
(
qr
.
hasMoreElements
())
{
latestVersionPart
=
(
WTPart
)
qr
.
nextElement
();
}
for
(
int
i
=
1
;
i
<
count
;
i
++)
{
VersionControlHelper
.
setVersionIdentifier
(
latestVersionPart
,
VersionControlHelper
.
nextVersionId
(
latestVersionPart
));
}
// VersionControlHelper.setVersionIdentifier(latestVersionPart, VersionControlHelper.nextVersionId(latestVersionPart));
return
VersionControlHelper
.
nextVersionId
(
latestVersionPart
).
getValue
();
}
/**
* 获取工作副本
*
...
...
@@ -153,5 +190,253 @@ public class DxPartUtil implements RemoteAccess, Serializable {
return
workingPart
;
}
public
static
WTPart
createPart
(
DxPartVO
dxPartVO
)
{
try
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
WTPart
)
RemoteMethodServer
.
getDefault
().
invoke
(
"createPart"
,
DxPartUtil
.
class
.
getName
(),
null
,
new
Class
[]{
DxPartVO
.
class
},
new
Object
[]{
dxPartVO
});
}
else
{
WTPart
part
=
null
;
try
{
String
partSource
=
""
;
String
partAssembly
=
""
;
String
partView
=
""
;
DxViewVO
dxView
=
dxPartVO
.
getDxView
();
if
(
ObjectsUtil
.
nonNull
(
dxView
))
{
if
(
ObjectsUtil
.
isNull
(
dxView
.
getName
()))
{
partView
=
SearchOperatorEnumUtil
.
viewMap
.
get
(
dxView
.
getId
());
}
}
String
partType
=
""
;
String
partFolder
=
""
;
String
number
=
dxPartVO
.
getNumber
();
String
name
=
dxPartVO
.
getName
();
DxContextVO
dxContext
=
dxPartVO
.
getDxContext
();
WTContainer
container
=
null
;
if
(
ObjectsUtil
.
nonNull
(
dxContext
))
{
String
contextName
=
dxContext
.
getName
();
container
=
ContainerUtil
.
getContainerByName
(
contextName
);
}
/* if (attributes != null) {
partSource = (String) attributes.get(PartUtil.SOURCE);
partAssembly = (String) attributes.get(PartUtil.ASSEMBLY);
partView = (String) attributes.get(PartUtil.VIEW);
partType = (String) attributes.get(PartUtil.TYPE);
partFolder = (String) attributes.get(PartUtil.FOLDER);
}*/
if
(
container
==
null
)
{
return
null
;
}
if
(
number
==
null
||
number
.
equalsIgnoreCase
(
""
))
{
number
=
PartUtil
.
getDefaultPartSeqNumber
();
}
else
{
WTPart
existPart
=
PartUtil
.
getPart
(
number
,
false
);
if
(
existPart
!=
null
)
{
existPart
=
(
WTPart
)
IBAUtil
.
forceSetIBAValues
(
existPart
,
dxPartVO
.
getDynamicAttrs
());
return
existPart
;
}
}
if
(
name
==
null
||
name
.
equalsIgnoreCase
(
""
))
{
return
null
;
}
Source
part_source
=
null
;
try
{
if
(
partSource
==
null
||
partSource
.
equals
(
""
))
{
part_source
=
Source
.
MAKE
;
}
else
{
part_source
=
Source
.
toSource
(
partSource
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
part_source
=
Source
.
MAKE
;
}
PartType
part_assembly
=
null
;
try
{
if
(
partAssembly
==
null
||
partAssembly
.
equals
(
""
))
{
part_assembly
=
PartType
.
SEPARABLE
;
}
else
{
part_assembly
=
PartType
.
toPartType
(
partAssembly
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
part_assembly
=
PartType
.
SEPARABLE
;
}
View
part_view
=
null
;
try
{
if
(
partView
==
null
||
partView
.
trim
().
equals
(
""
))
{
part_view
=
ViewHelper
.
service
.
getView
(
"Design"
);
}
else
{
part_view
=
ViewHelper
.
service
.
getView
(
partView
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
part_view
=
ViewHelper
.
service
.
getView
(
"Design"
);
}
if
(
partType
==
null
||
partType
.
equalsIgnoreCase
(
""
))
{
partType
=
"wt.part.WTPart"
;
}
if
(
partFolder
==
null
||
partFolder
.
equalsIgnoreCase
(
""
))
{
partFolder
=
"/Default"
;
}
else
{
if
(!
partFolder
.
startsWith
(
"/Default"
))
{
partFolder
=
"/Default/"
+
partFolder
;
}
}
part
=
WTPart
.
newWTPart
(
number
,
name
,
QuantityUnit
.
EA
);
if
(
partType
!=
null
)
{
TypeIdentifier
id
=
TypeIdentifierHelper
.
getTypeIdentifier
(
partType
);
part
=
(
WTPart
)
CoreMetaUtility
.
setType
(
part
,
id
);
}
part
.
setContainerReference
(
container
.
getContainerReference
());
Folder
location
=
null
;
try
{
location
=
FolderHelper
.
service
.
getFolder
(
partFolder
,
container
.
getContainerReference
());
}
catch
(
Exception
e
)
{
location
=
null
;
}
if
(
location
==
null
)
location
=
FolderHelper
.
service
.
saveFolderPath
(
partFolder
,
container
.
getContainerReference
());
if
(
location
!=
null
)
{
WTValuedHashMap
map
=
new
WTValuedHashMap
();
map
.
put
(
part
,
location
);
FolderHelper
.
assignLocations
(
map
);
}
part
.
setPartType
(
part_assembly
);
part
.
setSource
(
part_source
);
ViewHelper
.
assignToView
(
part
,
part_view
);
part
=
(
WTPart
)
PersistenceHelper
.
manager
.
save
(
part
);
part
=
(
WTPart
)
PersistenceHelper
.
manager
.
refresh
(
part
);
part
=
(
WTPart
)
IBAUtil
.
forceSetIBAValues
(
part
,
dxPartVO
.
getDynamicAttrs
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
part
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
static
WTPartUsageLink
saveWTPartUsageLink
(
DxUsageLinkVO
usageLinkVO
)
throws
Exception
{
Transaction
ts
=
null
;
try
{
ts
=
new
Transaction
();
ts
.
start
();
DxPartVO
source
=
usageLinkVO
.
getSource
();
WTPart
parent
;
if
(
ObjectsUtil
.
isNull
(
source
.
getId
()))
{
parent
=
createPart
(
source
);
}
else
{
parent
=
getPartById
(
source
.
getId
());
}
DxPartVO
target
=
usageLinkVO
.
getTarget
();
WTPart
child
;
if
(
ObjectsUtil
.
isNull
(
target
.
getId
()))
{
child
=
createPart
(
target
);
}
else
{
child
=
getPartById
(
target
.
getId
());
}
saveWTPartUsageLink
(
parent
,
child
,
usageLinkVO
.
getAmount
(),
usageLinkVO
.
getUnit
());
ts
.
commit
();
ts
=
null
;
}
catch
(
Exception
e
)
{
ts
.
rollback
();
throw
new
WTException
(
"create link fail"
+
e
.
getLocalizedMessage
());
}
finally
{
if
(
ts
!=
null
)
{
ts
.
rollback
();
}
}
return
null
;
}
public
static
DxPartVO
updateDxUsageLink
(
DxPartVO
dxPartVO
)
throws
Exception
{
List
<
DxUsageLinkVO
>
sourceUsageLinks
=
dxPartVO
.
getSourceUsageLinks
();
List
<
DxUsageLinkVO
>
resultUsageLinks
=
new
ArrayList
<
DxUsageLinkVO
>();
Long
partVOId
=
dxPartVO
.
getId
();
dxPartVO
=
DxPartUtil
.
getDxPartVO
(
partVOId
);
if
(
CollectionUtils
.
isNotEmpty
(
sourceUsageLinks
))
{
for
(
DxUsageLinkVO
sourceUsageLink
:
sourceUsageLinks
)
{
Long
id
=
sourceUsageLink
.
getId
();
String
usageOid
=
"OR:wt.part.WTPartUsageLink:"
+
id
;
WTObject
wtObjectByOid
=
RfUtil
.
getWTObjectByOid
(
usageOid
);
WTPartUsageLink
usage
=
(
WTPartUsageLink
)
wtObjectByOid
;
Quantity
quantity
=
usage
.
getQuantity
();
quantity
.
setAmount
(
sourceUsageLink
.
getAmount
());
quantity
.
setUnit
(
QuantityUnit
.
toQuantityUnit
(
sourceUsageLink
.
getUnit
()));
//usage.setQuantity(quan);
PersistenceServerHelper
.
manager
.
update
(
usage
);
usage
=
(
WTPartUsageLink
)
PersistenceHelper
.
manager
.
refresh
(
usage
);
DxUsageLinkVO
dxUsageLinkVO
=
new
DxUsageLinkVO
(
usage
,
-
1
);
resultUsageLinks
.
add
(
dxUsageLinkVO
);
}
dxPartVO
.
setSourceUsageLinks
(
resultUsageLinks
);
}
return
dxPartVO
;
}
/**
* 创建部件关联关系
*
* @param parent
* @param part
* @param quantity
* @return
* @throws Exception
*/
public
static
WTPartUsageLink
saveWTPartUsageLink
(
WTPart
parent
,
WTPart
part
,
Double
quantity
,
String
unit
)
throws
WTException
{
if
(
parent
!=
null
)
{
parent
=
(
WTPart
)
VersionControlHelper
.
service
.
getLatestIteration
(
parent
,
false
);
if
(
WorkInProgressHelper
.
isCheckedOut
(
parent
))
{
if
(!
WorkInProgressHelper
.
isWorkingCopy
(
parent
))
parent
=
(
WTPart
)
WorkInProgressHelper
.
service
.
workingCopyOf
(
parent
);
}
if
(
ObjectsUtil
.
isNull
(
unit
))
{
unit
=
"ea"
;
}
WTPartUsageLink
usage
=
WTPartUsageLink
.
newWTPartUsageLink
(
parent
,
(
WTPartMaster
)
part
.
getMaster
());
Quantity
quan
=
Quantity
.
newQuantity
(
quantity
,
QuantityUnit
.
toQuantityUnit
(
unit
));
usage
.
setQuantity
(
quan
);
PersistenceServerHelper
.
manager
.
insert
(
usage
);
return
(
WTPartUsageLink
)
PersistenceHelper
.
manager
.
refresh
(
usage
);
}
return
null
;
}
}
src/com/yonde/common/DxSearchUtil.java
View file @
ee457e27
...
...
@@ -5,11 +5,14 @@ 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.doc.vo.DxDocumentVO
;
import
com.yonde.part.vo.DxPartVO
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.log4j.Logger
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
wt.doc.WTDocument
;
import
wt.fc.*
;
import
wt.log4j.LogR
;
import
wt.method.RemoteAccess
;
...
...
@@ -25,6 +28,7 @@ import wt.vc.views.ViewHelper;
import
wt.vc.wip.WorkInProgressHelper
;
import
java.io.Serializable
;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.sql.Timestamp
;
import
java.util.ArrayList
;
...
...
@@ -35,17 +39,20 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
private
static
Logger
logger
=
LogR
.
getLogger
(
DxSearchUtil
.
class
.
getName
());
private
static
final
long
serialVersionUID
=
1L
;
public
static
DxPageImpl
<
DxPartVO
>
findByConfigSpecSelect
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
public
static
DxPageImpl
findByConfigSpec
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxPageImpl
<
DxPartVO
>
)
RemoteMethodServer
.
getDefault
().
invoke
(
"findByConfigSpecSelect"
,
DxSearchUtil
.
class
.
getName
(),
null
,
return
(
DxPageImpl
)
RemoteMethodServer
.
getDefault
().
invoke
(
"findByConfigSpecSelect"
,
DxSearchUtil
.
class
.
getName
(),
null
,
new
Class
[]
{
SearchQueryCondition
.
class
},
new
Object
[]
{
searchQueryCondition
});
}
logger
.
error
(
"searchCondition===111"
+
searchQueryCondition
.
toString
());
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
false
);
List
<
DxPartVO
>
partList
;
List
partList
;
try
{
SearchItems
searchItems
=
searchQueryCondition
.
getSearchItems
();
if
(
ObjectsUtil
.
isNull
(
searchItems
))
{
searchItems
=
searchQueryCondition
.
getSearchVersion
().
getSearchItems
();
}
QuerySpec
querySpec
=
DxSearchUtil
.
buildQuerySpec
(
searchItems
,
WTPart
.
class
);
/* LatestConfigSpec ls = new LatestConfigSpec();
querySpec = ls.appendSearchCriteria(querySpec);*/
...
...
@@ -57,7 +64,8 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
WTObject
o
=
(
WTObject
)
qr
.
nextElement
();
if
(
o
instanceof
WTPart
)
{
WTPart
wtPart
=
(
WTPart
)
o
;
logger
.
error
(
"WTPart===111"
+
wtPart
.
getNumber
()
+
":"
+
wtPart
.
isLatestIteration
());
buildQueryResult
(
o
,
partList
);
/* logger.error("WTPart===111" + wtPart.getNumber() + ":" +wtPart.isLatestIteration());
if (WorkInProgressHelper.isWorkingCopy(wtPart) || !wtPart.isLatestIteration()) {
continue;
}
...
...
@@ -65,53 +73,88 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
System.out.println("DxPartVO===user" + wtPart.getCreator().getPrincipal());
DxPartVO dxPartVO = new DxPartVO(wtPart);
logger.error("DxPartVO===111" + dxPartVO.getName());
partList
.
add
(
dxPartVO
);
partList.add(dxPartVO);
*/
}
}
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
long
total
=
CollectionUtils
.
size
(
partList
);
//Pageable page = DxPageUtils.getPageRequest(searchQueryCondition);
PageImpl
<
DxPartVO
>
ts
=
new
PageImpl
(
partList
,
new
PageRequest
(
searchQueryCondition
.
getPageFrom
(),
searchQueryCondition
.
getPageSize
()),
total
);
PageImpl
ts
=
new
PageImpl
(
partList
,
new
PageRequest
(
searchQueryCondition
.
getPageFrom
(),
searchQueryCondition
.
getPageSize
()),
total
);
return
DxPageImpl
.
fromPage
(
ts
);
}
/*public static DxPageImpl<DxPart
VO> findByConfigSpecSelect (SearchQueryCondition searchQueryCondition) throws Exception {
public
static
List
<
Id
VO
>
findByConfigSpecSelect
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return (
DxPageImpl<DxPart
VO>) RemoteMethodServer.getDefault().invoke("findByConfigSpecSelect", DxSearchUtil.class.getName(), null,
return
(
List
<
Id
VO
>)
RemoteMethodServer
.
getDefault
().
invoke
(
"findByConfigSpecSelect"
,
DxSearchUtil
.
class
.
getName
(),
null
,
new
Class
[]
{
SearchQueryCondition
.
class
},
new
Object
[]
{
searchQueryCondition
});
}
logger
.
error
(
"searchCondition===111"
+
searchQueryCondition
.
toString
());
boolean
enforce
=
SessionServerHelper
.
manager
.
setAccessEnforced
(
false
);
List
<DxPartVO>
partList;
List
partList
;
try
{
SearchItems
searchItems
=
searchQueryCondition
.
getSearchItems
();
if
(
ObjectsUtil
.
isNull
(
searchItems
))
{
searchItems
=
searchQueryCondition
.
getSearchVersion
().
getSearchItems
();
}
QuerySpec
querySpec
=
DxSearchUtil
.
buildQuerySpec
(
searchItems
,
WTPart
.
class
);
System.out.println("query Spec === " + querySpec.toString());
/* LatestConfigSpec ls = new LatestConfigSpec();
querySpec = ls.appendSearchCriteria(querySpec);*/
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
((
StatementSpec
)
querySpec
);
//LatestConfigSpec lcs = new LatestConfigSpec();
//qr = lcs.process(qr);
partList
=
new
ArrayList
<
DxPartVO
>();
while
(
qr
.
hasMoreElements
())
{
WTObject
o
=
(
WTObject
)
qr
.
nextElement
();
if (o instanceof WTPart) {
buildQueryResult
(
o
,
partList
);
/*if (o instanceof WTPart) {
WTPart wtPart = (WTPart) o;
logger.error("WTPart===111" + wtPart.getNumber());
logger.error("WTPart===111" + wtPart.getNumber() + ":" +wtPart.isLatestIteration());
if (WorkInProgressHelper.isWorkingCopy(wtPart) || !wtPart.isLatestIteration()) {
continue;
}
DxPartVO dxPartVO = new DxPartVO(wtPart);
logger.error("DxPartVO===111" + dxPartVO.getName());
partList.add(dxPartVO);
continue;
}
if (o instanceof WTDocument) {
WTDocument document = (WTDocument) o;
if (WorkInProgressHelper.isWorkingCopy(document) || !document.isLatestIteration()) {
continue;
}
DxDocumentVO dxPartVO = new DxDocumentVO(document);
partList.add(dxPartVO);
}*/
}
}
finally
{
SessionServerHelper
.
manager
.
setAccessEnforced
(
enforce
);
}
long total = CollectionUtils.size(partList);
//Pageable page = DxPageUtils.getPageRequest(searchQueryCondition);
PageImpl<DxPartVO> ts = new PageImpl(partList, new PageRequest(searchQueryCondition.getPageFrom(), searchQueryCondition.getPageSize()), total);
return DxPageImpl.fromPage(ts);
}*/
return
partList
;
}
public
static
void
buildQueryResult
(
WTObject
o
,
List
partList
)
throws
Exception
{
if
(
o
instanceof
WTPart
)
{
WTPart
wtPart
=
(
WTPart
)
o
;
logger
.
error
(
"WTPart===111"
+
wtPart
.
getNumber
()
+
":"
+
wtPart
.
isLatestIteration
());
if
(
WorkInProgressHelper
.
isWorkingCopy
(
wtPart
)
||
!
wtPart
.
isLatestIteration
())
{
return
;
}
DxPartVO
dxPartVO
=
new
DxPartVO
(
wtPart
);
logger
.
error
(
"DxPartVO===111"
+
dxPartVO
.
getName
());
partList
.
add
(
dxPartVO
);
return
;
}
if
(
o
instanceof
WTDocument
)
{
WTDocument
document
=
(
WTDocument
)
o
;
if
(
WorkInProgressHelper
.
isWorkingCopy
(
document
)
||
!
document
.
isLatestIteration
())
{
return
;
}
DxDocumentVO
dxPartVO
=
new
DxDocumentVO
(
document
);
partList
.
add
(
dxPartVO
);
}
}
public
static
QuerySpec
buildQuerySpec
(
SearchItems
searchItems
,
Class
<?
extends
WTObject
>
clazz
)
throws
WTException
,
RemoteException
,
WTPropertyVetoException
{
Map
<
String
,
String
>
typeSearchMap
=
SearchOperatorEnumUtil
.
typeSearchItemMap
.
get
(
clazz
);
...
...
@@ -122,8 +165,12 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
querySpec
.
setAdvancedQueryEnabled
(
true
);
List
<
SearchItems
>
children
=
searchItems
.
getChildren
();
for
(
SearchItems
child
:
children
)
{
int
j
=
0
;
if
(
children
.
size
()
>
1
)
{
j
=
1
;
}
for
(
int
i
=
j
;
i
<
children
.
size
();
i
++)
{
SearchItems
child
=
children
.
get
(
i
);
List
<
SearchItem
>
items
=
child
.
getItems
();
if
(
CollectionUtils
.
isEmpty
(
items
))
{
continue
;
...
...
@@ -139,11 +186,11 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
//视图
if
(
fieldName
.
equals
(
SearchOperatorEnumUtil
.
DX_VIEWID
))
{
addQuerySpecOp
(
querySpec
,
child
.
getOperator
());
View
view
=
ViewHelper
.
service
.
getView
(
S
tring
.
valueOf
(
item
.
value
));
View
view
=
ViewHelper
.
service
.
getView
(
S
earchOperatorEnumUtil
.
viewMap
.
get
(
item
.
value
));
if
(
view
==
null
)
{
continue
;
}
SearchCondition
sc
=
buildScd
(
clazz
,
typeSearchMap
.
get
(
fieldName
),
item
.
operator
,
PersistenceHelper
SearchCondition
sc
=
buildScd
(
clazz
,
typeSearchMap
.
get
(
fieldName
),
item
.
operator
.
name
()
,
PersistenceHelper
.
getObjectIdentifier
(
view
));
if
(
ObjectsUtil
.
nonNull
(
sc
))
{
querySpec
.
appendWhere
(
sc
,
new
int
[]{
0
});
...
...
@@ -153,7 +200,7 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
//对象直接属性:ID Number Name State...改善
if
(
typeSearchMap
.
keySet
().
contains
(
fieldName
))
{
addQuerySpecOp
(
querySpec
,
child
.
getOperator
());
SearchCondition
sc
=
buildScd
(
clazz
,
typeSearchMap
.
get
(
fieldName
),
item
.
operator
,
item
.
value
);
SearchCondition
sc
=
buildScd
(
clazz
,
typeSearchMap
.
get
(
fieldName
),
item
.
operator
.
name
()
,
item
.
value
);
if
(
ObjectsUtil
.
nonNull
(
sc
))
{
querySpec
.
appendWhere
(
sc
,
new
int
[]{
0
});
}
...
...
@@ -187,21 +234,26 @@ public class DxSearchUtil implements RemoteAccess, Serializable {
if
(
ObjectsUtil
.
isNull
(
value
))
{
return
null
;
}
String
op
=
SearchOperatorEnumUtil
.
commonSearchItemMap
.
get
(
operator
);
logger
.
error
(
String
.
format
(
"filename==%s Ope====%s value===%s"
,
fieldName
,
operator
,
value
));
if
(
value
instanceof
String
)
{
String
scVal
=
String
.
valueOf
(
value
);
if
(
"LIKE"
.
equalsIgnoreCase
(
op
))
{
scVal
=
"%"
+
scVal
+
"%"
;
}
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
SearchOperatorEnumUtil
.
commonSearchItemMap
.
get
(
operator
),
String
.
valueOf
(
value
)
);
op
,
scVal
);
}
if
(
value
instanceof
Integer
)
{
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
SearchOperatorEnumUtil
.
commonSearchItemMap
.
get
(
operator
)
,
((
Integer
)
value
).
intValue
());
op
,
((
Integer
)
value
).
intValue
());
}
if
(
value
instanceof
Boolean
)
{
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
(
Boolean
)
value
);
}
if
(
value
instanceof
Timestamp
)
{
sc
=
new
SearchCondition
(
clazz
,
fieldName
,
SearchOperatorEnumUtil
.
commonSearchItemMap
.
get
(
operator
)
,
(
Timestamp
)
value
);
op
,
(
Timestamp
)
value
);
}
return
sc
;
...
...
src/com/yonde/context/controller/DxContentController.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
context
.
controller
;
import
com.yonde.basedata.entity.api.ApiResult
;
import
com.yonde.context.service.DxContextService
;
import
com.yonde.context.vo.DxContextVO
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@RestController
@RequestMapping
(
value
=
"/DxContext"
)
public
class
DxContentController
{
@GetMapping
({
"/treeWithCondition"
})
public
List
<
DxContextVO
>
getAllTreeByCondition
(
@RequestParam
(
required
=
false
)
String
state
,
@RequestParam
(
required
=
false
)
String
subTypeName
,
@RequestParam
(
required
=
false
)
Boolean
currentUserFlag
)
{
try
{
return
DxContextService
.
queryProduct
(
""
,
""
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
src/com/yonde/context/service/DxContextService.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
context
.
service
;
import
com.yonde.context.vo.DxContextVO
;
import
com.yonde.part.service.DxPartService
;
import
com.yonde.part.vo.DxPartVO
;
import
org.apache.commons.lang.StringUtils
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.QueryResult
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.pdmlink.PDMLinkProduct
;
import
wt.pds.StatementSpec
;
import
wt.query.QuerySpec
;
import
wt.query.SearchCondition
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
DxContextService
implements
RemoteAccess
{
/**
* 根据产品名称,类型查询系统中指定子类型的产品对象
*
* @param proName
* @param type
* @return
* @throws Exception
*/
public
static
List
<
DxContextVO
>
queryProduct
(
String
proName
,
String
type
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
List
<
DxContextVO
>)
RemoteMethodServer
.
getDefault
().
invoke
(
"queryProduct"
,
DxContextService
.
class
.
getName
(),
null
,
new
Class
[]
{
String
.
class
,
String
.
class
},
new
Object
[]
{
proName
,
type
});
}
ArrayList
<
PDMLinkProduct
>
resultList
=
new
ArrayList
<
PDMLinkProduct
>();
List
<
DxContextVO
>
contextVOS
=
new
ArrayList
<
DxContextVO
>();
QuerySpec
spec
;
spec
=
new
QuerySpec
();
spec
.
setAdvancedQueryEnabled
(
true
);
int
docIndex
=
spec
.
appendClassList
(
PDMLinkProduct
.
class
,
true
);
/* if (spec.getConditionCount() > 0) {
spec.appendAnd();
}*/
//VTC 产品
/* TypeDefinitionReference tdr = TypedUtility.getTypeDefinitionReference(Global.Type.VTC_PDMLINKPRODUCT);
SearchCondition typeDefinitionCondition =
new SearchCondition(
PDMLinkProduct.class,
PDMLinkProduct.TYPE_DEFINITION_REFERENCE
+ "."
+ TypeDefinitionReference.KEY
+ "."
+ TypeDefinitionForeignKey.BRANCH_ID,
SearchCondition.NOT_EQUAL,
tdr.getKey().getBranchId());
spec.appendWhere(typeDefinitionCondition, new int[] {docIndex});
if (spec.getConditionCount() > 0) {
spec.appendAnd();
}*/
//委任代表 产品
/* TypeDefinitionReference tdr2 = TypedUtility.getTypeDefinitionReference(Global.Type.AR_PDMLINKPRODUCT);
SearchCondition typeDefinitionCondition2 =
new SearchCondition(
PDMLinkProduct.class,
PDMLinkProduct.TYPE_DEFINITION_REFERENCE
+ "."
+ TypeDefinitionReference.KEY
+ "."
+ TypeDefinitionForeignKey.BRANCH_ID,
SearchCondition.NOT_EQUAL,
tdr2.getKey().getBranchId());
spec.appendWhere(typeDefinitionCondition2, new int[] {docIndex});
if (spec.getConditionCount() > 0) {
spec.appendAnd();
}*/
//科研管理 产品
/* TypeDefinitionReference tdr3 = TypedUtility.getTypeDefinitionReference(Global.Type.SRM_PRODUCT);
SearchCondition typeDefinitionCondition3 =
new SearchCondition(
PDMLinkProduct.class,
PDMLinkProduct.TYPE_DEFINITION_REFERENCE
+ "."
+ TypeDefinitionReference.KEY
+ "."
+ TypeDefinitionForeignKey.BRANCH_ID,
SearchCondition.NOT_EQUAL,
tdr3.getKey().getBranchId());
spec.appendWhere(typeDefinitionCondition3, new int[] {docIndex});*/
/* if (spec.getConditionCount() > 0) {
spec.appendAnd();
}
//证后管理 产品
TypeDefinitionReference tdr4 = TypedUtility.getTypeDefinitionReference(Global.Type.ZH_PRODUCT);
SearchCondition typeDefinitionCondition4 =
new SearchCondition(
PDMLinkProduct.class,
PDMLinkProduct.TYPE_DEFINITION_REFERENCE
+ "."
+ TypeDefinitionReference.KEY
+ "."
+ TypeDefinitionForeignKey.BRANCH_ID,
SearchCondition.NOT_EQUAL,
tdr4.getKey().getBranchId());
spec.appendWhere(typeDefinitionCondition4, new int[] {docIndex});*/
if
(
null
!=
proName
&&
StringUtils
.
isNotEmpty
(
proName
.
trim
()))
{
if
(
spec
.
getConditionCount
()
>
0
)
{
spec
.
appendAnd
();
}
spec
.
appendWhere
(
new
SearchCondition
(
PDMLinkProduct
.
class
,
PDMLinkProduct
.
NAME
,
SearchCondition
.
LIKE
,
"%"
+
proName
+
"%"
),
new
int
[]
{
docIndex
});
}
// 执行搜索
try
{
QueryResult
qr
=
PersistenceHelper
.
manager
.
find
((
StatementSpec
)
spec
);
while
(
qr
.
hasMoreElements
())
{
Object
[]
objs
=
(
Object
[])
qr
.
nextElement
();
PDMLinkProduct
mPro
=
(
PDMLinkProduct
)
objs
[
0
];
/* if(mPro.getName().contains("适航指令")){
continue;
}*/
resultList
.
add
(
mPro
);
contextVOS
.
add
(
new
DxContextVO
(
mPro
));
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
finally
{
}
return
contextVOS
;
}
}
src/com/yonde/context/vo/DxContextVO.java
View file @
ee457e27
package
com
.
yonde
.
context
.
vo
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.common.DateTimeUtil
;
import
wt.fc.PersistenceHelper
;
import
wt.inf.container.WTContainer
;
import
wt.org.WTPrincipal
;
import
wt.pdmlink.PDMLinkProduct
;
import
wt.util.WTException
;
import
java.util.List
;
public
class
DxContextVO
extends
IdVO
{
protected
String
name
;
private
List
<
DxContextTeamVO
>
dxContextTeams
;
private
Boolean
tabShowFlag
;
private
String
state
;
private
String
name
;
private
String
remark
;
private
Boolean
operationFlag
;
private
Boolean
isLeaf
;
public
DxContextVO
()
{
}
public
DxContextVO
(
WTContainer
container
)
{
public
DxContextVO
(
WTContainer
container
)
throws
WTException
{
this
.
name
=
container
.
getName
();
if
(
container
instanceof
PDMLinkProduct
)
{
PDMLinkProduct
linkProduct
=
(
PDMLinkProduct
)
container
;
this
.
createTime
=
DateTimeUtil
.
timeStampToString
(
linkProduct
.
getCreateTimestamp
());
this
.
modifyTime
=
DateTimeUtil
.
timeStampToString
(
linkProduct
.
getModifyTimestamp
());
this
.
setId
(
PersistenceHelper
.
getObjectIdentifier
(
linkProduct
).
getId
());
WTPrincipal
owner
=
linkProduct
.
getOwner
();
this
.
setCreator
(
new
DxUserVO
(
owner
));
this
.
setModifier
(
new
DxUserVO
(
owner
));
}
}
public
List
<
DxContextTeamVO
>
getDxContextTeams
()
{
return
dxContextTeams
;
}
public
void
setDxContextTeams
(
List
<
DxContextTeamVO
>
dxContextTeams
)
{
this
.
dxContextTeams
=
dxContextTeams
;
}
public
Boolean
getTabShowFlag
()
{
return
tabShowFlag
;
}
public
void
setTabShowFlag
(
Boolean
tabShowFlag
)
{
this
.
tabShowFlag
=
tabShowFlag
;
}
public
String
getState
()
{
return
state
;
}
public
void
setState
(
String
state
)
{
this
.
state
=
state
;
}
public
String
getRemark
()
{
return
remark
;
}
public
void
setRemark
(
String
remark
)
{
this
.
remark
=
remark
;
}
public
Boolean
getOperationFlag
()
{
return
operationFlag
;
}
public
void
setOperationFlag
(
Boolean
operationFlag
)
{
this
.
operationFlag
=
operationFlag
;
}
public
Boolean
getLeaf
()
{
return
isLeaf
;
}
public
void
setLeaf
(
Boolean
leaf
)
{
isLeaf
=
leaf
;
}
public
String
getName
()
{
...
...
src/com/yonde/doc/controller/DxDocController.java
View file @
ee457e27
...
...
@@ -15,6 +15,87 @@ public class DxDocController extends AbstractBaseController {
@Autowired
private
DxDocService
docService
;
@GetMapping
({
"/version/getWorkingCopy/{id}"
})
//@ApiOperation("获取工作副本")
public
DxDocumentVO
getWorkingCopy
(
@PathVariable
Long
id
)
{
DxDocumentVO
dxDocumentVO
=
null
;
try
{
dxDocumentVO
=
DxDocService
.
getDxDocWorkingCopy
(
id
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
dxDocumentVO
;
}
@GetMapping
({
"/version/{id}"
})
//@ApiOperation("获取部件对象")
public
DxDocumentVO
getDxPart
(
@PathVariable
Long
id
)
{
DxDocumentVO
DxDocumentVO
=
null
;
try
{
DxDocumentVO
=
DxDocService
.
getDxDoc
(
id
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
DxDocumentVO
;
}
@PostMapping
({
"/version/{id}/checkout"
})
//@ApiOperation("获取工作副本")
public
DxDocumentVO
checkout
(
@PathVariable
Long
id
)
{
DxDocumentVO
DxDocumentVO
=
null
;
try
{
DxDocumentVO
=
DxDocService
.
checkout
(
id
,
"Dex检出"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
DxDocumentVO
;
}
@PostMapping
({
"/version/{id}/undoCheckout"
})
//@ApiOperation("获取工作副本")
public
DxDocumentVO
undoCheckout
(
@PathVariable
Long
id
)
{
DxDocumentVO
DxDocumentVO
=
null
;
try
{
DxDocumentVO
=
DxDocService
.
undoCheckout
(
id
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
DxDocumentVO
;
}
@PostMapping
({
"/version/{id}/checkin"
})
//@ApiOperation("获取工作副本")
public
DxDocumentVO
checkin
(
@PathVariable
Long
id
,
@RequestBody
String
node
)
{
System
.
out
.
println
(
"check in===="
+
node
);
DxDocumentVO
DxDocumentVO
=
null
;
try
{
DxDocumentVO
=
DxDocService
.
checkin
(
id
,
node
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
DxDocumentVO
;
}
//@ApiOperation("深度保存对象")
@PostMapping
({
"recursion"
})
public
ApiResult
recursionObj
(
@RequestBody
DxDocumentVO
entity
)
{
//return ApiResult.ok(this.getService().saveRecursion(entity));
try
{
DxDocumentVO
doc
=
DxDocService
.
createDxDoc
(
entity
);
return
ApiResult
.
ok
(
doc
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
}
}
//@ApiOperation("更改文档状态")
@PostMapping
({
"/updateDocumentStatus"
})
public
ApiResult
<
DxDocumentVO
>
updateDocumentStatusRaw
(
@RequestBody
DxDocumentVO
dxDocumentVo
)
{
...
...
src/com/yonde/doc/service/DxDocService.java
View file @
ee457e27
package
com
.
yonde
.
doc
.
service
;
import
com.yonde.common.DocUtil
;
import
com.yonde.common.*
;
import
com.yonde.doc.util.DxDocUtil
;
import
com.yonde.doc.vo.DxDocumentVO
;
import
com.yonde.part.service.DxPartService
;
import
com.yonde.part.vo.DxPartVO
;
import
org.springframework.stereotype.Service
;
import
wt.doc.WTDocument
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
import
wt.session.SessionContext
;
import
wt.session.SessionHelper
;
import
wt.util.WTException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.util.List
;
@Service
public
class
DxDocService
{
public
class
DxDocService
implements
RemoteAccess
{
/**
* 获取工作副本
* @param id
* @return
* @throws Exception
*/
public
static
DxDocumentVO
getDxDocWorkingCopy
(
Long
id
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxDocumentVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getDxDocWorkingCopy"
,
DxDocService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
},
new
Object
[]
{
id
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxDocumentVO
dxDocumentVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTDocument
docById
=
DxDocUtil
.
getDocById
(
id
);
if
(
CommonUtil
.
isCheckedOut
(
docById
))
{
WTDocument
document
=
(
WTDocument
)
CommonUtil
.
getWorkingCopyVersion
(
docById
);
dxDocumentVO
=
new
DxDocumentVO
(
document
);
if
(
ObjectsUtil
.
isNull
(
dxDocumentVO
.
getLocker
()))
{
dxDocumentVO
.
setLockerVO
(
docById
);
}
}
else
{
dxDocumentVO
=
new
DxDocumentVO
(
docById
);
}
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxDocumentVO
;
}
/**
* 获取对象
* @param id
* @return
* @throws Exception
*/
public
static
DxDocumentVO
getDxDoc
(
Long
id
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxDocumentVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getDxDoc"
,
DxDocService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
},
new
Object
[]
{
id
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxDocumentVO
dxDocumentVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTDocument
docById
=
DxDocUtil
.
getDocById
(
id
);
dxDocumentVO
=
new
DxDocumentVO
(
docById
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxDocumentVO
;
}
/**
* 检入
* @param id
* @param checkOutNote
* @return
* @throws Exception
*/
public
static
DxDocumentVO
checkin
(
Long
id
,
String
checkOutNote
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxDocumentVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"checkin"
,
DxDocService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
checkOutNote
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxDocumentVO
dxDocumentVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTDocument
docById
=
DxDocUtil
.
getDocById
(
id
);
WTDocument
checkIn
=
(
WTDocument
)
DxCommonUtils
.
checkin
(
docById
,
checkOutNote
);
dxDocumentVO
=
new
DxDocumentVO
(
checkIn
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxDocumentVO
;
}
/**
*
* @param id
* @param checkOutNote
* @return
* @throws Exception
*/
public
static
DxDocumentVO
checkout
(
Long
id
,
String
checkOutNote
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxDocumentVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"checkout"
,
DxDocService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
checkOutNote
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxDocumentVO
dxDocumentVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTDocument
docById
=
DxDocUtil
.
getDocById
(
id
);
WTDocument
checkout
=
(
WTDocument
)
DxCommonUtils
.
checkout
(
docById
,
checkOutNote
);
dxDocumentVO
=
new
DxDocumentVO
(
checkout
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxDocumentVO
;
}
/**
* 撤销检出
* @param id
* @return
* @throws Exception
*/
public
static
DxDocumentVO
undoCheckout
(
Long
id
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxDocumentVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"undoCheckout"
,
DxDocService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
},
new
Object
[]
{
id
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxDocumentVO
dxdocVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTDocument
docById
=
DxDocUtil
.
getDocById
(
id
);
WTDocument
workable
=
(
WTDocument
)
DxCommonUtils
.
undoCheckout
(
docById
);
dxdocVO
=
new
DxDocumentVO
(
workable
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxdocVO
;
}
public
static
DxDocumentVO
createDxDoc
(
DxDocumentVO
dxDocumentVO
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxDocumentVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"createDxDoc"
,
DxDocService
.
class
.
getName
(),
null
,
new
Class
[]
{
DxDocumentVO
.
class
},
new
Object
[]
{
dxDocumentVO
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTDocument
part
=
DxDocUtil
.
createDoc
(
dxDocumentVO
);
dxDocumentVO
=
new
DxDocumentVO
(
part
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxDocumentVO
;
}
public
DxDocumentVO
updateDocumentStatus
(
DxDocumentVO
var1
)
{
return
null
;
}
...
...
src/com/yonde/doc/util/DxDocUtil.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
doc
.
util
;
import
com.yonde.basedata.service.BaseSearchService
;
import
com.yonde.basedata.vo.DxDocumentFolderVO
;
import
com.yonde.common.CommonUtil
;
import
com.yonde.common.IBAUtil
;
import
com.yonde.common.RfUtil
;
import
com.yonde.doc.vo.DxDocumentVO
;
import
org.apache.log4j.Logger
;
import
wt.doc.DepartmentList
;
import
wt.doc.DocumentType
;
import
wt.doc.WTDocument
;
import
wt.fc.PersistenceHelper
;
import
wt.iba.value.IBAHolder
;
import
wt.inf.container.WTContainer
;
import
wt.inf.container.WTContainerRef
;
import
wt.lifecycle.LifeCycleHelper
;
import
wt.lifecycle.LifeCycleServerHelper
;
import
wt.lifecycle.LifeCycleTemplate
;
import
wt.lifecycle.State
;
import
wt.log4j.LogR
;
import
wt.method.RemoteMethodServer
;
import
wt.type.ClientTypedUtility
;
import
wt.type.TypeDefinitionReference
;
import
wt.util.WTException
;
import
wt.util.WTPropertyVetoException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.text.ParseException
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Set
;
public
class
DxDocUtil
{
private
static
Logger
log
=
LogR
.
getLogger
(
DxDocUtil
.
class
.
getName
());
/**
* 根据id 查询DxDoc
* @param id
* @return
* @throws Exception
*/
public
static
WTDocument
getDocById
(
long
id
)
throws
Exception
{
String
oid
=
"OR:wt.doc.WTDocument:"
+
id
;
WTDocument
doc
=
RfUtil
.
getDoc
(
oid
);
return
doc
;
}
public
static
WTDocument
createDoc
(
DxDocumentVO
dxDocumentVO
)
throws
WTException
,
WTPropertyVetoException
,
RemoteException
,
ParseException
,
InvocationTargetException
{
String
fullType
=
dxDocumentVO
.
getSubTypeName
();
String
number
=
dxDocumentVO
.
getNumber
();
String
name
=
dxDocumentVO
.
getName
();
String
containerName
=
dxDocumentVO
.
getDxContext
().
getName
();
DxDocumentFolderVO
dxDocumentFolder
=
dxDocumentVO
.
getDxDocumentFolder
();
String
folderPath
=
dxDocumentFolder
==
null
?
"/Default"
:
dxDocumentFolder
.
getFullPath
();
String
lifecycleTemplateName
=
null
;
//TODO
String
state
=
dxDocumentVO
.
getState
();
Map
ibaMap
=
dxDocumentVO
.
getDynamicAttrs
();
if
(
fullType
==
null
||
fullType
.
length
()
==
0
)
{
fullType
=
"wt.doc.WTDocument"
;
}
//TypeIdentifier objType = CoreMetaUtility.getTypeIdentifier(fullType);
//WTDocument doc = (WTDocument) CoreMetaUtility.newInstance(objType);
WTDocument
doc
=
WTDocument
.
newWTDocument
();
TypeDefinitionReference
tdr
=
ClientTypedUtility
.
getTypeDefinitionReference
(
fullType
);
doc
.
setTypeDefinitionReference
(
tdr
);
doc
.
setNumber
(
number
);
doc
.
setName
(
name
);
doc
.
setDocType
(
DocumentType
.
getDocumentTypeDefault
());
doc
.
setDepartment
(
DepartmentList
.
getDepartmentListDefault
());
WTContainer
container
=
CommonUtil
.
getContainerByName
(
containerName
);
WTContainerRef
cref
=
WTContainerRef
.
newWTContainerRef
(
container
);
doc
.
setContainerReference
(
cref
);
CommonUtil
.
setFolder
(
cref
,
doc
,
folderPath
);
/*
* if(folderPath != null){ Folder folder = FolderHelper.service.getFolder(folderPath, cref);
* FolderHelper.assignLocation(doc, folder); }
*/
doc
.
setDomainRef
(
cref
.
getReferencedContainerReadOnly
().
getDefaultDomainReference
());
if
(
lifecycleTemplateName
!=
null
&&
lifecycleTemplateName
.
length
()
>
0
)
{
LifeCycleTemplate
lt
=
LifeCycleHelper
.
service
.
getLifeCycleTemplate
(
lifecycleTemplateName
,
cref
);
if
(
lt
==
null
)
{
throw
new
WTException
(
"未在系统中找到生命周期模板:"
+
lifecycleTemplateName
);
}
LifeCycleHelper
.
setLifeCycle
(
doc
,
lt
.
getLifeCycleTemplateReference
());
}
if
(
state
!=
null
&&
state
.
length
()
>
0
)
{
doc
=
(
WTDocument
)
LifeCycleServerHelper
.
setState
(
doc
,
State
.
toState
(
state
));
}
doc
=
(
WTDocument
)
PersistenceHelper
.
manager
.
save
(
doc
);
log
.
info
(
">>>>>>>>>refresh.doc="
+
doc
.
getNumber
());
//doc = (WTDocument) PersistenceHelper.manager.refresh(doc);
int
ibaSize
=
ibaMap
==
null
?
0
:
ibaMap
.
size
();
log
.
debug
(
"开始设置软属性,数:"
+
ibaSize
);
if
(
ibaSize
>
0
)
{
doc
=
(
WTDocument
)
IBAUtil
.
forceSetIBAValues
(
doc
,
ibaMap
);
}
/* if (ibaSize > 0) {
Set keySet = ibaMap.keySet();
for (Iterator it = keySet.iterator(); it.hasNext(); ) {
String ibaName = (String) it.next();
Object value = ibaMap.get(ibaName);
if (value != null) {
IBAUtility.setIBAAnyValue(doc, ibaName, value.toString());
}
}
}*/
log
.
debug
(
"软属性设置结束..."
);
if
(
doc
!=
null
)
{
log
.
debug
(
"文档创建成功:"
+
doc
.
getDisplayIdentity
());
}
else
{
log
.
debug
(
"文档创建失败..."
);
}
return
doc
;
}
}
src/com/yonde/doc/vo/DxDocumentVO.java
View file @
ee457e27
...
...
@@ -50,6 +50,10 @@ public class DxDocumentVO extends RevisionControlledVO {
private
Long
dxOrganizationId
;
private
String
dxOrganizationIdType
;
private
DxDocumentFolderVO
dxDocumentFolder
;
private
Long
dxDocumentFolderId
;
private
String
dxDocumentFolderIdType
;
//TODO link
...
...
@@ -89,6 +93,30 @@ public class DxDocumentVO extends RevisionControlledVO {
}
}
public
DxDocumentFolderVO
getDxDocumentFolder
()
{
return
dxDocumentFolder
;
}
public
void
setDxDocumentFolder
(
DxDocumentFolderVO
dxDocumentFolder
)
{
this
.
dxDocumentFolder
=
dxDocumentFolder
;
}
public
Long
getDxDocumentFolderId
()
{
return
dxDocumentFolderId
;
}
public
void
setDxDocumentFolderId
(
Long
dxDocumentFolderId
)
{
this
.
dxDocumentFolderId
=
dxDocumentFolderId
;
}
public
String
getDxDocumentFolderIdType
()
{
return
dxDocumentFolderIdType
;
}
public
void
setDxDocumentFolderIdType
(
String
dxDocumentFolderIdType
)
{
this
.
dxDocumentFolderIdType
=
dxDocumentFolderIdType
;
}
public
Long
getDxOrganizationId
()
{
return
dxOrganizationId
;
}
...
...
src/com/yonde/part/controller/DxPartController.java
View file @
ee457e27
package
com
.
yonde
.
part
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.yonde.basedata.controller.AbstractBaseController
;
import
com.yonde.basedata.data.DxPageImpl
;
import
com.yonde.basedata.entity.api.ApiResult
;
import
com.yonde.basedata.search.BaseSearchCondition
;
import
com.yonde.basedata.search.SearchQueryCondition
;
import
com.yonde.common.DxPartUtil
;
import
com.yonde.common.ObjectsUtil
;
import
com.yonde.part.service.DxPartService
;
import
com.yonde.part.service.PartService
;
import
com.yonde.part.vo.BOMQueryVO
;
import
com.yonde.part.vo.DxPartVO
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.
List
;
import
java.util.
Map
;
@RestController
@RequestMapping
(
value
=
"/DxPart"
)
public
class
DxPartController
extends
AbstractBaseController
{
private
DxPartService
dxPartService
=
new
DxPartService
();
//@ApiOperation("通过number获取对象")
@GetMapping
({
"/findByNum"
})
public
Object
getPartByNumber
(
@RequestParam
String
number
,
@RequestParam
String
view
)
throws
Exception
{
return
PartService
.
getPartByNumber
(
number
,
view
);
}
//@ApiOperation("配置规范查询")
@PostMapping
({
"findBySpec"
})
List
<
DxPartVO
>
findByConfigSpec
(
@RequestBody
SearchQueryCondition
specSearch
)
{
@GetMapping
({
"/version/getWorkingCopy/{id}"
})
//@ApiOperation("获取工作副本")
public
DxPartVO
getWorkingCopy
(
@PathVariable
Long
id
)
{
DxPartVO
dxPartVO
=
null
;
try
{
DxPageImpl
<
DxPartVO
>
configSpec
=
this
.
getService
().
findByConfigSpec
(
specSearch
);
List
<
DxPartVO
>
partVOS
=
configSpec
.
getContent
();
return
partVOS
;
dxPartVO
=
DxPartService
.
getDxPartWorkingCopy
(
id
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
@GetMapping
({
"/version/getWorkingCopy/{id}"
})
//@ApiOperation("获取工作副本")
public
DxPartVO
getWorkingCopy
(
@PathVariable
Long
id
)
{
//return ApiResult.ok(this.getService().getWorkingCopy(id));
return
dxPartVO
;
}
@GetMapping
({
"/version/{id}"
})
//@ApiOperation("获取部件对象")
public
DxPartVO
getDxPart
(
@PathVariable
Long
id
)
{
DxPartVO
dxPartVO
=
null
;
try
{
dxPartVO
=
DxPartService
.
getDxPart
WorkingCopy
(
id
);
dxPartVO
=
DxPartService
.
getDxPart
(
id
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -54,14 +49,12 @@ public class DxPartController extends AbstractBaseController {
return
dxPartVO
;
}
@
Ge
tMapping
({
"/version/{id}/checkout"
})
@
Pos
tMapping
({
"/version/{id}/checkout"
})
//@ApiOperation("获取工作副本")
public
DxPartVO
checkout
(
@PathVariable
Long
id
)
{
//return ApiResult.ok(this.getService().getWorkingCopy(id));
DxPartVO
dxPartVO
=
null
;
try
{
dxPartVO
=
DxPart
Util
.
checkout
(
id
,
"Dex检出"
);
dxPartVO
=
DxPart
Service
.
checkout
(
id
,
"Dex检出"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -69,11 +62,9 @@ public class DxPartController extends AbstractBaseController {
return
dxPartVO
;
}
@
Ge
tMapping
({
"/version/{id}/undoCheckout"
})
@
Pos
tMapping
({
"/version/{id}/undoCheckout"
})
//@ApiOperation("获取工作副本")
public
DxPartVO
undoCheckout
(
@PathVariable
Long
id
)
{
//return ApiResult.ok(this.getService().getWorkingCopy(id));
DxPartVO
dxPartVO
=
null
;
try
{
dxPartVO
=
DxPartService
.
undoCheckout
(
id
);
...
...
@@ -85,17 +76,16 @@ public class DxPartController extends AbstractBaseController {
}
@
Ge
tMapping
({
"/version/{id}/checkin"
})
@
Pos
tMapping
({
"/version/{id}/checkin"
})
//@ApiOperation("获取工作副本")
public
DxPartVO
checkin
(
@PathVariable
Long
id
,
@Request
Param
String
node
)
{
public
DxPartVO
checkin
(
@PathVariable
Long
id
,
@Request
Body
String
node
)
{
System
.
out
.
println
(
"check in===="
+
node
);
DxPartVO
dxPartVO
=
null
;
try
{
dxPartVO
=
DxPartService
.
checkin
(
id
,
node
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
dxPartVO
;
}
...
...
@@ -103,7 +93,7 @@ public class DxPartController extends AbstractBaseController {
//@ApiOperation("配置规范查询")
@PostMapping
({
"findBySpecPage"
})
ApiResult
findByConfigSpecPage
(
@RequestBody
BaseSearchCondition
sq
)
{
return
ApiResult
.
ok
(
this
.
getService
()
.
findByConfigSpecPage
(
sq
));
return
ApiResult
.
ok
(
DxPartService
.
findByConfigSpecPage
(
sq
));
}
//@ApiOperation("展开BOM")
...
...
@@ -117,10 +107,28 @@ public class DxPartController extends AbstractBaseController {
return
null
;
}
@DeleteMapping
({
"/version/del/{id}"
})
//@SubPermission({"remove"})
public
ApiResult
deleteAllIterationFromSameVersion
(
@PathVariable
(
"id"
)
Long
id
)
{
//this.getService().deleteAllIterationFromSameVersion(id);
return
ApiResult
.
ok
((
Object
)
null
,
"删除成功"
);
}
@GetMapping
({
"/version/latest"
})
public
ApiResult
getNextVersionOfLatestVersion
(
@RequestParam
(
"id"
)
Long
id
,
@RequestParam
(
value
=
"sourceViewId"
,
required
=
false
)
Long
sourceViewId
,
@RequestParam
(
value
=
"targetViewId"
,
required
=
false
)
Long
targetViewId
)
{
//return ApiResult.ok(this.getService().getNextVersionOfLatestVersion(id, sourceViewId, targetViewId));
try
{
return
ApiResult
.
ok
(
DxPartService
.
getNextVersion
(
id
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"500"
,
e
.
getLocalizedMessage
(),
e
);
}
}
//@ApiOperation("展开BOM")
@PostMapping
({
"findBySpecP"
})
public
ApiResult
<
DxPartVO
>
findBySpecP
(
@RequestBody
BaseSearchCondition
bomQuery
)
{
return
ApiResult
.
ok
(
this
.
getService
()
.
findByConfigSpecPage
(
bomQuery
));
return
ApiResult
.
ok
(
DxPartService
.
findByConfigSpecPage
(
bomQuery
));
}
@PutMapping
({
"/lifecycle/changeStatus"
})
...
...
@@ -137,12 +145,22 @@ public class DxPartController extends AbstractBaseController {
}
//@ApiOperation("深度保存对象")
/* @PostMapping({"recursion"})
public ApiResult recursionObj(@RequestBody DxPartVO entity) {
return ApiResult.ok(this.getService().saveRecursion(entity));
}*/
protected
DxPartService
getService
()
{
return
dxPartService
;
@PostMapping
({
"recursion"
})
public
ApiResult
recursionObj
(
@RequestBody
Map
entity
)
{
DxPartVO
part
=
null
;
try
{
String
jsonString
=
JSON
.
toJSONString
(
entity
);
DxPartVO
entityVO
=
JSON
.
parseObject
(
jsonString
,
DxPartVO
.
class
);
if
(
ObjectsUtil
.
nonNull
(
entityVO
.
getOperator
())
&&
entityVO
.
getOperator
().
equals
(
"NO_CHANGE"
))
{
//更新link
part
=
DxPartService
.
updateDxPartUsageLink
(
entityVO
);
}
else
{
part
=
DxPartService
.
createDxPart
(
entityVO
);
}
return
ApiResult
.
ok
(
part
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
}
}
}
src/com/yonde/part/controller/DxUsageLinkController.java
0 → 100644
View file @
ee457e27
package
com
.
yonde
.
part
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.yonde.basedata.entity.api.ApiResult
;
import
com.yonde.part.service.DxPartService
;
import
com.yonde.part.vo.DxPartVO
;
import
com.yonde.part.vo.DxUsageLinkVO
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
@RestController
@RequestMapping
(
value
=
"/DxUsageLink"
)
public
class
DxUsageLinkController
{
//@ApiOperation("深度保存对象")
@PostMapping
({
"recursion"
})
public
ApiResult
recursionObj
(
@RequestBody
Map
entity
)
{
//return ApiResult.ok(this.getService().saveRecursion(entity));
try
{
String
jsonString
=
JSON
.
toJSONString
(
entity
);
DxUsageLinkVO
entityVO
=
JSON
.
parseObject
(
jsonString
,
DxUsageLinkVO
.
class
);
entityVO
=
DxPartService
.
createDxPartUsageLink
(
entityVO
);
return
ApiResult
.
ok
(
entityVO
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
}
}
//@ApiOperation("深度保存对象")
@PostMapping
({
"recursions"
})
public
ApiResult
recursionObj
(
@RequestBody
List
entity
)
{
//return ApiResult.ok(this.getService().saveRecursion(entity));
try
{
String
jsonString
=
JSON
.
toJSONString
(
entity
);
List
entityVOList
=
JSON
.
parseObject
(
jsonString
,
List
.
class
);
List
<
DxUsageLinkVO
>
resultList
=
new
ArrayList
<
DxUsageLinkVO
>();
for
(
Object
o
:
entityVOList
)
{
DxUsageLinkVO
entityVO
=
DxPartService
.
createDxPartUsageLink
((
DxUsageLinkVO
)
o
);
resultList
.
add
(
entityVO
);
}
return
ApiResult
.
ok
(
resultList
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
(
"501"
,
e
.
getLocalizedMessage
(),
e
);
}
}
@DeleteMapping
({
"/batch/{id}"
})
// id,id2,id3 linkId
//@SubPermission({"remove"})
public
ApiResult
deleteDxPartUsageLink
(
@PathVariable
(
"id"
)
Long
id
)
{
//this.getService().deleteAllIterationFromSameVersion(id);
return
ApiResult
.
ok
((
Object
)
null
,
"删除成功"
);
}
}
src/com/yonde/part/service/DxPartService.java
View file @
ee457e27
...
...
@@ -3,15 +3,15 @@ package com.yonde.part.service;
import
com.yonde.basedata.data.DxPageImpl
;
import
com.yonde.basedata.search.BaseSearchCondition
;
import
com.yonde.basedata.search.SearchQueryCondition
;
import
com.yonde.common.CommonUtil
;
import
com.yonde.common.DxCommonUtils
;
import
com.yonde.common.DxPartUtil
;
import
com.yonde.common.DxSearchUtil
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.common.*
;
import
com.yonde.part.vo.BOMQueryVO
;
import
com.yonde.part.vo.DxPartVO
;
import
com.yonde.part.vo.DxUsageLinkVO
;
import
org.apache.log4j.Logger
;
import
org.springframework.stereotype.Service
;
import
wt.fc.QueryResult
;
import
wt.log4j.LogR
;
import
wt.method.RemoteAccess
;
import
wt.method.RemoteMethodServer
;
import
wt.part.WTPart
;
...
...
@@ -19,6 +19,7 @@ import wt.part.WTPartHelper;
import
wt.part.WTPartUsageLink
;
import
wt.session.SessionContext
;
import
wt.session.SessionHelper
;
import
wt.vc.VersionControlHelper
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
...
...
@@ -26,21 +27,28 @@ import java.util.List;
@Service
public
class
DxPartService
implements
RemoteAccess
,
Serializable
{
private
static
Logger
logger
=
LogR
.
getLogger
(
DxPartService
.
class
.
getName
());
private
static
final
long
serialVersionUID
=
1L
;
public
DxPageImpl
<
DxPartVO
>
findByConfigSpec
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
DxPageImpl
<
DxPartVO
>
byConfigSpecSelect
=
DxSearchUtil
.
findByConfigSpec
Select
(
searchQueryCondition
);
DxPageImpl
<
DxPartVO
>
byConfigSpecSelect
=
DxSearchUtil
.
findByConfigSpec
(
searchQueryCondition
);
return
byConfigSpecSelect
;
}
public
List
<
DxPartVO
>
findByConfigSpecSelect
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
DxPageImpl
<
DxPartVO
>
byConfigSpecSelect
=
DxSearchUtil
.
findByConfigSpecSelect
(
searchQueryCondition
);
return
byConfigSpecSelect
.
getContent
();
public
static
List
findByConfigSpecSelect
(
SearchQueryCondition
searchQueryCondition
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
List
)
RemoteMethodServer
.
getDefault
().
invoke
(
"findByConfigSpecSelect"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
SearchQueryCondition
.
class
},
new
Object
[]
{
searchQueryCondition
});
}
logger
.
error
(
"findByConfigSpecSelect===111"
+
searchQueryCondition
.
toString
());
/*boolean enforce = SessionServerHelper.manager.setAccessEnforced(false);*/
List
<
IdVO
>
partList
=
DxSearchUtil
.
findByConfigSpecSelect
(
searchQueryCondition
);;
return
partList
;
}
public
DxPageImpl
<
DxPartVO
>
findByConfigSpecPage
(
BaseSearchCondition
specSearch
)
{
public
static
DxPageImpl
<
DxPartVO
>
findByConfigSpecPage
(
BaseSearchCondition
specSearch
)
{
return
null
;
}
...
...
@@ -89,14 +97,48 @@ public class DxPartService implements RemoteAccess, Serializable {
*/
public
static
DxPartVO
checkin
(
Long
id
,
String
checkOutNote
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxPartVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"check
out
"
,
DxPartService
.
class
.
getName
(),
null
,
return
(
DxPartVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"check
in
"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
checkOutNote
});
}
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
WTPart
checkIn
=
(
WTPart
)
DxCommonUtils
.
checkin
(
partById
,
checkOutNote
);
SessionContext
previous
=
SessionContext
.
newContext
();
DxPartVO
dxPartVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
WTPart
checkIn
=
(
WTPart
)
DxCommonUtils
.
checkin
(
partById
,
checkOutNote
);
dxPartVO
=
new
DxPartVO
(
checkIn
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
new
DxPartVO
(
checkIn
);
return
dxPartVO
;
}
/**
*
* @param id
* @param checkOutNote
* @return
* @throws Exception
*/
public
static
DxPartVO
checkout
(
Long
id
,
String
checkOutNote
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxPartVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"checkout"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
,
String
.
class
},
new
Object
[]
{
id
,
checkOutNote
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxPartVO
dxPartVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
WTPart
checkout
=
(
WTPart
)
DxCommonUtils
.
checkout
(
partById
,
checkOutNote
);
dxPartVO
=
new
DxPartVO
(
checkout
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxPartVO
;
}
/**
...
...
@@ -111,9 +153,18 @@ public class DxPartService implements RemoteAccess, Serializable {
new
Class
[]
{
Long
.
class
},
new
Object
[]
{
id
});
}
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
WTPart
workable
=
(
WTPart
)
DxCommonUtils
.
undoCheckout
(
partById
);
return
new
DxPartVO
(
workable
);
SessionContext
previous
=
SessionContext
.
newContext
();
DxPartVO
dxPartVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
WTPart
workable
=
(
WTPart
)
DxCommonUtils
.
undoCheckout
(
partById
);
dxPartVO
=
new
DxPartVO
(
workable
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxPartVO
;
}
/**
...
...
@@ -134,8 +185,38 @@ public class DxPartService implements RemoteAccess, Serializable {
SessionHelper
.
manager
.
setAdministrator
();
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
if
(
CommonUtil
.
isCheckedOut
(
partById
))
{
partById
=
(
WTPart
)
CommonUtil
.
getWorkingCopyVersion
(
partById
);
WTPart
partByIdCp
=
(
WTPart
)
CommonUtil
.
getWorkingCopyVersion
(
partById
);
dxPartVO
=
new
DxPartVO
(
partByIdCp
);
if
(
ObjectsUtil
.
isNull
(
dxPartVO
.
getLocker
()))
{
dxPartVO
.
setLockerVO
(
partById
);
}
}
else
{
dxPartVO
=
new
DxPartVO
(
partById
);
}
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxPartVO
;
}
/**
* 获取对象
* @param id
* @return
* @throws Exception
*/
public
static
DxPartVO
getDxPart
(
Long
id
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxPartVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getDxPart"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
},
new
Object
[]
{
id
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
DxPartVO
dxPartVO
=
null
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
dxPartVO
=
new
DxPartVO
(
partById
);
}
finally
{
SessionContext
.
setContext
(
previous
);
...
...
@@ -162,4 +243,78 @@ public class DxPartService implements RemoteAccess, Serializable {
return
new
DxPartVO
(
partById
);
}
/**
* 获取下一大版本
* @param id
* @return
* @throws Exception
*/
public
static
String
getNextVersion
(
Long
id
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
String
)
RemoteMethodServer
.
getDefault
().
invoke
(
"getNextVersion"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
Long
.
class
},
new
Object
[]
{
id
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
String
nextVersion
=
""
;
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPart
partById
=
DxPartUtil
.
getPartById
(
id
);
nextVersion
=
DxPartUtil
.
getNextVersion
(
partById
,
1
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
nextVersion
;
}
public
static
DxPartVO
createDxPart
(
DxPartVO
dxPartVO
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxPartVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"createDxPart"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
DxPartVO
.
class
},
new
Object
[]
{
dxPartVO
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPart
part
=
DxPartUtil
.
createPart
(
dxPartVO
);
dxPartVO
=
new
DxPartVO
(
part
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxPartVO
;
}
public
static
DxUsageLinkVO
createDxPartUsageLink
(
DxUsageLinkVO
dxPartVO
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxUsageLinkVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"createDxPartUsageLink"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
DxUsageLinkVO
.
class
},
new
Object
[]
{
dxPartVO
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
try
{
SessionHelper
.
manager
.
setAdministrator
();
WTPartUsageLink
partLink
=
DxPartUtil
.
saveWTPartUsageLink
(
dxPartVO
);
dxPartVO
=
new
DxUsageLinkVO
(
partLink
,
-
1
);
// 父-子
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxPartVO
;
}
public
static
DxPartVO
updateDxPartUsageLink
(
DxPartVO
dxPartVO
)
throws
Exception
{
if
(!
RemoteMethodServer
.
ServerFlag
)
{
return
(
DxPartVO
)
RemoteMethodServer
.
getDefault
().
invoke
(
"updateDxPartUsageLink"
,
DxPartService
.
class
.
getName
(),
null
,
new
Class
[]
{
DxPartVO
.
class
},
new
Object
[]
{
dxPartVO
});
}
SessionContext
previous
=
SessionContext
.
newContext
();
try
{
SessionHelper
.
manager
.
setAdministrator
();
dxPartVO
=
DxPartUtil
.
updateDxUsageLink
(
dxPartVO
);
}
finally
{
SessionContext
.
setContext
(
previous
);
}
return
dxPartVO
;
}
}
src/com/yonde/part/service/impl/DxPartServiceImpl.java
View file @
ee457e27
...
...
@@ -22,7 +22,7 @@ public class DxPartServiceImpl {
return
null
;
}
public
DxPageImpl
<
DxPartVO
>
findByConfigSpec
(
SpecSearch
specSearch
)
{
/*
public DxPageImpl<DxPartVO> findByConfigSpec(SpecSearch specSearch) {
SearchQueryCondition searchQueryCondition = specSearch.getSearchQueryCondition();
DxPageImpl<DxPartVO> byConfigSpecSelect = null;
...
...
@@ -32,7 +32,7 @@ public class DxPartServiceImpl {
e.printStackTrace();
}
return byConfigSpecSelect;
}
}
*/
public
DxPageImpl
<
DxPartVO
>
findByConfigSpecPage
(
SearchQueryCondition
specSearch
)
{
...
...
src/com/yonde/part/vo/DxPartVO.java
View file @
ee457e27
package
com
.
yonde
.
part
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.fasterxml.jackson.annotation.JsonTypeInfo
;
import
com.yonde.basedata.vo.DxMasterVO
;
import
com.yonde.basedata.vo.DxOrganizationVO
;
import
com.yonde.basedata.vo.DxVersionVO
;
import
com.yonde.basedata.vo.RevisionControlledVO
;
import
com.yonde.common.CommonUtil
;
import
com.yonde.common.DateTimeUtil
;
import
com.yonde.common.IBAHelper
;
import
com.yonde.context.vo.DxContextVO
;
import
wt.fc.Persistable
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.WTObject
;
import
wt.method.RemoteAccess
;
import
wt.org.WTOrganization
;
import
wt.org.WTUser
;
import
wt.part.WTPart
;
import
wt.part.WTPartHelper
;
import
wt.session.SessionContext
;
import
wt.session.SessionHelper
;
import
wt.type.ClientTypedUtility
;
...
...
@@ -31,7 +24,13 @@ import java.rmi.RemoteException;
import
java.util.List
;
import
java.util.Locale
;
public
class
DxPartVO
extends
RevisionControlledVO
implements
RemoteAccess
,
Serializable
{
@JsonTypeInfo
(
use
=
JsonTypeInfo
.
Id
.
CLASS
,
property
=
"classname"
,
visible
=
true
,
defaultImpl
=
DxPartVO
.
class
)
public
class
DxPartVO
extends
RevisionControlledVO
implements
Serializable
{
@JsonIgnore
private
WTPart
wtPart
;
...
...
@@ -67,7 +66,6 @@ public class DxPartVO extends RevisionControlledVO implements RemoteAccess, Seri
private
Integer
dxViewId
;
private
Long
predecessorId
;
//TODO 对象上一版本
private
Long
originId
;
//private String dxClassname = "com.yonde.dcs.xbom.common.entity.vo.DxUsageLinkVO";
private
Boolean
upperPart
=
false
;
...
...
@@ -89,7 +87,7 @@ public class DxPartVO extends RevisionControlledVO implements RemoteAccess, Seri
public
DxPartVO
(
WTPart
wtPart
)
throws
WTException
,
RemoteException
,
InvocationTargetException
{
super
(
wtPart
);
System
.
out
.
println
(
"DxPartVO===user"
+
wtPart
.
getCreator
());
System
.
out
.
println
(
"DxPartVO===user"
+
this
.
getCreator
());
SessionContext
previous
=
SessionContext
.
newContext
();
try
{
// To set the user of the session to be the administrator
...
...
src/com/yonde/part/vo/DxUsageLinkVO.java
View file @
ee457e27
package
com
.
yonde
.
part
.
vo
;
import
com.yonde.basedata.entity.users.DxUserVO
;
import
com.yonde.basedata.vo.IdVO
;
import
com.yonde.common.DateTimeUtil
;
import
com.yonde.common.IBAHelper
;
import
com.yonde.common.PartUtil
;
import
wt.fc.PersistenceHelper
;
import
wt.fc.PersistenceServerHelper
;
import
wt.part.Quantity
;
import
wt.part.WTPart
;
import
wt.part.WTPartMaster
;
...
...
@@ -15,7 +12,6 @@ import wt.util.WTException;
import
java.lang.reflect.InvocationTargetException
;
import
java.rmi.RemoteException
;
import
java.util.List
;
public
class
DxUsageLinkVO
extends
IdVO
{
...
...
@@ -30,7 +26,7 @@ public class DxUsageLinkVO extends IdVO {
private
Long
sourceId
;
private
String
sourceIdType
;
//TODO
private
String
dxClassname
=
"com.yonde.dcs.xbom.common.entity.vo.DxUsageLinkVO"
;
//
private String dxClassname = "com.yonde.dcs.xbom.common.entity.vo.DxUsageLinkVO";
public
DxUsageLinkVO
(
WTPartUsageLink
usageLink
,
int
level
)
throws
WTException
,
RemoteException
,
InvocationTargetException
{
super
(
usageLink
);
...
...
@@ -115,13 +111,4 @@ public class DxUsageLinkVO extends IdVO {
this
.
sourceIdType
=
sourceIdType
;
}
@Override
public
String
getDxClassname
()
{
return
dxClassname
;
}
@Override
public
void
setDxClassname
(
String
dxClassname
)
{
this
.
dxClassname
=
dxClassname
;
}
}
src/com/yonde/part/vo/DxViewVO.java
View file @
ee457e27
...
...
@@ -21,7 +21,8 @@ public class DxViewVO extends IdVO {
super
(
wtPart
);
View
view
=
ViewHelper
.
getView
(
wtPart
);
this
.
name
=
view
.
getName
();
this
.
level
=
ViewHelper
.
service
.
getViewLevel
(
view
);
this
.
level
=
ViewHelper
.
service
.
getViewLevel
(
view
)
+
1
;
//TOOD 两边视图id不一致
this
.
id
=
Long
.
valueOf
(
this
.
level
);
}
public
String
getName
()
{
...
...
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