feat: bug-1278 机型参数名称在同一个父级下不允许重复

This commit is contained in:
曹鹏飞 2026-01-27 11:31:11 +08:00
parent 9ea1e02e60
commit 3c148bca39
1 changed files with 41 additions and 1 deletions

View File

@ -275,6 +275,14 @@ public class ProductModelController extends ControllerBase {
*/ */
@PostMapping("/addParamsIndexName") @PostMapping("/addParamsIndexName")
public ApiResult<Integer> addParamsIndexName(@Valid @RequestBody ProductModelParamsNameAddRequest request) { public ApiResult<Integer> addParamsIndexName(@Valid @RequestBody ProductModelParamsNameAddRequest request) {
VUtils.trueThrowBusinessError(Objects.nonNull(request.getModelParamsId())
&& StrUtil.equals(request.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)
&& productModelParamsItemService.lambdaQuery()
.eq(ProductModelParamsItem::getModelParamsId, request.getModelParamsId())
.eq(ProductModelParamsItem::getLanguageCode, Constant.DEFAULT_LANGUAGE_CODE)
.eq(ProductModelParamsItem::getIndexName, request.getIndexName())
.exists()
).throwMessage("指标名称已存在");
if (Objects.isNull(request.getModelParamsId())) { if (Objects.isNull(request.getModelParamsId())) {
request.setModelParamsId(productModelParamsService.add(request.getModelId(), IdUtil.getSnowflakeNextIdStr())); request.setModelParamsId(productModelParamsService.add(request.getModelId(), IdUtil.getSnowflakeNextIdStr()));
} }
@ -292,6 +300,13 @@ public class ProductModelController extends ControllerBase {
VUtils.trueThrowBusinessError(Objects.isNull(request.getModelParamsId())).throwMessage("机型参数id不能为空"); VUtils.trueThrowBusinessError(Objects.isNull(request.getModelParamsId())).throwMessage("机型参数id不能为空");
ProductModelParams info = productModelParamsService.getById(request.getModelParamsId()); ProductModelParams info = productModelParamsService.getById(request.getModelParamsId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据"); VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
VUtils.trueThrowBusinessError(StrUtil.equals(request.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)
&& productModelParamsItemService.lambdaQuery()
.eq(ProductModelParamsItem::getModelParamsId, request.getModelParamsId())
.eq(ProductModelParamsItem::getLanguageCode, Constant.DEFAULT_LANGUAGE_CODE)
.eq(ProductModelParamsItem::getIndexName, request.getNewIndexName())
.exists()
).throwMessage("指标名称已存在");
if (Objects.equals(info.getState(), PublishState.Published.getState())) { if (Objects.equals(info.getState(), PublishState.Published.getState())) {
Integer oldId = request.getModelParamsId(); Integer oldId = request.getModelParamsId();
request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber())); request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber()));
@ -330,6 +345,14 @@ public class ProductModelController extends ControllerBase {
VUtils.trueThrowBusinessError(Objects.isNull(request.getModelParamsId())).throwMessage("机型参数id不能为空"); VUtils.trueThrowBusinessError(Objects.isNull(request.getModelParamsId())).throwMessage("机型参数id不能为空");
ProductModelParams info = productModelParamsService.getById(request.getModelParamsId()); ProductModelParams info = productModelParamsService.getById(request.getModelParamsId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据"); VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
VUtils.trueThrowBusinessError(StrUtil.equals(request.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)
&& productModelParamsItemService.lambdaQuery()
.eq(ProductModelParamsItem::getModelParamsId, request.getModelParamsId())
.eq(ProductModelParamsItem::getLanguageCode, Constant.DEFAULT_LANGUAGE_CODE)
.eq(ProductModelParamsItem::getIndexName, request.getIndexName())
.eq(ProductModelParamsItem::getName, request.getName())
.exists()
).throwMessage("参数名称重复");
if (Objects.equals(info.getState(), PublishState.Published.getState())) { if (Objects.equals(info.getState(), PublishState.Published.getState())) {
Integer oldId = request.getModelParamsId(); Integer oldId = request.getModelParamsId();
request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber())); request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber()));
@ -364,6 +387,15 @@ public class ProductModelController extends ControllerBase {
VUtils.trueThrowBusinessError(Objects.isNull(request.getModelParamsId())).throwMessage("机型参数id不能为空"); VUtils.trueThrowBusinessError(Objects.isNull(request.getModelParamsId())).throwMessage("机型参数id不能为空");
ProductModelParams info = productModelParamsService.getById(request.getModelParamsId()); ProductModelParams info = productModelParamsService.getById(request.getModelParamsId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据"); VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
VUtils.trueThrowBusinessError(StrUtil.equals(request.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)
&& productModelParamsItemService.lambdaQuery()
.ne(ProductModelParamsItem::getId,request.getModelParamsItemId())
.eq(ProductModelParamsItem::getModelParamsId, request.getModelParamsId())
.eq(ProductModelParamsItem::getLanguageCode, Constant.DEFAULT_LANGUAGE_CODE)
.eq(ProductModelParamsItem::getIndexName, request.getIndexName())
.eq(ProductModelParamsItem::getName, request.getName())
.exists()
).throwMessage("参数名称重复");
if (Objects.equals(info.getState(), PublishState.Published.getState())) { if (Objects.equals(info.getState(), PublishState.Published.getState())) {
Integer oldId = request.getModelParamsId(); Integer oldId = request.getModelParamsId();
request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber())); request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber()));
@ -625,6 +657,7 @@ public class ProductModelController extends ControllerBase {
, @Valid @RequestParam(value = "file") @NotNull MultipartFile file) { , @Valid @RequestParam(value = "file") @NotNull MultipartFile file) {
ProductModel model = productModelService.getById(modelId); ProductModel model = productModelService.getById(modelId);
VUtils.trueThrowBusinessError(Objects.isNull(model)).throwMessage("无效的" + modelId); VUtils.trueThrowBusinessError(Objects.isNull(model)).throwMessage("无效的" + modelId);
List<String> repeats=new ArrayList<>();
try (InputStream inputStream = file.getInputStream(); org.apache.poi.ss.usermodel.Workbook workbook = new XSSFWorkbook(inputStream)) { try (InputStream inputStream = file.getInputStream(); org.apache.poi.ss.usermodel.Workbook workbook = new XSSFWorkbook(inputStream)) {
Sheet sheet = workbook.getSheetAt(0); Sheet sheet = workbook.getSheetAt(0);
String no = StrUtil.trim(sheet.getRow(1).getCell(1).getStringCellValue()); String no = StrUtil.trim(sheet.getRow(1).getCell(1).getStringCellValue());
@ -658,8 +691,15 @@ public class ProductModelController extends ControllerBase {
dto.setMain(StrUtil.equals(cell3.getStringCellValue(), "")); dto.setMain(StrUtil.equals(cell3.getStringCellValue(), ""));
Cell cell4 = row.getCell(4); Cell cell4 = row.getCell(4);
dto.setCompare(StrUtil.equals(cell4.getStringCellValue(), "")); dto.setCompare(StrUtil.equals(cell4.getStringCellValue(), ""));
datas.add(dto); if (datas.stream().anyMatch(d -> StrUtil.equals(d.getIndexName(), dto.getIndexName())
&& StrUtil.equals(dto.getName(), d.getName()))) {
repeats.add(dto.getIndexName() + "->" + dto.getName());
} else {
datas.add(dto);
}
} }
VUtils.trueThrowBusinessError(CollectionUtil.isNotEmpty(repeats))
.throwMessage("以下参数名称重复:" + StrUtil.join(",", repeats));
// log.info("导入的数据是:{}", JSONUtil.toJsonStr(datas)); // log.info("导入的数据是:{}", JSONUtil.toJsonStr(datas));
VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("数据不能为空"); VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("数据不能为空");
List<Language> languages = languageService.getLanguages(); List<Language> languages = languageService.getLanguages();