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