package com.ots.project.exam.controller; import com.ots.common.enums.UserTypeEnum; import com.ots.common.utils.security.ShiroUtils; import com.ots.framework.web.controller.BaseController; import com.ots.framework.web.domain.AjaxResult; import com.ots.framework.web.page.TableDataInfo; import com.ots.project.exam.domain.SysUserExtend; import com.ots.project.exam.domain.SysUserPaper; import com.ots.project.exam.domain.TExamPaper; import com.ots.project.exam.domain.TReportTemplate; import com.ots.project.exam.service.ISysUserExtendService; import com.ots.project.exam.service.ISysUserPaperService; import com.ots.project.exam.service.ITExamPaperService; import com.ots.project.exam.service.ITReportTemplateService; import com.ots.project.system.user.domain.User; import com.ots.project.system.user.service.IUserService; import com.ots.project.tool.exam.JsonUtil; import com.ots.project.tool.gen.service.IExamUtilService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @Controller @RequestMapping("/exam/paper") public class SysUserPaperController extends BaseController { private String prefix = "exam/userpaper"; @Autowired private IUserService userService; @Autowired private ISysUserPaperService userPaperService; @Autowired private ITExamPaperService tExamPaperService; @Autowired private ISysUserExtendService sysUserExtendService; @Autowired private IExamUtilService examUtilService; @Autowired private ITReportTemplateService reportTemplateService; @Autowired private ITReportTemplateService itReportTemplateService; @GetMapping("/dis") public String dispaper() { return prefix + "/userPaper"; } @PostMapping("/list") @ResponseBody public TableDataInfo list(User user) { User sysUser = ShiroUtils.getSysUser(); user.setStatus("0"); List users = new ArrayList(); if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) { startPage(); user.setUserTypes(Arrays.asList(UserTypeEnum.DIS_USER.getUserType(), UserTypeEnum.ENT_USER.getUserType())); users = userService.selectUserList(user); } if (Objects.equals(UserTypeEnum.DIS_USER.getUserType(), sysUser.getUserType())) { user.setUserTypes(Arrays.asList(UserTypeEnum.DIS_USER.getUserType(), UserTypeEnum.ENT_USER.getUserType())); SysUserExtend sysUserExtend = new SysUserExtend(); sysUserExtend.setParentUserId(sysUser.getUserId()); List sysUserExtends = sysUserExtendService.selectSysUserExtendList(sysUserExtend); List userList = sysUserExtends.stream().map(p -> p.getUserId()).collect(Collectors.toList()); user.setUserList(userList); startPage(); user.setDeptId(null); user.setDept(null); users = userService.selectUserList2(user); } return getDataTable(users); } @PostMapping("/reportTemplateText/{arr}") @ResponseBody public String reportTemplateText(@PathVariable String arr) { String[] split = arr.split(","); List templateIds = Arrays.asList(split); List reportTemplates = reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()); StringBuilder reportTemplateText = new StringBuilder(); for (int i = 0; i < reportTemplates.size(); i++) { TReportTemplate tReportTemplate = reportTemplates.get(i); if (templateIds.contains(String.valueOf(tReportTemplate.getId()))) { reportTemplateText.append(tReportTemplate.getReportType()).append(","); } } return reportTemplateText.substring(0,reportTemplateText.length()-1); } @PostMapping("/listCodes") @ResponseBody public TableDataInfo listCodes(User user) { startPage(); User sysUser = ShiroUtils.getSysUser(); if (Objects.isNull(user.getUserId()) && !Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) { user.setUserId(sysUser.getUserId()); } SysUserPaper sysUserPaper = new SysUserPaper(); sysUserPaper.setUserId(user.getUserId()); List sysUserPapers = userPaperService.selectSysUserPaperList(sysUserPaper); sysUserPapers.stream().forEach(p -> { p.setProdName(examUtilService.getLangOrLocalLangString("", p.getProdName())); List tReportTemplateList = itReportTemplateService.selectTReportTemplates(p.getReportTemplateId()); StringBuilder stringBuilder = new StringBuilder(); tReportTemplateList.stream().forEach(item -> stringBuilder.append(item.getReportType() + "-" + item.getTemplateType() + "-" + item.getLangType() + ",")); if (stringBuilder.length() > 0) { p.setReportTemplateText(stringBuilder.substring(0, stringBuilder.length() - 1)); } } ); return getDataTable(sysUserPapers); } @PostMapping("/edit") @ResponseBody public AjaxResult editSave(SysUserPaper sysUserPaper) { List list = JsonUtil.toJsonListObject(sysUserPaper.getProdCodes(), SysUserPaper.class); userPaperService.deleteSysUserPaperById(sysUserPaper.getUserId()); list.stream().forEach(item -> { item.setUserId(sysUserPaper.getUserId()); userPaperService.insertSysUserPaper(item); }); return toAjax(1); } @GetMapping("/edit/{userId}") public String edit(@PathVariable("userId") Long userId, ModelMap mmap) { List list = tExamPaperService.getUserPapers(); list.stream().forEach(p -> p.setName(examUtilService.getLangOrLocalLangString("", p.getName())) ); mmap.put("userId", userId); mmap.put("userProds", list); List reportTemplates = reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()); List collect = reportTemplates.stream().filter(v -> { String reportType = v.getReportType(); String[] split = reportType.split("-"); List strings = Arrays.asList(split); TExamPaper tExamPaper = list.get(0); String name = tExamPaper.getName(); if (Objects.equals("睿邻", name)) { name = "RuiLin"; } if (strings.contains(name)) { return true; } return false; }).collect(Collectors.toList()); mmap.put("templateList", collect); mmap.put("templateListAll", reportTemplates); return prefix + "/edit"; } @RequestMapping("/filterTemplate/{prodName}") @ResponseBody public List filterTemplate(@PathVariable("prodName") String prodName) { if (Objects.equals("睿邻", prodName)) { prodName = "RuiLin"; } List prods = Arrays.asList(prodName); List reportTemplates = reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()); List collect = reportTemplates.stream().filter(v -> { String reportType = v.getReportType(); String[] split = reportType.split("-"); List strings = Arrays.asList(split); if (strings.contains(prods.get(0))) { return true; } return false; }).collect(Collectors.toList()); return collect; } }