BaseNewStudentController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521
  1. package com.xjrsoft.module.student.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.secure.BCrypt;
  4. import cn.dev33.satoken.stp.StpUtil;
  5. import cn.hutool.core.bean.BeanUtil;
  6. import cn.hutool.core.util.StrUtil;
  7. import com.alibaba.excel.EasyExcel;
  8. import com.alibaba.excel.support.ExcelTypeEnum;
  9. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  10. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  11. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  12. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  13. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  14. import com.xjrsoft.common.annotation.XjrLog;
  15. import com.xjrsoft.common.constant.GlobalConstant;
  16. import com.xjrsoft.common.enums.EnabledMark;
  17. import com.xjrsoft.common.exception.MyException;
  18. import com.xjrsoft.common.model.result.RT;
  19. import com.xjrsoft.common.page.ConventPage;
  20. import com.xjrsoft.common.page.PageOutput;
  21. import com.xjrsoft.common.utils.RedisUtil;
  22. import com.xjrsoft.common.utils.VoToColumnUtil;
  23. import com.xjrsoft.config.CommonPropertiesConfig;
  24. import com.xjrsoft.module.base.entity.BaseSemester;
  25. import com.xjrsoft.module.base.entity.BaseUserStudent;
  26. import com.xjrsoft.module.base.entity.WhitelistManagement;
  27. import com.xjrsoft.module.base.service.IBaseGradeService;
  28. import com.xjrsoft.module.base.service.IBaseMajorSetService;
  29. import com.xjrsoft.module.base.service.IBaseSemesterService;
  30. import com.xjrsoft.module.base.service.IBaseUserStudentService;
  31. import com.xjrsoft.module.base.service.IWhitelistManagementService;
  32. import com.xjrsoft.module.job.BaseNewStudentTask;
  33. import com.xjrsoft.module.job.EnrollmentStatisticsInfoTask;
  34. import com.xjrsoft.module.organization.entity.User;
  35. import com.xjrsoft.module.organization.entity.UserRoleRelation;
  36. import com.xjrsoft.module.organization.service.IUserRoleRelationService;
  37. import com.xjrsoft.module.organization.service.IUserService;
  38. import com.xjrsoft.module.student.dto.ActiveAccountDto;
  39. import com.xjrsoft.module.student.dto.AddBaseNewStudentDto;
  40. import com.xjrsoft.module.student.dto.BaseNewStudentPageDto;
  41. import com.xjrsoft.module.student.dto.ChangeBandingStatusDto;
  42. import com.xjrsoft.module.student.dto.DeleteNewStudentDto;
  43. import com.xjrsoft.module.student.dto.UpdateBaseNewStudentDto;
  44. import com.xjrsoft.module.student.entity.BaseNewStudent;
  45. import com.xjrsoft.module.student.entity.BaseStudentFamilyMember;
  46. import com.xjrsoft.module.student.service.IBaseNewStudentService;
  47. import com.xjrsoft.module.student.service.IBaseStudentFamilyMemberService;
  48. import com.xjrsoft.module.student.service.IEnrollmentPlanService;
  49. import com.xjrsoft.module.student.service.IPbCseFeeobjupdateService;
  50. import com.xjrsoft.module.student.vo.BaseNewStudentExportVo;
  51. import com.xjrsoft.module.student.vo.BaseNewStudentListExcelVo;
  52. import com.xjrsoft.module.student.vo.BaseNewStudentPageVo;
  53. import com.xjrsoft.module.student.vo.BaseNewStudentScoreExcelVo;
  54. import com.xjrsoft.module.student.vo.BaseNewStudentTreeVo;
  55. import com.xjrsoft.module.student.vo.BaseNewStudentVo;
  56. import com.xjrsoft.module.student.vo.EnrollmentPlanGradeVo;
  57. import com.xjrsoft.module.student.vo.EnrollmentPlanTreeVo;
  58. import io.swagger.annotations.Api;
  59. import io.swagger.annotations.ApiOperation;
  60. import lombok.AllArgsConstructor;
  61. import org.apache.commons.lang3.StringUtils;
  62. import org.springframework.beans.factory.annotation.Autowired;
  63. import org.springframework.http.ResponseEntity;
  64. import org.springframework.web.bind.annotation.DeleteMapping;
  65. import org.springframework.web.bind.annotation.GetMapping;
  66. import org.springframework.web.bind.annotation.PostMapping;
  67. import org.springframework.web.bind.annotation.PutMapping;
  68. import org.springframework.web.bind.annotation.RequestBody;
  69. import org.springframework.web.bind.annotation.RequestMapping;
  70. import org.springframework.web.bind.annotation.RequestParam;
  71. import org.springframework.web.bind.annotation.RestController;
  72. import org.springframework.web.multipart.MultipartFile;
  73. import javax.validation.Valid;
  74. import java.io.ByteArrayOutputStream;
  75. import java.io.IOException;
  76. import java.time.LocalDateTime;
  77. import java.time.format.DateTimeFormatter;
  78. import java.util.ArrayList;
  79. import java.util.Date;
  80. import java.util.LinkedHashMap;
  81. import java.util.List;
  82. import java.util.Map;
  83. import java.util.concurrent.CompletableFuture;
  84. /**
  85. * @title: 新生维护信息
  86. * @Author dzx
  87. * @Date: 2024-06-27
  88. * @Version 1.0
  89. */
  90. @RestController
  91. @RequestMapping("/student" + "/baseNewStudent")
  92. @Api(value = "/student" + "/baseNewStudent",tags = "新生维护信息代码")
  93. @AllArgsConstructor
  94. public class BaseNewStudentController {
  95. private final IUserService userService;
  96. private final IBaseNewStudentService baseNewStudentService;
  97. private final IBaseStudentFamilyMemberService familyMemberService;
  98. private final IWhitelistManagementService whitelistManagementService;
  99. private final IUserRoleRelationService userRoleRelationService;
  100. private final RedisUtil redisUtil;
  101. private final IBaseUserStudentService userStudentService;
  102. private final CommonPropertiesConfig propertiesConfig;
  103. private final IBaseSemesterService semesterService;
  104. private final IPbCseFeeobjupdateService cseFeeobjupdateService;
  105. private final IEnrollmentPlanService planService;
  106. private final IBaseGradeService gradeService;
  107. private final IBaseMajorSetService majorSetService;
  108. @GetMapping(value = "/page")
  109. @ApiOperation(value="新生维护信息列表(分页)")
  110. @SaCheckPermission("basenewstudent:page")
  111. @XjrLog(value = "新生维护信息列表(分页)")
  112. public RT<PageOutput<BaseNewStudentPageVo>> page(@Valid BaseNewStudentPageDto dto){
  113. Page<BaseNewStudentPageVo> page = baseNewStudentService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  114. PageOutput<BaseNewStudentPageVo> pageOutput = ConventPage.getPageOutput(page, BaseNewStudentPageVo.class);
  115. return RT.ok(pageOutput);
  116. }
  117. @GetMapping(value = "/report-page")
  118. @ApiOperation(value="新生报到(分页)")
  119. @SaCheckPermission("basenewstudent:reportpage")
  120. @XjrLog(value = "新生报到(分页)")
  121. public RT<PageOutput<BaseNewStudentPageVo>> reportPage(@Valid BaseNewStudentPageDto dto){
  122. List<String> roleList = StpUtil.getRoleList();
  123. if(roleList.contains("CLASSTE") && roleList.contains("TEACHER") && dto.getTeacherId() == null){
  124. dto.setTeacherId(StpUtil.getLoginIdAsLong());
  125. }
  126. if(dto.getBaseSemesterId() == null){
  127. LambdaQueryWrapper<BaseSemester> queryWrapper = new LambdaQueryWrapper<>();
  128. queryWrapper
  129. .orderByDesc(BaseSemester::getStartDate)
  130. .select(BaseSemester.class,x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()));
  131. List<BaseSemester> semesterList = semesterService.list(queryWrapper);
  132. if(!semesterList.isEmpty()){
  133. dto.setBaseSemesterId(semesterList.get(0).getId());
  134. }
  135. }
  136. Page<BaseNewStudentPageVo> page = baseNewStudentService.getReportPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  137. PageOutput<BaseNewStudentPageVo> pageOutput = ConventPage.getPageOutput(page, BaseNewStudentPageVo.class);
  138. return RT.ok(pageOutput);
  139. }
  140. @GetMapping(value = "/tree")
  141. @ApiOperation(value="新生维护信息树")
  142. @SaCheckPermission("basenewstudent:tree")
  143. @XjrLog(value = "新生维护信息树")
  144. public RT<List<BaseNewStudentTreeVo>> tree(){
  145. List<EnrollmentPlanGradeVo> gradeList = baseNewStudentService.getGradeList();
  146. List<EnrollmentPlanTreeVo> list = baseNewStudentService.getEnrollmentPlanList();
  147. List<BaseNewStudentTreeVo> result = new ArrayList<>();
  148. for (EnrollmentPlanGradeVo gradeVo : gradeList) {
  149. BaseNewStudentTreeVo treeVo = new BaseNewStudentTreeVo() {{
  150. setId(gradeVo.getId());
  151. setName(gradeVo.getName());
  152. setTreeType(1);
  153. }};
  154. List<BaseNewStudentTreeVo> children = new ArrayList<>();
  155. for (EnrollmentPlanTreeVo planTreeVo : list) {
  156. if(planTreeVo.getGradeId().equals(gradeVo.getId())){
  157. children.add(new BaseNewStudentTreeVo() {{
  158. setId(planTreeVo.getId());
  159. setName(planTreeVo.getEnrollTypeCn());
  160. setTreeType(2);
  161. }});
  162. }
  163. }
  164. treeVo.setChildren(children);
  165. result.add(treeVo);
  166. }
  167. return RT.ok(result);
  168. }
  169. @GetMapping(value = "/info")
  170. @ApiOperation(value="根据id查询新生维护信息信息")
  171. @SaCheckPermission("basenewstudent:info")
  172. @XjrLog(value = "根据id查询新生维护信息信息")
  173. public RT<BaseNewStudentVo> info(@RequestParam Long id){
  174. BaseNewStudent baseNewStudent = baseNewStudentService.getById(id);
  175. if (baseNewStudent == null) {
  176. return RT.error("找不到此数据!");
  177. }
  178. return RT.ok(BeanUtil.toBean(baseNewStudent, BaseNewStudentVo.class));
  179. }
  180. @PostMapping
  181. @ApiOperation(value = "新增新生维护信息")
  182. @SaCheckPermission("basenewstudent:add")
  183. @XjrLog(value = "新增新生维护信息")
  184. public RT<Boolean> add(@Valid @RequestBody AddBaseNewStudentDto dto){
  185. BaseNewStudent baseNewStudent = BeanUtil.toBean(dto, BaseNewStudent.class);
  186. baseNewStudent.setFirstAmbitionId(Long.parseLong(dto.getFirstAmbition()));
  187. baseNewStudent.setSecondAmbitionId(Long.parseLong(dto.getSecondAmbition()));
  188. baseNewStudent.setCreateDate(new Date());
  189. boolean isSuccess = baseNewStudentService.save(baseNewStudent);
  190. return RT.ok(isSuccess);
  191. }
  192. @PutMapping
  193. @ApiOperation(value = "修改新生维护信息")
  194. @SaCheckPermission("basenewstudent:edit")
  195. @XjrLog(value = "修改新生维护信息")
  196. public RT<Boolean> update(@Valid @RequestBody UpdateBaseNewStudentDto dto){
  197. BaseNewStudent baseNewStudent = BeanUtil.toBean(dto, BaseNewStudent.class);
  198. return RT.ok(baseNewStudentService.updateById(baseNewStudent));
  199. }
  200. @DeleteMapping
  201. @ApiOperation(value = "删除新生维护信息")
  202. @SaCheckPermission("basenewstudent:delete")
  203. @XjrLog(value = "")
  204. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  205. return RT.ok(baseNewStudentService.removeBatchByIds(ids));
  206. }
  207. @DeleteMapping("deleteByUserIds")
  208. @ApiOperation(value = "删除新生(保留新生信息,删除基础信息)")
  209. @SaCheckPermission("basenewstudent:deletebyuserids")
  210. @XjrLog(value = "删除新生(保留新生信息,删除基础信息)")
  211. public RT<Boolean> deleteByUserIds(@Valid @RequestBody DeleteNewStudentDto dto){
  212. return RT.ok(baseNewStudentService.deleteByUserIds(dto));
  213. }
  214. @PostMapping("/import")
  215. @ApiOperation(value = "导入")
  216. @SaCheckPermission("basenewstudent:import")
  217. @XjrLog(value = "导入", saveRequestData = false, saveResponseData = true)
  218. public RT<List<Map<String, String>>> importData(@RequestParam Long treeId, @RequestParam MultipartFile file) throws IOException {
  219. List<Map<Integer, Object>> errorList = baseNewStudentService.importData(treeId, file);
  220. List<Map<String, String>> result = new ArrayList<>();
  221. for (Map<Integer, Object> objectMap : errorList) {
  222. Map<String, String> object = new LinkedHashMap<>();
  223. object.put("毕业学校", objectMap.get(0)==null?"":objectMap.get(0).toString());
  224. object.put("学生姓名", objectMap.get(1)==null?"":objectMap.get(1).toString());
  225. object.put("性别", objectMap.get(2)==null?"":objectMap.get(2).toString());
  226. object.put("身份证号", objectMap.get(3)==null?"":objectMap.get(3).toString());
  227. object.put("身高(cm)", objectMap.get(4)==null?"":objectMap.get(4).toString());
  228. object.put("体重(kg)", objectMap.get(5)==null?"":objectMap.get(5).toString());
  229. object.put("毕业班级", objectMap.get(6)==null?"":objectMap.get(6).toString());
  230. object.put("学生来源", objectMap.get(7)==null?"":objectMap.get(7).toString());
  231. object.put("住宿类型", objectMap.get(8)==null?"":objectMap.get(8).toString());
  232. object.put("手机号", objectMap.get(9)==null?"":objectMap.get(9).toString());
  233. object.put("第一志愿", objectMap.get(10)==null?"":objectMap.get(10).toString());
  234. object.put("第二志愿", objectMap.get(11)==null?"":objectMap.get(11).toString());
  235. object.put("是否可调配", objectMap.get(12)==null?"":objectMap.get(12).toString());
  236. object.put("家庭电话", objectMap.get(13)==null?"":objectMap.get(13).toString());
  237. object.put("家庭地址", objectMap.get(14)==null?"":objectMap.get(14).toString());
  238. object.put("错误信息", objectMap.get(15)==null?"":objectMap.get(15).toString());
  239. result.add(object);
  240. }
  241. return RT.ok(result);
  242. }
  243. @PostMapping("/score-import")
  244. @ApiOperation(value = "成绩导入")
  245. @SaCheckPermission("basenewstudent:scoreimport")
  246. @XjrLog(value = "导入", saveRequestData = false, saveResponseData = true)
  247. public RT<List<Map<String, String>>> scoreImport(@RequestParam MultipartFile file) throws IOException {
  248. List<BaseNewStudentScoreExcelVo> errorList = baseNewStudentService.scoreImport(file);
  249. List<Map<String, String>> result = new ArrayList<>();
  250. for (BaseNewStudentScoreExcelVo objectMap : errorList) {
  251. Map<String, String> object = new LinkedHashMap<>();
  252. object.put("毕业学校", objectMap.getGraduateSchool());
  253. object.put("姓名", objectMap.getName());
  254. object.put("性别", objectMap.getGender());
  255. object.put("班级", objectMap.getGraduateClass());
  256. object.put("总成绩", objectMap.getScore().intValue() + "");
  257. object.put("错误信息", "未能查询到该学生或该学生存在多个");
  258. result.add(object);
  259. }
  260. return RT.ok(result);
  261. }
  262. @PostMapping("/active-account")
  263. @ApiOperation(value = "激活账号")
  264. @SaCheckPermission("basenewstudent:activeaccount")
  265. @XjrLog(value = "激活账号")
  266. public RT<Boolean> activeAccount(@Valid @RequestBody ActiveAccountDto dto) {
  267. User user = userService.getById(dto.getId());
  268. user.setMobile(dto.getMobile());
  269. user.setEnabledMark(EnabledMark.ENABLED.getCode());
  270. user.setModifyDate(LocalDateTime.now());
  271. String credentialNumber = user.getCredentialNumber();
  272. if (StringUtils.isEmpty(credentialNumber)) {
  273. throw new MyException(user.getName() + "证件号为空,请填写后激活账号");
  274. }
  275. String lastSixDigits = credentialNumber.length() <= 6
  276. ? credentialNumber
  277. : credentialNumber.substring(credentialNumber.length() - 6);
  278. user.setPassword(BCrypt.hashpw(lastSixDigits, BCrypt.gensalt()));
  279. userService.updateById(user);
  280. // 新增家庭成员信息
  281. if(StrUtil.isNotEmpty(dto.getParentName()) && StrUtil.isNotEmpty(dto.getParentMobile())){
  282. List<BaseStudentFamilyMember> list = familyMemberService.list(
  283. new QueryWrapper<BaseStudentFamilyMember>().lambda()
  284. .eq(BaseStudentFamilyMember::getName, dto.getParentName())
  285. .eq(BaseStudentFamilyMember::getUserId, dto.getId())
  286. .eq(BaseStudentFamilyMember::getMobile, dto.getParentMobile())
  287. );
  288. BaseStudentFamilyMember member;
  289. if(list.isEmpty()){
  290. member = new BaseStudentFamilyMember();
  291. member.setUserId(user.getId());
  292. member.setName(dto.getParentName());
  293. member.setMobile(dto.getParentMobile());
  294. member.setCreateDate(LocalDateTime.now());
  295. member.setCreateUserId(StpUtil.getLoginIdAsLong());
  296. familyMemberService.save(member);
  297. }else{
  298. member = list.get(0);
  299. }
  300. List<User> parents = userService.list(
  301. new QueryWrapper<User>().lambda()
  302. .eq(User::getUserName, dto.getParentMobile())
  303. .or()
  304. .eq(User::getMobile, dto.getParentMobile())
  305. );
  306. if(parents.isEmpty()){
  307. User parentUser = new User() {{
  308. setUserName(dto.getParentMobile());
  309. setName(dto.getParentName());
  310. setIsChangePassword(1);
  311. setDeleteMark(0);
  312. setEnabledMark(1);
  313. // setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
  314. setPassword(BCrypt.hashpw(dto.getParentMobile(), BCrypt.gensalt()));
  315. setMobile(dto.getParentMobile());
  316. }};
  317. userService.save(parentUser);
  318. userRoleRelationService.save(new UserRoleRelation(){{
  319. setUserId(parentUser.getId());
  320. setRoleId(4L);
  321. }});
  322. BaseUserStudent userStudent = new BaseUserStudent();
  323. userStudent.setStudentId(user.getId());
  324. userStudent.setStudentNane(user.getName());
  325. userStudent.setStudentIdentity(user.getCredentialNumber());
  326. userStudent.setCreateDate(new Date());
  327. userStudent.setUserId(parentUser.getId());
  328. userStudent.setStatus(1);
  329. userStudentService.save(userStudent);
  330. }else{
  331. User parentUser = parents.get(0);
  332. BaseUserStudent userStudent = new BaseUserStudent();
  333. userStudent.setStudentId(user.getId());
  334. userStudent.setStudentNane(user.getName());
  335. userStudent.setStudentIdentity(user.getCredentialNumber());
  336. userStudent.setCreateDate(new Date());
  337. userStudent.setUserId(parentUser.getId());
  338. userStudent.setStatus(1);
  339. userStudentService.save(userStudent);
  340. }
  341. }
  342. //新增白名单信息
  343. List<WhitelistManagement> managementList = whitelistManagementService.list(
  344. new QueryWrapper<WhitelistManagement>().lambda()
  345. .eq(WhitelistManagement::getUserId, dto.getId())
  346. );
  347. if(managementList.isEmpty()){
  348. WhitelistManagement whitelistManagement = new WhitelistManagement() {{
  349. setName(user.getName());
  350. setUserId(user.getId());
  351. setCreateDate(new Date());
  352. setCredentialNumber(user.getCredentialNumber());
  353. setPhone(user.getMobile());
  354. }};
  355. whitelistManagementService.save(whitelistManagement);
  356. }else{
  357. WhitelistManagement whitelistManagement = managementList.get(0);
  358. whitelistManagement.setName(user.getName());
  359. whitelistManagement.setUserId(user.getId());
  360. whitelistManagement.setModifyDate(new Date());
  361. whitelistManagement.setCredentialNumber(user.getCredentialNumber());
  362. whitelistManagement.setPhone(user.getMobile());
  363. whitelistManagementService.updateById(whitelistManagement);
  364. }
  365. CompletableFuture.runAsync(() -> {
  366. List<User> userList = userService.list();
  367. redisUtil.set(GlobalConstant.USER_CACHE_KEY, userList);
  368. List<UserRoleRelation> userRoleRelationList = userRoleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
  369. redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
  370. whitelistManagementService.loadCaches();
  371. });
  372. return RT.ok(true);
  373. }
  374. @PostMapping("/report-export-query")
  375. @ApiOperation(value = "导出")
  376. @SaCheckPermission("basenewstudent:reportexportquery")
  377. @XjrLog(value = "导出")
  378. public ResponseEntity<byte[]> exportData(@Valid @RequestBody BaseNewStudentPageDto dto) {
  379. if(dto.getBaseSemesterId() == null){
  380. LambdaQueryWrapper<BaseSemester> queryWrapper = new LambdaQueryWrapper<>();
  381. queryWrapper
  382. .orderByDesc(BaseSemester::getStartDate)
  383. .select(BaseSemester.class,x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()));
  384. List<BaseSemester> semesterList = semesterService.list(queryWrapper);
  385. if(!semesterList.isEmpty()){
  386. dto.setBaseSemesterId(semesterList.get(0).getId());
  387. }
  388. }
  389. List<String> roleList = StpUtil.getRoleList();
  390. if(roleList.contains("CLASSTE") && roleList.contains("TEACHER") && dto.getTeacherId() == null){
  391. dto.setTeacherId(StpUtil.getLoginIdAsLong());
  392. }
  393. List<BaseNewStudentPageVo> reportList = baseNewStudentService.getReportList(dto);
  394. List<BaseNewStudentExportVo> exportVos = new ArrayList<>();
  395. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
  396. for (BaseNewStudentPageVo el : reportList) {
  397. BaseNewStudentExportVo vo = BeanUtil.toBean(el, BaseNewStudentExportVo.class);
  398. if(el.getIsReport() == 1){
  399. vo.setReportStatus("是");
  400. }else if(el.getIsReport() == 0){
  401. vo.setReportStatus("否");
  402. }
  403. if(el.getReportTime() != null){
  404. vo.setReportTime(el.getReportTime().format(formatter));
  405. }
  406. exportVos.add(vo);
  407. }
  408. ByteArrayOutputStream bot = new ByteArrayOutputStream();
  409. EasyExcel.write(bot, BaseNewStudentExportVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(exportVos);
  410. return RT.fileStream(bot.toByteArray(), "RoomBed" + ExcelTypeEnum.XLSX.getValue());
  411. }
  412. @PostMapping("/change-banding-status")
  413. @ApiOperation(value = "修改分班状态")
  414. @SaCheckPermission("basenewstudent:changebandingstatus")
  415. @XjrLog(value = "修改分班状态")
  416. public RT<Boolean> changeBandingStatus(@Valid @RequestBody List<ChangeBandingStatusDto> dto){
  417. for (ChangeBandingStatusDto el : dto) {
  418. BaseNewStudent newStudent = baseNewStudentService.getById(el.getId());
  419. UpdateWrapper<BaseNewStudent> updateWrapper = new UpdateWrapper<>();
  420. updateWrapper.eq("id", newStudent.getId());
  421. updateWrapper.setSql("is_can_banding = " + el.getIsCanBanding());
  422. if(StrUtil.isNotEmpty(el.getRemarks())){
  423. updateWrapper.setSql("remarks = '" + el.getRemarks() + "'");
  424. }else{
  425. updateWrapper.setSql("remarks = null");
  426. }
  427. baseNewStudentService.update(newStudent, updateWrapper);
  428. }
  429. return RT.ok(true);
  430. }
  431. @PostMapping(value = "/export-query")
  432. @ApiOperation(value="新生信息导出")
  433. @SaCheckPermission("basenewstudent:exportquery")
  434. @XjrLog(value = "新生信息导出")
  435. public ResponseEntity<byte[]> exportQuerty(@Valid @RequestBody BaseNewStudentPageDto dto){
  436. List<BaseNewStudentListExcelVo> dataList = new ArrayList<>();
  437. List<BaseNewStudentPageVo> list = baseNewStudentService.getList(dto);
  438. int sortCode = 1;
  439. for (BaseNewStudentPageVo pageVo : list) {
  440. BaseNewStudentListExcelVo excelVo = BeanUtil.toBean(pageVo, BaseNewStudentListExcelVo.class);
  441. excelVo.setSortCode(sortCode);
  442. if(pageVo.getStatus() != null && pageVo.getStatus() == 1){
  443. excelVo.setClassState("是");
  444. }else{
  445. excelVo.setClassState("否");
  446. }
  447. if(pageVo.getIsCanBanding() != null && pageVo.getIsCanBanding() == 1){
  448. excelVo.setCanBandingState("是");
  449. }else{
  450. excelVo.setCanBandingState("否");
  451. }
  452. if(pageVo.getOperateMode() != null && pageVo.getOperateMode() == 1){
  453. excelVo.setOperateMode("自动分班");
  454. }else if(pageVo.getOperateMode() != null && pageVo.getOperateMode() == 0){
  455. excelVo.setCanBandingState("手动分班");
  456. }
  457. dataList.add(excelVo);
  458. sortCode ++;
  459. }
  460. ByteArrayOutputStream bot = new ByteArrayOutputStream();
  461. EasyExcel.write(bot, BaseNewStudentListExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
  462. String fileName = "exportQuerty" + ExcelTypeEnum.XLSX.getValue();
  463. return RT.fileStream(bot.toByteArray(), fileName);
  464. }
  465. @GetMapping("/basenewstudent-task-start")
  466. @ApiOperation(value = "触发新生数据同步统计")
  467. @SaCheckPermission("basenewstudent:basenewstudenttaskstart")
  468. @XjrLog(value = "触发新生数据同步统计")
  469. public RT<Boolean> exportData() {
  470. BaseNewStudentTask basenewstudenttask = new BaseNewStudentTask();
  471. basenewstudenttask.doExecute(baseNewStudentService, cseFeeobjupdateService, planService, gradeService, majorSetService);
  472. return RT.ok(true);
  473. }
  474. }