From 601b81b140ded3e86ec9da2aa495ae4a929a9ce3 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 10 Apr 2026 11:14:49 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20=20=20TMS=E7=B3=BB=E7=BB=9F=20-?= =?UTF-8?q?=20=E8=BF=90=E5=8D=95=E7=AE=A1=E7=90=86=20-=20=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E7=AD=BE=E6=94=B6=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=20-=20=E7=95=8C=E9=9D=A2=E8=B0=83=E6=95=B4=20=20=20TMS?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=20-=20=E8=BF=90=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20-=20=E8=BF=90=E5=8D=95=E6=89=B9=E9=87=8F=E5=BD=95=E5=85=A5?= =?UTF-8?q?=20-=20=E7=BC=85=E7=94=B8=E8=99=9A=E6=8B=9F=E5=8D=95=20?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=20=20TMS/APP=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=20-=20=E6=8E=A5=E5=8D=95/=E8=BF=90=E5=8D=95=E5=BD=95?= =?UTF-8?q?=E5=85=A5/=E8=BF=90=E5=8D=95=E4=BF=AE=E6=94=B9=20/=20=E7=BD=91?= =?UTF-8?q?=E7=82=B9=E8=B4=B9=E7=94=A8=E7=94=B3=E8=AF=B7/=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=BD=95=E5=85=A5=20-=20=E6=94=AF=E4=BB=98=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=9A=E5=88=B0=E4=BB=98/=E7=8E=B0=E9=87=91/?= =?UTF-8?q?=E5=85=B6=E4=BB=96=20=E5=88=A4=E6=96=AD=E5=9B=9E=E6=AC=BE?= =?UTF-8?q?=E8=81=94=E7=B3=BB=E4=BA=BA/=E9=94=80=E5=94=AE=E8=81=94?= =?UTF-8?q?=E7=B3=BB=E4=BA=BA/=E9=94=80=E5=94=AE=E6=94=AF=E6=8C=81=20?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xdadan/erp/emis/domain/EmisWaybill.java | 5 ++ .../erp/emis/domain/vo/WaybillOrder.java | 4 +- .../service/impl/EmisWaybillServiceImpl.java | 68 +++++++++++++++++++ .../resources/mapper/EmisWaybillMapper.xml | 13 +++- 4 files changed, 88 insertions(+), 2 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java index ba59fe02b..9a6b03592 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java @@ -57,6 +57,11 @@ public class EmisWaybill extends BaseEntity { private String billCodeSub; /* 订单状态 字典 */ private String orderStatus; + /** + * 正式运单标识 + */ + @TableField(exist = false) + private String blFormalWaybill; /* 组批次状态 */ private String siteBatchStatus; /* 运单状态 字典 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java index 1bae0f435..7937d70c6 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java @@ -6,7 +6,6 @@ import com.xdadan.erp.common.annotation.audit.DataAuditField; import com.xdadan.erp.emis.domain.*; import lombok.Data; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.io.Serializable; import java.math.BigDecimal; @@ -48,6 +47,8 @@ public class WaybillOrder implements Serializable { /* 运单状态 字典 */ private String waybillStatus; + private String blFormalWaybill; + /* 运单号 */ @Size(min = 0, max = 20, message = "运单号长度不能超过20个字符") private String billCode; @@ -519,6 +520,7 @@ public class WaybillOrder implements Serializable { voItem.setOrderStatus(dbWaybill.getOrderStatus()); voItem.setWaybillStatus(dbWaybill.getWaybillStatus()); + voItem.setBlFormalWaybill(dbWaybill.getBlFormalWaybill()); // voItem.setOrderType(dbWaybill.getOrderType()); voItem.setOrderDate(dbWaybill.getOrderDate()); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 8cc350ece..1dc55e448 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -586,6 +586,11 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setBillCode(waybillNo); } + if(StringUtils.isNotBlank(emisWaybillSave.getMasterBillCode())){ + if(!"1".equals(emisWaybillSave.getBlVirtual())){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "是否虚拟单信息填写错误"); + } + } // 开始下单 addNewWaybill(emisWaybillSave); @@ -1257,6 +1262,64 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb return users; } + private void validatePayeeSalesmenSalesSupport(EmisWaybill wb) throws EmisBizError { + if (wb == null) { + return; + } + String payee = wb.getPayee(); + if (StringUtils.isNotBlank(payee)) { + String payeeName = payee.trim(); + SysUser payeeUser = getEmisStaffByEmpName(payeeName); + if (payeeUser == null) { + throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "回款联系人" + payeeName + "不存在"); + } + if (!"1".equals(payeeUser.getBlPayeeRemark())) { + throw new EmisBizError(EmisBizErrorType.FAIL, "回款联系人" + payeeName + "无回款权限"); + } + if (!"1".equals(payeeUser.getBlOpen())) { + throw new EmisBizError(EmisBizErrorType.FAIL, "回款联系人" + payeeName + "未启用"); + } + } + String salesmen = wb.getSalesmen(); + if (StringUtils.isNotBlank(salesmen)) { + String salesmenName = salesmen.trim(); + SysUser salesUser = getEmisStaffByEmpName(salesmenName); + if (salesUser == null) { + throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "销售联系人" + salesmenName + "不存在"); + } + if (!"1".equals(salesUser.getBlPayeeRemark())) { + throw new EmisBizError(EmisBizErrorType.FAIL, "销售联系人" + salesmenName + "无回款权限"); + } + if (!"1".equals(salesUser.getBlOpen())) { + throw new EmisBizError(EmisBizErrorType.FAIL, "销售联系人" + salesmenName + "未启用"); + } + } + String salesSupportRaw = null; + if (wb.getWaybillOther() != null) { + salesSupportRaw = wb.getWaybillOther().getSalesSupport(); + } + if (StringUtils.isBlank(salesSupportRaw)) { + salesSupportRaw = wb.getSalesSupport(); + } + String salesSupportToCheck = StringUtils.trimToEmpty(salesSupportRaw); + if (StringUtils.isNotBlank(salesSupportToCheck)) { + String[] supports = salesSupportToCheck.split("[,,]"); + for (String support : supports) { + if (StringUtils.isBlank(support)) { + continue; + } + String supportName = support.trim(); + SysUser supportUser = getEmisStaffByEmpName(supportName); + if (supportUser == null) { + throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "销售支持" + supportName + "不存在"); + } + if (!"1".equals(supportUser.getBlOpen())) { + throw new EmisBizError(EmisBizErrorType.FAIL, "销售支持" + supportName + "未启用"); + } + } + } + } + private void cvtWaybillDraftToRealByOms(EmisWaybill emisWaybillSave) throws EmisBizError { @@ -1816,6 +1879,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb throw new EmisBizError(EmisBizErrorType.FAIL,"非当前网点运单,请先指派到当前网点!"); } + validatePayeeSalesmenSalesSupport(emisWaybillSave); + // 子单号做扣减 if ("1".equals(emisWaybillSave.getBlGenSubbill())) { @@ -3348,6 +3413,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 公共计算部分 calcWayBillCommonInfo(emisWaybillSave,null,true); + validatePayeeSalesmenSalesSupport(emisWaybillSave); // 图片标识 String goodsPicsStr=emisWaybillSave.getGoodsPics(); @@ -3880,6 +3946,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 校验产品类型与线路是否匹配 checkLineWithProd(emisWaybillSave); + validatePayeeSalesmenSalesSupport(emisWaybillSave); + calcWayBillCommonInfo(emisWaybillSave,oldEmisWaybill,false); emisWaybillSave.preUpdate(); diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml index b6ba208cb..bda3ccd56 100644 --- a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml @@ -11,6 +11,7 @@ + @@ -499,7 +500,17 @@ z.type_name as problem_type_name, start.site_name as start_site_name, - k.trans_type as trans_type + k.trans_type as trans_type, + CASE + WHEN a.order_status = '1' + AND NOT EXISTS ( + SELECT 1 FROM emis_waybill_problem_info ewpi + WHERE ewpi.bill_code = a.bill_code + AND ewpi.del_flag = '0' + AND ewpi.problem_type IN (151, 170, 173) + ) + THEN '1' ELSE '0' + END AS bl_formal_waybill from emis_waybill a