Browse Source

非数字提示具体错误

ecss-tx
han\hanst 3 weeks ago
parent
commit
0c629414a8
  1. 21
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java

21
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java

@ -1659,23 +1659,24 @@ public class CoDelExcelServiceImpl implements CoDelExcelService {
boxListData.setItemNo(seqNo+"");
// 箱数取第一条记录的箱数同一箱内所有明细的箱数都相同
BigDecimal boxQty = entry.getValue().get(0).getBoxQty();
BigDecimal boxQty = entry.getValue().getFirst().getBoxQty();
requireValidBoxNumeric(boxQty, "箱数", seqNo);
boxListData.setBoxQty(boxQty);
// 毛重如果是合箱则毛重已经在合并单元格中直接取第一条记录的毛重
// 如果不是合箱每行有各自的毛重不需要汇总因为一行就是一个箱子
BigDecimal grossWeight = entry.getValue().get(0).getGrossWeight();
BigDecimal grossWeight = entry.getValue().getFirst().getGrossWeight();
requireValidBoxNumeric(grossWeight, "毛重", seqNo);
boxListData.setGrossWeight(grossWeight.setScale(2, RoundingMode.HALF_UP));
// 卷数如果是合箱则毛重已经在合并单元格中直接取第一条记录的卷数
// 如果不是合箱每行有各自的卷数不需要汇总因为一行就是一个箱子
BigDecimal totalRolls = entry.getValue().get(0).getRolls();
BigDecimal totalRolls = entry.getValue().getFirst().getRolls();
requireValidBoxNumeric(totalRolls, "卷数", seqNo);
boxListData.setRolls(totalRolls);
// 净重计算净重 = 毛重 - 箱数/2
BigDecimal netWeight = BigDecimal.ZERO;
if (boxQty != null) {
netWeight = grossWeight.subtract(boxQty.divide(new BigDecimal("2"), 2, RoundingMode.HALF_UP));
}
boxListData.setNetWeight(netWeight.setScale(2, RoundingMode.HALF_UP));
boxListData.setCreateBy(currentUser.getUsername());
@ -1721,6 +1722,16 @@ public class CoDelExcelServiceImpl implements CoDelExcelService {
coDelMapper.updateEcssDelDetailForModify(inData);
}
/**
* 装箱导入校验箱数毛重卷数必须为有效数字类型非空且为 BigDecimal 数值
*/
private void requireValidBoxNumeric(BigDecimal value, String fieldLabel, int boxSeqNo) {
if (value == null) {
throw new RuntimeException("导入失败:第" + boxSeqNo + "行「" + fieldLabel
+ "」不能为空或不是有效数字,请检查 Excel 中对应列是否为数字格式(勿使用文本、布尔等非数字类型)。");
}
}
/**
* 验证导入数据的序号和数量是否与发货通知单明细匹配
* 规则导入数据中同一个序号的数量总和必须等于发货通知单明细中该序号的数量

Loading…
Cancel
Save