package com.highdatas.mdm.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.highdatas.mdm.entity.*;
import com.highdatas.mdm.pojo.ActivitiBusinessType;
import com.highdatas.mdm.pojo.ActivitiStatus;
import com.highdatas.mdm.pojo.CodeMsg;
import com.highdatas.mdm.pojo.Result;
import com.highdatas.mdm.service.*;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 前端控制器
*
*
* @author kimi
* @since 2019-12-16
*/
@RestController
@RequestMapping("/menu")
public class SysMenuController {
@Autowired
ISysMenuService menuService;
@Autowired
IMenuMappingService menuMappingService;
@Autowired
ISysFieldService fieldService;
@Autowired
IDeletedTableLogService deletedTableLogService;
@Autowired
IFlowsService flowsService;
@Autowired
IMaintainService maintainService;
@Autowired
IMaintainFieldService maintainFieldService;
@RequestMapping(value = "/all", method = RequestMethod.GET)
public Result> getAll() {
EntityWrapper sysMenuEntityWrapper = new EntityWrapper<>();
sysMenuEntityWrapper.orderBy("parent_id, order_no");
return Result.success(menuService.selectList(sysMenuEntityWrapper)) ;
}
@RequestMapping(value = "/audit", method = RequestMethod.GET)
public Result> audit(HttpServletRequest request) {
HttpSession session = request.getSession();
TUser user = (TUser) session.getAttribute("user");
String userId = user.getUserId();
List flows = flowsService.selectList(new EntityWrapper().ne("business_type", ActivitiBusinessType.exists).ne("status", ActivitiStatus.open).ne("status", ActivitiStatus.close));
flows = flows.stream().filter(flow -> flowsService.isNextAudit(flow, userId)).collect(Collectors.toList());
HashSet tableNameSet = new HashSet<>();
List maintainIds = flows.stream().map(Flows::getBusinessId).collect(Collectors.toList());
if (maintainIds.size() == 0) {
return Result.success(null);
}
List maintains = maintainService.selectBatchIds(maintainIds);
List tableNameList = maintains.stream().map(Maintain::getTableName).collect(Collectors.toList());
tableNameSet.addAll(tableNameList);
//
List maintainFields = maintainFieldService.selectBatchIds(maintainIds);
tableNameSet.addAll(maintainFields.stream().map(MaintainField::getTableName).collect(Collectors.toList()));
if (tableNameSet.size() == 0) {
return Result.success(null);
}
List menuMappingList = menuMappingService.selectList(new EntityWrapper().in("table_name", tableNameSet));
List menuIds = menuMappingList.stream().map(MenuMapping::getMenuId).collect(Collectors.toList());
LinkedHashSet parentIdSet = new LinkedHashSet<>(menuIds);
Set byParentId = menuService.getByParentId(parentIdSet);
List parentList = menuService.selectBatchIds(byParentId);
return Result.success(parentList);
}
@RequestMapping(value = "/list", method = RequestMethod.GET)
public Result> getMenuList() {
EntityWrapper sysMenuEntityWrapper = new EntityWrapper<>();
sysMenuEntityWrapper.eq("menu_type", "DataMenu");
sysMenuEntityWrapper.orderBy("parent_id, order_no");
List sysMenus = menuService.selectList(sysMenuEntityWrapper);
LinkedHashSet parentIdSet = new LinkedHashSet<>();
for (SysMenu sysMenu : sysMenus) {
MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper().eq("menu_id", sysMenu.getId()));
if (menuMapping == null) {
continue;
}
String tableName = menuMapping.getTableName();
List fieldByTable = fieldService.getFieldByTable(tableName);
if (fieldByTable == null || fieldByTable.size() == 0) {
continue;
}
parentIdSet.add(sysMenu.getId());
}
Set byParentId = menuService.getByParentId(parentIdSet);
List parentList = menuService.selectBatchIds(byParentId);
return Result.success(parentList) ;
}
@RequestMapping(value = "/allTheme", method = RequestMethod.GET)
public Result> getAllTheme() {
EntityWrapper sysMenuEntityWrapper = new EntityWrapper<>();
sysMenuEntityWrapper.eq("menu_type",Constant.StructureMenu).orderBy("parent_id desc");
return Result.success(menuService.selectList(sysMenuEntityWrapper)) ;
}
@RequestMapping(value = "/{pageno}", method = RequestMethod.GET)
public Result> getAll(@PathVariable int pageno, HttpServletRequest request) {
String pageSize = request.getParameter("pageSize");
if (StringUtils.isEmpty(pageSize)) {
pageSize = "15";
}
Integer size = Integer.valueOf(pageSize);
Page page = new Page(pageno, size);
Page menuPage = menuService.selectPage(page);
return Result.success(menuPage);
}
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
public Result get(@PathVariable String id) throws Exception {
return Result.success(menuService.selectById(id));
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public Result