Browse Source

Merge remote-tracking branch 'origin/3.0.x' into 3.0.x

zhouhao 6 years ago
parent
commit
ced575c473

+ 4 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/TestCrud.java

@@ -3,6 +3,7 @@ package org.hswebframework.web.dao.crud;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.hswebframework.ezorm.core.param.QueryParam;
 import org.hswebframework.ezorm.rdb.executor.SqlExecutor;
+import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
 import org.hswebframework.web.datasource.DataSourceHolder;
 import org.hswebframework.web.dict.EnumDict;
@@ -80,6 +81,9 @@ public class TestCrud extends AbstractTransactionalJUnit4SpringContextTests {
 
 //        testDao.query(entity);
 
+        DeleteParamEntity.newDelete()
+                .where("id","1234")
+                .exec(testDao::delete);
         System.out.println(entities);
     }
 

+ 5 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/resources/org/hswebframework/web/dao/test/TestDao.xml

@@ -28,6 +28,11 @@
         <include refid="BasicMapper.buildUpdateSql"/>
     </update>
 
+    <update id="delete" parameterType="org.hswebframework.web.commons.entity.Entity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildDeleteSql"/>
+    </update>
+
     <select id="query" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="TestResultMap">
         <include refid="config"/>
         <include refid="BasicMapper.buildSelectSql"/>

+ 9 - 1
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericEntityService.java

@@ -91,11 +91,19 @@ public abstract class GenericEntityService<E extends GenericEntity<PK>, PK>
                     .where(GenericEntity.id, pk)
                     .exec();
         } else {
-            getDao().deleteByPk(pk);
+            if (!physicalDeleteByPk(pk)) {
+                logger.warn("物理删除数据失败,主键:{}", pk);
+            }
         }
         return old;
     }
 
+    protected boolean physicalDeleteByPk(PK pk) {
+        //createDelete().where(GenericEntity.id,pk).exec()>0;
+
+        return getDao().deleteByPk(pk) > 0;
+    }
+
     protected boolean pushModifyEvent() {
         return RecordModifierEntity.class.isAssignableFrom(entityType);
     }

+ 10 - 5
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-starter/src/test/java/org/hswebframework/web/datasource/manager/simple/SimpleDatabaseManagerServiceTest.java

@@ -6,6 +6,7 @@ import org.hswebframework.web.database.manager.SqlExecuteRequest;
 import org.hswebframework.web.database.manager.SqlExecuteResult;
 import org.hswebframework.web.database.manager.SqlInfo;
 import org.hswebframework.web.tests.SimpleWebApplicationTests;
+import org.junit.Assert;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.ComponentScan;
@@ -42,9 +43,10 @@ public class SimpleDatabaseManagerServiceTest extends SimpleWebApplicationTests
 
         request.setSql(Arrays.asList(sqlInfo));
         List<SqlExecuteResult> results = databaseManagerService.execute(id, request);
-        System.out.println(JSON.toJSONString(results));
+//        System.out.println(JSON.toJSONString(results));
+        Assert.assertFalse(results.isEmpty());
         request.setSql(Arrays.asList(sqlInfo2));
-        int total = 1000;
+        int total = 10;
         CountDownLatch countDownLatch = new CountDownLatch(total);
 
         for (int i = 0; i < total; i++) {
@@ -65,13 +67,16 @@ public class SimpleDatabaseManagerServiceTest extends SimpleWebApplicationTests
 
         request.setSql(Arrays.asList(sqlInfo));
         results = databaseManagerService.execute(id, request);
-        System.out.println(JSON.toJSONString(results));
+        Assert.assertFalse(results.isEmpty());
 
-        System.out.println(sqlExecutor.list("select * from t_test"));
+//        System.out.println(JSON.toJSONString(results));
+
+       Assert.assertTrue(sqlExecutor.list("select * from t_test").isEmpty());
 
         databaseManagerService.rollback(id);
         Thread.sleep(2000);
-        System.out.println(sqlExecutor.list("select * from t_test").size());
+        Assert.assertTrue(sqlExecutor.list("select * from t_test").isEmpty());
+
 
     }
 }

+ 20 - 4
hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-local/src/main/java/org/hswebframework/web/dictionary/simple/BoostDictDefineRepository.java

@@ -2,6 +2,7 @@ package org.hswebframework.web.dictionary.simple;
 
 import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.commons.entity.DataStatus;
+import org.hswebframework.web.commons.entity.param.QueryParamEntity;
 import org.hswebframework.web.dict.DictDefine;
 import org.hswebframework.web.dict.EnumDict;
 import org.hswebframework.web.dict.defaults.DefaultDictDefine;
@@ -9,6 +10,7 @@ import org.hswebframework.web.dict.defaults.DefaultDictDefineRepository;
 import org.hswebframework.web.dictionary.api.DictionaryItemService;
 import org.hswebframework.web.dictionary.api.DictionaryService;
 import org.hswebframework.web.dictionary.api.entity.DictionaryEntity;
+import org.hswebframework.web.dictionary.api.entity.DictionaryItemEntity;
 import org.hswebframework.web.dictionary.api.events.ClearDictionaryCacheEvent;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheConfig;
@@ -18,7 +20,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.event.TransactionalEventListener;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -64,14 +68,26 @@ public class BoostDictDefineRepository extends DefaultDictDefineRepository {
 
     @Override
     public List<DictDefine> getAllDefine() {
-        List<DictDefine> all = dictionaryService.select()
+        //查询所有的字典项并按字典ID分组
+        Map<String, List<DictionaryItemEntity>> items = QueryParamEntity.newQuery()
+                .where(DictionaryItemEntity::getStatus, DataStatus.STATUS_ENABLED)
+                .noPaging()
+                .execute(itemService::select)
+                .stream().collect(Collectors.groupingBy(DictionaryItemEntity::getDictId));
+
+        //转换为字段
+        List<DictDefine> all =QueryParamEntity.newQuery()
+                .where(DictionaryEntity::getStatus,DataStatus.STATUS_ENABLED)
+                .noPaging()
+                .execute(dictionaryService::select)
                 .stream()
                 .map(dict -> DefaultDictDefine.builder()
                         .id(dict.getId())
                         .comments(dict.getDescribe())
-                        .items((List) new ArrayList<>(dict.getItems()))
-                        .build()).collect(Collectors.toList());
-
+                        .items((List) items.getOrDefault(dict.getId(),Collections.emptyList()))
+                        .build())
+                .collect(Collectors.toList());
+        //添加默认的字典
         all.addAll(super.getAllDefine());
         return all;
     }