Browse Source

完善用章申请的流程

master
djz236@163.com 2 years ago
parent
commit
4871a19aab
  1. 1
      yxt_supervise/supervise-flowable/supervise-flowable-api/pom.xml
  2. 5
      yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java
  3. 4
      yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java
  4. 79
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  5. 53
      yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

1
yxt_supervise/supervise-flowable/supervise-flowable-api/pom.xml

@ -24,6 +24,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>

5
yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java

@ -49,6 +49,11 @@ public class FlowableFallback implements FlowableFeign {
return null;
}
@Override
public ResultBean<UpdateFlowFieldVo> startProcessNoOrgPath(BusinessVariables dto) {
return null;
}
@Override
public ResultBean handleProsess(BusinessVariables bv) {

4
yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java

@ -93,6 +93,10 @@ public interface FlowableFeign {
@PostMapping(value = "/startProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@ApiOperation(value = "启动流程不涉及到组织架构")
@PostMapping(value = "/startProcessNoOrgPath")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcessNoOrgPath(@RequestBody BusinessVariables dto);
@ApiOperation(value = "处理流程")
@PostMapping(value = "/handleProsess")

79
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -166,7 +166,7 @@ public class FlowableRest implements FlowableFeign {
dto.getFormVariables().put("businessSid",dto.getBusinessSid());
String nextNodeUserSids_ = dto.getNextNodeUserSids();
if(StringUtils.isBlank(nextNodeUserSids_)){
ResultBean<UserAndOrgPath> nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreate(dto);
ResultBean<UserAndOrgPath> nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreateNoOrgPath(dto);
boolean success = nextNodeUserSidsOfCreate.getSuccess();
if(!success){
return rb.setMsg(nextNodeUserSidsOfCreate.getMsg());
@ -190,6 +190,55 @@ public class FlowableRest implements FlowableFeign {
return rb.success().setData(vo);
}
@Override
public ResultBean<UpdateFlowFieldVo> startProcessNoOrgPath(BusinessVariables dto) {
log.info("startProcess.dto:{}",dto);
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(dto.getBusinessSid())) {
return rb.setMsg("businessSid 不能为空!");
}
if(dto.getFormVariables()==null)
dto.setFormVariables(new HashMap<String, Object>());
Map<String, Object> formVariables = dto.getFormVariables();
if(StringUtils.isNotBlank(dto.getOrgSidPath())){
String orgPath=dto.getOrgSidPath();
formVariables.put("createrOrgPath",orgPath);//发起人的组织结构sid
//dto.setFormVariables(formVariables);
}
dto.getFormVariables().put("businessSid",dto.getBusinessSid());
String nextNodeUserSids_ = dto.getNextNodeUserSids();
if(StringUtils.isBlank(nextNodeUserSids_)){
ResultBean<UserAndOrgPath> nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreateNoOrgPath(dto);
boolean success = nextNodeUserSidsOfCreate.getSuccess();
if(!success){
return rb.setMsg(nextNodeUserSidsOfCreate.getMsg());
}
nextNodeUserSids_=nextNodeUserSidsOfCreate.getData().getUserSid();
dto.getFormVariables().put(BusinessVariables.ORGPATH,nextNodeUserSidsOfCreate.getData().getOrgPath());
}
dto.setNextNodeUserSids(nextNodeUserSids_);
ResultBean resultBean1 = flowableService.businessStart(dto);
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
if (resultBean1.getSuccess() && resultBean1.getData() != null) {
vo.setSid("" + dto.getBusinessSid());
Map<String, String> map = (Map<String, String>) resultBean1.getData();
vo.setProcDefId(dto.getModelId());
vo.setNodeState(map.get("nodeState"));
vo.setProcInsId(map.get("procInsId"));
vo.setTaskDefKey(map.get("taskDefKey"));
vo.setTaskId(map.get("taskId"));
vo.setNextNodeUserSids(nextNodeUserSids_);
}
return rb.success().setData(vo);
}
private ResultBean<UserAndOrgPath> getNextNodeUserSidsOfCreateNoOrgPath(BusinessVariables dto) {
return flowtaskService.getNextNodeUserSidsOfCreateNoOrgPath(dto) ;
}
Logger log= LoggerFactory.getLogger(FlowableRest.class);
@Override
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables dto) {
@ -226,7 +275,7 @@ public class FlowableRest implements FlowableFeign {
String nextUserSid = dto.getNextNodeUserSids();
if(StringUtils.isBlank(nextUserSid)){
ResultBean<UserAndOrgPath> nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmit(dto);
ResultBean<UserAndOrgPath> nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmitNoOrgPath(dto);
if (!nextNodeUserSidsOfSubmit.getSuccess()) {
return rb.setMsg("nextUserSid 不能为空!");
}
@ -353,6 +402,32 @@ public class FlowableRest implements FlowableFeign {
vo.setNextNodeUserSids(nextUserSid);
return rb.success().setData(vo);
}
private ResultBean<UserAndOrgPath> getNextNodeUserSidsOfSubmitNoOrgPath(BusinessVariables bv) {
ResultBean<UserAndOrgPath> rb = ResultBean.fireSuccess();
String taskDefKey=bv.getTaskDefKey();
//根据业务参数取流程流转的环节 信息
List<Map<String, Object>> list = (List<Map<String, Object>>)
flowtaskService.getProcessCirculationNodesByMap(bv).getData();
Map<String, Object> task_map=new HashMap<>();
//取第二个环节的配置角色
boolean endTask=true;
for (int i=0;i< list.size();i++){
String id=list.get(i).get("id").toString();
if(id.equals(taskDefKey)&&i+1<list.size()){
task_map=list.get(i+1);
endTask=false;
}
}
if(endTask){
task_map.put("name","结束");
return rb.setData(new UserAndOrgPath());
}else{
Object o = task_map.get("candidateGroups");
return flowtaskService.getNextUserSidsNoOrgPath(rb, o);
}
}
@Override
public ResultBean<UpdateFlowFieldVo> revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl) {
ResultBean rb = ResultBean.fireFail();

53
yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -207,7 +207,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
map.put("candidateGroups", candidateGroups);
list.add(map);
}
return rb.setData(list);
return rb.success().setData(list);
}
/**
@ -817,7 +817,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}
}else{
ResultBean<String> pathSidByUserSid = sysStaffOrgFeign.getPathSidByUserSid(sysUserVoResultBean.getData().getSid());
if(pathSidByUserSid.getData()!=null){
if(StringUtils.isNotBlank(pathSidByUserSid.getData())){
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(pathSidByUserSid.getData());
if(sysOrganizationVoResultBean.getData() != null){
ogrName=sysOrganizationVoResultBean.getData().getName();
@ -825,8 +825,9 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}else{
flowTask.setStartDeptName(sysUserVoResultBean.getData().getOrganizationName());
}
}else{
flowTask.setStartDeptName("");
}
}
hisTaskList.add(flowTask);
}
@ -2085,4 +2086,50 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
ResultBean<Page<FlowTaskDto>> rb = new ResultBean<Page<FlowTaskDto>>();
return rb.success().setData(page);
}
public ResultBean<UserAndOrgPath> getNextNodeUserSidsOfCreateNoOrgPath(BusinessVariables dto) {
ResultBean rb = ResultBean.fireFail();
log.info("getNextNodeUserSidsOfCreate1:{}",JSONObject.toJSONString(dto));
//根据业务参数取流程流转的环节 信息
List<Map<String, Object>> list = (List<Map<String, Object>>) getProcessCirculationNodesByMap(dto).getData();
log.info("getNextNodeUserSidsOfCreate2:{}",JSONObject.toJSONString(list));
if(list==null||list.size()<2){
return rb.setMsg("流程设计问题");
}
//取第二个环节的配置角色
Object o = list.get(1).get("candidateGroups");
if(o==null){
return rb.setMsg("流程设计问题");
}
log.info("getNextNodeUserSidsOfCreate3:{}",JSONObject.toJSONString(o));
return getNextUserSidsNoOrgPath(rb, o);
}
public ResultBean<UserAndOrgPath> getNextUserSidsNoOrgPath(ResultBean rb, Object o) {
UserAndOrgPath mapParam=new UserAndOrgPath();
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(o));
String roleSid = jsonArray.get(0).toString();
//根据组织架构、角色两个参数取相关符合条件的用户信息
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
log.info("getNextUserSids0:{}",JSONObject.toJSONString(userQuery));
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRoleNoOrgPath(userQuery).getData();
log.info("getNextUserSids1:{}",JSONObject.toJSONString(sysUserVos));
if(sysUserVos==null||sysUserVos.size()<1){
return rb.fail().setMsg("环节没有用户");
}
StringBuilder nextNodeUserSids = new StringBuilder();
for (SysUserVo su : sysUserVos) {
nextNodeUserSids.append(su.getSid()).append(",");
}
//符合条件的用户的sid,拼接的字符串
String nextNodeUserSids_ = nextNodeUserSids.toString();
log.info("getNextUserSids2:{}",nextNodeUserSids_);
if(StringUtils.isBlank(nextNodeUserSids_))
return rb.fail().setMsg("环节没有用户");
nextNodeUserSids_ = nextNodeUserSids_.substring(0, nextNodeUserSids_.length() - 1);
mapParam.setUserSid(nextNodeUserSids_);
log.info("getNextUserSids3:{}",JSONObject.toJSONString(mapParam));
return rb.success().setData(mapParam);
}
}
Loading…
Cancel
Save