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()) + +