|
@@ -292,19 +292,26 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
|
|
|
public void add(ProductInfoDto productInfoDto) {
|
|
|
// 赋值产品编号
|
|
|
productInfoDto.setCode(CodeEnum.PRODUCT.getCode());
|
|
|
- // 排除名称重复
|
|
|
- this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), "产品名称重复");
|
|
|
+ //检查【产品名称】和【规格型号】不能同时重复,但可以单项重复。
|
|
|
+ long nameAndSpecCount = this.count(q -> q
|
|
|
+ .eq(ProductInfo::getName, productInfoDto.getName())
|
|
|
+ .eq(ProductInfo::getSpec, productInfoDto.getSpec())
|
|
|
+ );
|
|
|
+ if (nameAndSpecCount != 0) {
|
|
|
+ throw new ServiceException("同名称同规格的产品已存在");
|
|
|
+ }
|
|
|
// 排除不为空的自定义编码重复
|
|
|
- long count = this.count(q -> q.eq(ProductInfo::getCustomCode, productInfoDto.getCustomCode()).ne(ProductInfo::getCustomCode,""));
|
|
|
+ long count = this.count(q -> q.eq(ProductInfo::getCustomCode, productInfoDto.getCustomCode()).ne(ProductInfo::getCustomCode, ""));
|
|
|
if (count != 0) {
|
|
|
throw new ServiceException("产品自定义编码重复");
|
|
|
}
|
|
|
// 排除不为空的条码编号重复
|
|
|
- long count1 = this.count(q -> q.eq(ProductInfo::getBarCode, productInfoDto.getBarCode()).ne(ProductInfo::getBarCode,""));
|
|
|
+ long count1 = this.count(q -> q.eq(ProductInfo::getBarCode, productInfoDto.getBarCode()).ne(ProductInfo::getBarCode, ""));
|
|
|
if (count1 != 0) {
|
|
|
throw new ServiceException("产品条码编码重复");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
this.save(productInfoDto);
|
|
|
ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId());
|
|
|
}
|
|
@@ -457,8 +464,15 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
|
|
|
public void edit(ProductInfoDto productInfoDto) {
|
|
|
// 禁止产品编号修改
|
|
|
productInfoDto.setCode(null);
|
|
|
- // 排除名称重复
|
|
|
- this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), productInfoDto.getId(), "产品名称重复");
|
|
|
+ //检查【产品名称】和【规格型号】不能同时重复,但可以单项重复。
|
|
|
+ long nameAndSpecCount = this.count(q -> q
|
|
|
+ .ne(ProductInfo::getId, productInfoDto.getId())
|
|
|
+ .eq(ProductInfo::getName, productInfoDto.getName())
|
|
|
+ .eq(ProductInfo::getSpec, productInfoDto.getSpec())
|
|
|
+ );
|
|
|
+ if (nameAndSpecCount != 0) {
|
|
|
+ throw new ServiceException("同名称同规格的产品已存在");
|
|
|
+ }
|
|
|
// 排除不为空的自定义编码重复
|
|
|
long count = this.count(q -> q
|
|
|
.ne(ProductInfo::getId, productInfoDto.getId())
|