diff --git a/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java b/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java new file mode 100644 index 00000000..b3469356 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java @@ -0,0 +1,66 @@ +package cn.lihongjie.coal.empSalary.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.empSalary.dto.CreateEmpSalaryDto; +import cn.lihongjie.coal.empSalary.dto.EmpSalaryDto; +import cn.lihongjie.coal.empSalary.dto.UpdateEmpSalaryDto; +import cn.lihongjie.coal.empSalary.service.EmpSalaryService; + +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("/empSalary") +@SysLog(module = "员工工资记录") +@Slf4j +@OrgScope +public class EmpSalaryController { + @Autowired private EmpSalaryService service; + + @PostMapping("/create") + public EmpSalaryDto create(@RequestBody CreateEmpSalaryDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public EmpSalaryDto update(@RequestBody UpdateEmpSalaryDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public EmpSalaryDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } + + @PostMapping("/archive") + public Object archive(@RequestBody IdRequest request) { + this.service.archive(request); + return true; + } + + @PostMapping("/unarchive") + public Object unarchive(@RequestBody IdRequest request) { + this.service.unarchive(request); + return true; + } +} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/dto/CreateEmpSalaryDto.java b/src/main/java/cn/lihongjie/coal/empSalary/dto/CreateEmpSalaryDto.java new file mode 100644 index 00000000..8b446bd5 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/dto/CreateEmpSalaryDto.java @@ -0,0 +1,74 @@ +package cn.lihongjie.coal.empSalary.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import jakarta.persistence.ManyToOne; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CreateEmpSalaryDto extends OrgCommonDto { + + + @ManyToOne + private String batch; + + @ManyToOne + private String employee; + + + private BigDecimal item0; + private BigDecimal item1; + private BigDecimal item2; + private BigDecimal item3; + private BigDecimal item4; + private BigDecimal item5; + private BigDecimal item6; + private BigDecimal item7; + private BigDecimal item8; + private BigDecimal item9; + private BigDecimal item10; + private BigDecimal item11; + private BigDecimal item12; + private BigDecimal item13; + private BigDecimal item14; + private BigDecimal item15; + private BigDecimal item16; + private BigDecimal item17; + private BigDecimal item18; + private BigDecimal item19; + private BigDecimal item20; + private BigDecimal item21; + private BigDecimal item22; + private BigDecimal item23; + private BigDecimal item24; + private BigDecimal item25; + private BigDecimal item26; + private BigDecimal item27; + private BigDecimal item28; + private BigDecimal item29; + private BigDecimal item30; + private BigDecimal item31; + private BigDecimal item32; + private BigDecimal item33; + private BigDecimal item34; + private BigDecimal item35; + private BigDecimal item36; + private BigDecimal item37; + private BigDecimal item38; + private BigDecimal item39; + private BigDecimal item40; + private BigDecimal item41; + private BigDecimal item42; + private BigDecimal item43; + private BigDecimal item44; + private BigDecimal item45; + private BigDecimal item46; + private BigDecimal item47; + private BigDecimal item48; + private BigDecimal item49; + private BigDecimal item50; + +} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java b/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java new file mode 100644 index 00000000..39c92f7c --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java @@ -0,0 +1,82 @@ +package cn.lihongjie.coal.empSalary.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.empSalaryBatch.dto.EmpSalaryBatchDto; +import cn.lihongjie.coal.employee.dto.EmployeeDto; + +import jakarta.persistence.ManyToOne; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.math.BigDecimal; + +@Data +public class EmpSalaryDto extends OrgCommonDto { + private String archiveStatus; + + private String archiveStatusName; + + @ManyToOne + private EmpSalaryBatchDto batch; + + @ManyToOne + private EmployeeDto employee; + + + @Comment("员工快照") + private String employeeSnapshot; + + private BigDecimal item0; + private BigDecimal item1; + private BigDecimal item2; + private BigDecimal item3; + private BigDecimal item4; + private BigDecimal item5; + private BigDecimal item6; + private BigDecimal item7; + private BigDecimal item8; + private BigDecimal item9; + private BigDecimal item10; + private BigDecimal item11; + private BigDecimal item12; + private BigDecimal item13; + private BigDecimal item14; + private BigDecimal item15; + private BigDecimal item16; + private BigDecimal item17; + private BigDecimal item18; + private BigDecimal item19; + private BigDecimal item20; + private BigDecimal item21; + private BigDecimal item22; + private BigDecimal item23; + private BigDecimal item24; + private BigDecimal item25; + private BigDecimal item26; + private BigDecimal item27; + private BigDecimal item28; + private BigDecimal item29; + private BigDecimal item30; + private BigDecimal item31; + private BigDecimal item32; + private BigDecimal item33; + private BigDecimal item34; + private BigDecimal item35; + private BigDecimal item36; + private BigDecimal item37; + private BigDecimal item38; + private BigDecimal item39; + private BigDecimal item40; + private BigDecimal item41; + private BigDecimal item42; + private BigDecimal item43; + private BigDecimal item44; + private BigDecimal item45; + private BigDecimal item46; + private BigDecimal item47; + private BigDecimal item48; + private BigDecimal item49; + private BigDecimal item50; +} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/dto/UpdateEmpSalaryDto.java b/src/main/java/cn/lihongjie/coal/empSalary/dto/UpdateEmpSalaryDto.java new file mode 100644 index 00000000..e3d28e11 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/dto/UpdateEmpSalaryDto.java @@ -0,0 +1,74 @@ +package cn.lihongjie.coal.empSalary.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import jakarta.persistence.ManyToOne; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UpdateEmpSalaryDto extends OrgCommonDto { + + + @ManyToOne + private String batch; + + @ManyToOne + private String employee; + + + private BigDecimal item0; + private BigDecimal item1; + private BigDecimal item2; + private BigDecimal item3; + private BigDecimal item4; + private BigDecimal item5; + private BigDecimal item6; + private BigDecimal item7; + private BigDecimal item8; + private BigDecimal item9; + private BigDecimal item10; + private BigDecimal item11; + private BigDecimal item12; + private BigDecimal item13; + private BigDecimal item14; + private BigDecimal item15; + private BigDecimal item16; + private BigDecimal item17; + private BigDecimal item18; + private BigDecimal item19; + private BigDecimal item20; + private BigDecimal item21; + private BigDecimal item22; + private BigDecimal item23; + private BigDecimal item24; + private BigDecimal item25; + private BigDecimal item26; + private BigDecimal item27; + private BigDecimal item28; + private BigDecimal item29; + private BigDecimal item30; + private BigDecimal item31; + private BigDecimal item32; + private BigDecimal item33; + private BigDecimal item34; + private BigDecimal item35; + private BigDecimal item36; + private BigDecimal item37; + private BigDecimal item38; + private BigDecimal item39; + private BigDecimal item40; + private BigDecimal item41; + private BigDecimal item42; + private BigDecimal item43; + private BigDecimal item44; + private BigDecimal item45; + private BigDecimal item46; + private BigDecimal item47; + private BigDecimal item48; + private BigDecimal item49; + private BigDecimal item50; + +} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java b/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java new file mode 100644 index 00000000..e5767cfe --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java @@ -0,0 +1,97 @@ +package cn.lihongjie.coal.empSalary.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; +import cn.lihongjie.coal.empSalaryBatch.entity.EmpSalaryBatchEntity; +import cn.lihongjie.coal.employee.entity.EmployeeEntity; + +import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; + +import lombok.Data; + +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; + +import java.math.BigDecimal; + +@Data +@Entity +public class EmpSalaryEntity extends OrgCommonEntity { + + @ManyToOne + private EmpSalaryBatchEntity batch; + + @ManyToOne + private EmployeeEntity employee; + + + @Comment("员工快照") + private String employeeSnapshot; + + private BigDecimal item0; + private BigDecimal item1; + private BigDecimal item2; + private BigDecimal item3; + private BigDecimal item4; + private BigDecimal item5; + private BigDecimal item6; + private BigDecimal item7; + private BigDecimal item8; + private BigDecimal item9; + private BigDecimal item10; + private BigDecimal item11; + private BigDecimal item12; + private BigDecimal item13; + private BigDecimal item14; + private BigDecimal item15; + private BigDecimal item16; + private BigDecimal item17; + private BigDecimal item18; + private BigDecimal item19; + private BigDecimal item20; + private BigDecimal item21; + private BigDecimal item22; + private BigDecimal item23; + private BigDecimal item24; + private BigDecimal item25; + private BigDecimal item26; + private BigDecimal item27; + private BigDecimal item28; + private BigDecimal item29; + private BigDecimal item30; + private BigDecimal item31; + private BigDecimal item32; + private BigDecimal item33; + private BigDecimal item34; + private BigDecimal item35; + private BigDecimal item36; + private BigDecimal item37; + private BigDecimal item38; + private BigDecimal item39; + private BigDecimal item40; + private BigDecimal item41; + private BigDecimal item42; + private BigDecimal item43; + private BigDecimal item44; + private BigDecimal item45; + private BigDecimal item46; + private BigDecimal item47; + private BigDecimal item48; + private BigDecimal item49; + private BigDecimal item50; + + + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus; + + @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 = 'archiveStatus'\n" + + " and i.code = archive_status)") + private String archiveStatusName; +} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/mapper/EmpSalaryMapper.java b/src/main/java/cn/lihongjie/coal/empSalary/mapper/EmpSalaryMapper.java new file mode 100644 index 00000000..168516f6 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/mapper/EmpSalaryMapper.java @@ -0,0 +1,19 @@ +package cn.lihongjie.coal.empSalary.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.empSalary.dto.CreateEmpSalaryDto; +import cn.lihongjie.coal.empSalary.dto.EmpSalaryDto; +import cn.lihongjie.coal.empSalary.dto.UpdateEmpSalaryDto; +import cn.lihongjie.coal.empSalary.entity.EmpSalaryEntity; + +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 EmpSalaryMapper + extends BaseMapper {} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/repository/EmpSalaryRepository.java b/src/main/java/cn/lihongjie/coal/empSalary/repository/EmpSalaryRepository.java new file mode 100644 index 00000000..93640d54 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/repository/EmpSalaryRepository.java @@ -0,0 +1,9 @@ +package cn.lihongjie.coal.empSalary.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.empSalary.entity.EmpSalaryEntity; + +import org.springframework.stereotype.Repository; + +@Repository +public interface EmpSalaryRepository extends BaseRepository {} diff --git a/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java b/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java new file mode 100644 index 00000000..b4edd5cb --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java @@ -0,0 +1,117 @@ +package cn.lihongjie.coal.empSalary.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.common.ArchiveUtils; +import cn.lihongjie.coal.empSalary.dto.CreateEmpSalaryDto; +import cn.lihongjie.coal.empSalary.dto.EmpSalaryDto; +import cn.lihongjie.coal.empSalary.dto.UpdateEmpSalaryDto; +import cn.lihongjie.coal.empSalary.entity.EmpSalaryEntity; +import cn.lihongjie.coal.empSalary.mapper.EmpSalaryMapper; +import cn.lihongjie.coal.empSalary.repository.EmpSalaryRepository; +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 EmpSalaryService extends BaseService { + @Autowired private EmpSalaryRepository repository; + + @Autowired private EmpSalaryMapper mapper; + + @Autowired private ConversionService conversionService; + + public EmpSalaryDto create(CreateEmpSalaryDto request) { + EmpSalaryEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public EmpSalaryDto update(UpdateEmpSalaryDto request) { + EmpSalaryEntity entity = this.repository.get(request.getId()); + ArchiveUtils.checkArchiveStatus( + entity, + EmpSalaryEntity::getArchiveStatus, + x -> "0", + (e, actual, expected) -> { + throw new BizException("数据 " + "已归档,无法编辑"); + }); + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + ArchiveUtils.checkArchiveStatus( + this.repository::findAllById, + request.getIds(), + EmpSalaryEntity::getArchiveStatus, + x -> "0", + (e, actual, expected) -> { + throw new BizException("数据 " + "已归档,无法删除"); + }); + this.repository.deleteAllById(request.getIds()); + } + + public EmpSalaryDto getById(String id) { + EmpSalaryEntity 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 void archive(IdRequest dto) { + this.repository.findAllById(dto.getIds()).stream() + .peek( + x -> + ArchiveUtils.checkArchiveStatus( + x, + EmpSalaryEntity::getArchiveStatus, + y -> "0", + (e, actual, expected) -> { + throw new BizException("数据 " + "已归档,无法再次归档"); + })) + .peek(x -> x.setArchiveStatus("1")) + .forEach(this.repository::save); + } + + public void unarchive(IdRequest dto) { + this.repository.findAllById(dto.getIds()).stream() + .peek( + x -> + ArchiveUtils.checkArchiveStatus( + x, + EmpSalaryEntity::getArchiveStatus, + y -> "1", + (e, actual, expected) -> { + throw new BizException("数据" + "未归档,无法取消归档"); + })) + .peek(x -> x.setArchiveStatus("0")) + .forEach(this.repository::save); + } +} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/controller/EmpSalaryBatchController.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/controller/EmpSalaryBatchController.java new file mode 100644 index 00000000..d855848b --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/controller/EmpSalaryBatchController.java @@ -0,0 +1,66 @@ +package cn.lihongjie.coal.empSalaryBatch.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.empSalaryBatch.dto.CreateEmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.dto.EmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.dto.UpdateEmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.service.EmpSalaryBatchService; + +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("/empSalaryBatch") +@SysLog(module = "员工工资批次") +@Slf4j +@OrgScope +public class EmpSalaryBatchController { + @Autowired private EmpSalaryBatchService service; + + @PostMapping("/create") + public EmpSalaryBatchDto create(@RequestBody CreateEmpSalaryBatchDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public EmpSalaryBatchDto update(@RequestBody UpdateEmpSalaryBatchDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public EmpSalaryBatchDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } + + @PostMapping("/archive") + public Object archive(@RequestBody IdRequest request) { + this.service.archive(request); + return true; + } + + @PostMapping("/unarchive") + public Object unarchive(@RequestBody IdRequest request) { + this.service.unarchive(request); + return true; + } +} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/CreateEmpSalaryBatchDto.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/CreateEmpSalaryBatchDto.java new file mode 100644 index 00000000..cb69413d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/CreateEmpSalaryBatchDto.java @@ -0,0 +1,8 @@ +package cn.lihongjie.coal.empSalaryBatch.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class CreateEmpSalaryBatchDto extends OrgCommonDto {} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/EmpSalaryBatchDto.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/EmpSalaryBatchDto.java new file mode 100644 index 00000000..36c82ee4 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/EmpSalaryBatchDto.java @@ -0,0 +1,12 @@ +package cn.lihongjie.coal.empSalaryBatch.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class EmpSalaryBatchDto extends OrgCommonDto { + private String archiveStatus; + + private String archiveStatusName; +} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/UpdateEmpSalaryBatchDto.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/UpdateEmpSalaryBatchDto.java new file mode 100644 index 00000000..b4504d42 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/dto/UpdateEmpSalaryBatchDto.java @@ -0,0 +1,8 @@ +package cn.lihongjie.coal.empSalaryBatch.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class UpdateEmpSalaryBatchDto extends OrgCommonDto {} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/entity/EmpSalaryBatchEntity.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/entity/EmpSalaryBatchEntity.java new file mode 100644 index 00000000..e5b70c46 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/entity/EmpSalaryBatchEntity.java @@ -0,0 +1,37 @@ +package cn.lihongjie.coal.empSalaryBatch.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.Entity; + +import lombok.Data; + +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; + +import java.time.LocalDate; + +@Data +@Entity +public class EmpSalaryBatchEntity extends OrgCommonEntity { + + @Comment("批次年月") + private LocalDate batchYearMonth; + + @Comment("批次号") + private String batchNo; + + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus; + + @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 = 'archiveStatus'\n" + + " and i.code = archive_status)") + private String archiveStatusName; +} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/mapper/EmpSalaryBatchMapper.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/mapper/EmpSalaryBatchMapper.java new file mode 100644 index 00000000..eefdd16c --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/mapper/EmpSalaryBatchMapper.java @@ -0,0 +1,23 @@ +package cn.lihongjie.coal.empSalaryBatch.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.empSalaryBatch.dto.CreateEmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.dto.EmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.dto.UpdateEmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.entity.EmpSalaryBatchEntity; + +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 EmpSalaryBatchMapper + extends BaseMapper< + EmpSalaryBatchEntity, + EmpSalaryBatchDto, + CreateEmpSalaryBatchDto, + UpdateEmpSalaryBatchDto> {} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/repository/EmpSalaryBatchRepository.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/repository/EmpSalaryBatchRepository.java new file mode 100644 index 00000000..efb5e35a --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/repository/EmpSalaryBatchRepository.java @@ -0,0 +1,9 @@ +package cn.lihongjie.coal.empSalaryBatch.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.empSalaryBatch.entity.EmpSalaryBatchEntity; + +import org.springframework.stereotype.Repository; + +@Repository +public interface EmpSalaryBatchRepository extends BaseRepository {} diff --git a/src/main/java/cn/lihongjie/coal/empSalaryBatch/service/EmpSalaryBatchService.java b/src/main/java/cn/lihongjie/coal/empSalaryBatch/service/EmpSalaryBatchService.java new file mode 100644 index 00000000..0fd47dde --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/empSalaryBatch/service/EmpSalaryBatchService.java @@ -0,0 +1,118 @@ +package cn.lihongjie.coal.empSalaryBatch.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.common.ArchiveUtils; +import cn.lihongjie.coal.empSalaryBatch.dto.CreateEmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.dto.EmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.dto.UpdateEmpSalaryBatchDto; +import cn.lihongjie.coal.empSalaryBatch.entity.EmpSalaryBatchEntity; +import cn.lihongjie.coal.empSalaryBatch.mapper.EmpSalaryBatchMapper; +import cn.lihongjie.coal.empSalaryBatch.repository.EmpSalaryBatchRepository; +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 EmpSalaryBatchService + extends BaseService { + @Autowired private EmpSalaryBatchRepository repository; + + @Autowired private EmpSalaryBatchMapper mapper; + + @Autowired private ConversionService conversionService; + + public EmpSalaryBatchDto create(CreateEmpSalaryBatchDto request) { + EmpSalaryBatchEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public EmpSalaryBatchDto update(UpdateEmpSalaryBatchDto request) { + EmpSalaryBatchEntity entity = this.repository.get(request.getId()); + ArchiveUtils.checkArchiveStatus( + entity, + EmpSalaryBatchEntity::getArchiveStatus, + x -> "0", + (e, actual, expected) -> { + throw new BizException("数据 " + "已归档,无法编辑"); + }); + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + ArchiveUtils.checkArchiveStatus( + this.repository::findAllById, + request.getIds(), + EmpSalaryBatchEntity::getArchiveStatus, + x -> "0", + (e, actual, expected) -> { + throw new BizException("数据 " + "已归档,无法删除"); + }); + this.repository.deleteAllById(request.getIds()); + } + + public EmpSalaryBatchDto getById(String id) { + EmpSalaryBatchEntity 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 void archive(IdRequest dto) { + this.repository.findAllById(dto.getIds()).stream() + .peek( + x -> + ArchiveUtils.checkArchiveStatus( + x, + EmpSalaryBatchEntity::getArchiveStatus, + y -> "0", + (e, actual, expected) -> { + throw new BizException("数据 " + "已归档,无法再次归档"); + })) + .peek(x -> x.setArchiveStatus("1")) + .forEach(this.repository::save); + } + + public void unarchive(IdRequest dto) { + this.repository.findAllById(dto.getIds()).stream() + .peek( + x -> + ArchiveUtils.checkArchiveStatus( + x, + EmpSalaryBatchEntity::getArchiveStatus, + y -> "1", + (e, actual, expected) -> { + throw new BizException("数据" + "未归档,无法取消归档"); + })) + .peek(x -> x.setArchiveStatus("0")) + .forEach(this.repository::save); + } +} diff --git a/src/main/resources/scripts/dict/enum/empSalaryBatchDict.groovy b/src/main/resources/scripts/dict/enum/empSalaryBatchDict.groovy new file mode 100644 index 00000000..7de93e5c --- /dev/null +++ b/src/main/resources/scripts/dict/enum/empSalaryBatchDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.empSalaryBatch.controller.EmpSalaryBatchController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(EmpSalaryBatchController.class) + + + + +return controller.list(new CommonQuery()) + + diff --git a/src/main/resources/scripts/dict/enum/empSalaryDict.groovy b/src/main/resources/scripts/dict/enum/empSalaryDict.groovy new file mode 100644 index 00000000..8b39d746 --- /dev/null +++ b/src/main/resources/scripts/dict/enum/empSalaryDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.empSalary.controller.EmpSalaryController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(EmpSalaryController.class) + + + + +return controller.list(new CommonQuery()) + +