forked from gitee/vben-java
工作流优化2,集成系统组织架构,增加转变,沟通,废弃功能。增加条件判断等
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package vboot.core.module.bpm.proc.cond;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Entity
|
||||
@Getter
|
||||
@Setter
|
||||
@ApiModel("流程条件参数")
|
||||
public class BpmProcCond {
|
||||
|
||||
@Id
|
||||
@Column(length = 32)
|
||||
@ApiModelProperty("主键ID")
|
||||
private String id;
|
||||
|
||||
@Column(length = 2000)
|
||||
@ApiModelProperty("参数值")
|
||||
private String cond;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package vboot.core.module.bpm.proc.cond;
|
||||
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import vboot.core.module.bpm.proc.main.BpmProcMain;
|
||||
|
||||
public interface BpmProcCondRepo extends JpaRepository<BpmProcCond,String> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package vboot.core.module.bpm.proc.main;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Zcond {
|
||||
|
||||
private String proid;//流程ID
|
||||
|
||||
private String modty;//类别
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package vboot.core.module.gen.org;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import vboot.core.common.mvc.api.R;
|
||||
import vboot.core.common.mvc.dao.JdbcDao;
|
||||
import vboot.core.common.mvc.dao.Sqler;
|
||||
import vboot.core.common.mvc.pojo.Ztree;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("gen/org/role")
|
||||
public class GenOrgRoleApi {
|
||||
|
||||
//查询角色树
|
||||
@GetMapping("tree")
|
||||
public R getTree(String name) {
|
||||
Sqler sqler = new Sqler("sys_org_role_tree");
|
||||
sqler.addLike("t.name", name);
|
||||
sqler.addOrder("t.ornum");
|
||||
sqler.addWhere("t.avtag=1");
|
||||
sqler.addSelect("null pid");
|
||||
List<Ztree> list = jdbcDao.findTreeList(sqler);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
//查询角色
|
||||
@GetMapping("list")
|
||||
public R getList(String treid,String name) {
|
||||
Sqler sqler = new Sqler("sys_org_role_main");
|
||||
sqler.addLike("t.name", name);
|
||||
sqler.addOrder("t.ornum");
|
||||
sqler.addEqual("t.treid",treid);
|
||||
return R.ok(jdbcDao.findMapList(sqler));
|
||||
}
|
||||
|
||||
|
||||
@Autowired
|
||||
private JdbcDao jdbcDao;
|
||||
|
||||
|
||||
// @Autowired
|
||||
// private SysOrgDeptService deptService;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
|
||||
//层级角色
|
||||
@Data
|
||||
@Entity
|
||||
public class SysOrgRoleMain {
|
||||
@Id
|
||||
@Column(length = 36)
|
||||
private String id;//主键
|
||||
|
||||
@Column(length = 64)
|
||||
private String name;//角色名称
|
||||
|
||||
private Integer ornum;//排序号
|
||||
|
||||
private String notes;//备注
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import lombok.Data;
|
||||
import vboot.core.module.sys.org.root.SysOrg;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
//层级节点
|
||||
@Entity
|
||||
@Data
|
||||
public class SysOrgRoleNode {
|
||||
|
||||
@Id
|
||||
@Column(length = 32)
|
||||
private String id;//ID
|
||||
|
||||
@Column(length = 100)
|
||||
private String name;//名称
|
||||
|
||||
@Transient
|
||||
private List<SysOrgRoleNode> children = new ArrayList<>(); //行项目
|
||||
|
||||
@Transient
|
||||
private String pid;//父ID
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "pid")
|
||||
private SysOrgRoleNode parent;//父元素
|
||||
|
||||
// private Integer tieid;//1为机构,2为部门,4为岗位,8为用户,16为常用群组,32为角色线
|
||||
|
||||
private String treid;//角色树id
|
||||
|
||||
@Column(length = 1000)
|
||||
private String tier;//层级
|
||||
|
||||
private String notes;//备注
|
||||
|
||||
private Integer ornum;//排序号
|
||||
|
||||
@Column(updatable = false)
|
||||
private Date crtim = new Date();//创建时间
|
||||
|
||||
private Date uptim;//更新时间
|
||||
|
||||
private Boolean avtag;//可用标记
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "memid")
|
||||
private SysOrg member;
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import vboot.core.common.mvc.api.R;
|
||||
import vboot.core.common.mvc.dao.JdbcDao;
|
||||
import vboot.core.common.mvc.dao.Sqler;
|
||||
import vboot.core.common.mvc.pojo.Ztree;
|
||||
import vboot.core.common.utils.lang.XstrUtil;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("sys/org/rnode")
|
||||
public class SysOrgRoleNodeApi {
|
||||
|
||||
private String table = "sys_org_role_node";
|
||||
|
||||
@GetMapping
|
||||
public R get(String name, String pid, String notes) {
|
||||
Sqler sqler = new Sqler(table);
|
||||
if (XstrUtil.isNotBlank(name)) {
|
||||
sqler.addLike("t.name" , name);
|
||||
} else {
|
||||
if ("".equals(pid)) {
|
||||
sqler.addWhere("t.pid is null");
|
||||
} else if (XstrUtil.isNotBlank(pid)) {
|
||||
sqler.addEqual("t.pid" , pid);
|
||||
}
|
||||
}
|
||||
sqler.addLike("t.notes" , notes);
|
||||
sqler.addWhere("t.avtag=1");
|
||||
sqler.addOrder("t.ornum");
|
||||
sqler.addSelect("t.ornum,t.notes,t.pid,t.crtim,t.uptim");
|
||||
return R.ok(jdbcDao.findPageData(sqler));
|
||||
}
|
||||
|
||||
//查询层级树
|
||||
@GetMapping("tree")
|
||||
public R getTree(String name) {
|
||||
Sqler sqler = new Sqler("sys_org_role_node");
|
||||
sqler.addSelect("t.pid");
|
||||
sqler.addLike("t.name", name);
|
||||
sqler.addOrder("t.ornum");
|
||||
sqler.addWhere("t.avtag=1");
|
||||
List<Ztree> list = jdbcDao.findTreeList(sqler);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
//排除了自己
|
||||
// @GetMapping("listn")
|
||||
// public R listn(String name, String id) {
|
||||
// Sqler sqler = new Sqler(table);
|
||||
// sqler.addLike("t.name", name);
|
||||
// sqler.addWhere("t.avtag=1");
|
||||
// sqler.addOrder("t.ornum");
|
||||
// sqler.addSelect("t.pid");
|
||||
// return R.ok(service.findWithoutItself(sqler, id));
|
||||
// }
|
||||
|
||||
@GetMapping("one/{id}")
|
||||
public R getOne(@PathVariable String id, HttpServletRequest request) {
|
||||
SysOrgRoleNode main = service.findById(id);
|
||||
return R.ok(main);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping
|
||||
public R post(@RequestBody SysOrgRoleNode main) {
|
||||
service.insert(main);
|
||||
return R.ok(main.getId());
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public R put(@RequestBody SysOrgRoleNode main) throws Exception {
|
||||
service.update(main);
|
||||
return R.ok(main.getId());
|
||||
}
|
||||
|
||||
@DeleteMapping("{ids}")
|
||||
public R delete(@PathVariable String[] ids) {
|
||||
return R.ok(service.delete(ids));
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private JdbcDao jdbcDao;
|
||||
|
||||
@Autowired
|
||||
private SysOrgRoleNodeService service;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface SysOrgRoleNodeRepo extends JpaRepository<SysOrgRoleNode,String> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import vboot.core.common.mvc.api.PageData;
|
||||
import vboot.core.common.mvc.dao.JdbcDao;
|
||||
import vboot.core.common.mvc.dao.Sqler;
|
||||
import vboot.core.common.mvc.pojo.ZidName;
|
||||
import vboot.core.common.utils.lang.XstrUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class SysOrgRoleNodeService {
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public SysOrgRoleNode findById(String id) {
|
||||
return nodeRepo.findById(id).get();
|
||||
}
|
||||
|
||||
public SysOrgRoleNode insert(SysOrgRoleNode main) {
|
||||
if (main.getId() == null || "".equals(main.getId())) {
|
||||
main.setId(XstrUtil.getUUID());
|
||||
}
|
||||
if (main.getParent() == null || StrUtil.isBlank(main.getParent().getId())) {
|
||||
main.setTier("x" + main.getId() + "x");
|
||||
} else {
|
||||
String tier = jdbcDao.findOneString("select tier from sys_org_role_node where id=?", main.getParent().getId());
|
||||
main.setTier(tier + main.getId() + "x");
|
||||
}
|
||||
return nodeRepo.save(main);
|
||||
}
|
||||
|
||||
|
||||
public SysOrgRoleNode update(SysOrgRoleNode main) throws Exception {
|
||||
main.setUptim(new Date());
|
||||
if (main.getParent() == null || StrUtil.isBlank(main.getParent().getId())) {
|
||||
main.setTier("x" + main.getId() + "x");
|
||||
} else {
|
||||
String tier = jdbcDao.findOneString("select tier from sys_org_role_node where id=?", main.getParent().getId());
|
||||
main.setTier(tier + main.getId() + "x");
|
||||
String[] arr = tier.split("x");
|
||||
for (String str : arr) {
|
||||
if (main.getId().equals(str)) {
|
||||
throw new Exception("父层级不能为自己或者自己的子层级");
|
||||
}
|
||||
}
|
||||
}
|
||||
SysOrgRoleNode backTier = nodeRepo.save(main);
|
||||
String oldTier = jdbcDao.findOneString("select tier from sys_org_role_node where id=?", main.getId());
|
||||
dealTier(oldTier, main.getTier(), main.getId());
|
||||
return backTier;
|
||||
}
|
||||
|
||||
public int delete(String[] ids) {
|
||||
for (String str : ids) {
|
||||
nodeRepo.deleteById(str);
|
||||
}
|
||||
return ids.length;
|
||||
}
|
||||
|
||||
private void dealTier(String oldTier, String newTier, String id) {
|
||||
String sql = "select id,tier as name from sys_org_role_node where tier like ? and id<>?";
|
||||
List<ZidName> list = jdbcDao.findIdNameList(sql, oldTier + "%", id);
|
||||
String updateSql = "update sys_org_role_node set tier=? where id=?";
|
||||
List<Object[]> updateList = new ArrayList<Object[]>();
|
||||
batchReady(oldTier, newTier, list, updateList);
|
||||
jdbcDao.batch(updateSql, updateList);
|
||||
}
|
||||
|
||||
|
||||
private void batchReady(String oldTier, String newTier, List<ZidName> list, List<Object[]> updateList) {
|
||||
for (ZidName ztwo : list) {
|
||||
Object[] arr = new Object[2];
|
||||
arr[1] = ztwo.getId();
|
||||
arr[0] = ztwo.getName().replace(oldTier, newTier);
|
||||
updateList.add(arr);
|
||||
}
|
||||
}
|
||||
|
||||
public List<SysOrgRoleNode> findAll(Sqler sqler) {
|
||||
List<SysOrgRoleNode> list = jdbcDao.getTp().query(sqler.getSql(), sqler.getParams(), new BeanPropertyRowMapper<>(SysOrgRoleNode.class));
|
||||
return list;
|
||||
}
|
||||
|
||||
public PageData findPageData(Sqler sqler) {
|
||||
return jdbcDao.findPageData(sqler);
|
||||
}
|
||||
|
||||
public List<SysOrgRoleNode> findTree(Sqler sqler) {
|
||||
List<SysOrgRoleNode> list = jdbcDao.getTp().query(sqler.getSql(), sqler.getParams(), new BeanPropertyRowMapper<>(SysOrgRoleNode.class));
|
||||
return buildByRecursive(list);
|
||||
}
|
||||
|
||||
//使用递归方法建树
|
||||
private List<SysOrgRoleNode> buildByRecursive(List<SysOrgRoleNode> nodes) {
|
||||
List<SysOrgRoleNode> list = new ArrayList<>();
|
||||
for (SysOrgRoleNode node : nodes) {
|
||||
if (node.getPid() == null) {
|
||||
list.add(findChildrenByTier(node, nodes));
|
||||
} else {
|
||||
boolean flag = false;
|
||||
for (SysOrgRoleNode node2 : nodes) {
|
||||
if (node.getPid().equals(node2.getId())) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
list.add(findChildrenByTier(node, nodes));
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//递归查找子节点
|
||||
private SysOrgRoleNode findChildrenByTier(SysOrgRoleNode node, List<SysOrgRoleNode> nodes) {
|
||||
for (SysOrgRoleNode item : nodes) {
|
||||
if (node.getId().equals(item.getPid())) {
|
||||
if (node.getChildren() == null) {
|
||||
node.setChildren(new ArrayList<>());
|
||||
}
|
||||
node.getChildren().add(findChildrenByTier(item, nodes));
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
// public List<SysOrgRoleTree> findWithoutItself(Sqler sqler, String id) {
|
||||
// List<SysOrgRoleTree> list = jdbcDao.getTp().query(sqler.getSql(), sqler.getParams(), new BeanPropertyRowMapper<>(SysOrgRoleTree.class));
|
||||
// return buildByRecursiveWithoutItself(list, id);
|
||||
// }
|
||||
|
||||
//使用递归方法建树不包含自己
|
||||
// private List<SysOrgRoleTree> buildByRecursiveWithoutItself(List<SysOrgRoleTree> nodes, String id) {
|
||||
// List<SysOrgRoleTree> list = new ArrayList<>();
|
||||
// for (SysOrgRoleTree node : nodes) {
|
||||
// if (node.getPid() == null && !node.getId().equals(id)) {
|
||||
// list.add(findChildrenByTierWithoutItself(node, nodes, id));
|
||||
// } else {
|
||||
// boolean flag = false;
|
||||
// for (SysOrgRoleTree node2 : nodes) {
|
||||
// if (node.getPid() != null && node.getPid().equals(node2.getId())) {
|
||||
// flag = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (!flag && !node.getId().equals(id)) {
|
||||
// list.add(findChildrenByTierWithoutItself(node, nodes, id));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return list;
|
||||
// }
|
||||
|
||||
//递归查找子节点不包含自己
|
||||
// private SysOrgRoleTree findChildrenByTierWithoutItself(SysOrgRoleTree node, List<SysOrgRoleTree> nodes, String id) {
|
||||
// for (SysOrgRoleTree item : nodes) {
|
||||
// if (node.getId().equals(item.getPid()) && (!item.getId().equals(id))) {
|
||||
// if (node.getChildren() == null) {
|
||||
// node.setChildren(new ArrayList<>());
|
||||
// }
|
||||
// node.getChildren().add(findChildrenByTierWithoutItself(item, nodes, id));
|
||||
// }
|
||||
// }
|
||||
// return node;
|
||||
// }
|
||||
|
||||
@Autowired
|
||||
private JdbcDao jdbcDao;
|
||||
|
||||
@Autowired
|
||||
private SysOrgRoleNodeRepo nodeRepo;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import vboot.core.common.mvc.entity.BaseMainEntity;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
//层级树
|
||||
@Entity
|
||||
@Getter
|
||||
@Setter
|
||||
public class SysOrgRoleTree extends BaseMainEntity {
|
||||
|
||||
private Integer ornum;//排序号
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JoinColumn(name = "treid")
|
||||
@OrderBy("ornum ASC")
|
||||
private List<SysOrgRoleMain> roles = new ArrayList<>();//层级角色
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import vboot.core.common.mvc.api.R;
|
||||
import vboot.core.common.mvc.dao.JdbcDao;
|
||||
import vboot.core.common.mvc.dao.Sqler;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("sys/org/rtree")
|
||||
public class SysOrgRoleTreeApi {
|
||||
|
||||
@GetMapping
|
||||
public R get(String name) {
|
||||
Sqler sqler = new Sqler("sys_org_role_tree");
|
||||
sqler.addLike("t.name", name);
|
||||
sqler.addSelect("t.notes");
|
||||
return R.ok(service.findPageData(sqler));
|
||||
}
|
||||
|
||||
@GetMapping("one/{id}")
|
||||
public R getOne(@PathVariable String id) {
|
||||
SysOrgRoleTree main = service.findOne(id);
|
||||
return R.ok(main);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public R post(@RequestBody SysOrgRoleTree main) {
|
||||
return R.ok(service.insertx(main));
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public R put(@RequestBody SysOrgRoleTree main) {
|
||||
return R.ok(service.updatex(main));
|
||||
}
|
||||
|
||||
@DeleteMapping("{ids}")
|
||||
public R delete(@PathVariable String[] ids) {
|
||||
return R.ok(service.delete(ids));
|
||||
}
|
||||
|
||||
@GetMapping("calc")
|
||||
public R calc(String useid, String rolid) {
|
||||
return R.ok(service.calc(useid, rolid));
|
||||
}
|
||||
|
||||
@GetMapping("tlist")
|
||||
public R getTlist() {
|
||||
return R.ok(service.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("rlist")
|
||||
public R getRlist(String treid) {
|
||||
String sql = "select id,name from sys_org_role_main where treid=?";
|
||||
return R.ok(jdbcDao.findMapList(sql, treid));
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private SysOrgRoleTreeService service;
|
||||
|
||||
@Autowired
|
||||
private JdbcDao jdbcDao;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface SysOrgRoleTreeRepo extends JpaRepository<SysOrgRoleTree,String> {
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
package vboot.core.module.sys.org.role;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import vboot.core.common.mvc.service.BaseMainService;
|
||||
import vboot.core.framework.security.pojo.UserDo;
|
||||
import vboot.core.module.sys.org.root.SysOrg;
|
||||
import vboot.core.module.sys.org.root.SysOrgRepo;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class SysOrgRoleTreeService extends BaseMainService<SysOrgRoleTree> {
|
||||
|
||||
public String insertx(SysOrgRoleTree main) {
|
||||
String id = insert(main);
|
||||
List<SysOrg> list = new ArrayList<>();
|
||||
for (SysOrgRoleMain role : main.getRoles()) {
|
||||
SysOrg sysOrg = new SysOrg(role.getId(), role.getName(), 32);
|
||||
list.add(sysOrg);
|
||||
}
|
||||
orgRepo.saveAll(list);
|
||||
return id;
|
||||
}
|
||||
|
||||
public String updatex(SysOrgRoleTree main) {
|
||||
String id = update(main);
|
||||
List<SysOrg> list = new ArrayList<>();
|
||||
for (SysOrgRoleMain role : main.getRoles()) {
|
||||
SysOrg sysOrg = new SysOrg(role.getId(), role.getName(), 32);
|
||||
list.add(sysOrg);
|
||||
}
|
||||
orgRepo.saveAll(list);
|
||||
return id;
|
||||
}
|
||||
|
||||
public SysOrg calc(String useid, String rolid) {
|
||||
String sql = "select t.tier \"tier\",m.ornum \"ornum\" from sys_org_role_node t " +
|
||||
"inner join sys_org_role_main m on m.treid=t.treid where t.memid=? and m.id=?";
|
||||
Map<String, Object> map = jdbcDao.findMap(sql, useid, rolid);
|
||||
if (map == null) {
|
||||
sql = "select t.tier \"tier\",m.ornum \"ornum\" from sys_org_role_node t " +
|
||||
"inner join sys_org_role_main m on m.treid=t.treid " +
|
||||
"inner join sys_org_user u on u.depid=t.memid where u.id=? and m.id=?";
|
||||
map = jdbcDao.findMap(sql, useid, rolid);
|
||||
if (map == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
String tier = "" + map.get("tier");
|
||||
Integer ornum = Integer.parseInt("" + map.get("ornum"));
|
||||
String[] idArr = tier.split("x");
|
||||
String sql3 = "select o.id,o.name,o.type from sys_org_role_node t inner join sys_org o on o.id=t.memid where t.id=?";
|
||||
SysOrg org = jdbcDao.getTp().queryForObject(sql3,
|
||||
new Object[]{idArr[ornum]}, new BeanPropertyRowMapper<>(SysOrg.class));
|
||||
return org;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private SysOrgRepo orgRepo;
|
||||
|
||||
@Autowired
|
||||
private SysOrgRoleTreeRepo repo;
|
||||
|
||||
@PostConstruct
|
||||
public void initDao() {
|
||||
super.setRepo(repo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
import vboot.core.common.mvc.dao.JdbcDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import vboot.core.common.utils.lang.XstrUtil;
|
||||
import vboot.core.framework.security.authz.AuthzApiData;
|
||||
import vboot.core.framework.security.pojo.Yapi;
|
||||
import vboot.core.framework.security.pojo.Yurl;
|
||||
@@ -148,7 +149,9 @@ public class SysApiInit {
|
||||
topUrl.setPid(topUrl.getId().split("-")[0]);
|
||||
}
|
||||
topUrl.setUrl(classUrl);
|
||||
list.add(topUrl);
|
||||
if(XstrUtil.isNotBlank(topUrl.getId())){
|
||||
list.add(topUrl);
|
||||
}
|
||||
Method[] methods = clazz.getDeclaredMethods();
|
||||
for (Method method : methods) {
|
||||
GetMapping getMapping = method.getAnnotation(GetMapping.class);
|
||||
@@ -262,7 +265,9 @@ public class SysApiInit {
|
||||
for (String str : rootSet) {
|
||||
Yurl yurl = new Yurl();
|
||||
yurl.setId(str);
|
||||
list.add(yurl);
|
||||
if(XstrUtil.isNotBlank(yurl.getId())){
|
||||
list.add(yurl);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@@ -218,6 +218,54 @@ public class SysPortalVueInit {
|
||||
menu114a.setPorid("sys");
|
||||
menuService.insert(menu114a);
|
||||
|
||||
SysPortalMenu menu115 = new SysPortalMenu();
|
||||
menu115.setId("SysOrgRtree");
|
||||
menu115.setName("角色管理");
|
||||
menu115.setCode("SysOrgRtree");
|
||||
menu115.setPath("/sys/org/rtree");
|
||||
menu115.setComp("/sys/org/role/tree");
|
||||
menu115.setOrnum(50);
|
||||
menu115.setIcon("ele-Cherry");
|
||||
menu115.setPid("SysOrg");
|
||||
menu115.setCatag(true);
|
||||
menu115.setAvtag(true);
|
||||
menu115.setShtag(true);
|
||||
menu115.setType("M");
|
||||
menu115.setPorid("sys");
|
||||
menuService.insert(menu115);
|
||||
|
||||
SysPortalMenu menu115a = new SysPortalMenu();
|
||||
menu115a.setId("SysOrgRtreeEdit");
|
||||
menu115a.setName("角色树编辑");
|
||||
menu115a.setCode("SysOrgRtreeEdit");
|
||||
menu115a.setPath("/sys/org/rtree/edit");
|
||||
menu115a.setComp("/sys/org/role/tree_edit");
|
||||
menu115a.setOrnum(51);
|
||||
menu115a.setIcon("ele-Tickets");
|
||||
menu115a.setPid("SysOrg");
|
||||
menu115a.setCatag(true);
|
||||
menu115a.setAvtag(true);
|
||||
menu115a.setShtag(false);
|
||||
menu115a.setType("M");
|
||||
menu115a.setPorid("sys");
|
||||
menuService.insert(menu115a);
|
||||
|
||||
SysPortalMenu menu115b = new SysPortalMenu();
|
||||
menu115b.setId("SysOrgRnode");
|
||||
menu115b.setName("角色树节点配置");
|
||||
menu115b.setCode("SysOrgRnode");
|
||||
menu115b.setPath("/sys/org/rnode");
|
||||
menu115b.setComp("/sys/org/role/node");
|
||||
menu115b.setOrnum(52);
|
||||
menu115b.setIcon("ele-Tickets");
|
||||
menu115b.setPid("SysOrg");
|
||||
menu115b.setCatag(true);
|
||||
menu115b.setAvtag(true);
|
||||
menu115b.setShtag(false);
|
||||
menu115b.setType("M");
|
||||
menu115b.setPorid("sys");
|
||||
menuService.insert(menu115b);
|
||||
|
||||
SysPortalMenu menu12 = new SysPortalMenu();
|
||||
menu12.setId("SysApi");
|
||||
menu12.setName("接口管理");
|
||||
@@ -926,6 +974,38 @@ public class SysPortalVueInit {
|
||||
menu413b.setPorid("sys");
|
||||
menuService.insert(menu413b);
|
||||
|
||||
SysPortalMenu menu414 = new SysPortalMenu();
|
||||
menu414.setId("SysTodoMain");
|
||||
menu414.setName("流程待办");
|
||||
menu414.setCode("SysTodoMain");
|
||||
menu414.setPath("/sys/todo/main");
|
||||
menu414.setComp("/sys/todo/main/index");
|
||||
menu414.setOrnum(414);
|
||||
menu414.setIcon("ele-Tickets");
|
||||
menu414.setPid("OaFlow");
|
||||
menu414.setCatag(true);
|
||||
menu414.setAvtag(true);
|
||||
menu414.setShtag(true);
|
||||
menu414.setType("M");
|
||||
menu414.setPorid("sys");
|
||||
menuService.insert(menu414);
|
||||
|
||||
SysPortalMenu menu414a = new SysPortalMenu();
|
||||
menu414a.setId("SysTodoMainEdit");
|
||||
menu414a.setName("流程待办查看");
|
||||
menu414a.setCode("SysTodoMainEdit");
|
||||
menu414a.setPath("/sys/todo/main/edit");
|
||||
menu414a.setComp("/sys/todo/main/edit");
|
||||
menu414a.setOrnum(4141);
|
||||
menu414a.setIcon("ele-Tickets");
|
||||
menu414a.setPid("OaFlow");
|
||||
menu414a.setCatag(true);
|
||||
menu414a.setAvtag(true);
|
||||
menu414a.setShtag(false);
|
||||
menu414a.setType("M");
|
||||
menu414a.setPorid("sys");
|
||||
menuService.insert(menu414a);
|
||||
|
||||
//-----------------DEMO--------------------
|
||||
SysPortalMenu menu8 = new SysPortalMenu();
|
||||
menu8.setId("My");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#应用初始化类型
|
||||
app.init.orgName=WC集团
|
||||
app.init.orgName=XX集团
|
||||
app.init.orgRootId=1
|
||||
#-- sa:组织架构只包含一个sa管理员与一个vben的演示账户
|
||||
#-- test:除了以上数据还包含张三李四等测试人员
|
||||
|
||||
@@ -34,16 +34,16 @@
|
||||
<el-switch v-model='form.avtag'/>
|
||||
</el-form-item>
|
||||
<el-form-item label='创建人:'>
|
||||
{{ form.crman ? form.crman.name : '' }}
|
||||
<div class="zinput">{{ form.crman ? form.crman.name : '' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label='创建时间:'>
|
||||
{{ form.crtim }}
|
||||
<div class="zinput">{{ form.crtim }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label='更新人:'>
|
||||
{{ form.upman ? form.upman.name : '' }}
|
||||
<div class="zinput">{{ form.upman ? form.upman.name : '' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label='更新时间:'>
|
||||
{{ form.uptim }}
|
||||
<div class="zinput">{{ form.uptim }}</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
<div>
|
||||
<el-card class='box-card'>
|
||||
<template #header>
|
||||
<el-row>
|
||||
<el-col :span='14'>
|
||||
<div class='zjustify'>
|
||||
<div>
|
||||
<el-input v-model='state.form.name' placeholder='输入名称回车查询' class='list-search' clearable @keyup.enter='listQuery(state)'/>
|
||||
<el-button type='primary' @click='listQuery(state)' plain>查 询</el-button>
|
||||
<el-button class='more-button' :icon='state.moreParams?ArrowUp:ArrowDown' plain @click='state.moreParams=!state.moreParams'/>
|
||||
</el-col>
|
||||
<el-col :span='10' style='text-align: right'>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type='success' :icon='Plus' @click='editRef.open({})' plain>新增</el-button>
|
||||
<el-button type='danger' :icon='Delete' :disabled='state.multiple' @click='listDelete(state)' plain>删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show='state.moreParams' class='more-params'>
|
||||
<el-form :inline='true' label-width='100px'>
|
||||
<el-form-item label='更多参数1'>
|
||||
<el-input v-model='state.form.notes' placeholder='更多参数1'/>
|
||||
<el-input v-model='state.form.xxx' placeholder='更多参数1'/>
|
||||
</el-form-item>
|
||||
<el-form-item label='更多参数2'>
|
||||
<el-input v-model='state.form.xx' placeholder='更多参数2'/>
|
||||
<el-input v-model='state.form.yyy' placeholder='更多参数2'/>
|
||||
</el-form-item>
|
||||
<el-form-item/>
|
||||
</el-form>
|
||||
@@ -50,7 +50,7 @@
|
||||
layout='total, sizes, prev, pager, next, jumper'
|
||||
/>
|
||||
</el-card>
|
||||
<Edit ref="editRef" @close="listQuery(state)"/>
|
||||
<Dedit ref="editRef" @close="listQuery(state)"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
import {Plus, Delete, ArrowDown, ArrowUp} from '@element-plus/icons-vue';
|
||||
import {onMounted, reactive, ref} from 'vue';
|
||||
import {listQuery, listDelete, listSelect} from '/@/comps/page/index';
|
||||
import Edit from './edit.vue';
|
||||
import Dedit from './edit.vue';
|
||||
|
||||
const editRef = ref() as any;
|
||||
const state = reactive({
|
||||
|
||||
@@ -52,7 +52,7 @@ const state = reactive({
|
||||
const {form} = toRefs(state);
|
||||
|
||||
const formRef = ref();
|
||||
const openModal = async (data: any) => {
|
||||
const open = async (data: any) => {
|
||||
if (data && data.id) {
|
||||
state.form = await request({
|
||||
url: state.url + '/one/' + data.id,
|
||||
@@ -66,7 +66,7 @@ const openModal = async (data: any) => {
|
||||
}
|
||||
state.show = true;
|
||||
};
|
||||
defineExpose({openModal});
|
||||
defineExpose({open});
|
||||
|
||||
const emits = defineEmits(['close']);
|
||||
const handleConfirm = async () => {
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
<div>
|
||||
<el-card class='box-card'>
|
||||
<template #header>
|
||||
<el-row>
|
||||
<el-col :span='14'>
|
||||
<div class='zjustify'>
|
||||
<div>
|
||||
<el-input v-model='state.form.name' placeholder='输入名称回车查询' class='list-search' clearable @keyup.enter='listQuery(state)'/>
|
||||
<el-button type='primary' @click='listQuery(state)' plain>查 询</el-button>
|
||||
<el-button class='more-button' :icon='state.moreParams?ArrowUp:ArrowDown' plain @click='state.moreParams=!state.moreParams'/>
|
||||
</el-col>
|
||||
<el-col :span='10' style='text-align: right'>
|
||||
<el-button type='success' :icon='Plus' @click='editRef.openModal()' plain>新增</el-button>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type='success' :icon='Plus' @click='editRef.open()' plain>新增</el-button>
|
||||
<el-button type='danger' :icon='Delete' :disabled='state.multiple' @click='listDelete(state)' plain>删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show='state.moreParams' class='more-params'>
|
||||
<el-form :inline='true' label-width='100px'>
|
||||
<el-form-item label='更多参数1'>
|
||||
<el-input v-model='state.form.notes' placeholder='更多参数1'/>
|
||||
<el-input v-model='state.form.xxx' placeholder='更多参数1'/>
|
||||
</el-form-item>
|
||||
<el-form-item label='更多参数2'>
|
||||
<el-input v-model='state.form.xx' placeholder='更多参数2'/>
|
||||
<el-input v-model='state.form.yyy' placeholder='更多参数2'/>
|
||||
</el-form-item>
|
||||
<el-form-item/>
|
||||
</el-form>
|
||||
@@ -32,7 +32,7 @@
|
||||
<el-table-column label='序号' type='index' width='55' align='center'/>
|
||||
<el-table-column label='${table.remark}名称' prop='id' width='160'>
|
||||
<template #default='scope'>
|
||||
<span style='cursor:pointer;color: #3e9ece' @click='editRef.openModal({id:scope.row.id})'>
|
||||
<span style='cursor:pointer;color: #3e9ece' @click='editRef.open({id:scope.row.id})'>
|
||||
{{ scope.row.name }}
|
||||
</span>
|
||||
</template>
|
||||
@@ -49,7 +49,7 @@
|
||||
layout='total, sizes, prev, pager, next, jumper'
|
||||
/>
|
||||
</el-card>
|
||||
<Edit ref="editRef" @close="listQuery(state)"/>
|
||||
<Pedit ref="editRef" @close="listQuery(state)"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
import {Plus, Delete, ArrowDown, ArrowUp} from '@element-plus/icons-vue';
|
||||
import {onMounted, reactive, ref} from 'vue';
|
||||
import {listQuery, listDelete, listSelect} from '/@/comps/page/index';
|
||||
import Edit from './edit.vue';
|
||||
import Pedit from './edit.vue';
|
||||
|
||||
const editRef = ref() as any;
|
||||
const state = reactive({
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<el-card class='box-card' :body-style="{padding:'2px 8px'}" shadow='never'>
|
||||
<template #header>
|
||||
<el-row>
|
||||
<el-col :span='10'>
|
||||
<div class='zjustify'>
|
||||
<div>
|
||||
<div style='line-height: 32px'>${table.remark}编辑</div>
|
||||
</el-col>
|
||||
<el-col :span='14' style='text-align: right'>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type='success' @click='tabSave({formRef,state,proxy,route})' plain>保 存</el-button>
|
||||
<el-button type='info' @click='tabClose({proxy,route})' plain>关 闭</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div style='margin-top: 8px;margin-bottom: 8px'>
|
||||
<el-form ref="formRef" :inline="true" class='yform #if($table.pecol==1)yform100#elseif($table.pecol==4)yform25#end' :model='form' label-width='140px'>
|
||||
@@ -42,13 +42,13 @@
|
||||
<el-input type='textarea' :rows='4' v-model='form.notes'/>
|
||||
</el-form-item>
|
||||
<el-form-item label='创建人:' style="width: 25%">
|
||||
{{ form.crman ? form.crman.name : '' }}
|
||||
<div class="zinput">{{ form.crman ? form.crman.name : '' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label='创建时间:' style="width: 25%">
|
||||
<div class='zinput'> {{ form.crtim }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label='更新人:' style="width: 25%">
|
||||
{{ form.upman ? form.upman.name : '' }}
|
||||
<div class="zinput">{{ form.upman ? form.upman.name : '' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label='更新时间:' style="width: 25%">
|
||||
<div class='zinput'> {{ form.uptim }}</div>
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
<div>
|
||||
<el-card class='box-card'>
|
||||
<template #header>
|
||||
<el-row>
|
||||
<el-col :span='14'>
|
||||
<div class='zjustify'>
|
||||
<div>
|
||||
<el-input v-model='state.form.name' placeholder='输入名称回车查询' class='list-search' clearable @keyup.enter='listQuery(state)' />
|
||||
<el-button type='primary' @click='listQuery(state)' plain>查 询</el-button>
|
||||
<el-button class='more-button' :icon='state.moreParams?ArrowUp:ArrowDown' plain @click='state.moreParams=!state.moreParams' />
|
||||
</el-col>
|
||||
<el-col :span='10' style='text-align: right'>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type='success' :icon='Plus' @click='tabAdd(state.url)' plain>新增</el-button>
|
||||
<el-button type='danger' :icon='Delete' :disabled='state.multiple' @click='listDelete(state)' plain>删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show='state.moreParams' class='more-params'>
|
||||
<el-form :inline='true' label-width='100px'>
|
||||
<el-form-item label='更多参数1'>
|
||||
|
||||
Reference in New Issue
Block a user