From 0fa0eae43cac42694ae0f0bdfe55746aa51dc0a3 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Wed, 16 Sep 2026 23:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=20=E8=BF=90=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WaybillServiceImpl.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/WaybillServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/WaybillServiceImpl.java index 208d411..14e3c3b 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/WaybillServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/WaybillServiceImpl.java @@ -477,9 +477,11 @@ public class WaybillServiceImpl extends BaseServiceImpl waybill.setLoadingNo(null); waybill.setMasterNo(null); waybill.setMileageRemark(null); - // 新建(含复制后提交)不沿用源单据状态,与纯新增一致 - waybill.setBusinessStatus(null); } + // 新建若已带业务状态(如复制提交)则在过程校正后回写,保证与原运单一致 + String preservedBusinessStatus = created + ? TransportBusinessSupport.trimToNull(waybill.getBusinessStatus()) + : null; // 无过程快照时按项目回填;再按接单设置决定 pending / running fillProjectProcessConfig(waybill); prepare(waybill); @@ -489,6 +491,9 @@ public class WaybillServiceImpl extends BaseServiceImpl clearDriverAcceptRecord(waybill); } applyDriverAcceptBusinessStatus(waybill); + if (Func.isNotEmpty(preservedBusinessStatus)) { + waybill.setBusinessStatus(preservedBusinessStatus); + } fillCustomerName(waybill); if (created && Func.isEmpty(waybill.getWaybillNo())) { waybill.setWaybillNo(nextCode()); @@ -738,13 +743,17 @@ public class WaybillServiceImpl extends BaseServiceImpl target.setFreightJson(source.getFreightJson()); target.setAttachmentsJson(source.getAttachmentsJson()); target.setRemark(source.getRemark()); - // 复制后状态与新增一致:先置空,再按过程配置校正为 pending/running - target.setBusinessStatus(null); + // 复制后业务状态与原运单保持一致 + String sourceBusinessStatus = source.getBusinessStatus(); + target.setBusinessStatus(sourceBusinessStatus); target.setWaybillNo(nextCode()); clearDriverAcceptRecord(target); fillProjectProcessConfig(target); prepare(target); applyDriverAcceptBusinessStatus(target); + if (Func.isNotEmpty(sourceBusinessStatus)) { + target.setBusinessStatus(sourceBusinessStatus); + } validate(target); save(target); return detail(target.getId());