diff --git a/backend/src/main/java/com/realnet/config/MongoDataInitializer.java b/backend/src/main/java/com/realnet/config/MongoDataInitializer.java index 304258e..315758b 100644 --- a/backend/src/main/java/com/realnet/config/MongoDataInitializer.java +++ b/backend/src/main/java/com/realnet/config/MongoDataInitializer.java @@ -187,6 +187,46 @@ public class MongoDataInitializer implements CommandLineRunner { } LOGGER.info("[MongoDataInitializer] Core menus and permissions initialized successfully."); } + + // Ensure all existing GrpMenuAccess records have valid status and metadata populated + try { + List existingAccess = grpMenuAccessRepository.findAll(); + for (GrpMenuAccess a : existingAccess) { + boolean changed = false; + if (a.getStatus() == null || !"Enable".equals(a.getStatus())) { + a.setStatus("Enable"); + changed = true; + } + if (a.getMenuItemId() != null) { + MenuDet m = a.getMenuItemId(); + if (a.getMenuItemDesc() == null && m.getMenuItemDesc() != null) { + a.setMenuItemDesc(m.getMenuItemDesc()); + changed = true; + } + if (a.getMain_menu_action_name() == null && m.getMain_menu_action_name() != null) { + a.setMain_menu_action_name(m.getMain_menu_action_name()); + changed = true; + } + if (a.getMain_menu_icon_name() == null && m.getMain_menu_icon_name() != null) { + a.setMain_menu_icon_name(m.getMain_menu_icon_name()); + changed = true; + } + if (a.getItemSeq() == null && m.getItemSeq() != null) { + a.setItemSeq(m.getItemSeq()); + changed = true; + } + if (a.getMenuId() == null && m.getMenuId() != null) { + a.setMenuId(m.getMenuId()); + changed = true; + } + } + if (changed) { + grpMenuAccessRepository.save(a); + } + } + } catch (Exception e) { + LOGGER.warn("[MongoDataInitializer] Could not heal existing GrpMenuAccess: {}", e.getMessage()); + } } private MenuDet createMenu(Long menuItemId, Long menuId, Long seq, String desc, String modName, String action, String icon) { @@ -208,6 +248,13 @@ public class MongoDataInitializer implements CommandLineRunner { a.setUsrGrp(grp); a.setMenuItemId(menu); a.setMenuId(menu.getMenuId()); + a.setItemSeq(menu.getItemSeq()); + a.setMenuItemDesc(menu.getMenuItemDesc()); + a.setModuleName(menu.getModuleName()); + a.setMain_menu_action_name(menu.getMain_menu_action_name()); + a.setMain_menu_icon_name(menu.getMain_menu_icon_name()); + a.setStatus("Enable"); + a.setIsdisable("false"); a.setMVisible("true"); a.setMCreate("true"); a.setMEdit("true"); @@ -220,7 +267,6 @@ public class MongoDataInitializer implements CommandLineRunner { LOGGER.warn("[MongoDataInitializer] Could not grant access for menu {}: {}", menu.getMenuItemId(), e.getMessage()); } } - public void addCustomMenu(String tableName, String menuActionLink, String menuType) { Long parentMenuId = 1577L; if ("Master".equalsIgnoreCase(menuType) || "Masters".equalsIgnoreCase(menuType)) { diff --git a/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java b/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java index 1d0a6c6..9e186bc 100644 --- a/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java +++ b/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java @@ -58,19 +58,33 @@ public class LoadMenuController { List root = grpMenuAccessRepository.findAllRootsByMenuId(usrGrp); // menu id =0 for (int i = 0; i < root.size(); i++) { - - // find menu item id by menu id =0 - List menu = grpMenuAccessRepository.findById(root.get(i).getUsrGrp().getUsrGrp(), - root.get(i).getMenuItemId().getMenuItemId()); // menuItem id will be unique - for (GrpMenuAccess g : menu) { - - // all submenu by menuid = menu itemid with status + GrpMenuAccess r = root.get(i); + if (r.getMenuItemId() != null) { + Long menuItemId = r.getMenuItemId().getMenuItemId(); List allSubmenu = grpMenuAccessRepository - .findAllSubmenuByMenuIdWithStatus(g.getMenuItemId().getMenuItemId(), g.getUsrGrp().getUsrGrp()); // find - - g.setSubMenus(allSubmenu); + .findAllSubmenuByMenuIdWithStatus(menuItemId, usrGrp); + for (GrpMenuAccess sub : allSubmenu) { + if (sub.getMenuItemDesc() == null && sub.getMenuItemId() != null) { + sub.setMenuItemDesc(sub.getMenuItemId().getMenuItemDesc()); + } + if (sub.getMain_menu_action_name() == null && sub.getMenuItemId() != null) { + sub.setMain_menu_action_name(sub.getMenuItemId().getMain_menu_action_name()); + } + if (sub.getMain_menu_icon_name() == null && sub.getMenuItemId() != null) { + sub.setMain_menu_icon_name(sub.getMenuItemId().getMain_menu_icon_name()); + } + } + r.setSubMenus(allSubmenu); + } + if (r.getMenuItemDesc() == null && r.getMenuItemId() != null) { + r.setMenuItemDesc(r.getMenuItemId().getMenuItemDesc()); + } + if (r.getMain_menu_action_name() == null && r.getMenuItemId() != null) { + r.setMain_menu_action_name(r.getMenuItemId().getMain_menu_action_name()); + } + if (r.getMain_menu_icon_name() == null && r.getMenuItemId() != null) { + r.setMain_menu_icon_name(r.getMenuItemId().getMain_menu_icon_name()); } - } return new ResponseEntity<>(root, HttpStatus.OK); } diff --git a/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java b/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java index 19e59a1..b4a38b0 100644 --- a/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java +++ b/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java @@ -47,7 +47,7 @@ public interface GrpMenuAccessRepository extends MongoRepository findAllRootsByMenuId(@Param("usr_grp") Long usr_grp); - @Query("{'menu_id': 0, 'status': 'Enable', 'usr_grp': ?0}") + @Query(value = "{ $and: [ { $or: [ {'menuId': 0}, {'menu_id': 0} ] }, { 'status': 'Enable' }, { $or: [ {'usrGrp.usrGrp': ?0}, {'usrGrp': ?0} ] } ] }", sort = "{'itemSeq': 1}") List findAllRootsByMenuId(Long usr_grp); // //// @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id and a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) @@ -94,10 +94,10 @@ public interface GrpMenuAccessRepository extends MongoRepository findAllById(@Param("menu_item_id") Long menu_item_id); - @Query("{ 'menu_id': ?0, 'usrGrp': ?1 }") + @Query(value = "{ $and: [ { $or: [ {'menuId': ?0}, {'menu_id': ?0} ] }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] } ] }", sort = "{'itemSeq': 1}") List findAllSubmenuByMenuId(Long menuItemId, Long usrGrp); - @Query("{ 'status': 'Enable', 'menu_id': ?0, 'usrGrp': ?1 }") + @Query(value = "{ $and: [ { $or: [ {'menuId': ?0}, {'menu_id': ?0} ] }, { 'status': 'Enable' }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] } ] }", sort = "{'itemSeq': 1}") List findAllSubmenuByMenuIdWithStatus(Long menuItemId, Long usrGrp); @Query("{ 'menuItem_id': ?0 }") @@ -124,13 +124,13 @@ public interface GrpMenuAccessRepository extends MongoRepository findByGrpAndMenuid1(Long menuItemId); - @Query("{ 'menu_id': 0, 'usrGrp': ?1, 'menuItem_id': ?0 }") + @Query("{ $and: [ { $or: [ {'menuId': 0}, {'menu_id': 0} ] }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] }, { $or: [ {'menuItemId.menuItemId': ?0}, {'menuItem_id': ?0} ] } ] }") GrpMenuAccess findAllRootsByMenuIdAndGrp(Long menuItemId, Long usrGrp); @Query("{ 'menuItem_id': ?0 }") List findAllSubmenuByMenuitemid(Long menuItemId); - @Query("{ 'menu_id': ?0, 'usrGrp': ?1 }") + @Query("{ $and: [ { $or: [ {'menuId': ?0}, {'menu_id': ?0} ] }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] } ] }") List findAllSubmenuByMenuitemidAndUsrGrp(Long menuItemId, Long usrGrp); @Query("{ 'menuItem_id': ?0 }")