diff --git a/src/main/java/cn/lihongjie/coal/annotation/ViewEntity.java b/src/main/java/cn/lihongjie/coal/annotation/ViewEntity.java new file mode 100644 index 00000000..f61574dc --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/annotation/ViewEntity.java @@ -0,0 +1,9 @@ +package cn.lihongjie.coal.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import java.util.*; + +@Retention(java.lang.annotation.RetentionPolicy.RUNTIME) +@Target({java.lang.annotation.ElementType.TYPE}) +public @interface ViewEntity {} diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java index 4bdb113a..c1533b63 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java @@ -39,12 +39,10 @@ public class CoalWashingDailyAnalysisDto extends OrgCommonDto { private String archiveStatusName; @ElementCollection - @Comment("用户手动录入的记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List inputItems; @ElementCollection - @Comment("用户手动录入的快浮记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List kfItems; @@ -54,7 +52,6 @@ public class CoalWashingDailyAnalysisDto extends OrgCommonDto { // private List rollingAvgItems; @ElementCollection - @Comment("参数配置") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List paramsInfo; diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CreateCoalWashingDailyAnalysisDto.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CreateCoalWashingDailyAnalysisDto.java index 63212211..4b5b0b7d 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CreateCoalWashingDailyAnalysisDto.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CreateCoalWashingDailyAnalysisDto.java @@ -26,12 +26,10 @@ public class CreateCoalWashingDailyAnalysisDto extends OrgCommonDto { private LocalDate date; @ElementCollection - @Comment("用户手动录入的记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List inputItems; @ElementCollection - @Comment("用户手动录入的快浮记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List kfItems; @@ -41,7 +39,6 @@ public class CreateCoalWashingDailyAnalysisDto extends OrgCommonDto { // private List rollingAvgItems; @ElementCollection - @Comment("参数配置") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List paramsInfo; diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/UpdateCoalWashingDailyAnalysisDto.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/UpdateCoalWashingDailyAnalysisDto.java index 76115092..e617cc2c 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/UpdateCoalWashingDailyAnalysisDto.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/UpdateCoalWashingDailyAnalysisDto.java @@ -26,12 +26,10 @@ public class UpdateCoalWashingDailyAnalysisDto extends OrgCommonDto { private LocalDate date; @ElementCollection - @Comment("用户手动录入的记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List inputItems; @ElementCollection - @Comment("用户手动录入的快浮记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List kfItems; @@ -41,7 +39,6 @@ public class UpdateCoalWashingDailyAnalysisDto extends OrgCommonDto { // private List rollingAvgItems; @ElementCollection - @Comment("参数配置") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List paramsInfo; diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java index c4476480..44ae1d41 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java @@ -45,12 +45,10 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { private LocalDate date; @ElementCollection - @Comment("用户手动录入的记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List inputItems; @ElementCollection - @Comment("用户手动录入的快浮记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List kfItems; @@ -60,7 +58,6 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { // private List rollingAvgItems; @ElementCollection - @Comment("参数配置") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private List paramsInfo; diff --git a/src/main/java/cn/lihongjie/coal/department/entity/DepartmentEntity.java b/src/main/java/cn/lihongjie/coal/department/entity/DepartmentEntity.java index b39fe06f..90f30a49 100644 --- a/src/main/java/cn/lihongjie/coal/department/entity/DepartmentEntity.java +++ b/src/main/java/cn/lihongjie/coal/department/entity/DepartmentEntity.java @@ -2,16 +2,12 @@ package cn.lihongjie.coal.department.entity; import cn.lihongjie.coal.base.entity.OrgCommonEntity; -import io.hypersistence.utils.hibernate.type.array.ListArrayType; - import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.Comment; -import org.hibernate.annotations.Formula; -import org.hibernate.annotations.Type; import java.util.List; @@ -22,17 +18,7 @@ import java.util.List; public class DepartmentEntity extends OrgCommonEntity { - @Type(ListArrayType.class) - @Formula("(select array_agg(e.id) from t_employee e where e.department_id = any(self_and_children_ids('t_department', id, true)))") - private List allEmpIds; - @Type(ListArrayType.class) - @Formula("(select array_agg(e.id) from t_employee e where e.department_id = any(self_and_children_ids('t_department', id, false)))") - private List childrenEmpIds; - - @Type(ListArrayType.class) - @Formula("(select array_agg(e.id) from t_employee e where e.department_id = id)") - private List selfEmpIds; diff --git a/src/main/java/cn/lihongjie/coal/department/entity/DepartmentViewEntity.java b/src/main/java/cn/lihongjie/coal/department/entity/DepartmentViewEntity.java new file mode 100644 index 00000000..a2c78a3f --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/department/entity/DepartmentViewEntity.java @@ -0,0 +1,44 @@ +package cn.lihongjie.coal.department.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import io.hypersistence.utils.hibernate.type.array.ListArrayType; + +import jakarta.persistence.*; + +import lombok.Getter; +import lombok.Setter; + +import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; +import org.hibernate.annotations.Subselect; +import org.hibernate.annotations.Type; + +import java.util.List; + +@Comment("部门信息") +@Getter +@Setter +@Subselect("select * from t_department") +@Entity +public class DepartmentViewEntity extends OrgCommonEntity { + + @Type(ListArrayType.class) + @Formula( + "(select array_agg(e.id) from t_employee e where e.department_id = any(self_and_children_ids('t_department', id, true)))") + private List allEmpIds; + + @Type(ListArrayType.class) + @Formula( + "(select array_agg(e.id) from t_employee e where e.department_id = any(self_and_children_ids('t_department', id, false)))") + private List childrenEmpIds; + + @Type(ListArrayType.class) + @Formula("(select array_agg(e.id) from t_employee e where e.department_id = id)") + private List selfEmpIds; + + @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) + private List children; + + @ManyToOne private DepartmentViewEntity parent; +} diff --git a/src/main/java/cn/lihongjie/coal/department/mapper/DepartmentMapper.java b/src/main/java/cn/lihongjie/coal/department/mapper/DepartmentMapper.java index bd5351ad..db575293 100644 --- a/src/main/java/cn/lihongjie/coal/department/mapper/DepartmentMapper.java +++ b/src/main/java/cn/lihongjie/coal/department/mapper/DepartmentMapper.java @@ -6,6 +6,7 @@ import cn.lihongjie.coal.department.dto.DepartmentDto; import cn.lihongjie.coal.department.dto.DepartmentTreeDto; import cn.lihongjie.coal.department.dto.UpdateDepartmentDto; import cn.lihongjie.coal.department.entity.DepartmentEntity; +import cn.lihongjie.coal.department.entity.DepartmentViewEntity; import org.mapstruct.*; import org.mapstruct.control.DeepClone; @@ -31,4 +32,9 @@ public interface DepartmentMapper @Mapping(target = "children", ignore = true) }) DepartmentTreeDto toTreeDtoExcludeChildren(DepartmentEntity departmentEntity); + + + DepartmentDto toDto(DepartmentViewEntity view); + + DepartmentTreeDto toTreeDto(DepartmentViewEntity de); } diff --git a/src/main/java/cn/lihongjie/coal/department/repository/DepartmentViewRepository.java b/src/main/java/cn/lihongjie/coal/department/repository/DepartmentViewRepository.java new file mode 100644 index 00000000..df242ad7 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/department/repository/DepartmentViewRepository.java @@ -0,0 +1,13 @@ +package cn.lihongjie.coal.department.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.department.entity.DepartmentEntity; +import cn.lihongjie.coal.department.entity.DepartmentViewEntity; + +import org.springframework.stereotype.Repository; + +@Repository +public interface DepartmentViewRepository extends BaseRepository { + + DepartmentEntity findByNameAndOrganizationId(String name, String organizationId); +} diff --git a/src/main/java/cn/lihongjie/coal/department/service/DepartmentService.java b/src/main/java/cn/lihongjie/coal/department/service/DepartmentService.java index f4a24ee9..0910c8a7 100644 --- a/src/main/java/cn/lihongjie/coal/department/service/DepartmentService.java +++ b/src/main/java/cn/lihongjie/coal/department/service/DepartmentService.java @@ -11,10 +11,14 @@ import cn.lihongjie.coal.department.dto.DepartmentDto; import cn.lihongjie.coal.department.dto.DepartmentTreeDto; import cn.lihongjie.coal.department.dto.UpdateDepartmentDto; import cn.lihongjie.coal.department.entity.DepartmentEntity; +import cn.lihongjie.coal.department.entity.DepartmentViewEntity; import cn.lihongjie.coal.department.mapper.DepartmentMapper; import cn.lihongjie.coal.department.repository.DepartmentRepository; +import cn.lihongjie.coal.department.repository.DepartmentViewRepository; import jakarta.annotation.PostConstruct; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import lombok.extern.slf4j.Slf4j; @@ -77,14 +81,30 @@ class DepartmentService extends BaseService getTreeByIds(IdRequest id) { + + if (id.getIds().isEmpty()) { + return new ArrayList<>(); + } + List roots = this.repository.findAll((root, query, criteriaBuilder) -> root.get("id").in(id.getIds())); + return roots.stream().map(de -> this.mapper.toTreeDto(de)).collect(Collectors.toList()); + + + } + @Autowired + DepartmentViewRepository departmentViewRepository; + public List getRoots(CommonQuery request) { if (CollectionUtils.isEmpty(request.getItems())){ - List roots = this.repository.findAll( (root, query, criteriaBuilder) -> criteriaBuilder.isNull(root.get("parent"))); + List roots = this.departmentViewRepository.findAll( (root, query, criteriaBuilder) -> criteriaBuilder.isNull(root.get("parent"))); return roots.stream().map(de -> this.mapper.toTreeDto(de)).collect(Collectors.toList()); }else { - Page page = - repository.findAll( + Page page = + departmentViewRepository.findAll( request.specification(conversionService), PageRequest.of( request.getPageNo(), @@ -121,23 +141,12 @@ class DepartmentService extends BaseService getTreeByIds(IdRequest id) { - - if (id.getIds().isEmpty()) { - return new ArrayList<>(); - } - List roots = this.repository.findAll((root, query, criteriaBuilder) -> root.get("id").in(id.getIds())); - return roots.stream().map(de -> this.mapper.toTreeDto(de)).collect(Collectors.toList()); - - - } - - public Page list(CommonQuery query) { - Page page = - repository.findAll( + Page page = + + + departmentViewRepository.findAll( query.specification(conversionService), PageRequest.of( query.getPageNo(), diff --git a/src/main/java/cn/lihongjie/coal/employee/dto/CreateEmployeeDto.java b/src/main/java/cn/lihongjie/coal/employee/dto/CreateEmployeeDto.java index baf99f2f..323edac7 100644 --- a/src/main/java/cn/lihongjie/coal/employee/dto/CreateEmployeeDto.java +++ b/src/main/java/cn/lihongjie/coal/employee/dto/CreateEmployeeDto.java @@ -77,11 +77,9 @@ public class CreateEmployeeDto extends OrgCommonDto { private List familyMembers; @ElementCollection - @Comment("员工证件信息") private List certs; @ElementCollection - @Comment("员工车辆信息") private List cars; @Comment("养老保险基数") diff --git a/src/main/java/cn/lihongjie/coal/employee/dto/EmployeeDto.java b/src/main/java/cn/lihongjie/coal/employee/dto/EmployeeDto.java index aed4b6b3..5356da35 100644 --- a/src/main/java/cn/lihongjie/coal/employee/dto/EmployeeDto.java +++ b/src/main/java/cn/lihongjie/coal/employee/dto/EmployeeDto.java @@ -118,11 +118,9 @@ public class EmployeeDto extends OrgCommonDto { private List familyMembers; @ElementCollection - @Comment("员工证件信息") private List certs; @ElementCollection - @Comment("员工车辆信息") private List cars; diff --git a/src/main/java/cn/lihongjie/coal/employee/dto/UpdateEmployeeDto.java b/src/main/java/cn/lihongjie/coal/employee/dto/UpdateEmployeeDto.java index b6b56085..15d455b5 100644 --- a/src/main/java/cn/lihongjie/coal/employee/dto/UpdateEmployeeDto.java +++ b/src/main/java/cn/lihongjie/coal/employee/dto/UpdateEmployeeDto.java @@ -83,11 +83,9 @@ public class UpdateEmployeeDto extends OrgCommonDto { @ElementCollection - @Comment("员工证件信息") private List certs; @ElementCollection - @Comment("员工车辆信息") private List cars; @Comment("养老保险基数") private Double insurance1Base; diff --git a/src/main/java/cn/lihongjie/coal/employee/entity/EmployeeEntity.java b/src/main/java/cn/lihongjie/coal/employee/entity/EmployeeEntity.java index 6730b1c0..7bdc158e 100644 --- a/src/main/java/cn/lihongjie/coal/employee/entity/EmployeeEntity.java +++ b/src/main/java/cn/lihongjie/coal/employee/entity/EmployeeEntity.java @@ -145,18 +145,15 @@ public class EmployeeEntity extends OrgCommonEntity { @ElementCollection - @Comment("家庭成员") private List familyMembers; @ElementCollection - @Comment("员工证件信息") private List certs; @ElementCollection - @Comment("员工车辆信息") private List cars; /** diff --git a/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostEntity.java b/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostEntity.java index 5052348f..1794d004 100644 --- a/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostEntity.java +++ b/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostEntity.java @@ -2,17 +2,10 @@ package cn.lihongjie.coal.jobPost.entity; import cn.lihongjie.coal.base.entity.OrgCommonEntity; -import io.hypersistence.utils.hibernate.type.array.ListArrayType; - import jakarta.persistence.Entity; import lombok.Data; -import org.hibernate.annotations.Formula; -import org.hibernate.annotations.Type; - -import java.util.List; - @Data @Entity public class JobPostEntity extends OrgCommonEntity { @@ -20,7 +13,5 @@ public class JobPostEntity extends OrgCommonEntity { - @Type(ListArrayType.class) - @Formula("(select array_agg(e.id) from t_employee e where e.job_post_id = id)") - private List selfEmpIds; + } diff --git a/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostViewEntity.java b/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostViewEntity.java new file mode 100644 index 00000000..381b3761 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/jobPost/entity/JobPostViewEntity.java @@ -0,0 +1,28 @@ +package cn.lihongjie.coal.jobPost.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import io.hypersistence.utils.hibernate.type.array.ListArrayType; + +import jakarta.persistence.Entity; + +import lombok.Data; + +import org.hibernate.annotations.Formula; +import org.hibernate.annotations.Subselect; +import org.hibernate.annotations.Type; + +import java.util.List; + +@Data +@Subselect("select * from t_job_post") +@Entity +public class JobPostViewEntity extends OrgCommonEntity { + + @Type(ListArrayType.class) + @Formula("(select array_agg(e.id) from t_employee e where e.job_post_id = id)") + private List selfEmpIds; + + + +} diff --git a/src/main/java/cn/lihongjie/coal/jobPost/mapper/JobPostMapper.java b/src/main/java/cn/lihongjie/coal/jobPost/mapper/JobPostMapper.java index 0e9f6959..bf4c8622 100644 --- a/src/main/java/cn/lihongjie/coal/jobPost/mapper/JobPostMapper.java +++ b/src/main/java/cn/lihongjie/coal/jobPost/mapper/JobPostMapper.java @@ -5,6 +5,7 @@ import cn.lihongjie.coal.jobPost.dto.CreateJobPostDto; import cn.lihongjie.coal.jobPost.dto.JobPostDto; import cn.lihongjie.coal.jobPost.dto.UpdateJobPostDto; import cn.lihongjie.coal.jobPost.entity.JobPostEntity; +import cn.lihongjie.coal.jobPost.entity.JobPostViewEntity; import org.mapstruct.Mapper; import org.mapstruct.control.DeepClone; @@ -14,4 +15,8 @@ import org.mapstruct.control.DeepClone; uses = {cn.lihongjie.coal.base.mapper.CommonMapper.class, cn.lihongjie.coal.base.mapper.CommonEntityMapper.class}, mappingControl = DeepClone.class) public interface JobPostMapper - extends BaseMapper {} + extends BaseMapper { + + + JobPostDto toDto(JobPostViewEntity view); +} diff --git a/src/main/java/cn/lihongjie/coal/jobPost/repository/JobPostViewRepository.java b/src/main/java/cn/lihongjie/coal/jobPost/repository/JobPostViewRepository.java new file mode 100644 index 00000000..d0e55c34 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/jobPost/repository/JobPostViewRepository.java @@ -0,0 +1,12 @@ +package cn.lihongjie.coal.jobPost.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.jobPost.entity.JobPostEntity; +import cn.lihongjie.coal.jobPost.entity.JobPostViewEntity; + +import org.springframework.stereotype.Repository; + +@Repository +public interface JobPostViewRepository extends BaseRepository { + JobPostEntity findByNameAndOrganizationId(String name, String organizationId); +} diff --git a/src/main/java/cn/lihongjie/coal/jobPost/service/JobPostService.java b/src/main/java/cn/lihongjie/coal/jobPost/service/JobPostService.java index 3c668cfc..df34c8e9 100644 --- a/src/main/java/cn/lihongjie/coal/jobPost/service/JobPostService.java +++ b/src/main/java/cn/lihongjie/coal/jobPost/service/JobPostService.java @@ -8,8 +8,10 @@ import cn.lihongjie.coal.jobPost.dto.CreateJobPostDto; import cn.lihongjie.coal.jobPost.dto.JobPostDto; import cn.lihongjie.coal.jobPost.dto.UpdateJobPostDto; import cn.lihongjie.coal.jobPost.entity.JobPostEntity; +import cn.lihongjie.coal.jobPost.entity.JobPostViewEntity; import cn.lihongjie.coal.jobPost.mapper.JobPostMapper; import cn.lihongjie.coal.jobPost.repository.JobPostRepository; +import cn.lihongjie.coal.jobPost.repository.JobPostViewRepository; import lombok.extern.slf4j.Slf4j; @@ -32,6 +34,8 @@ class JobPostService extends BaseService { @Autowired private ConversionService conversionService; + @Autowired JobPostViewRepository jobPostViewRepository; + public JobPostDto create(CreateJobPostDto request) { JobPostEntity entity = mapper.toEntity(request); @@ -59,8 +63,8 @@ class JobPostService extends BaseService { } public Page list(CommonQuery query) { - Page page = - repository.findAll( + Page page = + jobPostViewRepository.findAll( query.specification(conversionService), PageRequest.of( query.getPageNo(), diff --git a/src/main/java/cn/lihongjie/coal/spring/config/HibernateConfig.java b/src/main/java/cn/lihongjie/coal/spring/config/HibernateConfig.java index 39f425bc..d399b7c4 100644 --- a/src/main/java/cn/lihongjie/coal/spring/config/HibernateConfig.java +++ b/src/main/java/cn/lihongjie/coal/spring/config/HibernateConfig.java @@ -23,6 +23,8 @@ public class HibernateConfig { @Autowired Environment environment; + + @Bean HibernatePropertiesCustomizer hibernatePropertiesCustomizer() { return new HibernatePropertiesCustomizer() {