Browse Source

关联表单隐藏效果-组织机构条件

lwx_v1
liwenxuan 1 year ago
parent
commit
22e27b01f6
  1. 19
      src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java
  2. 29
      src/main/java/com/hxgk/lowcode/model/entity/Tree.java
  3. 12
      src/main/java/com/hxgk/lowcode/model/entity/UserDetail.java
  4. 2
      src/main/java/com/hxgk/lowcode/service/CustomerFormService.java
  5. 50
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  6. 4
      src/main/java/com/hxgk/lowcode/service/impl/UserServiceImpl.java

19
src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java

@ -158,4 +158,23 @@ public class AssociatedFormsController {
}
/*当前用户是否在指定的机构下或机构的祖先机构下*/
@RequestMapping(value = "AssociatedForms/queryIfOrgOrPerson")
public JsonData queryIfOrgOrPerson(@RequestHeader(value = "User-Key") String key,
@RequestHeader(value = "User-Token") String token,
@RequestBody Map<String,String> requestBody) {
if(StringUtils.isBlank(key)||StringUtils.isBlank(token)){
return JsonData.buildError("非法请求");
}
String targetOrgOrPerson = requestBody.get("left");
String condition = requestBody.get("operator");
String currentUser = requestBody.get("right");
Boolean flag = customerFormService.queryIfOrgOrPersonContainsCurrentUser(key,token,targetOrgOrPerson,condition,"当前用户");
return JsonData.buildSuccess(flag);
}
}

29
src/main/java/com/hxgk/lowcode/model/entity/Tree.java

@ -2,6 +2,7 @@ package com.hxgk.lowcode.model.entity;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -81,4 +82,32 @@ public class Tree {
public void setType(String type) {
this.type = type;
}
//获取targetId的所有祖先节点
public List<String> getAncestorIds(String targetId) {
List<String> ancestorIds = new ArrayList<>();
Tree targetNode = findNodeById(this, targetId);
if (targetNode!= null) {
while (targetNode!= null && targetNode.getParentId()!= null) {
ancestorIds.add(targetNode.getParentId());
targetNode = findNodeById(this, targetNode.getParentId());
}
}
return ancestorIds;
}
private Tree findNodeById(Tree root, String targetId) {
if (root.getId().equals(targetId)) {
return root;
}
if (root.getChildren() != null) { // 增加判断,避免空指针
for (Tree child : root.getChildren()) {
Tree found = findNodeById(child, targetId);
if (found != null) {
return found;
}
}
}
return null;
}
}

12
src/main/java/com/hxgk/lowcode/model/entity/UserDetail.java

@ -15,10 +15,13 @@ public class UserDetail {
private String wmNumber;
//唯一识别码
private Long wmKey;
//adminorg
//行政组织
private Long adminorg;
//role权限
private Integer roleId;
//主部门
private Long maindeparment;
public String getIdcardno() {
return idcardno;
@ -76,4 +79,11 @@ public class UserDetail {
this.adminorg = adminorg;
}
public Long getMaindeparment() {
return maindeparment;
}
public void setMaindeparment(Long maindeparment) {
this.maindeparment = maindeparment;
}
}

2
src/main/java/com/hxgk/lowcode/service/CustomerFormService.java

@ -18,4 +18,6 @@ public interface CustomerFormService {
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString);
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitlesByIds(String AsfFormId,ArrayList<HashMap<String,String>> ids);
Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String 当前用户);
}

50
src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

@ -13,6 +13,7 @@ import com.hxgk.lowcode.mapper.CustomerFormViewMapper;
import com.hxgk.lowcode.mapper.FieldRecordMapper;
import com.hxgk.lowcode.model.entity.*;
import com.hxgk.lowcode.service.CustomerFormService;
import com.hxgk.lowcode.service.HrService;
import com.hxgk.lowcode.service.SystemRoleService;
import com.hxgk.lowcode.service.UserService;
import com.hxgk.lowcode.utils.HttpUtils;
@ -38,6 +39,9 @@ public class CustomerFormServiceImpl implements CustomerFormService {
@Autowired
private FieldRecordMapper fieldRecordMapper;
@Autowired
private HrService hrService;
@Override
//根据用户权限查询表单列表
public Tree getCustomerFormList(String key, String token) {
@ -742,6 +746,7 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}
private ArrayList<CustomerFormTableSingleFieldValue> addToReturnSortedDataTitleList(ArrayList<HashMap<String, String>> ids, ArrayList<CustomerFormTableSingleFieldValue> toReturnSortedDataTitleList) {
ArrayList<CustomerFormTableSingleFieldValue> list = new ArrayList<>();
//toReturnSortedDataTitleList中缺少的asfMasterId的map
@ -793,4 +798,49 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}
}
@Override
public Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String 当前用户) {
//获取用户信息 从redis中根据userkey和usertoken拿到userdetail
Map<String,String> keytokenmap = new HashMap<>();
keytokenmap.put("userkey",key);
keytokenmap.put("usertoken",token);
UserDetail userDetail = userService.getUserDetailFromRedis(keytokenmap);
String[] targetOrgOrPersonArr = targetOrgOrPerson.split(":");
Tree orgAndManTree = hrService.getOrgAndManTree();
if(condition.equals("==")){
if(targetOrgOrPersonArr[1].equals(userDetail.getWmKey().toString())){
return true;
}else{
return false;
}
}else if(condition.equals("!=")){
if(!targetOrgOrPersonArr[1].equals(userDetail.getWmKey().toString())){
return true;
}else{
return false;
}
}else{
//条件设置的组织机构人员范围
List<String> ancestorIds = orgAndManTree.getAncestorIds(targetOrgOrPersonArr[1]);
//人员所在地主部门
if(userDetail.getMaindeparment().toString().equals(targetOrgOrPersonArr[1])){
return true;
}else{
int count = 0;
for(String id : ancestorIds){
if(id.equals(targetOrgOrPersonArr[1])){
count++;
}
}
if(count > 0){
return true;
}else{
return false;
}
}
}
}
}

4
src/main/java/com/hxgk/lowcode/service/impl/UserServiceImpl.java

@ -89,6 +89,10 @@ public class UserServiceImpl implements UserService {
long adminorg = Long.parseLong(entry.getValue());
userDetail.setAdminorg(adminorg);
}
if (StringUtils.isNotEmpty(entry.getKey()) && entry.getKey().equals("maindeparment")) {
long maindeparment = Long.parseLong(entry.getValue());
userDetail.setMaindeparment(maindeparment);
}
}
return userDetail;

Loading…
Cancel
Save