From 7f88b5e92ef37a1abddf35fef31fc7d375c1b4e2 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sat, 16 Mar 2024 18:32:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=98=E5=B7=A5=E4=BF=A1=E6=81=AF=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coal/base/mapper/CommonEntityMapper.java | 2 +- .../coal/base/service/BaseService.java | 21 ++++++--- .../coal/employee/dto/CreateEmployeeDto.java | 20 +++++++++ .../coal/employee/dto/UpdateEmployeeDto.java | 19 ++++++++ .../coal/employee/entity/EmpCarVO.java | 45 +++++++++++++++++++ .../coal/employee/entity/EmpCertVO.java | 8 ++++ .../coal/employee/entity/EmployeeEntity.java | 6 +++ .../coal/employee/mapper/EmployeeMapper.java | 5 ++- .../employee/service/EmployeeService.java | 22 ++++++++- 9 files changed, 138 insertions(+), 10 deletions(-) create mode 100644 src/main/java/cn/lihongjie/coal/employee/entity/EmpCarVO.java diff --git a/src/main/java/cn/lihongjie/coal/base/mapper/CommonEntityMapper.java b/src/main/java/cn/lihongjie/coal/base/mapper/CommonEntityMapper.java index 9dc0cbd4..15318d8a 100644 --- a/src/main/java/cn/lihongjie/coal/base/mapper/CommonEntityMapper.java +++ b/src/main/java/cn/lihongjie/coal/base/mapper/CommonEntityMapper.java @@ -23,5 +23,5 @@ public interface CommonEntityMapper { return t; } - + } diff --git a/src/main/java/cn/lihongjie/coal/base/service/BaseService.java b/src/main/java/cn/lihongjie/coal/base/service/BaseService.java index 01c9fa48..661c59ab 100644 --- a/src/main/java/cn/lihongjie/coal/base/service/BaseService.java +++ b/src/main/java/cn/lihongjie/coal/base/service/BaseService.java @@ -15,6 +15,8 @@ import org.springframework.data.jpa.domain.Specification; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; public abstract class BaseService< Entity extends BaseEntity, Repository extends BaseRepository> { @@ -58,12 +60,19 @@ public abstract class BaseService< if (ids == null){ return new ArrayList<>(); } - return dao.findAll(new Specification() { - @Override - public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { - return root.get("id").in(ids); - } - }); + return dao.findAll( + new Specification() { + @Override + public Predicate toPredicate( + Root root, + CriteriaQuery query, + CriteriaBuilder criteriaBuilder) { + return root.get("id") + .in( + StreamSupport.stream(ids.spliterator(), false) + .collect(Collectors.toSet())); + } + }); } 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 d2c72f6b..57e07d43 100644 --- a/src/main/java/cn/lihongjie/coal/employee/dto/CreateEmployeeDto.java +++ b/src/main/java/cn/lihongjie/coal/employee/dto/CreateEmployeeDto.java @@ -10,6 +10,7 @@ import jakarta.persistence.ElementCollection; import lombok.Data; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; import java.time.LocalDate; import java.util.List; @@ -112,4 +113,23 @@ public class CreateEmployeeDto extends OrgCommonDto { private Double insurance6Base; @Comment("住房公积金比例") private Double insurance6Percent; + + + @Comment("离职时间") + private LocalDate resignDate; + + @Comment("离职原因") + private String resignReason; + + @Comment("员工状态") + private String empStatus; + + @Formula( + "(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'emp.status'\n" + + " and i.code = emp_status)") + private String empStatusName; } 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 3036e60f..4f6453e1 100644 --- a/src/main/java/cn/lihongjie/coal/employee/dto/UpdateEmployeeDto.java +++ b/src/main/java/cn/lihongjie/coal/employee/dto/UpdateEmployeeDto.java @@ -10,6 +10,7 @@ import jakarta.persistence.ElementCollection; import lombok.Data; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; import java.time.LocalDate; import java.util.List; @@ -114,4 +115,22 @@ public class UpdateEmployeeDto extends OrgCommonDto { @Comment("住房公积金比例") private Double insurance6Percent; + @Comment("离职时间") + private LocalDate resignDate; + + @Comment("离职原因") + private String resignReason; + + @Comment("员工状态") + private String empStatus; + + @Formula( + "(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'emp.status'\n" + + " and i.code = emp_status)") + private String empStatusName; + } diff --git a/src/main/java/cn/lihongjie/coal/employee/entity/EmpCarVO.java b/src/main/java/cn/lihongjie/coal/employee/entity/EmpCarVO.java new file mode 100644 index 00000000..7b834529 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employee/entity/EmpCarVO.java @@ -0,0 +1,45 @@ +package cn.lihongjie.coal.employee.entity; + +import cn.lihongjie.coal.file.entity.FileEntity; + +import io.hypersistence.utils.hibernate.type.array.ListArrayType; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.Transient; + +import lombok.Data; + +import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Type; + +import java.util.*; + +@Data +@Embeddable +public class EmpCarVO { + + @Comment("车辆品牌") + private String brand; + @Comment("车辆型号") + private String model; + @Comment("颜色") + private String color; + + @Comment("车牌号") + private String plateNo; + + + @Comment("备注") + private String remarks; + + @Comment("关联附件") + @Column(columnDefinition = "text[]") + @Type(ListArrayType.class) + private List fileIds; + + @Transient + private List files; + + +} diff --git a/src/main/java/cn/lihongjie/coal/employee/entity/EmpCertVO.java b/src/main/java/cn/lihongjie/coal/employee/entity/EmpCertVO.java index bc583579..d3c7d832 100644 --- a/src/main/java/cn/lihongjie/coal/employee/entity/EmpCertVO.java +++ b/src/main/java/cn/lihongjie/coal/employee/entity/EmpCertVO.java @@ -1,9 +1,12 @@ package cn.lihongjie.coal.employee.entity; +import cn.lihongjie.coal.file.entity.FileEntity; + import io.hypersistence.utils.hibernate.type.array.ListArrayType; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; +import jakarta.persistence.Transient; import lombok.Data; @@ -37,4 +40,9 @@ public class EmpCertVO { @Column(columnDefinition = "text[]") @Type(ListArrayType.class) private List fileIds; + + @Transient + private List files; + + } 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 50d2b348..b4b01a29 100644 --- a/src/main/java/cn/lihongjie/coal/employee/entity/EmployeeEntity.java +++ b/src/main/java/cn/lihongjie/coal/employee/entity/EmployeeEntity.java @@ -151,6 +151,12 @@ public class EmployeeEntity extends OrgCommonEntity { @Comment("员工证件信息") private List certs; + + + @ElementCollection + @Comment("员工车辆信息") + private List cars; + /** * “五险”讲的是五种保险,包括养老保险、医疗保险、失业保险、工伤保险和生育保险。 * diff --git a/src/main/java/cn/lihongjie/coal/employee/mapper/EmployeeMapper.java b/src/main/java/cn/lihongjie/coal/employee/mapper/EmployeeMapper.java index 54a72acd..d4e352ba 100644 --- a/src/main/java/cn/lihongjie/coal/employee/mapper/EmployeeMapper.java +++ b/src/main/java/cn/lihongjie/coal/employee/mapper/EmployeeMapper.java @@ -14,4 +14,7 @@ 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 EmployeeMapper - extends BaseMapper {} + extends BaseMapper { + + +} diff --git a/src/main/java/cn/lihongjie/coal/employee/service/EmployeeService.java b/src/main/java/cn/lihongjie/coal/employee/service/EmployeeService.java index 741193a2..6d0570e2 100644 --- a/src/main/java/cn/lihongjie/coal/employee/service/EmployeeService.java +++ b/src/main/java/cn/lihongjie/coal/employee/service/EmployeeService.java @@ -9,9 +9,11 @@ import cn.lihongjie.coal.employee.dto.UpdateEmployeeDto; import cn.lihongjie.coal.employee.entity.EmployeeEntity; import cn.lihongjie.coal.employee.mapper.EmployeeMapper; import cn.lihongjie.coal.employee.repository.EmployeeRepository; +import cn.lihongjie.coal.file.service.FileService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; @@ -51,10 +53,26 @@ class EmployeeService extends BaseService { this.repository.deleteAllById(request.getIds()); } + @Autowired FileService fileService; + public EmployeeDto getById(String id) { EmployeeEntity entity = repository.get(id); - return mapper.toDto(entity); + return toDto(entity); + } + + private EmployeeDto toDto(EmployeeEntity entity) { + EmployeeDto dto = mapper.toDto(entity); + if (CollectionUtils.isNotEmpty(dto.getCerts())) { + dto.getCerts() + .forEach( + x -> { + if (CollectionUtils.isNotEmpty(x.getFileIds())) + x.setFiles(fileService.findAllByIds(x.getFileIds())); + }); + + } + return dto; } public Page list(CommonQuery query) { @@ -66,6 +84,6 @@ class EmployeeService extends BaseService { query.getPageSize(), Sort.by(query.getOrders()))); - return page.map(this.mapper::toDto); + return page.map(this::toDto); } }