浏览代码

一小波优化

zhou-hao 7 年之前
父节点
当前提交
5c656a7fa6
共有 25 个文件被更改,包括 166 次插入207 次删除
  1. 2 1
      hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/factory/MapperEntityFactory.java
  2. 6 0
      hsweb-core/src/main/java/org/hswebframework/web/bean/BeanFactory.java
  3. 23 9
      hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java
  4. 4 3
      hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/HswebAutoConfiguration.java
  5. 0 41
      hsweb-system/hsweb-system-all/pom.xml
  6. 0 15
      hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/pom.xml
  7. 0 5
      hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/src/main/java/org/hswebframework/web/calendar/api/Calendar.java
  8. 0 4
      hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/src/main/java/org/hswebframework/web/calendar/api/CalendarEvent.java
  9. 0 6
      hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/src/main/java/org/hswebframework/web/calendar/api/CalendarService.java
  10. 0 15
      hsweb-system/hsweb-system-calendar/hsweb-system-calendar-cluster/pom.xml
  11. 0 15
      hsweb-system/hsweb-system-calendar/hsweb-system-calendar-local/pom.xml
  12. 0 21
      hsweb-system/hsweb-system-calendar/pom.xml
  13. 0 6
      hsweb-system/hsweb-system-cli/README.md
  14. 0 15
      hsweb-system/hsweb-system-cli/pom.xml
  15. 0 5
      hsweb-system/hsweb-system-history/README.md
  16. 0 15
      hsweb-system/hsweb-system-history/pom.xml
  17. 0 2
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/PersonnelAuthorizationHolder.java
  18. 13 12
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/TreeNode.java
  19. 16 7
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/simple/SimplePersonnelAuthorization.java
  20. 55 0
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/simple/SimplePersonnelAuthorizationBuilder.java
  21. 38 0
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/test/java/org/hswebframework/web/organizational/authorization/simple/SimplePersonnelAuthorizationBuilderTest.java
  22. 1 1
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-service/hsweb-system-organizational-service-simple/src/main/java/org/hswebframework/web/service/organizational/simple/SimplePersonService.java
  23. 5 1
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-flowable/src/main/java/org/hswebframework/web/workflow/flowable/controller/FlowableUtilsController.java
  24. 3 4
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-flowable/src/main/java/org/hswebframework/web/workflow/flowable/utils/CustomGroupEntityManager.java
  25. 0 4
      hsweb-system/pom.xml

+ 2 - 1
hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/factory/MapperEntityFactory.java

@@ -21,6 +21,7 @@ package org.hswebframework.web.commons.entity.factory;
 import lombok.SneakyThrows;
 import org.hswebframework.web.NotFoundException;
 import org.hswebframework.utils.ClassUtils;
+import org.hswebframework.web.bean.BeanFactory;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,7 +35,7 @@ import java.util.function.Supplier;
  * @since 3.0
  */
 @SuppressWarnings("unchecked")
-public class MapperEntityFactory implements EntityFactory {
+public class MapperEntityFactory implements EntityFactory ,BeanFactory {
     private Map<Class, Mapper> realTypeMapper = new HashMap<>();
     private Logger logger = LoggerFactory.getLogger(this.getClass());
     private Map<String, PropertyCopier> copierCache = new HashMap<>();

+ 6 - 0
hsweb-core/src/main/java/org/hswebframework/web/bean/BeanFactory.java

@@ -0,0 +1,6 @@
+package org.hswebframework.web.bean;
+
+public interface BeanFactory {
+
+    <T> T newInstance(Class<T> beanType);
+}

+ 23 - 9
hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java

@@ -2,6 +2,7 @@ package org.hswebframework.web.bean;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.beanutils.BeanUtilsBean;
 import org.apache.commons.beanutils.PropertyUtilsBean;
@@ -33,10 +34,18 @@ public final class FastBeanCopier {
 
     private static final Map<Class, Class> wrapperClassMapping = new HashMap<>();
 
-    public static final DefaultConvert DEFAULT_CONVERT = new DefaultConvert();
+    public static final DefaultConverter DEFAULT_CONVERT = new DefaultConverter();
 
     public static final Class[] EMPTY_CLASS_ARRAY = new Class[0];
 
+    public static BeanFactory BEAN_FACTORY = new BeanFactory() {
+        @Override
+        @SneakyThrows
+        public <T> T newInstance(Class<T> beanType) {
+            return beanType == Map.class ? (T) new HashMap<>() : beanType.newInstance();
+        }
+    };
+
     static {
         wrapperClassMapping.put(byte.class, Byte.class);
         wrapperClassMapping.put(short.class, Short.class);
@@ -265,7 +274,9 @@ public final class FastBeanCopier {
                 boolean hasGeneric = false;
                 if (field != null) {
                     String[] arr = Arrays.stream(ResolvableType.forField(field)
-                            .getGenerics()).map(ResolvableType::getRawClass)
+                            .getGenerics())
+                            .map(ResolvableType::getRawClass)
+                            .filter(Objects::nonNull)
                             .map(t -> t.getName().concat(".class"))
                             .toArray(String[]::new);
                     if (arr.length > 0) {
@@ -324,16 +335,16 @@ public final class FastBeanCopier {
                 } else {
                     if (Cloneable.class.isAssignableFrom(targetType)) {
                         try {
-                            convertCode.append("(" + getTypeName() + ")").append(getterCode).append(".clone()");
+                            convertCode.append("(").append(getTypeName()).append(")").append(getterCode).append(".clone()");
                         } catch (Exception e) {
                             convertCode.append(getterCode);
                         }
                     } else {
                         if ((Map.class.isAssignableFrom(targetType)
                                 || Collection.class.isAssignableFrom(type)) && hasGeneric) {
-                            convertCode.append("(" + getTypeName() + ")").append(convert);
+                            convertCode.append("(").append(getTypeName()).append(")").append(convert);
                         } else {
-                            convertCode.append("(" + getTypeName() + ")").append(getterCode);
+                            convertCode.append("(").append(getTypeName()).append(")").append(getterCode);
 //                            convertCode.append(getterCode);
                         }
 
@@ -398,7 +409,12 @@ public final class FastBeanCopier {
     }
 
 
-    static final class DefaultConvert implements Converter {
+    public static final class DefaultConverter implements Converter {
+        private BeanFactory beanFactory = BEAN_FACTORY;
+
+        public void setBeanFactory(BeanFactory beanFactory) {
+            this.beanFactory = beanFactory;
+        }
 
         public Collection newCollection(Class targetClass) {
 
@@ -504,9 +520,7 @@ public final class FastBeanCopier {
                     return converter.convert(targetClass, source);
                 }
 
-                T newTarget = targetClass == Map.class ? (T) new HashMap<>() : targetClass.newInstance();
-                copy(source, newTarget);
-                return newTarget;
+                return copy(source, beanFactory.newInstance(targetClass),this);
             } catch (Exception e) {
                 log.warn("复制类型{}->{}失败", source, targetClass, e);
                 throw new UnsupportedOperationException(e.getMessage(), e);

+ 4 - 3
hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/HswebAutoConfiguration.java

@@ -25,6 +25,7 @@ import com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;
 import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import org.hswebframework.web.ThreadLocalUtils;
+import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.commons.entity.factory.EntityFactory;
 import org.hswebframework.web.commons.entity.factory.MapperEntityFactory;
 import org.hswebframework.web.convert.CustomMessageConverter;
@@ -64,8 +65,6 @@ import java.lang.reflect.Type;
 import java.util.List;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 @Configuration
@@ -175,7 +174,9 @@ public class HswebAutoConfiguration {
     @Bean(name = "entityFactory")
     @ConditionalOnMissingBean(EntityFactory.class)
     public MapperEntityFactory mapperEntityFactory() {
-        return new MapperEntityFactory(entityProperties.createMappers());
+        MapperEntityFactory entityFactory = new MapperEntityFactory(entityProperties.createMappers());
+        FastBeanCopier.BEAN_FACTORY = entityFactory;
+        return entityFactory;
     }
 
     @Bean

+ 0 - 41
hsweb-system/hsweb-system-all/pom.xml

@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>pom</packaging>
-    <artifactId>hsweb-system-all</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-system-authorization-starter</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-system-database-manager-starter</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-system-dictionary-starter</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-system-organizational-starter</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-
-    </dependencies>
-</project>

+ 0 - 15
hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system-calendar</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-system-calendar-api</artifactId>
-
-
-</project>

+ 0 - 5
hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/src/main/java/org/hswebframework/web/calendar/api/Calendar.java

@@ -1,5 +0,0 @@
-package org.hswebframework.web.calendar.api;
-
-public interface Calendar {
-
-}

+ 0 - 4
hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/src/main/java/org/hswebframework/web/calendar/api/CalendarEvent.java

@@ -1,4 +0,0 @@
-package org.hswebframework.web.calendar.api;
-
-public interface CalendarEvent {
-}

+ 0 - 6
hsweb-system/hsweb-system-calendar/hsweb-system-calendar-api/src/main/java/org/hswebframework/web/calendar/api/CalendarService.java

@@ -1,6 +0,0 @@
-package org.hswebframework.web.calendar.api;
-
-public class CalendarService {
-
-
-}

+ 0 - 15
hsweb-system/hsweb-system-calendar/hsweb-system-calendar-cluster/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system-calendar</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-system-calendar-cluster</artifactId>
-
-
-</project>

+ 0 - 15
hsweb-system/hsweb-system-calendar/hsweb-system-calendar-local/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system-calendar</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-system-calendar-local</artifactId>
-
-
-</project>

+ 0 - 21
hsweb-system/hsweb-system-calendar/pom.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-system-calendar</artifactId>
-    <packaging>pom</packaging>
-    <modules>
-        <module>hsweb-system-calendar-api</module>
-        <module>hsweb-system-calendar-local</module>
-        <module>hsweb-system-calendar-cluster</module>
-    </modules>
-
-
-</project>

+ 0 - 6
hsweb-system/hsweb-system-cli/README.md

@@ -1,6 +0,0 @@
-## 在线命令行工具
-
-可通过在线执行命令脚本,查看系统信息,维护等功能
-
-## API
-//todo

+ 0 - 15
hsweb-system/hsweb-system-cli/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-system-cli</artifactId>
-
-
-</project>

+ 0 - 5
hsweb-system/hsweb-system-history/README.md

@@ -1,5 +0,0 @@
-## 历史记录管理
-用于记录各种数据历史记录
-
-## API
-//todo

+ 0 - 15
hsweb-system/hsweb-system-history/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-system</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-system-history</artifactId>
-
-
-</project>

+ 0 - 2
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/PersonnelAuthorizationHolder.java

@@ -11,8 +11,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.function.Function;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 public class PersonnelAuthorizationHolder {

+ 13 - 12
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/TreeNode.java

@@ -16,10 +16,10 @@ import java.util.function.Predicate;
 public class TreeNode<V> implements Serializable {
     private static final long serialVersionUID = 1_0;
 
-    /**
-     * 父节点,根节点为{@code null}
-     */
-    private TreeNode<V> parent;
+//    /**
+//     * 父节点,根节点为{@code null}
+//     */
+//    private TreeNode<V> parent;
 
     /**
      * 节点值
@@ -32,14 +32,14 @@ public class TreeNode<V> implements Serializable {
     private int level;
 
     private Set<TreeNode<V>> children;
-
-    public TreeNode<V> getParent() {
-        return parent;
-    }
-
-    public void setParent(TreeNode<V> parent) {
-        this.parent = parent;
-    }
+//
+//    public TreeNode<V> getParent() {
+//        return parent;
+//    }
+//
+//    public void setParent(TreeNode<V> parent) {
+//        this.parent = parent;
+//    }
 
     public V getValue() {
         return value;
@@ -55,6 +55,7 @@ public class TreeNode<V> implements Serializable {
 
     public void setChildren(Set<TreeNode<V>> children) {
         this.children = children;
+        children.forEach(node -> node.setLevel(getLevel() + 1));
     }
 
     public int getLevel() {

+ 16 - 7
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/simple/SimplePersonnelAuthorization.java

@@ -1,10 +1,17 @@
 package org.hswebframework.web.organizational.authorization.simple;
 
-import org.hswebframework.web.organizational.authorization.Personnel;
-import org.hswebframework.web.organizational.authorization.PersonnelAuthorization;
-import org.hswebframework.web.organizational.authorization.Position;
-import org.hswebframework.web.organizational.authorization.TreeNode;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import org.hswebframework.web.Maps;
+import org.hswebframework.web.bean.BeanFactory;
+import org.hswebframework.web.bean.Converter;
+import org.hswebframework.web.bean.FastBeanCopier;
+import org.hswebframework.web.organizational.authorization.*;
+import org.hswebframework.web.organizational.authorization.relation.Relation;
 import org.hswebframework.web.organizational.authorization.relation.Relations;
+import org.hswebframework.web.organizational.authorization.relation.SimpleRelation;
+import org.hswebframework.web.organizational.authorization.relation.SimpleRelations;
 
 import java.util.Collections;
 import java.util.Set;
@@ -14,13 +21,13 @@ import java.util.Set;
  */
 public class SimplePersonnelAuthorization implements PersonnelAuthorization {
     private static final long serialVersionUID = 1_0;
-    private Personnel             personnel;
+    private Personnel personnel;
     private Set<TreeNode<String>> districtIds;
     private Set<TreeNode<String>> orgIds;
     private Set<TreeNode<String>> positionIds;
     private Set<TreeNode<String>> departmentIds;
-    private Relations             relations;
-    private Set<Position>         positions;
+    private Relations relations;
+    private Set<Position> positions;
 
     public void setPositions(Set<Position> positions) {
         this.positions = positions;
@@ -96,4 +103,6 @@ public class SimplePersonnelAuthorization implements PersonnelAuthorization {
     public void setDepartmentIds(Set<TreeNode<String>> departmentIds) {
         this.departmentIds = departmentIds;
     }
+
+
 }

+ 55 - 0
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/simple/SimplePersonnelAuthorizationBuilder.java

@@ -0,0 +1,55 @@
+package org.hswebframework.web.organizational.authorization.simple;
+
+import com.alibaba.fastjson.JSON;
+import org.hswebframework.web.bean.BeanFactory;
+import org.hswebframework.web.bean.FastBeanCopier;
+import org.hswebframework.web.organizational.authorization.*;
+import org.hswebframework.web.organizational.authorization.relation.Relation;
+import org.hswebframework.web.organizational.authorization.relation.Relations;
+import org.hswebframework.web.organizational.authorization.relation.SimpleRelation;
+import org.hswebframework.web.organizational.authorization.relation.SimpleRelations;
+
+import java.util.Map;
+
+public class SimplePersonnelAuthorizationBuilder {
+    static FastBeanCopier.DefaultConverter converter = new FastBeanCopier.DefaultConverter();
+
+    static {
+        converter.setBeanFactory(new BeanFactory() {
+            @Override
+            public <T> T newInstance(Class<T> targetClass) {
+                if (targetClass == Position.class) {
+                    return (T) new SimplePosition();
+                }
+                if (targetClass == Personnel.class) {
+                    return (T) new SimplePersonnel();
+                }
+                if (targetClass == Department.class) {
+                    return (T) new SimpleDepartment();
+                }
+                if (targetClass == Organization.class) {
+                    return (T) new SimpleOrganization();
+                }
+                if (targetClass == District.class) {
+                    return (T) new SimpleDistrict();
+                }
+                if (targetClass == Relation.class) {
+                    return (T) new SimpleRelation();
+                }
+                if (targetClass == Relations.class) {
+                    return (T) new SimpleRelations();
+                }
+                return FastBeanCopier.BEAN_FACTORY.newInstance(targetClass);
+            }
+        });
+    }
+
+    public static SimplePersonnelAuthorization fromJson(String json) {
+        return fromMap(JSON.parseObject(json));
+    }
+
+    public static SimplePersonnelAuthorization fromMap(Map<String,Object> map) {
+        return FastBeanCopier.copy(map, new SimplePersonnelAuthorization(), converter);
+    }
+
+}

+ 38 - 0
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/test/java/org/hswebframework/web/organizational/authorization/simple/SimplePersonnelAuthorizationBuilderTest.java

@@ -0,0 +1,38 @@
+package org.hswebframework.web.organizational.authorization.simple;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import org.hswebframework.web.Maps;
+import org.hswebframework.web.bean.FastBeanCopier;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+import static org.hswebframework.web.organizational.authorization.simple.SimplePersonnelAuthorizationBuilder.fromJson;
+
+public class SimplePersonnelAuthorizationBuilderTest {
+
+    @Test
+    public void test() {
+        JSONObject auth = new JSONObject();
+        auth.put("personnel", Maps.buildMap()
+                .put("id", "1234")
+                .put("name", "234")
+                .get());
+
+        auth.put("orgIds", JSON.parseArray("[{\"value\":\"123\",\"children\":[{\"value\":\"234\"}]}]"));
+
+        auth.put("positions", JSON.parseArray("[{\"id\":\"1234\"," +
+                "\"department\":{\"id\":\"1234\",\"org\":{\"id\":\"234\",\"district\":{\"id\":\"test\"}}}}]"));
+
+        SimplePersonnelAuthorization authorization = fromJson(auth.toJSONString());
+
+
+        Object json = JSON.toJSON(authorization);
+        System.out.println(JSON.toJSONString(json, SerializerFeature.PrettyFormat));
+
+        System.out.println(JSON.toJSONString(FastBeanCopier.copy(authorization,new JSONObject())).equals(json.toString()));
+    }
+}

+ 1 - 1
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-service/hsweb-system-organizational-service-simple/src/main/java/org/hswebframework/web/service/organizational/simple/SimplePersonService.java

@@ -454,7 +454,7 @@ public class SimplePersonService extends GenericEntityService<PersonEntity, Stri
                 TreeNode<String> parentNode = new TreeNode<>();
                 parentNode.setValue(parent.getId());
                 parentNode.setChildren(treeNodes);
-                treeNode.setParent(parentNode);
+//                treeNode.setParent(parentNode);
             }
             treeNode.setValue(node.getId());
             if (node.getChildren() != null && !node.getChildren().isEmpty()) {

+ 5 - 1
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-flowable/src/main/java/org/hswebframework/web/workflow/flowable/controller/FlowableUtilsController.java

@@ -1,6 +1,8 @@
 package org.hswebframework.web.workflow.flowable.controller;
 
+import io.swagger.annotations.Api;
 import org.activiti.engine.impl.pvm.process.ActivityImpl;
+import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.controller.message.ResponseMessage;
 import org.hswebframework.web.entity.workflow.ActDefEntity;
 import org.hswebframework.web.service.workflow.ActDefService;
@@ -20,7 +22,9 @@ import static org.hswebframework.web.commons.entity.param.QueryParamEntity.singl
  * @Date 2017/9/4.
  */
 @RestController
-@RequestMapping("workflow/utils/")
+@RequestMapping("workflow/utils")
+@Api(tags = "工作流-节点配置", description = "工作流节点配置")
+@Authorize(permission = "workflow-utils", description = "节点配置")
 public class FlowableUtilsController {
 
     @Autowired

+ 3 - 4
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-flowable/src/main/java/org/hswebframework/web/workflow/flowable/utils/CustomGroupEntityManager.java

@@ -11,11 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
-/**
- * Created by Administrator on 2016/3/19 0019.
- */
 public class CustomGroupEntityManager extends GroupEntityManager {
 
     private UserService userService;
@@ -45,7 +44,7 @@ public class CustomGroupEntityManager extends GroupEntityManager {
             List<RoleEntity> sysRoles = userService.getUserRole(id);
             return ActivitiUserUtil.toActivitiGroups(sysRoles);
         } catch (EmptyResultDataAccessException e) {
-            return null;
+            return new ArrayList<>();
         }
     }
 

+ 0 - 4
hsweb-system/pom.xml

@@ -19,17 +19,13 @@
         <module>hsweb-system-datasource</module>
         <module>hsweb-system-workflow</module>
         <module>hsweb-system-schedule</module>
-        <module>hsweb-system-cli</module>
-        <module>hsweb-system-all</module>
         <module>hsweb-system-organizational</module>
         <module>hsweb-system-file</module>
         <module>hsweb-system-template</module>
         <module>hsweb-system-script</module>
-        <module>hsweb-system-history</module>
         <module>hsweb-system-dictionary</module>
         <module>hsweb-system-oauth2-server</module>
         <module>hsweb-system-oauth2-client</module>
-        <module>hsweb-system-calendar</module>
         <module>hsweb-system-dashboard</module>
         <module>hsweb-system-dev-tools</module>
     </modules>