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 31fad3ab..31689e8b 100644 --- a/src/main/java/cn/lihongjie/coal/employee/service/EmployeeService.java +++ b/src/main/java/cn/lihongjie/coal/employee/service/EmployeeService.java @@ -14,6 +14,8 @@ import cn.lihongjie.coal.employee.dto.*; 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.employeeHis.entity.EmployeeHisEntity; +import cn.lihongjie.coal.employeeHis.service.EmployeeHisService; import cn.lihongjie.coal.exception.BizException; import cn.lihongjie.coal.file.service.FileService; import cn.lihongjie.coal.jobPost.dto.CreateJobPostDto; @@ -22,6 +24,8 @@ import cn.lihongjie.coal.jobPost.service.JobPostService; import cn.lihongjie.coal.organization.service.OrganizationService; import cn.lihongjie.coal.pojoProcessor.PojoProcessor; +import com.fasterxml.jackson.databind.ObjectMapper; + import io.vavr.Function1; import io.vavr.Function2; @@ -33,6 +37,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; @@ -66,8 +71,15 @@ public class EmployeeService extends BaseService entities = this.repository.findAllById(request.getIds()); + + for (EmployeeEntity entity : entities) { + + employeeHisService.save(getEmployeeHisEntity(entity)); + } + } + @Autowired FileService fileService; public EmployeeDto getById(String id) { @@ -182,7 +235,6 @@ public class EmployeeService extends BaseService getDtoByIds(List employeesIds) { diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/controller/EmployeeHisController.java b/src/main/java/cn/lihongjie/coal/employeeHis/controller/EmployeeHisController.java new file mode 100644 index 00000000..f399f01a --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/controller/EmployeeHisController.java @@ -0,0 +1,54 @@ +package cn.lihongjie.coal.employeeHis.controller; + +import cn.lihongjie.coal.annotation.OrgScope; +import cn.lihongjie.coal.annotation.SysLog; +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.employeeHis.dto.CreateEmployeeHisDto; +import cn.lihongjie.coal.employeeHis.dto.EmployeeHisDto; +import cn.lihongjie.coal.employeeHis.dto.UpdateEmployeeHisDto; +import cn.lihongjie.coal.employeeHis.service.EmployeeHisService; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/employeeHis") +@SysLog(module = "人员历史记录") +@Slf4j +@OrgScope +public class EmployeeHisController { + @Autowired private EmployeeHisService service; + + @PostMapping("/create") + public EmployeeHisDto create(@RequestBody CreateEmployeeHisDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public EmployeeHisDto update(@RequestBody UpdateEmployeeHisDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public EmployeeHisDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } +} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/dto/CreateEmployeeHisDto.java b/src/main/java/cn/lihongjie/coal/employeeHis/dto/CreateEmployeeHisDto.java new file mode 100644 index 00000000..19abd2fa --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/dto/CreateEmployeeHisDto.java @@ -0,0 +1,25 @@ +package cn.lihongjie.coal.employeeHis.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class CreateEmployeeHisDto extends OrgCommonDto { + + private String employeeId; + + private String employeeName; + + private String employeeCode; + + private String idCard; + + private String phone; + + + private String jsonStr; + + + private Boolean isDeleted; +} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/dto/EmployeeHisDto.java b/src/main/java/cn/lihongjie/coal/employeeHis/dto/EmployeeHisDto.java new file mode 100644 index 00000000..80a7b764 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/dto/EmployeeHisDto.java @@ -0,0 +1,25 @@ +package cn.lihongjie.coal.employeeHis.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class EmployeeHisDto extends OrgCommonDto { + + private String employeeId; + + private String employeeName; + + private String employeeCode; + + private String idCard; + + private String phone; + + + private String jsonStr; + + + private Boolean isDeleted; +} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/dto/UpdateEmployeeHisDto.java b/src/main/java/cn/lihongjie/coal/employeeHis/dto/UpdateEmployeeHisDto.java new file mode 100644 index 00000000..38aa6f79 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/dto/UpdateEmployeeHisDto.java @@ -0,0 +1,25 @@ +package cn.lihongjie.coal.employeeHis.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class UpdateEmployeeHisDto extends OrgCommonDto { + + private String employeeId; + + private String employeeName; + + private String employeeCode; + + private String idCard; + + private String phone; + + + private String jsonStr; + + + private Boolean isDeleted; +} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/entity/EmployeeHisEntity.java b/src/main/java/cn/lihongjie/coal/employeeHis/entity/EmployeeHisEntity.java new file mode 100644 index 00000000..f50c66d8 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/entity/EmployeeHisEntity.java @@ -0,0 +1,30 @@ +package cn.lihongjie.coal.employeeHis.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.Entity; + +import lombok.Data; + +@Data +@Entity +public class EmployeeHisEntity extends OrgCommonEntity { + + + private String employeeId; + + private String employeeName; + + private String employeeCode; + + private String idCard; + + private String phone; + + + private String jsonStr; + + + private Boolean isDeleted; + +} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/mapper/EmployeeHisMapper.java b/src/main/java/cn/lihongjie/coal/employeeHis/mapper/EmployeeHisMapper.java new file mode 100644 index 00000000..862eb1dc --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/mapper/EmployeeHisMapper.java @@ -0,0 +1,20 @@ +package cn.lihongjie.coal.employeeHis.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.employeeHis.dto.CreateEmployeeHisDto; +import cn.lihongjie.coal.employeeHis.dto.EmployeeHisDto; +import cn.lihongjie.coal.employeeHis.dto.UpdateEmployeeHisDto; +import cn.lihongjie.coal.employeeHis.entity.EmployeeHisEntity; + +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 EmployeeHisMapper + extends BaseMapper< + EmployeeHisEntity, EmployeeHisDto, CreateEmployeeHisDto, UpdateEmployeeHisDto> {} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/repository/EmployeeHisRepository.java b/src/main/java/cn/lihongjie/coal/employeeHis/repository/EmployeeHisRepository.java new file mode 100644 index 00000000..053da245 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/repository/EmployeeHisRepository.java @@ -0,0 +1,15 @@ +package cn.lihongjie.coal.employeeHis.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.employeeHis.entity.EmployeeHisEntity; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface EmployeeHisRepository extends BaseRepository { + @Query("select false") + boolean isLinked(List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/employeeHis/service/EmployeeHisService.java b/src/main/java/cn/lihongjie/coal/employeeHis/service/EmployeeHisService.java new file mode 100644 index 00000000..08391a99 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/employeeHis/service/EmployeeHisService.java @@ -0,0 +1,80 @@ +package cn.lihongjie.coal.employeeHis.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.employeeHis.dto.CreateEmployeeHisDto; +import cn.lihongjie.coal.employeeHis.dto.EmployeeHisDto; +import cn.lihongjie.coal.employeeHis.dto.UpdateEmployeeHisDto; +import cn.lihongjie.coal.employeeHis.entity.EmployeeHisEntity; +import cn.lihongjie.coal.employeeHis.mapper.EmployeeHisMapper; +import cn.lihongjie.coal.employeeHis.repository.EmployeeHisRepository; +import cn.lihongjie.coal.exception.BizException; + +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 EmployeeHisService extends BaseService { + @Autowired private EmployeeHisRepository repository; + + @Autowired private EmployeeHisMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public EmployeeHisDto create(CreateEmployeeHisDto request) { + EmployeeHisEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public EmployeeHisDto update(UpdateEmployeeHisDto request) { + EmployeeHisEntity 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 EmployeeHisDto getById(String id) { + EmployeeHisEntity 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); + } +} diff --git a/src/main/resources/scripts/dict/enum/employeeHisDict.groovy b/src/main/resources/scripts/dict/enum/employeeHisDict.groovy new file mode 100644 index 00000000..57979461 --- /dev/null +++ b/src/main/resources/scripts/dict/enum/employeeHisDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.employeeHis.controller.EmployeeHisController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(EmployeeHisController.class) + + + + +return controller.list(new CommonQuery()) + +