diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldBrandMapper.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldBrandMapper.java index 0795a310f..025b4bdc6 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldBrandMapper.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldBrandMapper.java @@ -22,9 +22,25 @@ import java.util.stream.Collectors; public interface MoldBrandMapper extends BaseMapperX { default LambdaQueryWrapperX buildQueryWrapper(MoldBrandPageReqVO reqVO) { - LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() - .likeIfPresent(MoldBrandDO::getCode, reqVO.getCode()) - .likeIfPresent(MoldBrandDO::getName, reqVO.getName()) + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX<>(); + if(StringUtils.isNotBlank(reqVO.getCode())&&StringUtils.isNotBlank(reqVO.getName())&&reqVO.getCode().equals(reqVO.getName())){ + if(reqVO.getCode().contains("MOLD-")){ + queryWrapper.eq(MoldBrandDO::getId, reqVO.getCode().replace("MOLD-","")); + }else{ + queryWrapper.and(w -> w + .like(MoldBrandDO::getCode, reqVO.getCode()) + .or() + .like(MoldBrandDO::getName, reqVO.getName()) + ); + } + }else{ + queryWrapper.likeIfPresent(MoldBrandDO::getCode, reqVO.getCode()) + .likeIfPresent(MoldBrandDO::getName, reqVO.getName()); + } + + queryWrapper + /* .likeIfPresent(MoldBrandDO::getCode, reqVO.getCode()) + .likeIfPresent(MoldBrandDO::getName, reqVO.getName())*/ .eqIfPresent(MoldBrandDO::getMoldType, reqVO.getMoldType()) .eqIfPresent(MoldBrandDO::getProductId, reqVO.getProductId()) .likeIfPresent(MoldBrandDO::getProductName, reqVO.getProductName()) diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java index b163156fb..30268ff4f 100644 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java +++ b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java @@ -179,6 +179,8 @@ public interface ErrorCodeConstants { ErrorCode PRODUCT_UNIT_NOT_EXISTS = new ErrorCode(1_030_502_000, "产品单位不存在"); ErrorCode PRODUCT_UNIT_NAME_DUPLICATE = new ErrorCode(1_030_502_001, "已存在该名字的产品单位"); ErrorCode PRODUCT_UNIT_EXITS_PRODUCT = new ErrorCode(1_030_502_002, "存在产品使用该单位,无法删除"); + ErrorCode PRODUCT_UNIT_CONVERT_SELF_NOT_ALLOWED = new ErrorCode(1_030_502_003, "不能设置自己的单位换算自己的单位"); + ErrorCode PRODUCT_PURCHASE_UNIT_CONVERT_QUANTITY_INVALID = new ErrorCode(1_030_502_004, "采购单位换算数量必须大于0"); // ========== ERP 结算账户 1-030-600-000 ========== ErrorCode ACCOUNT_NOT_EXISTS = new ErrorCode(1_030_600_000, "结算账户不存在"); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java index 3bcec06f1..7b0931318 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java @@ -124,6 +124,8 @@ public class ErpProductController { .setName(product.getName()).setBarCode(product.getBarCode()) .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) + .setPurchaseUnitId(product.getPurchaseUnitId()).setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()) .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()) .setMinPrice(product.getMinPrice()).setImages(product.getImages()))); } @@ -138,6 +140,8 @@ public class ErpProductController { .setName(product.getName()).setBarCode(product.getBarCode()) .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) + .setPurchaseUnitId(product.getPurchaseUnitId()).setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()) .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()) .setMinPrice(product.getMinPrice()).setImages(product.getImages()))); } @@ -149,6 +153,8 @@ public class ErpProductController { .setName(product.getName()).setBarCode(product.getBarCode()) .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) + .setPurchaseUnitId(product.getPurchaseUnitId()).setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()) .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()) .setMinPrice(product.getMinPrice()).setImages(product.getImages()))); } @@ -172,6 +178,8 @@ public class ErpProductController { .setName(product.getName()).setBarCode(product.getBarCode()) .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) + .setPurchaseUnitId(product.getPurchaseUnitId()).setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()) .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()) .setMinPrice(product.getMinPrice()).setImages(product.getImages()))); } @@ -183,6 +191,8 @@ public class ErpProductController { .setName(product.getName()).setBarCode(product.getBarCode()) .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) + .setPurchaseUnitId(product.getPurchaseUnitId()).setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()) .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()) .setMinPrice(product.getMinPrice()).setImages(product.getImages()))); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductImportExcelVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductImportExcelVO.java index 7aa223bca..4790acaef 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductImportExcelVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductImportExcelVO.java @@ -62,7 +62,16 @@ public class ErpProductImportExcelVO { @ExcelIgnore private Long unitId; // 单位ID + @ExcelIgnore + private Long purchaseUnitId; // 采购单位ID + + @ExcelIgnore + private String purchaseUnitName; // 采购单位名称 + + @ExcelIgnore + private BigDecimal purchaseUnitConvertQuantity; // 采购单位换算数量 + @ExcelIgnore private LocalDateTime createTime; -} \ No newline at end of file +} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java index f8a2f54a2..62f70cf71 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java @@ -53,6 +53,18 @@ public class ErpProductRespVO extends ErpProductDO { @ExcelProperty("单位") private String unitName; + @Schema(description = "采购单位编号", example = "8890") + @ExcelProperty("采购单位编号") + private Long purchaseUnitId; + + @Schema(description = "采购单位", example = "包") + @ExcelProperty("采购单位") + private String purchaseUnitName; + + @Schema(description = "采购单位换算数量", example = "100") + @ExcelProperty("采购单位换算数量") + private BigDecimal purchaseUnitConvertQuantity; + @Schema(description = "产品状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("产品状态") private Integer status; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java index 38806f10a..bad98d8a6 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java @@ -36,6 +36,15 @@ public class ProductSaveReqVO { @NotNull(message = "单位编号不能为空") private Long unitId; + @Schema(description = "采购单位编号", example = "8890") + private Long purchaseUnitId; + + @Schema(description = "采购单位名称", example = "包") + private String purchaseUnitName; + + @Schema(description = "采购单位换算数量", example = "100") + private BigDecimal purchaseUnitConvertQuantity; + @Schema(description = "产品状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotNull(message = "产品状态不能为空") private Integer status; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java index 7e29b3df3..b375b7bf7 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java @@ -65,6 +65,23 @@ public class ErpProductDO extends BaseDO { * 关联 {@link ErpProductUnitDO#getId()} */ private Long unitId; + + /** + * 采购单位编号 + * + * 关联 {@link ErpProductUnitDO#getId()} + */ + private Long purchaseUnitId; + + /** + * 采购单位名称 + */ + private String purchaseUnitName; + + /** + * 采购单位与基础单位换算数量 + */ + private BigDecimal purchaseUnitConvertQuantity; /** * 产品状态 * diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java index 461432eb1..0edda1a7c 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java @@ -101,6 +101,10 @@ public interface ErpProductMapper extends BaseMapperX { return selectCount(ErpProductDO::getUnitId, unitId); } + default Long selectCountByPurchaseUnitId(Long purchaseUnitId) { + return selectCount(ErpProductDO::getPurchaseUnitId, purchaseUnitId); + } + default List selectListByStatus(Integer status) { return selectList(ErpProductDO::getStatus, status); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/productpackagingschemerel/ProductPackagingSchemeRelMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/productpackagingschemerel/ProductPackagingSchemeRelMapper.java index 89ef5ad68..6368ccd84 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/productpackagingschemerel/ProductPackagingSchemeRelMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/productpackagingschemerel/ProductPackagingSchemeRelMapper.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.erp.dal.dataobject.productpackagingschemerel.ProductPackagingSchemeRelDO; import org.apache.ibatis.annotations.Mapper; +import java.util.Collection; import java.util.List; @Mapper @@ -13,4 +14,8 @@ public interface ProductPackagingSchemeRelMapper extends BaseMapperX selectListByProductIds(Collection productIds) { + return selectList(ProductPackagingSchemeRelDO::getProductId, productIds); + } + } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java index 4c7f2a239..365d8f270 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java @@ -118,6 +118,8 @@ public interface ErpProductService { * @return 产品数量 */ Long getProductCountByUnitId(Long unitId); + + Long getProductCountByPurchaseUnitId(Long purchaseUnitId); /** * 获得产品列表 * diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java index 65186b3f9..b635ce4b0 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java @@ -50,6 +50,7 @@ import javax.annotation.Resource; import javax.validation.ConstraintViolationException; import javax.validation.Valid; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -125,8 +126,11 @@ public class ErpProductServiceImpl implements ErpProductService { String code = createReqVO.getBarCode(); boolean autoGeneratedCode = StringUtils.isBlank(code); + validateProductUnitRelation(createReqVO.getUnitId(), createReqVO.getPurchaseUnitId(), createReqVO.getPurchaseUnitConvertQuantity()); + ErpProductDO product = BeanUtils.toBean(createReqVO, ErpProductDO.class); + fillProductUnitName(product); if (productMapper.selectProductExist(product)) { throw exception(PRODUCT_NAME_AND_STANDARD_EXISTS); @@ -236,8 +240,10 @@ public class ErpProductServiceImpl implements ErpProductService { // TODO 芋艿:校验分类 // 校验存在 validateProductExists(updateReqVO.getId()); + validateProductUnitRelation(updateReqVO.getUnitId(), updateReqVO.getPurchaseUnitId(), updateReqVO.getPurchaseUnitConvertQuantity()); // 更新 ErpProductDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductDO.class); + fillProductUnitName(updateObj); ErpProductCategoryDO productCategory = productCategoryMapper.selectById(updateObj.getCategoryId()); Long id = productCategory.getParentId(); updateObj.setSubCategoryName(productCategory.getName()); @@ -345,6 +351,36 @@ public class ErpProductServiceImpl implements ErpProductService { } } + private void validateProductUnitRelation(Long unitId, Long purchaseUnitId, BigDecimal purchaseUnitConvertQuantity) { + if (unitId == null || productUnitService.getProductUnit(unitId) == null) { + throw exception(PRODUCT_UNIT_NOT_EXISTS); + } + if (purchaseUnitId == null) { + return; + } + if (productUnitService.getProductUnit(purchaseUnitId) == null) { + throw exception(PRODUCT_UNIT_NOT_EXISTS); + } + if (unitId.equals(purchaseUnitId)) { + throw exception(PRODUCT_UNIT_CONVERT_SELF_NOT_ALLOWED); + } + if (purchaseUnitConvertQuantity == null || purchaseUnitConvertQuantity.compareTo(BigDecimal.ZERO) <= 0) { + throw exception(PRODUCT_PURCHASE_UNIT_CONVERT_QUANTITY_INVALID); + } + } + + private void fillProductUnitName(ErpProductDO product) { + if (product.getPurchaseUnitId() == null) { + product.setPurchaseUnitName(null); + return; + } + ErpProductUnitDO purchaseUnit = productUnitService.getProductUnit(product.getPurchaseUnitId()); + if (purchaseUnit == null) { + throw exception(PRODUCT_UNIT_NOT_EXISTS); + } + product.setPurchaseUnitName(purchaseUnit.getName()); + } + @Override public ErpProductRespVO getProduct(Long id) { ErpProductDO product = productMapper.selectById(id); @@ -372,6 +408,12 @@ public class ErpProductServiceImpl implements ErpProductService { if (erpProductCategoryDO !=null ){ respVO.setCategoryType(erpProductCategoryDO.getType()); } + if (respVO.getPurchaseUnitId() != null && respVO.getPurchaseUnitName() == null) { + ErpProductUnitDO purchaseUnit = productUnitService.getProductUnit(respVO.getPurchaseUnitId()); + if (purchaseUnit != null) { + respVO.setPurchaseUnitName(purchaseUnit.getName()); + } + } // // respVO.setDeviceIds(respVO.getDevices().stream() // .map(ProductRelationRespVO::getId) @@ -522,12 +564,19 @@ public class ErpProductServiceImpl implements ErpProductService { if (CollUtil.isEmpty(list)) { return Collections.emptyList(); } + Map> packagingSchemeMap = convertMap( + productPackagingSchemeRelMapper.selectListByProductIds(convertSet(list, ErpProductDO::getId)), + ProductPackagingSchemeRelDO::getProductId, + rel -> BeanUtils.toBean(rel, ProductPackagingSchemeRespVO.class), + Collectors.toList()); Map categoryMap = productCategoryService.getProductCategoryMap( convertSet(list, ErpProductDO::getCategoryId)); Map subCategoryMap = productCategoryService.getProductCategoryMap( convertSet(list, ErpProductDO::getSubCategoryId)); Map unitMap = productUnitService.getProductUnitMap( convertSet(list, ErpProductDO::getUnitId)); + Map purchaseUnitMap = productUnitService.getProductUnitMap( + convertSet(list, ErpProductDO::getPurchaseUnitId)); return BeanUtils.toBean(list, ErpProductRespVO.class, product -> { MapUtils.findAndThen(categoryMap, product.getCategoryId(), category -> { product.setCategoryName(category.getName()); @@ -541,6 +590,9 @@ public class ErpProductServiceImpl implements ErpProductService { }); MapUtils.findAndThen(unitMap, product.getUnitId(), unit -> product.setUnitName(unit.getName())); + MapUtils.findAndThen(purchaseUnitMap, product.getPurchaseUnitId(), + unit -> product.setPurchaseUnitName(unit.getName())); + product.setPackagingSchemes(packagingSchemeMap.getOrDefault(product.getId(), Collections.emptyList())); if (Boolean.TRUE.equals(product.getDeleted())) { product.setName(product.getName() + "(已被删除)"); } @@ -556,6 +608,12 @@ public class ErpProductServiceImpl implements ErpProductService { public Long getProductCountByUnitId(Long unitId) { return productMapper.selectCountByUnitId(unitId); } + + @Override + public Long getProductCountByPurchaseUnitId(Long purchaseUnitId) { + return productMapper.selectCountByPurchaseUnitId(purchaseUnitId); + } + @Override public List getProductList(Collection ids) { return productMapper.selectBatchIds(ids); @@ -705,6 +763,16 @@ public class ErpProductServiceImpl implements ErpProductService { } } + if (StrUtil.isNotBlank(importProduct.getPurchaseUnitName())) { + ErpProductUnitDO purchaseUnitDO = productUnitService.getProductUnitByName(importProduct.getPurchaseUnitName()); + if (purchaseUnitDO != null) { + productDO.setPurchaseUnitId(purchaseUnitDO.getId()); + productDO.setPurchaseUnitName(purchaseUnitDO.getName()); + } + } + + validateProductUnitRelation(productDO.getUnitId(), productDO.getPurchaseUnitId(), productDO.getPurchaseUnitConvertQuantity()); + return productDO; } } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java index 48305c285..01dbcbc62 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java @@ -67,6 +67,7 @@ public class ErpProductUnitServiceImpl implements ErpProductUnitService { } // 1.1 校验存在 validateProductUnitExists(updateReqVO.getId()); + validatePrimaryUnitNotSelf(updateReqVO.getId(), updateReqVO.getPrimaryId()); // 1.2 校验名字唯一 validateProductUnitNameUnique(updateReqVO.getId(), updateReqVO.getName()); // 2. 更新 @@ -98,7 +99,7 @@ public class ErpProductUnitServiceImpl implements ErpProductUnitService { // 1.1 校验存在 validateProductUnitExists(id); // 1.2 校验产品是否使用 - if (productService.getProductCountByUnitId(id) > 0) { + if (productService.getProductCountByUnitId(id) > 0 || productService.getProductCountByPurchaseUnitId(id) > 0) { throw exception(PRODUCT_UNIT_EXITS_PRODUCT); } // 2. 删除 @@ -111,6 +112,12 @@ public class ErpProductUnitServiceImpl implements ErpProductUnitService { } } + private void validatePrimaryUnitNotSelf(Long id, Long primaryId) { + if (primaryId != null && primaryId.equals(id)) { + throw exception(PRODUCT_UNIT_CONVERT_SELF_NOT_ALLOWED); + } + } + @Override public ErpProductUnitDO getProductUnit(Long id) { return productUnitMapper.selectById(id); @@ -181,4 +188,4 @@ public class ErpProductUnitServiceImpl implements ErpProductUnitService { }); CollUtil.isNotEmpty(erpProductUnitDOs);productUnitMapper.insertBatch(erpProductUnitDOs); } -} \ No newline at end of file +} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml index 284e682ce..d979a82f3 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml @@ -10,6 +10,7 @@ -->