Commit 70a6316ce7f7f3db600107bde132890602da8846
1 parent
04d1b865
feat(wms):入库管理,调整合计金额、数量的字段与交互。(前端负责展示,后端负责计算)
Showing
17 changed files
with
119 additions
and
45 deletions
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryRespVO.java
| ... | ... | @@ -40,8 +40,8 @@ public class WmsInventoryHistoryRespVO { |
| 40 | 40 | private BigDecimal beforeQuantity; |
| 41 | 41 | @Schema(description = "变化后库存数量", example = "100.00") |
| 42 | 42 | private BigDecimal afterQuantity; |
| 43 | - @Schema(description = "金额", example = "1000.00") | |
| 44 | - private BigDecimal amount; | |
| 43 | + @Schema(description = "单价", example = "1000.00") | |
| 44 | + private BigDecimal price; | |
| 45 | 45 | @Schema(description = "备注", example = "备注") |
| 46 | 46 | private String remark; |
| 47 | 47 | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailRespVO.java
| ... | ... | @@ -46,8 +46,8 @@ public class WmsReceiptOrderDetailRespVO { |
| 46 | 46 | @Schema(description = "入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") |
| 47 | 47 | private BigDecimal quantity; |
| 48 | 48 | |
| 49 | - @Schema(description = "金额", example = "1000.00") | |
| 50 | - private BigDecimal amount; | |
| 49 | + @Schema(description = "单价", example = "1000.00") | |
| 50 | + private BigDecimal price; | |
| 51 | 51 | |
| 52 | 52 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 53 | 53 | private LocalDateTime createTime; | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailSaveReqVO.java
| ... | ... | @@ -23,8 +23,8 @@ public class WmsReceiptOrderDetailSaveReqVO { |
| 23 | 23 | @DecimalMin(value = "0", inclusive = false, message = "入库数量必须大于 0") |
| 24 | 24 | private BigDecimal quantity; |
| 25 | 25 | |
| 26 | - @Schema(description = "金额", example = "1000.00") | |
| 27 | - @DecimalMin(value = "0", message = "金额不能小于 0") | |
| 28 | - private BigDecimal amount; | |
| 26 | + @Schema(description = "单价", example = "1000.00") | |
| 27 | + @DecimalMin(value = "0", message = "单价不能小于 0") | |
| 28 | + private BigDecimal price; | |
| 29 | 29 | |
| 30 | 30 | } | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderPageReqVO.java
| ... | ... | @@ -45,10 +45,10 @@ public class WmsReceiptOrderPageReqVO extends PageParam { |
| 45 | 45 | private BigDecimal totalQuantityMax; |
| 46 | 46 | |
| 47 | 47 | @Schema(description = "最小总金额", example = "1.00") |
| 48 | - private BigDecimal totalAmountMin; | |
| 48 | + private BigDecimal totalPriceMin; | |
| 49 | 49 | |
| 50 | 50 | @Schema(description = "最大总金额", example = "1000.00") |
| 51 | - private BigDecimal totalAmountMax; | |
| 51 | + private BigDecimal totalPriceMax; | |
| 52 | 52 | |
| 53 | 53 | @Schema(description = "入库类型", example = "101") |
| 54 | 54 | @InEnum(WmsReceiptOrderTypeEnum.class) | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderRespVO.java
| ... | ... | @@ -66,7 +66,7 @@ public class WmsReceiptOrderRespVO { |
| 66 | 66 | |
| 67 | 67 | @Schema(description = "总金额", example = "1000.00") |
| 68 | 68 | @ExcelProperty("总金额") |
| 69 | - private BigDecimal totalAmount; | |
| 69 | + private BigDecimal totalPrice; | |
| 70 | 70 | |
| 71 | 71 | @Schema(description = "入库明细") |
| 72 | 72 | private List<WmsReceiptOrderDetailRespVO> details; | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderSaveReqVO.java
| ... | ... | @@ -10,7 +10,6 @@ import jakarta.validation.constraints.NotNull; |
| 10 | 10 | import jakarta.validation.constraints.Size; |
| 11 | 11 | import lombok.Data; |
| 12 | 12 | |
| 13 | -import java.math.BigDecimal; | |
| 14 | 13 | import java.time.LocalDateTime; |
| 15 | 14 | import java.util.List; |
| 16 | 15 | |
| ... | ... | @@ -50,14 +49,6 @@ public class WmsReceiptOrderSaveReqVO { |
| 50 | 49 | @NotNull(message = "仓库不能为空") |
| 51 | 50 | private Long warehouseId; |
| 52 | 51 | |
| 53 | - @Schema(description = "入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") | |
| 54 | - @NotNull(message = "入库数量不能为空") | |
| 55 | - private BigDecimal totalQuantity; | |
| 56 | - | |
| 57 | - @Schema(description = "总金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000.00") | |
| 58 | - @NotNull(message = "总金额不能为空") | |
| 59 | - private BigDecimal totalAmount; | |
| 60 | - | |
| 61 | 52 | @Schema(description = "入库明细") |
| 62 | 53 | @Valid |
| 63 | 54 | private List<WmsReceiptOrderDetailSaveReqVO> details; | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryHistoryDO.java
| ... | ... | @@ -59,12 +59,12 @@ public class WmsInventoryHistoryDO extends BaseDO { |
| 59 | 59 | */ |
| 60 | 60 | private BigDecimal afterQuantity; |
| 61 | 61 | |
| 62 | - // ========= 金额备注相关字段 ========= | |
| 62 | + // ========= 单价备注相关字段 ========= | |
| 63 | 63 | |
| 64 | 64 | /** |
| 65 | - * 金额 | |
| 65 | + * 单价 | |
| 66 | 66 | */ |
| 67 | - private BigDecimal amount; | |
| 67 | + private BigDecimal price; | |
| 68 | 68 | /** |
| 69 | 69 | * 备注 |
| 70 | 70 | */ | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDO.java
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDetailDO.java
| ... | ... | @@ -54,15 +54,15 @@ public class WmsReceiptOrderDetailDO extends BaseDO { |
| 54 | 54 | */ |
| 55 | 55 | private Long warehouseId; |
| 56 | 56 | |
| 57 | - // ========= 汇总金额字段 ========= | |
| 57 | + // ========= 数量金额字段 ========= | |
| 58 | 58 | |
| 59 | 59 | /** |
| 60 | 60 | * 入库数量 |
| 61 | 61 | */ |
| 62 | 62 | private BigDecimal quantity; |
| 63 | 63 | /** |
| 64 | - * 金额(小计、非单价) | |
| 64 | + * 单价 | |
| 65 | 65 | */ |
| 66 | - private BigDecimal amount; | |
| 66 | + private BigDecimal price; | |
| 67 | 67 | |
| 68 | 68 | } | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderMapper.java
| ... | ... | @@ -24,8 +24,8 @@ public interface WmsReceiptOrderMapper extends BaseMapperX<WmsReceiptOrderDO> { |
| 24 | 24 | .betweenIfPresent(WmsReceiptOrderDO::getOrderTime, reqVO.getOrderTime()) |
| 25 | 25 | .geIfPresent(WmsReceiptOrderDO::getTotalQuantity, reqVO.getTotalQuantityMin()) |
| 26 | 26 | .leIfPresent(WmsReceiptOrderDO::getTotalQuantity, reqVO.getTotalQuantityMax()) |
| 27 | - .geIfPresent(WmsReceiptOrderDO::getTotalAmount, reqVO.getTotalAmountMin()) | |
| 28 | - .leIfPresent(WmsReceiptOrderDO::getTotalAmount, reqVO.getTotalAmountMax()) | |
| 27 | + .geIfPresent(WmsReceiptOrderDO::getTotalPrice, reqVO.getTotalPriceMin()) | |
| 28 | + .leIfPresent(WmsReceiptOrderDO::getTotalPrice, reqVO.getTotalPriceMax()) | |
| 29 | 29 | .eqIfPresent(WmsReceiptOrderDO::getType, reqVO.getType()) |
| 30 | 30 | .likeIfPresent(WmsReceiptOrderDO::getBizOrderNo, reqVO.getBizOrderNo()) |
| 31 | 31 | .eqIfPresent(WmsReceiptOrderDO::getCreator, reqVO.getCreator()) | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
| ... | ... | @@ -189,7 +189,7 @@ public class WmsInventoryServiceImpl implements WmsInventoryService { |
| 189 | 189 | return new WmsInventoryHistoryDO() |
| 190 | 190 | .setWarehouseId(item.getWarehouseId()).setSkuId(item.getSkuId()) |
| 191 | 191 | .setQuantity(item.getQuantity()).setBeforeQuantity(result.get(0)).setAfterQuantity(result.get(1)) |
| 192 | - .setAmount(item.getAmount()).setRemark(item.getRemark()) | |
| 192 | + .setPrice(item.getPrice()).setRemark(item.getRemark()) | |
| 193 | 193 | .setOrderId(reqDTO.getOrderId()).setOrderNo(reqDTO.getOrderNo()).setOrderType(reqDTO.getOrderType()); |
| 194 | 194 | } |
| 195 | 195 | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryChangeReqDTO.java
| ... | ... | @@ -53,12 +53,12 @@ public class WmsInventoryChangeReqDTO { |
| 53 | 53 | */ |
| 54 | 54 | private BigDecimal quantity; |
| 55 | 55 | |
| 56 | - // ========= 金额备注相关字段 ========= | |
| 56 | + // ========= 单价备注相关字段 ========= | |
| 57 | 57 | |
| 58 | 58 | /** |
| 59 | - * 金额(小计、非单价) | |
| 59 | + * 单价 | |
| 60 | 60 | */ |
| 61 | - private BigDecimal amount; | |
| 61 | + private BigDecimal price; | |
| 62 | 62 | /** |
| 63 | 63 | * 备注 |
| 64 | 64 | */ | ... | ... |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.wms.service.order.receipt; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 3 | 4 | import cn.hutool.core.util.ObjectUtil; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 7 | +import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailSaveReqVO; | |
| 6 | 8 | import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderPageReqVO; |
| 7 | 9 | import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO; |
| 8 | 10 | import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO; |
| ... | ... | @@ -19,6 +21,7 @@ import org.springframework.stereotype.Service; |
| 19 | 21 | import org.springframework.transaction.annotation.Transactional; |
| 20 | 22 | import org.springframework.validation.annotation.Validated; |
| 21 | 23 | |
| 24 | +import java.math.BigDecimal; | |
| 22 | 25 | import java.util.List; |
| 23 | 26 | |
| 24 | 27 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| ... | ... | @@ -54,6 +57,7 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { |
| 54 | 57 | // 2.1 插入入库单 |
| 55 | 58 | WmsReceiptOrderDO order = BeanUtils.toBean(createReqVO, WmsReceiptOrderDO.class); |
| 56 | 59 | order.setStatus(WmsOrderStatusEnum.PREPARE.getStatus()); |
| 60 | + fillReceiptOrderTotal(order, createReqVO); | |
| 57 | 61 | receiptOrderMapper.insert(order); |
| 58 | 62 | // 2.2 插入入库单明细 |
| 59 | 63 | receiptOrderDetailService.createReceiptOrderDetailList(order.getId(), createReqVO); |
| ... | ... | @@ -70,6 +74,7 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { |
| 70 | 74 | // 2.1 更新入库单 |
| 71 | 75 | WmsReceiptOrderDO updateObj = BeanUtils.toBean(updateReqVO, WmsReceiptOrderDO.class) |
| 72 | 76 | .setStatus(WmsOrderStatusEnum.PREPARE.getStatus()); |
| 77 | + fillReceiptOrderTotal(updateObj, updateReqVO); | |
| 73 | 78 | receiptOrderMapper.updateById(updateObj); |
| 74 | 79 | // 2.2 更新入库单明细 |
| 75 | 80 | receiptOrderDetailService.updateReceiptOrderDetailList(updateReqVO.getId(), updateReqVO); |
| ... | ... | @@ -159,6 +164,22 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { |
| 159 | 164 | } |
| 160 | 165 | } |
| 161 | 166 | |
| 167 | + private void fillReceiptOrderTotal(WmsReceiptOrderDO order, WmsReceiptOrderSaveReqVO reqVO) { | |
| 168 | + BigDecimal totalQuantity = BigDecimal.ZERO; | |
| 169 | + BigDecimal totalPrice = BigDecimal.ZERO; | |
| 170 | + if (CollUtil.isNotEmpty(reqVO.getDetails())) { | |
| 171 | + for (WmsReceiptOrderDetailSaveReqVO detail : reqVO.getDetails()) { | |
| 172 | + if (detail.getQuantity() != null) { | |
| 173 | + totalQuantity = totalQuantity.add(detail.getQuantity()); | |
| 174 | + } | |
| 175 | + if (detail.getQuantity() != null && detail.getPrice() != null) { | |
| 176 | + totalPrice = totalPrice.add(detail.getQuantity().multiply(detail.getPrice())); | |
| 177 | + } | |
| 178 | + } | |
| 179 | + } | |
| 180 | + order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); | |
| 181 | + } | |
| 182 | + | |
| 162 | 183 | private WmsReceiptOrderDO validateReceiptOrderExists(Long id) { |
| 163 | 184 | WmsReceiptOrderDO order = id == null ? null : receiptOrderMapper.selectById(id); |
| 164 | 185 | if (order == null) { | ... | ... |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
| ... | ... | @@ -115,7 +115,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { |
| 115 | 115 | .setSkuId(sku.getId()) |
| 116 | 116 | .setWarehouseId(100L) |
| 117 | 117 | .setQuantity(new BigDecimal("7.00")) |
| 118 | - .setAmount(new BigDecimal("140.00")) | |
| 118 | + .setPrice(new BigDecimal("140.00")) | |
| 119 | 119 | .setRemark("测试入库 2")); |
| 120 | 120 | reqDTO.setItems(items); |
| 121 | 121 | |
| ... | ... | @@ -150,7 +150,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { |
| 150 | 150 | .setSkuId(sku.getId()) |
| 151 | 151 | .setWarehouseId(100L) |
| 152 | 152 | .setQuantity(new BigDecimal("4.00")) |
| 153 | - .setAmount(new BigDecimal("80.00")) | |
| 153 | + .setPrice(new BigDecimal("80.00")) | |
| 154 | 154 | .setRemark("测试入库 2")); |
| 155 | 155 | reqDTO.setItems(items); |
| 156 | 156 | |
| ... | ... | @@ -184,13 +184,13 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { |
| 184 | 184 | .setSkuId(sku.getId()) |
| 185 | 185 | .setWarehouseId(200L) |
| 186 | 186 | .setQuantity(new BigDecimal("3.00")) |
| 187 | - .setAmount(new BigDecimal("60.00")) | |
| 187 | + .setPrice(new BigDecimal("60.00")) | |
| 188 | 188 | .setRemark("测试入库 2")); |
| 189 | 189 | items.add(new WmsInventoryChangeReqDTO.Item() |
| 190 | 190 | .setSkuId(sku.getId()) |
| 191 | 191 | .setWarehouseId(100L) |
| 192 | 192 | .setQuantity(new BigDecimal("-2.00")) |
| 193 | - .setAmount(new BigDecimal("40.00")) | |
| 193 | + .setPrice(new BigDecimal("40.00")) | |
| 194 | 194 | .setRemark("测试出库")); |
| 195 | 195 | reqDTO.setItems(items); |
| 196 | 196 | |
| ... | ... | @@ -263,7 +263,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { |
| 263 | 263 | .setSkuId(sku.getId()) |
| 264 | 264 | .setWarehouseId(200L) |
| 265 | 265 | .setQuantity(new BigDecimal("-1.00")) |
| 266 | - .setAmount(new BigDecimal("20.00")) | |
| 266 | + .setPrice(new BigDecimal("20.00")) | |
| 267 | 267 | .setRemark("测试出库")); |
| 268 | 268 | reqDTO.setItems(items); |
| 269 | 269 | mockItemSkuAndItem(item, sku); |
| ... | ... | @@ -411,7 +411,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { |
| 411 | 411 | .setSkuId(skuId) |
| 412 | 412 | .setWarehouseId(warehouseId) |
| 413 | 413 | .setQuantity(new BigDecimal(quantity)) |
| 414 | - .setAmount(new BigDecimal("100.00")) | |
| 414 | + .setPrice(new BigDecimal("100.00")) | |
| 415 | 415 | .setRemark("测试入库"))); |
| 416 | 416 | } |
| 417 | 417 | ... | ... |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImplTest.java
| ... | ... | @@ -126,7 +126,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { |
| 126 | 126 | reqVO.setId(id); |
| 127 | 127 | reqVO.setSkuId(skuId); |
| 128 | 128 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 129 | - reqVO.setAmount(new BigDecimal("100.00")); | |
| 129 | + reqVO.setPrice(new BigDecimal("100.00")); | |
| 130 | 130 | return reqVO; |
| 131 | 131 | } |
| 132 | 132 | |
| ... | ... | @@ -136,7 +136,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { |
| 136 | 136 | .skuId(skuId) |
| 137 | 137 | .warehouseId(100L) |
| 138 | 138 | .quantity(new BigDecimal(quantity)) |
| 139 | - .amount(new BigDecimal("100.00")) | |
| 139 | + .price(new BigDecimal("100.00")) | |
| 140 | 140 | .build(); |
| 141 | 141 | } |
| 142 | 142 | ... | ... |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImplTest.java
| 1 | 1 | package cn.iocoder.yudao.module.wms.service.order.receipt; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 4 | +import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailSaveReqVO; | |
| 5 | +import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO; | |
| 4 | 6 | import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO; |
| 5 | 7 | import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO; |
| 6 | 8 | import cn.iocoder.yudao.module.wms.dal.mysql.order.receipt.WmsReceiptOrderDetailMapper; |
| ... | ... | @@ -21,6 +23,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; |
| 21 | 23 | |
| 22 | 24 | import java.math.BigDecimal; |
| 23 | 25 | import java.time.LocalDateTime; |
| 26 | +import java.util.Arrays; | |
| 24 | 27 | |
| 25 | 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 26 | 29 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_DETAIL_REQUIRED; |
| ... | ... | @@ -53,6 +56,43 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { |
| 53 | 56 | private WmsInventoryService inventoryService; |
| 54 | 57 | |
| 55 | 58 | @Test |
| 59 | + public void testCreateReceiptOrder_calculateTotal() { | |
| 60 | + // mock 数据 | |
| 61 | + WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(null, | |
| 62 | + createReceiptOrderDetailReqVO(null, 2001L, "1.50", "10.00"), | |
| 63 | + createReceiptOrderDetailReqVO(null, 2002L, "2.50", "20.00")); | |
| 64 | + | |
| 65 | + // 调用 | |
| 66 | + Long orderId = receiptOrderService.createReceiptOrder(reqVO); | |
| 67 | + | |
| 68 | + // 断言 | |
| 69 | + WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(orderId); | |
| 70 | + assertNotNull(dbOrder); | |
| 71 | + assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); | |
| 72 | + assertEquals(0, new BigDecimal("65.00").compareTo(dbOrder.getTotalPrice())); | |
| 73 | + assertEquals(2, receiptOrderDetailMapper.selectListByOrderId(orderId).size()); | |
| 74 | + } | |
| 75 | + | |
| 76 | + @Test | |
| 77 | + public void testUpdateReceiptOrder_calculateTotal() { | |
| 78 | + // mock 数据 | |
| 79 | + WmsReceiptOrderDO order = createReceiptOrder(100L); | |
| 80 | + receiptOrderMapper.insert(order); | |
| 81 | + WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(order.getId(), | |
| 82 | + createReceiptOrderDetailReqVO(null, 2001L, "3.00", "30.00")); | |
| 83 | + | |
| 84 | + // 调用 | |
| 85 | + receiptOrderService.updateReceiptOrder(reqVO); | |
| 86 | + | |
| 87 | + // 断言 | |
| 88 | + WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(order.getId()); | |
| 89 | + assertNotNull(dbOrder); | |
| 90 | + assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); | |
| 91 | + assertEquals(0, new BigDecimal("90.00").compareTo(dbOrder.getTotalPrice())); | |
| 92 | + assertEquals(1, receiptOrderDetailMapper.selectListByOrderId(order.getId()).size()); | |
| 93 | + } | |
| 94 | + | |
| 95 | + @Test | |
| 56 | 96 | public void testCompleteReceiptOrder_success() { |
| 57 | 97 | // mock 数据 |
| 58 | 98 | Long warehouseId = 100L; |
| ... | ... | @@ -143,7 +183,29 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { |
| 143 | 183 | .setStatus(WmsOrderStatusEnum.PREPARE.getStatus()) |
| 144 | 184 | .setWarehouseId(warehouseId) |
| 145 | 185 | .setTotalQuantity(new BigDecimal("2.00")) |
| 146 | - .setTotalAmount(new BigDecimal("20.00")); | |
| 186 | + .setTotalPrice(new BigDecimal("20.00")); | |
| 187 | + } | |
| 188 | + | |
| 189 | + private static WmsReceiptOrderSaveReqVO createReceiptOrderSaveReqVO(Long id, | |
| 190 | + WmsReceiptOrderDetailSaveReqVO... details) { | |
| 191 | + WmsReceiptOrderSaveReqVO reqVO = new WmsReceiptOrderSaveReqVO(); | |
| 192 | + reqVO.setId(id); | |
| 193 | + reqVO.setNo("RK202605120001"); | |
| 194 | + reqVO.setType(WmsReceiptOrderTypeEnum.PURCHASE.getType()); | |
| 195 | + reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0)); | |
| 196 | + reqVO.setWarehouseId(100L); | |
| 197 | + reqVO.setDetails(Arrays.asList(details)); | |
| 198 | + return reqVO; | |
| 199 | + } | |
| 200 | + | |
| 201 | + private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId, | |
| 202 | + String quantity, String price) { | |
| 203 | + WmsReceiptOrderDetailSaveReqVO reqVO = new WmsReceiptOrderDetailSaveReqVO(); | |
| 204 | + reqVO.setId(id); | |
| 205 | + reqVO.setSkuId(skuId); | |
| 206 | + reqVO.setQuantity(new BigDecimal(quantity)); | |
| 207 | + reqVO.setPrice(new BigDecimal(price)); | |
| 208 | + return reqVO; | |
| 147 | 209 | } |
| 148 | 210 | |
| 149 | 211 | private static WmsReceiptOrderDetailDO createReceiptOrderDetail(Long orderId, Long skuId, Long warehouseId) { |
| ... | ... | @@ -152,7 +214,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { |
| 152 | 214 | .skuId(skuId) |
| 153 | 215 | .warehouseId(warehouseId) |
| 154 | 216 | .quantity(new BigDecimal("2.00")) |
| 155 | - .amount(new BigDecimal("20.00")) | |
| 217 | + .price(new BigDecimal("20.00")) | |
| 156 | 218 | .build(); |
| 157 | 219 | } |
| 158 | 220 | ... | ... |
yudao-module-wms/src/test/resources/sql/create_tables.sql
| ... | ... | @@ -60,7 +60,7 @@ CREATE TABLE IF NOT EXISTS "wms_inventory_history" ( |
| 60 | 60 | "quantity" decimal(24, 6) NOT NULL DEFAULT '0', |
| 61 | 61 | "before_quantity" decimal(24, 6) DEFAULT NULL, |
| 62 | 62 | "after_quantity" decimal(24, 6) DEFAULT NULL, |
| 63 | - "amount" decimal(24, 6) DEFAULT NULL, | |
| 63 | + "price" decimal(24, 6) DEFAULT NULL, | |
| 64 | 64 | "remark" varchar(255) DEFAULT NULL, |
| 65 | 65 | "order_id" bigint DEFAULT NULL, |
| 66 | 66 | "order_no" varchar(64) DEFAULT NULL, |
| ... | ... | @@ -85,7 +85,7 @@ CREATE TABLE IF NOT EXISTS "wms_receipt_order" ( |
| 85 | 85 | "remark" varchar(255) DEFAULT NULL, |
| 86 | 86 | "warehouse_id" bigint NOT NULL, |
| 87 | 87 | "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0', |
| 88 | - "total_amount" decimal(10, 2) DEFAULT NULL, | |
| 88 | + "total_price" decimal(10, 2) DEFAULT NULL, | |
| 89 | 89 | "creator" varchar(64) DEFAULT '', |
| 90 | 90 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 91 | 91 | "updater" varchar(64) DEFAULT '', |
| ... | ... | @@ -101,7 +101,7 @@ CREATE TABLE IF NOT EXISTS "wms_receipt_order_detail" ( |
| 101 | 101 | "sku_id" bigint NOT NULL, |
| 102 | 102 | "warehouse_id" bigint NOT NULL, |
| 103 | 103 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', |
| 104 | - "amount" decimal(10, 2) DEFAULT NULL, | |
| 104 | + "price" decimal(10, 2) DEFAULT NULL, | |
| 105 | 105 | "creator" varchar(64) DEFAULT '', |
| 106 | 106 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 107 | 107 | "updater" varchar(64) DEFAULT '', | ... | ... |