From b6eeb85b3a825361cf8a6e56ef210e1f2784b0af Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Fri, 1 Dec 2023 09:44:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=AE=BE=E7=BD=AE=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/api/flow2/FlowListVo.java | 20 +++++ .../flowable/biz/flow2/FlowMapper.java | 16 ++++ .../flowable/biz/flow2/FlowMapper.xml | 12 +++ .../flowable/biz/flow2/FlowRest.java | 13 +++- .../flowable/biz/flow2/FlowService.java | 9 +++ .../system/sysflowcc/SysFlowccDetailsVo.java | 31 ++++++++ .../system/sysflowcc/SysFlowccDto.java | 28 +++++++ .../system/sysflowcc/SysFlowccMapper.java | 9 +++ .../system/sysflowcc/SysFlowccMapper.xml | 7 ++ .../system/sysflowcc/SysFlowccQuery.java | 17 +++++ .../system/sysflowcc/SysFlowccRest.java | 46 +++++++++++- .../system/sysflowcc/SysFlowccService.java | 75 ++++++++++++++++++- 12 files changed, 278 insertions(+), 5 deletions(-) create mode 100644 yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/FlowListVo.java create mode 100644 yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.java create mode 100644 yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.xml create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDetailsVo.java create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDto.java create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccQuery.java diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/FlowListVo.java b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/FlowListVo.java new file mode 100644 index 00000000..90761a3c --- /dev/null +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/api/flow2/FlowListVo.java @@ -0,0 +1,20 @@ +package com.yxt.supervise.flowable.api.flow2; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Data +public class FlowListVo { + + @JsonProperty("key") + private String KEY_; + @JsonProperty("name") + private String NAME_; + @JsonProperty("id") + private String ID_; +} diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.java b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.java new file mode 100644 index 00000000..e6776e5b --- /dev/null +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.java @@ -0,0 +1,16 @@ +package com.yxt.supervise.flowable.biz.flow2; + +import com.yxt.supervise.flowable.api.flow2.FlowListVo; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Mapper +public interface FlowMapper { + List selectFlowList(); +} diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.xml b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.xml new file mode 100644 index 00000000..d77d392e --- /dev/null +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowRest.java b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowRest.java index 6b95eaa5..9124bb1b 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowRest.java +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowRest.java @@ -7,17 +7,17 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.supervise.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.supervise.flowable.api.flow2.FlowDelegateQuery; import com.yxt.supervise.flowable.api.flow2.FlowFeign; +import com.yxt.supervise.flowable.api.flow2.FlowListVo; import com.yxt.supervise.flowable.sqloperationsymbol.BusinessVariables; import io.swagger.annotations.ApiOperation; import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.*; @@ -103,4 +103,11 @@ public class FlowRest implements FlowFeign { return flowService.delegate(flowDelegateQuery); } + @ApiOperation(value = "所有流程名称") + @GetMapping(value = "/selectFlowList") + @ResponseBody + ResultBean> selectFlowList() { + return flowService.selectFlowList(); + } + } diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowService.java b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowService.java index 59b04ea7..ddb768e4 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowService.java +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/supervise/flowable/biz/flow2/FlowService.java @@ -8,6 +8,7 @@ import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.result.ResultBean; import com.yxt.supervise.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.supervise.flowable.api.flow2.FlowDelegateQuery; +import com.yxt.supervise.flowable.api.flow2.FlowListVo; import com.yxt.supervise.flowable.api.flow2.MessageFlowVo; import com.yxt.supervise.flowable.api.flowcomment.FlowComment; import com.yxt.supervise.flowable.api.flowtask.DelegateQuery; @@ -74,6 +75,8 @@ public class FlowService { private MessageFeign messageFeign; @Autowired private SysFlowccFeign sysFlowccFeign; + @Autowired + private FlowMapper flowMapper; public ResultBean getNextNodeUser(BusinessVariables bv) { ResultBean rb = ResultBean.fireFail(); @@ -714,4 +717,10 @@ public class FlowService { } return rb.success().setMsg("抄送" + userName.toString() + "成功!"); } + + public ResultBean> selectFlowList() { + ResultBean> rb = ResultBean.fireFail(); + List list = flowMapper.selectFlowList(); + return rb.success().setData(list); + } } diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDetailsVo.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDetailsVo.java new file mode 100644 index 00000000..21b6d9f7 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDetailsVo.java @@ -0,0 +1,31 @@ +package com.yxt.supervise.system.sysflowcc; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Data +public class SysFlowccDetailsVo { + + private String sid; // sid + + @ApiModelProperty("流程key") + private String flowKey; // 流程key + @ApiModelProperty("流程名称") + private String flowName; // 流程名称 + @ApiModelProperty("角色sid") + private String roleSid; // 角色sid + @ApiModelProperty("角色名称") + private String roleName; // 角色名称 + @ApiModelProperty("角色sid") + private List roleSids = new ArrayList<>(); // 角色sid + @ApiModelProperty("角色名称") + private List roleNames = new ArrayList<>(); // 角色名称 +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDto.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDto.java new file mode 100644 index 00000000..50b8ccb6 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccDto.java @@ -0,0 +1,28 @@ +package com.yxt.supervise.system.sysflowcc; + +import com.yxt.common.core.dto.Dto; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Data +public class SysFlowccDto implements Dto { + + private String sid; // sid + + @ApiModelProperty("流程key") + private String flowKey; // 流程key + @ApiModelProperty("流程名称") + private String flowName; // 流程名称 + @ApiModelProperty("角色sid") + private List roleSids; // 角色sid + @ApiModelProperty("角色名称") + private List roleNames; // 角色名称 +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.java index 6c9adbeb..bafb10a9 100644 --- a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.java +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.java @@ -1,7 +1,11 @@ package com.yxt.supervise.system.sysflowcc; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** @@ -13,4 +17,9 @@ import org.apache.ibatis.annotations.Select; public interface SysFlowccMapper extends BaseMapper { @Select("select * from sys_flowcc where flowKey = #{flowKey}") SysFlowccVo selectByFlowKey(String modelId); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + @Select("select * from sys_flowcc where flowKey = #{flowKey} and sid != #{sid}") + SysFlowccVo selectByFlowKeyAndSid(@Param("flowKey") String flowKey, @Param("sid") String sid); } diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.xml b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.xml index 0dcfc4cd..4df0174b 100644 --- a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.xml +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccMapper.xml @@ -1,4 +1,11 @@ + \ No newline at end of file diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccQuery.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccQuery.java new file mode 100644 index 00000000..390f5d23 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccQuery.java @@ -0,0 +1,17 @@ +package com.yxt.supervise.system.sysflowcc; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Data +public class SysFlowccQuery implements Query { + + @ApiModelProperty("流程名称") + private String flowName; // 流程名称 +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccRest.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccRest.java index d8f14cea..fc04d05f 100644 --- a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccRest.java +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccRest.java @@ -1,10 +1,13 @@ package com.yxt.supervise.system.sysflowcc; +import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Arrays; import java.util.List; /** @@ -18,9 +21,50 @@ public class SysFlowccRest { @Autowired private SysFlowccService sysFlowccService; + @ApiOperation("根据流程的id查询抄送的角色") @PostMapping("/getRoleSidByModelId/{modelId}") - public ResultBean getRoleSidByModelId(@PathVariable("modelId") String modelId){ + public ResultBean getRoleSidByModelId(@PathVariable("modelId") String modelId) { return sysFlowccService.getRoleSidByModelId(modelId); } + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + @ResponseBody + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = sysFlowccService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + @ResponseBody + public ResultBean save(@RequestBody SysFlowccDto dto) { + return sysFlowccService.saveOrUpdateDto(dto); + } + + @ApiOperation("根据sid删除记录") + @DeleteMapping("/delBySids") + @ResponseBody + public ResultBean delBySids(@RequestBody String[] sids) { + ResultBean rb = ResultBean.fireFail(); + sysFlowccService.delBySids(sids); + return rb.success(); + } + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + @ResponseBody + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid) { + ResultBean rb = ResultBean.fireFail(); + SysFlowccDetailsVo vo = sysFlowccService.fetchDetailsVoBySid(sid); + String roleSid = vo.getRoleSid(); + String roleName = vo.getRoleName(); + String[] roleSids = roleSid.split(","); + String[] roleNames = roleName.split(","); + vo.setRoleSids(Arrays.asList(roleSids)); + vo.setRoleNames(Arrays.asList(roleNames)); + return rb.success().setData(vo); + } } diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccService.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccService.java index 93ccfb50..d116aadd 100644 --- a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccService.java +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysflowcc/SysFlowccService.java @@ -1,19 +1,92 @@ package com.yxt.supervise.system.sysflowcc; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.List; + /** * @description: * @author: dimengzhe * @date: 2023/11/30 **/ @Service -public class SysFlowccService extends MybatisBaseService { +public class SysFlowccService extends MybatisBaseService { public ResultBean getRoleSidByModelId(String modelId) { ResultBean rb = ResultBean.fireFail(); SysFlowccVo sysFlowccVo = baseMapper.selectByFlowKey(modelId); return rb.success().setData(sysFlowccVo); } + + public PagerVo listPageVo(PagerQuery pq) { + SysFlowccQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getFlowName())) { + qw.like("flowName", query.getFlowName()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateDto(SysFlowccDto dto) { + ResultBean rb = ResultBean.fireFail(); + String dtoSid = dto.getSid(); + List roleSids = dto.getRoleSids(); + List roleNames = dto.getRoleNames(); + StringBuilder roleSidPath = new StringBuilder(); + StringBuilder roleNamePath = new StringBuilder(); + if (roleSids.isEmpty()) { + return rb.setMsg("请选择角色"); + } + for (String roleSid : roleSids) { + roleSidPath.append(roleSid).append(","); + } + for (String roleName : roleNames) { + roleNamePath.append(roleName).append(","); + } + if (StringUtils.isBlank(dtoSid)) { + SysFlowccVo sysFlowccVo = baseMapper.selectByFlowKey(dto.getFlowKey()); + if (sysFlowccVo != null) { + return rb.setMsg("此流程已存在,请重新选择"); + } + SysFlowcc sysFlowcc = new SysFlowcc(); + sysFlowcc.setFlowKey(dto.getFlowKey()); + sysFlowcc.setFlowName(dto.getFlowName()); + sysFlowcc.setRoleSid(roleSidPath.substring(0, roleSidPath.lastIndexOf(","))); + sysFlowcc.setRoleName(roleNamePath.substring(0, roleNamePath.lastIndexOf(","))); + save(sysFlowcc); + return rb.success().setMsg("添加成功"); + } + SysFlowcc sysFlowcc = fetchBySid(dtoSid); + if (sysFlowcc == null) { + return rb.setMsg("流程抄送不存在"); + } + SysFlowccVo sysFlowccVo = baseMapper.selectByFlowKeyAndSid(dto.getFlowKey(), dtoSid); + if (sysFlowccVo != null) { + return rb.setMsg("此流程已存在,请重新选择"); + } + sysFlowcc.setFlowKey(dto.getFlowKey()); + sysFlowcc.setFlowName(dto.getFlowName()); + sysFlowcc.setRoleSid(roleSidPath.substring(0, roleSidPath.lastIndexOf(","))); + sysFlowcc.setRoleName(roleNamePath.substring(0, roleNamePath.lastIndexOf(","))); + baseMapper.updateById(sysFlowcc); + return rb.success().setMsg("修改成功"); + } + + public SysFlowccDetailsVo fetchDetailsVoBySid(String sid) { + SysFlowcc entity = fetchBySid(sid); + SysFlowccDetailsVo vo = new SysFlowccDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } }