From 68133915882e14a3015e14062b266113aeed845a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Mon, 20 Jul 2026 13:47:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=A4=A7?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/controller/PODetailController.java | 11 +++++++++++ .../order/service/Iface/IPODetailService.java | 2 ++ .../service/Impl/PODetailServiceImpl.java | 18 ++++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/xujie/modules/order/controller/PODetailController.java b/src/main/java/com/xujie/modules/order/controller/PODetailController.java index cbb6b7b..12b833b 100644 --- a/src/main/java/com/xujie/modules/order/controller/PODetailController.java +++ b/src/main/java/com/xujie/modules/order/controller/PODetailController.java @@ -222,6 +222,17 @@ public class PODetailController { } } + @PostMapping("/issuePoDetail") + @ApiOperation("下达PO订单行") + public R issuePoDetail(@RequestBody PODetail data) { + try { + baseService.issuePoDetail(data); + return R.ok(); + } catch (RuntimeException ex) { + return R.error(ex.getMessage()); + } + } + @PostMapping("/batchUpdatePoDetail") @ApiOperation("保存") diff --git a/src/main/java/com/xujie/modules/order/service/Iface/IPODetailService.java b/src/main/java/com/xujie/modules/order/service/Iface/IPODetailService.java index d7f719d..4ec7465 100644 --- a/src/main/java/com/xujie/modules/order/service/Iface/IPODetailService.java +++ b/src/main/java/com/xujie/modules/order/service/Iface/IPODetailService.java @@ -53,6 +53,8 @@ public interface IPODetailService extends IService { void openPoDetail(PODetail model); + void issuePoDetail(PODetail model); + /** * 手工新增 PO:自动生成 header + 1 条 detail(与导入单条逻辑一致,order_no 走 TransNoControl PO 类型) */ diff --git a/src/main/java/com/xujie/modules/order/service/Impl/PODetailServiceImpl.java b/src/main/java/com/xujie/modules/order/service/Impl/PODetailServiceImpl.java index d774775..5cc42d9 100644 --- a/src/main/java/com/xujie/modules/order/service/Impl/PODetailServiceImpl.java +++ b/src/main/java/com/xujie/modules/order/service/Impl/PODetailServiceImpl.java @@ -437,6 +437,16 @@ public class PODetailServiceImpl extends ServiceImpl i updatePoDetailStatus(existingDetail, newStatus); } + @Override + @Transactional + public void issuePoDetail(PODetail model) { + PODetail existingDetail = resolvePoDetail(model); + if (!"草稿".equals(existingDetail.getStatus())) { + throw new RuntimeException("只有草稿状态的订单可以下达"); + } + updatePoDetailStatus(existingDetail, "已下达"); + } + private PODetail resolvePoDetail(PODetail model) { if (model == null) { throw new RuntimeException("订单参数不能为空"); @@ -807,7 +817,7 @@ public class PODetailServiceImpl extends ServiceImpl i poHeader.setOrderType(resolveOrderTypeByCustomer(site, customer, importVo.getOrderType())); poHeader.setCurrency("USA"); poHeader.setCurrencyRate(1.0); - poHeader.setStatus("已下达"); + poHeader.setStatus("草稿"); poHeader.setOrderDate(importVo.getOrderDate()); poHeader.setEnquiry(importVo.getEnquiry()); poHeader.setConfirmed(importVo.getConfirmed()); @@ -838,7 +848,7 @@ public class PODetailServiceImpl extends ServiceImpl i poDetailVo.setShipQty(importVo.getShipQty()); poDetailVo.setPlanner(importVo.getPlanner()); poDetailVo.setRemark(importVo.getRemark()); - poDetailVo.setStatus("已下达"); + poDetailVo.setStatus("草稿"); poDetailVo.setWantReceiveDate(importVo.getWantReceiveDate()); poDetailVo.setExtValues(importVo.getExtValues()); poDetailVo.setCustomer(customer); @@ -892,7 +902,7 @@ public class PODetailServiceImpl extends ServiceImpl i poHeader.setOrderType(resolveOrderTypeByCustomer(site, customer, vo.getOrderType())); poHeader.setCurrency("USA"); poHeader.setCurrencyRate(1.0); - poHeader.setStatus("已下达"); + poHeader.setStatus("草稿"); poHeader.setOrderDate(vo.getOrderDate()); poHeader.setEnquiry(vo.getEnquiry()); poHeader.setConfirmed(vo.getConfirmed()); @@ -941,7 +951,7 @@ public class PODetailServiceImpl extends ServiceImpl i poDetailVo.setDocSent(vo.getDocSent()); poDetailVo.setTelexRelease(vo.getTelexRelease()); poDetailVo.setAdvancePaid(vo.getAdvancePaid()); - poDetailVo.setStatus(StringUtils.hasText(vo.getStatus()) ? vo.getStatus() : "已下达"); + poDetailVo.setStatus("草稿"); String advancePayment = vo.getAdvancePayment(); if (StringUtils.hasText(advancePayment)) {