diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchMenuButtonRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchMenuButtonRequest.java index 2ec6ea5d..9c7d2694 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchMenuButtonRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchMenuButtonRequest.java @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; public class SearchMenuButtonRequest extends PageRequest { // 菜单id - private Integer menuId; + private Long menuId; // 菜单按钮名称 private String name; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMenuButtonVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMenuButtonVO.java index 84cf2c63..38919e4e 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMenuButtonVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMenuButtonVO.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; @Data public class AdminMenuButtonVO { - private Integer id; + private Long id; // 按钮名称 private String name; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ModelConfigVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ModelConfigVO.java index ec84ff99..3d1c28e9 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ModelConfigVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ModelConfigVO.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.common.pojo.vo; +import cn.hutool.core.util.IdUtil; import lombok.Data; import java.time.LocalDateTime; @@ -7,6 +8,8 @@ import java.time.LocalDateTime; @Data public class ModelConfigVO { + private String key= IdUtil.getSnowflakeNextIdStr(); + private Long id; /** diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ModelConfigController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ModelConfigController.java index ed7dc143..353a2017 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ModelConfigController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ModelConfigController.java @@ -77,20 +77,15 @@ public class ModelConfigController extends ControllerBase { return ApiResult.success(Collections.emptyList()); } vos.stream().filter(vo -> vo.getItemParentId() == 0L) - .sorted(Comparator.comparing(ModelConfigItemLanguageVO::getId)) - .forEach(vo -> vo.setChildren(vos.stream() - .filter(i -> i.getItemParentId().equals(vo.getId())) - .map(i -> new ModelConfigItemLanguageVO() - .setId(i.getId()) - .setPartName(i.getPartName()) - .setPartRemark(i.getPartRemark()) - .setImageUrl(i.getImageUrl()) - .setEnable(i.getEnable()) - .setType(i.getType()) - .setOptionalType(i.getOptionalType()) - ).sorted(Comparator.comparing(ModelConfigItemLanguageVO::getId)) - .collect(Collectors.toList()) - )); + .sorted(Comparator.comparing(ModelConfigItemLanguageVO::getItemId)) + .forEach(vo -> + vo.setChildren(vos.stream() + .filter(i -> i.getItemParentId().equals(vo.getItemId())) + .sorted(Comparator.comparing(ModelConfigItemLanguageVO::getItemId)) + .collect(Collectors.toList()) + ) + ); + vos.removeIf(it -> it.getItemParentId() != 0L); return ApiResult.success(vos); } @@ -112,6 +107,9 @@ public class ModelConfigController extends ControllerBase { List itemLanguages = modelConfigItemLanguageService.lambdaQuery() .eq(QuotationModelConfigItemLanguage::getConfigId, request.getConfigId()) .list(); + config.setConfigStatus(0); + config.setConfigYear(null); + config.setConfigVersion(null); config.setId(IdUtil.getSnowflakeNextId()); request.setConfigId(config.getId()); config.setUpdateById(AdminUserUtil.getUserId()); @@ -120,19 +118,26 @@ public class ModelConfigController extends ControllerBase { modelConfigService.save(config); if (CollectionUtil.isNotEmpty(items)) { items.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); + Long id = IdUtil.getSnowflakeNextId(); + if (Objects.equals(request.getParentId(), it.getId())){ + request.setParentId(id); + } + itemLanguages.stream() + .filter(i -> i.getConfigItemId().equals(it.getId())) + .forEach(i -> { + i.setId(IdUtil.getSnowflakeNextId()); + i.setConfigId(config.getId()); + i.setConfigItemId(id); + i.setUpdateById(AdminUserUtil.getUserId()); + i.setUpdateBy(AdminUserUtil.getUserName()); + i.setUpdateTime(LocalDateTime.now()); + }); + items.stream().filter(i -> i.getParentId().equals(it.getId())) + .forEach(i -> i.setParentId(id)); + it.setId(id); it.setConfigId(config.getId()); }); modelConfigItemService.saveBatch(items); - } - if (CollectionUtil.isNotEmpty(itemLanguages)) { - itemLanguages.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); - it.setConfigId(config.getId()); - it.setUpdateById(AdminUserUtil.getUserId()); - it.setUpdateBy(AdminUserUtil.getUserName()); - it.setUpdateTime(LocalDateTime.now()); - }); modelConfigItemLanguageService.saveBatch(itemLanguages); } } @@ -208,6 +213,9 @@ public class ModelConfigController extends ControllerBase { List itemLanguages = modelConfigItemLanguageService.lambdaQuery() .eq(QuotationModelConfigItemLanguage::getConfigId, languageItem.getConfigId()) .list(); + config.setConfigStatus(0); + config.setConfigYear(null); + config.setConfigVersion(null); config.setId(IdUtil.getSnowflakeNextId()); config.setUpdateById(AdminUserUtil.getUserId()); config.setUpdateBy(AdminUserUtil.getUserName()); @@ -215,7 +223,32 @@ public class ModelConfigController extends ControllerBase { modelConfigService.save(config); if (CollectionUtil.isNotEmpty(items)) { items.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); + Long id = IdUtil.getSnowflakeNextId(); + if (Objects.equals(request.getParentId(), it.getId())){ + request.setParentId(id); + } + itemLanguages.stream() + .filter(i -> i.getConfigItemId().equals(it.getId())) + .forEach(i -> { + VUtils.trueThrowBusinessError(modelConfigItemLanguageService.lambdaQuery() + .eq(QuotationModelConfigItemLanguage::getConfigId, languageItem.getConfigId()) + .eq(QuotationModelConfigItemLanguage::getLanguageId, languageItem.getLanguageId()) + .eq(QuotationModelConfigItemLanguage::getPartName, request.getPartName()) + .exists()) + .throwMessage("已存在该名称的部件或系统"); + if (i.getId().equals(request.getId())) { + i.setPartName(request.getPartName()); + i.setPartRemark(request.getPartRemark()); + } + i.setId(IdUtil.getSnowflakeNextId()); + i.setConfigId(config.getId()); + i.setConfigItemId(id); + i.setUpdateById(AdminUserUtil.getUserId()); + i.setUpdateBy(AdminUserUtil.getUserName()); + i.setUpdateTime(LocalDateTime.now()); + }); + items.stream().filter(i -> i.getParentId().equals(it.getId())) + .forEach(i -> i.setParentId(id)); it.setConfigId(config.getId()); if (StrUtil.equals(request.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE) && it.getId().equals(languageItem.getConfigItemId())) { @@ -226,29 +259,29 @@ public class ModelConfigController extends ControllerBase { it.setPartRemark(request.getPartRemark()); it.setImageUrl(request.getImageUrl()); } + it.setId(id); }); modelConfigItemService.saveBatch(items); - } - if (CollectionUtil.isNotEmpty(itemLanguages)) { - itemLanguages.forEach(it -> { - VUtils.trueThrowBusinessError(modelConfigItemLanguageService.lambdaQuery() - .eq(QuotationModelConfigItemLanguage::getConfigId, languageItem.getConfigId()) - .eq(QuotationModelConfigItemLanguage::getLanguageId, languageItem.getLanguageId()) - .eq(QuotationModelConfigItemLanguage::getPartName, request.getPartName()) - .exists()) - .throwMessage("已存在该名称的部件或系统"); - if (it.getId().equals(request.getId())) { - it.setPartName(request.getPartName()); - it.setPartRemark(request.getPartRemark()); - } - it.setId(IdUtil.getSnowflakeNextId()); - it.setConfigId(config.getId()); - it.setUpdateById(AdminUserUtil.getUserId()); - it.setUpdateBy(AdminUserUtil.getUserName()); - it.setUpdateTime(LocalDateTime.now()); - }); modelConfigItemLanguageService.saveBatch(itemLanguages); } + } else { + languageItem.setPartName(request.getPartName()); + languageItem.setPartRemark(request.getPartRemark()); + languageItem.setUpdateById(AdminUserUtil.getUserId()); + languageItem.setUpdateBy(AdminUserUtil.getUserName()); + languageItem.setUpdateTime(LocalDateTime.now()); + if (StrUtil.equals(request.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)) { + modelConfigItemService.lambdaUpdate() + .set(QuotationModelConfigItem::getType, request.getType()) + .set(QuotationModelConfigItem::getOptionalType, request.getOptionalType()) + .set(QuotationModelConfigItem::getParentId, request.getParentId()) + .set(QuotationModelConfigItem::getPartName, request.getPartName()) + .set(QuotationModelConfigItem::getPartRemark, request.getPartRemark()) + .set(QuotationModelConfigItem::getImageUrl, request.getImageUrl()) + .eq(QuotationModelConfigItem::getId, request.getItemId()) + .update(); + } + modelConfigItemLanguageService.updateById(languageItem); } return ApiResult.success(config.getId()); } @@ -263,7 +296,8 @@ public class ModelConfigController extends ControllerBase { List items = modelConfigItemService.lambdaQuery() .in(QuotationModelConfigItem::getId, ids) .list(); - VUtils.trueThrowBusinessError(items.size() > 1).throwMessage("数据错误"); + VUtils.trueThrowBusinessError(items.stream().map(QuotationModelConfigItem::getConfigId).distinct().count() > 1) + .throwMessage("数据错误"); QuotationModelConfig config = modelConfigService.getById(items.get(0).getConfigId()); VUtils.trueThrowBusinessError(Objects.isNull(config)).throwMessage("无效的机型配置"); if (config.getConfigStatus() != 0) { @@ -273,34 +307,61 @@ public class ModelConfigController extends ControllerBase { List itemLanguages = modelConfigItemLanguageService.lambdaQuery() .eq(QuotationModelConfigItemLanguage::getConfigId, config.getId()) .list(); + config.setConfigStatus(0); config.setId(IdUtil.getSnowflakeNextId()); config.setUpdateById(AdminUserUtil.getUserId()); config.setUpdateBy(AdminUserUtil.getUserName()); config.setUpdateTime(LocalDateTime.now()); modelConfigService.save(config); + List childrenIds = modelConfigItemService.lambdaQuery() + .select(QuotationModelConfigItem::getId) + .in(QuotationModelConfigItem::getParentId, ids) + .list() + .stream() + .map(QuotationModelConfigItem::getId) + .collect(Collectors.toList()); + Collection allIds = CollectionUtil.union(childrenIds, ids); if (CollectionUtil.isNotEmpty(items)) { - items.removeIf(it -> ids.contains(it.getId())); + items.removeIf(it -> allIds.contains(it.getId())); + itemLanguages.removeIf(it -> allIds.contains(it.getConfigItemId())); + List finalItems = items; items.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); + Long id = IdUtil.getSnowflakeNextId(); + itemLanguages.forEach(i -> { + i.setId(IdUtil.getSnowflakeNextId()); + i.setConfigId(config.getId()); + i.setConfigItemId(id); + i.setUpdateById(AdminUserUtil.getUserId()); + i.setUpdateBy(AdminUserUtil.getUserName()); + i.setUpdateTime(LocalDateTime.now()); + }); + finalItems.stream().filter(i -> i.getParentId().equals(it.getId())) + .forEach(i -> i.setParentId(id)); + it.setId(id); it.setConfigId(config.getId()); }); if (CollectionUtil.isNotEmpty(items)) { modelConfigItemService.saveBatch(items); } - } - if (CollectionUtil.isNotEmpty(itemLanguages)) { - itemLanguages.removeIf(it -> ids.contains(it.getConfigItemId())); - itemLanguages.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); - it.setConfigId(config.getId()); - it.setUpdateById(AdminUserUtil.getUserId()); - it.setUpdateBy(AdminUserUtil.getUserName()); - it.setUpdateTime(LocalDateTime.now()); - }); if (CollectionUtil.isNotEmpty(itemLanguages)) { modelConfigItemLanguageService.saveBatch(itemLanguages); } } + } else { + List childrenIds = modelConfigItemService.lambdaQuery() + .select(QuotationModelConfigItem::getId) + .in(QuotationModelConfigItem::getParentId, ids) + .list() + .stream() + .map(QuotationModelConfigItem::getId) + .collect(Collectors.toList()); + Collection allIds = CollectionUtil.union(childrenIds, ids); + modelConfigItemService.lambdaUpdate() + .in(QuotationModelConfigItem::getId, allIds) + .remove(); + modelConfigItemLanguageService.lambdaUpdate() + .in(QuotationModelConfigItemLanguage::getConfigItemId, allIds) + .remove(); } return ApiResult.success(config.getId()); } @@ -324,6 +385,9 @@ public class ModelConfigController extends ControllerBase { List itemLanguages = modelConfigItemLanguageService.lambdaQuery() .eq(QuotationModelConfigItemLanguage::getConfigId, config.getId()) .list(); + config.setConfigStatus(0); + config.setConfigYear(null); + config.setConfigVersion(null); config.setId(IdUtil.getSnowflakeNextId()); config.setUpdateById(AdminUserUtil.getUserId()); config.setUpdateBy(AdminUserUtil.getUserName()); @@ -331,24 +395,48 @@ public class ModelConfigController extends ControllerBase { modelConfigService.save(config); if (CollectionUtil.isNotEmpty(items)) { items.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); + Long id = IdUtil.getSnowflakeNextId(); + itemLanguages.stream() + .filter(i -> i.getConfigItemId().equals(it.getId())) + .forEach(i -> { + i.setId(IdUtil.getSnowflakeNextId()); + i.setConfigId(config.getId()); + i.setConfigItemId(id); + i.setUpdateById(AdminUserUtil.getUserId()); + i.setUpdateBy(AdminUserUtil.getUserName()); + i.setUpdateTime(LocalDateTime.now()); + }); + it.setId(id); it.setConfigId(config.getId()); if (it.getId().equals(request.getId())) { + VUtils.trueThrowBusinessError( + request.getEnable() && modelConfigItemService.lambdaQuery() + .eq(QuotationModelConfigItem::getId, it.getParentId()) + .eq(QuotationModelConfigItem::getEnable, false) + .exists() + ).throwMessage("父级部件或系统已禁用"); + it.setEnable(request.getEnable()); + } + if (it.getParentId().equals(request.getId())) { it.setEnable(request.getEnable()); } }); modelConfigItemService.saveBatch(items); - } - if (CollectionUtil.isNotEmpty(itemLanguages)) { - itemLanguages.forEach(it -> { - it.setId(IdUtil.getSnowflakeNextId()); - it.setConfigId(config.getId()); - it.setUpdateById(AdminUserUtil.getUserId()); - it.setUpdateBy(AdminUserUtil.getUserName()); - it.setUpdateTime(LocalDateTime.now()); - }); modelConfigItemLanguageService.saveBatch(itemLanguages); } + } else { + VUtils.trueThrowBusinessError( + request.getEnable() && modelConfigItemService.lambdaQuery() + .eq(QuotationModelConfigItem::getId, item.getParentId()) + .eq(QuotationModelConfigItem::getEnable, false) + .exists() + ).throwMessage("父级部件或系统已禁用"); + item.setEnable(request.getEnable()); + modelConfigItemService.updateById(item); + modelConfigItemService.lambdaUpdate() + .set(QuotationModelConfigItem::getEnable, request.getEnable()) + .eq(QuotationModelConfigItem::getParentId, item.getId()) + .update(); } return ApiResult.success(config.getId()); } @@ -372,6 +460,7 @@ public class ModelConfigController extends ControllerBase { .update(); config.setConfigStatus(1); config.setConfigVersion("MC" + DateTimeUtil.format(LocalDateTime.now(), "yyMMddHHmm")); + config.setConfigYear(String.valueOf(LocalDateTime.now().getYear())); config.setUpdateById(AdminUserUtil.getUserId()); config.setUpdateBy(AdminUserUtil.getUserName()); config.setUpdateTime(LocalDateTime.now()); diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/ModelConfigItemUpdateRequest.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/ModelConfigItemUpdateRequest.java index 513c167b..aac8f0fa 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/ModelConfigItemUpdateRequest.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/ModelConfigItemUpdateRequest.java @@ -11,6 +11,9 @@ public class ModelConfigItemUpdateRequest{ @NotNull private Long id; + @NotNull + private Long itemId; + /** * 多语言 */ diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelConfigMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelConfigMapper.xml index e3de6a17..a4232640 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelConfigMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelConfigMapper.xml @@ -26,6 +26,6 @@ AND pm.`no` like concat('%', #{request.no}, '%') - order by qmc.update_time desc,pm.id + order by qmc.update_time desc,qmc.create_time desc,pm.id