|
@ -298,10 +298,28 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService |
|
|
*/ |
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public int insertSysSalesOrder(SysSalesOrder sysSalesOrder){ |
|
|
public int insertSysSalesOrder(SysSalesOrder sysSalesOrder){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<SysSalesOrderChild> sysSalesOrderChildList = sysSalesOrder.getSysSalesOrderChildList(); |
|
|
|
|
|
|
|
|
|
|
|
// 校验子表数据
|
|
|
|
|
|
checkSysSalesOrderChildList(sysSalesOrder,sysSalesOrderChildList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//数量合计
|
|
|
|
|
|
int sumMaterialNum = sysSalesOrderChildList.stream().mapToInt(SysSalesOrderChild::getMaterialNum).sum(); |
|
|
|
|
|
//物料合计
|
|
|
|
|
|
int size = sysSalesOrderChildList.size(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
sysSalesOrder.setCreateBy(loginName); |
|
|
sysSalesOrder.setCreateBy(loginName); |
|
|
sysSalesOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
sysSalesOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
sysSalesOrder.setSalesOrderCode(getId()); |
|
|
sysSalesOrder.setSalesOrderCode(getId()); |
|
|
|
|
|
sysSalesOrder.setMaterialSum(sumMaterialNum); |
|
|
|
|
|
sysSalesOrder.setEnterpriseSum(size); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String commonCurrency = sysSalesOrder.getCommonCurrency(); |
|
|
String commonCurrency = sysSalesOrder.getCommonCurrency(); |
|
|
if(RMB.equals(commonCurrency)){ |
|
|
if(RMB.equals(commonCurrency)){ |
|
|
sysSalesOrder.setConfirmTax("1"); |
|
|
sysSalesOrder.setConfirmTax("1"); |
|
@ -315,10 +333,7 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService |
|
|
if (s == 0){ |
|
|
if (s == 0){ |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
List<SysSalesOrderChild> sysSalesOrderChildList = sysSalesOrder.getSysSalesOrderChildList(); |
|
|
|
|
|
|
|
|
|
|
|
// 校验子表数据
|
|
|
|
|
|
checkSysSalesOrderChildList(sysSalesOrderChildList); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < s ;i++) { |
|
|
for (int i = 0; i < s ;i++) { |
|
|
SysSalesOrderChild sysSalesOrderChild = sysSalesOrder.getSysSalesOrderChildList().get(i); |
|
|
SysSalesOrderChild sysSalesOrderChild = sysSalesOrder.getSysSalesOrderChildList().get(i); |
|
@ -331,7 +346,24 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//自定义校验
|
|
|
//自定义校验
|
|
|
private void checkSysSalesOrderChildList(List<SysSalesOrderChild> sysSalesOrderChildList) { |
|
|
private void checkSysSalesOrderChildList(SysSalesOrder sysSalesOrder,List<SysSalesOrderChild> sysSalesOrderChildList) { |
|
|
|
|
|
String commonCurrency = sysSalesOrder.getCommonCurrency(); |
|
|
|
|
|
if (RMB.equals(commonCurrency)) { |
|
|
|
|
|
// 检查物料不含税单价RMB是否为空
|
|
|
|
|
|
boolean anyMaterialNoRmb = sysSalesOrderChildList.stream() |
|
|
|
|
|
.anyMatch(sysSalesOrderChild -> sysSalesOrderChild.getMaterialNoRmb() == null); |
|
|
|
|
|
if (anyMaterialNoRmb) { |
|
|
|
|
|
throw new BusinessException("物料不含税单价RMB不能为空"); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
// 检查物料不含税单价美元是否为空
|
|
|
|
|
|
boolean anyMaterialNoUsd = sysSalesOrderChildList.stream() |
|
|
|
|
|
.anyMatch(sysSalesOrderChild -> sysSalesOrderChild.getMaterialNoUsd() == null); |
|
|
|
|
|
if (anyMaterialNoUsd) { |
|
|
|
|
|
throw new BusinessException("物料不含税单价美元不能为空"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
// 检查物料数量是否为空
|
|
|
// 检查物料数量是否为空
|
|
|
boolean anyMaterialNum = sysSalesOrderChildList.stream() |
|
|
boolean anyMaterialNum = sysSalesOrderChildList.stream() |
|
|
.anyMatch(sysSalesOrderChild -> sysSalesOrderChild.getMaterialNum() == null); |
|
|
.anyMatch(sysSalesOrderChild -> sysSalesOrderChild.getMaterialNum() == null); |
|
@ -575,6 +607,7 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService |
|
|
if (hasApplyShippingNum == null) { |
|
|
if (hasApplyShippingNum == null) { |
|
|
hasApplyShippingNum = 0; // 确保 hasApplyShippingNum 不为 null
|
|
|
hasApplyShippingNum = 0; // 确保 hasApplyShippingNum 不为 null
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (hasApplyShippingNum+oldChild.getApplyShippingNum() > oldChild.getMaterialNum()){ |
|
|
if (hasApplyShippingNum+oldChild.getApplyShippingNum() > oldChild.getMaterialNum()){ |
|
|
throw new BusinessException("申请出货数与已申请出货数之和不能大于订单数量"); |
|
|
throw new BusinessException("申请出货数与已申请出货数之和不能大于订单数量"); |
|
|
} |
|
|
} |
|
|