package com.zhongzheng.controller.user; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Validator; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.zhongzheng.common.core.domain.model.LoginUser; import com.zhongzheng.common.utils.DateUtils; import com.zhongzheng.common.utils.ServletUtils; import com.zhongzheng.modules.bank.vo.QuestionImport; import com.zhongzheng.modules.base.vo.UserProfileExportGaiVo; import com.zhongzheng.modules.exam.bo.ExamApplyGoodsQueryBo; import com.zhongzheng.modules.exam.service.IExamApplyGoodsService; import com.zhongzheng.modules.exam.vo.ExamApplyGoodsVo; import com.zhongzheng.modules.exam.vo.ExamApplyVo; import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo; import com.zhongzheng.modules.grade.vo.ClassPeriodStudentExportVo; import com.zhongzheng.modules.user.bo.*; import com.zhongzheng.modules.user.domain.UserBankRecord; import com.zhongzheng.modules.user.service.IUserExamGoodsService; import com.zhongzheng.modules.user.vo.*; import lombok.RequiredArgsConstructor; 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.modules.user.service.IUserSubscribeService; 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 org.springframework.web.multipart.MultipartFile; /** * 用户预约考试Controller * * @author ruoyi * @date 2021-12-07 */ @Api(value = "报考数据控制器", tags = {"报考数据控制器"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/system/subscribe") public class UserSubscribeController extends BaseController { private final IUserSubscribeService iUserSubscribeService; private final IUserExamGoodsService iUserExamGoodsService; private final IExamApplyGoodsService iExamApplyGoodsService; /** * 查询用户预约考试列表 */ @ApiOperation("查询报考数据列表") @PreAuthorize("@ss.hasPermi('system:subscribe:list')") @GetMapping("/list") public TableDataInfo listSubscribe(UserSubscribeQueryBo bo) { startPage(); List list = iUserSubscribeService.listSubscribe(bo); return getDataTable(list); } /** * 修改用户预约考试 */ @ApiOperation("批量取消预约,批量选考试登记状态,批量修改预约状态,批量前培账号开通") @PreAuthorize("@ss.hasPermi('system:subscribe:edit')") @Log(title = "用户预约考试", businessType = BusinessType.UPDATE) @PostMapping("editMore") public AjaxResult editMore(@RequestBody List list) { return toAjax(iUserSubscribeService.updateByEditMoreBo(list) ? 1 : 0); } /** * * 修改用户预约考试 */ @ApiOperation("批量取消预约,批量选考试登记状态,批量修改预约状态,批量前培账号开通") @PreAuthorize("@ss.hasPermi('system:subscribe:edit')") @Log(title = "用户预约考试", businessType = BusinessType.UPDATE) @PostMapping("edit") public AjaxResult edit(@RequestBody UserSubscribeEditBo bo) { return toAjax(iUserSubscribeService.updateByEditBo(bo) ? 1 : 0); } /** * 修改用户预约考试 */ @ApiOperation("批量改证书状态") @PreAuthorize("@ss.hasPermi('system:subscribe:edit')") @Log(title = "用户预约考试", businessType = BusinessType.UPDATE) @PostMapping() public AjaxResult editCertificate(@RequestBody List bo) { return toAjax(iUserSubscribeService.editCertificate(bo) ? 1 : 0); } /** * 查询用户下这个商品的考试次数,前培次数列表 */ @ApiOperation("查询用户下商品的考试次数,前培次数列表") @PreAuthorize("@ss.hasPermi('system:goods:list')") @GetMapping("/listUserExam") public TableDataInfo listUserExam(UserExamGoodsQueryBo bo) { startPage(); List list = iUserExamGoodsService.listUserExam(bo); return getDataTable(list); } /** * 查询详细商品考试次数,前培次数 */ @ApiOperation("查询详细商品考试次数,前培次数") @PreAuthorize("@ss.hasPermi('system:apply:query')") @GetMapping("/UserExam") public AjaxResult getUserExamInfo(UserExamGoodsQueryBo userExamGoodsQueryBo) { UserExamGoodsVo userExamGoodsVo = iUserExamGoodsService.getUserExamInfo(userExamGoodsQueryBo); return AjaxResult.success(userExamGoodsVo); } @Log(title = "导入新增预约考试模板", businessType = BusinessType.IMPORT) @ApiOperation("导入新增预约考试模板") @PreAuthorize("@ss.hasPermi('system:apply:import')") @PostMapping("/importData") public AjaxResult> importData(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil(UserSubscribeImport.class); List userSubscribeImportList = util.importExcel(file.getInputStream()); Map userSubscribeImport = iUserSubscribeService.importData(userSubscribeImportList); return AjaxResult.success(userSubscribeImport); } @Log(title = "导入新增预约考培模板", businessType = BusinessType.IMPORT) @ApiOperation("导入新增预约考培模板") @PreAuthorize("@ss.hasPermi('system:apply:import')") @PostMapping("/importTrainData") public AjaxResult> importTrainData(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil(UserSubscribeImport.class); List userSubscribeImportList = util.importExcel(file.getInputStream()); Map userSubscribeImport = iUserSubscribeService.importTrainData(userSubscribeImportList); return AjaxResult.success(userSubscribeImport); } @Log(title = "导入批量考试登记", businessType = BusinessType.IMPORT) @ApiOperation("导入批量考试登记") @PreAuthorize("@ss.hasPermi('system:apply:import')") @PostMapping("/importUpdateData") public AjaxResult> importUpdateData(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil(UserSubscribeImport.class); List userSubscribeImportList = util.importExcel(file.getInputStream()); Map userSubscribeImport = iUserSubscribeService.importUpdateData(userSubscribeImportList); return AjaxResult.success(userSubscribeImport); } /** * 查询报考数据用户列表 */ @ApiOperation("查询报考数据用户列表") @PreAuthorize("@ss.hasPermi('system:subscribe:list')") @GetMapping("/listUser") public TableDataInfo listSubscribeByUser(UserSubscribeQueryBo bo) { startPage(); List list = iUserSubscribeService.listSubscribeByUser(bo); return getDataTable(list); } @ApiOperation("预约考试身份证导入新增模板过滤不存在") @PreAuthorize("@ss.hasPermi('system:apply:import')") @PostMapping("/importIdsDataFilter") public AjaxResult> importIdsDataFilter(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil(UserSubscribeIdsImport.class); List userSubscribeIdsImportList = util.importExcel(file.getInputStream()); userSubscribeIdsImportList = iUserSubscribeService.importIdsDataFilter(userSubscribeIdsImportList); return AjaxResult.success(userSubscribeIdsImportList); } @ApiOperation("预约考试身份证导入新增模板") @PreAuthorize("@ss.hasPermi('system:apply:import')") @PostMapping("/importIdsData") public AjaxResult> importIdsData(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil(UserSubscribeIdsImport.class); List userSubscribeIdsImportList = util.importExcel(file.getInputStream()); return AjaxResult.success(userSubscribeIdsImportList); } /** * 导出新增预约模板 */ @ApiOperation("导出新增预约模板") @PreAuthorize("@ss.hasPermi('system:profile:export')") @Log(title = "导出新增预约模板", businessType = BusinessType.EXPORT) @GetMapping("/exportNew") public AjaxResult> exportNew(UserSubscribeExportBo bo) { Map map = new HashMap<>(); ExamApplyGoodsQueryBo examApplyGoodsQueryBo = new ExamApplyGoodsQueryBo(); examApplyGoodsQueryBo.setApplyId(bo.getApplyId()); List goodsList = iExamApplyGoodsService.listGoods(examApplyGoodsQueryBo); ExcelUtil goodsUtil = new ExcelUtil(ExamApplyGoodsVo.class); String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); map.put("goodsExcel",goodsUtil.exportEasyExcel(goodsUtil.exportEasyData(goodsList), bo.getApplyName()+"商品列表"+timeStr)); if(Validator.isEmpty(bo.getApplySiteAddressTrain())){ UserSubscribeExport export = new UserSubscribeExport(); export.setRemark("导入时,请把示例删除"); export.setUserName("李小米"); export.setIdCard("44086921356895125365"); export.setApplyName(bo.getApplyName()); export.setApplySiteAddress(bo.getApplySiteAddress()); export.setApplySiteExamTime("2021/10/21"); export.setApplySiteTime("9:00-12:00"); export.setCode("SP6415428604"); export.setGoodsName("一级建造师继续教育(必修课+机电工程)"); List list = new ArrayList<>(); list.add(export); ExcelUtil util = new ExcelUtil(UserSubscribeExport.class); map.put("demoExcel",util.exportEasyExcel(util.exportEasyData(list), bo.getApplyName()+"新增预约模板"+timeStr)); }else{ //有考培地点 UserSubscribeTrainExport export = new UserSubscribeTrainExport(); export.setRemark("导入时,请把示例删除"); export.setUserName("李小米"); export.setIdCard("44086921356895125365"); export.setApplyName(bo.getApplyName()); export.setApplySiteAddress(bo.getApplySiteAddress()); export.setApplySiteExamTime("2021/10/21"); export.setApplySiteTime("9:00-12:00"); export.setCode("SP6415428604"); export.setGoodsName("一级建造师继续教育(必修课+机电工程)"); export.setApplySiteAddressTrain(bo.getApplySiteAddressTrain()); export.setApplySiteExamTrainTime("2021/10/21"); export.setApplySiteTrainTime("9:00-12:00"); List list = new ArrayList<>(); list.add(export); ExcelUtil util = new ExcelUtil(UserSubscribeTrainExport.class); map.put("demoExcel",util.exportEasyExcel(util.exportEasyData(list), bo.getApplyName()+"新增预约模板"+timeStr)); } return AjaxResult.success(map); } /** * 导出登记模板 */ @ApiOperation("导出登记模板") @PreAuthorize("@ss.hasPermi('system:profile:export')") @Log(title = "导出登记模板", businessType = BusinessType.EXPORT) @GetMapping("/exportRegister") public AjaxResult exportRegister(UserSubscribeExportBo bo) { UserSubscribeQueryBo userSubscribeQueryBo = new UserSubscribeQueryBo(); userSubscribeQueryBo.setApplyId(bo.getApplyId()); userSubscribeQueryBo.setApplySiteAddress(bo.getApplySiteAddress()); userSubscribeQueryBo.setIdCards(bo.getIdCards()); userSubscribeQueryBo.setSubscribeStatus(1); List list = iUserSubscribeService.listSubscribe(userSubscribeQueryBo); List eList = new ArrayList<>(); for(UserSubscribeVo vo : list){ UserSubscribeExportVo export = BeanUtil.toBean(vo, UserSubscribeExportVo.class); export.setSubscribeStatus("正常"); if(vo.getExamStatus()==0){ export.setExamStatus("待登记"); } else if(vo.getExamStatus()==1){ export.setExamStatus("正常"); } else if(vo.getExamStatus()==2){ export.setExamStatus("缺考"); } else if(vo.getExamStatus()==3){ export.setExamStatus("作弊"); } else if(vo.getExamStatus()==4){ export.setExamStatus("替考"); } if(Validator.isNotEmpty(vo.getResult())){ if(vo.getResult()==1){ export.setResult("通过"); } else if(vo.getResult()==0){ export.setResult("不通过"); } } export.setApplySiteExamTime(DateUtils.timestampToDateFormat(vo.getApplySiteExamTime())); export.setApplySiteTime(vo.getApplySiteStartTime()+"-"+vo.getApplySiteEndTime()); eList.add(export); } String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")); ExcelUtil util = new ExcelUtil(UserSubscribeExportVo.class); return util.exportEasyExcel(util.exportEasyData(eList), bo.getApplyName()+"登记数据"+timeStr); } /** * 导出新增预约模板 */ @ApiOperation("导出错误数据") @PreAuthorize("@ss.hasPermi('system:profile:export')") @Log(title = "导出错误数据", businessType = BusinessType.EXPORT) @PostMapping("/exportErrorNew") public AjaxResult> exportErrorNew(@RequestBody List bo) { List errorList = bo; ExcelUtil util = new ExcelUtil(UserSubscribeExport.class); String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); return util.exportEasyExcel(util.exportEasyData(errorList), "导出新增错误数据"+timeStr); } /** * 导出前培错误数据 */ @ApiOperation("导出新增含考培错误数据") @PreAuthorize("@ss.hasPermi('system:profile:export')") @Log(title = "导出新增含考培错误数据", businessType = BusinessType.EXPORT) @PostMapping("/exportErrorTrain") public AjaxResult> exportErrorTrain(@RequestBody List bo) { List errorList = bo; ExcelUtil util = new ExcelUtil(UserSubscribeTrainExport.class); String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); return util.exportEasyExcel(util.exportEasyData(errorList), "导出新增含考培错误数据"+timeStr); } /** * 导出前培错误数据 */ @ApiOperation("导出登记错误数据") @PreAuthorize("@ss.hasPermi('system:profile:export')") @Log(title = "导出登记错误数据", businessType = BusinessType.EXPORT) @PostMapping("/exportErrorUpdate") public AjaxResult> exportErrorUpdate(@RequestBody List bo) { List errorList = bo; ExcelUtil util = new ExcelUtil(UserSubscribeErrorImport.class); String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); return util.exportEasyExcel(util.exportEasyData(errorList), "导出登记错误数据"+timeStr); } @ApiOperation("导入前检查身份证是否存在") @PreAuthorize("@ss.hasPermi('system:apply:import')") @PostMapping("/checkIdCardData") public AjaxResult> checkIdCardData(@RequestBody UserSubscribeIdsImportCheck bo) throws Exception { return AjaxResult.success(iUserSubscribeService.checkIdsDataFilter(bo)); } }