Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
JeeSpringCloud
Commits
05beecd0
Commit
05beecd0
authored
Nov 12, 2018
by
Huang
Browse files
no commit message
parent
bc5dd330
Changes
368
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 368+
files are displayed.
Plain diff
Email patch
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/service/ext/ActUserEntityService.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.service.ext
;
import
java.util.List
;
import
java.util.Map
;
import
org.activiti.engine.identity.Group
;
import
org.activiti.engine.identity.User
;
import
org.activiti.engine.identity.UserQuery
;
import
org.activiti.engine.impl.Page
;
import
org.activiti.engine.impl.UserQueryImpl
;
import
org.activiti.engine.impl.persistence.entity.IdentityInfoEntity
;
import
org.activiti.engine.impl.persistence.entity.UserEntity
;
import
org.activiti.engine.impl.persistence.entity.UserEntityManager
;
import
org.springframework.stereotype.Service
;
import
com.google.common.collect.Lists
;
import
com.jeespring.common.utils.SpringContextHolder
;
import
com.jeespring.modules.act.utils.ActUtils
;
import
com.jeespring.modules.sys.entity.Role
;
import
com.jeespring.modules.sys.service.SystemService
;
/**
* Activiti User Entity Service
* @author JeeSpring
* @version 2013-11-03
*/
@Service
public
class
ActUserEntityService
extends
UserEntityManager
{
private
SystemService
systemService
;
public
SystemService
getSystemService
()
{
if
(
systemService
==
null
){
systemService
=
SpringContextHolder
.
getBean
(
SystemService
.
class
);
}
return
systemService
;
}
@Override
public
User
createNewUser
(
String
userId
)
{
return
new
UserEntity
(
userId
);
}
@Override
public
void
insertUser
(
User
user
)
{
// getDbSqlSession().insert((PersistentObject) user);
throw
new
RuntimeException
(
"not implement method."
);
}
public
void
updateUser
(
UserEntity
updatedUser
)
{
// CommandContext commandContext = Context.getCommandContext();
// DbSqlSession dbSqlSession = commandContext.getDbSqlSession();
// dbSqlSession.update(updatedUser);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
UserEntity
findUserById
(
String
userId
)
{
// return (UserEntity) getDbSqlSession().selectOne("selectUserById", userId);
return
ActUtils
.
toActivitiUser
(
getSystemService
().
getUserByLoginName
(
userId
));
}
@Override
public
void
deleteUser
(
String
userId
)
{
// UserEntity user = findUserById(userId);
// if (user != null) {
// List<IdentityInfoEntity> identityInfos = getDbSqlSession().selectList("selectIdentityInfoByUserId", userId);
// for (IdentityInfoEntity identityInfo : identityInfos) {
// getIdentityInfoManager().deleteIdentityInfo(identityInfo);
// }
// getDbSqlSession().delete("deleteMembershipsByUserId", userId);
// user.delete();
// }
User
user
=
findUserById
(
userId
);
if
(
user
!=
null
)
{
getSystemService
().
deleteUser
(
new
com
.
jeespring
.
modules
.
sys
.
entity
.
User
(
user
.
getId
()));
}
}
@Override
public
List
<
User
>
findUserByQueryCriteria
(
UserQueryImpl
query
,
Page
page
)
{
// return getDbSqlSession().selectList("selectUserByQueryCriteria", query, page);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
long
findUserCountByQueryCriteria
(
UserQueryImpl
query
)
{
// return (Long) getDbSqlSession().selectOne("selectUserCountByQueryCriteria", query);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
List
<
Group
>
findGroupsByUser
(
String
userId
)
{
// return getDbSqlSession().selectList("selectGroupsByUserId", userId);
List
<
Group
>
list
=
Lists
.
newArrayList
();
for
(
Role
role
:
getSystemService
().
findRole
(
new
Role
(
new
com
.
jeespring
.
modules
.
sys
.
entity
.
User
(
null
,
userId
)))){
list
.
add
(
ActUtils
.
toActivitiGroup
(
role
));
}
return
list
;
}
@Override
public
UserQuery
createNewUserQuery
()
{
// return new UserQueryImpl(Context.getProcessEngineConfiguration().getCommandExecutorTxRequired());
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
IdentityInfoEntity
findUserInfoByUserIdAndKey
(
String
userId
,
String
key
)
{
// Map<String, String> parameters = new HashMap<String, String>();
// parameters.put("userId", userId);
// parameters.put("key", key);
// return (IdentityInfoEntity) getDbSqlSession().selectOne("selectIdentityInfoByUserIdAndKey", parameters);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
List
<
String
>
findUserInfoKeysByUserIdAndType
(
String
userId
,
String
type
)
{
// Map<String, String> parameters = new HashMap<String, String>();
// parameters.put("userId", userId);
// parameters.put("type", type);
// return (List) getDbSqlSession().getSqlSession().selectList("selectIdentityInfoKeysByUserIdAndType", parameters);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
Boolean
checkPassword
(
String
userId
,
String
password
)
{
// User user = findUserById(userId);
// if ((user != null) && (password != null) && (password.equals(user.getPassword()))) {
// return true;
// }
// return false;
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
List
<
User
>
findPotentialStarterUsers
(
String
proceDefId
)
{
// Map<String, String> parameters = new HashMap<String, String>();
// parameters.put("procDefId", proceDefId);
// return (List<User>) getDbSqlSession().selectOne("selectUserByQueryCriteria", parameters);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
List
<
User
>
findUsersByNativeQuery
(
Map
<
String
,
Object
>
parameterMap
,
int
firstResult
,
int
maxResults
)
{
// return getDbSqlSession().selectListWithRawParameter("selectUserByNativeQuery", parameterMap, firstResult, maxResults);
throw
new
RuntimeException
(
"not implement method."
);
}
@Override
public
long
findUserCountByNativeQuery
(
Map
<
String
,
Object
>
parameterMap
)
{
// return (Long) getDbSqlSession().selectOne("selectUserCountByNativeQuery", parameterMap);
throw
new
RuntimeException
(
"not implement method."
);
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/service/ext/ActUserEntityServiceFactory.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.service.ext
;
import
org.activiti.engine.impl.interceptor.Session
;
import
org.activiti.engine.impl.interceptor.SessionFactory
;
import
org.activiti.engine.impl.persistence.entity.UserIdentityManager
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* Activiti User Entity Service Factory
* @author JeeSpring
* @version 2013-11-03
*/
public
class
ActUserEntityServiceFactory
implements
SessionFactory
{
@Autowired
private
ActUserEntityService
actUserEntityService
;
@Override
public
Class
<?>
getSessionType
()
{
// 返回原始的UserIdentityManager类型
return
UserIdentityManager
.
class
;
}
@Override
public
Session
openSession
()
{
// 返回自定义的UserEntityManager实例
return
actUserEntityService
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/utils/ActUtils.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.utils
;
import
java.lang.annotation.Annotation
;
import
java.lang.reflect.Method
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.activiti.engine.impl.persistence.entity.GroupEntity
;
import
org.activiti.engine.impl.persistence.entity.UserEntity
;
import
com.fasterxml.jackson.annotation.JsonBackReference
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.jeespring.common.annotation.FieldName
;
import
com.jeespring.common.config.Global
;
import
com.jeespring.common.utils.Encodes
;
import
com.jeespring.common.utils.ObjectUtils
;
import
com.jeespring.common.utils.StringUtils
;
import
com.jeespring.modules.act.entity.Act
;
import
com.jeespring.modules.sys.entity.Role
;
import
com.jeespring.modules.sys.entity.User
;
/**
* 流程工具
* @author JeeSpring
* @version 2013-11-03
*/
public
class
ActUtils
{
// private static Logger logger = LoggerFactory.getLogger(ActUtils.class);
/**
* 定义流程定义KEY,必须以“PD_”开头
* 组成结构:string[]{"流程标识","业务主表表名"}
*/
public
static
final
String
[]
PD_LEAVE
=
new
String
[]{
"leave"
,
"oa_leave"
};
public
static
final
String
[]
PD_TEST_AUDIT
=
new
String
[]{
"test_audit"
,
"oa_test_audit"
};
// /**
// * 流程定义Map(自动初始化)
// */
// private static Map<String, String> procDefMap = new HashMap<String, String>() {
// private static final long serialVersionUID = 1L;
// {
// for (Field field : ActUtils.class.getFields()){
// if(StringUtils.startsWith(field.getName(), "PD_")){
// try{
// String[] ss = (String[])field.get(null);
// put(ss[0], ss[1]);
// }catch (Exception e) {
// logger.debug("load pd error: {}", field.getName());
// }
// }
// }
// }
// };
//
// /**
// * 获取流程执行(办理)URL
// * @param procId
// * @return
// */
// public static String getProcExeUrl(String procId) {
// String url = procDefMap.get(StringUtils.split(procId, ":")[0]);
// if (StringUtils.isBlank(url)){
// return "404";
// }
// return url;
// }
@SuppressWarnings
({
"unused"
})
public
static
Map
<
String
,
Object
>
getMobileEntity
(
Object
entity
,
String
spiltType
){
if
(
spiltType
==
null
){
spiltType
=
"@"
;
}
Map
<
String
,
Object
>
map
=
Maps
.
newHashMap
();
List
<
String
>
field
=
Lists
.
newArrayList
();
List
<
String
>
value
=
Lists
.
newArrayList
();
List
<
String
>
chinesName
=
Lists
.
newArrayList
();
try
{
for
(
Method
m
:
entity
.
getClass
().
getMethods
()){
if
(
m
.
getAnnotation
(
JsonIgnore
.
class
)
==
null
&&
m
.
getAnnotation
(
JsonBackReference
.
class
)
==
null
&&
m
.
getName
().
startsWith
(
"get"
)){
if
(
m
.
isAnnotationPresent
(
FieldName
.
class
))
{
Annotation
p
=
m
.
getAnnotation
(
FieldName
.
class
);
FieldName
fieldName
=(
FieldName
)
p
;
chinesName
.
add
(
fieldName
.
value
());
}
else
{
chinesName
.
add
(
""
);
}
if
(
"getAct"
.
equals
(
m
.
getName
())){
Object
act
=
m
.
invoke
(
entity
,
new
Object
[]{});
Method
actMet
=
act
.
getClass
().
getMethod
(
"getTaskId"
);
map
.
put
(
"taskId"
,
ObjectUtils
.
toString
(
m
.
invoke
(
act
,
new
Object
[]{}),
""
));
}
else
{
field
.
add
(
StringUtils
.
uncapitalize
(
m
.
getName
().
substring
(
3
)));
value
.
add
(
ObjectUtils
.
toString
(
m
.
invoke
(
entity
,
new
Object
[]{}),
""
));
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
map
.
put
(
"beanTitles"
,
StringUtils
.
join
(
field
,
spiltType
));
map
.
put
(
"beanInfos"
,
StringUtils
.
join
(
value
,
spiltType
));
map
.
put
(
"chineseNames"
,
StringUtils
.
join
(
chinesName
,
spiltType
));
return
map
;
}
/**
* 获取流程表单URL
* @param formKey
* @param act 表单传递参数
* @return
*/
public
static
String
getFormUrl
(
String
formKey
,
Act
act
){
StringBuilder
formUrl
=
new
StringBuilder
();
String
formServerUrl
=
Global
.
getConfig
(
"activiti.form.server.url"
);
if
(
StringUtils
.
isBlank
(
formServerUrl
)){
formUrl
.
append
(
Global
.
getAdminPath
());
}
else
{
formUrl
.
append
(
formServerUrl
);
}
formUrl
.
append
(
formKey
).
append
(
formUrl
.
indexOf
(
"?"
)
==
-
1
?
"?"
:
"&"
);
formUrl
.
append
(
"act.taskId="
).
append
(
act
.
getTaskId
()
!=
null
?
act
.
getTaskId
()
:
""
);
formUrl
.
append
(
"&act.taskName="
).
append
(
act
.
getTaskName
()
!=
null
?
Encodes
.
urlEncode
(
act
.
getTaskName
())
:
""
);
formUrl
.
append
(
"&act.taskDefKey="
).
append
(
act
.
getTaskDefKey
()
!=
null
?
act
.
getTaskDefKey
()
:
""
);
formUrl
.
append
(
"&act.procInsId="
).
append
(
act
.
getProcInsId
()
!=
null
?
act
.
getProcInsId
()
:
""
);
formUrl
.
append
(
"&act.procDefId="
).
append
(
act
.
getProcDefId
()
!=
null
?
act
.
getProcDefId
()
:
""
);
formUrl
.
append
(
"&act.status="
).
append
(
act
.
getStatus
()
!=
null
?
act
.
getStatus
()
:
""
);
formUrl
.
append
(
"&id="
).
append
(
act
.
getBusinessId
()
!=
null
?
act
.
getBusinessId
()
:
""
);
return
formUrl
.
toString
();
}
/**
* 转换流程节点类型为中文说明
* @param type 英文名称
* @return 翻译后的中文名称
*/
public
static
String
parseToZhType
(
String
type
)
{
Map
<
String
,
String
>
types
=
new
HashMap
<
String
,
String
>();
types
.
put
(
"userTask"
,
"用户任务"
);
types
.
put
(
"serviceTask"
,
"系统任务"
);
types
.
put
(
"startEvent"
,
"开始节点"
);
types
.
put
(
"endEvent"
,
"结束节点"
);
types
.
put
(
"exclusiveGateway"
,
"条件判断节点(系统自动根据条件处理)"
);
types
.
put
(
"inclusiveGateway"
,
"并行处理任务"
);
types
.
put
(
"callActivity"
,
"子流程"
);
return
types
.
get
(
type
)
==
null
?
type
:
types
.
get
(
type
);
}
public
static
UserEntity
toActivitiUser
(
User
user
){
if
(
user
==
null
){
return
null
;
}
UserEntity
userEntity
=
new
UserEntity
();
userEntity
.
setId
(
user
.
getLoginName
());
userEntity
.
setFirstName
(
user
.
getName
());
userEntity
.
setLastName
(
StringUtils
.
EMPTY
);
userEntity
.
setPassword
(
user
.
getPassword
());
userEntity
.
setEmail
(
user
.
getEmail
());
userEntity
.
setRevision
(
1
);
return
userEntity
;
}
public
static
GroupEntity
toActivitiGroup
(
Role
role
){
if
(
role
==
null
){
return
null
;
}
GroupEntity
groupEntity
=
new
GroupEntity
();
groupEntity
.
setId
(
role
.
getEnname
());
groupEntity
.
setName
(
role
.
getName
());
groupEntity
.
setType
(
role
.
getRoleType
());
groupEntity
.
setRevision
(
1
);
return
groupEntity
;
}
/*public static void main(String[] args) {
User user = new User();
System.out.println(getMobileEntity(user, "@"));
}*/
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/utils/DateConverter.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.utils
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
org.apache.commons.beanutils.Converter
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* 日期转换类
* @author JeeSpring
* @version 2013-11-03
*/
public
class
DateConverter
implements
Converter
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
DateConverter
.
class
);
private
static
final
String
DATETIME_PATTERN
=
"yyyy-MM-dd HH:mm:ss"
;
private
static
final
String
DATETIME_PATTERN_NO_SECOND
=
"yyyy-MM-dd HH:mm"
;
private
static
final
String
DATE_PATTERN
=
"yyyy-MM-dd"
;
private
static
final
String
MONTH_PATTERN
=
"yyyy-MM"
;
@Override
@SuppressWarnings
({
"rawtypes"
,
"unchecked"
})
public
Object
convert
(
Class
type
,
Object
value
)
{
Object
result
=
null
;
if
(
type
==
Date
.
class
)
{
try
{
result
=
doConvertToDate
(
value
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
}
else
if
(
type
==
String
.
class
)
{
result
=
doConvertToString
(
value
);
}
return
result
;
}
/**
* Convert String to Date
*
* @param value
* @return
* @throws ParseException
*/
private
Date
doConvertToDate
(
Object
value
)
throws
ParseException
{
Date
result
=
null
;
if
(
value
instanceof
String
)
{
result
=
DateUtils
.
parseDate
((
String
)
value
,
new
String
[]
{
DATE_PATTERN
,
DATETIME_PATTERN
,
DATETIME_PATTERN_NO_SECOND
,
MONTH_PATTERN
});
// all patterns failed, try a milliseconds constructor
if
(
result
==
null
&&
StringUtils
.
isNotEmpty
((
String
)
value
))
{
try
{
result
=
new
Date
(
new
Long
((
String
)
value
).
longValue
());
}
catch
(
Exception
e
)
{
logger
.
error
(
"Converting from milliseconds to Date fails!"
);
e
.
printStackTrace
();
}
}
}
else
if
(
value
instanceof
Object
[])
{
// let's try to convert the first element only
Object
[]
array
=
(
Object
[])
value
;
if
(
array
.
length
>=
1
)
{
value
=
array
[
0
];
result
=
doConvertToDate
(
value
);
}
}
else
if
(
Date
.
class
.
isAssignableFrom
(
value
.
getClass
()))
{
result
=
(
Date
)
value
;
}
return
result
;
}
/**
* Convert Date to String
*
* @param value
* @return
*/
private
String
doConvertToString
(
Object
value
)
{
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
DATETIME_PATTERN
);
String
result
=
null
;
if
(
value
instanceof
Date
)
{
result
=
simpleDateFormat
.
format
(
value
);
}
return
result
;
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/utils/ProcessDefCache.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.utils
;
import
java.util.List
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
import
org.activiti.engine.impl.pvm.process.ActivityImpl
;
import
org.activiti.engine.repository.ProcessDefinition
;
import
org.apache.commons.lang3.ObjectUtils
;
import
com.jeespring.common.utils.CacheUtils
;
import
com.jeespring.common.utils.SpringContextHolder
;
/**
* 流程定义缓存
* @author JeeSpring
* @version 2013-12-05
*/
public
class
ProcessDefCache
{
private
static
final
String
ACT_CACHE
=
"actCache"
;
private
static
final
String
ACT_CACHE_PD_ID_
=
"pd_id_"
;
/**
* 获得流程定义对象
* @param procDefId
* @return
*/
public
static
ProcessDefinition
get
(
String
procDefId
)
{
ProcessDefinition
pd
=
(
ProcessDefinition
)
CacheUtils
.
get
(
ACT_CACHE
,
ACT_CACHE_PD_ID_
+
procDefId
);
if
(
pd
==
null
)
{
RepositoryService
repositoryService
=
SpringContextHolder
.
getBean
(
RepositoryService
.
class
);
// pd = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(pd);
pd
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionId
(
procDefId
).
singleResult
();
if
(
pd
!=
null
)
{
CacheUtils
.
put
(
ACT_CACHE
,
ACT_CACHE_PD_ID_
+
procDefId
,
pd
);
}
}
return
pd
;
}
/**
* 获得流程定义的所有活动节点
* @param procDefId
* @return
*/
public
static
List
<
ActivityImpl
>
getActivitys
(
String
procDefId
)
{
ProcessDefinition
pd
=
get
(
procDefId
);
if
(
pd
!=
null
)
{
return
((
ProcessDefinitionEntity
)
pd
).
getActivities
();
}
return
null
;
}
/**
* 获得流程定义活动节点
* @param procDefId
* @param activityId
* @return
*/
public
static
ActivityImpl
getActivity
(
String
procDefId
,
String
activityId
)
{
ProcessDefinition
pd
=
get
(
procDefId
);
if
(
pd
!=
null
)
{
List
<
ActivityImpl
>
list
=
getActivitys
(
procDefId
);
if
(
list
!=
null
){
for
(
ActivityImpl
activityImpl
:
list
)
{
if
(
activityId
.
equals
(
activityImpl
.
getId
())){
return
activityImpl
;
}
}
}
}
return
null
;
}
/**
* 获取流程定义活动节点名称
* @param procDefId
* @param activityId
* @return
*/
@SuppressWarnings
(
"deprecation"
)
public
static
String
getActivityName
(
String
procDefId
,
String
activityId
)
{
ActivityImpl
activity
=
getActivity
(
procDefId
,
activityId
);
if
(
activity
!=
null
)
{
return
ObjectUtils
.
toString
(
activity
.
getProperty
(
"name"
));
}
return
null
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/utils/ProcessDefUtils.java
0 → 100644
View file @
05beecd0
package
com.jeespring.modules.act.utils
;
import
java.util.LinkedHashSet
;
import
java.util.Set
;
import
org.activiti.engine.ProcessEngine
;
import
org.activiti.engine.delegate.Expression
;
import
org.activiti.engine.impl.RepositoryServiceImpl
;
import
org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior
;
import
org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
;
import
org.activiti.engine.impl.el.FixedValue
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
import
org.activiti.engine.impl.pvm.process.ActivityImpl
;
import
org.activiti.engine.impl.task.TaskDefinition
;
import
org.apache.commons.lang3.reflect.FieldUtils
;
import
org.apache.log4j.Logger
;
/**
* 流程定义相关操作的封装
* @author bluejoe2008@gmail.com
*/
public
abstract
class
ProcessDefUtils
{
public
static
ActivityImpl
getActivity
(
ProcessEngine
processEngine
,
String
processDefId
,
String
activityId
)
{
ProcessDefinitionEntity
pde
=
getProcessDefinition
(
processEngine
,
processDefId
);
return
(
ActivityImpl
)
pde
.
findActivity
(
activityId
);
}
public
static
ProcessDefinitionEntity
getProcessDefinition
(
ProcessEngine
processEngine
,
String
processDefId
)
{
return
(
ProcessDefinitionEntity
)
((
RepositoryServiceImpl
)
processEngine
.
getRepositoryService
()).
getDeployedProcessDefinition
(
processDefId
);
}
public
static
void
grantPermission
(
ActivityImpl
activity
,
String
assigneeExpression
,
String
candidateGroupIdExpressions
,
String
candidateUserIdExpressions
)
throws
Exception
{
TaskDefinition
taskDefinition
=
((
UserTaskActivityBehavior
)
activity
.
getActivityBehavior
()).
getTaskDefinition
();
taskDefinition
.
setAssigneeExpression
(
assigneeExpression
==
null
?
null
:
new
FixedValue
(
assigneeExpression
));
FieldUtils
.
writeField
(
taskDefinition
,
"candidateUserIdExpressions"
,
ExpressionUtils
.
stringToExpressionSet
(
candidateUserIdExpressions
),
true
);
FieldUtils
.
writeField
(
taskDefinition
,
"candidateGroupIdExpressions"
,
ExpressionUtils
.
stringToExpressionSet
(
candidateGroupIdExpressions
),
true
);
Logger
.
getLogger
(
ProcessDefUtils
.
class
).
info
(
String
.
format
(
"granting previledges for [%s, %s, %s] on [%s, %s]"
,
assigneeExpression
,
candidateGroupIdExpressions
,
candidateUserIdExpressions
,
activity
.
getProcessDefinition
().
getKey
(),
activity
.
getProperty
(
"name"
)));
}
/**
* 实现常见类型的expression的包装和转换
*
* @author bluejoe2008@gmail.com
*
*/
public
static
class
ExpressionUtils
{
public
static
Expression
stringToExpression
(
ProcessEngineConfigurationImpl
conf
,
String
expr
)
{
return
conf
.
getExpressionManager
().
createExpression
(
expr
);
}
public
static
Expression
stringToExpression
(
String
expr
)
{
return
new
FixedValue
(
expr
);
}
public
static
Set
<
Expression
>
stringToExpressionSet
(
String
exprs
)
{
Set
<
Expression
>
set
=
new
LinkedHashSet
<
Expression
>();
for
(
String
expr
:
exprs
.
split
(
";"
))
{
set
.
add
(
stringToExpression
(
expr
));
}
return
set
;
}
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/utils/PropertyType.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.utils
;
import
java.util.Date
;
/**
* 属性数据类型
* @author JeeSpring
* @version 2013-11-03
*/
public
enum
PropertyType
{
S
(
String
.
class
),
I
(
Integer
.
class
),
L
(
Long
.
class
),
F
(
Float
.
class
),
N
(
Double
.
class
),
D
(
Date
.
class
),
SD
(
java
.
sql
.
Date
.
class
),
B
(
Boolean
.
class
);
private
Class
<?>
clazz
;
private
PropertyType
(
Class
<?>
clazz
)
{
this
.
clazz
=
clazz
;
}
public
Class
<?>
getValue
()
{
return
clazz
;
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/utils/Variable.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.utils
;
import
java.util.Map
;
import
org.apache.commons.beanutils.ConvertUtils
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.google.common.collect.Maps
;
import
com.jeespring.common.utils.StringUtils
;
/**
* 流程变量对象
* @author JeeSpring
* @version 2013-11-03
*/
public
class
Variable
{
private
Map
<
String
,
Object
>
map
=
Maps
.
newHashMap
();
private
String
keys
;
private
String
values
;
private
String
types
;
public
Variable
(){
}
public
Variable
(
Map
<
String
,
Object
>
map
){
this
.
map
=
map
;
}
public
String
getKeys
()
{
return
keys
;
}
public
void
setKeys
(
String
keys
)
{
this
.
keys
=
keys
;
}
public
String
getValues
()
{
return
values
;
}
public
void
setValues
(
String
values
)
{
this
.
values
=
values
;
}
public
String
getTypes
()
{
return
types
;
}
public
void
setTypes
(
String
types
)
{
this
.
types
=
types
;
}
@JsonIgnore
public
Map
<
String
,
Object
>
getVariableMap
()
{
ConvertUtils
.
register
(
new
DateConverter
(),
java
.
util
.
Date
.
class
);
if
(
StringUtils
.
isBlank
(
keys
))
{
return
map
;
}
String
[]
arrayKey
=
keys
.
split
(
","
);
String
[]
arrayValue
=
values
.
split
(
","
);
String
[]
arrayType
=
types
.
split
(
","
);
for
(
int
i
=
0
;
i
<
arrayKey
.
length
;
i
++)
{
String
key
=
arrayKey
[
i
];
String
value
=
arrayValue
[
i
];
String
type
=
arrayType
[
i
];
Class
<?>
targetType
=
Enum
.
valueOf
(
PropertyType
.
class
,
type
).
getValue
();
Object
objectValue
=
ConvertUtils
.
convert
(
value
,
targetType
);
map
.
put
(
key
,
objectValue
);
}
return
map
;
}
public
Map
<
String
,
Object
>
getMap
()
{
return
map
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/web/ActModelController.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.web
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.servlet.mvc.support.RedirectAttributes
;
import
com.jeespring.common.persistence.Page
;
import
com.jeespring.common.web.AbstractBaseController
;
import
com.jeespring.modules.act.service.ActModelService
;
/**
* 流程模型相关Controller
* @author JeeSpring
* @version 2013-11-03
*/
@Controller
@RequestMapping
(
value
=
"${adminPath}/act/model"
)
public
class
ActModelController
extends
AbstractBaseController
{
@Autowired
private
ActModelService
actModelService
;
/**
* 流程模型列表
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
{
"list"
,
""
})
public
String
modelList
(
String
category
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
org
.
activiti
.
engine
.
repository
.
Model
>
page
=
actModelService
.
modelList
(
new
Page
<
org
.
activiti
.
engine
.
repository
.
Model
>(
request
,
response
),
category
);
model
.
addAttribute
(
"page"
,
page
);
model
.
addAttribute
(
"category"
,
category
);
return
"modules/act/actModelList"
;
}
/**
* 创建模型
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
"create"
,
method
=
RequestMethod
.
GET
)
public
String
create
(
Model
model
)
{
return
"modules/act/actModelCreate"
;
}
/**
* 创建模型
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
"create"
,
method
=
RequestMethod
.
POST
)
public
void
create
(
String
name
,
String
key
,
String
description
,
String
category
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
try
{
org
.
activiti
.
engine
.
repository
.
Model
modelData
=
actModelService
.
create
(
name
,
key
,
description
,
category
);
response
.
sendRedirect
(
request
.
getContextPath
()
+
"/act/process-editor/modeler.jsp?modelId="
+
modelData
.
getId
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"创建模型失败:"
,
e
);
}
}
/**
* 根据Model部署流程
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
"deploy"
)
public
String
deploy
(
String
id
,
RedirectAttributes
redirectAttributes
)
{
String
message
=
actModelService
.
deploy
(
id
);
redirectAttributes
.
addFlashAttribute
(
"message"
,
message
);
return
"redirect:"
+
adminPath
+
"/act/process"
;
}
/**
* 导出model的xml文件
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
"export"
)
public
void
export
(
String
id
,
HttpServletResponse
response
)
{
actModelService
.
export
(
id
,
response
);
}
/**
* 更新Model分类
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
"updateCategory"
)
public
String
updateCategory
(
String
id
,
String
category
,
RedirectAttributes
redirectAttributes
)
{
actModelService
.
updateCategory
(
id
,
category
);
redirectAttributes
.
addFlashAttribute
(
"message"
,
"设置成功,模块ID="
+
id
);
return
"redirect:"
+
adminPath
+
"/act/model"
;
}
/**
* 删除Model
* @param id
* @param redirectAttributes
* @return
*/
@RequiresPermissions
(
"act:model:edit"
)
@RequestMapping
(
value
=
"delete"
)
public
String
delete
(
String
id
,
RedirectAttributes
redirectAttributes
)
{
actModelService
.
delete
(
id
);
redirectAttributes
.
addFlashAttribute
(
"message"
,
"删除成功,模型ID="
+
id
);
return
"redirect:"
+
adminPath
+
"/act/model"
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/web/ActProcessController.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.web
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.UnsupportedEncodingException
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.xml.stream.XMLStreamException
;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.servlet.mvc.support.RedirectAttributes
;
import
com.jeespring.common.persistence.Page
;
import
com.jeespring.common.utils.StringUtils
;
import
com.jeespring.common.web.AbstractBaseController
;
import
com.jeespring.modules.act.service.ActProcessService
;
/**
* 流程定义相关Controller
* @author JeeSpring
* @version 2013-11-03
*/
@Controller
@RequestMapping
(
value
=
"${adminPath}/act/process"
)
public
class
ActProcessController
extends
AbstractBaseController
{
@Autowired
private
ActProcessService
actProcessService
;
/**
* 流程定义列表
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
{
"list"
,
""
})
public
String
processList
(
String
category
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
/*
* 保存两个对象,一个是ProcessDefinition(流程定义),一个是Deployment(流程部署)
*/
Page
<
Object
[]>
page
=
actProcessService
.
processList
(
new
Page
<
Object
[]>(
request
,
response
),
category
);
model
.
addAttribute
(
"page"
,
page
);
model
.
addAttribute
(
"category"
,
category
);
return
"modules/act/actProcessList"
;
}
/**
* 运行中的实例列表
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"running"
)
public
String
runningList
(
String
procInsId
,
String
procDefKey
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
ProcessInstance
>
page
=
actProcessService
.
runningList
(
new
Page
<
ProcessInstance
>(
request
,
response
),
procInsId
,
procDefKey
);
model
.
addAttribute
(
"page"
,
page
);
model
.
addAttribute
(
"procInsId"
,
procInsId
);
model
.
addAttribute
(
"procDefKey"
,
procDefKey
);
return
"modules/act/actProcessRunningList"
;
}
/**
* 读取资源,通过部署ID
* @param processDefinitionId 流程定义ID
* @param processInstanceId 流程实例ID
* @param resourceType 资源类型(xml|image)
* @param response
* @throws Exception
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"resource/read"
)
public
void
resourceRead
(
String
procDefId
,
String
proInsId
,
String
resType
,
HttpServletResponse
response
)
throws
Exception
{
InputStream
resourceAsStream
=
actProcessService
.
resourceRead
(
procDefId
,
proInsId
,
resType
);
byte
[]
b
=
new
byte
[
1024
];
int
len
=
-
1
;
while
((
len
=
resourceAsStream
.
read
(
b
,
0
,
1024
))
!=
-
1
)
{
response
.
getOutputStream
().
write
(
b
,
0
,
len
);
}
}
/**
* 部署流程
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"/deploy"
,
method
=
RequestMethod
.
GET
)
public
String
deploy
(
Model
model
)
{
return
"modules/act/actProcessDeploy"
;
}
/**
* 部署流程 - 保存
* @param file
* @return
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"/deploy"
,
method
=
RequestMethod
.
POST
)
public
String
deploy
(
@Value
(
"#{APP_PROP['activiti.export.diagram.path']}"
)
String
exportDir
,
String
category
,
MultipartFile
file
,
RedirectAttributes
redirectAttributes
)
{
String
fileName
=
file
.
getOriginalFilename
();
if
(
StringUtils
.
isBlank
(
fileName
)){
redirectAttributes
.
addFlashAttribute
(
"message"
,
"请选择要部署的流程文件"
);
}
else
{
String
message
=
actProcessService
.
deploy
(
exportDir
,
category
,
file
);
redirectAttributes
.
addFlashAttribute
(
"message"
,
message
);
}
return
"redirect:"
+
adminPath
+
"/act/process"
;
}
/**
* 设置流程分类
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"updateCategory"
)
public
String
updateCategory
(
String
procDefId
,
String
category
,
RedirectAttributes
redirectAttributes
)
{
actProcessService
.
updateCategory
(
procDefId
,
category
);
return
"redirect:"
+
adminPath
+
"/act/process"
;
}
/**
* 挂起、激活流程实例
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"update/{state}"
)
public
String
updateState
(
@PathVariable
(
"state"
)
String
state
,
String
procDefId
,
RedirectAttributes
redirectAttributes
)
{
String
message
=
actProcessService
.
updateState
(
state
,
procDefId
);
redirectAttributes
.
addFlashAttribute
(
"message"
,
message
);
return
"redirect:"
+
adminPath
+
"/act/process"
;
}
/**
* 将部署的流程转换为模型
* @param procDefId
* @param redirectAttributes
* @return
* @throws UnsupportedEncodingException
* @throws XMLStreamException
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"convert/toModel"
)
public
String
convertToModel
(
String
procDefId
,
RedirectAttributes
redirectAttributes
)
throws
UnsupportedEncodingException
,
XMLStreamException
{
org
.
activiti
.
engine
.
repository
.
Model
modelData
=
actProcessService
.
convertToModel
(
procDefId
);
redirectAttributes
.
addFlashAttribute
(
"message"
,
"转换模型成功,模型ID="
+
modelData
.
getId
());
return
"redirect:"
+
adminPath
+
"/act/model"
;
}
/**
* 导出图片文件到硬盘
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"export/diagrams"
)
@ResponseBody
public
List
<
String
>
exportDiagrams
(
@Value
(
"#{APP_PROP['activiti.export.diagram.path']}"
)
String
exportDir
)
throws
IOException
{
List
<
String
>
files
=
actProcessService
.
exportDiagrams
(
exportDir
);;
return
files
;
}
/**
* 删除部署的流程,级联删除流程实例
* @param deploymentId 流程部署ID
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"delete"
)
public
String
delete
(
String
deploymentId
)
{
actProcessService
.
deleteDeployment
(
deploymentId
);
return
"redirect:"
+
adminPath
+
"/act/process"
;
}
/**
* 删除流程实例
* @param procInsId 流程实例ID
* @param reason 删除原因
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"deleteProcIns"
)
public
String
deleteProcIns
(
String
procInsId
,
String
reason
,
RedirectAttributes
redirectAttributes
)
{
if
(
StringUtils
.
isBlank
(
reason
)){
addMessage
(
redirectAttributes
,
"请填写删除原因"
);
}
else
{
actProcessService
.
deleteProcIns
(
procInsId
,
reason
);
addMessage
(
redirectAttributes
,
"删除流程实例成功,实例ID="
+
procInsId
);
}
return
"redirect:"
+
adminPath
+
"/act/process/running/"
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/act/web/ActTaskController.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.act.web
;
import
java.io.InputStream
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.mvc.support.RedirectAttributes
;
import
com.jeespring.common.persistence.Page
;
import
com.jeespring.common.web.AbstractBaseController
;
import
com.jeespring.modules.act.entity.Act
;
import
com.jeespring.modules.act.service.ActTaskService
;
import
com.jeespring.modules.act.utils.ActUtils
;
import
com.jeespring.modules.sys.utils.UserUtils
;
/**
* 流程个人任务相关Controller
* @author JeeSpring
* @version 2013-11-03
*/
@Controller
@RequestMapping
(
value
=
"${adminPath}/act/task"
)
public
class
ActTaskController
extends
AbstractBaseController
{
@Autowired
private
ActTaskService
actTaskService
;
/**
* 获取待办列表
* @param act procDefKey 流程定义标识
* @return
*/
@RequestMapping
(
value
=
{
"todo"
,
""
})
public
String
todoList
(
Act
act
,
HttpServletResponse
response
,
Model
model
)
throws
Exception
{
List
<
Act
>
list
=
actTaskService
.
todoList
(
act
);
model
.
addAttribute
(
"list"
,
list
);
if
(
UserUtils
.
getPrincipal
().
isMobileLogin
()){
return
renderString
(
response
,
list
);
}
return
"modules/act/actTaskTodoList"
;
}
/**
* 获取已办任务
* @param act page
* @param act procDefKey 流程定义标识
* @return
*/
@RequestMapping
(
value
=
"historic"
)
public
String
historicList
(
Act
act
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
throws
Exception
{
Page
<
Act
>
page
=
new
Page
<
Act
>(
request
,
response
);
page
=
actTaskService
.
historicList
(
page
,
act
);
model
.
addAttribute
(
"page"
,
page
);
if
(
UserUtils
.
getPrincipal
().
isMobileLogin
()){
return
renderString
(
response
,
page
);
}
return
"modules/act/actTaskHistoricList"
;
}
/**
* 获取流转历史列表
* @param act procInsId 流程实例
* @param startAct 开始活动节点名称
* @param endAct 结束活动节点名称
*/
@RequestMapping
(
value
=
"histoicFlow"
)
public
String
histoicFlow
(
Act
act
,
String
startAct
,
String
endAct
,
Model
model
){
if
(
StringUtils
.
isNotBlank
(
act
.
getProcInsId
())){
List
<
Act
>
histoicFlowList
=
actTaskService
.
histoicFlowList
(
act
.
getProcInsId
(),
startAct
,
endAct
);
model
.
addAttribute
(
"histoicFlowList"
,
histoicFlowList
);
}
return
"modules/act/actTaskHistoricFlow"
;
}
/**
* 获取流程列表
* @param category 流程分类
*/
@RequestMapping
(
value
=
"process"
)
public
String
processList
(
String
category
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
Object
[]>
page
=
new
Page
<
Object
[]>(
request
,
response
);
page
=
actTaskService
.
processList
(
page
,
category
);
model
.
addAttribute
(
"page"
,
page
);
model
.
addAttribute
(
"category"
,
category
);
return
"modules/act/actTaskProcessList"
;
}
/**
* 获取流程表单
* @param act taskId 任务ID
* @param act taskName 任务名称
* @param act taskDefKey 任务环节标识
* @param act procInsId 流程实例ID
* @param act procDefId 流程定义ID
*/
@RequestMapping
(
value
=
"form"
)
public
String
form
(
Act
act
,
HttpServletRequest
request
,
Model
model
){
// 获取流程XML上的表单KEY
String
formKey
=
actTaskService
.
getFormKey
(
act
.
getProcDefId
(),
act
.
getTaskDefKey
());
// 获取流程实例对象
if
(
act
.
getProcInsId
()
!=
null
){
act
.
setProcIns
(
actTaskService
.
getProcIns
(
act
.
getProcInsId
()));
}
return
"redirect:"
+
ActUtils
.
getFormUrl
(
formKey
,
act
);
// // 传递参数到视图
// model.addAttribute("act", act);
// model.addAttribute("formUrl", formUrl);
// return "modules/act/actTaskForm";
}
/**
* 启动流程
* @param act procDefKey 流程定义KEY
* @param act businessTable 业务表表名
* @param act businessId 业务表编号
*/
@RequestMapping
(
value
=
"start"
)
@ResponseBody
public
String
start
(
Act
act
,
String
table
,
String
id
,
Model
model
)
throws
Exception
{
actTaskService
.
startProcess
(
act
.
getProcDefKey
(),
act
.
getBusinessId
(),
act
.
getBusinessTable
(),
act
.
getTitle
());
return
"true"
;
//adminPath + "/act/task";
}
/**
* 签收任务
* @param act taskId 任务ID
*/
@RequestMapping
(
value
=
"claim"
)
@ResponseBody
public
String
claim
(
Act
act
)
{
String
userId
=
UserUtils
.
getUser
().
getLoginName
();
//ObjectUtils.toString(UserUtils.getUser().getId());
actTaskService
.
claim
(
act
.
getTaskId
(),
userId
);
return
"true"
;
//adminPath + "/act/task";
}
/**
* 完成任务
* @param act taskId 任务ID
* @param act procInsId 流程实例ID,如果为空,则不保存任务提交意见
* @param act comment 任务提交意见的内容
* @param act vars 任务流程变量,如下
* vars.keys=flag,pass
* vars.values=1,true
* vars.types=S,B @see com.thinkgem.jeesite.modules.act.utils.PropertyType
*/
@RequestMapping
(
value
=
"complete"
)
@ResponseBody
public
String
complete
(
Act
act
)
{
actTaskService
.
complete
(
act
.
getTaskId
(),
act
.
getProcInsId
(),
act
.
getComment
(),
act
.
getVars
().
getVariableMap
());
return
"true"
;
//adminPath + "/act/task";
}
/**
* 读取带跟踪的图片
*/
@RequestMapping
(
value
=
"trace/photo/{procDefId}/{execId}"
)
public
void
tracePhoto
(
@PathVariable
(
"procDefId"
)
String
procDefId
,
@PathVariable
(
"execId"
)
String
execId
,
HttpServletResponse
response
)
throws
Exception
{
InputStream
imageStream
=
actTaskService
.
tracePhoto
(
procDefId
,
execId
);
// 输出资源内容到相应对象
byte
[]
b
=
new
byte
[
1024
];
int
len
;
while
((
len
=
imageStream
.
read
(
b
,
0
,
1024
))
!=
-
1
)
{
response
.
getOutputStream
().
write
(
b
,
0
,
len
);
}
}
/**
* 输出跟踪流程信息
*
* @param proInsId
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping
(
value
=
"trace/info/{proInsId}"
)
public
List
<
Map
<
String
,
Object
>>
traceInfo
(
@PathVariable
(
"proInsId"
)
String
proInsId
)
throws
Exception
{
List
<
Map
<
String
,
Object
>>
activityInfos
=
actTaskService
.
traceProcess
(
proInsId
);
return
activityInfos
;
}
/**
* 显示流程图
@RequestMapping(value = "processPic")
public void processPic(String procDefId, HttpServletResponse response) throws Exception {
ProcessDefinition procDef = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult();
String diagramResourceName = procDef.getDiagramResourceName();
InputStream imageStream = repositoryService.getResourceAsStream(procDef.getDeploymentId(), diagramResourceName);
byte[] b = new byte[1024];
int len = -1;
while ((len = imageStream.read(b, 0, 1024)) != -1) {
response.getOutputStream().write(b, 0, len);
}
}*/
/**
* 获取跟踪信息
@RequestMapping(value = "processMap")
public String processMap(String procDefId, String proInstId, Model model)
throws Exception {
List<ActivityImpl> actImpls = new ArrayList<ActivityImpl>();
ProcessDefinition processDefinition = repositoryService
.createProcessDefinitionQuery().processDefinitionId(procDefId)
.singleResult();
ProcessDefinitionImpl pdImpl = (ProcessDefinitionImpl) processDefinition;
String processDefinitionId = pdImpl.getId();// 流程标识
ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(processDefinitionId);
List<ActivityImpl> activitiList = def.getActivities();// 获得当前任务的所有节点
List<String> activeActivityIds = runtimeService.getActiveActivityIds(proInstId);
for (String activeId : activeActivityIds) {
for (ActivityImpl activityImpl : activitiList) {
String id = activityImpl.getId();
if (activityImpl.isScope()) {
if (activityImpl.getActivities().size() > 1) {
List<ActivityImpl> subAcList = activityImpl
.getActivities();
for (ActivityImpl subActImpl : subAcList) {
String subid = subActImpl.getId();
System.out.println("subImpl:" + subid);
if (activeId.equals(subid)) {// 获得执行到那个节点
actImpls.add(subActImpl);
break;
}
}
}
}
if (activeId.equals(id)) {// 获得执行到那个节点
actImpls.add(activityImpl);
System.out.println(id);
}
}
}
model.addAttribute("procDefId", procDefId);
model.addAttribute("proInstId", proInstId);
model.addAttribute("actImpls", actImpls);
return "modules/act/actTaskMap";
}*/
/**
* 删除任务
* @param taskId 流程实例ID
* @param reason 删除原因
*/
@RequiresPermissions
(
"act:process:edit"
)
@RequestMapping
(
value
=
"deleteTask"
)
public
String
deleteTask
(
String
taskId
,
String
reason
,
RedirectAttributes
redirectAttributes
)
{
if
(
StringUtils
.
isBlank
(
reason
)){
addMessage
(
redirectAttributes
,
"请填写删除原因"
);
}
else
{
actTaskService
.
deleteTask
(
taskId
,
reason
);
addMessage
(
redirectAttributes
,
"删除任务成功,任务ID="
+
taskId
);
}
return
"redirect:"
+
adminPath
+
"/act/task"
;
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/aop/AOPService.java
0 → 100644
View file @
05beecd0
package
com.jeespring.modules.aop
;
import
com.jeespring.common.utils.SendMailUtil
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.annotation.*
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* JeeSpring AOP
* @author 黄炳桂 516821420@qq.com
* @version v.0.1
* @date 2016年8月23日
*/
@Aspect
@Component
public
class
AOPService
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AOPService
.
class
);
private
static
final
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
// defined aop pointcut
//@Pointcut("execution(* com.company.project.modules.*.*(..))")
//@Pointcut("execution(* com.company.project.modules..*.*(..))")
/*任意公共方法的执行:
execution(public * *(..))
任何一个以“set”开始的方法的执行:
execution(* set*(..))
AccountService 接口的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
定义在service包里的任意方法的执行:
execution(* com.xyz.service.*.*(..))
定义在service包和所有子包里的任意类的任意方法的执行:
execution(* com.xyz.service..*.*(..))
定义在pointcutexp包和所有子包里的JoinPointObjP2类的任意方法的执行:
execution(* com.test.spring.aop.pointcutexp..JoinPointObjP2.*(..))
最靠近(..)的为方法名,靠近.*(..))的为类名或者接口名,如上例的JoinPointObjP2.*(..))*/
@Pointcut
(
"execution(* com.company.project.modules.*.*.*.*(..))"
)
public
void
controllerLog
()
{
}
// log all of controller
@Before
(
"controllerLog()"
)
public
void
before
(
JoinPoint
joinPoint
)
{
//System.out.println("AOP Before:"+joinPoint.getSignature().getDeclaringType() + ",method:" + joinPoint.getSignature().getName()
//+ ",params:" + Arrays.asList(joinPoint.getArgs()));
logger
.
debug
(
dateFormat
.
format
(
new
Date
())
+
" | "
+
"AOP Before:"
+
joinPoint
.
getSignature
().
getDeclaringType
()
+
",method:"
+
joinPoint
.
getSignature
().
getName
());
/*Email email=new Email();
email.setToMailAddr("516821420@qq.com");
email.setSubject("JeeSpring");
email.setMessage("JeeSpring AOP!");
SendMailUtil.sendCommonMail(email.getToMailAddr(),email.getSubject(),email.getMessage());*/
}
/*@Around("controllerLog()")
public void around(ProceedingJoinPoint pjp) throws Throwable{
pjp.proceed();
}*/
// result of return
@AfterReturning
(
pointcut
=
"controllerLog()"
,
returning
=
"retVal"
)
public
void
after
(
JoinPoint
joinPoint
,
Object
retVal
)
{
//System.out.println("AOP AfterReturning:"+retVal);
logger
.
debug
(
dateFormat
.
format
(
new
Date
())
+
" | "
+
"AOP AfterReturning:Object"
);
}
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/baiduface/rest/FaceRecognitionRestController.java
0 → 100644
View file @
05beecd0
package
com.jeespring.modules.baiduface.rest
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jeespring.common.utils.GsonUtils
;
import
com.jeespring.common.utils.HttpUtil
;
import
com.jeespring.common.web.AbstractBaseController
;
import
com.jeespring.common.web.Result
;
import
com.jeespring.common.web.ResultFactory
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 人脸识别Controller
* @author 唐继涛
* @version 2018-7-13
*/
@RestController
@RequestMapping
(
value
=
"/rest/face"
)
@Api
(
value
=
"face百度人脸识别API接口"
,
description
=
"face百度人脸识别API接口"
)
public
class
FaceRecognitionRestController
extends
AbstractBaseController
{
//设置APPID/AK/SK
public
static
final
String
APP_ID
=
"11483847"
;
public
static
final
String
API_KEY
=
"Hn5zrGgRe5WWiXV1GcWYirFT"
;
public
static
final
String
SECRET_KEY
=
"vlzV3XEvuc1zGa9cfi5PpdRuFlfz08gu"
;
public
String
id
=
null
;
@RequestMapping
(
value
=
{
"match"
},
method
=
{
RequestMethod
.
POST
})
@ApiOperation
(
value
=
"人脸对比(Content-Type为application/json)"
,
notes
=
"人脸对比(Content-Type为application/json)"
)
@ApiImplicitParam
(
name
=
"String"
,
value
=
"人脸对比"
,
dataType
=
"String"
)
public
String
match
(
@RequestBody
String
imgStr
)
{
// 请求url
String
url
=
"https://aip.baidubce.com/rest/2.0/face/v3/match"
;
//百度人脸对比的API
try
{
// String str = this.getUser(userId);
List
<
Map
<
String
,
Object
>>
images
=
new
ArrayList
<>();
Map
<
String
,
Object
>
map1
=
new
HashMap
<>();
map1
.
put
(
"image"
,
imgStr
);
map1
.
put
(
"image_type"
,
"BASE64"
);
map1
.
put
(
"face_type"
,
"LIVE"
);
map1
.
put
(
"quality_control"
,
"LOW"
);
map1
.
put
(
"liveness_control"
,
"NORMAL"
);
Map
<
String
,
Object
>
map2
=
new
HashMap
<>();
map2
.
put
(
"image"
,
imgStr
);
map2
.
put
(
"image_type"
,
"BASE64"
);
map2
.
put
(
"face_type"
,
"LIVE"
);
map2
.
put
(
"quality_control"
,
"LOW"
);
map2
.
put
(
"liveness_control"
,
"NORMAL"
);
images
.
add
(
map1
);
images
.
add
(
map2
);
String
param
=
GsonUtils
.
toJson
(
images
);
String
token
=
FaceRecognitionRestController
.
getAuth
();
String
result
=
HttpUtil
.
post
(
url
,
token
,
"application/json"
,
param
);
System
.
out
.
println
(
result
);
return
result
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
@RequestMapping
(
value
=
{
"search"
},
method
=
{
RequestMethod
.
POST
})
@ApiOperation
(
value
=
"人脸搜索(Content-Type为application/json)"
,
notes
=
"人脸搜索(Content-Type为application/json)"
)
@ApiImplicitParam
(
name
=
"String"
,
value
=
"人脸搜索"
,
dataType
=
"String"
)
public
Result
search
(
@RequestBody
String
imgStr
)
{
// 请求url
String
url
=
"https://aip.baidubce.com/rest/2.0/face/v3/search"
;
//百度人脸搜索的API
Result
result
=
ResultFactory
.
getSuccessResult
();
try
{
String
Str
=
this
.
GroupGetlist
();
//调用百度查询用户组的API接口,将查询返回的数据接收。
JSONObject
baiJsonObject
=
JSONObject
.
parseObject
(
Str
);
//将数据转换为json对象类型的数据。
String
str
=
baiJsonObject
.
getJSONObject
(
"result"
).
getString
(
"group_id_list"
).
replace
(
"\""
,
""
).
replace
(
"["
,
""
).
replace
(
"]"
,
""
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"image"
,
imgStr
);
map
.
put
(
"liveness_control"
,
"NORMAL"
);
map
.
put
(
"group_id_list"
,
str
);
map
.
put
(
"image_type"
,
"BASE64"
);
map
.
put
(
"quality_control"
,
"LOW"
);
String
param
=
GsonUtils
.
toJson
(
map
);
//调用百度的人脸检测API获取百度API返回的数据。
String
token
=
FaceRecognitionRestController
.
getAuth
();
String
baiDuResult
=
HttpUtil
.
post
(
url
,
token
,
"application/json"
,
param
);
JSONObject
returnResult
=
JSONObject
.
parseObject
(
baiDuResult
);
//将百度返回的数据转为json对象类型的数据。
String
user
=
returnResult
.
getJSONObject
(
"result"
).
getString
(
"user_list"
).
replace
(
"\""
,
""
).
replace
(
"["
,
""
)
.
replace
(
"]"
,
""
).
replace
(
"{"
,
""
).
replace
(
"}"
,
""
);
String
[]
userList
=
user
.
split
(
","
);
//根据逗号分隔用户信息。
JSONArray
jsonArray
=
(
JSONArray
)
JSONArray
.
toJSON
(
userList
);
//将字符串数组转为json 数组类型的。
String
[]
scoreList
=
((
String
)
jsonArray
.
get
(
0
)).
split
(
":"
);
//获取json数组第一条数据然后根据:分隔。
JSONArray
json
=
(
JSONArray
)
JSONArray
.
toJSON
(
scoreList
);
//获取百度返回user_list数据的score评分。
String
scoreString
=
String
.
valueOf
(
json
.
get
(
1
));
//将分数值转成string类型的。
Double
score
=
Double
.
parseDouble
(
scoreString
);
//将string类型的转换成double。
//判断分数值
if
(
score
>=
80
){
result
=
ResultFactory
.
getSuccessResult
(
"检测成功!"
);
}
else
{
result
=
ResultFactory
.
getErrorResult
(
"检测失败,请重新扫描!!"
);
}
return
result
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
@RequestMapping
(
value
=
{
"add"
},
method
=
{
RequestMethod
.
POST
})
@ApiOperation
(
value
=
"人脸注册(Content-Type为application/json)"
,
notes
=
"人脸注册(Content-Type为application/json)"
)
@ApiImplicitParam
(
name
=
"String"
,
value
=
"人脸注册"
,
dataType
=
"String"
)
public
Result
add
(
@RequestBody
String
imgStr
,
String
userId
)
{
// 请求url
String
url
=
"https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add"
;
//百度添加到人脸库的API
Result
result
=
ResultFactory
.
getSuccessResult
();
try
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"image"
,
imgStr
);
map
.
put
(
"group_id"
,
"测试人脸库"
);
map
.
put
(
"user_id"
,
11
);
map
.
put
(
"user_info"
,
"测试"
);
map
.
put
(
"liveness_control"
,
"NORMAL"
);
map
.
put
(
"image_type"
,
"BASE64"
);
map
.
put
(
"quality_control"
,
"NORMAL"
);
String
param
=
GsonUtils
.
toJson
(
map
);
String
token
=
FaceRecognitionRestController
.
getAuth
();
String
baiDuResult
=
HttpUtil
.
post
(
url
,
token
,
"application/json"
,
param
);
if
(
baiDuResult
.
contains
(
"SUCCESS"
))
{
result
=
ResultFactory
.
getSuccessResult
(
"注册成功!"
);
}
else
{
result
=
ResultFactory
.
getErrorResult
(
"注册失败!"
);
}
return
result
;
}
catch
(
Exception
e
)
{
logger
.
info
(
e
.
toString
());
}
return
null
;
}
/**
* 组列表查询
*/
private
String
GroupGetlist
()
{
// 请求url
String
url
=
"https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist"
;
try
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"start"
,
0
);
map
.
put
(
"length"
,
100
);
String
param
=
GsonUtils
.
toJson
(
map
);
String
token
=
FaceRecognitionRestController
.
getAuth
();
String
result
=
HttpUtil
.
post
(
url
,
token
,
"application/json"
,
param
);
return
result
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 获取API访问token
* 该token有一定的有效期,需要自行管理,当失效时需重新获取.
* @return assess_token 示例:
* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
*/
public
static
String
getAuth
()
{
// 获取token地址
String
authHost
=
"https://aip.baidubce.com/oauth/2.0/token?"
;
String
getAccessTokenUrl
=
authHost
// 1. grant_type为固定参数
+
"grant_type=client_credentials"
// 2. 官网获取的 API Key
+
"&client_id="
+
API_KEY
// 3. 官网获取的 Secret Key
+
"&client_secret="
+
SECRET_KEY
;
try
{
URL
realUrl
=
new
URL
(
getAccessTokenUrl
);
// 打开和URL之间的连接
HttpURLConnection
connection
=
(
HttpURLConnection
)
realUrl
.
openConnection
();
connection
.
setRequestMethod
(
"GET"
);
connection
.
connect
();
// 获取所有响应头字段
Map
<
String
,
List
<
String
>>
map
=
connection
.
getHeaderFields
();
// 遍历所有的响应头字段
for
(
String
key
:
map
.
keySet
())
{
System
.
err
.
println
(
key
+
"--->"
+
map
.
get
(
key
));
}
// 定义 BufferedReader输入流来读取URL的响应
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
connection
.
getInputStream
()));
String
result
=
""
;
String
line
;
while
((
line
=
in
.
readLine
())
!=
null
)
{
result
+=
line
;
}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
String
access_token
=
jsonObject
.
getString
(
"access_token"
);
System
.
out
.
print
(
access_token
);
return
access_token
;
}
catch
(
Exception
e
)
{
System
.
err
.
printf
(
"获取token失败!"
);
e
.
printStackTrace
(
System
.
err
);
}
return
null
;
}
/*public static void main(String[] args) {
// new FaceSpot().getAuth();
getAuth();
}*/
}
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/dao/ChinaWeatherDataBeanDao.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.echarts.dao
;
import
com.jeespring.common.persistence.InterfaceBaseDao
;
import
com.jeespring.modules.echarts.entity.ChinaWeatherDataBean
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 城市气温DAO接口
* @author lgf
* @version 2016-06-02
*/
@Mapper
public
interface
ChinaWeatherDataBeanDao
extends
InterfaceBaseDao
<
ChinaWeatherDataBean
>
{
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/dao/PieClassDao.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.echarts.dao
;
import
com.jeespring.common.persistence.InterfaceBaseDao
;
import
com.jeespring.modules.echarts.entity.PieClass
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 班级DAO接口
* @author lgf
* @version 2016-05-26
*/
@Mapper
public
interface
PieClassDao
extends
InterfaceBaseDao
<
PieClass
>
{
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/entity/ChinaWeatherDataBean.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.echarts.entity
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.jeespring.common.persistence.AbstractBaseEntity
;
import
com.jeespring.common.utils.excel.annotation.ExcelField
;
/**
* 城市气温Entity
* @author lgf
* @version 2016-06-02
*/
public
class
ChinaWeatherDataBean
extends
AbstractBaseEntity
<
ChinaWeatherDataBean
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
Date
datestr
;
// 日期
private
Double
beijingMaxTemp
;
// 北京最高气温
private
Double
beijingMinTemp
;
// 北京最低气温
private
Double
changchunMaxTemp
;
// 长春最高气温
private
Double
changchunMinTemp
;
// 长春最低气温
private
Double
shenyangMaxTemp
;
// 沈阳最高气温
private
Double
shenyangMinTemp
;
// 沈阳最低气温
private
Double
haerbinMaxTemp
;
// 哈尔滨最高气温
private
Double
haerbinMinTemp
;
// 哈尔滨最低气温
public
ChinaWeatherDataBean
()
{
super
();
}
public
ChinaWeatherDataBean
(
String
id
){
super
(
id
);
}
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@ExcelField
(
title
=
"日期"
,
align
=
2
,
sort
=
7
)
public
Date
getDatestr
()
{
return
datestr
;
}
public
void
setDatestr
(
Date
datestr
)
{
this
.
datestr
=
datestr
;
}
@ExcelField
(
title
=
"北京最高气温"
,
align
=
2
,
sort
=
8
)
public
Double
getBeijingMaxTemp
()
{
return
beijingMaxTemp
;
}
public
void
setBeijingMaxTemp
(
Double
beijingMaxTemp
)
{
this
.
beijingMaxTemp
=
beijingMaxTemp
;
}
@ExcelField
(
title
=
"北京最低气温"
,
align
=
2
,
sort
=
9
)
public
Double
getBeijingMinTemp
()
{
return
beijingMinTemp
;
}
public
void
setBeijingMinTemp
(
Double
beijingMinTemp
)
{
this
.
beijingMinTemp
=
beijingMinTemp
;
}
@ExcelField
(
title
=
"长春最高气温"
,
align
=
2
,
sort
=
10
)
public
Double
getChangchunMaxTemp
()
{
return
changchunMaxTemp
;
}
public
void
setChangchunMaxTemp
(
Double
changchunMaxTemp
)
{
this
.
changchunMaxTemp
=
changchunMaxTemp
;
}
@ExcelField
(
title
=
"长春最低气温"
,
align
=
2
,
sort
=
11
)
public
Double
getChangchunMinTemp
()
{
return
changchunMinTemp
;
}
public
void
setChangchunMinTemp
(
Double
changchunMinTemp
)
{
this
.
changchunMinTemp
=
changchunMinTemp
;
}
@ExcelField
(
title
=
"沈阳最高气温"
,
align
=
2
,
sort
=
12
)
public
Double
getShenyangMaxTemp
()
{
return
shenyangMaxTemp
;
}
public
void
setShenyangMaxTemp
(
Double
shenyangMaxTemp
)
{
this
.
shenyangMaxTemp
=
shenyangMaxTemp
;
}
@ExcelField
(
title
=
"沈阳最低气温"
,
align
=
2
,
sort
=
13
)
public
Double
getShenyangMinTemp
()
{
return
shenyangMinTemp
;
}
public
void
setShenyangMinTemp
(
Double
shenyangMinTemp
)
{
this
.
shenyangMinTemp
=
shenyangMinTemp
;
}
@ExcelField
(
title
=
"哈尔滨最高气温"
,
align
=
2
,
sort
=
14
)
public
Double
getHaerbinMaxTemp
()
{
return
haerbinMaxTemp
;
}
public
void
setHaerbinMaxTemp
(
Double
haerbinMaxTemp
)
{
this
.
haerbinMaxTemp
=
haerbinMaxTemp
;
}
@ExcelField
(
title
=
"哈尔滨最低气温"
,
align
=
2
,
sort
=
15
)
public
Double
getHaerbinMinTemp
()
{
return
haerbinMinTemp
;
}
public
void
setHaerbinMinTemp
(
Double
haerbinMinTemp
)
{
this
.
haerbinMinTemp
=
haerbinMinTemp
;
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/entity/PieClass.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.echarts.entity
;
import
org.hibernate.validator.constraints.Length
;
import
com.jeespring.common.persistence.AbstractBaseEntity
;
import
com.jeespring.common.utils.excel.annotation.ExcelField
;
/**
* 班级Entity
* @author lgf
* @version 2016-05-26
*/
public
class
PieClass
extends
AbstractBaseEntity
<
PieClass
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
className
;
// 班级
private
Integer
num
;
// 人数
public
PieClass
()
{
super
();
}
public
PieClass
(
String
id
){
super
(
id
);
}
@Length
(
min
=
0
,
max
=
64
,
message
=
"班级长度必须介于 0 和 64 之间"
)
@ExcelField
(
title
=
"班级"
,
align
=
2
,
sort
=
7
)
public
String
getClassName
()
{
return
className
;
}
public
void
setClassName
(
String
className
)
{
this
.
className
=
className
;
}
@ExcelField
(
title
=
"人数"
,
align
=
2
,
sort
=
8
)
public
Integer
getNum
()
{
return
num
;
}
public
void
setNum
(
Integer
num
)
{
this
.
num
=
num
;
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/service/ChinaWeatherDataBeanService.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.echarts.service
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.jeespring.common.persistence.Page
;
import
com.jeespring.common.service.AbstractBaseService
;
import
com.jeespring.modules.echarts.entity.ChinaWeatherDataBean
;
import
com.jeespring.modules.echarts.dao.ChinaWeatherDataBeanDao
;
/**
* 城市气温Service
* @author lgf
* @version 2016-06-02
*/
@Service
@Transactional
(
readOnly
=
true
)
public
class
ChinaWeatherDataBeanService
extends
AbstractBaseService
<
ChinaWeatherDataBeanDao
,
ChinaWeatherDataBean
>
{
@Override
public
ChinaWeatherDataBean
get
(
String
id
)
{
return
super
.
get
(
id
);
}
@Override
public
List
<
ChinaWeatherDataBean
>
findList
(
ChinaWeatherDataBean
chinaWeatherDataBean
)
{
return
super
.
findList
(
chinaWeatherDataBean
);
}
@Override
public
Page
<
ChinaWeatherDataBean
>
findPage
(
Page
<
ChinaWeatherDataBean
>
page
,
ChinaWeatherDataBean
chinaWeatherDataBean
)
{
return
super
.
findPage
(
page
,
chinaWeatherDataBean
);
}
@Override
@Transactional
(
readOnly
=
false
)
public
void
save
(
ChinaWeatherDataBean
chinaWeatherDataBean
)
{
super
.
save
(
chinaWeatherDataBean
);
}
@Override
@Transactional
(
readOnly
=
false
)
public
void
delete
(
ChinaWeatherDataBean
chinaWeatherDataBean
)
{
super
.
delete
(
chinaWeatherDataBean
);
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/service/PieClassService.java
0 → 100644
View file @
05beecd0
/**
* Copyright © 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package
com.jeespring.modules.echarts.service
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.jeespring.common.persistence.Page
;
import
com.jeespring.common.service.AbstractBaseService
;
import
com.jeespring.modules.echarts.entity.PieClass
;
import
com.jeespring.modules.echarts.dao.PieClassDao
;
/**
* 班级Service
* @author JeeSpring
* @version 2016-05-26
*/
@Service
@Transactional
(
readOnly
=
true
)
public
class
PieClassService
extends
AbstractBaseService
<
PieClassDao
,
PieClass
>
{
@Override
public
PieClass
get
(
String
id
)
{
return
super
.
get
(
id
);
}
@Override
public
List
<
PieClass
>
findList
(
PieClass
pieClass
)
{
return
super
.
findList
(
pieClass
);
}
@Override
public
Page
<
PieClass
>
findPage
(
Page
<
PieClass
>
page
,
PieClass
pieClass
)
{
return
super
.
findPage
(
page
,
pieClass
);
}
@Override
@Transactional
(
readOnly
=
false
)
public
void
save
(
PieClass
pieClass
)
{
super
.
save
(
pieClass
);
}
@Override
@Transactional
(
readOnly
=
false
)
public
void
delete
(
PieClass
pieClass
)
{
super
.
delete
(
pieClass
);
}
}
\ No newline at end of file
JeeSpringCloud/jeespring-framework/src/main/java/com/jeespring/modules/echarts/web/BarController.java
0 → 100644
View file @
05beecd0
package
com.jeespring.modules.echarts.web
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Random
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
com.jeespring.common.web.AbstractBaseController
;
@Controller
@RequestMapping
(
value
=
"${adminPath}/echarts/bar"
)
public
class
BarController
extends
AbstractBaseController
{
private
static
final
long
serialVersionUID
=
-
6886697421555222670L
;
private
List
<
String
>
xAxisData
;
private
Map
<
String
,
List
<
Double
>>
yAxisData
;
private
Map
<
String
,
Integer
>
yAxisIndex
;
@RequestMapping
(
value
=
{
"index"
,
""
})
public
String
index
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
//x轴数据
request
.
setAttribute
(
"xAxisData"
,
getxAxisData
());
//y轴数据
request
.
setAttribute
(
"yAxisData"
,
getyAxisData
());
//Y轴双轴情况下的位置定位
request
.
setAttribute
(
"yAxisIndex"
,
getyAxisIndex
());
return
"modules/echarts/bar"
;
}
public
List
<
String
>
getxAxisData
(){
xAxisData
=
new
ArrayList
<
String
>();
xAxisData
.
add
(
"2015-10-10"
);
xAxisData
.
add
(
"2015-10-11"
);
xAxisData
.
add
(
"2015-10-12"
);
xAxisData
.
add
(
"2015-10-13"
);
xAxisData
.
add
(
"2015-10-14"
);
return
xAxisData
;
}
public
Map
<
String
,
List
<
Double
>>
getyAxisData
(){
Random
random
=
new
Random
();
yAxisData
=
new
HashMap
<
String
,
List
<
Double
>>();
List
<
Double
>
data1
=
new
ArrayList
<
Double
>();
data1
.
add
(
random
.
nextDouble
());
data1
.
add
(
random
.
nextDouble
());
data1
.
add
(
random
.
nextDouble
());
data1
.
add
(
random
.
nextDouble
());
data1
.
add
(
random
.
nextDouble
());
yAxisData
.
put
(
"柱状一"
,
data1
);
List
<
Double
>
data2
=
new
ArrayList
<
Double
>();
data2
.
add
(
random
.
nextDouble
());
data2
.
add
(
random
.
nextDouble
());
data2
.
add
(
random
.
nextDouble
());
data2
.
add
(
random
.
nextDouble
());
data2
.
add
(
random
.
nextDouble
());
yAxisData
.
put
(
"柱状二"
,
data2
);
return
yAxisData
;
}
public
Map
<
String
,
Integer
>
getyAxisIndex
(){
yAxisIndex
=
new
HashMap
<
String
,
Integer
>();
yAxisIndex
.
put
(
"柱状一"
,
0
);
yAxisIndex
.
put
(
"柱状二"
,
1
);
return
yAxisIndex
;
}
}
Prev
1
…
6
7
8
9
10
11
12
13
14
…
19
Next
Write
Preview
Supports
Markdown
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