From 81cf87b56c5f69a8c8fd75d91c627ce4e5ff86c2 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Tue, 21 Jul 2026 10:04:31 +0800 Subject: [PATCH] init --- .../adapter/web/OrgInfoController.java | 8 +++ .../app/convertor/OrgInfoConvertor.java | 17 +++++ .../app/executor/OrgInfoExecutor.java | 17 +++++ .../safetyeval/client/api/OrgInfoApi.java | 10 +++ .../safetyeval/client/co/OrgInfoSelectCO.java | 21 ++++++ .../domain/gateway/OrgInfoGateway.java | 9 +++ .../domain/service/OrgInfoDomainService.java | 5 ++ .../convertor/OrgInfoDoConvertor.java | 69 +++++++++++++++++++ .../gatewayimpl/OrgInfoGatewayImpl.java | 13 ++++ 9 files changed, 169 insertions(+) create mode 100644 safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgInfoConvertor.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgInfoSelectCO.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgInfoDoConvertor.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/OrgInfoController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/OrgInfoController.java index 2ffc49f..72fa899 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/OrgInfoController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/OrgInfoController.java @@ -5,12 +5,14 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.OrgInfoApi; import org.qinan.safetyeval.client.co.OrgInfoCO; +import org.qinan.safetyeval.client.co.OrgInfoSelectCO; import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.infrastructure.dataobject.base.Req; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * 机构信息适配层(Controller) @@ -72,4 +74,10 @@ public class OrgInfoController { public PageResponse page(@Validated OrgInfoPageQuery query) { return orgInfoApi.page(query); } + + @ApiOperation("机构下拉列表(仅id、单位名称)") + @GetMapping("/select/list") + public SingleResponse> selectList() { + return orgInfoApi.selectList(); + } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgInfoConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgInfoConvertor.java new file mode 100644 index 0000000..68e9ebe --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgInfoConvertor.java @@ -0,0 +1,17 @@ +package org.qinan.safetyeval.app.convertor; + +import org.mapstruct.Mapper; +import org.qinan.safetyeval.client.co.OrgInfoSelectCO; +import org.qinan.safetyeval.domain.entity.OrgInfoEntity; + +/** + * 机构信息转换器(Entity/CO 互转) + */ +@Mapper(componentModel = "spring") +public interface OrgInfoConvertor { + + /** + * Entity 转 SelectCO(仅id、单位名称) + */ + OrgInfoSelectCO toSelectCO(OrgInfoEntity entity); +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgInfoExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgInfoExecutor.java index 29dcdbf..5b491f8 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgInfoExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgInfoExecutor.java @@ -5,6 +5,7 @@ import org.qinan.safetyeval.client.api.OrgInfoApi; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.co.OrgInfoCO; +import org.qinan.safetyeval.client.co.OrgInfoSelectCO; import org.qinan.safetyeval.client.dto.OrgInfoAddCmd; import org.qinan.safetyeval.client.dto.OrgInfoModifyCmd; import org.qinan.safetyeval.client.dto.OrgInfoPageQuery; @@ -15,11 +16,15 @@ import org.qinan.safetyeval.domain.exception.ErrorCode; import org.qinan.safetyeval.domain.query.OrgInfoQuery; import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.service.OrgInfoDomainService; +import org.qinan.safetyeval.app.convertor.OrgInfoConvertor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + /** * 机构信息执行器(App层) * @@ -32,6 +37,9 @@ public class OrgInfoExecutor implements OrgInfoApi { @Autowired(required = false) private OrgInfoDomainService orgInfoDomainService; + @Autowired + private OrgInfoConvertor orgInfoConvertor; + @Override public SingleResponse add(OrgInfoAddCmd cmd) { OrgInfoEntity entity = new OrgInfoEntity(); @@ -204,6 +212,15 @@ public class OrgInfoExecutor implements OrgInfoApi { return SingleResponse.success(toCO(entity)); } + @Override + public SingleResponse> selectList() { + List entities = orgInfoDomainService.selectList(); + List result = entities.stream() + .map(orgInfoConvertor::toSelectCO) + .collect(Collectors.toList()); + return SingleResponse.success(result); + } + private OrgInfoCO toCO(OrgInfoEntity entity) { if (entity == null) { return null; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/OrgInfoApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/OrgInfoApi.java index cbb8d3c..e2afd48 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/OrgInfoApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/OrgInfoApi.java @@ -1,6 +1,7 @@ package org.qinan.safetyeval.client.api; import org.qinan.safetyeval.client.co.OrgInfoCO; +import org.qinan.safetyeval.client.co.OrgInfoSelectCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.OrgInfoAddCmd; @@ -8,6 +9,8 @@ import org.qinan.safetyeval.client.dto.OrgInfoModifyCmd; import org.qinan.safetyeval.client.dto.OrgInfoPageQuery; import org.qinan.safetyeval.client.dto.OrgInfoUpdateStateCmd; +import java.util.List; + /** * 机构信息接口定义(Client层) * @@ -32,4 +35,11 @@ public interface OrgInfoApi { SingleResponse getInfo(); SingleResponse getByAccount(String data); + + /** + * 机构下拉列表(仅id、单位名称) + * + * @return 机构列表 + */ + SingleResponse> selectList(); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgInfoSelectCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgInfoSelectCO.java new file mode 100644 index 0000000..b857491 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgInfoSelectCO.java @@ -0,0 +1,21 @@ +package org.qinan.safetyeval.client.co; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 机构下拉列表CO + * + * @author safety-eval + */ +@Data +public class OrgInfoSelectCO { + + @ApiModelProperty(value = "主键ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long id; + + @ApiModelProperty(value = "单位名称") + private String unitName; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgInfoGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgInfoGateway.java index 2c55bed..5e03163 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgInfoGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgInfoGateway.java @@ -4,6 +4,8 @@ import org.qinan.safetyeval.domain.entity.OrgInfoEntity; import org.qinan.safetyeval.domain.query.OrgInfoQuery; import org.qinan.safetyeval.domain.query.PageResult; +import java.util.List; + /** * 机构信息Gateway接口(Domain层定义) * @@ -30,4 +32,11 @@ public interface OrgInfoGateway { void resetPassword(Long id); OrgInfoEntity getByAccount(String data); + + /** + * 查询全部机构(仅id、单位名称),用于下拉列表 + * + * @return 机构列表 + */ + List selectList(); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgInfoDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgInfoDomainService.java index c63b08e..89bde1e 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgInfoDomainService.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgInfoDomainService.java @@ -9,6 +9,7 @@ import org.qinan.safetyeval.domain.query.PageResult; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; /** * 机构信息领域服务 @@ -68,4 +69,8 @@ public class OrgInfoDomainService { public OrgInfoEntity getByAccount(String data) { return orgInfoGateway.getByAccount(data); } + + public List selectList() { + return orgInfoGateway.selectList(); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgInfoDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgInfoDoConvertor.java new file mode 100644 index 0000000..bd23026 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgInfoDoConvertor.java @@ -0,0 +1,69 @@ +package org.qinan.safetyeval.infrastructure.convertor; + +import cn.hutool.json.JSONUtil; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.qinan.safetyeval.domain.entity.OrgInfoEntity; +import org.qinan.safetyeval.infrastructure.dataobject.OrgInfoDO; + +import java.util.List; + +/** + * 机构信息DO对象转换 + * + * @author safety-eval + */ +@Mapper(componentModel = "spring") +public interface OrgInfoDoConvertor { + + /** + * 领域对象转DO + * + * @param orgInfoEntity 领域对象 + * @return DO + */ + @Mapping(target = "safetyIndustryCategoryCode", source = "safetyIndustryCategoryCode", qualifiedByName = "listToJson") + @Mapping(target = "deleteEnum", ignore = true) + @Mapping(target = "remarks", ignore = true) + @Mapping(target = "createName", ignore = true) + @Mapping(target = "updateName", ignore = true) + @Mapping(target = "version", ignore = true) + @Mapping(target = "updateTime", ignore = true) + @Mapping(target = "updateId", ignore = true) + @Mapping(target = "env", ignore = true) + OrgInfoDO convertEeToDo(OrgInfoEntity orgInfoEntity); + + /** + * DO转领域对象 + * + * @param orgInfoDO DO + * @return 领域对象 + */ + @Mapping(target = "safetyIndustryCategoryCode", source = "safetyIndustryCategoryCode", qualifiedByName = "jsonToList") + OrgInfoEntity converDoToEe(OrgInfoDO orgInfoDO); + + /** + * DOs转领域对象列表 + * + * @param orgInfoDOs dos + * @return 领域对象列表 + */ + List converDosToEes(List orgInfoDOs); + + /** + * List 转 JSON 字符串 + */ + @Named("listToJson") + default String listToJson(List list) { + return list == null ? null : JSONUtil.toJsonStr(list); + } + + /** + * JSON 字符串转 List + */ + @Named("jsonToList") + default List jsonToList(String json) { + return json == null ? null : JSONUtil.toList(json, String.class); + } +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java index 2fcaf5f..48c0b26 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java @@ -59,6 +59,8 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway { private OrgInfoCascadeDeleter orgInfoCascadeDeleter; @Autowired private GbsUserFacadeClient gbsUserFacadeClient; + @Autowired + private org.qinan.safetyeval.infrastructure.convertor.OrgInfoDoConvertor orgInfoDoConvertor; @Value("${def.password:a123456}") private String defPassword; @Value("${def.tenantId:2067161116369793024L}") @@ -293,6 +295,17 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway { return toEntity(dataObject.get(0)); } + @Override + public List selectList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(OrgInfoDO::getId, OrgInfoDO::getUnitName) + .eq(OrgInfoDO::getDeleteEnum, "false") + .orderByDesc(OrgInfoDO::getId); + return orgInfoMapper.selectList(wrapper).stream() + .map(orgInfoDoConvertor::converDoToEe) + .collect(Collectors.toList()); + } + private void syncGbsUser(String action, Runnable runnable) { try { runnable.run();