BaseNewStudentController.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  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:detail")
  111. public RT<PageOutput<BaseNewStudentPageVo>> page(@Valid BaseNewStudentPageDto dto){
  112. Page<BaseNewStudentPageVo> page = baseNewStudentService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  113. PageOutput<BaseNewStudentPageVo> pageOutput = ConventPage.getPageOutput(page, BaseNewStudentPageVo.class);
  114. return RT.ok(pageOutput);
  115. }
  116. @GetMapping(value = "/report-page")
  117. @ApiOperation(value="新生报到(分页)")
  118. @SaCheckPermission("basenewstudent:detail")
  119. public RT<PageOutput<BaseNewStudentPageVo>> reportPage(@Valid BaseNewStudentPageDto dto){
  120. List<String> roleList = StpUtil.getRoleList();
  121. if(roleList.contains("CLASSTE") && roleList.contains("TEACHER") && dto.getTeacherId() == null){
  122. dto.setTeacherId(StpUtil.getLoginIdAsLong());
  123. }
  124. if(dto.getBaseSemesterId() == null){
  125. LambdaQueryWrapper<BaseSemester> queryWrapper = new LambdaQueryWrapper<>();
  126. queryWrapper
  127. .orderByDesc(BaseSemester::getStartDate)
  128. .select(BaseSemester.class,x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()));
  129. List<BaseSemester> semesterList = semesterService.list(queryWrapper);
  130. if(!semesterList.isEmpty()){
  131. dto.setBaseSemesterId(semesterList.get(0).getId());
  132. }
  133. }
  134. Page<BaseNewStudentPageVo> page = baseNewStudentService.getReportPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  135. PageOutput<BaseNewStudentPageVo> pageOutput = ConventPage.getPageOutput(page, BaseNewStudentPageVo.class);
  136. return RT.ok(pageOutput);
  137. }
  138. @GetMapping(value = "/tree")
  139. @ApiOperation(value="新生维护信息树")
  140. @SaCheckPermission("basenewstudent:detail")
  141. public RT<List<BaseNewStudentTreeVo>> tree(){
  142. List<EnrollmentPlanGradeVo> gradeList = baseNewStudentService.getGradeList();
  143. List<EnrollmentPlanTreeVo> list = baseNewStudentService.getEnrollmentPlanList();
  144. List<BaseNewStudentTreeVo> result = new ArrayList<>();
  145. for (EnrollmentPlanGradeVo gradeVo : gradeList) {
  146. BaseNewStudentTreeVo treeVo = new BaseNewStudentTreeVo() {{
  147. setId(gradeVo.getId());
  148. setName(gradeVo.getName());
  149. setTreeType(1);
  150. }};
  151. List<BaseNewStudentTreeVo> children = new ArrayList<>();
  152. for (EnrollmentPlanTreeVo planTreeVo : list) {
  153. if(planTreeVo.getGradeId().equals(gradeVo.getId())){
  154. children.add(new BaseNewStudentTreeVo() {{
  155. setId(planTreeVo.getId());
  156. setName(planTreeVo.getEnrollTypeCn());
  157. setTreeType(2);
  158. }});
  159. }
  160. }
  161. treeVo.setChildren(children);
  162. result.add(treeVo);
  163. }
  164. return RT.ok(result);
  165. }
  166. @GetMapping(value = "/info")
  167. @ApiOperation(value="根据id查询新生维护信息信息")
  168. @SaCheckPermission("basenewstudent:detail")
  169. public RT<BaseNewStudentVo> info(@RequestParam Long id){
  170. BaseNewStudent baseNewStudent = baseNewStudentService.getById(id);
  171. if (baseNewStudent == null) {
  172. return RT.error("找不到此数据!");
  173. }
  174. return RT.ok(BeanUtil.toBean(baseNewStudent, BaseNewStudentVo.class));
  175. }
  176. @PostMapping
  177. @ApiOperation(value = "新增新生维护信息")
  178. @SaCheckPermission("basenewstudent:add")
  179. public RT<Boolean> add(@Valid @RequestBody AddBaseNewStudentDto dto){
  180. BaseNewStudent baseNewStudent = BeanUtil.toBean(dto, BaseNewStudent.class);
  181. baseNewStudent.setFirstAmbitionId(Long.parseLong(dto.getFirstAmbition()));
  182. baseNewStudent.setSecondAmbitionId(Long.parseLong(dto.getSecondAmbition()));
  183. baseNewStudent.setCreateDate(new Date());
  184. boolean isSuccess = baseNewStudentService.save(baseNewStudent);
  185. return RT.ok(isSuccess);
  186. }
  187. @PutMapping
  188. @ApiOperation(value = "修改新生维护信息")
  189. @SaCheckPermission("basenewstudent:edit")
  190. public RT<Boolean> update(@Valid @RequestBody UpdateBaseNewStudentDto dto){
  191. BaseNewStudent baseNewStudent = BeanUtil.toBean(dto, BaseNewStudent.class);
  192. return RT.ok(baseNewStudentService.updateById(baseNewStudent));
  193. }
  194. @DeleteMapping
  195. @ApiOperation(value = "删除新生维护信息")
  196. @SaCheckPermission("basenewstudent:delete")
  197. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  198. return RT.ok(baseNewStudentService.removeBatchByIds(ids));
  199. }
  200. @DeleteMapping("deleteByUserIds")
  201. @ApiOperation(value = "删除新生(保留新生信息,删除基础信息)")
  202. @SaCheckPermission("basenewstudent:delete")
  203. public RT<Boolean> deleteByUserIds(@Valid @RequestBody DeleteNewStudentDto dto){
  204. return RT.ok(baseNewStudentService.deleteByUserIds(dto));
  205. }
  206. @PostMapping("/import")
  207. @ApiOperation(value = "导入")
  208. public RT<List<Map<String, String>>> importData(@RequestParam Long treeId, @RequestParam MultipartFile file) throws IOException {
  209. List<Map<Integer, Object>> errorList = baseNewStudentService.importData(treeId, file);
  210. List<Map<String, String>> result = new ArrayList<>();
  211. for (Map<Integer, Object> objectMap : errorList) {
  212. Map<String, String> object = new LinkedHashMap<>();
  213. object.put("毕业学校", objectMap.get(0)==null?"":objectMap.get(0).toString());
  214. object.put("学生姓名", objectMap.get(1)==null?"":objectMap.get(1).toString());
  215. object.put("性别", objectMap.get(2)==null?"":objectMap.get(2).toString());
  216. object.put("身份证号", objectMap.get(3)==null?"":objectMap.get(3).toString());
  217. object.put("身高(cm)", objectMap.get(4)==null?"":objectMap.get(4).toString());
  218. object.put("体重(kg)", objectMap.get(5)==null?"":objectMap.get(5).toString());
  219. object.put("毕业班级", objectMap.get(6)==null?"":objectMap.get(6).toString());
  220. object.put("学生来源", objectMap.get(7)==null?"":objectMap.get(7).toString());
  221. object.put("住宿类型", objectMap.get(8)==null?"":objectMap.get(8).toString());
  222. object.put("手机号", objectMap.get(9)==null?"":objectMap.get(9).toString());
  223. object.put("第一志愿", objectMap.get(10)==null?"":objectMap.get(10).toString());
  224. object.put("第二志愿", objectMap.get(11)==null?"":objectMap.get(11).toString());
  225. object.put("是否可调配", objectMap.get(12)==null?"":objectMap.get(12).toString());
  226. object.put("家庭电话", objectMap.get(13)==null?"":objectMap.get(13).toString());
  227. object.put("家庭地址", objectMap.get(14)==null?"":objectMap.get(14).toString());
  228. object.put("错误信息", objectMap.get(15)==null?"":objectMap.get(15).toString());
  229. result.add(object);
  230. }
  231. return RT.ok(result);
  232. }
  233. @PostMapping("/score-import")
  234. @ApiOperation(value = "成绩导入")
  235. public RT<List<Map<String, String>>> scoreImport(@RequestParam MultipartFile file) throws IOException {
  236. List<BaseNewStudentScoreExcelVo> errorList = baseNewStudentService.scoreImport(file);
  237. List<Map<String, String>> result = new ArrayList<>();
  238. for (BaseNewStudentScoreExcelVo objectMap : errorList) {
  239. Map<String, String> object = new LinkedHashMap<>();
  240. object.put("毕业学校", objectMap.getGraduateSchool());
  241. object.put("姓名", objectMap.getName());
  242. object.put("性别", objectMap.getGender());
  243. object.put("班级", objectMap.getGraduateClass());
  244. object.put("总成绩", objectMap.getScore().intValue() + "");
  245. object.put("错误信息", "未能查询到该学生或该学生存在多个");
  246. result.add(object);
  247. }
  248. return RT.ok(result);
  249. }
  250. @PostMapping("/active-account")
  251. @ApiOperation(value = "激活账号")
  252. public RT<Boolean> activeAccount(@Valid @RequestBody ActiveAccountDto dto) {
  253. User user = userService.getById(dto.getId());
  254. user.setMobile(dto.getMobile());
  255. user.setEnabledMark(EnabledMark.ENABLED.getCode());
  256. user.setModifyDate(LocalDateTime.now());
  257. String credentialNumber = user.getCredentialNumber();
  258. if (StringUtils.isEmpty(credentialNumber)) {
  259. throw new MyException(user.getName() + "证件号为空,请填写后激活账号");
  260. }
  261. String lastSixDigits = credentialNumber.length() <= 6
  262. ? credentialNumber
  263. : credentialNumber.substring(credentialNumber.length() - 6);
  264. user.setPassword(BCrypt.hashpw(lastSixDigits, BCrypt.gensalt()));
  265. userService.updateById(user);
  266. // 新增家庭成员信息
  267. if(StrUtil.isNotEmpty(dto.getParentName()) && StrUtil.isNotEmpty(dto.getParentMobile())){
  268. List<BaseStudentFamilyMember> list = familyMemberService.list(
  269. new QueryWrapper<BaseStudentFamilyMember>().lambda()
  270. .eq(BaseStudentFamilyMember::getName, dto.getParentName())
  271. .eq(BaseStudentFamilyMember::getUserId, dto.getId())
  272. .eq(BaseStudentFamilyMember::getMobile, dto.getParentMobile())
  273. );
  274. BaseStudentFamilyMember member;
  275. if(list.isEmpty()){
  276. member = new BaseStudentFamilyMember();
  277. member.setUserId(user.getId());
  278. member.setName(dto.getParentName());
  279. member.setMobile(dto.getParentMobile());
  280. member.setCreateDate(LocalDateTime.now());
  281. member.setCreateUserId(StpUtil.getLoginIdAsLong());
  282. familyMemberService.save(member);
  283. }else{
  284. member = list.get(0);
  285. }
  286. List<User> parents = userService.list(
  287. new QueryWrapper<User>().lambda()
  288. .eq(User::getUserName, dto.getParentMobile())
  289. .or()
  290. .eq(User::getMobile, dto.getParentMobile())
  291. );
  292. if(parents.isEmpty()){
  293. User parentUser = new User() {{
  294. setUserName(dto.getParentMobile());
  295. setName(dto.getParentName());
  296. setIsChangePassword(1);
  297. setDeleteMark(0);
  298. setEnabledMark(1);
  299. // setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
  300. setPassword(BCrypt.hashpw(dto.getParentMobile(), BCrypt.gensalt()));
  301. setMobile(dto.getParentMobile());
  302. }};
  303. userService.save(parentUser);
  304. userRoleRelationService.save(new UserRoleRelation(){{
  305. setUserId(parentUser.getId());
  306. setRoleId(4L);
  307. }});
  308. BaseUserStudent userStudent = new BaseUserStudent();
  309. userStudent.setStudentId(user.getId());
  310. userStudent.setStudentNane(user.getName());
  311. userStudent.setStudentIdentity(user.getCredentialNumber());
  312. userStudent.setCreateDate(new Date());
  313. userStudent.setUserId(parentUser.getId());
  314. userStudent.setStatus(1);
  315. userStudentService.save(userStudent);
  316. }else{
  317. User parentUser = parents.get(0);
  318. BaseUserStudent userStudent = new BaseUserStudent();
  319. userStudent.setStudentId(user.getId());
  320. userStudent.setStudentNane(user.getName());
  321. userStudent.setStudentIdentity(user.getCredentialNumber());
  322. userStudent.setCreateDate(new Date());
  323. userStudent.setUserId(parentUser.getId());
  324. userStudent.setStatus(1);
  325. userStudentService.save(userStudent);
  326. }
  327. }
  328. //新增白名单信息
  329. List<WhitelistManagement> managementList = whitelistManagementService.list(
  330. new QueryWrapper<WhitelistManagement>().lambda()
  331. .eq(WhitelistManagement::getUserId, dto.getId())
  332. );
  333. if(managementList.isEmpty()){
  334. WhitelistManagement whitelistManagement = new WhitelistManagement() {{
  335. setName(user.getName());
  336. setUserId(user.getId());
  337. setCreateDate(new Date());
  338. setCredentialNumber(user.getCredentialNumber());
  339. setPhone(user.getMobile());
  340. }};
  341. whitelistManagementService.save(whitelistManagement);
  342. }else{
  343. WhitelistManagement whitelistManagement = managementList.get(0);
  344. whitelistManagement.setName(user.getName());
  345. whitelistManagement.setUserId(user.getId());
  346. whitelistManagement.setModifyDate(new Date());
  347. whitelistManagement.setCredentialNumber(user.getCredentialNumber());
  348. whitelistManagement.setPhone(user.getMobile());
  349. whitelistManagementService.updateById(whitelistManagement);
  350. }
  351. CompletableFuture.runAsync(() -> {
  352. List<User> userList = userService.list();
  353. redisUtil.set(GlobalConstant.USER_CACHE_KEY, userList);
  354. List<UserRoleRelation> userRoleRelationList = userRoleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
  355. redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
  356. whitelistManagementService.loadCaches();
  357. });
  358. return RT.ok(true);
  359. }
  360. @PostMapping("/report-export-query")
  361. @ApiOperation(value = "导出")
  362. public ResponseEntity<byte[]> exportData(@Valid @RequestBody BaseNewStudentPageDto dto) {
  363. if(dto.getBaseSemesterId() == null){
  364. LambdaQueryWrapper<BaseSemester> queryWrapper = new LambdaQueryWrapper<>();
  365. queryWrapper
  366. .orderByDesc(BaseSemester::getStartDate)
  367. .select(BaseSemester.class,x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()));
  368. List<BaseSemester> semesterList = semesterService.list(queryWrapper);
  369. if(!semesterList.isEmpty()){
  370. dto.setBaseSemesterId(semesterList.get(0).getId());
  371. }
  372. }
  373. List<String> roleList = StpUtil.getRoleList();
  374. if(roleList.contains("CLASSTE") && roleList.contains("TEACHER") && dto.getTeacherId() == null){
  375. dto.setTeacherId(StpUtil.getLoginIdAsLong());
  376. }
  377. List<BaseNewStudentPageVo> reportList = baseNewStudentService.getReportList(dto);
  378. List<BaseNewStudentExportVo> exportVos = new ArrayList<>();
  379. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
  380. for (BaseNewStudentPageVo el : reportList) {
  381. BaseNewStudentExportVo vo = BeanUtil.toBean(el, BaseNewStudentExportVo.class);
  382. if(el.getIsReport() == 1){
  383. vo.setReportStatus("是");
  384. }else if(el.getIsReport() == 0){
  385. vo.setReportStatus("否");
  386. }
  387. if(el.getReportTime() != null){
  388. vo.setReportTime(el.getReportTime().format(formatter));
  389. }
  390. exportVos.add(vo);
  391. }
  392. ByteArrayOutputStream bot = new ByteArrayOutputStream();
  393. EasyExcel.write(bot, BaseNewStudentExportVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(exportVos);
  394. return RT.fileStream(bot.toByteArray(), "RoomBed" + ExcelTypeEnum.XLSX.getValue());
  395. }
  396. @PostMapping("/change-banding-status")
  397. @ApiOperation(value = "修改分班状态")
  398. @SaCheckPermission("basenewstudent:add")
  399. public RT<Boolean> changeBandingStatus(@Valid @RequestBody List<ChangeBandingStatusDto> dto){
  400. for (ChangeBandingStatusDto el : dto) {
  401. BaseNewStudent newStudent = baseNewStudentService.getById(el.getId());
  402. UpdateWrapper<BaseNewStudent> updateWrapper = new UpdateWrapper<>();
  403. updateWrapper.eq("id", newStudent.getId());
  404. updateWrapper.setSql("is_can_banding = " + el.getIsCanBanding());
  405. if(StrUtil.isNotEmpty(el.getRemarks())){
  406. updateWrapper.setSql("remarks = '" + el.getRemarks() + "'");
  407. }else{
  408. updateWrapper.setSql("remarks = null");
  409. }
  410. baseNewStudentService.update(newStudent, updateWrapper);
  411. }
  412. return RT.ok(true);
  413. }
  414. @PostMapping(value = "/export-query")
  415. @ApiOperation(value="新生信息导出")
  416. @SaCheckPermission("basenewstudent:detail")
  417. @XjrLog(value = "新生信息导出")
  418. public ResponseEntity<byte[]> exportQuerty(@Valid @RequestBody BaseNewStudentPageDto dto){
  419. List<BaseNewStudentListExcelVo> dataList = new ArrayList<>();
  420. List<BaseNewStudentPageVo> list = baseNewStudentService.getList(dto);
  421. int sortCode = 1;
  422. for (BaseNewStudentPageVo pageVo : list) {
  423. BaseNewStudentListExcelVo excelVo = BeanUtil.toBean(pageVo, BaseNewStudentListExcelVo.class);
  424. excelVo.setSortCode(sortCode);
  425. if(pageVo.getStatus() != null && pageVo.getStatus() == 1){
  426. excelVo.setClassState("是");
  427. }else{
  428. excelVo.setClassState("否");
  429. }
  430. if(pageVo.getIsCanBanding() != null && pageVo.getIsCanBanding() == 1){
  431. excelVo.setCanBandingState("是");
  432. }else{
  433. excelVo.setCanBandingState("否");
  434. }
  435. if(pageVo.getOperateMode() != null && pageVo.getOperateMode() == 1){
  436. excelVo.setOperateMode("自动分班");
  437. }else if(pageVo.getOperateMode() != null && pageVo.getOperateMode() == 0){
  438. excelVo.setCanBandingState("手动分班");
  439. }
  440. dataList.add(excelVo);
  441. sortCode ++;
  442. }
  443. ByteArrayOutputStream bot = new ByteArrayOutputStream();
  444. EasyExcel.write(bot, BaseNewStudentListExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
  445. String fileName = "exportQuerty" + ExcelTypeEnum.XLSX.getValue();
  446. return RT.fileStream(bot.toByteArray(), fileName);
  447. }
  448. @GetMapping("/basenewstudent-task-start")
  449. @ApiOperation(value = "触发新生数据同步统计")
  450. @XjrLog(value = "触发新生数据同步统计")
  451. public RT<Boolean> exportData() {
  452. BaseNewStudentTask basenewstudenttask = new BaseNewStudentTask();
  453. basenewstudenttask.doExecute(baseNewStudentService, cseFeeobjupdateService, planService, gradeService, majorSetService);
  454. return RT.ok(true);
  455. }
  456. }