Commit 5f31b32c121e167c29047568fbb89611a493d58e
1 parent
34c0197b
feat(wms): 持久化出入库移库明细行金额并补全库存流水金额展示
Showing
29 changed files
with
251 additions
and
41 deletions
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryRespVO.java
| @@ -42,6 +42,8 @@ public class WmsInventoryHistoryRespVO { | @@ -42,6 +42,8 @@ public class WmsInventoryHistoryRespVO { | ||
| 42 | private BigDecimal afterQuantity; | 42 | private BigDecimal afterQuantity; |
| 43 | @Schema(description = "单价", example = "1000.00") | 43 | @Schema(description = "单价", example = "1000.00") |
| 44 | private BigDecimal price; | 44 | private BigDecimal price; |
| 45 | + @Schema(description = "库存变化金额", example = "10000.00") | ||
| 46 | + private BigDecimal totalPrice; | ||
| 45 | @Schema(description = "备注", example = "备注") | 47 | @Schema(description = "备注", example = "备注") |
| 46 | private String remark; | 48 | private String remark; |
| 47 | 49 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailRespVO.java
| @@ -55,6 +55,9 @@ public class WmsMovementOrderDetailRespVO { | @@ -55,6 +55,9 @@ public class WmsMovementOrderDetailRespVO { | ||
| 55 | @Schema(description = "单价", example = "100.00") | 55 | @Schema(description = "单价", example = "100.00") |
| 56 | private BigDecimal price; | 56 | private BigDecimal price; |
| 57 | 57 | ||
| 58 | + @Schema(description = "行金额", example = "1000.00") | ||
| 59 | + private BigDecimal totalPrice; | ||
| 60 | + | ||
| 58 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 61 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 59 | private LocalDateTime createTime; | 62 | private LocalDateTime createTime; |
| 60 | 63 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailSaveReqVO.java
| @@ -27,4 +27,8 @@ public class WmsMovementOrderDetailSaveReqVO { | @@ -27,4 +27,8 @@ public class WmsMovementOrderDetailSaveReqVO { | ||
| 27 | @DecimalMin(value = "0", message = "单价不能小于 0") | 27 | @DecimalMin(value = "0", message = "单价不能小于 0") |
| 28 | private BigDecimal price; | 28 | private BigDecimal price; |
| 29 | 29 | ||
| 30 | + @Schema(description = "行金额", example = "1000.00") | ||
| 31 | + @DecimalMin(value = "0", message = "行金额不能小于 0") | ||
| 32 | + private BigDecimal totalPrice; | ||
| 33 | + | ||
| 30 | } | 34 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailRespVO.java
| @@ -49,6 +49,9 @@ public class WmsReceiptOrderDetailRespVO { | @@ -49,6 +49,9 @@ public class WmsReceiptOrderDetailRespVO { | ||
| 49 | @Schema(description = "单价", example = "1000.00") | 49 | @Schema(description = "单价", example = "1000.00") |
| 50 | private BigDecimal price; | 50 | private BigDecimal price; |
| 51 | 51 | ||
| 52 | + @Schema(description = "行金额", example = "1500.00") | ||
| 53 | + private BigDecimal totalPrice; | ||
| 54 | + | ||
| 52 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 55 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 53 | private LocalDateTime createTime; | 56 | private LocalDateTime createTime; |
| 54 | 57 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailSaveReqVO.java
| @@ -27,4 +27,8 @@ public class WmsReceiptOrderDetailSaveReqVO { | @@ -27,4 +27,8 @@ public class WmsReceiptOrderDetailSaveReqVO { | ||
| 27 | @DecimalMin(value = "0", message = "单价不能小于 0") | 27 | @DecimalMin(value = "0", message = "单价不能小于 0") |
| 28 | private BigDecimal price; | 28 | private BigDecimal price; |
| 29 | 29 | ||
| 30 | + @Schema(description = "行金额", example = "1500.00") | ||
| 31 | + @DecimalMin(value = "0", message = "行金额不能小于 0") | ||
| 32 | + private BigDecimal totalPrice; | ||
| 33 | + | ||
| 30 | } | 34 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailRespVO.java
| @@ -49,6 +49,9 @@ public class WmsShipmentOrderDetailRespVO { | @@ -49,6 +49,9 @@ public class WmsShipmentOrderDetailRespVO { | ||
| 49 | @Schema(description = "单价", example = "100.00") | 49 | @Schema(description = "单价", example = "100.00") |
| 50 | private BigDecimal price; | 50 | private BigDecimal price; |
| 51 | 51 | ||
| 52 | + @Schema(description = "行金额", example = "1000.00") | ||
| 53 | + private BigDecimal totalPrice; | ||
| 54 | + | ||
| 52 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 55 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 53 | private LocalDateTime createTime; | 56 | private LocalDateTime createTime; |
| 54 | 57 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailSaveReqVO.java
| @@ -27,4 +27,8 @@ public class WmsShipmentOrderDetailSaveReqVO { | @@ -27,4 +27,8 @@ public class WmsShipmentOrderDetailSaveReqVO { | ||
| 27 | @DecimalMin(value = "0", message = "单价不能小于 0") | 27 | @DecimalMin(value = "0", message = "单价不能小于 0") |
| 28 | private BigDecimal price; | 28 | private BigDecimal price; |
| 29 | 29 | ||
| 30 | + @Schema(description = "行金额", example = "1000.00") | ||
| 31 | + @DecimalMin(value = "0", message = "行金额不能小于 0") | ||
| 32 | + private BigDecimal totalPrice; | ||
| 33 | + | ||
| 30 | } | 34 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryHistoryDO.java
| @@ -66,6 +66,10 @@ public class WmsInventoryHistoryDO extends BaseDO { | @@ -66,6 +66,10 @@ public class WmsInventoryHistoryDO extends BaseDO { | ||
| 66 | */ | 66 | */ |
| 67 | private BigDecimal price; | 67 | private BigDecimal price; |
| 68 | /** | 68 | /** |
| 69 | + * 库存变化金额 | ||
| 70 | + */ | ||
| 71 | + private BigDecimal totalPrice; | ||
| 72 | + /** | ||
| 69 | * 备注 | 73 | * 备注 |
| 70 | */ | 74 | */ |
| 71 | private String remark; | 75 | private String remark; |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDO.java
| @@ -62,15 +62,15 @@ public class WmsCheckOrderDO extends BaseDO { | @@ -62,15 +62,15 @@ public class WmsCheckOrderDO extends BaseDO { | ||
| 62 | // ========= 汇总金额字段 ========= | 62 | // ========= 汇总金额字段 ========= |
| 63 | 63 | ||
| 64 | /** | 64 | /** |
| 65 | - * 盈亏数量 | 65 | + * 盈亏数量(实盘数量 - 账面数量) |
| 66 | */ | 66 | */ |
| 67 | private BigDecimal totalQuantity; | 67 | private BigDecimal totalQuantity; |
| 68 | /** | 68 | /** |
| 69 | - * 总金额(账面金额) | 69 | + * 总金额(账面数量 * 单价) |
| 70 | */ | 70 | */ |
| 71 | private BigDecimal totalPrice; | 71 | private BigDecimal totalPrice; |
| 72 | /** | 72 | /** |
| 73 | - * 实际金额 | 73 | + * 实际金额(实盘数量 * 单价) |
| 74 | */ | 74 | */ |
| 75 | private BigDecimal actualPrice; | 75 | private BigDecimal actualPrice; |
| 76 | 76 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDetailDO.java
| @@ -67,7 +67,7 @@ public class WmsCheckOrderDetailDO extends BaseDO { | @@ -67,7 +67,7 @@ public class WmsCheckOrderDetailDO extends BaseDO { | ||
| 67 | */ | 67 | */ |
| 68 | private LocalDateTime receiptTime; | 68 | private LocalDateTime receiptTime; |
| 69 | 69 | ||
| 70 | - // ========= 汇总金额字段 ========= | 70 | + // ========= 数量金额字段 ========= |
| 71 | 71 | ||
| 72 | /** | 72 | /** |
| 73 | * 账面数量 | 73 | * 账面数量 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDetailDO.java
| @@ -63,7 +63,7 @@ public class WmsMovementOrderDetailDO extends BaseDO { | @@ -63,7 +63,7 @@ public class WmsMovementOrderDetailDO extends BaseDO { | ||
| 63 | */ | 63 | */ |
| 64 | private Long targetWarehouseId; | 64 | private Long targetWarehouseId; |
| 65 | 65 | ||
| 66 | - // ========= 汇总金额字段 ========= | 66 | + // ========= 数量金额字段 ========= |
| 67 | 67 | ||
| 68 | /** | 68 | /** |
| 69 | * 移库数量 | 69 | * 移库数量 |
| @@ -73,5 +73,9 @@ public class WmsMovementOrderDetailDO extends BaseDO { | @@ -73,5 +73,9 @@ public class WmsMovementOrderDetailDO extends BaseDO { | ||
| 73 | * 单价 | 73 | * 单价 |
| 74 | */ | 74 | */ |
| 75 | private BigDecimal price; | 75 | private BigDecimal price; |
| 76 | + /** | ||
| 77 | + * 行金额(数量 * 单价) | ||
| 78 | + */ | ||
| 79 | + private BigDecimal totalPrice; | ||
| 76 | 80 | ||
| 77 | } | 81 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDetailDO.java
| @@ -64,5 +64,9 @@ public class WmsReceiptOrderDetailDO extends BaseDO { | @@ -64,5 +64,9 @@ public class WmsReceiptOrderDetailDO extends BaseDO { | ||
| 64 | * 单价 | 64 | * 单价 |
| 65 | */ | 65 | */ |
| 66 | private BigDecimal price; | 66 | private BigDecimal price; |
| 67 | + /** | ||
| 68 | + * 行金额(数量 * 单价) | ||
| 69 | + */ | ||
| 70 | + private BigDecimal totalPrice; | ||
| 67 | 71 | ||
| 68 | } | 72 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDetailDO.java
| @@ -54,7 +54,7 @@ public class WmsShipmentOrderDetailDO extends BaseDO { | @@ -54,7 +54,7 @@ public class WmsShipmentOrderDetailDO extends BaseDO { | ||
| 54 | */ | 54 | */ |
| 55 | private Long warehouseId; | 55 | private Long warehouseId; |
| 56 | 56 | ||
| 57 | - // ========= 汇总金额字段 ========= | 57 | + // ========= 数量金额字段 ========= |
| 58 | 58 | ||
| 59 | /** | 59 | /** |
| 60 | * 出库数量 | 60 | * 出库数量 |
| @@ -64,5 +64,9 @@ public class WmsShipmentOrderDetailDO extends BaseDO { | @@ -64,5 +64,9 @@ public class WmsShipmentOrderDetailDO extends BaseDO { | ||
| 64 | * 单价 | 64 | * 单价 |
| 65 | */ | 65 | */ |
| 66 | private BigDecimal price; | 66 | private BigDecimal price; |
| 67 | + /** | ||
| 68 | + * 行金额(数量 * 单价) | ||
| 69 | + */ | ||
| 70 | + private BigDecimal totalPrice; | ||
| 67 | 71 | ||
| 68 | } | 72 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
| @@ -215,7 +215,7 @@ public class WmsInventoryServiceImpl implements WmsInventoryService { | @@ -215,7 +215,7 @@ public class WmsInventoryServiceImpl implements WmsInventoryService { | ||
| 215 | return new WmsInventoryHistoryDO() | 215 | return new WmsInventoryHistoryDO() |
| 216 | .setWarehouseId(item.getWarehouseId()).setSkuId(item.getSkuId()) | 216 | .setWarehouseId(item.getWarehouseId()).setSkuId(item.getSkuId()) |
| 217 | .setQuantity(item.getQuantity()).setBeforeQuantity(result.get(0)).setAfterQuantity(result.get(1)) | 217 | .setQuantity(item.getQuantity()).setBeforeQuantity(result.get(0)).setAfterQuantity(result.get(1)) |
| 218 | - .setPrice(item.getPrice()).setRemark(item.getRemark()) | 218 | + .setPrice(item.getPrice()).setTotalPrice(item.getTotalPrice()).setRemark(item.getRemark()) |
| 219 | .setOrderId(reqDTO.getOrderId()).setOrderNo(reqDTO.getOrderNo()).setOrderType(reqDTO.getOrderType()); | 219 | .setOrderId(reqDTO.getOrderId()).setOrderNo(reqDTO.getOrderNo()).setOrderType(reqDTO.getOrderType()); |
| 220 | } | 220 | } |
| 221 | 221 |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryChangeReqDTO.java
| @@ -60,6 +60,10 @@ public class WmsInventoryChangeReqDTO { | @@ -60,6 +60,10 @@ public class WmsInventoryChangeReqDTO { | ||
| 60 | */ | 60 | */ |
| 61 | private BigDecimal price; | 61 | private BigDecimal price; |
| 62 | /** | 62 | /** |
| 63 | + * 库存变化金额 | ||
| 64 | + */ | ||
| 65 | + private BigDecimal totalPrice; | ||
| 66 | + /** | ||
| 63 | * 备注 | 67 | * 备注 |
| 64 | */ | 68 | */ |
| 65 | private String remark; | 69 | private String remark; |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImpl.java
| @@ -112,10 +112,19 @@ public class WmsMovementOrderDetailServiceImpl implements WmsMovementOrderDetail | @@ -112,10 +112,19 @@ public class WmsMovementOrderDetailServiceImpl implements WmsMovementOrderDetail | ||
| 112 | // 校验 SKU 存在 | 112 | // 校验 SKU 存在 |
| 113 | itemSkuService.validateItemSkuExists(detail.getSkuId()); | 113 | itemSkuService.validateItemSkuExists(detail.getSkuId()); |
| 114 | // 构建对象 | 114 | // 构建对象 |
| 115 | - return BeanUtils.toBean(detail, WmsMovementOrderDetailDO.class) | 115 | + WmsMovementOrderDetailDO detailDO = BeanUtils.toBean(detail, WmsMovementOrderDetailDO.class) |
| 116 | .setSourceWarehouseId(reqVO.getSourceWarehouseId()) | 116 | .setSourceWarehouseId(reqVO.getSourceWarehouseId()) |
| 117 | .setTargetWarehouseId(reqVO.getTargetWarehouseId()); | 117 | .setTargetWarehouseId(reqVO.getTargetWarehouseId()); |
| 118 | + fillDetailTotalPrice(detailDO); | ||
| 119 | + return detailDO; | ||
| 118 | }); | 120 | }); |
| 119 | } | 121 | } |
| 120 | 122 | ||
| 123 | + private static void fillDetailTotalPrice(WmsMovementOrderDetailDO detail) { | ||
| 124 | + if (detail.getTotalPrice() != null || detail.getQuantity() == null || detail.getPrice() == null) { | ||
| 125 | + return; | ||
| 126 | + } | ||
| 127 | + detail.setTotalPrice(detail.getQuantity().multiply(detail.getPrice())); | ||
| 128 | + } | ||
| 129 | + | ||
| 121 | } | 130 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImpl.java
| @@ -169,14 +169,26 @@ public class WmsMovementOrderServiceImpl implements WmsMovementOrderService { | @@ -169,14 +169,26 @@ public class WmsMovementOrderServiceImpl implements WmsMovementOrderService { | ||
| 169 | if (detail.getQuantity() != null) { | 169 | if (detail.getQuantity() != null) { |
| 170 | totalQuantity = totalQuantity.add(detail.getQuantity()); | 170 | totalQuantity = totalQuantity.add(detail.getQuantity()); |
| 171 | } | 171 | } |
| 172 | - if (detail.getQuantity() != null && detail.getPrice() != null) { | ||
| 173 | - totalPrice = totalPrice.add(detail.getQuantity().multiply(detail.getPrice())); | 172 | + BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(), |
| 173 | + detail.getTotalPrice()); | ||
| 174 | + if (detailTotalPrice != null) { | ||
| 175 | + totalPrice = totalPrice.add(detailTotalPrice); | ||
| 174 | } | 176 | } |
| 175 | } | 177 | } |
| 176 | } | 178 | } |
| 177 | order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); | 179 | order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); |
| 178 | } | 180 | } |
| 179 | 181 | ||
| 182 | + private static BigDecimal getDetailTotalPrice(BigDecimal quantity, BigDecimal price, BigDecimal totalPrice) { | ||
| 183 | + if (totalPrice != null) { | ||
| 184 | + return totalPrice; | ||
| 185 | + } | ||
| 186 | + if (quantity == null || price == null) { | ||
| 187 | + return null; | ||
| 188 | + } | ||
| 189 | + return quantity.multiply(price); | ||
| 190 | + } | ||
| 191 | + | ||
| 180 | private WmsMovementOrderDO validateMovementOrderExists(Long id) { | 192 | private WmsMovementOrderDO validateMovementOrderExists(Long id) { |
| 181 | WmsMovementOrderDO order = id == null ? null : movementOrderMapper.selectById(id); | 193 | WmsMovementOrderDO order = id == null ? null : movementOrderMapper.selectById(id); |
| 182 | if (order == null) { | 194 | if (order == null) { |
| @@ -208,14 +220,22 @@ public class WmsMovementOrderServiceImpl implements WmsMovementOrderService { | @@ -208,14 +220,22 @@ public class WmsMovementOrderServiceImpl implements WmsMovementOrderService { | ||
| 208 | private void changeInventory(WmsMovementOrderDO order, List<WmsMovementOrderDetailDO> details) { | 220 | private void changeInventory(WmsMovementOrderDO order, List<WmsMovementOrderDetailDO> details) { |
| 209 | List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(details.size() * 2); | 221 | List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(details.size() * 2); |
| 210 | for (WmsMovementOrderDetailDO detail : details) { | 222 | for (WmsMovementOrderDetailDO detail : details) { |
| 223 | + BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(), | ||
| 224 | + detail.getTotalPrice()); | ||
| 211 | items.add(BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) | 225 | items.add(BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) |
| 212 | - .setWarehouseId(detail.getSourceWarehouseId()).setQuantity(detail.getQuantity().negate())); | 226 | + .setWarehouseId(detail.getSourceWarehouseId()).setQuantity(detail.getQuantity().negate()) |
| 227 | + .setTotalPrice(negate(detailTotalPrice))); | ||
| 213 | items.add(BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) | 228 | items.add(BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) |
| 214 | - .setWarehouseId(detail.getTargetWarehouseId()).setQuantity(detail.getQuantity())); | 229 | + .setWarehouseId(detail.getTargetWarehouseId()).setQuantity(detail.getQuantity()) |
| 230 | + .setTotalPrice(detailTotalPrice)); | ||
| 215 | } | 231 | } |
| 216 | inventoryService.changeInventory(new WmsInventoryChangeReqDTO() | 232 | inventoryService.changeInventory(new WmsInventoryChangeReqDTO() |
| 217 | .setOrderId(order.getId()).setOrderNo(order.getNo()) | 233 | .setOrderId(order.getId()).setOrderNo(order.getNo()) |
| 218 | .setOrderType(WmsOrderTypeEnum.MOVEMENT.getType()).setItems(items)); | 234 | .setOrderType(WmsOrderTypeEnum.MOVEMENT.getType()).setItems(items)); |
| 219 | } | 235 | } |
| 220 | 236 | ||
| 237 | + private static BigDecimal negate(BigDecimal value) { | ||
| 238 | + return value == null ? null : value.negate(); | ||
| 239 | + } | ||
| 240 | + | ||
| 221 | } | 241 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImpl.java
| @@ -112,8 +112,18 @@ public class WmsReceiptOrderDetailServiceImpl implements WmsReceiptOrderDetailSe | @@ -112,8 +112,18 @@ public class WmsReceiptOrderDetailServiceImpl implements WmsReceiptOrderDetailSe | ||
| 112 | // 校验 SKU 存在 | 112 | // 校验 SKU 存在 |
| 113 | itemSkuService.validateItemSkuExists(detail.getSkuId()); | 113 | itemSkuService.validateItemSkuExists(detail.getSkuId()); |
| 114 | // 构建对象 | 114 | // 构建对象 |
| 115 | - return BeanUtils.toBean(detail, WmsReceiptOrderDetailDO.class).setWarehouseId(reqVO.getWarehouseId()); | 115 | + WmsReceiptOrderDetailDO detailDO = BeanUtils.toBean(detail, WmsReceiptOrderDetailDO.class) |
| 116 | + .setWarehouseId(reqVO.getWarehouseId()); | ||
| 117 | + fillDetailTotalPrice(detailDO); | ||
| 118 | + return detailDO; | ||
| 116 | }); | 119 | }); |
| 117 | } | 120 | } |
| 118 | 121 | ||
| 122 | + private static void fillDetailTotalPrice(WmsReceiptOrderDetailDO detail) { | ||
| 123 | + if (detail.getTotalPrice() != null || detail.getQuantity() == null || detail.getPrice() == null) { | ||
| 124 | + return; | ||
| 125 | + } | ||
| 126 | + detail.setTotalPrice(detail.getQuantity().multiply(detail.getPrice())); | ||
| 127 | + } | ||
| 128 | + | ||
| 119 | } | 129 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImpl.java
| @@ -176,14 +176,26 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { | @@ -176,14 +176,26 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { | ||
| 176 | if (detail.getQuantity() != null) { | 176 | if (detail.getQuantity() != null) { |
| 177 | totalQuantity = totalQuantity.add(detail.getQuantity()); | 177 | totalQuantity = totalQuantity.add(detail.getQuantity()); |
| 178 | } | 178 | } |
| 179 | - if (detail.getQuantity() != null && detail.getPrice() != null) { | ||
| 180 | - totalPrice = totalPrice.add(detail.getQuantity().multiply(detail.getPrice())); | 179 | + BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(), |
| 180 | + detail.getTotalPrice()); | ||
| 181 | + if (detailTotalPrice != null) { | ||
| 182 | + totalPrice = totalPrice.add(detailTotalPrice); | ||
| 181 | } | 183 | } |
| 182 | } | 184 | } |
| 183 | } | 185 | } |
| 184 | order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); | 186 | order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); |
| 185 | } | 187 | } |
| 186 | 188 | ||
| 189 | + private static BigDecimal getDetailTotalPrice(BigDecimal quantity, BigDecimal price, BigDecimal totalPrice) { | ||
| 190 | + if (totalPrice != null) { | ||
| 191 | + return totalPrice; | ||
| 192 | + } | ||
| 193 | + if (quantity == null || price == null) { | ||
| 194 | + return null; | ||
| 195 | + } | ||
| 196 | + return quantity.multiply(price); | ||
| 197 | + } | ||
| 198 | + | ||
| 187 | private WmsReceiptOrderDO validateReceiptOrderExists(Long id) { | 199 | private WmsReceiptOrderDO validateReceiptOrderExists(Long id) { |
| 188 | WmsReceiptOrderDO order = id == null ? null : receiptOrderMapper.selectById(id); | 200 | WmsReceiptOrderDO order = id == null ? null : receiptOrderMapper.selectById(id); |
| 189 | if (order == null) { | 201 | if (order == null) { |
| @@ -216,7 +228,9 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { | @@ -216,7 +228,9 @@ public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService { | ||
| 216 | */ | 228 | */ |
| 217 | private void createInventory(WmsReceiptOrderDO order, List<WmsReceiptOrderDetailDO> details) { | 229 | private void createInventory(WmsReceiptOrderDO order, List<WmsReceiptOrderDetailDO> details) { |
| 218 | List<WmsInventoryChangeReqDTO.Item> items = convertList(details, | 230 | List<WmsInventoryChangeReqDTO.Item> items = convertList(details, |
| 219 | - detail -> BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class)); | 231 | + detail -> BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) |
| 232 | + .setTotalPrice(getDetailTotalPrice(detail.getQuantity(), detail.getPrice(), | ||
| 233 | + detail.getTotalPrice()))); | ||
| 220 | inventoryService.changeInventory(new WmsInventoryChangeReqDTO() | 234 | inventoryService.changeInventory(new WmsInventoryChangeReqDTO() |
| 221 | .setOrderId(order.getId()).setOrderNo(order.getNo()) | 235 | .setOrderId(order.getId()).setOrderNo(order.getNo()) |
| 222 | .setOrderType(WmsOrderTypeEnum.RECEIPT.getType()).setItems(items)); | 236 | .setOrderType(WmsOrderTypeEnum.RECEIPT.getType()).setItems(items)); |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImpl.java
| @@ -112,8 +112,18 @@ public class WmsShipmentOrderDetailServiceImpl implements WmsShipmentOrderDetail | @@ -112,8 +112,18 @@ public class WmsShipmentOrderDetailServiceImpl implements WmsShipmentOrderDetail | ||
| 112 | // 校验 SKU 存在 | 112 | // 校验 SKU 存在 |
| 113 | itemSkuService.validateItemSkuExists(detail.getSkuId()); | 113 | itemSkuService.validateItemSkuExists(detail.getSkuId()); |
| 114 | // 构建对象 | 114 | // 构建对象 |
| 115 | - return BeanUtils.toBean(detail, WmsShipmentOrderDetailDO.class).setWarehouseId(reqVO.getWarehouseId()); | 115 | + WmsShipmentOrderDetailDO detailDO = BeanUtils.toBean(detail, WmsShipmentOrderDetailDO.class) |
| 116 | + .setWarehouseId(reqVO.getWarehouseId()); | ||
| 117 | + fillDetailTotalPrice(detailDO); | ||
| 118 | + return detailDO; | ||
| 116 | }); | 119 | }); |
| 117 | } | 120 | } |
| 118 | 121 | ||
| 122 | + private static void fillDetailTotalPrice(WmsShipmentOrderDetailDO detail) { | ||
| 123 | + if (detail.getTotalPrice() != null || detail.getQuantity() == null || detail.getPrice() == null) { | ||
| 124 | + return; | ||
| 125 | + } | ||
| 126 | + detail.setTotalPrice(detail.getQuantity().multiply(detail.getPrice())); | ||
| 127 | + } | ||
| 128 | + | ||
| 119 | } | 129 | } |
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImpl.java
| @@ -176,14 +176,26 @@ public class WmsShipmentOrderServiceImpl implements WmsShipmentOrderService { | @@ -176,14 +176,26 @@ public class WmsShipmentOrderServiceImpl implements WmsShipmentOrderService { | ||
| 176 | if (detail.getQuantity() != null) { | 176 | if (detail.getQuantity() != null) { |
| 177 | totalQuantity = totalQuantity.add(detail.getQuantity()); | 177 | totalQuantity = totalQuantity.add(detail.getQuantity()); |
| 178 | } | 178 | } |
| 179 | - if (detail.getQuantity() != null && detail.getPrice() != null) { | ||
| 180 | - totalPrice = totalPrice.add(detail.getQuantity().multiply(detail.getPrice())); | 179 | + BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(), |
| 180 | + detail.getTotalPrice()); | ||
| 181 | + if (detailTotalPrice != null) { | ||
| 182 | + totalPrice = totalPrice.add(detailTotalPrice); | ||
| 181 | } | 183 | } |
| 182 | } | 184 | } |
| 183 | } | 185 | } |
| 184 | order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); | 186 | order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice); |
| 185 | } | 187 | } |
| 186 | 188 | ||
| 189 | + private static BigDecimal getDetailTotalPrice(BigDecimal quantity, BigDecimal price, BigDecimal totalPrice) { | ||
| 190 | + if (totalPrice != null) { | ||
| 191 | + return totalPrice; | ||
| 192 | + } | ||
| 193 | + if (quantity == null || price == null) { | ||
| 194 | + return null; | ||
| 195 | + } | ||
| 196 | + return quantity.multiply(price); | ||
| 197 | + } | ||
| 198 | + | ||
| 187 | private WmsShipmentOrderDO validateShipmentOrderExists(Long id) { | 199 | private WmsShipmentOrderDO validateShipmentOrderExists(Long id) { |
| 188 | WmsShipmentOrderDO order = id == null ? null : shipmentOrderMapper.selectById(id); | 200 | WmsShipmentOrderDO order = id == null ? null : shipmentOrderMapper.selectById(id); |
| 189 | if (order == null) { | 201 | if (order == null) { |
| @@ -215,10 +227,16 @@ public class WmsShipmentOrderServiceImpl implements WmsShipmentOrderService { | @@ -215,10 +227,16 @@ public class WmsShipmentOrderServiceImpl implements WmsShipmentOrderService { | ||
| 215 | private void changeInventory(WmsShipmentOrderDO order, List<WmsShipmentOrderDetailDO> details) { | 227 | private void changeInventory(WmsShipmentOrderDO order, List<WmsShipmentOrderDetailDO> details) { |
| 216 | List<WmsInventoryChangeReqDTO.Item> items = convertList(details, | 228 | List<WmsInventoryChangeReqDTO.Item> items = convertList(details, |
| 217 | detail -> BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) | 229 | detail -> BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class) |
| 218 | - .setQuantity(detail.getQuantity().multiply(BigDecimal.valueOf(-1L)))); | 230 | + .setQuantity(detail.getQuantity().negate()) |
| 231 | + .setTotalPrice(negate(getDetailTotalPrice(detail.getQuantity(), detail.getPrice(), | ||
| 232 | + detail.getTotalPrice())))); | ||
| 219 | inventoryService.changeInventory(new WmsInventoryChangeReqDTO() | 233 | inventoryService.changeInventory(new WmsInventoryChangeReqDTO() |
| 220 | .setOrderId(order.getId()).setOrderNo(order.getNo()) | 234 | .setOrderId(order.getId()).setOrderNo(order.getNo()) |
| 221 | .setOrderType(WmsOrderTypeEnum.SHIPMENT.getType()).setItems(items)); | 235 | .setOrderType(WmsOrderTypeEnum.SHIPMENT.getType()).setItems(items)); |
| 222 | } | 236 | } |
| 223 | 237 | ||
| 238 | + private static BigDecimal negate(BigDecimal value) { | ||
| 239 | + return value == null ? null : value.negate(); | ||
| 240 | + } | ||
| 241 | + | ||
| 224 | } | 242 | } |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
| @@ -83,6 +83,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -83,6 +83,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 83 | assertEquals(100L, history.getWarehouseId()); | 83 | assertEquals(100L, history.getWarehouseId()); |
| 84 | assertEquals(0, BigDecimal.ZERO.compareTo(history.getBeforeQuantity())); | 84 | assertEquals(0, BigDecimal.ZERO.compareTo(history.getBeforeQuantity())); |
| 85 | assertEquals(0, new BigDecimal("5.00").compareTo(history.getAfterQuantity())); | 85 | assertEquals(0, new BigDecimal("5.00").compareTo(history.getAfterQuantity())); |
| 86 | + assertEquals(0, new BigDecimal("500.00").compareTo(history.getTotalPrice())); | ||
| 86 | assertEquals(reqDTO.getOrderId(), history.getOrderId()); | 87 | assertEquals(reqDTO.getOrderId(), history.getOrderId()); |
| 87 | assertEquals(reqDTO.getOrderNo(), history.getOrderNo()); | 88 | assertEquals(reqDTO.getOrderNo(), history.getOrderNo()); |
| 88 | assertEquals(reqDTO.getOrderType(), history.getOrderType()); | 89 | assertEquals(reqDTO.getOrderType(), history.getOrderType()); |
| @@ -110,6 +111,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -110,6 +111,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 110 | assertEquals(0, new BigDecimal("2.00").compareTo(history.getBeforeQuantity())); | 111 | assertEquals(0, new BigDecimal("2.00").compareTo(history.getBeforeQuantity())); |
| 111 | assertEquals(0, new BigDecimal("5.00").compareTo(history.getAfterQuantity())); | 112 | assertEquals(0, new BigDecimal("5.00").compareTo(history.getAfterQuantity())); |
| 112 | assertEquals(0, new BigDecimal("3.00").compareTo(history.getQuantity())); | 113 | assertEquals(0, new BigDecimal("3.00").compareTo(history.getQuantity())); |
| 114 | + assertEquals(0, new BigDecimal("300.00").compareTo(history.getTotalPrice())); | ||
| 113 | } | 115 | } |
| 114 | 116 | ||
| 115 | @Test | 117 | @Test |
| @@ -124,6 +126,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -124,6 +126,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 124 | .setWarehouseId(100L) | 126 | .setWarehouseId(100L) |
| 125 | .setQuantity(new BigDecimal("7.00")) | 127 | .setQuantity(new BigDecimal("7.00")) |
| 126 | .setPrice(new BigDecimal("140.00")) | 128 | .setPrice(new BigDecimal("140.00")) |
| 129 | + .setTotalPrice(new BigDecimal("980.00")) | ||
| 127 | .setRemark("测试入库 2")); | 130 | .setRemark("测试入库 2")); |
| 128 | reqDTO.setItems(items); | 131 | reqDTO.setItems(items); |
| 129 | 132 | ||
| @@ -141,9 +144,11 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -141,9 +144,11 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 141 | assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity())); | 144 | assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity())); |
| 142 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity())); | 145 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity())); |
| 143 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getQuantity())); | 146 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getQuantity())); |
| 147 | + assertEquals(0, new BigDecimal("500.00").compareTo(histories.get(0).getTotalPrice())); | ||
| 144 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(1).getBeforeQuantity())); | 148 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(1).getBeforeQuantity())); |
| 145 | assertEquals(0, new BigDecimal("12.00").compareTo(histories.get(1).getAfterQuantity())); | 149 | assertEquals(0, new BigDecimal("12.00").compareTo(histories.get(1).getAfterQuantity())); |
| 146 | assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(1).getQuantity())); | 150 | assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(1).getQuantity())); |
| 151 | + assertEquals(0, new BigDecimal("980.00").compareTo(histories.get(1).getTotalPrice())); | ||
| 147 | } | 152 | } |
| 148 | 153 | ||
| 149 | @Test | 154 | @Test |
| @@ -159,6 +164,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -159,6 +164,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 159 | .setWarehouseId(100L) | 164 | .setWarehouseId(100L) |
| 160 | .setQuantity(new BigDecimal("4.00")) | 165 | .setQuantity(new BigDecimal("4.00")) |
| 161 | .setPrice(new BigDecimal("80.00")) | 166 | .setPrice(new BigDecimal("80.00")) |
| 167 | + .setTotalPrice(new BigDecimal("320.00")) | ||
| 162 | .setRemark("测试入库 2")); | 168 | .setRemark("测试入库 2")); |
| 163 | reqDTO.setItems(items); | 169 | reqDTO.setItems(items); |
| 164 | 170 | ||
| @@ -176,9 +182,11 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -176,9 +182,11 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 176 | assertEquals(0, new BigDecimal("2.00").compareTo(histories.get(0).getBeforeQuantity())); | 182 | assertEquals(0, new BigDecimal("2.00").compareTo(histories.get(0).getBeforeQuantity())); |
| 177 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity())); | 183 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity())); |
| 178 | assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(0).getQuantity())); | 184 | assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(0).getQuantity())); |
| 185 | + assertEquals(0, new BigDecimal("300.00").compareTo(histories.get(0).getTotalPrice())); | ||
| 179 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(1).getBeforeQuantity())); | 186 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(1).getBeforeQuantity())); |
| 180 | assertEquals(0, new BigDecimal("9.00").compareTo(histories.get(1).getAfterQuantity())); | 187 | assertEquals(0, new BigDecimal("9.00").compareTo(histories.get(1).getAfterQuantity())); |
| 181 | assertEquals(0, new BigDecimal("4.00").compareTo(histories.get(1).getQuantity())); | 188 | assertEquals(0, new BigDecimal("4.00").compareTo(histories.get(1).getQuantity())); |
| 189 | + assertEquals(0, new BigDecimal("320.00").compareTo(histories.get(1).getTotalPrice())); | ||
| 182 | } | 190 | } |
| 183 | 191 | ||
| 184 | @Test | 192 | @Test |
| @@ -193,12 +201,14 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -193,12 +201,14 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 193 | .setWarehouseId(200L) | 201 | .setWarehouseId(200L) |
| 194 | .setQuantity(new BigDecimal("3.00")) | 202 | .setQuantity(new BigDecimal("3.00")) |
| 195 | .setPrice(new BigDecimal("60.00")) | 203 | .setPrice(new BigDecimal("60.00")) |
| 204 | + .setTotalPrice(new BigDecimal("180.00")) | ||
| 196 | .setRemark("测试入库 2")); | 205 | .setRemark("测试入库 2")); |
| 197 | items.add(new WmsInventoryChangeReqDTO.Item() | 206 | items.add(new WmsInventoryChangeReqDTO.Item() |
| 198 | .setSkuId(sku.getId()) | 207 | .setSkuId(sku.getId()) |
| 199 | .setWarehouseId(100L) | 208 | .setWarehouseId(100L) |
| 200 | .setQuantity(new BigDecimal("-2.00")) | 209 | .setQuantity(new BigDecimal("-2.00")) |
| 201 | .setPrice(new BigDecimal("40.00")) | 210 | .setPrice(new BigDecimal("40.00")) |
| 211 | + .setTotalPrice(new BigDecimal("-80.00")) | ||
| 202 | .setRemark("测试出库")); | 212 | .setRemark("测试出库")); |
| 203 | reqDTO.setItems(items); | 213 | reqDTO.setItems(items); |
| 204 | 214 | ||
| @@ -219,12 +229,15 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -219,12 +229,15 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 219 | assertEquals(100L, histories.get(0).getWarehouseId()); | 229 | assertEquals(100L, histories.get(0).getWarehouseId()); |
| 220 | assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity())); | 230 | assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity())); |
| 221 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity())); | 231 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity())); |
| 232 | + assertEquals(0, new BigDecimal("500.00").compareTo(histories.get(0).getTotalPrice())); | ||
| 222 | assertEquals(200L, histories.get(1).getWarehouseId()); | 233 | assertEquals(200L, histories.get(1).getWarehouseId()); |
| 223 | assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(1).getBeforeQuantity())); | 234 | assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(1).getBeforeQuantity())); |
| 224 | assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(1).getAfterQuantity())); | 235 | assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(1).getAfterQuantity())); |
| 236 | + assertEquals(0, new BigDecimal("180.00").compareTo(histories.get(1).getTotalPrice())); | ||
| 225 | assertEquals(100L, histories.get(2).getWarehouseId()); | 237 | assertEquals(100L, histories.get(2).getWarehouseId()); |
| 226 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(2).getBeforeQuantity())); | 238 | assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(2).getBeforeQuantity())); |
| 227 | assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(2).getAfterQuantity())); | 239 | assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(2).getAfterQuantity())); |
| 240 | + assertEquals(0, new BigDecimal("-80.00").compareTo(histories.get(2).getTotalPrice())); | ||
| 228 | } | 241 | } |
| 229 | 242 | ||
| 230 | @Test | 243 | @Test |
| @@ -314,6 +327,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -314,6 +327,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 314 | .setWarehouseId(200L) | 327 | .setWarehouseId(200L) |
| 315 | .setQuantity(new BigDecimal("-1.00")) | 328 | .setQuantity(new BigDecimal("-1.00")) |
| 316 | .setPrice(new BigDecimal("20.00")) | 329 | .setPrice(new BigDecimal("20.00")) |
| 330 | + .setTotalPrice(new BigDecimal("-20.00")) | ||
| 317 | .setRemark("测试出库")); | 331 | .setRemark("测试出库")); |
| 318 | reqDTO.setItems(items); | 332 | reqDTO.setItems(items); |
| 319 | mockItemSkuAndItem(item, sku); | 333 | mockItemSkuAndItem(item, sku); |
| @@ -593,6 +607,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | @@ -593,6 +607,7 @@ public class WmsInventoryServiceImplTest extends BaseDbUnitTest { | ||
| 593 | .setWarehouseId(warehouseId) | 607 | .setWarehouseId(warehouseId) |
| 594 | .setQuantity(new BigDecimal(quantity)) | 608 | .setQuantity(new BigDecimal(quantity)) |
| 595 | .setPrice(new BigDecimal("100.00")) | 609 | .setPrice(new BigDecimal("100.00")) |
| 610 | + .setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))) | ||
| 596 | .setRemark("测试入库"))); | 611 | .setRemark("测试入库"))); |
| 597 | } | 612 | } |
| 598 | 613 |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImplTest.java
| @@ -52,6 +52,8 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -52,6 +52,8 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 52 | assertEquals(orderId, details.get(1).getOrderId()); | 52 | assertEquals(orderId, details.get(1).getOrderId()); |
| 53 | assertEquals(100L, details.get(0).getSourceWarehouseId()); | 53 | assertEquals(100L, details.get(0).getSourceWarehouseId()); |
| 54 | assertEquals(200L, details.get(0).getTargetWarehouseId()); | 54 | assertEquals(200L, details.get(0).getTargetWarehouseId()); |
| 55 | + assertEquals(0, new BigDecimal("100.00").compareTo(details.get(0).getTotalPrice())); | ||
| 56 | + assertEquals(0, new BigDecimal("200.00").compareTo(details.get(1).getTotalPrice())); | ||
| 55 | } | 57 | } |
| 56 | 58 | ||
| 57 | @Test | 59 | @Test |
| @@ -91,6 +93,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -91,6 +93,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 91 | assertEquals(orderId, dbUpdateDetail.getOrderId()); | 93 | assertEquals(orderId, dbUpdateDetail.getOrderId()); |
| 92 | assertEquals(2001L, dbUpdateDetail.getSkuId()); | 94 | assertEquals(2001L, dbUpdateDetail.getSkuId()); |
| 93 | assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity())); | 95 | assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity())); |
| 96 | + assertEquals(0, new BigDecimal("1100.00").compareTo(dbUpdateDetail.getTotalPrice())); | ||
| 94 | assertEquals(100L, dbUpdateDetail.getSourceWarehouseId()); | 97 | assertEquals(100L, dbUpdateDetail.getSourceWarehouseId()); |
| 95 | assertEquals(200L, dbUpdateDetail.getTargetWarehouseId()); | 98 | assertEquals(200L, dbUpdateDetail.getTargetWarehouseId()); |
| 96 | // 断言:新增 | 99 | // 断言:新增 |
| @@ -102,6 +105,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -102,6 +105,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 102 | assertNotNull(dbCreateDetail); | 105 | assertNotNull(dbCreateDetail); |
| 103 | assertEquals(orderId, dbCreateDetail.getOrderId()); | 106 | assertEquals(orderId, dbCreateDetail.getOrderId()); |
| 104 | assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity())); | 107 | assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity())); |
| 108 | + assertEquals(0, new BigDecimal("2200.00").compareTo(dbCreateDetail.getTotalPrice())); | ||
| 105 | // 断言:删除 | 109 | // 断言:删除 |
| 106 | assertNull(movementOrderDetailMapper.selectById(detail02.getId())); | 110 | assertNull(movementOrderDetailMapper.selectById(detail02.getId())); |
| 107 | } | 111 | } |
| @@ -132,6 +136,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -132,6 +136,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 132 | reqVO.setSkuId(skuId); | 136 | reqVO.setSkuId(skuId); |
| 133 | reqVO.setQuantity(new BigDecimal(quantity)); | 137 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 134 | reqVO.setPrice(new BigDecimal("100.00")); | 138 | reqVO.setPrice(new BigDecimal("100.00")); |
| 139 | + reqVO.setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))); | ||
| 135 | return reqVO; | 140 | return reqVO; |
| 136 | } | 141 | } |
| 137 | 142 | ||
| @@ -143,6 +148,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -143,6 +148,7 @@ public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 143 | .targetWarehouseId(200L) | 148 | .targetWarehouseId(200L) |
| 144 | .quantity(new BigDecimal(quantity)) | 149 | .quantity(new BigDecimal(quantity)) |
| 145 | .price(new BigDecimal("100.00")) | 150 | .price(new BigDecimal("100.00")) |
| 151 | + .totalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))) | ||
| 146 | .build(); | 152 | .build(); |
| 147 | } | 153 | } |
| 148 | 154 |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImplTest.java
| @@ -22,6 +22,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; | @@ -22,6 +22,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; | ||
| 22 | import java.math.BigDecimal; | 22 | import java.math.BigDecimal; |
| 23 | import java.time.LocalDateTime; | 23 | import java.time.LocalDateTime; |
| 24 | import java.util.Arrays; | 24 | import java.util.Arrays; |
| 25 | +import java.util.List; | ||
| 25 | 26 | ||
| 26 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 27 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 27 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_DETAIL_REQUIRED; | 28 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_DETAIL_REQUIRED; |
| @@ -57,8 +58,8 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -57,8 +58,8 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 57 | public void testCreateMovementOrder_calculateTotal() { | 58 | public void testCreateMovementOrder_calculateTotal() { |
| 58 | // mock 数据 | 59 | // mock 数据 |
| 59 | WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(null, 100L, 200L, | 60 | WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(null, 100L, 200L, |
| 60 | - createMovementOrderDetailReqVO(null, 3001L, "1.50", "10.00"), | ||
| 61 | - createMovementOrderDetailReqVO(null, 3002L, "2.50", "20.00")); | 61 | + createMovementOrderDetailReqVO(null, 3001L, "1.50", "10.00", "16.00"), |
| 62 | + createMovementOrderDetailReqVO(null, 3002L, "2.50", "20.00", "51.00")); | ||
| 62 | 63 | ||
| 63 | // 调用 | 64 | // 调用 |
| 64 | Long orderId = movementOrderService.createMovementOrder(reqVO); | 65 | Long orderId = movementOrderService.createMovementOrder(reqVO); |
| @@ -67,8 +68,10 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -67,8 +68,10 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 67 | WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(orderId); | 68 | WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(orderId); |
| 68 | assertNotNull(dbOrder); | 69 | assertNotNull(dbOrder); |
| 69 | assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); | 70 | assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); |
| 70 | - assertEquals(0, new BigDecimal("65.00").compareTo(dbOrder.getTotalPrice())); | ||
| 71 | - assertEquals(2, movementOrderDetailMapper.selectListByOrderId(orderId).size()); | 71 | + assertEquals(0, new BigDecimal("67.00").compareTo(dbOrder.getTotalPrice())); |
| 72 | + List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(orderId); | ||
| 73 | + assertEquals(2, details.size()); | ||
| 74 | + assertEquals(0, new BigDecimal("16.00").compareTo(details.get(0).getTotalPrice())); | ||
| 72 | } | 75 | } |
| 73 | 76 | ||
| 74 | @Test | 77 | @Test |
| @@ -77,7 +80,7 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -77,7 +80,7 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 77 | WmsMovementOrderDO order = createMovementOrder(100L, 200L); | 80 | WmsMovementOrderDO order = createMovementOrder(100L, 200L); |
| 78 | movementOrderMapper.insert(order); | 81 | movementOrderMapper.insert(order); |
| 79 | WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(order.getId(), 100L, 200L, | 82 | WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(order.getId(), 100L, 200L, |
| 80 | - createMovementOrderDetailReqVO(null, 3001L, "3.00", "30.00")); | 83 | + createMovementOrderDetailReqVO(null, 3001L, "3.00", "30.00", "88.00")); |
| 81 | 84 | ||
| 82 | // 调用 | 85 | // 调用 |
| 83 | movementOrderService.updateMovementOrder(reqVO); | 86 | movementOrderService.updateMovementOrder(reqVO); |
| @@ -86,8 +89,10 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -86,8 +89,10 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 86 | WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(order.getId()); | 89 | WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(order.getId()); |
| 87 | assertNotNull(dbOrder); | 90 | assertNotNull(dbOrder); |
| 88 | assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); | 91 | assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); |
| 89 | - assertEquals(0, new BigDecimal("90.00").compareTo(dbOrder.getTotalPrice())); | ||
| 90 | - assertEquals(1, movementOrderDetailMapper.selectListByOrderId(order.getId()).size()); | 92 | + assertEquals(0, new BigDecimal("88.00").compareTo(dbOrder.getTotalPrice())); |
| 93 | + List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(order.getId()); | ||
| 94 | + assertEquals(1, details.size()); | ||
| 95 | + assertEquals(0, new BigDecimal("88.00").compareTo(details.get(0).getTotalPrice())); | ||
| 91 | } | 96 | } |
| 92 | 97 | ||
| 93 | @Test | 98 | @Test |
| @@ -119,9 +124,11 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -119,9 +124,11 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 119 | assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId()); | 124 | assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId()); |
| 120 | assertEquals(sourceWarehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId()); | 125 | assertEquals(sourceWarehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId()); |
| 121 | assertEquals(0, new BigDecimal("-2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity())); | 126 | assertEquals(0, new BigDecimal("-2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity())); |
| 127 | + assertEquals(0, new BigDecimal("-40.00").compareTo(inventoryReqDTO.getItems().get(0).getTotalPrice())); | ||
| 122 | assertEquals(skuId, inventoryReqDTO.getItems().get(1).getSkuId()); | 128 | assertEquals(skuId, inventoryReqDTO.getItems().get(1).getSkuId()); |
| 123 | assertEquals(targetWarehouseId, inventoryReqDTO.getItems().get(1).getWarehouseId()); | 129 | assertEquals(targetWarehouseId, inventoryReqDTO.getItems().get(1).getWarehouseId()); |
| 124 | assertEquals(0, new BigDecimal("2.00").compareTo(inventoryReqDTO.getItems().get(1).getQuantity())); | 130 | assertEquals(0, new BigDecimal("2.00").compareTo(inventoryReqDTO.getItems().get(1).getQuantity())); |
| 131 | + assertEquals(0, new BigDecimal("40.00").compareTo(inventoryReqDTO.getItems().get(1).getTotalPrice())); | ||
| 125 | } | 132 | } |
| 126 | 133 | ||
| 127 | @Test | 134 | @Test |
| @@ -241,6 +248,7 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -241,6 +248,7 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 241 | .targetWarehouseId(targetWarehouseId) | 248 | .targetWarehouseId(targetWarehouseId) |
| 242 | .quantity(new BigDecimal("2.00")) | 249 | .quantity(new BigDecimal("2.00")) |
| 243 | .price(new BigDecimal("20.00")) | 250 | .price(new BigDecimal("20.00")) |
| 251 | + .totalPrice(new BigDecimal("40.00")) | ||
| 244 | .build(); | 252 | .build(); |
| 245 | } | 253 | } |
| 246 | 254 | ||
| @@ -263,11 +271,20 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | @@ -263,11 +271,20 @@ public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest { | ||
| 263 | 271 | ||
| 264 | private static WmsMovementOrderDetailSaveReqVO createMovementOrderDetailReqVO(Long id, Long skuId, | 272 | private static WmsMovementOrderDetailSaveReqVO createMovementOrderDetailReqVO(Long id, Long skuId, |
| 265 | String quantity, String price) { | 273 | String quantity, String price) { |
| 274 | + return createMovementOrderDetailReqVO(id, skuId, quantity, price, null); | ||
| 275 | + } | ||
| 276 | + | ||
| 277 | + private static WmsMovementOrderDetailSaveReqVO createMovementOrderDetailReqVO(Long id, Long skuId, | ||
| 278 | + String quantity, String price, | ||
| 279 | + String totalPrice) { | ||
| 266 | WmsMovementOrderDetailSaveReqVO reqVO = new WmsMovementOrderDetailSaveReqVO(); | 280 | WmsMovementOrderDetailSaveReqVO reqVO = new WmsMovementOrderDetailSaveReqVO(); |
| 267 | reqVO.setId(id); | 281 | reqVO.setId(id); |
| 268 | reqVO.setSkuId(skuId); | 282 | reqVO.setSkuId(skuId); |
| 269 | reqVO.setQuantity(new BigDecimal(quantity)); | 283 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 270 | reqVO.setPrice(new BigDecimal(price)); | 284 | reqVO.setPrice(new BigDecimal(price)); |
| 285 | + if (totalPrice != null) { | ||
| 286 | + reqVO.setTotalPrice(new BigDecimal(totalPrice)); | ||
| 287 | + } | ||
| 271 | return reqVO; | 288 | return reqVO; |
| 272 | } | 289 | } |
| 273 | 290 |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImplTest.java
| @@ -50,6 +50,8 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -50,6 +50,8 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 50 | assertEquals(2, details.size()); | 50 | assertEquals(2, details.size()); |
| 51 | assertEquals(orderId, details.get(0).getOrderId()); | 51 | assertEquals(orderId, details.get(0).getOrderId()); |
| 52 | assertEquals(orderId, details.get(1).getOrderId()); | 52 | assertEquals(orderId, details.get(1).getOrderId()); |
| 53 | + assertEquals(0, new BigDecimal("100.00").compareTo(details.get(0).getTotalPrice())); | ||
| 54 | + assertEquals(0, new BigDecimal("200.00").compareTo(details.get(1).getTotalPrice())); | ||
| 53 | } | 55 | } |
| 54 | 56 | ||
| 55 | @Test | 57 | @Test |
| @@ -89,6 +91,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -89,6 +91,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 89 | assertEquals(orderId, dbUpdateDetail.getOrderId()); | 91 | assertEquals(orderId, dbUpdateDetail.getOrderId()); |
| 90 | assertEquals(2001L, dbUpdateDetail.getSkuId()); | 92 | assertEquals(2001L, dbUpdateDetail.getSkuId()); |
| 91 | assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity())); | 93 | assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity())); |
| 94 | + assertEquals(0, new BigDecimal("1100.00").compareTo(dbUpdateDetail.getTotalPrice())); | ||
| 92 | // 断言:新增 | 95 | // 断言:新增 |
| 93 | List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId); | 96 | List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId); |
| 94 | assertEquals(2, details.size()); | 97 | assertEquals(2, details.size()); |
| @@ -98,6 +101,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -98,6 +101,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 98 | assertNotNull(dbCreateDetail); | 101 | assertNotNull(dbCreateDetail); |
| 99 | assertEquals(orderId, dbCreateDetail.getOrderId()); | 102 | assertEquals(orderId, dbCreateDetail.getOrderId()); |
| 100 | assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity())); | 103 | assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity())); |
| 104 | + assertEquals(0, new BigDecimal("2200.00").compareTo(dbCreateDetail.getTotalPrice())); | ||
| 101 | // 断言:删除 | 105 | // 断言:删除 |
| 102 | assertNull(receiptOrderDetailMapper.selectById(detail02.getId())); | 106 | assertNull(receiptOrderDetailMapper.selectById(detail02.getId())); |
| 103 | } | 107 | } |
| @@ -127,6 +131,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -127,6 +131,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 127 | reqVO.setSkuId(skuId); | 131 | reqVO.setSkuId(skuId); |
| 128 | reqVO.setQuantity(new BigDecimal(quantity)); | 132 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 129 | reqVO.setPrice(new BigDecimal("100.00")); | 133 | reqVO.setPrice(new BigDecimal("100.00")); |
| 134 | + reqVO.setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))); | ||
| 130 | return reqVO; | 135 | return reqVO; |
| 131 | } | 136 | } |
| 132 | 137 | ||
| @@ -137,6 +142,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -137,6 +142,7 @@ public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 137 | .warehouseId(100L) | 142 | .warehouseId(100L) |
| 138 | .quantity(new BigDecimal(quantity)) | 143 | .quantity(new BigDecimal(quantity)) |
| 139 | .price(new BigDecimal("100.00")) | 144 | .price(new BigDecimal("100.00")) |
| 145 | + .totalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))) | ||
| 140 | .build(); | 146 | .build(); |
| 141 | } | 147 | } |
| 142 | 148 |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImplTest.java
| @@ -24,6 +24,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; | @@ -24,6 +24,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; | ||
| 24 | import java.math.BigDecimal; | 24 | import java.math.BigDecimal; |
| 25 | import java.time.LocalDateTime; | 25 | import java.time.LocalDateTime; |
| 26 | import java.util.Arrays; | 26 | import java.util.Arrays; |
| 27 | +import java.util.List; | ||
| 27 | 28 | ||
| 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 29 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 29 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_DETAIL_REQUIRED; | 30 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_DETAIL_REQUIRED; |
| @@ -60,8 +61,8 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -60,8 +61,8 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 60 | public void testCreateReceiptOrder_calculateTotal() { | 61 | public void testCreateReceiptOrder_calculateTotal() { |
| 61 | // mock 数据 | 62 | // mock 数据 |
| 62 | WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(null, | 63 | WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(null, |
| 63 | - createReceiptOrderDetailReqVO(null, 2001L, "1.50", "10.00"), | ||
| 64 | - createReceiptOrderDetailReqVO(null, 2002L, "2.50", "20.00")); | 64 | + createReceiptOrderDetailReqVO(null, 2001L, "1.50", "10.00", "16.00"), |
| 65 | + createReceiptOrderDetailReqVO(null, 2002L, "2.50", "20.00", "51.00")); | ||
| 65 | 66 | ||
| 66 | // 调用 | 67 | // 调用 |
| 67 | Long orderId = receiptOrderService.createReceiptOrder(reqVO); | 68 | Long orderId = receiptOrderService.createReceiptOrder(reqVO); |
| @@ -70,8 +71,10 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -70,8 +71,10 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 70 | WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(orderId); | 71 | WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(orderId); |
| 71 | assertNotNull(dbOrder); | 72 | assertNotNull(dbOrder); |
| 72 | assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); | 73 | assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); |
| 73 | - assertEquals(0, new BigDecimal("65.00").compareTo(dbOrder.getTotalPrice())); | ||
| 74 | - assertEquals(2, receiptOrderDetailMapper.selectListByOrderId(orderId).size()); | 74 | + assertEquals(0, new BigDecimal("67.00").compareTo(dbOrder.getTotalPrice())); |
| 75 | + List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId); | ||
| 76 | + assertEquals(2, details.size()); | ||
| 77 | + assertEquals(0, new BigDecimal("16.00").compareTo(details.get(0).getTotalPrice())); | ||
| 75 | } | 78 | } |
| 76 | 79 | ||
| 77 | @Test | 80 | @Test |
| @@ -80,7 +83,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -80,7 +83,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 80 | WmsReceiptOrderDO order = createReceiptOrder(100L); | 83 | WmsReceiptOrderDO order = createReceiptOrder(100L); |
| 81 | receiptOrderMapper.insert(order); | 84 | receiptOrderMapper.insert(order); |
| 82 | WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(order.getId(), | 85 | WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(order.getId(), |
| 83 | - createReceiptOrderDetailReqVO(null, 2001L, "3.00", "30.00")); | 86 | + createReceiptOrderDetailReqVO(null, 2001L, "3.00", "30.00", "88.00")); |
| 84 | 87 | ||
| 85 | // 调用 | 88 | // 调用 |
| 86 | receiptOrderService.updateReceiptOrder(reqVO); | 89 | receiptOrderService.updateReceiptOrder(reqVO); |
| @@ -89,8 +92,10 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -89,8 +92,10 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 89 | WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(order.getId()); | 92 | WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(order.getId()); |
| 90 | assertNotNull(dbOrder); | 93 | assertNotNull(dbOrder); |
| 91 | assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); | 94 | assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); |
| 92 | - assertEquals(0, new BigDecimal("90.00").compareTo(dbOrder.getTotalPrice())); | ||
| 93 | - assertEquals(1, receiptOrderDetailMapper.selectListByOrderId(order.getId()).size()); | 95 | + assertEquals(0, new BigDecimal("88.00").compareTo(dbOrder.getTotalPrice())); |
| 96 | + List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(order.getId()); | ||
| 97 | + assertEquals(1, details.size()); | ||
| 98 | + assertEquals(0, new BigDecimal("88.00").compareTo(details.get(0).getTotalPrice())); | ||
| 94 | } | 99 | } |
| 95 | 100 | ||
| 96 | @Test | 101 | @Test |
| @@ -120,6 +125,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -120,6 +125,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 120 | assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId()); | 125 | assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId()); |
| 121 | assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId()); | 126 | assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId()); |
| 122 | assertEquals(0, new BigDecimal("2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity())); | 127 | assertEquals(0, new BigDecimal("2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity())); |
| 128 | + assertEquals(0, new BigDecimal("40.00").compareTo(inventoryReqDTO.getItems().get(0).getTotalPrice())); | ||
| 123 | } | 129 | } |
| 124 | 130 | ||
| 125 | @Test | 131 | @Test |
| @@ -234,11 +240,20 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -234,11 +240,20 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 234 | 240 | ||
| 235 | private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId, | 241 | private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId, |
| 236 | String quantity, String price) { | 242 | String quantity, String price) { |
| 243 | + return createReceiptOrderDetailReqVO(id, skuId, quantity, price, null); | ||
| 244 | + } | ||
| 245 | + | ||
| 246 | + private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId, | ||
| 247 | + String quantity, String price, | ||
| 248 | + String totalPrice) { | ||
| 237 | WmsReceiptOrderDetailSaveReqVO reqVO = new WmsReceiptOrderDetailSaveReqVO(); | 249 | WmsReceiptOrderDetailSaveReqVO reqVO = new WmsReceiptOrderDetailSaveReqVO(); |
| 238 | reqVO.setId(id); | 250 | reqVO.setId(id); |
| 239 | reqVO.setSkuId(skuId); | 251 | reqVO.setSkuId(skuId); |
| 240 | reqVO.setQuantity(new BigDecimal(quantity)); | 252 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 241 | reqVO.setPrice(new BigDecimal(price)); | 253 | reqVO.setPrice(new BigDecimal(price)); |
| 254 | + if (totalPrice != null) { | ||
| 255 | + reqVO.setTotalPrice(new BigDecimal(totalPrice)); | ||
| 256 | + } | ||
| 242 | return reqVO; | 257 | return reqVO; |
| 243 | } | 258 | } |
| 244 | 259 | ||
| @@ -249,6 +264,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | @@ -249,6 +264,7 @@ public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest { | ||
| 249 | .warehouseId(warehouseId) | 264 | .warehouseId(warehouseId) |
| 250 | .quantity(new BigDecimal("2.00")) | 265 | .quantity(new BigDecimal("2.00")) |
| 251 | .price(new BigDecimal("20.00")) | 266 | .price(new BigDecimal("20.00")) |
| 267 | + .totalPrice(new BigDecimal("40.00")) | ||
| 252 | .build(); | 268 | .build(); |
| 253 | } | 269 | } |
| 254 | 270 |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImplTest.java
| @@ -51,6 +51,8 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -51,6 +51,8 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 51 | assertEquals(orderId, details.get(0).getOrderId()); | 51 | assertEquals(orderId, details.get(0).getOrderId()); |
| 52 | assertEquals(orderId, details.get(1).getOrderId()); | 52 | assertEquals(orderId, details.get(1).getOrderId()); |
| 53 | assertEquals(100L, details.get(0).getWarehouseId()); | 53 | assertEquals(100L, details.get(0).getWarehouseId()); |
| 54 | + assertEquals(0, new BigDecimal("100.00").compareTo(details.get(0).getTotalPrice())); | ||
| 55 | + assertEquals(0, new BigDecimal("200.00").compareTo(details.get(1).getTotalPrice())); | ||
| 54 | } | 56 | } |
| 55 | 57 | ||
| 56 | @Test | 58 | @Test |
| @@ -90,6 +92,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -90,6 +92,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 90 | assertEquals(orderId, dbUpdateDetail.getOrderId()); | 92 | assertEquals(orderId, dbUpdateDetail.getOrderId()); |
| 91 | assertEquals(2001L, dbUpdateDetail.getSkuId()); | 93 | assertEquals(2001L, dbUpdateDetail.getSkuId()); |
| 92 | assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity())); | 94 | assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity())); |
| 95 | + assertEquals(0, new BigDecimal("1100.00").compareTo(dbUpdateDetail.getTotalPrice())); | ||
| 93 | // 断言:新增 | 96 | // 断言:新增 |
| 94 | List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId); | 97 | List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId); |
| 95 | assertEquals(2, details.size()); | 98 | assertEquals(2, details.size()); |
| @@ -99,6 +102,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -99,6 +102,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 99 | assertNotNull(dbCreateDetail); | 102 | assertNotNull(dbCreateDetail); |
| 100 | assertEquals(orderId, dbCreateDetail.getOrderId()); | 103 | assertEquals(orderId, dbCreateDetail.getOrderId()); |
| 101 | assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity())); | 104 | assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity())); |
| 105 | + assertEquals(0, new BigDecimal("2200.00").compareTo(dbCreateDetail.getTotalPrice())); | ||
| 102 | // 断言:删除 | 106 | // 断言:删除 |
| 103 | assertNull(shipmentOrderDetailMapper.selectById(detail02.getId())); | 107 | assertNull(shipmentOrderDetailMapper.selectById(detail02.getId())); |
| 104 | } | 108 | } |
| @@ -128,6 +132,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -128,6 +132,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 128 | reqVO.setSkuId(skuId); | 132 | reqVO.setSkuId(skuId); |
| 129 | reqVO.setQuantity(new BigDecimal(quantity)); | 133 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 130 | reqVO.setPrice(new BigDecimal("100.00")); | 134 | reqVO.setPrice(new BigDecimal("100.00")); |
| 135 | + reqVO.setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))); | ||
| 131 | return reqVO; | 136 | return reqVO; |
| 132 | } | 137 | } |
| 133 | 138 | ||
| @@ -138,6 +143,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | @@ -138,6 +143,7 @@ public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest { | ||
| 138 | .warehouseId(100L) | 143 | .warehouseId(100L) |
| 139 | .quantity(new BigDecimal(quantity)) | 144 | .quantity(new BigDecimal(quantity)) |
| 140 | .price(new BigDecimal("100.00")) | 145 | .price(new BigDecimal("100.00")) |
| 146 | + .totalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00"))) | ||
| 141 | .build(); | 147 | .build(); |
| 142 | } | 148 | } |
| 143 | 149 |
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImplTest.java
| @@ -24,6 +24,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; | @@ -24,6 +24,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; | ||
| 24 | import java.math.BigDecimal; | 24 | import java.math.BigDecimal; |
| 25 | import java.time.LocalDateTime; | 25 | import java.time.LocalDateTime; |
| 26 | import java.util.Arrays; | 26 | import java.util.Arrays; |
| 27 | +import java.util.List; | ||
| 27 | 28 | ||
| 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 29 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 29 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.SHIPMENT_ORDER_DETAIL_REQUIRED; | 30 | import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.SHIPMENT_ORDER_DETAIL_REQUIRED; |
| @@ -60,8 +61,8 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -60,8 +61,8 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 60 | public void testCreateShipmentOrder_calculateTotal() { | 61 | public void testCreateShipmentOrder_calculateTotal() { |
| 61 | // mock 数据 | 62 | // mock 数据 |
| 62 | WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderSaveReqVO(null, | 63 | WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderSaveReqVO(null, |
| 63 | - createShipmentOrderDetailReqVO(null, 2001L, "1.50", "10.00"), | ||
| 64 | - createShipmentOrderDetailReqVO(null, 2002L, "2.50", "20.00")); | 64 | + createShipmentOrderDetailReqVO(null, 2001L, "1.50", "10.00", "16.00"), |
| 65 | + createShipmentOrderDetailReqVO(null, 2002L, "2.50", "20.00", "51.00")); | ||
| 65 | 66 | ||
| 66 | // 调用 | 67 | // 调用 |
| 67 | Long orderId = shipmentOrderService.createShipmentOrder(reqVO); | 68 | Long orderId = shipmentOrderService.createShipmentOrder(reqVO); |
| @@ -70,8 +71,10 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -70,8 +71,10 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 70 | WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(orderId); | 71 | WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(orderId); |
| 71 | assertNotNull(dbOrder); | 72 | assertNotNull(dbOrder); |
| 72 | assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); | 73 | assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity())); |
| 73 | - assertEquals(0, new BigDecimal("65.00").compareTo(dbOrder.getTotalPrice())); | ||
| 74 | - assertEquals(2, shipmentOrderDetailMapper.selectListByOrderId(orderId).size()); | 74 | + assertEquals(0, new BigDecimal("67.00").compareTo(dbOrder.getTotalPrice())); |
| 75 | + List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId); | ||
| 76 | + assertEquals(2, details.size()); | ||
| 77 | + assertEquals(0, new BigDecimal("16.00").compareTo(details.get(0).getTotalPrice())); | ||
| 75 | } | 78 | } |
| 76 | 79 | ||
| 77 | @Test | 80 | @Test |
| @@ -80,7 +83,7 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -80,7 +83,7 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 80 | WmsShipmentOrderDO order = createShipmentOrder(100L); | 83 | WmsShipmentOrderDO order = createShipmentOrder(100L); |
| 81 | shipmentOrderMapper.insert(order); | 84 | shipmentOrderMapper.insert(order); |
| 82 | WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderSaveReqVO(order.getId(), | 85 | WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderSaveReqVO(order.getId(), |
| 83 | - createShipmentOrderDetailReqVO(null, 2001L, "3.00", "30.00")); | 86 | + createShipmentOrderDetailReqVO(null, 2001L, "3.00", "30.00", "88.00")); |
| 84 | 87 | ||
| 85 | // 调用 | 88 | // 调用 |
| 86 | shipmentOrderService.updateShipmentOrder(reqVO); | 89 | shipmentOrderService.updateShipmentOrder(reqVO); |
| @@ -89,8 +92,10 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -89,8 +92,10 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 89 | WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(order.getId()); | 92 | WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(order.getId()); |
| 90 | assertNotNull(dbOrder); | 93 | assertNotNull(dbOrder); |
| 91 | assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); | 94 | assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity())); |
| 92 | - assertEquals(0, new BigDecimal("90.00").compareTo(dbOrder.getTotalPrice())); | ||
| 93 | - assertEquals(1, shipmentOrderDetailMapper.selectListByOrderId(order.getId()).size()); | 95 | + assertEquals(0, new BigDecimal("88.00").compareTo(dbOrder.getTotalPrice())); |
| 96 | + List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(order.getId()); | ||
| 97 | + assertEquals(1, details.size()); | ||
| 98 | + assertEquals(0, new BigDecimal("88.00").compareTo(details.get(0).getTotalPrice())); | ||
| 94 | } | 99 | } |
| 95 | 100 | ||
| 96 | @Test | 101 | @Test |
| @@ -120,6 +125,7 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -120,6 +125,7 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 120 | assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId()); | 125 | assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId()); |
| 121 | assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId()); | 126 | assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId()); |
| 122 | assertEquals(0, new BigDecimal("-2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity())); | 127 | assertEquals(0, new BigDecimal("-2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity())); |
| 128 | + assertEquals(0, new BigDecimal("-40.00").compareTo(inventoryReqDTO.getItems().get(0).getTotalPrice())); | ||
| 123 | } | 129 | } |
| 124 | 130 | ||
| 125 | @Test | 131 | @Test |
| @@ -234,11 +240,20 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -234,11 +240,20 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 234 | 240 | ||
| 235 | private static WmsShipmentOrderDetailSaveReqVO createShipmentOrderDetailReqVO(Long id, Long skuId, | 241 | private static WmsShipmentOrderDetailSaveReqVO createShipmentOrderDetailReqVO(Long id, Long skuId, |
| 236 | String quantity, String price) { | 242 | String quantity, String price) { |
| 243 | + return createShipmentOrderDetailReqVO(id, skuId, quantity, price, null); | ||
| 244 | + } | ||
| 245 | + | ||
| 246 | + private static WmsShipmentOrderDetailSaveReqVO createShipmentOrderDetailReqVO(Long id, Long skuId, | ||
| 247 | + String quantity, String price, | ||
| 248 | + String totalPrice) { | ||
| 237 | WmsShipmentOrderDetailSaveReqVO reqVO = new WmsShipmentOrderDetailSaveReqVO(); | 249 | WmsShipmentOrderDetailSaveReqVO reqVO = new WmsShipmentOrderDetailSaveReqVO(); |
| 238 | reqVO.setId(id); | 250 | reqVO.setId(id); |
| 239 | reqVO.setSkuId(skuId); | 251 | reqVO.setSkuId(skuId); |
| 240 | reqVO.setQuantity(new BigDecimal(quantity)); | 252 | reqVO.setQuantity(new BigDecimal(quantity)); |
| 241 | reqVO.setPrice(new BigDecimal(price)); | 253 | reqVO.setPrice(new BigDecimal(price)); |
| 254 | + if (totalPrice != null) { | ||
| 255 | + reqVO.setTotalPrice(new BigDecimal(totalPrice)); | ||
| 256 | + } | ||
| 242 | return reqVO; | 257 | return reqVO; |
| 243 | } | 258 | } |
| 244 | 259 | ||
| @@ -249,6 +264,7 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | @@ -249,6 +264,7 @@ public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest { | ||
| 249 | .warehouseId(warehouseId) | 264 | .warehouseId(warehouseId) |
| 250 | .quantity(new BigDecimal("2.00")) | 265 | .quantity(new BigDecimal("2.00")) |
| 251 | .price(new BigDecimal("20.00")) | 266 | .price(new BigDecimal("20.00")) |
| 267 | + .totalPrice(new BigDecimal("40.00")) | ||
| 252 | .build(); | 268 | .build(); |
| 253 | } | 269 | } |
| 254 | 270 |
yudao-module-wms/src/test/resources/sql/create_tables.sql
| @@ -128,6 +128,7 @@ CREATE TABLE IF NOT EXISTS "wms_inventory_history" ( | @@ -128,6 +128,7 @@ CREATE TABLE IF NOT EXISTS "wms_inventory_history" ( | ||
| 128 | "before_quantity" decimal(24, 6) DEFAULT NULL, | 128 | "before_quantity" decimal(24, 6) DEFAULT NULL, |
| 129 | "after_quantity" decimal(24, 6) DEFAULT NULL, | 129 | "after_quantity" decimal(24, 6) DEFAULT NULL, |
| 130 | "price" decimal(24, 6) DEFAULT NULL, | 130 | "price" decimal(24, 6) DEFAULT NULL, |
| 131 | + "total_price" decimal(24, 6) DEFAULT NULL, | ||
| 131 | "remark" varchar(255) DEFAULT NULL, | 132 | "remark" varchar(255) DEFAULT NULL, |
| 132 | "order_id" bigint DEFAULT NULL, | 133 | "order_id" bigint DEFAULT NULL, |
| 133 | "order_no" varchar(64) DEFAULT NULL, | 134 | "order_no" varchar(64) DEFAULT NULL, |
| @@ -169,6 +170,7 @@ CREATE TABLE IF NOT EXISTS "wms_receipt_order_detail" ( | @@ -169,6 +170,7 @@ CREATE TABLE IF NOT EXISTS "wms_receipt_order_detail" ( | ||
| 169 | "warehouse_id" bigint NOT NULL, | 170 | "warehouse_id" bigint NOT NULL, |
| 170 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', | 171 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', |
| 171 | "price" decimal(10, 2) DEFAULT NULL, | 172 | "price" decimal(10, 2) DEFAULT NULL, |
| 173 | + "total_price" decimal(10, 2) DEFAULT NULL, | ||
| 172 | "creator" varchar(64) DEFAULT '', | 174 | "creator" varchar(64) DEFAULT '', |
| 173 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | 175 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 174 | "updater" varchar(64) DEFAULT '', | 176 | "updater" varchar(64) DEFAULT '', |
| @@ -206,6 +208,7 @@ CREATE TABLE IF NOT EXISTS "wms_shipment_order_detail" ( | @@ -206,6 +208,7 @@ CREATE TABLE IF NOT EXISTS "wms_shipment_order_detail" ( | ||
| 206 | "warehouse_id" bigint NOT NULL, | 208 | "warehouse_id" bigint NOT NULL, |
| 207 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', | 209 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', |
| 208 | "price" decimal(10, 2) DEFAULT NULL, | 210 | "price" decimal(10, 2) DEFAULT NULL, |
| 211 | + "total_price" decimal(10, 2) DEFAULT NULL, | ||
| 209 | "creator" varchar(64) DEFAULT '', | 212 | "creator" varchar(64) DEFAULT '', |
| 210 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | 213 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 211 | "updater" varchar(64) DEFAULT '', | 214 | "updater" varchar(64) DEFAULT '', |
| @@ -242,6 +245,7 @@ CREATE TABLE IF NOT EXISTS "wms_movement_order_detail" ( | @@ -242,6 +245,7 @@ CREATE TABLE IF NOT EXISTS "wms_movement_order_detail" ( | ||
| 242 | "target_warehouse_id" bigint NOT NULL, | 245 | "target_warehouse_id" bigint NOT NULL, |
| 243 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', | 246 | "quantity" decimal(20, 2) NOT NULL DEFAULT '0', |
| 244 | "price" decimal(10, 2) DEFAULT NULL, | 247 | "price" decimal(10, 2) DEFAULT NULL, |
| 248 | + "total_price" decimal(10, 2) DEFAULT NULL, | ||
| 245 | "creator" varchar(64) DEFAULT '', | 249 | "creator" varchar(64) DEFAULT '', |
| 246 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | 250 | "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 247 | "updater" varchar(64) DEFAULT '', | 251 | "updater" varchar(64) DEFAULT '', |