Browse Source

修改

zhanglei
dimengzhe 2 years ago
parent
commit
7d12d389ac
  1. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/busvehicleapply/BusVehicleApplyDto.java
  2. 21
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowListVo.java
  3. 6
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java
  4. 6
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java
  5. 10
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.java
  6. 8
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.xml
  7. 75
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  8. 6
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableService.java
  9. 9
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccRest.java
  10. 23
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccService.java

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/busvehicleapply/BusVehicleApplyDto.java

@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
/**
@ -89,5 +90,5 @@ public class BusVehicleApplyDto implements Dto {
@ApiModelProperty("当前组织机构全路径sid")
private String orgPath;
@ApiModelProperty("附件信息")
private List<CommonAppendixDto> commonAppendixs; //附件信息
private List<CommonAppendixDto> commonAppendixs = new ArrayList<>(); //附件信息
}

21
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowListVo.java

@ -0,0 +1,21 @@
package com.yxt.anrui.flowable.api.flow;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2023/2/22 11:06
* @Description
*/
@Data
public class FlowListVo implements Vo {
private static final long serialVersionUID = -1640222644080157655L;
@JsonProperty("key")
private String KEY_;
@JsonProperty("name")
private String NAME_;
@JsonProperty("id")
private String ID_;
}

6
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java

@ -5,6 +5,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
@ -75,5 +76,10 @@ public class FlowableFallback implements FlowableFeign {
return null;
}
@Override
public ResultBean<List<FlowListVo>> selectFlowList() {
return null;
}
}

6
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java

@ -9,6 +9,7 @@ import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Api(tags = "Flowable")
@ -120,4 +121,9 @@ public interface FlowableFeign {
@PostMapping(value = "/breakProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> breakProcess(@RequestBody com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl);
@ApiOperation(value = "所有流程名称")
@GetMapping(value = "/selectFlowList")
@ResponseBody
ResultBean<List<FlowListVo>> selectFlowList();
}

10
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.java

@ -1,20 +1,30 @@
package com.yxt.anrui.flowable.biz.flow;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.flowable.api.flow.FlowListVo;
import com.yxt.anrui.flowable.api.flow.FlowProcinst;
import com.yxt.anrui.flowable.api.flow.Flowable;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@Mapper
public interface FlowableMapper extends BaseMapper<Flowable> {
void insetFlowableTask(Map<String, Object> params);
FlowProcinst getFlowProcinstById(@Param("id") String id);
@Select("select * from act_hi_procinst where proc_inst_id_=#{id}")
Map<String, String> getProcessInstanceById(@Param("id") String procInsId);
@Select("select * from act_re_procdef where id_=#{id}")
Map<String, String> getProcessDefByDefId(@Param("id") String id);
/**
* @return 查询所有流程名称及key
*/
List<FlowListVo> selectFlowList();
}

8
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableMapper.xml

@ -15,6 +15,14 @@
<select id="getFlowProcinstById" resultType="com.yxt.anrui.flowable.api.flow.FlowProcinst">
select * from act_hi_procinst where ID_=#{id}
</select>
<select id="selectFlowList" resultType="com.yxt.anrui.flowable.api.flow.FlowListVo">
select t1.KEY_ ,t1.NAME_,t1.ID_
FROM act_re_procdef t1
INNER JOIN
(select SUBSTRING_INDEX(GROUP_CONCAT(ID_ order by VERSION_ desc),',',1) AS id
from act_re_procdef GROUP BY KEY_) AS t2 ON t2.id = t1.ID_
</select>
<!--
<insert id="insetFlowableTask">
insert into `act_ru_task` (`REV`, `EXECUTION_ID`, `PROC_INST_ID`, `PROC_DEF_ID`,

75
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -29,6 +29,7 @@ package com.yxt.anrui.flowable.biz.flow;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.flowable.api.flow.*;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
@ -49,6 +50,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.HistoryService;
@ -63,6 +65,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.*;
/**
* Project: anrui-parent <br/>
@ -98,13 +101,16 @@ public class FlowableRest implements FlowableFeign {
private MessageFeign messageFeign;
@Resource
protected HistoryService historyService;
/**
* 流程抄送的功能
*
* @param map
* @return
*/
@Override
public ResultBean cc(Map<String, Object> map) {
ResultBean rb = ResultBean.fireFail();
log.info("FlowableRest-cc:{}", JSONObject.toJSONString(map));
Object bv1 = map.get("bv");
BusinessVariables bv = new BusinessVariables();
@ -115,16 +121,21 @@ public class FlowableRest implements FlowableFeign {
//流程定义的id
String modelId = bv.getModelId();
//将modelId根据冒号:分成三部分,取第一部分作为key
List<String> stringList = Arrays.asList(modelId.split(":"));
modelId = stringList.get(0);
//抄送的角色的sid
ResultBean<SysFlowccVo> roleSidByModelId = sysFlowccFeign.getRoleSidByModelId(modelId);
//组织机构sid
String orgSidPath = bv.getOrgSidPath();
if(!roleSidByModelId.getSuccess()){
return roleSidByModelId;
if (roleSidByModelId.getData() == null) {
log.info("抄送失败,没有配置对应的角色!");
return rb.setMsg("抄送失败,没有配置对应的角色!");
}
SysFlowccVo data = roleSidByModelId.getData();
if (StringUtils.isBlank(data.getRoleSid())) {
return ResultBean.fireFail().setMsg("抄送失败,没有配置对应的角色!");
log.info("抄送失败,没有配置对应的角色!");
return rb.setMsg("抄送失败,没有配置对应的角色!");
}
List<String> list = Arrays.asList(data.getRoleSid().split(","));
UserByRolesAndOrgQuery userQuery = new UserByRolesAndOrgQuery();
@ -132,7 +143,8 @@ public class FlowableRest implements FlowableFeign {
userQuery.setOrgSidPath(orgSidPath);
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRoles(userQuery).getData();
if (sysUserVos == null || sysUserVos.size() < 1) {
return ResultBean.fireFail().setMsg("抄送失败,没有用户!");
log.info("抄送失败,没有用户!");
return rb.setMsg("抄送失败,没有用户!");
}
StringBuilder userName = new StringBuilder();
StringBuilder userSids = new StringBuilder();
@ -152,12 +164,12 @@ public class FlowableRest implements FlowableFeign {
.includeProcessVariables().taskId(bv.getTaskId()).singleResult();
if (historicTaskInstance == null) {
log.info("抄送失败:没有获取到业务参数!");
return ResultBean.fireFail().setMsg("抄送失败!");
return rb.setMsg("抄送失败!");
}
Map<String, Object> processVariables = historicTaskInstance.getProcessVariables();
if (historicTaskInstance == null) {
log.info("抄送失败:没有获取到业务参数!");
return ResultBean.fireFail().setMsg("抄送失败!");
return rb.setMsg("抄送失败!");
}
Map<String, Object> app = new HashMap<>();
if (processVariables.get("app") != null) {
@ -172,7 +184,8 @@ public class FlowableRest implements FlowableFeign {
Map<String, String> process = processService.getProcessDefByDefId(historicTaskInstance.getProcessDefinitionId());
log.info("抄送成功-process:{}", process);
if (process == null) {
return ResultBean.fireFail().setMsg("抄送失败,流程定义不存在!");
log.info("抄送失败,流程定义不存在!");
return rb.setMsg("抄送失败,流程定义不存在!");
}
mfq.setModuleName(process.get("NAME_"));
mfq.setMsgTitle(process.get("NAME_"));
@ -182,9 +195,9 @@ public class FlowableRest implements FlowableFeign {
log.info("抄送成功-resultBean:{}", resultBean);
if (!resultBean.getSuccess()) {
log.info("抄送失败,同送消息异常!:{}", JSONObject.toJSONString(resultBean));
return ResultBean.fireFail().setMsg("抄送失败,同送消息异常!");
return rb.setMsg("抄送失败,同送消息异常!");
}
return ResultBean.fireSuccess().setMsg("抄送"+userName.toString()+"成功!");
return rb.success().setMsg("抄送" + userName.toString() + "成功!");
}
@Override
@ -295,22 +308,56 @@ public class FlowableRest implements FlowableFeign {
}
Logger log = LoggerFactory.getLogger(FlowableRest.class);
@Override
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables dto) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = handleProsess(dto, true);
//需要判断办结后再执行 TODO
if (updateFlowFieldVoResultBean.getSuccess()) {
/* if ("Event_end".equals(updateFlowFieldVoResultBean.getData().getTaskDefKey())) {
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
HashMap<String, Object> map = new HashMap<>();
map.put("bv", dto);
map.put("uff", updateFlowFieldVoResultBean.getData());
//cc(map);
cc(map);
});
} catch (Exception e) {
e.printStackTrace();
return rb.setMsg("抄送失败");
}
}*/
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
HashMap<String, Object> map = new HashMap<>();
map.put("bv", dto);
map.put("uff", updateFlowFieldVoResultBean.getData());
cc(map);
});
} catch (Exception e) {
e.printStackTrace();
return rb.setMsg("抄送失败");
}
}
return updateFlowFieldVoResultBean;
}
/**
*
* @param dto
* @param b 是否连续跳转环节
* @return
@ -466,6 +513,7 @@ public class FlowableRest implements FlowableFeign {
vo.setNextNodeUserSids(nextUserSid);
return rb.success().setData(vo);
}
@Override
public ResultBean<UpdateFlowFieldVo> revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl) {
ResultBean rb = ResultBean.fireFail();
@ -557,4 +605,9 @@ public class FlowableRest implements FlowableFeign {
vo.setTaskDefKey("Event_end");
return rb.success().setData(vo);
}
@Override
public ResultBean<List<FlowListVo>> selectFlowList() {
return flowableService.selectFlowList();
}
}

6
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableService.java

@ -278,4 +278,10 @@ public class FlowableService extends MybatisBaseService<FlowableMapper, Flowable
public Map<String, String> getProcessDefByDefId(String processDefinitionId) {
return baseMapper.getProcessDefByDefId(processDefinitionId);
}
public ResultBean<List<FlowListVo>> selectFlowList() {
ResultBean<List<FlowListVo>> rb = ResultBean.fireFail();
List<FlowListVo> list = baseMapper.selectFlowList();
return rb.success().setData(list);
}
}

9
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccRest.java

@ -25,8 +25,7 @@
*********************************************************/
package com.yxt.anrui.portal.biz.sysflowcc;
import com.yxt.anrui.portal.api.sysuserrole.SysUserRole;
import com.yxt.anrui.portal.api.sysuserrole.SysUserRoleFeign;
import com.yxt.anrui.portal.api.sysflowcc.*;
import com.yxt.anrui.portal.biz.sysuserrole.SysUserRoleService;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -38,12 +37,6 @@ import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowcc;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccQuery;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccDetailsVo;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccDto;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign;
/**
* Project: anrui-portal(流程抄送) <br/>

23
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowcc/SysFlowccService.java

@ -28,20 +28,13 @@ package com.yxt.anrui.portal.biz.sysflowcc;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R;
import org.apache.commons.lang3.StringUtils;
import com.yxt.anrui.portal.api.sysflowcc.*;
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 com.yxt.anrui.portal.api.sysflowcc.SysFlowcc;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccQuery;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccDetailsVo;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccDto;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@ -91,10 +84,10 @@ public class SysFlowccService extends MybatisBaseService<SysFlowccMapper, SysFlo
return rb.setMsg("请选择角色");
}
for (String roleSid : roleSids) {
roleSidPath.append(roleSid).append("");
roleSidPath.append(roleSid).append(",");
}
for (String roleName : roleNames) {
roleNamePath.append(roleName).append("");
roleNamePath.append(roleName).append(",");
}
if (StringUtils.isBlank(dtoSid)) {
SysFlowccVo sysFlowccVo = baseMapper.selectByFlowKey(dto.getFlowKey());
@ -104,8 +97,8 @@ public class SysFlowccService extends MybatisBaseService<SysFlowccMapper, SysFlo
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("")));
sysFlowcc.setRoleSid(roleSidPath.substring(0,roleSidPath.lastIndexOf(",")));
sysFlowcc.setRoleName(roleNamePath.substring(0,roleNamePath.lastIndexOf(",")));
save(sysFlowcc);
return rb.success().setMsg("添加成功");
}
@ -119,8 +112,8 @@ public class SysFlowccService extends MybatisBaseService<SysFlowccMapper, SysFlo
}
sysFlowcc.setFlowKey(dto.getFlowKey());
sysFlowcc.setFlowName(dto.getFlowName());
sysFlowcc.setRoleSid(roleSidPath.substring(0,roleSidPath.lastIndexOf("")));
sysFlowcc.setRoleName(roleNamePath.substring(0,roleNamePath.lastIndexOf("")));
sysFlowcc.setRoleSid(roleSidPath.substring(0,roleSidPath.lastIndexOf(",")));
sysFlowcc.setRoleName(roleNamePath.substring(0,roleNamePath.lastIndexOf(",")));
baseMapper.updateById(sysFlowcc);
return rb.success().setMsg("修改成功");
}

Loading…
Cancel
Save