生产单excel导入问题修复:1、校验规则修改;2、板材对应条件修改;

This commit is contained in:
gaoqr
2025-02-26 11:39:01 +08:00
parent d3e13a0135
commit c04eb9c98c
2 changed files with 79 additions and 24 deletions
@@ -505,14 +505,14 @@ public final class DefaultOrderImportExcelListener extends AnalysisEventListener
if (StringUtils.equals(vo.getGoodType(), "配件")) {
// 复合部件必填
isNotEmptyAndBack(vo.getIsComposite(), QuarrelEnum.class, "是否复合部件", 1); // 判断传入的值,是否符合字典中的枚举类
// 复合部件
isNotEmptyAndBack(StringUtils.isNotEmpty(vo.getIsComposite()) ? vo.getIsComposite() : "", QuarrelEnum.class, "是否复合部件", 1); // 判断传入的值,是否符合字典中的枚举类
// 配件类型必填
isNotEmptyAndBack(vo.getCategory(), CategoryEnum.class, "配件类型", 32);
// 配件长宽厚,存在判断是否可以转义
isEmptyAndPositiveNumberSize(vo.getGoodsWidth(), Double.class, 5, 3, "配件宽");
isEmptyAndPositiveNumberSize(vo.getGoodsHeight(), Double.class, 5, 3, "配件高");
isEmptyAndPositiveNumberSize(vo.getGoodsThickness(), Double.class, 5, 3, "配件厚");
isEmptyAndNumberSize(vo.getGoodsWidth(), Double.class, 5, 3, "配件宽");
isEmptyAndNumberSize(vo.getGoodsHeight(), Double.class, 5, 3, "配件高");
isEmptyAndNumberSize(vo.getGoodsThickness(), Double.class, 5, 3, "配件厚");
// 配件类型为封边条的时候,需要填写配件宽厚
if (StringUtils.equals(vo.getCategory(), CategoryEnum.EDGING.getValue())) { // 封边条必须有宽高
isNotEmptyAndBack(vo.getGoodsWidth(), "封边条宽");
@@ -568,9 +568,7 @@ public final class DefaultOrderImportExcelListener extends AnalysisEventListener
// 板材纹理
isNotEmptyAndBack(vo.getWave(), IsHavaeEnum.class, "板材纹理", 4);
// 大板的长宽厚存在以及是否符合数个
isNotEmptyAndBack(vo.getGoodsWidth(), "板材长度");
isEmptyAndPositiveNumberSize(vo.getGoodsWidth(), Double.class, 5, 3, "板材长度");
isNotEmptyAndBack(vo.getGoodsHeight(), "板材宽度");
isEmptyAndPositiveNumberSize(vo.getGoodsHeight(), Double.class, 5, 3, "板材宽度");
isNotEmptyAndBack(vo.getGoodsThickness(), "板材厚度");
isEmptyAndPositiveNumberSize(vo.getGoodsThickness(), Double.class, 5, 3, "板材厚度");
@@ -591,13 +589,13 @@ public final class DefaultOrderImportExcelListener extends AnalysisEventListener
isNotEmptyAndBack(vo.getThickness(), "厚度");
isEmptyAndPositiveNumberSize(vo.getThickness(), Double.class, 5, 3, "厚度");
isNotEmptyAndBack(vo.getSealLeft(), "左封边");
isEmptyAndPositiveNumberSize(vo.getSealLeft(), Double.class, 5, 3, "左封边");
isEmptyAndNumberSize(vo.getSealLeft(), Double.class, 2, 2, "左封边");
isNotEmptyAndBack(vo.getSealRight(), "右封边");
isEmptyAndPositiveNumberSize(vo.getSealRight(), Double.class, 5, 3, "右封边");
isEmptyAndNumberSize(vo.getSealRight(), Double.class, 2, 2, "右封边");
isNotEmptyAndBack(vo.getSealUp(), "上封边");
isEmptyAndPositiveNumberSize(vo.getSealUp(), Double.class, 5, 3, "上封边");
isEmptyAndNumberSize(vo.getSealUp(), Double.class, 2, 2, "上封边");
isNotEmptyAndBack(vo.getSealDown(), "下封边");
isEmptyAndPositiveNumberSize(vo.getSealDown(), Double.class, 5, 3, "下封边");
isEmptyAndNumberSize(vo.getSealDown(), Double.class, 2, 2, "下封边");
// 排版面、纹路、开门方向
isNotEmptyAndDict(vo.getTypographicFace(), DictTypeConstants.TYPOGRAPHY_TYPE, "排版面");
isNotEmptyAndDict(vo.getTexture(), DictTypeConstants.GRAIN_TYPE, "纹路");
@@ -661,8 +659,16 @@ public final class DefaultOrderImportExcelListener extends AnalysisEventListener
}
}
// 非零判断,有值判断---判断数值类型,数值长度
private void isEmptyAndPositiveNumberSize(String value, Class<?> targetType, Integer length, Integer decimalLength, String errValue) {
/**
* 检查值大于等于0、数据类型和长度
*
* @param value
* @param targetType
* @param length
* @param decimalLength
* @param errValue
*/
private void isEmptyAndNumberSize(String value, Class<?> targetType, Integer length, Integer decimalLength, String errValue) {
if (StringUtils.isNotEmpty(value)) {
if (Boolean.TRUE.equals(ToolUtil.convertToType(value, targetType))) {
if (Boolean.TRUE.equals(ToolUtil.checkNumber(value))) {
@@ -678,6 +684,31 @@ public final class DefaultOrderImportExcelListener extends AnalysisEventListener
}
}
/**
* 检查值大于0、数据类型和长度
*
* @param value
* @param targetType
* @param length
* @param decimalLength
* @param errValue
*/
private void isEmptyAndPositiveNumberSize(String value, Class<?> targetType, Integer length, Integer decimalLength, String errValue) {
if (StringUtils.isNotEmpty(value)) {
if (Boolean.TRUE.equals(ToolUtil.convertToType(value, targetType))) {
if (Boolean.TRUE.equals(checkPositiveNumber(value))) {
if (!ToolUtil.checkPrecision(value, length, decimalLength)) {
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, errValue + NUMBER_LENGTH_ERR);
}
} else {
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, errValue + "必须大于0");
}
} else {
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, errValue + NUMBER_TYPE_ERR);
}
}
}
// 判断非零,错误返回
private void isNotEmptyAndBack(String value, String errValue) {
if (StringUtils.isEmpty(value)) {
@@ -701,14 +732,39 @@ public final class DefaultOrderImportExcelListener extends AnalysisEventListener
if (Boolean.FALSE.equals(ToolUtil.convertToType(value, targetType))) {
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, errValue + NUMBER_TYPE_ERR);
} else {
if (Boolean.FALSE.equals(checkNumber(value))) {
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, errValue + "数量不能为0");
if (Boolean.FALSE.equals(checkPositiveNumber(value))) {
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, errValue + "数量必须大于0");
}
}
}
}
// 数值正负判断
/**
* 检查是否正数(不包含0)
*
* @param numberStr
* @return
*/
public static Boolean checkPositiveNumber(String numberStr) {
try {
double number = Double.parseDouble(numberStr);
// 进行正负判断
if (number > 0) {
return true;
} else {
return false;
}
} catch (NumberFormatException e) {
return false;
}
}
/**
* 检查是否正数(包含0
*
* @param numberStr
* @return
*/
public static Boolean checkNumber(String numberStr) {
try {
double number = Double.parseDouble(numberStr);
@@ -289,15 +289,10 @@ public class DefaultExcelOrderImportFactory {
orderImportTempDataMapper.update(new LambdaUpdateWrapperX<OrderImportTempDataDO>()
.eq(OrderImportTempDataDO::getTaskId, taskId)
.eq(OrderImportTempDataDO::getType, PLATE_TYPE)
.eqIfPresent(OrderImportTempDataDO::getGoodsName, orderImportTempDataGoodsGroupDO.getGoodsName())
.eqIfPresent(OrderImportTempDataDO::getMaterial, orderImportTempDataGoodsGroupDO.getMaterial())
.eqIfPresent(OrderImportTempDataDO::getWave, orderImportTempDataGoodsGroupDO.getWave())
.eqIfPresent(OrderImportTempDataDO::getColor, orderImportTempDataGoodsGroupDO.getColor())
.eqIfPresent(OrderImportTempDataDO::getSpec, orderImportTempDataGoodsGroupDO.getSpec())
.eqIfPresent(OrderImportTempDataDO::getWidth, orderImportTempDataGoodsGroupDO.getWidth())
.eqIfPresent(OrderImportTempDataDO::getHeight, orderImportTempDataGoodsGroupDO.getHeight())
.eqIfPresent(OrderImportTempDataDO::getThickness, orderImportTempDataGoodsGroupDO.getThickness())
.eqIfPresent(OrderImportTempDataDO::getBrand, orderImportTempDataGoodsGroupDO.getBrand())
.set(OrderImportTempDataDO::getInnerGoodsId, innerGoodsId));
} else {
orderImportTempDataMapper.update(new LambdaUpdateWrapper<OrderImportTempDataDO>()
@@ -1059,9 +1054,13 @@ public class DefaultExcelOrderImportFactory {
plateGoodDO = getPlateGood(goodsDO.getGoodsId());
} else {
// 没有goodsId,大板属性匹配大板
existPlateGoodDOS = plateGoodMapper.selectGood(goodsDO.getGoodsName(), goodsDO.getMaterial(), goodsDO.getColor(),
goodsDO.getTexture(), goodsDO.getWidth(), goodsDO.getThickness(), goodsDO.getHeight(), goodsDO.getBrand(),
goodsDO.getSpec(), organId);
existPlateGoodDOS = plateGoodMapper.selectList(new LambdaQueryWrapper<PlateGoodDO>()
.eq(PlateGoodDO::getTexture, goodsDO.getTexture())
.eq(PlateGoodDO::getWidth, goodsDO.getWidth())
.eq(PlateGoodDO::getHeight, goodsDO.getHeight())
.eq(PlateGoodDO::getSpec, goodsDO.getSpec())
.eq(PlateGoodDO::getDeleted, 0)
.eq(PlateGoodDO::getOrganId, organId));
}
if (CollUtil.isNotEmpty(existPlateGoodDOS)) {