From e19056f0211987da2f226f0df1941abe5a7fae6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 25 Nov 2025 14:45:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=A1=E9=87=8F=E5=8D=95?= =?UTF-8?q?=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/OrderApi.java | 5 +++ .../api/dto/order/UpdateOrderLstQtyDTO.java | 32 ++++++++++++++ .../contractorder/api/OrderApiImpl.java | 44 ++++++++++++++++--- .../salesorder/SalesOrderDetailDO.java | 2 + 4 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/order/UpdateOrderLstQtyDTO.java diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/OrderApi.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/OrderApi.java index 56c300d0..6c2902d1 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/OrderApi.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/OrderApi.java @@ -2,6 +2,7 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.contractorder.api.dto.order.OrderDTO; +import com.zt.plat.module.contractorder.api.dto.order.UpdateOrderLstQtyDTO; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -22,4 +23,8 @@ public interface OrderApi { @PostMapping(PREFIX + "/order-by-order-nos") @Operation(summary = "通过订单号批量获取订单信息", description = "通过订单编号获取订单信息") CommonResult> getOrderByOrderNos(@RequestBody List orderNoS); + + @PostMapping(PREFIX + "/update-lst-qty-by-order-id") + @Operation(summary = "根据订单明细id更新累积量", description = "根据订单明细id更新收货量") + CommonResult UpdateOrderLstQty(@RequestBody List updateOrderLstQtyDTOS); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/order/UpdateOrderLstQtyDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/order/UpdateOrderLstQtyDTO.java new file mode 100644 index 00000000..98be02e8 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/order/UpdateOrderLstQtyDTO.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.contractorder.api.dto.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springframework.validation.annotation.Validated; + +import java.math.BigDecimal; + +@Data +@Schema(description = "更新订单已收货数量") +@Validated +public class UpdateOrderLstQtyDTO { + /** + * 主键 + */ + @Schema(description = "主键") + @NotNull(message = "主键不能为空") + private Long id; + /** + * 已收货数量 + */ + @Schema(description = "已收货数量") + @NotNull(message = "已收货数量不能为空") + private BigDecimal lstQty; + + + @Schema(description = "订单分类(字典:SPLY_BSN_TP)") + @NotEmpty(message = "订单类型不能为空") + private String splyBsnTp; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java index 311a99d8..066d8588 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java @@ -3,10 +3,7 @@ package com.zt.plat.module.contractorder.api; import cn.hutool.extra.spring.SpringUtil; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.contractorder.api.dto.order.OrdDtlDTO; -import com.zt.plat.module.contractorder.api.dto.order.OrderDTO; -import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO; -import com.zt.plat.module.contractorder.api.dto.order.SalesOrdDtlDTO; +import com.zt.plat.module.contractorder.api.dto.order.*; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; @@ -18,12 +15,15 @@ import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderMapper; import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; import static com.zt.plat.framework.common.pojo.CommonResult.success; @@ -61,7 +61,7 @@ public class OrderApiImpl implements OrderApi { if (!salesOrderIds.isEmpty()) { order.addAll(getSalesOrdByIds(salesOrderIds)); } - return success(order); + return success(order); } @Override @@ -92,6 +92,40 @@ public class OrderApiImpl implements OrderApi { return success(order); } + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult UpdateOrderLstQty(List updateOrderLstQtyDTOS) { + if (updateOrderLstQtyDTOS == null || updateOrderLstQtyDTOS.isEmpty()) { + throw new RuntimeException("请求数据错误"); + } + SalesOrderDetailMapper salesOrderDetailMapper = SpringUtil.getBean(SalesOrderDetailMapper.class); + PrchOrdDtlMapper prchOrdDtlMapper = SpringUtil.getBean(PrchOrdDtlMapper.class); + updateOrderLstQtyDTOS.forEach(f -> { + if ("SALE".equals(f.getSplyBsnTp())) { + SalesOrderDetailDO salesOrderDetailDO = salesOrderDetailMapper.selectById(f.getId()); + // 处理 trfQty 可能为 null 的情况,默认值 0 + BigDecimal trfQty = Optional.ofNullable(salesOrderDetailDO.getTrfQty()) + .orElse(BigDecimal.ZERO); + SalesOrderDetailDO updateDO = new SalesOrderDetailDO(); + updateDO.setId(f.getId()); // 给更新对象设 ID + updateDO.setTrfQty(trfQty.add(f.getLstQty())); // 累加(trfQty ) + salesOrderDetailMapper.updateById(updateDO); + } else if ("PUR".equals(f.getSplyBsnTp())) { + // 采购 + PrchOrdDtlDO prchOrdDtlDO = prchOrdDtlMapper.selectById(f.getId()); + BigDecimal trfQty = Optional.ofNullable(prchOrdDtlDO.getTrfQty()) + .orElse(BigDecimal.ZERO); + PrchOrdDtlDO updateDO = new PrchOrdDtlDO(); + updateDO.setId(f.getId()); + updateDO.setTrfQty(trfQty.add(f.getLstQty())); + prchOrdDtlMapper.updateById(updateDO); + } else { + throw new RuntimeException("请求数据错误"); + } + }); + return success(true); + } + private List getOrderByIds(List ids) { return SpringUtil.getBean(SalesOrderMapper.class).selectByIds(ids); // 采购订单与销售订单的 } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java index 69aa63c6..31642439 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java @@ -155,4 +155,6 @@ public class SalesOrderDetailDO extends BusinessBaseDO { @TableField("TAX_RTE") private BigDecimal taxRte; + @TableField("TRF_QTY") + private BigDecimal trfQty; }