Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jyzb_platformV2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
赵剑炜
jyzb_platformV2
Commits
d1d8c51b
Commit
d1d8c51b
authored
Sep 27, 2023
by
赵剑炜
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
分离工作流
parent
238a091b
隐藏空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
826 行增加
和
54 行删除
+826
-54
BpmnController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/BpmnController.java
+7
-1
FlowDefinitionController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/FlowDefinitionController.java
+39
-0
FlowInstanceController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/FlowInstanceController.java
+14
-0
FlowTaskController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/FlowTaskController.java
+13
-0
OrgUserAndDeptController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/OrgUserAndDeptController.java
+0
-52
SysFormController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/SysFormController.java
+53
-0
FlowCommentDto.java
jyzb-process/src/main/java/com/junmp/junmpProcess/dto/FlowCommentDto.java
+20
-0
FlowTaskDto.java
jyzb-process/src/main/java/com/junmp/junmpProcess/dto/FlowTaskDto.java
+97
-0
FlowServiceFactory.java
jyzb-process/src/main/java/com/junmp/junmpProcess/factory/FlowServiceFactory.java
+41
-0
OrgUserMapper.java
jyzb-process/src/main/java/com/junmp/junmpProcess/mapper/OrgUserMapper.java
+2
-0
WorkProcessService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/WorkProcessService.java
+7
-0
WorkProcessServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/impl/WorkProcessServiceImpl.java
+18
-1
IFlowDefinitionService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/IFlowDefinitionService.java
+20
-0
IFlowInstanceService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/IFlowInstanceService.java
+40
-0
IFlowTaskService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/IFlowTaskService.java
+4
-0
ISysDeployFormService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/ISysDeployFormService.java
+4
-0
ISysFormService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/ISysFormService.java
+54
-0
FlowDefinitionServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowDefinitionServiceImpl.java
+56
-0
FlowInstanceServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowInstanceServiceImpl.java
+134
-0
SysFormServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/SysFormServiceImpl.java
+194
-0
OrgUserMapper.xml
jyzb-process/src/main/resources/mapper/OrgUserMapper.xml
+9
-0
没有找到文件。
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/BpmnController.java
View file @
d1d8c51b
...
...
@@ -52,7 +52,7 @@ public class BpmnController {
return
ApiRes
.
success
(
WorkProcessService
.
updateForm
(
process
));
}
/**
*
修改表单
*
删除流程实例
*/
@ApiOperation
(
"删除流程实例"
)
@PostMapping
(
"deleteForm"
)
...
...
@@ -121,6 +121,12 @@ public class BpmnController {
public
ApiRes
<
PageResult
<
HistoryProcessInstanceVO
>>
applyList
(
@RequestBody
ApplyDTO
ApplyDTO
)
{
return
ApiRes
.
success
(
WorkProcessService
.
applyList
(
ApplyDTO
));
}
@ApiOperation
(
"根据业务ID换取最新的流程信息"
)
@PostMapping
(
"getProcessDefinitionId"
)
public
ApiRes
<
String
>
getProcessDefinitionId
(
@RequestBody
Map
<
String
,
Object
>
templateId
)
{
String
temp
=
templateId
.
get
(
"formId"
).
toString
();
return
WorkProcessService
.
getProcessDefinitionId
(
temp
);
}
@ApiOperation
(
"查看我的待办"
)
@PostMapping
(
"toDoList"
)
public
ApiRes
<
PageResult
<
TaskVO
>>
toDoList
(
@RequestBody
TaskDTO
taskDTO
){
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/FlowDefinitionController.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
controller
;
import
com.junmp.junmpProcess.dto.HandleDataDTO
;
import
com.junmp.junmpProcess.service.Bussiness.WorkProcessService
;
import
com.junmp.junmpProcess.service.IFlowDefinitionService
;
import
com.junmp.junmpProcess.service.ISysFormService
;
import
com.junmp.jyzb.api.bean.query.ProcessReq.SuspendOrActivateDefinitionReq
;
import
com.junmp.v2.common.bean.response.ApiRes
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
@Slf4j
@RestController
@RequestMapping
(
"/FlowDefinition"
)
@Api
(
tags
=
"流程定义"
)
public
class
FlowDefinitionController
{
@Autowired
private
IFlowDefinitionService
FlowDefinitionService
;
@ApiOperation
(
"停启用流程"
)
@PostMapping
(
"StopProcessInstanceById"
)
public
ApiRes
<
Boolean
>
stopProcessInstanceById
(
@RequestBody
SuspendOrActivateDefinitionReq
req
)
{
return
ApiRes
.
success
(
FlowDefinitionService
.
updateState
(
req
));
}
@ApiOperation
(
"根据业务ID换取最新的流程信息"
)
@PostMapping
(
"GetProcessDefinitionId"
)
public
ApiRes
<
String
>
GetProcessDefinitionId
(
@RequestBody
Map
<
String
,
Object
>
templateId
)
{
String
temp
=
templateId
.
get
(
"formId"
).
toString
();
return
FlowDefinitionService
.
getLatestDefinitionId
(
temp
);
}
}
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/FlowInstanceController.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
controller
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Slf4j
@RestController
@RequestMapping
(
"/FlowInstance"
)
@Api
(
tags
=
"流程实例"
)
public
class
FlowInstanceController
{
}
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/FlowTaskController.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
controller
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Slf4j
@RestController
@RequestMapping
(
"/FlowTask"
)
@Api
(
tags
=
"流程任务"
)
public
class
FlowTaskController
{
}
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/OrgUserAndDeptController.java
deleted
100644 → 0
View file @
238a091b
//package com.junmp.junmpProcess.controller;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import com.junmp.junmpProcess.service.Bussiness.OrgUserAndDeptService;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//
///**
// * @author : willian fu
// * @version : 1.0
// */
//@RestController
//@RequestMapping("/OrgUserAndDept")
//@Api(tags = "和用户组织机构有关的接口")
//public class OrgUserAndDeptController {
//
// @Resource
// private OrgUserAndDeptService orgService;
//
// /**
// * 查询组织架构树
// *
// * @param deptId 部门id
// * @return 组织架构树数据
// */
// @ApiOperation("查询组织架构树")
// @GetMapping("tree")
//// @PermissionData(pageComponent = "jeecg/JeecgDemoList")
// public Object getOrgTreeData(@RequestParam(defaultValue = "0") Integer deptId,
// @RequestParam(defaultValue = "user") String type
// ) {
// return orgService.getOrgTreeData(deptId, type);
// }
//
// /**
// * 模糊搜索用户
// *
// * @param userName 用户名/拼音/首字母
// * @return 匹配到的用户
// */
// @ApiOperation("模糊搜索用户")
// @GetMapping("tree/search")
// public Object getOrgTreeUser(@RequestParam String userName) {
// return orgService.getOrgTreeUser(userName.trim());
// }
//
//}
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/SysFormController.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
controller
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.junmp.junmpProcess.service.ISysFormService
;
import
com.junmp.junmpProcess.vo.ProcessVO
;
import
com.junmp.junmpProcess.vo.TemplateGroupVo
;
import
com.junmp.junmpProcess.vo.UpdateProcessVO
;
import
com.junmp.jyzb.api.bean.query.ProcessReq.FormReq
;
import
com.junmp.v2.common.bean.request.BaseRequest
;
import
com.junmp.v2.common.bean.response.ApiRes
;
import
com.junmp.v2.db.api.page.PageResult
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
@Slf4j
@RestController
@RequestMapping
(
"/SysForm"
)
@Api
(
tags
=
"流程编辑"
)
public
class
SysFormController
{
@Autowired
private
ISysFormService
SysFormService
;
@ApiOperation
(
"创建新表单"
)
@PostMapping
(
"CreateForm"
)
public
ApiRes
<
Boolean
>
CreateForm
(
@RequestBody
FormReq
formReq
)
{
return
ApiRes
.
success
(
SysFormService
.
createNewForm
(
formReq
));
}
@ApiOperation
(
"同时创建流程和表单"
)
@PostMapping
(
value
=
"Create"
)
public
ApiRes
<
Boolean
>
Create
(
@RequestBody
ProcessVO
processVO
)
throws
JsonProcessingException
{
return
ApiRes
.
success
(
SysFormService
.
createBpmn
(
processVO
));
}
/**
* 修改表单名称和备注
*/
@ApiOperation
(
"修改表单名称和备注"
)
@PostMapping
(
"UpdateFormName"
)
public
ApiRes
<
Boolean
>
UpdateFormName
(
@RequestBody
UpdateProcessVO
process
)
throws
JsonProcessingException
{
return
ApiRes
.
success
(
SysFormService
.
updateFormName
(
process
));
}
@ApiOperation
(
"获取全部可用的表单和审核流"
)
@GetMapping
(
value
=
"GetFormList"
)
public
ApiRes
<
PageResult
<
TemplateGroupVo
>>
GetFormList
(
BaseRequest
br
)
{
return
ApiRes
.
success
(
SysFormService
.
getFormList
(
br
));
}
}
jyzb-process/src/main/java/com/junmp/junmpProcess/dto/FlowCommentDto.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
dto
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
@Builder
public
class
FlowCommentDto
implements
Serializable
{
/**
* 意见类别 0 正常意见 1 退回意见 2 驳回意见
*/
private
String
type
;
/**
* 意见内容
*/
private
String
comment
;
}
jyzb-process/src/main/java/com/junmp/junmpProcess/dto/FlowTaskDto.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.io.Serializable
;
import
java.util.Date
;
@Getter
@Setter
@ApiModel
(
"工作流任务相关-返回参数"
)
public
class
FlowTaskDto
implements
Serializable
{
@ApiModelProperty
(
"任务编号"
)
private
String
taskId
;
@ApiModelProperty
(
"任务执行编号"
)
private
String
executionId
;
@ApiModelProperty
(
"任务名称"
)
private
String
taskName
;
@ApiModelProperty
(
"任务Key"
)
private
String
taskDefKey
;
@ApiModelProperty
(
"任务执行人Id"
)
private
Long
assigneeId
;
@ApiModelProperty
(
"部门名称"
)
private
String
deptName
;
@ApiModelProperty
(
"流程发起人部门名称"
)
private
String
startDeptName
;
@ApiModelProperty
(
"任务执行人名称"
)
private
String
assigneeName
;
@ApiModelProperty
(
"任务执行人部门"
)
private
String
assigneeDeptName
;;
@ApiModelProperty
(
"流程发起人Id"
)
private
String
startUserId
;
@ApiModelProperty
(
"流程发起人名称"
)
private
String
startUserName
;
@ApiModelProperty
(
"流程类型"
)
private
String
category
;
@ApiModelProperty
(
"流程变量信息"
)
private
Object
procVars
;
@ApiModelProperty
(
"局部变量信息"
)
private
Object
taskLocalVars
;
@ApiModelProperty
(
"流程部署编号"
)
private
String
deployId
;
@ApiModelProperty
(
"流程ID"
)
private
String
procDefId
;
@ApiModelProperty
(
"流程key"
)
private
String
procDefKey
;
@ApiModelProperty
(
"流程定义名称"
)
private
String
procDefName
;
@ApiModelProperty
(
"流程定义内置使用版本"
)
private
int
procDefVersion
;
@ApiModelProperty
(
"流程实例ID"
)
private
String
procInsId
;
@ApiModelProperty
(
"历史流程实例ID"
)
private
String
hisProcInsId
;
@ApiModelProperty
(
"任务耗时"
)
private
String
duration
;
@ApiModelProperty
(
"任务意见"
)
private
FlowCommentDto
comment
;
@ApiModelProperty
(
"候选执行人"
)
private
String
candidate
;
@ApiModelProperty
(
"任务创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@ApiModelProperty
(
"任务完成时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
finishTime
;
}
jyzb-process/src/main/java/com/junmp/junmpProcess/factory/FlowServiceFactory.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
factory
;
import
lombok.Getter
;
import
org.flowable.engine.*
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* flowable 引擎注入封装
* @author Tony
* @date 2021-04-03
*/
@Component
@Getter
public
class
FlowServiceFactory
{
@Resource
protected
RepositoryService
repositoryService
;
@Resource
protected
RuntimeService
runtimeService
;
@Resource
protected
IdentityService
identityService
;
@Resource
protected
TaskService
taskService
;
@Resource
protected
HistoryService
historyService
;
@Resource
protected
ManagementService
managementService
;
@Qualifier
(
"processEngine"
)
@Resource
protected
ProcessEngine
processEngine
;
}
jyzb-process/src/main/java/com/junmp/junmpProcess/mapper/OrgUserMapper.java
View file @
d1d8c51b
...
...
@@ -24,4 +24,6 @@ public interface OrgUserMapper {
public
List
<
UserListDTO
>
QueryUserByRoleIdAndOrg
(
String
roleId
,
String
orgId
);
public
List
<
UserListDTO
>
QueryUserWithParentOrg
(
String
userId
);
public
UserListDTO
QueryUser
(
String
userId
);
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/WorkProcessService.java
View file @
d1d8c51b
...
...
@@ -212,6 +212,13 @@ public interface WorkProcessService {
* @return
*/
ApiRes
<
HandleDataVO
>
instanceInfo
(
HandleDataDTO
HandleDataDTO
);
/**
* 通过流程实例id查看详情
*
* @return
*/
ApiRes
<
String
>
getProcessDefinitionId
(
String
formId
);
// /**
// * 上传文件
// * @return
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/impl/WorkProcessServiceImpl.java
View file @
d1d8c51b
...
...
@@ -654,7 +654,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
// StartUser.setUserId(Long.valueOf("1694954953210986498"));
StartUser
=
LoginContext
.
getContext
().
getLoginUser
();
//
StartUser= LoginContext.getContext().getLoginUser();
JSONObject
formData
=
processInstanceDto
.
getFormData
();
Authentication
.
setAuthenticatedUserId
(
StartUser
.
getUserId
().
toString
());
...
...
@@ -1457,6 +1457,23 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
return
Result
.
OK
();
}
@Override
public
ApiRes
<
String
>
getProcessDefinitionId
(
String
formId
)
{
String
defId
=
""
;
ProcessDefinition
ProDef
=
repositoryService
.
createProcessDefinitionQuery
()
.
processDefinitionKey
(
"Process_"
+
formId
)
.
latestVersion
()
.
singleResult
();
if
(
ProDef
!=
null
)
{
defId
=
ProDef
.
getId
();
}
return
ApiRes
.
success
(
defId
);
}
@Override
public
ApiRes
<
HandleDataVO
>
instanceInfo
(
HandleDataDTO
HandleDataDTO
)
{
String
processInstanceId
=
HandleDataDTO
.
getProcessInstanceId
();
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/service/IFlowDefinitionService.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
;
import
com.junmp.jyzb.api.bean.query.ProcessReq.SuspendOrActivateDefinitionReq
;
import
com.junmp.v2.common.bean.response.ApiRes
;
public
interface
IFlowDefinitionService
{
/**
* 挂起流程定义
*
* @return
*/
Boolean
updateState
(
SuspendOrActivateDefinitionReq
req
)
;
/**
* 通过流程实例id查看详情
*
* @return
*/
ApiRes
<
String
>
getLatestDefinitionId
(
String
formId
);
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/IFlowInstanceService.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
;
import
com.junmp.junmpProcess.dto.StartProcessInstanceDTO
;
import
com.junmp.v2.common.bean.response.ApiRes
;
import
org.flowable.engine.history.HistoricProcessInstance
;
import
java.util.Map
;
public
interface
IFlowInstanceService
{
/**
* 激活或挂起流程实例
*
* @param state 状态
* @param instanceId 流程实例ID
*/
void
updateState
(
Integer
state
,
String
instanceId
);
/**
* 删除流程实例ID
*
* @param instanceId 流程实例ID
* @param deleteReason 删除原因
*/
void
delete
(
String
instanceId
,
String
deleteReason
);
/**
* 根据实例ID查询历史实例数据
*
* @param processInstanceId
* @return
*/
HistoricProcessInstance
getHistoricProcessInstanceById
(
String
processInstanceId
);
/**
* 根据流程定义ID启动流程实例
*
* @return
*/
String
startProcessInstanceById
(
StartProcessInstanceDTO
processInstanceDto
);
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/IFlowTaskService.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
;
public
interface
IFlowTaskService
{
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/ISysDeployFormService.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
;
public
interface
ISysDeployFormService
{
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/ISysFormService.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.junmp.junmpProcess.vo.ProcessVO
;
import
com.junmp.junmpProcess.vo.TemplateGroupVo
;
import
com.junmp.junmpProcess.vo.UpdateProcessVO
;
import
com.junmp.jyzb.api.bean.query.ProcessReq.FormReq
;
import
com.junmp.v2.common.bean.request.BaseRequest
;
import
com.junmp.v2.db.api.page.PageResult
;
public
interface
ISysFormService
{
/**
* 新增流程表单
*
* @param sysForm 流程表单
* @return 结果
*/
// public int insertSysForm(SysForm sysForm);
/**
* 创建表单
*
* @return
*/
Boolean
createNewForm
(
FormReq
processVO
);
/**
* 创建表单
*
* @return
*/
Boolean
createBpmn
(
ProcessVO
processVO
)
throws
JsonProcessingException
;
/**
* 编辑表单
*
* @return
*/
Boolean
updateForm
(
UpdateProcessVO
process
)
throws
JsonProcessingException
;
/**
* 编辑表单名称
*
* @return
*/
Boolean
updateFormName
(
UpdateProcessVO
process
);
/**
* 获取用户可见表单
*
* @return
*/
PageResult
<
TemplateGroupVo
>
getFormList
(
BaseRequest
br
);
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowDefinitionServiceImpl.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
.
impl
;
import
com.junmp.junmpProcess.entity.ProcessTemplates
;
import
com.junmp.junmpProcess.factory.FlowServiceFactory
;
import
com.junmp.junmpProcess.service.IFlowDefinitionService
;
import
com.junmp.junmpProcess.service.Repository.ProcessTemplateService
;
import
com.junmp.jyzb.api.bean.query.ProcessReq.SuspendOrActivateDefinitionReq
;
import
com.junmp.v2.common.bean.response.ApiRes
;
import
lombok.extern.slf4j.Slf4j
;
import
org.flowable.engine.repository.ProcessDefinition
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
/**
* 流程定义
*
* @author Tony
* @date 2021-04-03
*/
@Service
@Slf4j
public
class
FlowDefinitionServiceImpl
extends
FlowServiceFactory
implements
IFlowDefinitionService
{
@Autowired
private
ProcessTemplateService
processTemplateService
;
@Override
public
Boolean
updateState
(
SuspendOrActivateDefinitionReq
req
)
{
ProcessTemplates
processTemplates
=
processTemplateService
.
getById
(
req
.
getTemplateId
());
if
(
req
.
getIsStop
()
==
true
){
repositoryService
.
suspendProcessDefinitionById
(
req
.
getProcessDefinitionId
(),
true
,
null
);
processTemplates
.
setIsStop
(
true
);
}
else
{
processTemplates
.
setIsStop
(
false
);
repositoryService
.
activateProcessDefinitionById
(
req
.
getProcessDefinitionId
(),
true
,
null
);
}
processTemplates
.
setUpdated
(
new
Date
());
return
processTemplateService
.
updateById
(
processTemplates
);
//更新表单明细表信息
}
@Override
public
ApiRes
<
String
>
getLatestDefinitionId
(
String
formId
)
{
String
defId
=
""
;
ProcessDefinition
ProDef
=
repositoryService
.
createProcessDefinitionQuery
()
.
processDefinitionKey
(
"Process_"
+
formId
)
.
latestVersion
()
.
singleResult
();
if
(
ProDef
!=
null
)
{
defId
=
ProDef
.
getId
();
}
return
ApiRes
.
success
(
defId
);
}
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowInstanceServiceImpl.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.junmp.junmpProcess.dto.StartProcessInstanceDTO
;
import
com.junmp.junmpProcess.factory.FlowServiceFactory
;
import
com.junmp.junmpProcess.service.IFlowInstanceService
;
import
com.junmp.v2.auth.api.bean.login.LoginUser
;
import
com.junmp.v2.auth.api.context.LoginContext
;
import
com.junmp.v2.common.bean.response.ApiRes
;
import
lombok.extern.slf4j.Slf4j
;
import
org.flowable.common.engine.api.FlowableObjectNotFoundException
;
import
org.flowable.common.engine.impl.identity.Authentication
;
import
org.flowable.engine.history.HistoricProcessInstance
;
import
org.flowable.engine.repository.ProcessDefinition
;
import
org.flowable.engine.runtime.ProcessInstance
;
import
org.flowable.engine.runtime.ProcessInstanceBuilder
;
import
org.flowable.task.api.Task
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
import
static
com
.
junmp
.
junmpProcess
.
common
.
CommonConstants
.*;
import
static
com
.
junmp
.
junmpProcess
.
common
.
CommonConstants
.
BUSINESS_STATUS_1
;
@Service
@Slf4j
public
class
FlowInstanceServiceImpl
extends
FlowServiceFactory
implements
IFlowInstanceService
{
@Override
public
void
updateState
(
Integer
state
,
String
instanceId
)
{
// 激活
if
(
state
==
1
)
{
runtimeService
.
activateProcessInstanceById
(
instanceId
);
}
// 挂起
if
(
state
==
2
)
{
runtimeService
.
suspendProcessInstanceById
(
instanceId
);
}
}
/**
* 删除流程实例ID
*
* @param instanceId 流程实例ID
* @param deleteReason 删除原因
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
String
instanceId
,
String
deleteReason
)
{
// 查询历史数据
HistoricProcessInstance
historicProcessInstance
=
getHistoricProcessInstanceById
(
instanceId
);
if
(
historicProcessInstance
.
getEndTime
()
!=
null
)
{
historyService
.
deleteHistoricProcessInstance
(
historicProcessInstance
.
getId
());
return
;
}
// 删除流程实例
runtimeService
.
deleteProcessInstance
(
instanceId
,
deleteReason
);
// 删除历史流程实例
historyService
.
deleteHistoricProcessInstance
(
instanceId
);
}
/**
* 根据实例ID查询历史实例数据
*
* @param processInstanceId
* @return
*/
@Override
public
HistoricProcessInstance
getHistoricProcessInstanceById
(
String
processInstanceId
)
{
HistoricProcessInstance
historicProcessInstance
=
historyService
.
createHistoricProcessInstanceQuery
().
processInstanceId
(
processInstanceId
).
singleResult
();
if
(
Objects
.
isNull
(
historicProcessInstance
))
{
throw
new
FlowableObjectNotFoundException
(
"流程实例不存在: "
+
processInstanceId
);
}
return
historicProcessInstance
;
}
@Override
public
String
startProcessInstanceById
(
StartProcessInstanceDTO
processInstanceDto
)
{
LoginUser
StartUser
=
new
LoginUser
();
if
(
processInstanceDto
.
getUserId
()!=
null
)
//优先拿接口中的信息,方便调试
{
StartUser
.
setUserId
(
Long
.
valueOf
(
processInstanceDto
.
getUserId
())
);
}
else
{
StartUser
=
LoginContext
.
getContext
().
getLoginUser
();
}
JSONObject
formData
=
processInstanceDto
.
getFormData
();
Authentication
.
setAuthenticatedUserId
(
StartUser
.
getUserId
().
toString
());
Map
<
String
,
Object
>
processVariables
=
new
HashMap
<>();
processVariables
.
put
(
FORM_VAR
,
formData
);
processVariables
.
put
(
ORDER_ID
,
processInstanceDto
.
getOrderId
());
processVariables
.
put
(
ORDER_TYPE
,
processInstanceDto
.
getOrderType
());
processVariables
.
put
(
START_USER_INFO
,
JSONObject
.
toJSONString
(
StartUser
));
processVariables
.
put
(
PROCESS_STATUS
,
BUSINESS_STATUS_1
);
ArrayList
<
LoginUser
>
userInfos
=
CollUtil
.
newArrayList
(
StartUser
);
if
(
formData
!=
null
)
{
Map
formValue
=
JSONObject
.
parseObject
(
formData
.
toJSONString
(),
new
TypeReference
<
Map
>()
{
});
processVariables
.
putAll
(
formValue
);
}
ProcessInstanceBuilder
processInstanceBuilder
=
runtimeService
.
createProcessInstanceBuilder
();
ProcessDefinition
processDefinition
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionKey
(
processInstanceDto
.
getProcessDefinitionId
())
.
latestVersion
().
singleResult
();
// if (processDefinition == null )
// {
// return ApiRes.failure("流程不存在或已挂起");
// } else if (processDefinition.isSuspended())
// {
// return ApiRes.failure("流程不存在或已挂起");
// }
ProcessInstance
processInstance
=
processInstanceBuilder
.
processDefinitionId
(
processInstanceDto
.
getProcessDefinitionId
())
.
variable
(
"initiator"
,
StartUser
.
getUserId
())
.
variables
(
processVariables
)
.
businessStatus
(
BUSINESS_STATUS_1
)
.
start
();
//手动完成第一个任务
Task
task
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
singleResult
();
task
.
setAssignee
(
StartUser
.
getUserId
().
toString
());
return
processInstance
.
getProcessInstanceId
();
}
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/SysFormServiceImpl.java
0 → 100644
View file @
d1d8c51b
package
com
.
junmp
.
junmpProcess
.
service
.
impl
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.PageUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.junmp.junmpProcess.entity.ProcessTemplates
;
import
com.junmp.junmpProcess.mapper.ProcessTemplatesMapper
;
import
com.junmp.junmpProcess.mapper.TemplateGroupMapper
;
import
com.junmp.junmpProcess.service.ISysFormService
;
import
com.junmp.junmpProcess.service.Repository.ProcessTemplateService
;
import
com.junmp.junmpProcess.utils.IdWorker
;
import
com.junmp.junmpProcess.utils.SpringContextHolder
;
import
com.junmp.junmpProcess.vo.ProcessVO
;
import
com.junmp.junmpProcess.vo.TemplateGroupVo
;
import
com.junmp.junmpProcess.vo.UpdateProcessVO
;
import
com.junmp.jyzb.api.bean.query.ProcessReq.FormReq
;
import
com.junmp.v2.common.bean.request.BaseRequest
;
import
com.junmp.v2.db.api.factory.PageFactory
;
import
com.junmp.v2.db.api.page.PageResult
;
import
org.apache.commons.lang3.time.DateFormatUtils
;
import
org.flowable.bpmn.model.BpmnModel
;
import
org.flowable.engine.RepositoryService
;
import
org.flowable.engine.repository.Deployment
;
import
org.flowable.engine.repository.ProcessDefinition
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
static
com
.
junmp
.
junmpProcess
.
utils
.
BpmnConvert
.
toBpmn
;
@Service
public
class
SysFormServiceImpl
extends
ServiceImpl
<
ProcessTemplatesMapper
,
ProcessTemplates
>
implements
ISysFormService
{
@Resource
private
IdWorker
idWorker
;
@Autowired
private
ProcessTemplateService
processTemplateService
;
@Resource
private
RepositoryService
repositoryService
;
/**
* @Author: Zhaojw
* @Description: 创建新流程
* @DateTime: 2023/9/27 10:59
* @Params:
* @Return
*/
@Override
public
Boolean
createNewForm
(
FormReq
req
)
{
ProcessTemplates
processTemplates
=
ProcessTemplates
.
builder
().
build
();
String
templateId
=
idWorker
.
nextId
()+
""
;
processTemplates
.
setTemplateId
(
templateId
);
processTemplates
.
setFormName
(
req
.
getFormName
());
processTemplates
.
setRemark
(
req
.
getRemark
());
processTemplates
.
setIsStop
(
true
);
Date
date
=
new
Date
();
processTemplates
.
setUpdated
(
date
);
processTemplateService
.
save
(
processTemplates
);
return
true
;
}
@Override
public
Boolean
createBpmn
(
ProcessVO
processVO
)
throws
JsonProcessingException
{
//流程定义
ObjectMapper
objectMapper
=
new
ObjectMapper
();
JsonNode
processJsonNode
=
objectMapper
.
readTree
(
processVO
.
getProcessJson
());
JsonNode
formJsonNode
=
objectMapper
.
readTree
(
processVO
.
getFormJson
());
String
formName
=
processVO
.
getFormName
().
toString
();
ProcessTemplates
processTemplates
=
ProcessTemplates
.
builder
().
build
();
String
templateId
=
idWorker
.
nextId
()+
""
;
processTemplates
.
setTemplateId
(
templateId
);
processTemplates
.
setFormJson
(
formJsonNode
.
toString
());
processTemplates
.
setProcessJson
(
processJsonNode
.
toString
());
processTemplates
.
setFormName
(
processVO
.
getFormName
());
processTemplates
.
setIsStop
(
false
);
Date
date
=
new
Date
();
processTemplates
.
setUpdated
(
date
);
processTemplateService
.
save
(
processTemplates
);
//将json转换为bpmn
BpmnModel
bpmnModel
=
toBpmn
(
processJsonNode
,
formJsonNode
,
formName
,
templateId
);
Deployment
deploy
=
repositoryService
.
createDeployment
()
.
addBpmnModel
(
formName
+
".bpmn20.xml"
,
bpmnModel
)
.
name
(
formName
)
.
category
(
templateId
)
.
deploy
();
return
true
;
}
@Override
public
Boolean
updateForm
(
UpdateProcessVO
process
)
throws
JsonProcessingException
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
JsonNode
processJsonNode
=
objectMapper
.
readTree
(
process
.
getProcessJson
());
JsonNode
formJsonNode
=
objectMapper
.
readTree
(
process
.
getFormJson
());
String
formName
=
""
;
ProcessTemplates
processTemplates
=
processTemplateService
.
getById
(
process
.
getTemplateId
());
if
(
ObjectUtil
.
isNotEmpty
(
process
.
getFormName
()))
{
formName
=
process
.
getFormName
().
toString
();
processTemplates
.
setFormName
(
process
.
getFormName
());
}
else
{
formName
=
processTemplates
.
getFormName
();
}
// processTemplates.setFormJson(formJsonNode.toString());//暂时用不到,以后会用
processTemplates
.
setProcessJson
(
process
.
getProcessJson
().
toString
());
processTemplates
.
setUpdated
(
new
Date
());
processTemplateService
.
updateById
(
processTemplates
);
//更新表单明细表信息
BpmnModel
bpmnModel
=
toBpmn
(
processJsonNode
,
formJsonNode
,
formName
,
process
.
getTemplateId
());
Deployment
deploy
=
repositoryService
.
createDeployment
()
.
addBpmnModel
(
formName
+
".bpmn20.xml"
,
bpmnModel
)
.
name
(
formName
)
.
category
(
process
.
getTemplateId
())
.
deploy
();
return
true
;
}
@Override
public
Boolean
updateFormName
(
UpdateProcessVO
process
)
{
ProcessTemplates
processTemplates
=
processTemplateService
.
getById
(
process
.
getTemplateId
());
processTemplates
.
setFormName
(
process
.
getFormName
());
processTemplates
.
setRemark
(
process
.
getRemark
());
processTemplates
.
setUpdated
(
new
Date
());
return
processTemplateService
.
updateById
(
processTemplates
);
//更新表单明细表信息
}
public
PageResult
<
TemplateGroupVo
>
getFormList
(
BaseRequest
br
)
{
LambdaQueryWrapper
<
ProcessTemplates
>
wrapper
=
new
LambdaQueryWrapper
<
ProcessTemplates
>();
wrapper
.
orderByDesc
(
ProcessTemplates:
:
getUpdated
);
TemplateGroupMapper
templateGroupMapper
=
SpringContextHolder
.
getBean
(
TemplateGroupMapper
.
class
);
Page
<
ProcessTemplates
>
allformAndGroups
=
this
.
page
(
PageFactory
.
getDefaultPage
(),
wrapper
);
// templateGroupMapper.getAllFormAndGroups();
Map
<
Integer
,
List
<
ProcessTemplates
>>
coverMap
=
new
LinkedHashMap
<>();
allformAndGroups
.
getRecords
().
forEach
(
fg
->
{
List
<
ProcessTemplates
>
bos
=
coverMap
.
get
(
fg
.
getGroupId
());
if
(
CollectionUtil
.
isEmpty
(
bos
))
{
List
<
ProcessTemplates
>
list
=
new
ArrayList
<>();
list
.
add
(
fg
);
coverMap
.
put
(
fg
.
getGroupId
(),
list
);
}
else
{
bos
.
add
(
fg
);
}
});
PageResult
<
TemplateGroupVo
>
pageResult
=
new
PageResult
<
TemplateGroupVo
>();
coverMap
.
forEach
((
key
,
val
)
->
{
List
<
TemplateGroupVo
>
templates
=
new
ArrayList
<>();
val
.
forEach
(
v
->
{
if
(
ObjectUtil
.
isNotNull
(
v
.
getTemplateId
()))
{
String
defId
=
""
;
ProcessDefinition
ProDef
=
repositoryService
.
createProcessDefinitionQuery
()
.
processDefinitionKey
(
"Process_"
+
v
.
getTemplateId
())
.
latestVersion
()
.
singleResult
();
if
(
ProDef
!=
null
)
{
defId
=
ProDef
.
getId
();
}
templates
.
add
(
TemplateGroupVo
.
builder
()
.
formId
(
v
.
getTemplateId
())
.
remark
(
v
.
getRemark
())
.
formName
(
v
.
getFormName
())
.
isStop
(
v
.
getIsStop
())
.
updated
(
DateFormatUtils
.
format
(
v
.
getUpdated
(),
"yyyy年MM月dd日 HH时:mm分:ss秒"
))
.
templateId
(
v
.
getTemplateId
())
.
processDefinitionId
(
defId
)
.
build
());
}
});
pageResult
.
setRecords
(
templates
);
});
pageResult
.
setPageSize
(
allformAndGroups
.
getSize
());
pageResult
.
setTotalRows
(
allformAndGroups
.
getTotal
());
pageResult
.
setPageNo
(
allformAndGroups
.
getPages
());
pageResult
.
setTotalPage
(
PageUtil
.
totalPage
(
Convert
.
toInt
(
pageResult
.
getTotalRows
()),
Convert
.
toInt
(
pageResult
.
getPageSize
())));
return
pageResult
;
}
}
jyzb-process/src/main/resources/mapper/OrgUserMapper.xml
View file @
d1d8c51b
...
...
@@ -21,6 +21,12 @@
GROUP BY su.user_id,su.real_name
</select>
<select
id=
"QueryUser"
resultMap=
"UserListDTO"
>
SELECT su.user_id,su.real_name FROM `sys_user` su
where su.user_id = ${userId}
</select>
<select
id=
"QueryUserWithParentOrg"
resultMap=
"UserListDTO"
>
SELECT
CASE
...
...
@@ -38,4 +44,6 @@
JOIN sys_user_org AS userorg2 ON mainUser.org_parent_id = userorg2.org_id
JOIN sys_user AS user2 ON user2.user_id = userorg2.user_id;
</select>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论