From 72f95018ed19a48938e91edf69cbe6ffa2c379fb Mon Sep 17 00:00:00 2001 From: zxf <1532322479@qq.com> Date: Tue, 30 Dec 2025 11:29:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E9=83=A8=E9=97=A8=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/dept.js | 61 +++ admin/src/api/sysdept.js | 59 +-- admin/src/api/workflow/sysdept.js | 63 +++ admin/src/views/sys/dept/index.vue | 418 +++++++----------- .../views/sys/dept/sysdept-add-and-update.vue | 324 ++++++++++---- admin/src/views/workflow/work/own.vue | 2 +- .../controller/SysDeptController.java | 20 +- .../controller/SysDeptUserController.java | 4 +- .../controller/WfCategoryController.java | 14 +- .../controller/WfDeployController.java | 4 +- .../controller/WfFormController.java | 2 +- .../controller/WfInstanceController.java | 2 +- .../controller/WfModelController.java | 5 +- .../controller/WfProcessController.java | 11 +- .../controller/WfTaskController.java | 2 +- .../modules/autogencode/dao/SysDeptDao.java | 13 - .../autogencode/dao/SysDeptUserDao.java | 13 - .../modules/autogencode/entity/PmOwner.java | 6 + .../modules/autogencode/entity/SysDept.java | 109 ----- .../autogencode/entity/SysDeptUser.java | 29 -- .../autogencode/entity/WfCategory.java | 2 - .../autogencode/entity/WfDeployForm.java | 25 -- .../handler/MultiInstanceHandler.java | 4 +- .../autogencode/service/SysDeptService.java | 25 -- .../service/SysDeptUserService.java | 25 -- .../service/impl/SysDeptServiceImpl.java | 42 -- .../service/impl/SysDeptUserServiceImpl.java | 42 -- .../service/impl/WfDeployServiceImpl.java | 16 +- .../service/impl/WfInstanceServiceImpl.java | 5 +- .../service/impl/WfModelServiceImpl.java | 53 ++- .../service/impl/WfProcessServiceImpl.java | 20 +- .../common/request/SystemAdminAddRequest.java | 10 +- .../request/SystemAdminUpdateRequest.java | 5 + .../zbkj/common/response/CommonResult.java | 14 + .../com/zbkj/common/vo/MenuCheckTree.java | 2 +- .../java/com/zbkj/common/vo/MenuTree.java | 2 +- .../java/com/zbkj/common/vo/SysDeptTree.java | 62 +++ .../com/zbkj/common/vo/SysDeptTreeVo.java | 52 +++ .../service/impl/SystemAdminServiceImpl.java | 105 ++++- .../service/impl/SystemMenuServiceImpl.java | 5 +- .../mapper/system/SystemMenuMapper.xml | 2 + 41 files changed, 916 insertions(+), 763 deletions(-) create mode 100644 admin/src/api/workflow/sysdept.js delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptDao.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptUserDao.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDept.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDeptUser.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptService.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptUserService.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptServiceImpl.java delete mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptUserServiceImpl.java create mode 100644 crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTree.java create mode 100644 crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTreeVo.java diff --git a/admin/src/api/dept.js b/admin/src/api/dept.js index bf15361..efce37c 100644 --- a/admin/src/api/dept.js +++ b/admin/src/api/dept.js @@ -7,3 +7,64 @@ export function deptTreeSelect() { method: 'get' }) } + + +/** + * 新增sysdept + * @param pram + */ +export function sysdeptCreateApi(data) { + return request({ + url: `autogencode/sysdept/save`, + method: 'POST', + data + }) +} + +/** + * sysdept更新 + * @param pram + */ +export function sysdeptUpdateApi(data) { + return request({ + url: `autogencode/sysdept/update`, + method: 'POST', + data + }) +} + +/** + * sysdept详情 + * @param pram + */ +export function sysdeptDetailApi(id) { + return request({ + url: `autogencode/sysdept/info/${id}`, + method: 'GET' + }) +} + +/** + * sysdept批量删除 + * @param ids + */ +export function sysdeptDeleteApi(ids) { + return request({ + url: `autogencode/sysdept/delete`, + method: 'POST', + data: ids + }) +} + + +/** + * sysdept列表 + * @param pram + */ +export function sysdeptListApi(params) { + return request({ + url: `autogencode/sysdept/list`, + method: 'GET', + params + }) +} diff --git a/admin/src/api/sysdept.js b/admin/src/api/sysdept.js index f3c2d4a..b6c5c7a 100644 --- a/admin/src/api/sysdept.js +++ b/admin/src/api/sysdept.js @@ -1,16 +1,25 @@ - import request from '@/utils/request' + +// 查询部门树 +export function deptTreeSelect(params) { + return request({ + url: '/autogencode/sysdept/tree', + method: 'get', + params + }) +} + /** * 新增sysdept * @param pram */ export function sysdeptCreateApi(data) { - return request({ - url: `autogencode/sysdept/save`, - method: 'POST', - data - }) + return request({ + url: `autogencode/sysdept/save`, + method: 'POST', + data + }) } /** @@ -18,11 +27,11 @@ export function sysdeptCreateApi(data) { * @param pram */ export function sysdeptUpdateApi(data) { - return request({ - url: `autogencode/sysdept/update`, - method: 'POST', - data - }) + return request({ + url: `autogencode/sysdept/update`, + method: 'POST', + data + }) } /** @@ -30,10 +39,10 @@ export function sysdeptUpdateApi(data) { * @param pram */ export function sysdeptDetailApi(id) { - return request({ - url: `autogencode/sysdept/info/${id}`, - method: 'GET' - }) + return request({ + url: `autogencode/sysdept/info/${id}`, + method: 'GET' + }) } /** @@ -41,11 +50,11 @@ export function sysdeptDetailApi(id) { * @param ids */ export function sysdeptDeleteApi(ids) { - return request({ - url: `autogencode/sysdept/delete`, - method: 'POST', - data: ids - }) + return request({ + url: `autogencode/sysdept/delete`, + method: 'POST', + data: ids + }) } @@ -54,10 +63,10 @@ export function sysdeptDeleteApi(ids) { * @param pram */ export function sysdeptListApi(params) { - return request({ - url: `autogencode/sysdept/list`, - method: 'GET', - params - }) + return request({ + url: `autogencode/sysdept/list`, + method: 'GET', + params + }) } diff --git a/admin/src/api/workflow/sysdept.js b/admin/src/api/workflow/sysdept.js new file mode 100644 index 0000000..f3c2d4a --- /dev/null +++ b/admin/src/api/workflow/sysdept.js @@ -0,0 +1,63 @@ + +import request from '@/utils/request' + +/** + * 新增sysdept + * @param pram + */ +export function sysdeptCreateApi(data) { + return request({ + url: `autogencode/sysdept/save`, + method: 'POST', + data + }) +} + +/** + * sysdept更新 + * @param pram + */ +export function sysdeptUpdateApi(data) { + return request({ + url: `autogencode/sysdept/update`, + method: 'POST', + data + }) +} + +/** + * sysdept详情 + * @param pram + */ +export function sysdeptDetailApi(id) { + return request({ + url: `autogencode/sysdept/info/${id}`, + method: 'GET' + }) +} + +/** + * sysdept批量删除 + * @param ids + */ +export function sysdeptDeleteApi(ids) { + return request({ + url: `autogencode/sysdept/delete`, + method: 'POST', + data: ids + }) +} + + +/** + * sysdept列表 + * @param pram + */ +export function sysdeptListApi(params) { + return request({ + url: `autogencode/sysdept/list`, + method: 'GET', + params + }) +} + diff --git a/admin/src/views/sys/dept/index.vue b/admin/src/views/sys/dept/index.vue index 7ea7351..c25436e 100644 --- a/admin/src/views/sys/dept/index.vue +++ b/admin/src/views/sys/dept/index.vue @@ -1,165 +1,85 @@ diff --git a/admin/src/views/sys/dept/sysdept-add-and-update.vue b/admin/src/views/sys/dept/sysdept-add-and-update.vue index b3bc9d4..fc83ad5 100644 --- a/admin/src/views/sys/dept/sysdept-add-and-update.vue +++ b/admin/src/views/sys/dept/sysdept-add-and-update.vue @@ -3,39 +3,71 @@ + :visible.sync="visible" + width="600px"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + 正常 + 停用 + + + + + + + 取消 @@ -50,85 +82,199 @@ data () { return { visible: false, + // 部门树数据(扁平化) + deptTreeOptions: [], + // 部门树原始数据 + originalDeptTree: [], + // 部门状态映射 + statusMap: { + '0': '正常', + '1': '停用' + }, dataForm: { deptId: 0, - parentId: '' , - ancestors: '' , + parentId: '0' , // 默认顶级部门 + ancestors: '0' , // 默认顶级部门祖级列表 deptName: '' , - orderNum: '' , + orderNum: 0 , // 默认显示顺序为0 leader: '' , phone: '' , email: '' , - isWorkArea: '' , - status: '' , + isWorkArea: 0 , // 默认否 + status: '0' , // 默认正常 remark: '' , }, dataRule: { - parentId: [ - { required: true, message: '父部门id 为必填项', trigger: 'blur' } - ], - ancestors: [ - { required: true, message: '祖级列表 为必填项', trigger: 'blur' } - ], deptName: [ - { required: true, message: '部门名称 为必填项', trigger: 'blur' } - ], - orderNum: [ - { required: true, message: '显示顺序 为必填项', trigger: 'blur' } - ], - leader: [ - { required: true, message: '负责人 为必填项', trigger: 'blur' } - ], - phone: [ - { required: true, message: '联系电话 为必填项', trigger: 'blur' } - ], - email: [ - { required: true, message: '邮箱 为必填项', trigger: 'blur' } - ], - isWorkArea: [ - { required: true, message: '是否作业区 为必填项', trigger: 'blur' } + { required: true, message: '部门名称为必填项', trigger: 'blur' }, ], status: [ - { required: true, message: '部门状态(0正常 1停用) 为必填项', trigger: 'blur' } - ], - remark: [ - { required: true, message: '备注 为必填项', trigger: 'blur' } - ], + { required: true, message: '部门状态为必填项', trigger: 'change' } + ] } } }, + created() { + // 加载部门树数据 + this.loadDeptTree() + }, methods: { - init (id) { // 初始化表单验证规则 + // 加载部门树 + async loadDeptTree() { + try { + const res = await api.deptTreeSelect() + this.originalDeptTree = res + // 将树形数据转换为扁平化列表 + this.deptTreeOptions = this.flattenDeptTree(res) + } catch (error) { + this.$message.error('加载部门树失败') + console.error('加载部门树失败:', error) + } + }, + + // 将树形部门结构转换为扁平化列表 + flattenDeptTree(tree, level = 0, prefix = '') { + let result = [] + + for (let i = 0; i < tree.length; i++) { + const node = { ...tree[i] } + + // 添加缩进前缀 + let nodePrefix = prefix + if (level > 0) { + // 如果是最后一个子节点 + if (i === tree.length - 1) { + nodePrefix += '└ ' + } else { + nodePrefix += '├ ' + } + } + + // 添加到结果列表 + result.push({ + ...node, + displayName: nodePrefix + node.deptName, + level: level + }) + + // 递归处理子节点 + if (node.children && node.children.length > 0) { + const childPrefix = level > 0 ? (i === tree.length - 1 ? ' ' : '│ ') : '' + result = result.concat(this.flattenDeptTree(node.children, level + 1, nodePrefix + childPrefix)) + } + } + + return result + }, + + // 初始化表单 + async init(id) { this.dataForm.deptId = id || 0 this.visible = true - this.$nextTick(function() { - this.$refs['dataForm'].resetFields() - if (this.dataForm.deptId) { - api.sysdeptDetailApi(id).then(function(res) { - this.dataForm = res; - }.bind(this)) + + // 重置表单 + await this.$nextTick() + this.$refs['dataForm'].resetFields() + + // 如果是修改,加载部门详情 + if (this.dataForm.deptId) { + try { + const res = await api.sysdeptDetailApi(id) + this.dataForm = res + // 初始化父部门选择 + this.initParentSelection(res) + } catch (error) { + this.$message.error('加载部门详情失败') + console.error('加载部门详情失败:', error) } - }.bind(this)) + } else { + // 新增时重置父部门选择 + this.parentIdPath = [] + } }, - // 表单数据提交 - dataSubmit () { - this.$refs['dataForm'].validate((valid) => { - if (valid) { - if (this.dataForm.deptId) { - api.sysdeptUpdateApi(this.dataForm).then(function(res) { - this.$message.success('保存成功') - this.visible = false - this.$emit('refreshDataList') - }.bind(this)); - } else { - api.sysdeptCreateApi(this.dataForm).then(function(res) { - this.$message.success('新增成功') - this.visible = false - this.$emit('refreshDataList') - }.bind(this)); + + // 初始化父部门选择 + initParentSelection(deptData) { + // 父部门ID已经直接设置在dataForm中 + this.updateAncestorsByParentId() + }, + + // 根据父部门ID更新祖级列表 + updateAncestorsByParentId() { + if (this.dataForm.parentId === '0') { + // 顶级部门 + this.dataForm.ancestors = '0' + return + } + + // 从原始部门树中查找父部门的祖级列表 + const parentNode = this.findNodeById(this.originalDeptTree, this.dataForm.parentId) + if (parentNode) { + // 如果能找到父节点,使用父节点的祖级列表 + 父节点ID + if (parentNode.parentId === '0') { + this.dataForm.ancestors = '0,' + this.dataForm.parentId + } else { + this.dataForm.ancestors = parentNode.ancestors + ',' + this.dataForm.parentId + } + } else { + // 如果找不到父节点,使用默认值 + this.dataForm.ancestors = '0' + } + }, + + // 从部门树中查找指定ID的节点 + findNodeById(tree, id) { + for (const node of tree) { + if (node.deptId === id) { + return node + } + if (node.children && node.children.length > 0) { + const found = this.findNodeById(node.children, id) + if (found) { + return found } } - }) + } + return null + }, + + // 监听父部门ID变化 + watch: { + 'dataForm.parentId': { + handler(newVal) { + this.updateAncestorsByParentId() + }, + immediate: true + } + }, + + // 表单数据提交 + async dataSubmit() { + try { + // 表单验证 + await this.$refs['dataForm'].validate() + + // 确保祖级列表正确 + this.updateAncestorsByParentId() + + if (this.dataForm.deptId) { + // 更新部门 + await api.sysdeptUpdateApi(this.dataForm) + this.$message.success('保存成功') + } else { + // 新增部门 + await api.sysdeptCreateApi(this.dataForm) + this.$message.success('新增成功') + } + + this.visible = false + this.$emit('refreshDataList') + } catch (error) { + if (error !== false) { // 如果不是表单验证失败 + this.$message.error('操作失败,请重试') + console.error('部门操作失败:', error) + } + } } } } diff --git a/admin/src/views/workflow/work/own.vue b/admin/src/views/workflow/work/own.vue index 835c839..9e0643e 100644 --- a/admin/src/views/workflow/work/own.vue +++ b/admin/src/views/workflow/work/own.vue @@ -201,7 +201,7 @@ export default { /** 查询流程定义列表 */ getList() { this.loading = true; - listOwnProcess(this.addDateRange(this.queryParams, this.dateRange).params).then(response => { + listOwnProcess(this.addDateRange(this.queryParams, this.dateRange)).then(response => { this.ownProcessList = response.list; this.total = response.total; this.loading = false; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptController.java index 3cb0509..8d98add 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptController.java @@ -1,13 +1,17 @@ package com.zbkj.modules.autogencode.controller; import java.util.Arrays; +import java.util.List; import java.util.Map; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zbkj.common.model.system.SysDept; import com.zbkj.common.request.PageParamRequest; import com.zbkj.common.response.CommonResult; import com.zbkj.common.page.CommonPage; +import com.zbkj.common.vo.SysDeptTreeVo; +import com.zbkj.service.service.SysDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -18,8 +22,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zbkj.modules.autogencode.entity.SysDept; -import com.zbkj.modules.autogencode.service.SysDeptService; @@ -200,4 +202,18 @@ public class SysDeptController { return CommonResult.failed(); } + /** + * 获取部门树形结构 + * @param deptName 部门名称 + * @param status 部门状态 + * @return List + */ + @ApiOperation(value = "获取部门树形结构") + @RequestMapping(value = "/tree", method = RequestMethod.GET) + public CommonResult> getDeptTree( + @RequestParam(required = false) String deptName, + @RequestParam(required = false) String status) { + return CommonResult.success(sysDeptService.getDeptTree(deptName, status)); + } + } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptUserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptUserController.java index 85bbd3a..cfa527c 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptUserController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/SysDeptUserController.java @@ -5,9 +5,11 @@ import java.util.Map; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zbkj.common.model.system.SysDeptUser; import com.zbkj.common.request.PageParamRequest; import com.zbkj.common.response.CommonResult; import com.zbkj.common.page.CommonPage; +import com.zbkj.service.service.SysDeptUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -18,8 +20,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zbkj.modules.autogencode.entity.SysDeptUser; -import com.zbkj.modules.autogencode.service.SysDeptUserService; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfCategoryController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfCategoryController.java index 167a7b2..6d2ef05 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfCategoryController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfCategoryController.java @@ -26,7 +26,7 @@ import com.zbkj.modules.autogencode.service.IWfCategoryService; * @createTime 2022/3/10 00:12 */ @RestController -@RequestMapping("/workflow/category") +@RequestMapping("api/workflow/category") public class WfCategoryController { @Autowired private IWfCategoryService categoryService; @@ -100,6 +100,18 @@ public class WfCategoryController { return CommonResult.success(wfCategoryVoCommonPage); } + /** + * 分页显示流程分类 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/listAll", method = RequestMethod.GET) + public CommonResult> listAll(@Validated WfCategory request, @Validated PageParamRequest pageParamRequest) { + List wfCategoryVos = categoryService.queryList(request); + return CommonResult.success(wfCategoryVos); + } + /** * 详情数据 diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfDeployController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfDeployController.java index e96758a..85d0a8f 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfDeployController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfDeployController.java @@ -29,7 +29,7 @@ import com.zbkj.modules.autogencode.service.IWfDeployService; * @createTime 2022/3/24 20:57 */ @RestController -@RequestMapping("/workflow/deploy") +@RequestMapping("api/workflow/deploy") public class WfDeployController { @Autowired private IWfDeployService deployService; @@ -77,7 +77,7 @@ public class WfDeployController { @ApiOperation(value = "获取BPMN XML") @RequestMapping(value = "/bpmnXml/{definitionId}", method = RequestMethod.GET) public CommonResult getBpmnXml(@PathVariable(value = "definitionId") String definitionId) { - return CommonResult.success(deployService.queryBpmnXmlById(definitionId)); + return CommonResult.success(deployService.queryBpmnXmlById(definitionId), true); } /** diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfFormController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfFormController.java index 2b61d92..84027a3 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfFormController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfFormController.java @@ -26,7 +26,7 @@ import com.zbkj.modules.autogencode.service.IWfFormService; * @createTime 2022/3/7 22:07 */ @RestController -@RequestMapping("/workflow/form") +@RequestMapping("api/workflow/form") public class WfFormController { @Autowired private IWfFormService formService; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfInstanceController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfInstanceController.java index 442a41c..e2e045d 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfInstanceController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfInstanceController.java @@ -17,7 +17,7 @@ import com.zbkj.modules.autogencode.service.IWfInstanceService; * @createTime 2022/3/10 00:12 */ @RestController -@RequestMapping("/workflow/instance") +@RequestMapping("api/workflow/instance") public class WfInstanceController { @Autowired private IWfInstanceService instanceService; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfModelController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfModelController.java index 2cbbcb2..89f4982 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfModelController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfModelController.java @@ -31,7 +31,7 @@ import com.zbkj.modules.autogencode.service.IWfModelService; * @createTime 2022/6/21 9:09 */ @RestController -@RequestMapping("/workflow/model") +@RequestMapping("api/workflow/model") public class WfModelController { @Autowired private IWfModelService modelService; @@ -88,7 +88,8 @@ public class WfModelController { @ApiOperation(value = "获取BPMN XML") @RequestMapping(value = "/bpmnXml/{modelId}", method = RequestMethod.GET) public CommonResult getBpmnXml(@PathVariable("modelId") String modelId) { - return CommonResult.success(modelService.queryBpmnXmlById(modelId)); + String s = modelService.queryBpmnXmlById(modelId); + return CommonResult.success(modelService.queryBpmnXmlById(modelId), true); } /** diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfProcessController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfProcessController.java index 43d846a..737bf1d 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfProcessController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfProcessController.java @@ -28,7 +28,7 @@ import com.zbkj.modules.autogencode.service.IWfProcessService; * @createTime 2022/3/24 18:54 */ @RestController -@RequestMapping("/workflow/process") +@RequestMapping("api/workflow/process") public class WfProcessController { @Autowired private IWfProcessService processService; @@ -199,7 +199,7 @@ public class WfProcessController { */ @ApiOperation(value = "启动流程") @RequestMapping(value = "/start/{processDefId}", method = RequestMethod.POST) - public CommonResult start(@PathVariable(value = "processDefId") String processDefId, @RequestBody Map variables) { + public CommonResult start(@PathVariable(value = "processDefId") String processDefId, @RequestParam Map variables) { processService.startProcessByDefId(processDefId, variables); return CommonResult.success("流程启动成功"); } @@ -223,18 +223,19 @@ public class WfProcessController { @ApiOperation(value = "获取BPMN XML") @RequestMapping(value = "/bpmnXml/{processDefId}", method = RequestMethod.GET) public CommonResult getBpmnXml(@PathVariable(value = "processDefId") String processDefId) { - return CommonResult.success(processService.queryBpmnXmlById(processDefId)); + String bpmnXmlById = processService.queryBpmnXmlById(processDefId); + return CommonResult.success(bpmnXmlById, true); } /** * 查询流程详情信息 * * @param procInsId 流程实例ID - * @param taskId 任务ID + * @param taskId 任务ID(非必填) */ @ApiOperation(value = "详情数据") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult detail(@RequestParam String procInsId, @RequestParam String taskId) { + public CommonResult detail(@RequestParam String procInsId, @RequestParam(required = false) String taskId) { return CommonResult.success(processService.queryProcessDetail(procInsId, taskId)); } } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfTaskController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfTaskController.java index 1c7af1a..b18aa99 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfTaskController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/WfTaskController.java @@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletResponse; * @createTime 2022/3/10 00:12 */ @RestController -@RequestMapping("/workflow/task") +@RequestMapping("api/workflow/task") public class WfTaskController { @Autowired private IWfTaskService flowTaskService; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptDao.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptDao.java deleted file mode 100644 index 00206f0..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptDao.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.zbkj.modules.autogencode.dao; - -import com.zbkj.modules.autogencode.entity.SysDept; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * 部门表 DAO 映射层 - */ -@Mapper -public interface SysDeptDao extends BaseMapper { - -} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptUserDao.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptUserDao.java deleted file mode 100644 index 2d10166..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/SysDeptUserDao.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.zbkj.modules.autogencode.dao; - -import com.zbkj.modules.autogencode.entity.SysDeptUser; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * 用户和部门关联表 DAO 映射层 - */ -@Mapper -public interface SysDeptUserDao extends BaseMapper { - -} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java index 62b52bf..eccef90 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java @@ -61,6 +61,12 @@ public class PmOwner implements Serializable { */ @ApiModelProperty(value = "业主状态") private String status; + /** + * 部门ID + */ + @ApiModelProperty(value = "部门ID") + private Long deptId; + /** * 备注 */ diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDept.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDept.java deleted file mode 100644 index 9f2a2e8..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDept.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.zbkj.modules.autogencode.entity; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; - - import java.io.Serializable; -import java.util.Date; -import lombok.Data; - - -@Data -@TableName("sys_dept") -public class SysDept implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 部门id - */ - @ApiModelProperty(value = "部门id") - @TableId - private Long deptId; - /** - * 父部门id - */ - @ApiModelProperty(value = "父部门id") - private Long parentId; - /** - * 祖级列表 - */ - @ApiModelProperty(value = "祖级列表") - private String ancestors; - /** - * 部门名称 - */ - @ApiModelProperty(value = "部门名称") - private String deptName; - /** - * 显示顺序 - */ - @ApiModelProperty(value = "显示顺序") - private Integer orderNum; - /** - * 负责人 - */ - @ApiModelProperty(value = "负责人") - private String leader; - /** - * 联系电话 - */ - @ApiModelProperty(value = "联系电话") - private String phone; - /** - * 邮箱 - */ - @ApiModelProperty(value = "邮箱") - private String email; - /** - * 是否作业区 - */ - @ApiModelProperty(value = "是否作业区") - private String isWorkArea; - /** - * 部门状态(0正常 1停用) - */ - @ApiModelProperty(value = "部门状态(0正常 1停用)") - private String status; - /** - * 创建部门 - */ - @ApiModelProperty(value = "创建部门") - private Long createDept; - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private Long createBy; - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - /** - * 修改人 - */ - @ApiModelProperty(value = "修改人") - private Long updateBy; - /** - * 修改时间 - */ - @ApiModelProperty(value = "修改时间") - private Date updateTime; - /** - * 备注 - */ - @ApiModelProperty(value = "备注") - private String remark; - /** - * 删除标志(0代表存在 2代表删除) - */ - @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)") - private String delFlag; - /** - * - */ - @ApiModelProperty(value = "") - private String tenantId; - -} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDeptUser.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDeptUser.java deleted file mode 100644 index 5812904..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/SysDeptUser.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.zbkj.modules.autogencode.entity; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; - - import java.io.Serializable; -import java.util.Date; -import lombok.Data; - - -@Data -@TableName("sys_dept_user") -public class SysDeptUser implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 用户ID - */ - @ApiModelProperty(value = "用户ID") - @TableId - private Long userId; - /** - * 部门ID - */ - @ApiModelProperty(value = "部门ID") - private Long deptId; - -} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfCategory.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfCategory.java index 35f9b02..890422b 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfCategory.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfCategory.java @@ -31,12 +31,10 @@ public class WfCategory implements Serializable { /** * 分类名称 */ - @NotBlank(message = "分类名称不能为空") private String categoryName; /** * 分类编码 */ - @NotBlank(message = "分类编码不能为空") private String code; /** * 备注 diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfDeployForm.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfDeployForm.java index a37f56d..d085963 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfDeployForm.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/WfDeployForm.java @@ -48,29 +48,4 @@ public class WfDeployForm implements Serializable { */ private String content; - /** - * 创建者 - */ - @ApiModelProperty(value = "创建者") - private String createBy; - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - /** - * 更新者 - */ - @ApiModelProperty(value = "更新者") - private String updateBy; - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - /** - * 备注 - */ - @ApiModelProperty(value = "备注") - private String remark; } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/handler/MultiInstanceHandler.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/handler/MultiInstanceHandler.java index 1bba757..bdf396b 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/handler/MultiInstanceHandler.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/handler/MultiInstanceHandler.java @@ -5,10 +5,10 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zbkj.common.model.system.SystemAdmin; -import com.zbkj.modules.autogencode.entity.SysDeptUser; +import com.zbkj.common.model.system.SysDeptUser; import com.zbkj.flowable.common.constant.ProcessConstants; import com.zbkj.service.service.SystemAdminService; -import com.zbkj.modules.autogencode.service.SysDeptUserService; +import com.zbkj.service.service.SysDeptUserService; import lombok.AllArgsConstructor; import org.flowable.bpmn.model.FlowElement; import org.flowable.bpmn.model.UserTask; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptService.java deleted file mode 100644 index d35c990..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.zbkj.modules.autogencode.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.modules.autogencode.entity.SysDept; -import com.zbkj.common.request.PageParamRequest; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; - - -import java.util.List; -import java.util.Map; - -/** - * 部门表 业务接口 - * +---------------------------------------------------------------------- - */ -public interface SysDeptService extends IService { - - /** - * SysDept 列表查询 - * @param pageParamRequest 分页参数对象 - * @return - */ - List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest); -} - diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptUserService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptUserService.java deleted file mode 100644 index b5faa8c..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/SysDeptUserService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.zbkj.modules.autogencode.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.modules.autogencode.entity.SysDeptUser; -import com.zbkj.common.request.PageParamRequest; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; - - -import java.util.List; -import java.util.Map; - -/** - * 用户和部门关联表 业务接口 - * +---------------------------------------------------------------------- - */ -public interface SysDeptUserService extends IService { - - /** - * SysDeptUser 列表查询 - * @param pageParamRequest 分页参数对象 - * @return - */ - List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest); -} - diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptServiceImpl.java deleted file mode 100644 index 3b2f31e..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptServiceImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.modules.autogencode.service.impl; - -import com.github.pagehelper.PageHelper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -import com.zbkj.modules.autogencode.dao.SysDeptDao; -import com.zbkj.modules.autogencode.entity.SysDept; -import com.zbkj.modules.autogencode.service.SysDeptService; -import com.zbkj.common.page.CommonPage; -import com.zbkj.common.request.PageParamRequest; - -import javax.annotation.Resource; -import java.util.Map; -import java.util.Arrays; -import java.util.List; - - -@Service("sysDeptService") -public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { - - - @Resource - private SysDeptDao dao; - - - /** - * 带分页参数的列表查询实现 - */ - @Override - public List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest) { - - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - return dao.selectList(queryWrapper); - } - - -} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptUserServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptUserServiceImpl.java deleted file mode 100644 index 9de8745..0000000 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/SysDeptUserServiceImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.modules.autogencode.service.impl; - -import com.github.pagehelper.PageHelper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -import com.zbkj.modules.autogencode.dao.SysDeptUserDao; -import com.zbkj.modules.autogencode.entity.SysDeptUser; -import com.zbkj.modules.autogencode.service.SysDeptUserService; -import com.zbkj.common.page.CommonPage; -import com.zbkj.common.request.PageParamRequest; - -import javax.annotation.Resource; -import java.util.Map; -import java.util.Arrays; -import java.util.List; - - -@Service("sysDeptUserService") -public class SysDeptUserServiceImpl extends ServiceImpl implements SysDeptUserService { - - - @Resource - private SysDeptUserDao dao; - - - /** - * 带分页参数的列表查询实现 - */ - @Override - public List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest) { - - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - return dao.selectList(queryWrapper); - } - - -} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfDeployServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfDeployServiceImpl.java index 16d8955..d351bd7 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfDeployServiceImpl.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfDeployServiceImpl.java @@ -117,9 +117,21 @@ public class WfDeployServiceImpl implements IWfDeployService { @Override public String queryBpmnXmlById(String definitionId) { + // 检查流程定义是否存在 + ProcessDefinition processDefinition = repositoryService.getProcessDefinition(definitionId); + if (processDefinition == null) { + return null; + } + + // 获取流程模型 InputStream inputStream = repositoryService.getProcessModel(definitionId); + if (inputStream == null) { + return null; + } + try { - return IoUtil.read(inputStream, "UTF-8"); + String bpmnXml = IoUtil.read(inputStream, "UTF-8"); + return bpmnXml; } catch (IORuntimeException exception) { throw new RuntimeException("加载xml文件异常"); } @@ -133,4 +145,4 @@ public class WfDeployServiceImpl implements IWfDeployService { deployFormMapper.delete(new LambdaQueryWrapper().eq(WfDeployForm::getDeployId, deployId)); } } -} +} \ No newline at end of file diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfInstanceServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfInstanceServiceImpl.java index b069825..a6603ea 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfInstanceServiceImpl.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfInstanceServiceImpl.java @@ -2,17 +2,16 @@ package com.zbkj.modules.autogencode.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.zbkj.common.exception.CrmebException; -import com.zbkj.modules.autogencode.entity.SysDept; +import com.zbkj.common.model.system.SysDept; import com.zbkj.common.model.system.SystemRole; +import com.zbkj.service.service.SysDeptService; import com.zbkj.service.service.SystemAdminService; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; import com.zbkj.flowable.common.constant.TaskConstants; import com.zbkj.flowable.factory.FlowServiceFactory; -import com.zbkj.modules.autogencode.service.SysDeptService; import com.zbkj.service.service.SystemRoleService; import com.zbkj.modules.autogencode.entity.bo.WfTaskBo; import com.zbkj.modules.autogencode.entity.vo.WfFormVo; diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfModelServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfModelServiceImpl.java index 86b2628..dde1c4a 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfModelServiceImpl.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfModelServiceImpl.java @@ -190,8 +190,14 @@ public class WfModelServiceImpl extends FlowServiceFactory implements IWfModelSe @Override public String queryBpmnXmlById(String modelId) { + // 检查模型是否存在 + Model model = repositoryService.getModel(modelId); + // 获取模型的编辑源数据 byte[] bpmnBytes = repositoryService.getModelEditorSource(modelId); - return StrUtil.utf8Str(bpmnBytes); + + // 转换为字符串 + String bpmnXml = StrUtil.utf8Str(bpmnBytes); + return bpmnXml; } @Override @@ -204,6 +210,12 @@ public class WfModelServiceImpl extends FlowServiceFactory implements IWfModelSe model.setMetaInfo(metaInfo); // 保存流程模型 repositoryService.saveModel(model); + + // 如果有BPMN XML内容,则保存 + if (StrUtil.isNotBlank(modelBo.getBpmnXml())) { + byte[] bpmnXmlBytes = modelBo.getBpmnXml().getBytes(StandardCharsets.UTF_8); + repositoryService.addModelEditorSource(model.getId(), bpmnXmlBytes); + } } @Override @@ -352,4 +364,43 @@ public class WfModelServiceImpl extends FlowServiceFactory implements IWfModelSe } return JSONObject.toJSONString(metaInfo); } + + /** + * 生成默认的BPMN XML模板 + * @param model 流程模型 + * @return BPMN XML字符串 + */ + private String generateDefaultBpmnXml(Model model) { + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + sb.append("\n"); + + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + + sb.append(" "); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(" \n"); + sb.append(""); + + return sb.toString(); + } } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfProcessServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfProcessServiceImpl.java index d30807a..a81b8aa 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfProcessServiceImpl.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/WfProcessServiceImpl.java @@ -2,19 +2,18 @@ package com.zbkj.modules.autogencode.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.system.SysDept; import com.zbkj.common.page.CommonPage; import com.zbkj.common.request.PageParamRequest; import com.zbkj.modules.autogencode.dao.WfDeployFormMapper; -import com.zbkj.modules.autogencode.entity.SysDept; import com.zbkj.common.model.system.SystemRole; +import com.zbkj.service.service.SysDeptService; import com.zbkj.service.service.SystemAdminService; import com.zbkj.common.exception.CrmebException; // import com.zbkj.common.utils.DateUtils; // 该类不存在 @@ -31,7 +30,6 @@ import com.zbkj.flowable.utils.ModelUtils; import com.zbkj.flowable.utils.ProcessFormUtils; import com.zbkj.flowable.utils.ProcessUtils; import com.zbkj.flowable.utils.TaskUtils; -import com.zbkj.modules.autogencode.service.SysDeptService; import com.zbkj.service.service.SystemRoleService; import com.zbkj.modules.autogencode.entity.WfDeployForm; import com.zbkj.modules.autogencode.entity.vo.*; @@ -624,9 +622,21 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce */ @Override public String queryBpmnXmlById(String processDefId) { + // 检查流程定义是否存在 + ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processDefId); + if (processDefinition == null) { + return null; + } + + // 获取流程模型 InputStream inputStream = repositoryService.getProcessModel(processDefId); + if (inputStream == null) { + return null; + } + try { - return IoUtil.read(inputStream, "UTF-8"); + String bpmnXml = IoUtil.read(inputStream, "UTF-8"); + return bpmnXml; } catch (IORuntimeException exception) { throw new RuntimeException("加载xml文件异常"); } diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java index 3aceae6..65b6e06 100644 --- a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java @@ -1,5 +1,6 @@ package com.zbkj.common.request; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.zbkj.common.constants.RegularConstants; import com.zbkj.common.utils.ValidateFormUtil; @@ -13,6 +14,7 @@ import org.hibernate.validator.constraints.Range; import javax.validation.constraints.*; import java.io.Serializable; +import java.util.List; /** * 后台管理员表 @@ -30,10 +32,10 @@ import java.io.Serializable; @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("eb_system_admin") -@ApiModel(value="SystemAdminAddRequest对象", description="后台管理员表") +@ApiModel(value = "SystemAdminAddRequest对象", description = "后台管理员表") public class SystemAdminAddRequest implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; @ApiModelProperty(value = "后台管理员账号", required = true) @NotNull(message = "后台管理员账号不能为空") @@ -65,5 +67,7 @@ public class SystemAdminAddRequest implements Serializable { @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号") private String phone; -// 添加部门Id,是list类型。 + @TableField(exist = false) + private List depts; + } diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java index e2cc342..794e53b 100644 --- a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java @@ -1,5 +1,6 @@ package com.zbkj.common.request; +import com.baomidou.mybatisplus.annotation.TableField; import com.zbkj.common.constants.RegularConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -12,6 +13,7 @@ import org.hibernate.validator.constraints.Range; import javax.validation.constraints.*; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * 后台管理员修改对象 @@ -66,4 +68,7 @@ public class SystemAdminUpdateRequest implements Serializable { @NotBlank(message = "手机号不能为空") @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号") private String phone; + + @TableField(exist = false) + private List depts; } diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java index c0e6498..d88127b 100644 --- a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java @@ -89,6 +89,20 @@ public class CommonResult { return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), message, data); } + /** + * 成功返回结果 + * + * @param data 字符串数据 + * @param putInData 是否将字符串放入data字段中 + */ + public static CommonResult success(String data, boolean putInData) { + if (putInData) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), data); + } else { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), data, null); + } + } + /** * 失败返回结果 * @param errorCode 错误码 diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java index 3e83b9a..aaf9427 100644 --- a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java @@ -41,7 +41,7 @@ public class MenuCheckTree { // 排序 private List sortList(List treeMenus) { - treeMenus = treeMenus.stream().sorted(Comparator.comparing(MenuCheckVo::getSort).reversed()).collect(Collectors.toList()); + treeMenus = treeMenus.stream().sorted(Comparator.comparing(MenuCheckVo::getSort)).collect(Collectors.toList()); treeMenus.forEach(e -> { if (CollUtil.isNotEmpty(e.getChildList())) { e.setChildList(sortList(e.getChildList())); diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java index 9768d1a..221a32c 100644 --- a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java @@ -41,7 +41,7 @@ public class MenuTree { // 排序 private List sortList(List treeMenus) { - treeMenus = treeMenus.stream().sorted(Comparator.comparing(MenusResponse::getSort).reversed()).collect(Collectors.toList()); + treeMenus = treeMenus.stream().sorted(Comparator.comparing(MenusResponse::getSort)).collect(Collectors.toList()); treeMenus.forEach(e -> { if (CollUtil.isNotEmpty(e.getChildList())) { e.setChildList(sortList(e.getChildList())); diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTree.java new file mode 100644 index 0000000..c7ae164 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTree.java @@ -0,0 +1,62 @@ +package com.zbkj.common.vo; + +import cn.hutool.core.collection.CollUtil; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + + +public class SysDeptTree { + + private List deptList = new ArrayList<>(); + + public SysDeptTree(List deptList) { + this.deptList = deptList; + } + + //建立树形结构 + public List buildTree(){ + List treeDepts = new ArrayList<>(); + for(SysDeptTreeVo deptNode : getRootNode()) { + deptNode = buildChildTree(deptNode); + treeDepts.add(deptNode); + } + return sortList(treeDepts); + } + + // 排序 + private List sortList(List treeDepts) { + treeDepts = treeDepts.stream().sorted(Comparator.comparing(SysDeptTreeVo::getOrderNum)).collect(Collectors.toList()); + treeDepts.forEach(e -> { + if (CollUtil.isNotEmpty(e.getChildren())) { + e.setChildren(sortList(e.getChildren())); + } + }); + return treeDepts; + } + + //递归,建立子树形结构 + private SysDeptTreeVo buildChildTree(SysDeptTreeVo pNode){ + List childDepts = new ArrayList<>(); + for(SysDeptTreeVo deptNode : deptList) { + if(deptNode.getParentId() != null && deptNode.getParentId().equals(pNode.getDeptId())) { + childDepts.add(buildChildTree(deptNode)); + } + } + pNode.setChildren(childDepts); + return pNode; + } + + //获取根节点 + private List getRootNode() { + List rootDeptLists = new ArrayList<>(); + for(SysDeptTreeVo deptNode : deptList) { + if(deptNode.getParentId() == null || deptNode.getParentId() == 0) { + rootDeptLists.add(deptNode); + } + } + return rootDeptLists; + } +} \ No newline at end of file diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTreeVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTreeVo.java new file mode 100644 index 0000000..f34b0a2 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SysDeptTreeVo.java @@ -0,0 +1,52 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + + +@Data +public class SysDeptTreeVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "部门id") + private Long deptId; + + @ApiModelProperty(value = "父部门id") + private Long parentId; + + @ApiModelProperty(value = "祖级列表") + private String ancestors; + + @ApiModelProperty(value = "部门名称") + private String deptName; + + @ApiModelProperty(value = "显示顺序") + private Integer orderNum; + + @ApiModelProperty(value = "负责人") + private String leader; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "是否作业区") + private String isWorkArea; + + @ApiModelProperty(value = "部门状态(0正常 1停用)") + private String status; + + @ApiModelProperty(value = "备注") + private String remark; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children = new ArrayList<>(); +} \ No newline at end of file diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java index 3cfdea1..b577077 100644 --- a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SysDept; +import com.zbkj.common.model.system.SysDeptUser; import com.zbkj.common.model.system.SystemAdmin; import com.zbkj.common.model.system.SystemRole; import com.zbkj.common.request.PageParamRequest; @@ -18,9 +20,7 @@ import com.zbkj.common.utils.CrmebUtil; import com.zbkj.common.utils.ValidateFormUtil; import com.github.pagehelper.PageHelper; import com.zbkj.service.dao.SystemAdminDao; -import com.zbkj.service.service.SystemAdminService; -import com.zbkj.service.service.SystemRoleService; -import com.zbkj.service.service.UserService; +import com.zbkj.service.service.*; import com.zbkj.common.model.user.User; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -34,18 +34,7 @@ import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; -/** - * SystemAdminServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ + @Service public class SystemAdminServiceImpl extends ServiceImpl implements SystemAdminService { @@ -57,7 +46,12 @@ public class SystemAdminServiceImpl extends ServiceImpl类型) - // 如果没有,需要先在SystemAdminAddRequest中添加该字段 - + // 处理部门关联 将systemAdminAddRequest中的depts放入到 SysDeptUser中 + List depts = systemAdminAddRequest.getDepts(); + if (CollUtil.isNotEmpty(depts) && systemAdmin.getId() != null) { + List sysDeptUserList = new ArrayList<>(); + for (String deptIdStr : depts) { + if (StrUtil.isNotBlank(deptIdStr)) { + Long deptId = Long.parseLong(deptIdStr); + SysDeptUser sysDeptUser = new SysDeptUser(); + sysDeptUser.setUserId(Long.valueOf(systemAdmin.getId())); + sysDeptUser.setDeptId(deptId); + sysDeptUserList.add(sysDeptUser); + } + } + if (CollUtil.isNotEmpty(sysDeptUserList)) { + sysDeptUserService.saveBatch(sysDeptUserList); + } + } + // 将相关信息保存到eb_user表 User user = new User(); user.setAccount(systemAdmin.getAccount()); @@ -153,7 +161,9 @@ public class SystemAdminServiceImpl extends ServiceImpl depts = systemAdminRequest.getDepts(); + Integer adminId = systemAdminRequest.getId(); + + if (adminId != null) { + // 删除原有部门关联 + sysDeptUserService.remove(Wrappers.lambdaQuery() + .eq(SysDeptUser::getUserId, Long.valueOf(adminId))); + + // 新增部门关联 + if (CollUtil.isNotEmpty(depts)) { + List sysDeptUserList = new ArrayList<>(); + for (String deptIdStr : depts) { + if (StrUtil.isNotBlank(deptIdStr)) { + Long deptId = Long.parseLong(deptIdStr); + SysDeptUser sysDeptUser = new SysDeptUser(); + sysDeptUser.setUserId(Long.valueOf(adminId)); + sysDeptUser.setDeptId(deptId); + sysDeptUserList.add(sysDeptUser); + } + } + if (CollUtil.isNotEmpty(sysDeptUserList)) { + sysDeptUserService.saveBatch(sysDeptUserList); + } + } + + // 更新eb_user表 + LambdaQueryWrapper userQuery = Wrappers.lambdaQuery(); + userQuery.eq(User::getAdminid, adminId); + User user = userService.getOne(userQuery); + + if (user != null) { + // 更新用户信息 + user.setAccount(systemAdmin.getAccount()); + if (StrUtil.isNotBlank(systemAdmin.getPwd())) { + user.setPwd(systemAdmin.getPwd()); + } + user.setRealName(systemAdmin.getRealName()); + user.setPhone(systemAdmin.getPhone()); + user.setUpdateTime(new Date()); + + userService.updateById(user); + } + } + } + + return adminUpdated; } /** diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java index ae455f8..0338c07 100644 --- a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java @@ -71,6 +71,8 @@ public class SystemMenuServiceImpl extends ServiceImpl