From aa606a2f68407e28a3126ad4cbddd32ed3c9e1e1 Mon Sep 17 00:00:00 2001 From: risadmin_prod Date: Sun, 30 Aug 2026 12:18:53 +0000 Subject: [PATCH] Update backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java --- .../fnd/service1/SecmenuDetailService.java | 302 ++++++++++++------ 1 file changed, 213 insertions(+), 89 deletions(-) diff --git a/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java b/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java index 0d359c8..cf61b95 100644 --- a/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java +++ b/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java @@ -1,3 +1,4 @@ +// Added by Azmat for menucreation part package com.realnet.fnd.service1; import java.util.ArrayList; @@ -27,109 +28,232 @@ public class SecmenuDetailService { private GrpMenuAccessRepository grpMenuAccessRepository; public MenuDet customsecmenuadd(String tablename, String menuActionLink, Long menuId) { - MenuDet menuDet = new MenuDet(); String origTableName = tablename.replaceAll("_", " "); - menuDet.setMenuId(menuId); menuDet.setItemSeq(8001l); menuDet.setMain_menu_icon_name(tablename); menuDet.setMenuItemDesc(origTableName); menuDet.setModuleName(tablename); menuDet.setMain_menu_action_name(menuActionLink); - menuDet.setStatus("Enable"); - MenuDet save = menuDetRepository.save(menuDet); - sync(menuId, new GrpMenuAccess()); - System.out.println(save.getMenuItemDesc() + " menu inserted"); - return save; - } + // sync service - with debug logs to prove Transactions/Masters grant to all groups +public List sync(Long gmenuid, GrpMenuAccess gr) { + List list = new ArrayList<>(); + MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); + System.out.println("[SYNC] start gmenuid="+gmenuid+" formenu="+formenu.getMenuItemDesc()+" mId="+formenu.getMenuItemId()); -// sync service - public List sync(Long gmenuid, GrpMenuAccess gr) { - - List list = new ArrayList<>(); - MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); - - List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); - - for (GrpMenuAccess a : all) { - - a.setMenuItemId(formenu); - a.setItemSeq(formenu.getItemSeq()); - a.setMenuItemDesc(formenu.getMenuItemDesc()); - a.setModuleName(formenu.getModuleName()); - a.setStatus(formenu.getStatus()); - a.setMain_menu_action_name(formenu.getMain_menu_action_name()); - a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); - a.setMenuId(formenu.getMenuId()); - GrpMenuAccess save = grpMenuAccessRepository.save(a); - list.add(save); - } - - List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); - for (int i = 0; i < submenu.size(); i++) { - MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); - List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); - - if (li.isEmpty()) { - List grp = grpMenuAccessRepository.findAllById(gmenuid); - - for (GrpMenuAccess a : grp) { - AppUserRole app = appUserRoleRepository.findById(a.getUsrGrp().getUsrGrp()).orElseThrow(null); - gr.setUsrGrp(app); - gr.setMenuItemId(m); - - gr.setItemSeq(m.getItemSeq()); - gr.setMenuItemDesc(m.getMenuItemDesc()); - gr.setModuleName(m.getModuleName()); - gr.setStatus(m.getStatus()); - gr.setMain_menu_action_name(m.getMain_menu_action_name()); - gr.setMain_menu_icon_name(m.getMain_menu_icon_name()); - gr.setMenuId(m.getMenuId()); - - gr.setMCreate("true"); - gr.setMDelete("true"); - gr.setMEdit("true"); - gr.setMQuery("true"); - gr.setMVisible("true"); - gr.setIsdisable("true"); - gr.setMexport("true"); - - gr.setCreatedAt(new Date()); - gr.setUpdatedAt(new Date()); - - GrpMenuAccess save2 = grpMenuAccessRepository.save(gr); - list.add(save2); - } - - } - - else { - for (GrpMenuAccess g : li) { - - g.setMenuItemId(m); - - g.setItemSeq(m.getItemSeq()); - g.setMenuItemDesc(m.getMenuItemDesc()); - g.setModuleName(m.getModuleName()); - g.setStatus(m.getStatus()); - g.setMain_menu_action_name(m.getMain_menu_action_name()); - g.setMain_menu_icon_name(m.getMain_menu_icon_name()); - g.setMenuId(m.getMenuId()); - - GrpMenuAccess save1 = grpMenuAccessRepository.save(g); - list.add(save1); - } - } - } - return list; - - } + // Fix 1: ensure parent (1577/1601) for ALL groups (was only 1) + List allRoles = appUserRoleRepository.findAll(); + System.out.println("[SYNC] allRoles="+allRoles.size()); + for (AppUserRole role : allRoles) { + if (grpMenuAccessRepository.findById2(formenu.getMenuItemId(), role.getUsrGrp()) == null) { + GrpMenuAccess ng = new GrpMenuAccess(); + ng.setUsrGrp(role); ng.setMenuItemId(formenu); + ng.setItemSeq(formenu.getItemSeq()); ng.setMenuItemDesc(formenu.getMenuItemDesc()); + ng.setModuleName(formenu.getModuleName()); ng.setStatus(formenu.getStatus()); + ng.setMain_menu_action_name(formenu.getMain_menu_action_name()); + ng.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); + ng.setMenuId(formenu.getMenuId()); + ng.setMCreate("true"); ng.setMDelete("true"); ng.setMEdit("true"); + ng.setMQuery("true"); ng.setMVisible("true"); ng.setIsdisable("true"); ng.setMexport("true"); + ng.setCreatedAt(new Date()); ng.setUpdatedAt(new Date()); + grpMenuAccessRepository.save(ng); + System.out.println("[SYNC] parent grant to grp="+role.getUsrGrp()); + list.add(ng); + } + } + List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); + for (GrpMenuAccess a : all) { + a.setMenuItemId(formenu); + a.setItemSeq(formenu.getItemSeq()); + a.setMenuItemDesc(formenu.getMenuItemDesc()); + a.setModuleName(formenu.getModuleName()); + a.setStatus(formenu.getStatus()); + a.setMain_menu_action_name(formenu.getMain_menu_action_name()); + a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); + a.setMenuId(formenu.getMenuId()); + list.add(grpMenuAccessRepository.save(a)); + } + List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); + System.out.println("[SYNC] submenus="+submenu.size()); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); + System.out.println("[SYNC] child "+m.getMenuItemDesc()+" mId="+m.getMenuItemId()+" li="+li.size()); + // Fix 2: ensure child for ALL groups (handles both li empty and else case) + List allGroups = appUserRoleRepository.findAll(); + for (AppUserRole role : allGroups) { + if (grpMenuAccessRepository.findById2(m.getMenuItemId(), role.getUsrGrp()) != null) continue; + GrpMenuAccess ng = new GrpMenuAccess(); + ng.setUsrGrp(role); ng.setMenuItemId(m); + ng.setItemSeq(m.getItemSeq()); ng.setMenuItemDesc(m.getMenuItemDesc()); + ng.setModuleName(m.getModuleName()); ng.setStatus(m.getStatus()); + ng.setMain_menu_action_name(m.getMain_menu_action_name()); + ng.setMain_menu_icon_name(m.getMain_menu_icon_name()); + ng.setMenuId(m.getMenuId()); + ng.setMCreate("true"); ng.setMDelete("true"); ng.setMEdit("true"); + ng.setMQuery("true"); ng.setMVisible("true"); ng.setIsdisable("true"); ng.setMexport("true"); + ng.setCreatedAt(new Date()); ng.setUpdatedAt(new Date()); + grpMenuAccessRepository.save(ng); + System.out.println("[SYNC] child grant "+m.getMenuItemDesc()+" to grp="+role.getUsrGrp()); + list.add(ng); + } + for (GrpMenuAccess g : li) { + g.setMenuItemId(m); + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + list.add(grpMenuAccessRepository.save(g)); + } + } + System.out.println("[SYNC] done gmenuid="+gmenuid); + return list; } +} + +// package com.realnet.fnd.service1; + +// import java.util.ArrayList; +// import java.util.Date; +// import java.util.List; + +// import org.springframework.beans.factory.annotation.Autowired; +// import org.springframework.stereotype.Service; + +// import com.realnet.fnd.entity1.GrpMenuAccess; +// import com.realnet.fnd.entity1.MenuDet; +// import com.realnet.fnd.repository1.GrpMenuAccessRepository; +// import com.realnet.fnd.repository1.MenuDetRepository; +// import com.realnet.users.entity1.AppUserRole; +// import com.realnet.users.repository1.AppUserRoleRepository; + +// @Service +// public class SecmenuDetailService { + +// @Autowired +// private MenuDetRepository menuDetRepository; + +// @Autowired +// private AppUserRoleRepository appUserRoleRepository; + +// @Autowired +// private GrpMenuAccessRepository grpMenuAccessRepository; + +// public MenuDet customsecmenuadd(String tablename, String menuActionLink, Long menuId) { + +// MenuDet menuDet = new MenuDet(); +// String origTableName = tablename.replaceAll("_", " "); + +// menuDet.setMenuId(menuId); +// menuDet.setItemSeq(8001l); +// menuDet.setMain_menu_icon_name(tablename); +// menuDet.setMenuItemDesc(origTableName); +// menuDet.setModuleName(tablename); +// menuDet.setMain_menu_action_name(menuActionLink); + +// menuDet.setStatus("Enable"); + +// MenuDet save = menuDetRepository.save(menuDet); + +// sync(menuId, new GrpMenuAccess()); + +// System.out.println(save.getMenuItemDesc() + " menu inserted"); + +// return save; + +// } + +// // sync service +// public List sync(Long gmenuid, GrpMenuAccess gr) { + +// List list = new ArrayList<>(); +// MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); + +// List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); + +// for (GrpMenuAccess a : all) { + +// a.setMenuItemId(formenu); +// a.setItemSeq(formenu.getItemSeq()); +// a.setMenuItemDesc(formenu.getMenuItemDesc()); +// a.setModuleName(formenu.getModuleName()); +// a.setStatus(formenu.getStatus()); +// a.setMain_menu_action_name(formenu.getMain_menu_action_name()); +// a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); +// a.setMenuId(formenu.getMenuId()); +// GrpMenuAccess save = grpMenuAccessRepository.save(a); +// list.add(save); +// } + +// List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); +// for (int i = 0; i < submenu.size(); i++) { +// MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); +// List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); + +// if (li.isEmpty()) { +// List grp = grpMenuAccessRepository.findAllById(gmenuid); + +// for (GrpMenuAccess a : grp) { +// AppUserRole app = appUserRoleRepository.findById(a.getUsrGrp().getUsrGrp()).orElseThrow(null); +// gr.setUsrGrp(app); +// gr.setMenuItemId(m); + +// gr.setItemSeq(m.getItemSeq()); +// gr.setMenuItemDesc(m.getMenuItemDesc()); +// gr.setModuleName(m.getModuleName()); +// gr.setStatus(m.getStatus()); +// gr.setMain_menu_action_name(m.getMain_menu_action_name()); +// gr.setMain_menu_icon_name(m.getMain_menu_icon_name()); +// gr.setMenuId(m.getMenuId()); + +// gr.setMCreate("true"); +// gr.setMDelete("true"); +// gr.setMEdit("true"); +// gr.setMQuery("true"); +// gr.setMVisible("true"); +// gr.setIsdisable("true"); +// gr.setMexport("true"); + +// gr.setCreatedAt(new Date()); +// gr.setUpdatedAt(new Date()); + +// GrpMenuAccess save2 = grpMenuAccessRepository.save(gr); +// list.add(save2); +// } + +// } + +// else { +// for (GrpMenuAccess g : li) { + +// g.setMenuItemId(m); + +// g.setItemSeq(m.getItemSeq()); +// g.setMenuItemDesc(m.getMenuItemDesc()); +// g.setModuleName(m.getModuleName()); +// g.setStatus(m.getStatus()); +// g.setMain_menu_action_name(m.getMain_menu_action_name()); +// g.setMain_menu_icon_name(m.getMain_menu_icon_name()); +// g.setMenuId(m.getMenuId()); + +// GrpMenuAccess save1 = grpMenuAccessRepository.save(g); +// list.add(save1); +// } +// } +// } +// return list; + +// } + +// }