From cc112ecec0a726129bdc0bb61280e66f84cd8975 Mon Sep 17 00:00:00 2001 From: hewencai <2357300448@qq.com> Date: Thu, 13 Nov 2025 19:23:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E8=AE=A1=E9=87=8F?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E8=BD=AC=E6=8D=A2feign=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zt/plat/module/api/UnitConversionApi.java | 85 +++++++++++++ .../BatchUnitConvertByNameReqDTO.java | 38 ++++++ .../BatchUnitConvertBySymbolReqDTO.java | 38 ++++++ .../BatchUnitConvertReqDTO.java | 24 ++++ .../BatchUnitConvertRespDTO.java | 57 +++++++++ .../UnitConvertByNameReqDTO.java | 34 ++++++ .../UnitConvertBySymbolReqDTO.java | 34 ++++++ .../dto/unitconversion/UnitConvertReqDTO.java | 32 +++++ .../unitconversion/UnitConvertRespDTO.java | 55 +++++++++ .../base/api/UnitConversionApiImpl.java | 112 ++++++++++++++++++ 10 files changed, 509 insertions(+) create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/UnitConversionApi.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertByNameReqDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertBySymbolReqDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertReqDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertRespDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertByNameReqDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertBySymbolReqDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertReqDTO.java create mode 100644 zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertRespDTO.java create mode 100644 zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/UnitConversionApiImpl.java diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/UnitConversionApi.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/UnitConversionApi.java new file mode 100644 index 00000000..40ea7b5d --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/UnitConversionApi.java @@ -0,0 +1,85 @@ +package com.zt.plat.module.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.api.dto.unitconversion.*; +import com.zt.plat.module.base.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import jakarta.validation.Valid; + +/** + * 单位转换 Feign API + * 提供给其他服务远程调用的单位转换接口 + * + * @author ZT + */ +@FeignClient(name = ApiConstants.NAME) +@Tag(name = "RPC 服务 - 单位转换") +public interface UnitConversionApi { + + String PREFIX = ApiConstants.PREFIX + "/unit-management/unit-conversion"; + + /** + * 按ID转换单位 + * + * @param reqDTO 转换请求参数 + * @return 转换结果 + */ + @PostMapping(PREFIX + "/convert") + @Operation(summary = "按ID转换单位") + CommonResult convert(@Valid @RequestBody UnitConvertReqDTO reqDTO); + + /** + * 按符号转换单位 + * + * @param reqDTO 转换请求参数(包含单位符号) + * @return 转换结果 + */ + @PostMapping(PREFIX + "/convert-by-symbol") + @Operation(summary = "按符号转换单位") + CommonResult convertBySymbol(@Valid @RequestBody UnitConvertBySymbolReqDTO reqDTO); + + /** + * 按名称转换单位 + * + * @param reqDTO 转换请求参数(包含单位名称) + * @return 转换结果 + */ + @PostMapping(PREFIX + "/convert-by-name") + @Operation(summary = "按名称转换单位") + CommonResult convertByName(@Valid @RequestBody UnitConvertByNameReqDTO reqDTO); + + /** + * 批量按ID转换单位 + * + * @param reqDTO 批量转换请求参数 + * @return 批量转换结果 + */ + @PostMapping(PREFIX + "/batch-convert") + @Operation(summary = "批量按ID转换单位") + CommonResult batchConvert(@Valid @RequestBody BatchUnitConvertReqDTO reqDTO); + + /** + * 批量按符号转换单位 + * + * @param reqDTO 批量转换请求参数(包含单位符号) + * @return 批量转换结果 + */ + @PostMapping(PREFIX + "/batch-convert-by-symbol") + @Operation(summary = "批量按符号转换单位") + CommonResult batchConvertBySymbol(@Valid @RequestBody BatchUnitConvertBySymbolReqDTO reqDTO); + + /** + * 批量按名称转换单位 + * + * @param reqDTO 批量转换请求参数(包含单位名称) + * @return 批量转换结果 + */ + @PostMapping(PREFIX + "/batch-convert-by-name") + @Operation(summary = "批量按名称转换单位") + CommonResult batchConvertByName(@Valid @RequestBody BatchUnitConvertByNameReqDTO reqDTO); +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertByNameReqDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertByNameReqDTO.java new file mode 100644 index 00000000..4a8a7131 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertByNameReqDTO.java @@ -0,0 +1,38 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 批量按名称单位转换请求 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 批量按名称单位转换 Request DTO") +@Data +public class BatchUnitConvertByNameReqDTO { + + @Schema(description = "源单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "千克") + @NotBlank(message = "源单位名称不能为空") + private String srcUnitName; + + @Schema(description = "目标单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "吨") + @NotBlank(message = "目标单位名称不能为空") + private String tgtUnitName; + + @Schema(description = "待转换的值列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "待转换的值列表不能为空") + private List values; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; + + @Schema(description = "是否忽略错误(true:遇到错误继续执行, false:遇到错误立即停止)", example = "false") + private Boolean ignoreErrors = false; +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertBySymbolReqDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertBySymbolReqDTO.java new file mode 100644 index 00000000..b1996638 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertBySymbolReqDTO.java @@ -0,0 +1,38 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 批量按符号单位转换请求 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 批量按符号单位转换 Request DTO") +@Data +public class BatchUnitConvertBySymbolReqDTO { + + @Schema(description = "源单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "m") + @NotBlank(message = "源单位符号不能为空") + private String srcUnitSymbol; + + @Schema(description = "目标单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "km") + @NotBlank(message = "目标单位符号不能为空") + private String tgtUnitSymbol; + + @Schema(description = "待转换的值列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "待转换的值列表不能为空") + private List values; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; + + @Schema(description = "是否忽略错误(true:遇到错误继续执行, false:遇到错误立即停止)", example = "false") + private Boolean ignoreErrors = false; +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertReqDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertReqDTO.java new file mode 100644 index 00000000..ca567fc7 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertReqDTO.java @@ -0,0 +1,24 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 批量单位转换请求 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 批量单位转换 Request DTO") +@Data +public class BatchUnitConvertReqDTO { + + @Schema(description = "转换项列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "转换项列表不能为空") + private List items; + + @Schema(description = "是否忽略错误(true:遇到错误继续执行, false:遇到错误立即停止)", example = "false") + private Boolean ignoreErrors = false; +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertRespDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertRespDTO.java new file mode 100644 index 00000000..ff0621c5 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/BatchUnitConvertRespDTO.java @@ -0,0 +1,57 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import java.util.List; + +/** + * 批量单位转换响应 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 批量单位转换 Response DTO") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BatchUnitConvertRespDTO { + + @Schema(description = "转换结果列表") + private List results; + + @Schema(description = "成功数量", example = "10") + private Integer successCount; + + @Schema(description = "失败数量", example = "0") + private Integer failureCount; + + @Schema(description = "总数量", example = "10") + private Integer totalCount; + + /** + * 转换结果项 + */ + @Schema(description = "转换结果项") + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class UnitConvertResultItem { + + @Schema(description = "是否成功", example = "true") + private Boolean success; + + @Schema(description = "转换结果(成功时返回)") + private UnitConvertRespDTO data; + + @Schema(description = "错误信息(失败时返回)", example = "找不到转换规则") + private String errorMessage; + + @Schema(description = "原始请求") + private UnitConvertReqDTO request; + } +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertByNameReqDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertByNameReqDTO.java new file mode 100644 index 00000000..94aad6c3 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertByNameReqDTO.java @@ -0,0 +1,34 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; + +import java.math.BigDecimal; + +/** + * 按名称单位转换请求 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 按名称单位转换 Request DTO") +@Data +public class UnitConvertByNameReqDTO { + + @Schema(description = "源单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "千克") + @NotBlank(message = "源单位名称不能为空") + private String srcUnitName; + + @Schema(description = "目标单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "吨") + @NotBlank(message = "目标单位名称不能为空") + private String tgtUnitName; + + @Schema(description = "待转换的值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000") + @NotNull(message = "待转换的值不能为空") + private BigDecimal value; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertBySymbolReqDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertBySymbolReqDTO.java new file mode 100644 index 00000000..ddbf7024 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertBySymbolReqDTO.java @@ -0,0 +1,34 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; + +import java.math.BigDecimal; + +/** + * 按符号单位转换请求 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 按符号单位转换 Request DTO") +@Data +public class UnitConvertBySymbolReqDTO { + + @Schema(description = "源单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "kg") + @NotBlank(message = "源单位符号不能为空") + private String srcUnitSymbol; + + @Schema(description = "目标单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "t") + @NotBlank(message = "目标单位符号不能为空") + private String tgtUnitSymbol; + + @Schema(description = "待转换的值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000") + @NotNull(message = "待转换的值不能为空") + private BigDecimal value; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertReqDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertReqDTO.java new file mode 100644 index 00000000..fcbfb024 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertReqDTO.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 单位转换请求 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 单位转换 Request DTO") +@Data +public class UnitConvertReqDTO { + + @Schema(description = "源单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "源单位ID不能为空") + private Long srcUntId; + + @Schema(description = "目标单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "目标单位ID不能为空") + private Long tgtUntId; + + @Schema(description = "待转换的值", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @NotNull(message = "待转换的值不能为空") + private BigDecimal value; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertRespDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertRespDTO.java new file mode 100644 index 00000000..07459925 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/unitconversion/UnitConvertRespDTO.java @@ -0,0 +1,55 @@ +package com.zt.plat.module.api.dto.unitconversion; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import java.math.BigDecimal; + +/** + * 单位转换响应 DTO + * 用于Feign远程调用 + * + * @author ZT + */ +@Schema(description = "RPC 服务 - 单位转换 Response DTO") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UnitConvertRespDTO { + + @Schema(description = "源单位ID", example = "1") + private Long srcUntId; + + @Schema(description = "源单位名称", example = "米") + private String srcUntName; + + @Schema(description = "源单位符号", example = "m") + private String srcUntSmb; + + @Schema(description = "目标单位ID", example = "2") + private Long tgtUntId; + + @Schema(description = "目标单位名称", example = "千米") + private String tgtUntName; + + @Schema(description = "目标单位符号", example = "km") + private String tgtUntSmb; + + @Schema(description = "原始值", example = "1000") + private BigDecimal originalValue; + + @Schema(description = "转换后的值", example = "1") + private BigDecimal convertedValue; + + @Schema(description = "转换因子", example = "0.001") + private BigDecimal factor; + + @Schema(description = "转换公式", example = "1000m = 1km") + private String formula; + + @Schema(description = "转换策略", example = "DIRECT") + private String strategy; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/UnitConversionApiImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/UnitConversionApiImpl.java new file mode 100644 index 00000000..918e238a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/UnitConversionApiImpl.java @@ -0,0 +1,112 @@ +package com.zt.plat.module.base.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.api.UnitConversionApi; +import com.zt.plat.module.api.dto.unitconversion.*; +import com.zt.plat.module.base.controller.admin.unitConversion.vo.*; +import com.zt.plat.module.base.service.unitConversion.UnitConversionService; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +/** + * 单位转换 Feign API 实现类 + * 直接调用现有的 UnitConversionService 方法 + * + * @author ZT + */ +@RestController +@Validated +public class UnitConversionApiImpl implements UnitConversionApi { + + @Resource + private UnitConversionService unitConversionService; + + @Override + public CommonResult convert(@Valid UnitConvertReqDTO reqDTO) { + // DTO → VO + UnitConvertReqVO reqVO = BeanUtils.toBean(reqDTO, UnitConvertReqVO.class); + + // 调用Service + UnitConvertRespVO respVO = unitConversionService.convert(reqVO); + + // VO → DTO + UnitConvertRespDTO respDTO = BeanUtils.toBean(respVO, UnitConvertRespDTO.class); + + return success(respDTO); + } + + @Override + public CommonResult convertBySymbol(@Valid UnitConvertBySymbolReqDTO reqDTO) { + // DTO → VO + UnitConvertBySymbolReqVO reqVO = BeanUtils.toBean(reqDTO, UnitConvertBySymbolReqVO.class); + + // 调用Service + UnitConvertRespVO respVO = unitConversionService.convertBySymbol(reqVO); + + // VO → DTO + UnitConvertRespDTO respDTO = BeanUtils.toBean(respVO, UnitConvertRespDTO.class); + + return success(respDTO); + } + + @Override + public CommonResult convertByName(@Valid UnitConvertByNameReqDTO reqDTO) { + // DTO → VO + UnitConvertByNameReqVO reqVO = BeanUtils.toBean(reqDTO, UnitConvertByNameReqVO.class); + + // 调用Service + UnitConvertRespVO respVO = unitConversionService.convertByName(reqVO); + + // VO → DTO + UnitConvertRespDTO respDTO = BeanUtils.toBean(respVO, UnitConvertRespDTO.class); + + return success(respDTO); + } + + @Override + public CommonResult batchConvert(@Valid BatchUnitConvertReqDTO reqDTO) { + // DTO → VO + BatchUnitConvertReqVO reqVO = BeanUtils.toBean(reqDTO, BatchUnitConvertReqVO.class); + + // 调用Service(Service已经实现了批量转换逻辑) + BatchUnitConvertRespVO respVO = unitConversionService.batchConvert(reqVO); + + // VO → DTO + BatchUnitConvertRespDTO respDTO = BeanUtils.toBean(respVO, BatchUnitConvertRespDTO.class); + + return success(respDTO); + } + + @Override + public CommonResult batchConvertBySymbol(@Valid BatchUnitConvertBySymbolReqDTO reqDTO) { + // DTO → VO + BatchUnitConvertBySymbolReqVO reqVO = BeanUtils.toBean(reqDTO, BatchUnitConvertBySymbolReqVO.class); + + // 调用Service(Service已经实现了批量转换逻辑) + BatchUnitConvertRespVO respVO = unitConversionService.batchConvertBySymbol(reqVO); + + // VO → DTO + BatchUnitConvertRespDTO respDTO = BeanUtils.toBean(respVO, BatchUnitConvertRespDTO.class); + + return success(respDTO); + } + + @Override + public CommonResult batchConvertByName(@Valid BatchUnitConvertByNameReqDTO reqDTO) { + // DTO → VO + BatchUnitConvertByNameReqVO reqVO = BeanUtils.toBean(reqDTO, BatchUnitConvertByNameReqVO.class); + + // 调用Service(Service已经实现了批量转换逻辑) + BatchUnitConvertRespVO respVO = unitConversionService.batchConvertByName(reqVO); + + // VO → DTO + BatchUnitConvertRespDTO respDTO = BeanUtils.toBean(respVO, BatchUnitConvertRespDTO.class); + + return success(respDTO); + } +} From d4998009a123d47de0140eaf71ace26840810df7 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 14 Nov 2025 09:38:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/contract/DetailRespDTO.java | 31 ++++++++++++++-- .../api/vo/contract/DetailRespVO.java | 31 ++++++++++++++-- .../api/vo/contract/DetailSaveReqVO.java | 37 +++++++++++++------ .../dataobject/contract/ContractDetailDO.java | 20 ++++++++++ 4 files changed, 100 insertions(+), 19 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java index 905d5643..ca0c6d73 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java @@ -4,15 +4,20 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; @Schema(description = "管理后台 - 合同明细 Response VO") @Data public class DetailRespDTO { - @Schema(description = "主键") + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29552") private Long id; - @Schema(description = "物料名称") + @Schema(description = "合同主信息主键", example = "5927") + private Long contractMainId; + + @Schema(description = "物料名称", example = "芋艿") private String materialName; @Schema(description = "物料编码") @@ -24,18 +29,36 @@ public class DetailRespDTO { @Schema(description = "计量单位") private String unit; - @Schema(description = "含税单价") + @Schema(description = "含税单价", example = "30702") private BigDecimal inTaxUnitPrice; @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称") + @Schema(description = "金属元素名称", example = "王五") private String elementName; @Schema(description = "金属元素编码") private String elementNumber; + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "含税总价", example = "2686") + private BigDecimal allInTaxUnitPrice; + + @Schema(description = "牌号") + private String brandNo; + + @Schema(description = "规格") + private String specification; + + @Schema(description = "厚度") + private String depth; + + @Schema(description = "长度") + private String length; + // 交货计划 private List plans; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailRespVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailRespVO.java index 8a1a079b..c88720b0 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailRespVO.java @@ -4,15 +4,20 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; @Schema(description = "管理后台 - 合同明细 Response VO") @Data public class DetailRespVO { - @Schema(description = "主键") + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29552") private Long id; - @Schema(description = "物料名称") + @Schema(description = "合同主信息主键", example = "5927") + private Long contractMainId; + + @Schema(description = "物料名称", example = "芋艿") private String materialName; @Schema(description = "物料编码") @@ -24,18 +29,36 @@ public class DetailRespVO { @Schema(description = "计量单位") private String unit; - @Schema(description = "含税单价") + @Schema(description = "含税单价", example = "30702") private BigDecimal inTaxUnitPrice; @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称") + @Schema(description = "金属元素名称", example = "王五") private String elementName; @Schema(description = "金属元素编码") private String elementNumber; + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "含税总价", example = "2686") + private BigDecimal allInTaxUnitPrice; + + @Schema(description = "牌号") + private String brandNo; + + @Schema(description = "规格") + private String specification; + + @Schema(description = "厚度") + private String depth; + + @Schema(description = "长度") + private String length; + // 交货计划 private List plans; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailSaveReqVO.java index 34c5aa62..6e06339c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/DetailSaveReqVO.java @@ -10,36 +10,51 @@ import java.util.List; @Data public class DetailSaveReqVO { - @Schema(description = "主键") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29552") private Long id; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "合同主信息主键", example = "5927") + private Long contractMainId; + + @Schema(description = "物料名称", example = "芋艿") private String materialName; - @Schema(description = "物料编码", example = "物料编码") + @Schema(description = "物料编码") private String materialNumber; @Schema(description = "数量") private BigDecimal quantity; - @Schema(description = "计量单位", example = "吨") + @Schema(description = "计量单位") private String unit; - @Schema(description = "含税单价", example = "28579") + @Schema(description = "含税单价", example = "30702") private BigDecimal inTaxUnitPrice; - @Schema(description = "含税总价") - private BigDecimal allInTaxUnitPrice; - - @Schema(description = "金属元素缩写", example = "金属元素缩写") + @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称", example = "王五") private String elementName; - @Schema(description = "金属元素编码", example = "金属元素编码") + @Schema(description = "金属元素编码") private String elementNumber; + @Schema(description = "含税总价", example = "2686") + private BigDecimal allInTaxUnitPrice; + + @Schema(description = "牌号") + private String brandNo; + + @Schema(description = "规格") + private String specification; + + @Schema(description = "厚度") + private String depth; + + @Schema(description = "长度") + private String length; + // 交货计划 private List plans; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java index 6b03ee6f..fae854c0 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java @@ -78,4 +78,24 @@ public class ContractDetailDO extends BusinessBaseDO { */ @TableField("ALL_IN_TAX_UPRC") private BigDecimal allInTaxUnitPrice; + /** + * 牌号 + */ + @TableField("BRAD_NO") + private String brandNo; + /** + * 规格 + */ + @TableField("SPEC") + private String specification; + /** + * 厚度 + */ + @TableField("DPTH") + private String depth; + /** + * 长度 + */ + @TableField("LEN") + private String length; }