因为有大量查询和统计,所以不再前端页面上做,尽量1次请求完成。集成SysMenuService接口的实现类SysMenuServiceImpl,重写selectMenuTreeByUserId()函数,将衍生类标记为主要@Primary。
package com.ruoyi.web.service.impl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.ibs.contract.domain.IbsContract;
import com.ruoyi.ibs.contract.service.IIbsContractService;
import com.ruoyi.ibs.goods.domain.BizPurchasePlan;
import com.ruoyi.ibs.goods.service.IBizPurchasePlanService;
import com.ruoyi.ibs.meal.domain.BizMeal;
import com.ruoyi.ibs.meal.service.IBizMealService;
import com.ruoyi.ibs.meeting.domain.IbsMeeting;
import com.ruoyi.ibs.meeting.service.IIbsMeetingService;
import com.ruoyi.ibs.msg.domain.IbsMymsg;
import com.ruoyi.ibs.msg.service.IIbsMymsgService;
import com.ruoyi.ibs.news.domain.FicNewsInfo;
import com.ruoyi.ibs.news.service.IFicNewsInfoService;
import com.ruoyi.ibs.officialdoc.domain.IbsDocumentReceive;
import com.ruoyi.ibs.officialdoc.domain.IbsDocumentSend;
import com.ruoyi.ibs.officialdoc.service.IIbsDocumentReceiveService;
import com.ruoyi.ibs.officialdoc.service.IIbsDocumentSendService;
import com.ruoyi.ibs.repair.domain.BizRepairOrder;
import com.ruoyi.ibs.repair.service.IBizRepairOrderService;
import com.ruoyi.ibs.vehicle.domain.IbsVa;
import com.ruoyi.ibs.vehicle.service.IIbsVaService;
import com.ruoyi.system.mapper.SysMenuMapper;
import com.ruoyi.system.service.impl.SysMenuServiceImpl;
/**
*@author created by Jerry
*@date 2022年9月21日---下午2:28:29
*@problem
*@answer
*@action
*/
@Service
@Primary
public class SysMenuServiceImplEx extends SysMenuServiceImpl{
@Autowired
private SysMenuMapper menuMapper;
@Autowired
private IIbsVaService ibsVaService;
@Autowired
private IIbsContractService ibsContractService;
@Autowired
private IIbsMeetingService ibsMeetingService;
@Autowired
private IIbsDocumentSendService ibsDocumentSendService;
@Autowired
private IIbsDocumentReceiveService ibsDocumentReceiveService;
@Autowired
private IIbsMymsgService ibsMymsgService;
@Autowired
private IFicNewsInfoService ficNewsInfoService;
@Autowired
private IBizMealService bizMealService;
@Autowired
private IBizPurchasePlanService bizPurchasePlanService;
@Autowired
private IBizRepairOrderService bizRepairOrderService;
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId) {
List<SysMenu> menus = null;
if (SecurityUtils.isAdmin(userId))
{
menus = menuMapper.selectMenuTreeAll();
}
else
{
menus = menuMapper.selectMenuTreeByUserId(userId);
}
selectTodoTask(userId,menus);
return getChildPerms(menus, 0);
}
private void selectTodoTask(Long userId, List<SysMenu> menus){
List<String> perms = menuMapper.selectMenuPermsByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms)
{
if (StringUtils.isNotEmpty(perm))
{
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
for (Iterator iterator = menus.iterator(); iterator.hasNext();) {
SysMenu sysMenu = (SysMenu) iterator.next();
switch (sysMenu.getMenuName()) {
case "车辆申请":
/** 所有非草稿、未完结的申请单 */
Boolean isme = true;
IbsVa ibsVa = new IbsVa();
for (Iterator iterator2 = permsSet.iterator(); iterator2.hasNext();) {
String string = (String) iterator2.next();
if(string.equals("vehicle:va:approve1")) {
// 本部门的
ibsVa.setVaAdid(SecurityUtils.getLoginUser().getUser().getDeptId().toString());
}
if(
string.equals("vehicle:va:approve1") ||
string.equals("vehicle:va:approve2") ||
string.equals("vehicle:va:approve3") ||
string.equals("vehicle:va:config")
) {
isme = false;
}
}
if(isme){
// 查本人的
ibsVa.setVaAuid(SecurityUtils.getLoginUser().getUser().getUserId().toString());
}
List<IbsVa> vaList = ibsVaService.selectIbsVaList(ibsVa);
if(vaList.size() != 0)
{
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + vaList.size());
}
break;
case "部门负责人审核":
/** 待部门负责人审核 */
BizRepairOrder bizRepairOrder1 = new BizRepairOrder();
bizRepairOrder1.setRepairOrder("0");
List<BizRepairOrder> zoList1 = bizRepairOrderService.selectBizRepairOrderListWL(bizRepairOrder1);
if(zoList1.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + zoList1.size());
}
break;
case "维修部门负责人审核":
/** 待维修部门负责人审核 */
BizRepairOrder bizRepairOrder2 = new BizRepairOrder();
bizRepairOrder2.setRepairOrder("2");
List<BizRepairOrder> zoList2 = bizRepairOrderService.selectBizRepairOrderListWL(bizRepairOrder2);
if(zoList2.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + zoList2.size());
}
break;
case "院长审核":
/** 待院长审核 */
BizRepairOrder bizRepairOrder3 = new BizRepairOrder();
bizRepairOrder3.setRepairOrder("4");
List<BizRepairOrder> zoList3 = bizRepairOrderService.selectBizRepairOrderListWL(bizRepairOrder3);
if(zoList3.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + zoList3.size());
}
break;
case "设备维修部管理":
/** 待设备维修部提交验收 */
BizRepairOrder bizRepairOrder4 = new BizRepairOrder();
bizRepairOrder4.setRepairOrder("10");
List<BizRepairOrder> zoList4 = bizRepairOrderService.selectBizRepairOrderListWL(bizRepairOrder4);
if(zoList4.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + zoList4.size());
}
break;
case "申报部门验收":
/** 待申报部门验收 */
BizRepairOrder bizRepairOrder5 = new BizRepairOrder();
bizRepairOrder5.setRepairOrder("50");
List<BizRepairOrder> zoList5 = bizRepairOrderService.selectBizRepairOrderListWL(bizRepairOrder5);
if(zoList5.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + zoList5.size());
}
break;
case "综合保障部验收":
/** 待综合保障部验收 */
BizRepairOrder bizRepairOrder6 = new BizRepairOrder();
bizRepairOrder6.setRepairOrder("20");
List<BizRepairOrder> zoList6 = bizRepairOrderService.selectBizRepairOrderListWL(bizRepairOrder6);
if(zoList6.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + zoList6.size());
}
break;
case "部门审批":
/** 所有本部门待部门审批的采购计划 */
BizPurchasePlan bizPurchasePlan = new BizPurchasePlan();
bizPurchasePlan.setPurchaseStatue("20");
Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId();
bizPurchasePlan.setPurBlext1(Long.toString(deptId));
List<BizPurchasePlan> bppList = bizPurchasePlanService.selectBizPurchasePlanListWL(bizPurchasePlan);
if(bppList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + bppList.size());
}
break;
case "院长审批":
/** 所有待院长审批的采购计划 */
BizPurchasePlan bizPurchasePlan1 = new BizPurchasePlan();
bizPurchasePlan1.setPurchaseStatue("30");
List<BizPurchasePlan> bppList1 = bizPurchasePlanService.selectBizPurchasePlanListWL(bizPurchasePlan1);
if(bppList1.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + bppList1.size());
}
break;
case "合同审批":
/** 所有未归档的合同 */
IbsContract ibsContract = new IbsContract();
List<IbsContract> contractList = ibsContractService.selectIbsContractList(ibsContract);
if(contractList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + contractList.size());
}
break;
case "分管领导审核":
/** 所有待分管领导审核 */
BizMeal bizMeal = new BizMeal();
bizMeal.setAuditState("1");
List<BizMeal> mealList = bizMealService.selectBizMealListAudit(bizMeal);
if(mealList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + mealList.size());
}
break;
case "党政工作部审核":
/** 所有待党政工作部审核 */
BizMeal bizMeal1 = new BizMeal();
bizMeal1.setAuditState("4");
List<BizMeal> mealList1 = bizMealService.selectBizMealListAudit(bizMeal1);
if(mealList1.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + mealList1.size());
}
break;
case "会议申请":
/** 所有待审批的会议申请 */
Boolean isme0 = true;
IbsMeeting ibsMeeting = new IbsMeeting();
for (Iterator iterator2 = permsSet.iterator(); iterator2.hasNext();) {
String string = (String) iterator2.next();
if(string.equals("meeting:meeting:approve1")) {
// 本部门的
ibsMeeting.setmDid(SecurityUtils.getLoginUser().getUser().getDeptId().toString());
}
if(string.equals("meeting:meeting:approve4")) {
// 院务会议
ibsMeeting.setmType("院务会议");
}
if(string.equals("meeting:meeting:approve5")) {
// 党委会议
ibsMeeting.setmType("党委会议");
}
if(
string.equals("meeting:meeting:approve1") ||
string.equals("meeting:meeting:approve2") ||
string.equals("meeting:meeting:approve3") ||
string.equals("meeting:meeting:approve4") ||
string.equals("meeting:meeting:approve5")
)
{
isme0 = false;
}
}
if(isme0)
{
// 查本人的
ibsMeeting.setmUid(SecurityUtils.getLoginUser().getUser().getUserId().toString());
}
List<IbsMeeting> meetingList = ibsMeetingService.selectIbsMeetingList(ibsMeeting);
if(meetingList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + meetingList.size());
}
break;
case "发文管理":
/** 所有未完结的发文 */
IbsDocumentSend ibsDocumentSend = new IbsDocumentSend();
List<IbsDocumentSend> dsList = ibsDocumentSendService.selectIbsDocumentSendList(ibsDocumentSend);
if(dsList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + dsList.size());
}
break;
case "文件阅办":
/** 所有未完结的阅办 */
IbsDocumentReceive ibsDocumentReceive = new IbsDocumentReceive();
List<IbsDocumentReceive> drList = ibsDocumentReceiveService.selectIbsDocumentReceiveList(ibsDocumentReceive);
if(drList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + drList.size());
}
break;
case "通知信息":
/** 所有待审批通知数 */
FicNewsInfo ficNewsInfo = new FicNewsInfo();
ficNewsInfo.setAuditStatus(0);
List<FicNewsInfo> newsList = ficNewsInfoService.selectFicNewsInfoList(ficNewsInfo);
if(newsList.size() != 0)
{
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + newsList.size());
}
break;
case "我的消息":
/** 本用户所有未读消息数 */
IbsMymsg ibsMymsg = new IbsMymsg();
ibsMymsg.setMymsgStatus("N");
ibsMymsg.setUserId(userId);
List<IbsMymsg> myMsgList = ibsMymsgService.selectIbsMymsgList(ibsMymsg);
if(myMsgList.size() != 0) {
sysMenu.setMenuName(sysMenu.getMenuName() + "--" + myMsgList.size());
}
break;
}
}
}
}