From b7ddbd0a3168f47c96c871142f6c7cfc45340b03 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 23 Feb 2025 20:57:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(organizationInfo):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E4=BF=A1=E6=81=AF=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加企业信息相关的控制器、DTO、实体类、映射器、仓库和服务 - 实现企业信息的创建、更新、删除、查询等功能 - 添加企业信息字典脚本 --- .../OrganizationInfoController.java | 54 +++++++++++++ .../dto/CreateOrganizationInfoDto.java | 20 +++++ .../dto/OrganizationInfoDto.java | 20 +++++ .../dto/UpdateOrganizationInfoDto.java | 20 +++++ .../entity/OrganizationInfoEntity.java | 29 +++++++ .../mapper/OrganizationInfoMapper.java | 23 ++++++ .../OrganizationInfoRepository.java | 15 ++++ .../service/OrganizationInfoService.java | 81 +++++++++++++++++++ .../dict/enum/organizationInfoDict.groovy | 19 +++++ 9 files changed, 281 insertions(+) create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/controller/OrganizationInfoController.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/dto/CreateOrganizationInfoDto.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/dto/OrganizationInfoDto.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/dto/UpdateOrganizationInfoDto.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/entity/OrganizationInfoEntity.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/mapper/OrganizationInfoMapper.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/repository/OrganizationInfoRepository.java create mode 100644 src/main/java/cn/lihongjie/coal/organizationInfo/service/OrganizationInfoService.java create mode 100644 src/main/resources/scripts/dict/enum/organizationInfoDict.groovy diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/controller/OrganizationInfoController.java b/src/main/java/cn/lihongjie/coal/organizationInfo/controller/OrganizationInfoController.java new file mode 100644 index 00000000..b17ee1b7 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/controller/OrganizationInfoController.java @@ -0,0 +1,54 @@ +package cn.lihongjie.coal.organizationInfo.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.organizationInfo.dto.CreateOrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.dto.OrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.dto.UpdateOrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.service.OrganizationInfoService; + +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("/organizationInfo") +@SysLog(module = "企业信息") +@Slf4j +@OrgScope +public class OrganizationInfoController { + @Autowired private OrganizationInfoService service; + + @PostMapping("/create") + public OrganizationInfoDto create(@RequestBody CreateOrganizationInfoDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public OrganizationInfoDto update(@RequestBody UpdateOrganizationInfoDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public OrganizationInfoDto 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/organizationInfo/dto/CreateOrganizationInfoDto.java b/src/main/java/cn/lihongjie/coal/organizationInfo/dto/CreateOrganizationInfoDto.java new file mode 100644 index 00000000..3d6cd370 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/dto/CreateOrganizationInfoDto.java @@ -0,0 +1,20 @@ +package cn.lihongjie.coal.organizationInfo.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +@Data +public class CreateOrganizationInfoDto extends OrgCommonDto { + + @Comment("企业全称") + private String fullName; + + @Comment("企业简称") + private String shortName; + + @Comment("统一社会信用代码") + private String creditCode; +} diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/dto/OrganizationInfoDto.java b/src/main/java/cn/lihongjie/coal/organizationInfo/dto/OrganizationInfoDto.java new file mode 100644 index 00000000..5424ff91 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/dto/OrganizationInfoDto.java @@ -0,0 +1,20 @@ +package cn.lihongjie.coal.organizationInfo.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +@Data +public class OrganizationInfoDto extends OrgCommonDto { + + @Comment("企业全称") + private String fullName; + + @Comment("企业简称") + private String shortName; + + @Comment("统一社会信用代码") + private String creditCode; +} diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/dto/UpdateOrganizationInfoDto.java b/src/main/java/cn/lihongjie/coal/organizationInfo/dto/UpdateOrganizationInfoDto.java new file mode 100644 index 00000000..064a62b6 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/dto/UpdateOrganizationInfoDto.java @@ -0,0 +1,20 @@ +package cn.lihongjie.coal.organizationInfo.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +@Data +public class UpdateOrganizationInfoDto extends OrgCommonDto { + + @Comment("企业全称") + private String fullName; + + @Comment("企业简称") + private String shortName; + + @Comment("统一社会信用代码") + private String creditCode; +} diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/entity/OrganizationInfoEntity.java b/src/main/java/cn/lihongjie/coal/organizationInfo/entity/OrganizationInfoEntity.java new file mode 100644 index 00000000..441d5596 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/entity/OrganizationInfoEntity.java @@ -0,0 +1,29 @@ +package cn.lihongjie.coal.organizationInfo.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +@Data +@Entity +@Table( + indexes = + @jakarta.persistence.Index( + name = "idx_organizationInfo_org_id", + columnList = "organization_id")) +public class OrganizationInfoEntity extends OrgCommonEntity { + + @Comment("企业全称") + private String fullName; + + @Comment("企业简称") + private String shortName; + + @Comment("统一社会信用代码") + private String creditCode; +} diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/mapper/OrganizationInfoMapper.java b/src/main/java/cn/lihongjie/coal/organizationInfo/mapper/OrganizationInfoMapper.java new file mode 100644 index 00000000..43486df3 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/mapper/OrganizationInfoMapper.java @@ -0,0 +1,23 @@ +package cn.lihongjie.coal.organizationInfo.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.organizationInfo.dto.CreateOrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.dto.OrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.dto.UpdateOrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.entity.OrganizationInfoEntity; + +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 OrganizationInfoMapper + extends BaseMapper< + OrganizationInfoEntity, + OrganizationInfoDto, + CreateOrganizationInfoDto, + UpdateOrganizationInfoDto> {} diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/repository/OrganizationInfoRepository.java b/src/main/java/cn/lihongjie/coal/organizationInfo/repository/OrganizationInfoRepository.java new file mode 100644 index 00000000..57cca58e --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/repository/OrganizationInfoRepository.java @@ -0,0 +1,15 @@ +package cn.lihongjie.coal.organizationInfo.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.organizationInfo.entity.OrganizationInfoEntity; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface OrganizationInfoRepository extends BaseRepository { + @Query("select false") + boolean isLinked(List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/organizationInfo/service/OrganizationInfoService.java b/src/main/java/cn/lihongjie/coal/organizationInfo/service/OrganizationInfoService.java new file mode 100644 index 00000000..7cab200a --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/organizationInfo/service/OrganizationInfoService.java @@ -0,0 +1,81 @@ +package cn.lihongjie.coal.organizationInfo.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.organizationInfo.dto.CreateOrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.dto.OrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.dto.UpdateOrganizationInfoDto; +import cn.lihongjie.coal.organizationInfo.entity.OrganizationInfoEntity; +import cn.lihongjie.coal.organizationInfo.mapper.OrganizationInfoMapper; +import cn.lihongjie.coal.organizationInfo.repository.OrganizationInfoRepository; + +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 OrganizationInfoService + extends BaseService { + @Autowired private OrganizationInfoRepository repository; + + @Autowired private OrganizationInfoMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public OrganizationInfoDto create(CreateOrganizationInfoDto request) { + OrganizationInfoEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public OrganizationInfoDto update(UpdateOrganizationInfoDto request) { + OrganizationInfoEntity 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 OrganizationInfoDto getById(String id) { + OrganizationInfoEntity 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/organizationInfoDict.groovy b/src/main/resources/scripts/dict/enum/organizationInfoDict.groovy new file mode 100644 index 00000000..5dff1b3f --- /dev/null +++ b/src/main/resources/scripts/dict/enum/organizationInfoDict.groovy @@ -0,0 +1,19 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.organizationInfo.controller.OrganizationInfoController +import com.fasterxml.jackson.databind.ObjectMapper +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(OrganizationInfoController.class) +def objectMapper = ioc.getBean(ObjectMapper.class) as ObjectMapper + + + + +return controller.list(params!=null ? objectMapper.convertValue(params, CommonQuery.class ) : new CommonQuery()) + +