From add0621be0b30ed08c1147b645b70bf80d391873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 8 Apr 2026 10:05:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E6=9F=A5=E8=AF=A2=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReviewOrderApplicationService.java | 324 ++++++++++++++---- .../repository/po/ReviewMaterialDetailPO.java | 6 + .../repository/po/ReviewOrderPO.java | 5 + .../dto/reviewOrder/ReviewOrderDetailDTO.java | 26 -- .../facadeApi/reviewOrder/ReviewOrderApi.java | 23 +- 5 files changed, 267 insertions(+), 117 deletions(-) delete mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/reviewOrder/ReviewOrderDetailDTO.java diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java index 48c2c53dd..5a3dfffeb 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java @@ -20,16 +20,19 @@ import com.mhd.wms.domain.reviewOrder.repository.mapper.ReviewOrderMapper; import com.mhd.wms.domain.reviewOrder.repository.po.ReviewMaterialDetailPO; import com.mhd.wms.domain.reviewOrder.repository.po.ReviewOrderPO; import com.mhd.wms.domain.reviewOrder.repository.todo.ReviewOrderDO; -import com.mhd.wms.interfaces.dto.reviewOrder.ReviewOrderDetailDTO; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.lang.reflect.Field; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -38,6 +41,7 @@ import java.util.stream.Collectors; /** * 复核单应用服务:列表、详情 */ +@Slf4j @Service public class ReviewOrderApplicationService { @@ -64,7 +68,7 @@ public class ReviewOrderApplicationService { return reviewOrderMapper.queryList(query); } - public ReviewOrderDetailDTO getDetailByReviewOrderId(Long reviewOrderId) { + public ReviewOrderPO getDetailByReviewOrderId(Long reviewOrderId) { if (reviewOrderId == null) { throw new ServiceException("复核单ID不能为空"); } @@ -73,14 +77,14 @@ public class ReviewOrderApplicationService { throw new ServiceException("复核单不存在或已删除"); } List details = reviewOrderMapper.queryDetailByReviewOrderId(reviewOrderId); - fillDynamicBatchDisplayFields(details); - ReviewOrderDetailDTO result = new ReviewOrderDetailDTO(); - result.setHeader(header); - result.setDetails(details); - return result; + Map> batchDetailMap = loadDisplayBatchDetailMap(details); + fillDynamicBatchDisplayFields(details, batchDetailMap); + buildReviewMaterialMoreDetailListLikeShelf(details, batchDetailMap); + header.setMaterialDetailList(details); + return header; } - public ReviewOrderDetailDTO getDetailByReviewOrderNumber(String reviewOrderNumber) { + public ReviewOrderPO getDetailByReviewOrderNumber(String reviewOrderNumber) { if (StringUtils.isEmpty(reviewOrderNumber)) { throw new ServiceException("复核单号不能为空"); } @@ -89,11 +93,11 @@ public class ReviewOrderApplicationService { throw new ServiceException("复核单不存在或已删除"); } List details = reviewOrderMapper.queryDetailByReviewOrderNumber(reviewOrderNumber); - fillDynamicBatchDisplayFields(details); - ReviewOrderDetailDTO result = new ReviewOrderDetailDTO(); - result.setHeader(header); - result.setDetails(details); - return result; + Map> batchDetailMap = loadDisplayBatchDetailMap(details); + fillDynamicBatchDisplayFields(details, batchDetailMap); + buildReviewMaterialMoreDetailListLikeShelf(details, batchDetailMap); + header.setMaterialDetailList(details); + return header; } @Transactional(rollbackFor = Exception.class) @@ -266,22 +270,17 @@ public class ReviewOrderApplicationService { } /** - * 复核单详情:动态批次属性反显(参考收货详情) - * - 批次管理维护 isDisplay=1 的属性才参与显示 - * - 每行按 outUniqueId 作为 material_detail_unique_id 去 material_more_detail 取 attribute_value - * - 将属性值映射到 productionDate/expiryDate/inventoryDate/batchRefNo/sheetRefNo/boxPalletNo/extAttr1-4 + * 批次配置(isDisplay=1),上架单详情同款缓存。 */ - private void fillDynamicBatchDisplayFields(List details) { + private Map> loadDisplayBatchDetailMap(List details) { + Map> batchDetailMap = new HashMap<>(); if (CollectionUtils.isEmpty(details)) { - return; + return batchDetailMap; } - - // 1) 批量获取“批次管理”配置(只取 isDisplay=1) Set materialBaseInfoIdSet = details.stream() .map(ReviewMaterialDetailPO::getMaterialBaseInfoId) .filter(v -> v != null) .collect(Collectors.toSet()); - Map> batchDetailMap = new HashMap<>(); for (Long materialBaseInfoId : materialBaseInfoIdSet) { try { AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(materialBaseInfoId); @@ -296,11 +295,20 @@ public class ReviewOrderApplicationService { } } } catch (Exception e) { - // 配置拉取失败不影响详情主流程 + log.debug("复核详情拉取批次配置失败 materialBaseInfoId={}", materialBaseInfoId, e); } } + return batchDetailMap; + } - // 2) 每行按 outUniqueId + batchDetailId 到 material_more_detail 取值并映射回字段 + /** + * 将 material_more_detail 的值回落到明细行平铺字段(与原先逻辑一致) + */ + private void fillDynamicBatchDisplayFields(List details, + Map> batchDetailMap) { + if (CollectionUtils.isEmpty(details) || batchDetailMap.isEmpty()) { + return; + } for (ReviewMaterialDetailPO d : details) { if (d == null || d.getMaterialBaseInfoId() == null) { continue; @@ -317,18 +325,16 @@ public class ReviewOrderApplicationService { if (batchDetail == null || batchDetail.getBatchDetailId() == null) { continue; } - String targetField = null; if (StringUtils.isNotBlank(batchDetail.getFieldName())) { targetField = normalizeFieldName(batchDetail.getFieldName()); } if (targetField == null && StringUtils.isNotBlank(batchDetail.getBatchLabels())) { - targetField = getFieldNameByBatchLabel(batchDetail.getBatchLabels()); + targetField = shelfLikeBatchLabelToFieldName(batchDetail.getBatchLabels()); } if (targetField == null) { continue; } - String attrValue = getAttributeValueFromMaterialMoreDetail(uniqueId, batchDetail.getBatchDetailId()); if (StringUtils.isBlank(attrValue)) { continue; @@ -338,6 +344,224 @@ public class ReviewOrderApplicationService { } } + /** + * 上架单 {@code setMaterialMoreDetailListRecursively} 同款:明细行上组装 materialMoreDetailList(含 attributeValue)。 + */ + private void buildReviewMaterialMoreDetailListLikeShelf(List details, + Map> batchDetailMap) { + if (CollectionUtils.isEmpty(details)) { + return; + } + for (ReviewMaterialDetailPO reviewLine : details) { + if (reviewLine == null) { + continue; + } + Long materialBaseInfoId = reviewLine.getMaterialBaseInfoId(); + List materialMoreDetailList = new ArrayList<>(); + Map batchDetailIdToMaterialMoreDetailMap = new HashMap<>(); + List existingList = reviewLine.getMaterialMoreDetailList(); + if (!CollectionUtils.isEmpty(existingList)) { + for (MaterialMoreDetailPO existing : existingList) { + if (existing.getBatchDetailId() != null) { + batchDetailIdToMaterialMoreDetailMap.put(existing.getBatchDetailId(), existing); + } + } + } + if (materialBaseInfoId != null && batchDetailMap.containsKey(materialBaseInfoId)) { + List batchDetailFeignPOList = batchDetailMap.get(materialBaseInfoId); + Set addedBatchDetailIds = new HashSet<>(); + for (BatchDetailFeignPO batchDetailFeignPO : batchDetailFeignPOList) { + if (batchDetailFeignPO == null) { + continue; + } + MaterialMoreDetailPO materialMoreDetailPO = batchDetailIdToMaterialMoreDetailMap + .get(batchDetailFeignPO.getBatchDetailId()); + if (materialMoreDetailPO == null) { + materialMoreDetailPO = new MaterialMoreDetailPO(); + materialMoreDetailPO.setBatchId(batchDetailFeignPO.getBatchId()); + materialMoreDetailPO.setBatchDetailId(batchDetailFeignPO.getBatchDetailId()); + materialMoreDetailPO.setBatchLabels(batchDetailFeignPO.getBatchLabels()); + materialMoreDetailPO.setInputControl(batchDetailFeignPO.getInputControl()); + materialMoreDetailPO.setAttributeFormat(batchDetailFeignPO.getAttributeFormat()); + materialMoreDetailPO.setAttributeOption(batchDetailFeignPO.getAttributeOption()); + materialMoreDetailPO.setRemark(batchDetailFeignPO.getRemark()); + } else { + materialMoreDetailPO.setBatchId(batchDetailFeignPO.getBatchId()); + materialMoreDetailPO.setBatchLabels(batchDetailFeignPO.getBatchLabels()); + materialMoreDetailPO.setInputControl(batchDetailFeignPO.getInputControl()); + materialMoreDetailPO.setAttributeFormat(batchDetailFeignPO.getAttributeFormat()); + materialMoreDetailPO.setAttributeOption(batchDetailFeignPO.getAttributeOption()); + materialMoreDetailPO.setRemark(batchDetailFeignPO.getRemark()); + } + Long batchDetailId = batchDetailFeignPO.getBatchDetailId(); + if (batchDetailId != null && !addedBatchDetailIds.contains(batchDetailId)) { + materialMoreDetailList.add(materialMoreDetailPO); + addedBatchDetailIds.add(batchDetailId); + } + String fieldValue = null; + if (StringUtils.isNotBlank(batchDetailFeignPO.getFieldName())) { + fieldValue = getFieldValueByFieldName(reviewLine, batchDetailFeignPO.getFieldName()); + } else if (StringUtils.isNotBlank(batchDetailFeignPO.getBatchLabels())) { + String fieldNameByLabel = shelfLikeBatchLabelToFieldName(batchDetailFeignPO.getBatchLabels()); + if (StringUtils.isNotBlank(fieldNameByLabel)) { + fieldValue = getFieldValueByFieldName(reviewLine, fieldNameByLabel); + } + } + if (fieldValue != null) { + materialMoreDetailPO.setAttributeValue(fieldValue); + } + } + } + reviewLine.setMaterialMoreDetailList(materialMoreDetailList); + } + } + + /** + * 与 {@link com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService#getFieldValueByFieldName} 一致 + */ + private String getFieldValueByFieldName(Object obj, String fieldName) { + if (obj == null || StringUtils.isBlank(fieldName)) { + return null; + } + try { + String normalizedFieldName = fieldName; + if (normalizedFieldName.contains("_")) { + normalizedFieldName = snakeToCamel(normalizedFieldName); + } + Class clazz = obj.getClass(); + Field field = null; + Class currentClass = clazz; + while (currentClass != null && field == null) { + try { + field = currentClass.getDeclaredField(normalizedFieldName); + } catch (NoSuchFieldException e) { + currentClass = currentClass.getSuperclass(); + } + } + if (field == null) { + return null; + } + field.setAccessible(true); + Object value = field.get(obj); + if (value == null) { + return null; + } + if (value instanceof Date) { + return new SimpleDateFormat("yyyy-MM-dd").format((Date) value); + } + return value.toString(); + } catch (Exception e) { + log.debug("复核详情反射取批次字段失败 fieldName={}", fieldName, e); + return null; + } + } + + private static String snakeToCamel(String snake) { + if (StringUtils.isBlank(snake)) { + return null; + } + String s = snake.trim().toLowerCase(); + StringBuilder sb = new StringBuilder(); + boolean upperNext = false; + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + if (c == '_') { + upperNext = true; + continue; + } + if (upperNext) { + sb.append(Character.toUpperCase(c)); + upperNext = false; + } else { + sb.append(c); + } + } + return sb.toString(); + } + + /** + * 与上架单批次标签映射表一致(见 StockShelfOrderApplicationService#getFieldNameByBatchLabel) + */ + private static String shelfLikeBatchLabelToFieldName(String batchLabel) { + if (StringUtils.isBlank(batchLabel)) { + return null; + } + Map labelToFieldNameMap = new HashMap<>(); + labelToFieldNameMap.put("Invoice No.", "invoiceNo"); + labelToFieldNameMap.put("Invoice No", "invoiceNo"); + labelToFieldNameMap.put("发票号", "invoiceNo"); + labelToFieldNameMap.put("Batch Ref NO's", "batchRefNo"); + labelToFieldNameMap.put("Batch Ref NO", "batchRefNo"); + labelToFieldNameMap.put("批次参考号", "batchRefNo"); + labelToFieldNameMap.put("Sheet Ref NO's", "sheetRefNo"); + labelToFieldNameMap.put("Sheet Ref NO", "sheetRefNo"); + labelToFieldNameMap.put("单据参考号", "sheetRefNo"); + labelToFieldNameMap.put("箱号/卡板号", "boxPalletNo"); + labelToFieldNameMap.put("箱号", "boxPalletNo"); + labelToFieldNameMap.put("卡板号", "boxPalletNo"); + labelToFieldNameMap.put("申报数量", "declaredQuantity"); + labelToFieldNameMap.put("申报单位", "declarationUnit"); + labelToFieldNameMap.put("原产国", "originCountry"); + labelToFieldNameMap.put("币制", "currency"); + labelToFieldNameMap.put("单位", "unit"); + labelToFieldNameMap.put("升", "liter"); + labelToFieldNameMap.put("尺寸", "dimensions"); + labelToFieldNameMap.put("箱数", "boxCount"); + labelToFieldNameMap.put("件数", "pieceCount"); + labelToFieldNameMap.put("入库数量", "inboundQuantity"); + labelToFieldNameMap.put("总净重", "totalNetWeight"); + labelToFieldNameMap.put("总毛重", "totalGrossWeight"); + labelToFieldNameMap.put("总体积", "totalVolume"); + labelToFieldNameMap.put("总面积", "totalArea"); + labelToFieldNameMap.put("总价", "totalPrice"); + labelToFieldNameMap.put("扩展属性1", "extAttr1"); + labelToFieldNameMap.put("扩展字段1", "extAttr1"); + labelToFieldNameMap.put("扩展属性2", "extAttr2"); + labelToFieldNameMap.put("扩展字段2", "extAttr2"); + labelToFieldNameMap.put("扩展属性3", "extAttr3"); + labelToFieldNameMap.put("扩展字段3", "extAttr3"); + labelToFieldNameMap.put("扩展属性4", "extAttr4"); + labelToFieldNameMap.put("扩展字段4", "extAttr4"); + labelToFieldNameMap.put("生产日期", "productionDate"); + labelToFieldNameMap.put("过期日期", "expiryDate"); + labelToFieldNameMap.put("存货日期", "inventoryDate"); + + String trimmed = batchLabel.trim(); + String fieldName = labelToFieldNameMap.get(trimmed); + if (StringUtils.isNotBlank(fieldName)) { + return fieldName; + } + for (Map.Entry entry : labelToFieldNameMap.entrySet()) { + if (batchLabel.contains(entry.getKey()) || entry.getKey().contains(trimmed)) { + return entry.getValue(); + } + } + return convertShelfLikeLabelToFieldName(trimmed); + } + + private static String convertShelfLikeLabelToFieldName(String label) { + if (StringUtils.isBlank(label)) { + return null; + } + String cleaned = label.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5\\s]", " ") + .trim() + .toLowerCase(); + if (cleaned.matches(".*[\\u4e00-\\u9fa5].*")) { + return null; + } + String[] words = cleaned.split("\\s+"); + if (words.length == 0) { + return null; + } + StringBuilder fieldName = new StringBuilder(words[0]); + for (int i = 1; i < words.length; i++) { + if (words[i].length() > 0) { + fieldName.append(words[i].substring(0, 1).toUpperCase()).append(words[i].substring(1)); + } + } + return fieldName.toString(); + } + private String getAttributeValueFromMaterialMoreDetail(Long materialDetailUniqueId, Long batchDetailId) { if (materialDetailUniqueId == null || batchDetailId == null) { return null; @@ -391,44 +615,6 @@ public class ReviewOrderApplicationService { } } - /** - * 批次属性标签 -> 目标字段名(仅覆盖需要反显的字段) - */ - private static String getFieldNameByBatchLabel(String batchLabels) { - if (StringUtils.isBlank(batchLabels)) { - return null; - } - String label = batchLabels.trim(); - switch (label) { - case "生产日期": - return "productionDate"; - case "过期日期": - return "expiryDate"; - case "存货日期": - return "inventoryDate"; - case "Batch Ref NO's": - return "batchRefNo"; - case "Sheet Ref NO's": - return "sheetRefNo"; - case "箱号/卡板号": - return "boxPalletNo"; - case "扩展字段1": - case "扩展属性1": - return "extAttr1"; - case "扩展字段2": - case "扩展属性2": - return "extAttr2"; - case "扩展字段3": - case "扩展属性3": - return "extAttr3"; - case "扩展字段4": - case "扩展属性4": - return "extAttr4"; - default: - return null; - } - } - private static void applyAttrValueToDetail(ReviewMaterialDetailPO d, String fieldName, String value) { if (d == null || fieldName == null || value == null) { return; @@ -477,11 +663,9 @@ public class ReviewOrderApplicationService { if (setter == null || StringUtils.isBlank(v)) { return; } - try { - if (v.matches("\\d{4}-\\d{2}-\\d{2}.*")) { - setter.accept(DateUtils.parseDate(v)); - } - } catch (Exception ignored) { + Date parsed = DateUtils.parseDate(v.trim()); + if (parsed != null) { + setter.accept(parsed); } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewMaterialDetailPO.java index fc9be41e4..2cbf250bc 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewMaterialDetailPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewMaterialDetailPO.java @@ -2,6 +2,7 @@ package com.mhd.wms.domain.reviewOrder.repository.po; import com.mhd.common.core.web.domain.BaseVOEntity; import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 复核单明细(review_material_detail) @@ -128,4 +130,8 @@ public class ReviewMaterialDetailPO extends BaseVOEntity { @ApiModelProperty("备注") private String remark; + + /** 与上架单明细一致:批次属性列表(isDisplay=1 项 + attributeValue) */ + @ApiModelProperty("更多属性") + private List materialMoreDetailList; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewOrderPO.java index 67371213a..5d767bd25 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewOrderPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/reviewOrder/repository/po/ReviewOrderPO.java @@ -8,6 +8,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; +import java.util.List; /** * 复核单主表列表/详情头(review_order) @@ -73,4 +74,8 @@ public class ReviewOrderPO extends BaseVOEntity { @ApiModelProperty("备注") private String remark; + + /** 详情与上架单一致:头字段扁平 + 明细列表 */ + @ApiModelProperty("复核明细") + private List materialDetailList; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/reviewOrder/ReviewOrderDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/reviewOrder/ReviewOrderDetailDTO.java deleted file mode 100644 index 2cb5f96f0..000000000 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/reviewOrder/ReviewOrderDetailDTO.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mhd.wms.interfaces.dto.reviewOrder; - -import com.mhd.wms.domain.reviewOrder.repository.po.ReviewMaterialDetailPO; -import com.mhd.wms.domain.reviewOrder.repository.po.ReviewOrderPO; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * 复核单详情:主表 + 明细行 - */ -@Data -@ApiModel("复核单详情") -public class ReviewOrderDetailDTO implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty("复核单头") - private ReviewOrderPO header; - - @ApiModelProperty("复核明细列表") - private List details; -} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/reviewOrder/ReviewOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/reviewOrder/ReviewOrderApi.java index b2a7cf444..d1ec460ee 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/reviewOrder/ReviewOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/reviewOrder/ReviewOrderApi.java @@ -43,37 +43,18 @@ public class ReviewOrderApi extends BaseController { return getDataTable(list); } - /** - * 参考出库单详情接口命名:/getInfo/{id} - */ - @ApiOperation("获取复核单详情(按主键,含明细)") + @ApiOperation("获取复核单详情") @GetMapping(value = "/getInfo/{reviewOrderId}") public AjaxResult getInfo(@PathVariable("reviewOrderId") Long reviewOrderId) { return AjaxResult.success(reviewOrderApplicationService.getDetailByReviewOrderId(reviewOrderId)); } - /** - * 参考出库单按单号查询:用请求参数而非 PathVariable - */ - @ApiOperation("根据复核单号获取复核单详情(含明细)") + @ApiOperation("根据复核单号获取复核单详情") @GetMapping(value = "/getInfoReviewOrderNumber") public AjaxResult getInfoReviewOrderNumber(@RequestParam("reviewOrderNumber") String reviewOrderNumber) { return AjaxResult.success(reviewOrderApplicationService.getDetailByReviewOrderNumber(reviewOrderNumber)); } - // 兼容旧接口(前端如仍在调用可继续使用) - @ApiOperation("复核单详情(按主键,含明细)") - @GetMapping("/detail/{reviewOrderId}") - public AjaxResult detail(@PathVariable("reviewOrderId") Long reviewOrderId) { - return AjaxResult.success(reviewOrderApplicationService.getDetailByReviewOrderId(reviewOrderId)); - } - - @ApiOperation("复核单详情(按复核单号,含明细)") - @GetMapping("/detailByNumber/{reviewOrderNumber}") - public AjaxResult detailByNumber(@PathVariable("reviewOrderNumber") String reviewOrderNumber) { - return AjaxResult.success(reviewOrderApplicationService.getDetailByReviewOrderNumber(reviewOrderNumber)); - } - @ApiOperation("批量复核") @PostMapping("/batchCheck") public AjaxResult batchCheck(@RequestBody ReviewOrderDTO reviewOrderDTO) {