UserSubscribeController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. package com.zhongzheng.controller.user;
  2. import java.time.LocalDateTime;
  3. import java.time.format.DateTimeFormatter;
  4. import java.util.*;
  5. import cn.afterturn.easypoi.excel.entity.ExportParams;
  6. import cn.hutool.core.bean.BeanUtil;
  7. import cn.hutool.core.lang.Validator;
  8. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  9. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  10. import com.zhongzheng.common.core.domain.model.LoginUser;
  11. import com.zhongzheng.common.utils.DateUtils;
  12. import com.zhongzheng.common.utils.ServletUtils;
  13. import com.zhongzheng.modules.bank.vo.QuestionImport;
  14. import com.zhongzheng.modules.base.vo.UserProfileExportGaiVo;
  15. import com.zhongzheng.modules.exam.bo.ExamApplyGoodsQueryBo;
  16. import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
  17. import com.zhongzheng.modules.exam.vo.ExamApplyGoodsVo;
  18. import com.zhongzheng.modules.exam.vo.ExamApplyVo;
  19. import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
  20. import com.zhongzheng.modules.grade.vo.ClassPeriodStudentExportVo;
  21. import com.zhongzheng.modules.user.bo.*;
  22. import com.zhongzheng.modules.user.domain.UserBankRecord;
  23. import com.zhongzheng.modules.user.service.IUserExamGoodsService;
  24. import com.zhongzheng.modules.user.vo.*;
  25. import lombok.RequiredArgsConstructor;
  26. import org.springframework.security.access.prepost.PreAuthorize;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.web.bind.annotation.GetMapping;
  29. import org.springframework.web.bind.annotation.PostMapping;
  30. import org.springframework.web.bind.annotation.PutMapping;
  31. import org.springframework.web.bind.annotation.DeleteMapping;
  32. import org.springframework.web.bind.annotation.PathVariable;
  33. import org.springframework.web.bind.annotation.RequestBody;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.RestController;
  36. import com.zhongzheng.common.annotation.Log;
  37. import com.zhongzheng.common.core.controller.BaseController;
  38. import com.zhongzheng.common.core.domain.AjaxResult;
  39. import com.zhongzheng.common.enums.BusinessType;
  40. import com.zhongzheng.modules.user.service.IUserSubscribeService;
  41. import com.zhongzheng.common.utils.poi.ExcelUtil;
  42. import com.zhongzheng.common.core.page.TableDataInfo;
  43. import io.swagger.annotations.Api;
  44. import io.swagger.annotations.ApiOperation;
  45. import org.springframework.web.multipart.MultipartFile;
  46. /**
  47. * 用户预约考试Controller
  48. *
  49. * @author ruoyi
  50. * @date 2021-12-07
  51. */
  52. @Api(value = "报考数据控制器", tags = {"报考数据控制器"})
  53. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  54. @RestController
  55. @RequestMapping("/system/subscribe")
  56. public class UserSubscribeController extends BaseController {
  57. private final IUserSubscribeService iUserSubscribeService;
  58. private final IUserExamGoodsService iUserExamGoodsService;
  59. private final IExamApplyGoodsService iExamApplyGoodsService;
  60. /**
  61. * 查询用户预约考试列表
  62. */
  63. @ApiOperation("查询报考数据列表")
  64. @PreAuthorize("@ss.hasPermi('system:subscribe:list')")
  65. @GetMapping("/list")
  66. public TableDataInfo<UserSubscribeVo> listSubscribe(UserSubscribeQueryBo bo) {
  67. startPage();
  68. List<UserSubscribeVo> list = iUserSubscribeService.listSubscribe(bo);
  69. return getDataTable(list);
  70. }
  71. /**
  72. * 修改用户预约考试
  73. */
  74. @ApiOperation("批量取消预约,批量选考试登记状态,批量修改预约状态,批量前培账号开通")
  75. @PreAuthorize("@ss.hasPermi('system:subscribe:edit')")
  76. @Log(title = "用户预约考试", businessType = BusinessType.UPDATE)
  77. @PostMapping("editMore")
  78. public AjaxResult<Void> editMore(@RequestBody List<UserAppSubscribeEditBo> list) {
  79. return toAjax(iUserSubscribeService.updateByEditMoreBo(list) ? 1 : 0);
  80. }
  81. /**
  82. *
  83. * 修改用户预约考试
  84. */
  85. @ApiOperation("批量取消预约,批量选考试登记状态,批量修改预约状态,批量前培账号开通")
  86. @PreAuthorize("@ss.hasPermi('system:subscribe:edit')")
  87. @Log(title = "用户预约考试", businessType = BusinessType.UPDATE)
  88. @PostMapping("edit")
  89. public AjaxResult<Void> edit(@RequestBody UserSubscribeEditBo bo) {
  90. return toAjax(iUserSubscribeService.updateByEditBo(bo) ? 1 : 0);
  91. }
  92. /**
  93. * 修改用户预约考试
  94. */
  95. @ApiOperation("批量改证书状态")
  96. @PreAuthorize("@ss.hasPermi('system:subscribe:edit')")
  97. @Log(title = "用户预约考试", businessType = BusinessType.UPDATE)
  98. @PostMapping()
  99. public AjaxResult<Void> editCertificate(@RequestBody List<UserSubscribeCertificateEditBo> bo) {
  100. return toAjax(iUserSubscribeService.editCertificate(bo) ? 1 : 0);
  101. }
  102. /**
  103. * 查询用户下这个商品的考试次数,前培次数列表
  104. */
  105. @ApiOperation("查询用户下商品的考试次数,前培次数列表")
  106. @PreAuthorize("@ss.hasPermi('system:goods:list')")
  107. @GetMapping("/listUserExam")
  108. public TableDataInfo<UserExamGoodsVo> listUserExam(UserExamGoodsQueryBo bo) {
  109. startPage();
  110. List<UserExamGoodsVo> list = iUserExamGoodsService.listUserExam(bo);
  111. return getDataTable(list);
  112. }
  113. /**
  114. * 查询详细商品考试次数,前培次数
  115. */
  116. @ApiOperation("查询详细商品考试次数,前培次数")
  117. @PreAuthorize("@ss.hasPermi('system:apply:query')")
  118. @GetMapping("/UserExam")
  119. public AjaxResult<UserExamGoodsVo> getUserExamInfo(UserExamGoodsQueryBo userExamGoodsQueryBo) {
  120. UserExamGoodsVo userExamGoodsVo = iUserExamGoodsService.getUserExamInfo(userExamGoodsQueryBo);
  121. return AjaxResult.success(userExamGoodsVo);
  122. }
  123. @Log(title = "导入新增预约考试模板", businessType = BusinessType.IMPORT)
  124. @ApiOperation("导入新增预约考试模板")
  125. @PreAuthorize("@ss.hasPermi('system:apply:import')")
  126. @PostMapping("/importData")
  127. public AjaxResult<Map<String, Object>> importData(MultipartFile file) throws Exception {
  128. ExcelUtil<UserSubscribeImport> util = new ExcelUtil<UserSubscribeImport>(UserSubscribeImport.class);
  129. List<UserSubscribeImport> userSubscribeImportList = util.importExcel(file.getInputStream());
  130. Map<String, Object> userSubscribeImport = iUserSubscribeService.importData(userSubscribeImportList);
  131. return AjaxResult.success(userSubscribeImport);
  132. }
  133. @Log(title = "导入新增预约考培模板", businessType = BusinessType.IMPORT)
  134. @ApiOperation("导入新增预约考培模板")
  135. @PreAuthorize("@ss.hasPermi('system:apply:import')")
  136. @PostMapping("/importTrainData")
  137. public AjaxResult<Map<String, Object>> importTrainData(MultipartFile file) throws Exception {
  138. ExcelUtil<UserSubscribeImport> util = new ExcelUtil<UserSubscribeImport>(UserSubscribeImport.class);
  139. List<UserSubscribeImport> userSubscribeImportList = util.importExcel(file.getInputStream());
  140. Map<String, Object> userSubscribeImport = iUserSubscribeService.importTrainData(userSubscribeImportList);
  141. return AjaxResult.success(userSubscribeImport);
  142. }
  143. @Log(title = "导入批量考试登记", businessType = BusinessType.IMPORT)
  144. @ApiOperation("导入批量考试登记")
  145. @PreAuthorize("@ss.hasPermi('system:apply:import')")
  146. @PostMapping("/importUpdateData")
  147. public AjaxResult<Map<String, Object>> importUpdateData(MultipartFile file) throws Exception {
  148. ExcelUtil<UserSubscribeImport> util = new ExcelUtil<UserSubscribeImport>(UserSubscribeImport.class);
  149. List<UserSubscribeImport> userSubscribeImportList = util.importExcel(file.getInputStream());
  150. Map<String, Object> userSubscribeImport = iUserSubscribeService.importUpdateData(userSubscribeImportList);
  151. return AjaxResult.success(userSubscribeImport);
  152. }
  153. /**
  154. * 查询报考数据用户列表
  155. */
  156. @ApiOperation("查询报考数据用户列表")
  157. @PreAuthorize("@ss.hasPermi('system:subscribe:list')")
  158. @GetMapping("/listUser")
  159. public TableDataInfo<UserSubscribeVo> listSubscribeByUser(UserSubscribeQueryBo bo) {
  160. startPage();
  161. List<UserSubscribeVo> list = iUserSubscribeService.listSubscribeByUser(bo);
  162. return getDataTable(list);
  163. }
  164. @ApiOperation("预约考试身份证导入新增模板过滤不存在")
  165. @PreAuthorize("@ss.hasPermi('system:apply:import')")
  166. @PostMapping("/importIdsDataFilter")
  167. public AjaxResult<List<UserSubscribeIdsImport>> importIdsDataFilter(MultipartFile file) throws Exception {
  168. ExcelUtil<UserSubscribeIdsImport> util = new ExcelUtil<UserSubscribeIdsImport>(UserSubscribeIdsImport.class);
  169. List<UserSubscribeIdsImport> userSubscribeIdsImportList = util.importExcel(file.getInputStream());
  170. userSubscribeIdsImportList = iUserSubscribeService.importIdsDataFilter(userSubscribeIdsImportList);
  171. return AjaxResult.success(userSubscribeIdsImportList);
  172. }
  173. @ApiOperation("预约考试身份证导入新增模板")
  174. @PreAuthorize("@ss.hasPermi('system:apply:import')")
  175. @PostMapping("/importIdsData")
  176. public AjaxResult<List<UserSubscribeIdsImport>> importIdsData(MultipartFile file) throws Exception {
  177. ExcelUtil<UserSubscribeIdsImport> util = new ExcelUtil<UserSubscribeIdsImport>(UserSubscribeIdsImport.class);
  178. List<UserSubscribeIdsImport> userSubscribeIdsImportList = util.importExcel(file.getInputStream());
  179. return AjaxResult.success(userSubscribeIdsImportList);
  180. }
  181. /**
  182. * 导出新增预约模板
  183. */
  184. @ApiOperation("导出新增预约模板")
  185. @PreAuthorize("@ss.hasPermi('system:profile:export')")
  186. @Log(title = "导出新增预约模板", businessType = BusinessType.EXPORT)
  187. @GetMapping("/exportNew")
  188. public AjaxResult<Map<String,Object>> exportNew(UserSubscribeExportBo bo) {
  189. Map<String,Object> map = new HashMap<>();
  190. ExamApplyGoodsQueryBo examApplyGoodsQueryBo = new ExamApplyGoodsQueryBo();
  191. examApplyGoodsQueryBo.setApplyId(bo.getApplyId());
  192. List<ExamApplyGoodsVo> goodsList = iExamApplyGoodsService.listGoods(examApplyGoodsQueryBo);
  193. ExcelUtil<ExamApplyGoodsVo> goodsUtil = new ExcelUtil<ExamApplyGoodsVo>(ExamApplyGoodsVo.class);
  194. String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  195. map.put("goodsExcel",goodsUtil.exportEasyExcel(goodsUtil.exportEasyData(goodsList), bo.getApplyName()+"商品列表"+timeStr));
  196. if(Validator.isEmpty(bo.getApplySiteAddressTrain())){
  197. UserSubscribeExport export = new UserSubscribeExport();
  198. export.setRemark("导入时,请把示例删除");
  199. export.setUserName("李小米");
  200. export.setIdCard("44086921356895125365");
  201. export.setApplyName(bo.getApplyName());
  202. export.setApplySiteAddress(bo.getApplySiteAddress());
  203. export.setApplySiteExamTime("2021/10/21");
  204. export.setApplySiteTime("9:00-12:00");
  205. export.setCode("SP6415428604");
  206. export.setGoodsName("一级建造师继续教育(必修课+机电工程)");
  207. List<UserSubscribeExport> list = new ArrayList<>();
  208. list.add(export);
  209. ExcelUtil<UserSubscribeExport> util = new ExcelUtil<UserSubscribeExport>(UserSubscribeExport.class);
  210. map.put("demoExcel",util.exportEasyExcel(util.exportEasyData(list), bo.getApplyName()+"新增预约模板"+timeStr));
  211. }else{
  212. //有考培地点
  213. UserSubscribeTrainExport export = new UserSubscribeTrainExport();
  214. export.setRemark("导入时,请把示例删除");
  215. export.setUserName("李小米");
  216. export.setIdCard("44086921356895125365");
  217. export.setApplyName(bo.getApplyName());
  218. export.setApplySiteAddress(bo.getApplySiteAddress());
  219. export.setApplySiteExamTime("2021/10/21");
  220. export.setApplySiteTime("9:00-12:00");
  221. export.setCode("SP6415428604");
  222. export.setGoodsName("一级建造师继续教育(必修课+机电工程)");
  223. export.setApplySiteAddressTrain(bo.getApplySiteAddressTrain());
  224. export.setApplySiteExamTrainTime("2021/10/21");
  225. export.setApplySiteTrainTime("9:00-12:00");
  226. List<UserSubscribeTrainExport> list = new ArrayList<>();
  227. list.add(export);
  228. ExcelUtil<UserSubscribeTrainExport> util = new ExcelUtil<UserSubscribeTrainExport>(UserSubscribeTrainExport.class);
  229. map.put("demoExcel",util.exportEasyExcel(util.exportEasyData(list), bo.getApplyName()+"新增预约模板"+timeStr));
  230. }
  231. return AjaxResult.success(map);
  232. }
  233. /**
  234. * 导出登记模板
  235. */
  236. @ApiOperation("导出登记模板")
  237. @PreAuthorize("@ss.hasPermi('system:profile:export')")
  238. @Log(title = "导出登记模板", businessType = BusinessType.EXPORT)
  239. @GetMapping("/exportRegister")
  240. public AjaxResult exportRegister(UserSubscribeExportBo bo) {
  241. UserSubscribeQueryBo userSubscribeQueryBo = new UserSubscribeQueryBo();
  242. userSubscribeQueryBo.setApplyId(bo.getApplyId());
  243. userSubscribeQueryBo.setApplySiteAddress(bo.getApplySiteAddress());
  244. userSubscribeQueryBo.setIdCards(bo.getIdCards());
  245. userSubscribeQueryBo.setSubscribeStatus(1);
  246. List<UserSubscribeVo> list = iUserSubscribeService.listSubscribe(userSubscribeQueryBo);
  247. List<UserSubscribeExportVo> eList = new ArrayList<>();
  248. for(UserSubscribeVo vo : list){
  249. UserSubscribeExportVo export = BeanUtil.toBean(vo, UserSubscribeExportVo.class);
  250. export.setSubscribeStatus("正常");
  251. if(vo.getExamStatus()==0){
  252. export.setExamStatus("待登记");
  253. }
  254. else if(vo.getExamStatus()==1){
  255. export.setExamStatus("正常");
  256. }
  257. else if(vo.getExamStatus()==2){
  258. export.setExamStatus("缺考");
  259. }
  260. else if(vo.getExamStatus()==3){
  261. export.setExamStatus("作弊");
  262. }
  263. else if(vo.getExamStatus()==4){
  264. export.setExamStatus("替考");
  265. }
  266. if(Validator.isNotEmpty(vo.getResult())){
  267. if(vo.getResult()==1){
  268. export.setResult("通过");
  269. }
  270. else if(vo.getResult()==0){
  271. export.setResult("不通过");
  272. }
  273. }
  274. export.setApplySiteExamTime(DateUtils.timestampToDateFormat(vo.getApplySiteExamTime()));
  275. export.setApplySiteTime(vo.getApplySiteStartTime()+"-"+vo.getApplySiteEndTime());
  276. eList.add(export);
  277. }
  278. String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
  279. ExcelUtil<UserSubscribeExportVo> util = new ExcelUtil<UserSubscribeExportVo>(UserSubscribeExportVo.class);
  280. return util.exportEasyExcel(util.exportEasyData(eList), bo.getApplyName()+"登记数据"+timeStr);
  281. }
  282. /**
  283. * 导出新增预约模板
  284. */
  285. @ApiOperation("导出错误数据")
  286. @PreAuthorize("@ss.hasPermi('system:profile:export')")
  287. @Log(title = "导出错误数据", businessType = BusinessType.EXPORT)
  288. @PostMapping("/exportErrorNew")
  289. public AjaxResult<Map<String,Object>> exportErrorNew(@RequestBody List<UserSubscribeExport> bo) {
  290. List<UserSubscribeExport> errorList = bo;
  291. ExcelUtil<UserSubscribeExport> util = new ExcelUtil<UserSubscribeExport>(UserSubscribeExport.class);
  292. String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  293. return util.exportEasyExcel(util.exportEasyData(errorList), "导出新增错误数据"+timeStr);
  294. }
  295. /**
  296. * 导出前培错误数据
  297. */
  298. @ApiOperation("导出新增含考培错误数据")
  299. @PreAuthorize("@ss.hasPermi('system:profile:export')")
  300. @Log(title = "导出新增含考培错误数据", businessType = BusinessType.EXPORT)
  301. @PostMapping("/exportErrorTrain")
  302. public AjaxResult<Map<String,Object>> exportErrorTrain(@RequestBody List<UserSubscribeTrainExport> bo) {
  303. List<UserSubscribeTrainExport> errorList = bo;
  304. ExcelUtil<UserSubscribeTrainExport> util = new ExcelUtil<UserSubscribeTrainExport>(UserSubscribeTrainExport.class);
  305. String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  306. return util.exportEasyExcel(util.exportEasyData(errorList), "导出新增含考培错误数据"+timeStr);
  307. }
  308. /**
  309. * 导出前培错误数据
  310. */
  311. @ApiOperation("导出登记错误数据")
  312. @PreAuthorize("@ss.hasPermi('system:profile:export')")
  313. @Log(title = "导出登记错误数据", businessType = BusinessType.EXPORT)
  314. @PostMapping("/exportErrorUpdate")
  315. public AjaxResult<Map<String,Object>> exportErrorUpdate(@RequestBody List<UserSubscribeErrorImport> bo) {
  316. List<UserSubscribeErrorImport> errorList = bo;
  317. ExcelUtil<UserSubscribeErrorImport> util = new ExcelUtil<UserSubscribeErrorImport>(UserSubscribeErrorImport.class);
  318. String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  319. return util.exportEasyExcel(util.exportEasyData(errorList), "导出登记错误数据"+timeStr);
  320. }
  321. @ApiOperation("导入前检查身份证是否存在")
  322. @PreAuthorize("@ss.hasPermi('system:apply:import')")
  323. @PostMapping("/checkIdCardData")
  324. public AjaxResult<List<UserSubscribeIdsImport>> checkIdCardData(@RequestBody UserSubscribeIdsImportCheck bo) throws Exception {
  325. return AjaxResult.success(iUserSubscribeService.checkIdsDataFilter(bo));
  326. }
  327. }