feat: 2.6.0

1. 工作流页面新增工作流名称列表
2. 工作流任务节点显示任务名称
This commit is contained in:
byteblogs168 2024-01-15 23:25:59 +08:00
parent 3c35dd014e
commit e8bb418382
11 changed files with 99 additions and 66 deletions

View File

@ -29,7 +29,7 @@ public class WorkflowController {
private final WorkflowService workflowService;
@PostMapping
@LoginRequired(role = RoleEnum.USER)
@LoginRequired(role = RoleEnum.ADMIN)
public Boolean saveWorkflow(@RequestBody @Validated WorkflowRequestVO workflowRequestVO) {
return workflowService.saveWorkflow(workflowRequestVO);
}
@ -41,7 +41,7 @@ public class WorkflowController {
}
@PutMapping
@LoginRequired(role = RoleEnum.USER)
@LoginRequired(role = RoleEnum.ADMIN)
public Boolean updateWorkflow(@RequestBody @Validated WorkflowRequestVO workflowRequestVO) {
return workflowService.updateWorkflow(workflowRequestVO);
}
@ -53,19 +53,29 @@ public class WorkflowController {
}
@PutMapping("/update/status/{id}")
@LoginRequired(role = RoleEnum.ADMIN)
public Boolean updateStatus(@PathVariable("id") Long id) {
return workflowService.updateStatus(id);
}
@DeleteMapping("/{id}")
@LoginRequired(role = RoleEnum.ADMIN)
public Boolean deleteById(@PathVariable("id") Long id) {
return workflowService.deleteById(id);
}
@PostMapping("/trigger/{id}")
@LoginRequired(role = RoleEnum.USER)
public Boolean trigger(@PathVariable("id") Long id) {
return workflowService.trigger(id);
}
@GetMapping("/workflow-name/list")
@LoginRequired(role = RoleEnum.USER)
public List<WorkflowResponseVO> getWorkflowNameList(
@RequestParam(value = "keywords", required = false) String keywords,
@RequestParam(value = "workflowId", required = false) Long workflowId) {
return workflowService.getWorkflowNameList(keywords, workflowId);
}
}

View File

@ -29,4 +29,6 @@ public interface WorkflowService {
Boolean deleteById(Long id);
Boolean trigger(Long id);
List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId);
}

View File

@ -277,4 +277,24 @@ public class WorkflowServiceImpl implements WorkflowService {
return Boolean.TRUE;
}
@Override
public List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId) {
LambdaQueryWrapper<Workflow> queryWrapper = new LambdaQueryWrapper<Workflow>()
.select(Workflow::getId, Workflow::getWorkflowName);
if (StrUtil.isNotBlank(keywords)) {
queryWrapper.like(Workflow::getWorkflowName, keywords.trim() + "%");
}
if (Objects.nonNull(workflowId)) {
queryWrapper.eq(Workflow::getId, workflowId);
}
queryWrapper.eq(Workflow::getDeleted, StatusEnum.NO.getStatus());
PageDTO<Workflow> pageDTO = new PageDTO<>(1, 20);
PageDTO<Workflow> selectPage = workflowMapper.selectPage(pageDTO, queryWrapper);
return WorkflowConverter.INSTANCE.toWorkflowResponseVO(selectPage.getRecords());
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,16 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Easy Retry</title>
<script type="module" crossorigin src="./assets/eCMYxQqR.js"></script>
<link rel="stylesheet" crossorigin href="./assets/tWxQPn1H.css">
</head>
<body>
<div id="app"></div>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Easy Retry</title>
<script type="module" crossorigin src="./assets/HIb6OPZi.js"></script>
<link rel="stylesheet" crossorigin href="./assets/kNnuTekB.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@ -39,11 +39,20 @@ const jobApi = {
updateStatus: '/workflow/update/status/',
delWorkflow: '/workflow/',
triggerWorkflow: '/workflow/trigger/',
stopWorkflowBatch: '/workflow/batch/stop/'
stopWorkflowBatch: '/workflow/batch/stop/',
workflowNameList: '/workflow/workflow-name/list'
}
export default jobApi
export function workflowNameList (parameter) {
return request({
url: jobApi.workflowNameList,
method: 'get',
params: parameter
})
}
export function stopWorkflowBatch (id) {
return request({
url: jobApi.stopWorkflowBatch + id,

View File

@ -44,21 +44,6 @@
</a-form-item>
</a-col>
<template v-if="advanced">
<!-- <a-col :md="8" :sm="24">-->
<!-- <a-form-item label="业务编号">-->
<!-- <a-input v-model="queryParam.bizNo" placeholder="请输入业务编号" allowClear />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :md="8" :sm="24">-->
<!-- <a-form-item label="幂等id">-->
<!-- <a-input v-model="queryParam.idempotentId" placeholder="请输入幂等id" allowClear />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :md="8" :sm="24">-->
<!-- <a-form-item label="UniqueId">-->
<!-- <a-input v-model="queryParam.uniqueId" placeholder="请输入唯一id" allowClear/>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
</template>
<a-col :md="(!advanced && 8) || 24" :sm="24">
<span
@ -215,7 +200,6 @@ export default {
],
// Promise
loadData: (parameter) => {
// this.queryParam['jobId'] = this.$route.query.jobId
return jobBatchList(Object.assign(parameter, this.queryParam)).then((res) => {
return res
})
@ -251,7 +235,6 @@ export default {
const jobId = this.$route.query.jobId
jobNameList({ jobId: jobId }).then(res => {
this.jobNameList = res.data
console.log(jobId)
if (jobId) {
this.queryParam['jobId'] = this.jobNameList[0].id
this.$refs.table.refresh(true)

View File

@ -18,7 +18,7 @@
<a-form-item label="任务名称">
<a-select
show-search
v-model="queryParam.jobId"
v-model="queryParam.workflowId"
placeholder="请输入任务名称"
:default-active-first-option="false"
:show-arrow="true"
@ -27,8 +27,8 @@
@search="handleSearch"
@change="handleChange"
>
<a-select-option v-for="(item, index) in jobNameList" :value="item.id" :key="index">
{{ item.jobName }}
<a-select-option v-for="(item, index) in workflowNameList" :value="item.id" :key="index">
{{ item.workflowName }}
</a-select-option>
</a-select>
@ -107,7 +107,7 @@
import ATextarea from 'ant-design-vue/es/input/TextArea'
import AInput from 'ant-design-vue/es/input/Input'
import { Drawer, STable } from '@/components'
import { workflowBatchListPage, jobNameList, stopWorkflowBatch } from '@/api/jobApi'
import { workflowBatchListPage, stopWorkflowBatch, workflowNameList } from '@/api/jobApi'
import { getAllGroupNameList } from '@/api/manage'
import JobBatchInfo from '@/views/job/JobBatchInfo'
const enums = require('@/utils/jobEnum')
@ -209,7 +209,7 @@ export default {
},
optionAlertShow: false,
groupNameList: [],
jobNameList: [],
workflowNameList: [],
openDrawer: false,
currentShowRecord: null
}
@ -218,11 +218,20 @@ export default {
getAllGroupNameList().then((res) => {
this.groupNameList = res.data
})
const workflowId = this.$route.query.workflowId
workflowNameList({ workflowId: workflowId }).then(res => {
this.workflowNameList = res.data
if (workflowId) {
this.queryParam['workflowId'] = this.workflowNameList[0].id
this.$refs.table.refresh(true)
}
})
},
methods: {
handleSearch (value) {
jobNameList({ keywords: value }).then(res => {
this.jobNameList = res.data
workflowNameList({ keywords: value }).then(res => {
this.workflowNameList = res.data
})
},
handleChange (value) {

View File

@ -275,7 +275,7 @@ export default {
this.$router.push({ path: '/job/workflow/edit', query: { id: record.id } })
},
goJobBatchList (record) {
this.$router.push({ path: '/job/batch/list', query: { jobId: record.id } })
this.$router.push({ path: '/job/workflow/batch/list', query: { workflowId: record.id } })
},
handleNew () {
this.$router.push({ path: '/job/workflow/edit' })