diff --git a/src/main/java/cn/lihongjie/coal/Codegen.java b/src/main/java/cn/lihongjie/coal/Codegen.java
index 9d25df13..1e7dc230 100644
--- a/src/main/java/cn/lihongjie/coal/Codegen.java
+++ b/src/main/java/cn/lihongjie/coal/Codegen.java
@@ -73,12 +73,13 @@ import javax.lang.model.element.Modifier;
* required when running on JDK 16 and newer, due to JEP 396: Strongly Encapsulate JDK Internals by
* Default:
*
- *
--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
- * --add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
- * --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
- * --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
- * --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
- * --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+ *
+--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
*/
public class Codegen {
diff --git a/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java b/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java
index 61b17ed4..86196c9d 100644
--- a/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java
+++ b/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java
@@ -15,6 +15,8 @@ import cn.lihongjie.coal.exception.BizException;
import cn.lihongjie.coal.script.dto.ScriptExecResultDto;
import cn.lihongjie.coal.script.entity.ScriptEntity;
import cn.lihongjie.coal.script.service.ScriptService;
+import cn.lihongjie.coal.sysState.entity.SysStateEntity;
+import cn.lihongjie.coal.sysState.service.SysStateService;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -43,6 +45,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
import org.springframework.util.StopWatch;
import java.io.InputStream;
@@ -60,6 +63,7 @@ public class DictionaryService extends BaseService "(d.code = '" + x._1 + "' and di.code = '" + x._2 + "')")
- .reduce((x, y) -> x + " or " + y)
- .get();
+ String where =
+ tuple2s.stream()
+ .map(x -> "(d.code = '" + x._1 + "' and di.code = '" + x._2 + "')")
+ .reduce((x, y) -> x + " or " + y)
+ .get();
stopWatch.start("createNativeQuery");
- Query nativeQuery = em.createNativeQuery(
- """
+ Query nativeQuery =
+ em.createNativeQuery(
+ """
select d.code as dict_key, di.code as dict_code, di.name as dict_name from t_dictionary d inner join t_dictionary_item di on d.id = di.dictionary_id
where
- """ + where, Tuple.class);
-
+ """
+ + where,
+ Tuple.class);
stopWatch.stop();
stopWatch.start("getResultList");
List resultList = nativeQuery.getResultList();
-
stopWatch.stop();
stopWatch.start("collect");
@@ -336,7 +358,7 @@ public class DictionaryService extends BaseService list(@RequestBody CommonQuery request) {
+ return this.service.list(request);
+ }
+}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/dto/CreateSysStateDto.java b/src/main/java/cn/lihongjie/coal/sysState/dto/CreateSysStateDto.java
new file mode 100644
index 00000000..ab0e70a3
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/dto/CreateSysStateDto.java
@@ -0,0 +1,8 @@
+package cn.lihongjie.coal.sysState.dto;
+
+import cn.lihongjie.coal.base.dto.CommonDto;
+
+import lombok.Data;
+
+@Data
+public class CreateSysStateDto extends CommonDto {}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/dto/SysStateDto.java b/src/main/java/cn/lihongjie/coal/sysState/dto/SysStateDto.java
new file mode 100644
index 00000000..2f76d3b7
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/dto/SysStateDto.java
@@ -0,0 +1,8 @@
+package cn.lihongjie.coal.sysState.dto;
+
+import cn.lihongjie.coal.base.dto.CommonDto;
+
+import lombok.Data;
+
+@Data
+public class SysStateDto extends CommonDto {}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/dto/UpdateSysStateDto.java b/src/main/java/cn/lihongjie/coal/sysState/dto/UpdateSysStateDto.java
new file mode 100644
index 00000000..38e83526
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/dto/UpdateSysStateDto.java
@@ -0,0 +1,8 @@
+package cn.lihongjie.coal.sysState.dto;
+
+import cn.lihongjie.coal.base.dto.CommonDto;
+
+import lombok.Data;
+
+@Data
+public class UpdateSysStateDto extends CommonDto {}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/entity/SysStateEntity.java b/src/main/java/cn/lihongjie/coal/sysState/entity/SysStateEntity.java
new file mode 100644
index 00000000..590e5a57
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/entity/SysStateEntity.java
@@ -0,0 +1,16 @@
+package cn.lihongjie.coal.sysState.entity;
+
+import cn.lihongjie.coal.base.entity.CommonEntity;
+
+import jakarta.persistence.Entity;
+
+import lombok.Data;
+
+@Data
+@Entity
+public class SysStateEntity extends CommonEntity {
+
+
+ String stateValue;
+
+}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/mapper/SysStateMapper.java b/src/main/java/cn/lihongjie/coal/sysState/mapper/SysStateMapper.java
new file mode 100644
index 00000000..18d333d3
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/mapper/SysStateMapper.java
@@ -0,0 +1,19 @@
+package cn.lihongjie.coal.sysState.mapper;
+
+import cn.lihongjie.coal.base.mapper.BaseMapper;
+import cn.lihongjie.coal.base.mapper.CommonEntityMapper;
+import cn.lihongjie.coal.base.mapper.CommonMapper;
+import cn.lihongjie.coal.sysState.dto.CreateSysStateDto;
+import cn.lihongjie.coal.sysState.dto.SysStateDto;
+import cn.lihongjie.coal.sysState.dto.UpdateSysStateDto;
+import cn.lihongjie.coal.sysState.entity.SysStateEntity;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.control.DeepClone;
+
+@Mapper(
+ componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING,
+ uses = {CommonMapper.class, CommonEntityMapper.class},
+ mappingControl = DeepClone.class)
+public interface SysStateMapper
+ extends BaseMapper {}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/repository/SysStateRepository.java b/src/main/java/cn/lihongjie/coal/sysState/repository/SysStateRepository.java
new file mode 100644
index 00000000..66347b7b
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/repository/SysStateRepository.java
@@ -0,0 +1,15 @@
+package cn.lihongjie.coal.sysState.repository;
+
+import cn.lihongjie.coal.base.dao.BaseRepository;
+import cn.lihongjie.coal.sysState.entity.SysStateEntity;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface SysStateRepository extends BaseRepository {
+ @Query("select false")
+ boolean isLinked(List ids);
+}
diff --git a/src/main/java/cn/lihongjie/coal/sysState/service/SysStateService.java b/src/main/java/cn/lihongjie/coal/sysState/service/SysStateService.java
new file mode 100644
index 00000000..94eb9e94
--- /dev/null
+++ b/src/main/java/cn/lihongjie/coal/sysState/service/SysStateService.java
@@ -0,0 +1,102 @@
+package cn.lihongjie.coal.sysState.service;
+
+import cn.lihongjie.coal.base.dto.CommonQuery;
+import cn.lihongjie.coal.base.dto.IdRequest;
+import cn.lihongjie.coal.base.service.BaseService;
+import cn.lihongjie.coal.dbFunctions.DbFunctionService;
+import cn.lihongjie.coal.exception.BizException;
+import cn.lihongjie.coal.sysState.dto.CreateSysStateDto;
+import cn.lihongjie.coal.sysState.dto.SysStateDto;
+import cn.lihongjie.coal.sysState.dto.UpdateSysStateDto;
+import cn.lihongjie.coal.sysState.entity.SysStateEntity;
+import cn.lihongjie.coal.sysState.mapper.SysStateMapper;
+import cn.lihongjie.coal.sysState.repository.SysStateRepository;
+
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+
+import lombok.extern.slf4j.Slf4j;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.convert.ConversionService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Slf4j
+@Transactional
+public class SysStateService extends BaseService {
+ @PersistenceContext EntityManager em;
+ @Autowired private SysStateRepository repository;
+ @Autowired private SysStateMapper mapper;
+ @Autowired private ConversionService conversionService;
+ @Autowired private DbFunctionService dbFunctionService;
+
+ public SysStateDto create(CreateSysStateDto request) {
+ SysStateEntity entity = mapper.toEntity(request);
+
+ this.repository.save(entity);
+ return getById(entity.getId());
+ }
+
+ public SysStateDto update(UpdateSysStateDto request) {
+ SysStateEntity entity = this.repository.get(request.getId());
+ this.mapper.updateEntity(entity, request);
+
+ this.repository.save(entity);
+
+ return getById(entity.getId());
+ }
+
+ public void delete(IdRequest request) {
+ boolean linked = this.repository.isLinked(request.getIds());
+
+ if (linked) {
+ throw new BizException("数据已被关联,无法删除");
+ }
+
+ this.repository.deleteAllById(request.getIds());
+ }
+
+ public SysStateDto getById(String id) {
+ SysStateEntity entity = repository.get(id);
+
+ return mapper.toDto(entity);
+ }
+
+ public Page list(CommonQuery query) {
+ Page page =
+ repository.findAll(
+ query.specification(conversionService),
+ PageRequest.of(
+ query.getPageNo(),
+ query.getPageSize(),
+ Sort.by(query.getOrders())));
+
+ return page.map(this.mapper::toDto);
+ }
+
+ public SysStateEntity getByCode(String code) {
+
+
+ SysStateEntity sysState = em.createQuery("from SysStateEntity where code = :code", SysStateEntity.class)
+ .setParameter("code", code)
+ .getResultStream().findFirst().orElse(null);
+
+ if (sysState == null) {
+
+ SysStateEntity state = new SysStateEntity();
+ state.setCode(code);
+ state.setName(code);
+ state.setStateValue("");
+ em.persist(state);
+ return state;
+ } else {
+ return sysState;
+ }
+
+ }
+}
diff --git a/src/main/resources/scripts/dict/enum/sysStateDict.groovy b/src/main/resources/scripts/dict/enum/sysStateDict.groovy
new file mode 100644
index 00000000..ec6d1844
--- /dev/null
+++ b/src/main/resources/scripts/dict/enum/sysStateDict.groovy
@@ -0,0 +1,17 @@
+
+package scripts.dict
+
+import cn.lihongjie.coal.base.dto.CommonQuery
+import cn.lihongjie.coal.sysState.controller.SysStateController
+import org.springframework.context.ApplicationContext
+
+ApplicationContext ioc = ioc
+
+def controller = ioc.getBean(SysStateController.class)
+
+
+
+
+return controller.list(new CommonQuery())
+
+