package com.zhongzheng.controller.grade; import java.io.FileOutputStream; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.hutool.core.lang.Validator; import com.zhongzheng.common.core.redis.RedisCache; import com.zhongzheng.common.utils.SecurityUtils; import com.zhongzheng.common.utils.ServletUtils; import com.zhongzheng.modules.base.bo.UserProfileQueryBo; import com.zhongzheng.modules.base.vo.UserProfileExportGaiVo; import com.zhongzheng.modules.grade.bo.*; import com.zhongzheng.modules.grade.service.*; import com.zhongzheng.modules.grade.vo.*; import com.zhongzheng.modules.user.entity.ClientLoginUser; import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import org.springframework.boot.SpringBootVersion; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.zhongzheng.common.annotation.Log; import com.zhongzheng.common.core.controller.BaseController; import com.zhongzheng.common.core.domain.AjaxResult; import com.zhongzheng.common.enums.BusinessType; import com.zhongzheng.common.utils.poi.ExcelUtil; import com.zhongzheng.common.core.page.TableDataInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import javax.servlet.ServletOutputStream; /** * 班级Controller * * @author ruoyi * @date 2021-11-10 */ @Api(value = "班级控制器", tags = {"班级管理"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/grade/grade") public class ClassGradeController extends BaseController { private final IClassGradeService iClassGradeService; private final IClassGradeInterfaceService iClassGradeInterfaceService; private final IClassGradeSysService iClassGradeSysService; private final IClassGradeUserService iClassGradeUserService; private final IUserPeriodService iUserPeriodService; private final IUserPeriodStatusService userPeriodStatusService; private final RedisCache redisCache; /** * 查询班级列表 */ @ApiOperation("查询班级列表") @PreAuthorize("@ss.hasPermi('grade:grade:list')") @GetMapping("/list") public TableDataInfo list(ClassGradeQueryBo bo) { startPage(); List list = iClassGradeService.queryList(bo); return getDataTable(list); } /** * 查询班级列表 */ @ApiOperation("是否出现官方按钮选择 1官方信息推送 2官方学时推送 3账号开通 1,2,3 班级出现全部 学时审核出现学时推送 ") @PreAuthorize("@ss.hasPermi('grade:grade:select')") @GetMapping("/selectButton") public AjaxResult selectButton(ClassGradeQueryBo bo) { ClassGradeVo classGradeVo = iClassGradeService.queryList(bo).get(0); List integers = new ArrayList<>(); Integer status =1; //判断字段是否填写,填写出现按钮 if (classGradeVo.getInterfacePushId() != null ){ integers.add(1); } if (classGradeVo.getInterfacePeriodId()!=null){ integers.add(2); } if (classGradeVo.getInterfaceAccountId() != null ){ integers.add(3); } //初始化需要得到的数组 Integer[] array = new Integer[integers.size()]; //使用for循环得到数组 for(int i = 0; i < integers.size();i++){ array[i] = integers.get(i); } return AjaxResult.success(array); } /** * 查询班级列表 */ @ApiOperation("查询班级学员列表") @PreAuthorize("@ss.hasPermi('grade:grade:list')") @GetMapping("/listGrade") public TableDataInfo listGrade(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeService.listGrade(bo); return getDataTable(list); } /** * 学员进入新的班级 */ @ApiOperation("学员进入新的班级") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "班级", businessType = BusinessType.INSERT) @PostMapping("/addUserGrade") public AjaxResult editUserGrade(@RequestBody ClassGradeUserAddQueryBo bo) { return toAjax(iClassGradeService.editUserGrade(bo) ? 1 : 0); } /** * 查询学时学员记录列表 */ @ApiOperation("查询学员学时列表") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listUserPeriod") public TableDataInfo listUserPeriod(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listUserPeriod(bo); return getDataTable(list); } /** * 查询学时学员记录列表 */ @ApiOperation("查询学员学习记录列表") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listUserStudyRecord") public TableDataInfo listUserStudyRecord(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listUserStudyRecord(bo); return getDataTable(list); } /** * 导出资料审核列表 */ @ApiOperation("导出学员学时列表") @PreAuthorize("@ss.hasPermi('system:profile:export')") @Log(title = "导出学员学时列表", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(ClassGradeUserQueryBo bo) { String fileName = ""; if(Validator.isEmpty(bo.getStudyStatus())){ bo.setStudyStatus(0); fileName="全部"; }else{ if(bo.getStudyStatus()==0){ fileName="全部"; } if(bo.getStudyStatus()==1){ fileName="未完成学习"; } if(bo.getStudyStatus()==2){ fileName="完成学习"; } } startPage(); bo.setUserPhoto(1); List list = iClassGradeUserService.exportPo(bo); ExcelUtil util = new ExcelUtil(ClassPeriodStudentExportVo.class); ExportParams deptExportParams = new ExportParams(); // 设置sheet得名称 deptExportParams.setSheetName("表1"); String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); Map deptExportMap = new HashMap<>(); deptExportMap.put("title", deptExportParams); deptExportMap.put("entity", ClassPeriodStudentExportVo.class); // sheet中要填充得数据 deptExportMap.put("data", list); List> sheetsList = new ArrayList<>(); sheetsList.add(deptExportMap); return util.exportEasyExcel(sheetsList, bo.getBusinessName()+"-"+fileName+"-学员学习记录-"+timeStr); } /** * 查询学员学时信息列表 */ @ApiOperation("查询学员学时信息列表") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriod") public TableDataInfo listPeriod(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listPeriod(bo); return getDataTable(list); } /** * 学时审核 */ @ApiOperation("学时审核") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriodAudit") public TableDataInfo listPeriodAudit(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listPeriodAudit(bo); return getDataTable(list); } /** * 查询学员记录列表 */ @ApiOperation("查询学员记录列表") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listUser") public TableDataInfo list(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.queryList(bo); return getDataTable(list); } /** * 查询查询以往审核记录列表 */ @ApiOperation("查询以往审核记录") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriodStatus") public TableDataInfo list(UserPeriodQueryBo bo) { startPage(); List list = userPeriodStatusService.selectPeriodStatus(bo); return getDataTable(list); } /** * 查询班主任记录列表 */ @ApiOperation("查询班主任记录列表") @PreAuthorize("@ss.hasPermi('grade:sys:list')") @GetMapping("/listSys") public TableDataInfo list(ClassGradeSysQueryBo bo) { startPage(); List list = iClassGradeSysService.queryList(bo); return getDataTable(list); } /** * 查询班级列表 */ @ApiOperation("是否出现官方接口选择") @PreAuthorize("@ss.hasPermi('grade:grade:select')") @GetMapping("/select") public AjaxResult select(ClassGradeAddBo bo) { //自己公司的TenantId出现选择官方接口 boolean tenantId = ServletUtils.getRequest().getHeader("TenantId").equals("867735392558919680"); return AjaxResult.success(tenantId ? 1 : 0); } /** * 查询官方接口 */ @ApiOperation("查询官方接口") @PreAuthorize("@ss.hasPermi('grade:grade:list')") @GetMapping("/listInterfaceVo") public TableDataInfo list(ClassGradeInterfaceQueryBo bo) { startPage(); List list = iClassGradeInterfaceService.queryList(bo); return getDataTable(list); } /* *//** * 导出班级列表 *//* @ApiOperation("导出班级列表") @PreAuthorize("@ss.hasPermi('modules.grade:grade:export')") @Log(title = "班级", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(ClassGradeQueryBo bo) { List list = iClassGradeService.queryList(bo); ExcelUtil util = new ExcelUtil(ClassGradeVo.class); return util.exportExcel(list, "班级"); }*/ /** * 获取班级详细信息 */ @ApiOperation("获取班级详细信息") @PreAuthorize("@ss.hasPermi('grade:grade:query')") @GetMapping("/{classId}") public AjaxResult getInfo(@PathVariable("classId") Long classId) { return AjaxResult.success(iClassGradeService.queryById(classId)); } /** * 新增班级 */ @ApiOperation("新增班级") @PreAuthorize("@ss.hasPermi('grade:grade:add')") @Log(title = "班级", businessType = BusinessType.INSERT) @PostMapping() public AjaxResult add(@RequestBody ClassGradeAddBo bo) { return toAjax(iClassGradeService.insertByAddBo(bo) ? 1 : 0); } /** * 修改班级 */ @ApiOperation("修改班级") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "班级", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody ClassGradeEditBo bo) { return toAjax(iClassGradeService.updateByEditBo(bo) ? 1 : 0); } /** * 修改【请填写功能名称】 */ @ApiOperation("更改审核状态") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE) @PostMapping("/editPeriod") public AjaxResult edit(@RequestBody UserPeriodEditBo bo) { return toAjax(iUserPeriodService.updateByEditBo(bo) ? 1 : 0); } /** * 更改批量待审核状态 */ @ApiOperation("更改批量待审核状态") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE) @PostMapping("/editPeriodAll") public AjaxResult editPeriodAll(@RequestBody UserPeriodEditBo bo) { return toAjax(iUserPeriodService.editPeriodAll(bo) ? 1 : 0); } /** * 学时通过确认 */ @ApiOperation("学时通过确认") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "学时通过确认", businessType = BusinessType.UPDATE) @PostMapping("/confirmPeriod") public AjaxResult confirmPeriod(@RequestBody UserPeriodEditBo bo) { return toAjax(iUserPeriodService.confirmPeriod(bo) ? 1 : 0); } /** * 修改学员记录 */ @ApiOperation("修改学员记录") @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "学员记录", businessType = BusinessType.UPDATE) @PostMapping("/editGradeUser") public AjaxResult edit(@RequestBody ClassGradeUserEditBo bo) { return toAjax(iClassGradeUserService.updateByEditBo(bo) ? 1 : 0); } /* *//** * 删除班级 *//* @ApiOperation("删除班级") @PreAuthorize("@ss.hasPermi('modules.grade:grade:remove')") @Log(title = "班级" , businessType = BusinessType.DELETE) @DeleteMapping("/{classIds}") public AjaxResult remove(@PathVariable Long[] classIds) { return toAjax(iClassGradeService.deleteWithValidByIds(Arrays.asList(classIds), true) ? 1 : 0); }*/ /* *//** * 学时审核 *//* @ApiOperation("学时审核第一次請求獲得商品的章節") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriodAuditOne") public TableDataInfo listPeriodAuditOne(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listPeriodAuditOne(bo); return getDataTable(list); } *//** * 学时审核 *//* @ApiOperation("学时审核獲得商品模塊下的章") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriodAuditChapter") public TableDataInfo listPeriodAuditChapter(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listPeriodAuditChapter(bo); return getDataTable(list); } *//** * 学时审核 *//* @ApiOperation("学时审核獲得商品章下面的節") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriodAuditSection") public TableDataInfo listPeriodAuditSection(ClassGradeUserQueryBo bo) { startPage(); List list = iClassGradeUserService.listPeriodAuditSection(bo); return getDataTable(list); } */ /** * 学时审核獲得商品節下面的審核記錄 */ @ApiOperation("学时审核獲得商品節下面的審核記錄") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/listPeriodAuditStatus") public AjaxResult listPeriodAuditStatus(UserPeriodQueryBo bo) { startPage(); ClassPeriodSectionVo list = iClassGradeUserService.listPeriodAuditStatus(bo); return AjaxResult.success(list); } /** * 新增订单 */ @ApiOperation("选新班") @PostMapping("/sysChangeGrade") public AjaxResult changeGrade(@RequestBody ClassGradeUserSysChangeBo bo) { return AjaxResult.success(iClassGradeUserService.sysChangeGrade(bo)); } /** * 查询查询以往审核记录列表 */ @ApiOperation("查询编辑数据是否有用户通过学时") @PreAuthorize("@ss.hasPermi('grade:user:list')") @GetMapping("/checkGoodsChange") public AjaxResult checkGoodsChange(UserPeriodQueryBo bo) { return AjaxResult.success(iUserPeriodService.checkGoodsChange(bo)); } /** * 查询班级信息推送数量 */ @ApiOperation("查询班级信息推送数量") @PreAuthorize("@ss.hasPermi('grade:grade:list')") @GetMapping("/officialInfoCount") public AjaxResult> officialInfoCount(ClassGradeUserQueryBo bo) { return AjaxResult.success(iClassGradeUserService.selectOfficialInfoCount(bo)); } /** * 查询班级学时推送数量 */ @ApiOperation("查询班级学时推送数量") @PreAuthorize("@ss.hasPermi('grade:grade:list')") @GetMapping("/officialPeriodCount") public AjaxResult officialPeriodCount(ClassGradeUserQueryBo bo) { return AjaxResult.success(iClassGradeUserService.selectOfficialPeriodCount(bo)); } /** * 批量打回待审核状态 */ @ApiOperation("批量打回待审核状态") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "批量打回待审核状态", businessType = BusinessType.UPDATE) @PostMapping("/rollbackPeriod") public AjaxResult rollbackPeriod(@RequestBody UserPeriodEditBo bo) { return toAjax(iUserPeriodService.rollbackPeriod(bo) ? 1 : 0); } /** * 锁定学时审核页面 */ @ApiOperation("锁定学时审核页面") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "锁定学时审核页面", businessType = BusinessType.UPDATE) @PostMapping("/lockPeriod") public AjaxResult lockPeriod(@RequestBody UserPeriodEditBo bo) { String key = "LockPeriod_"+bo.getGradeId()+"-"+bo.getUserId(); redisCache.setCacheObject(key, SecurityUtils.getUsername(),15, TimeUnit.SECONDS);//15秒锁定 return AjaxResult.success(); } /** * 查看学时审核锁定状态 */ @ApiOperation("查看学时审核锁定状态") @PreAuthorize("@ss.hasPermi('grade:grade:edit')") @Log(title = "查看学时审核锁定状态", businessType = BusinessType.UPDATE) @PostMapping("/lockPeriodStatus") public AjaxResult lockPeriodStatus(@RequestBody UserPeriodEditBo bo) { String key = "LockPeriod_"+bo.getGradeId()+"-"+bo.getUserId(); String username = redisCache.getCacheObject(key); return AjaxResult.success(username); } }