ApiManagerTeacherController.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. package com.ssj.api.controller;
  2. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ExportParams;
  4. import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
  5. import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.ssj.api.domain.vo.homework.CheckDetailVO;
  8. import com.ssj.api.domain.vo.statistics.HomeworkReq;
  9. import com.ssj.api.domain.vo.statistics.ListReq;
  10. import com.ssj.api.domain.vo.teacher.TeacherAddReq;
  11. import com.ssj.api.domain.vo.teacher.TeacherChangeReq;
  12. import com.ssj.api.domain.vo.teacher.TeacherDelReq;
  13. import com.ssj.api.domain.vo.teacher.TeacherReq;
  14. import com.ssj.bean.sys.imlibuser.TbClassTeacherTemp;
  15. import com.ssj.bean.weixin.libmy.domain.TbLibManager;
  16. import com.ssj.framework.core.common.controller.BaseController;
  17. import com.ssj.framework.core.util.Constant;
  18. import com.ssj.framework.core.util.PasswordUtil;
  19. import com.ssj.framework.core.util.ResponseConstant;
  20. import com.ssj.framework.core.util.ResponseEntity;
  21. import com.ssj.framework.weixin.util.DateUtil;
  22. import com.ssj.service.kmt.correctsys.dto.HomeworkPictureCheckDto;
  23. import com.ssj.service.kmt.correctsys.service.KmtCorrectSysService;
  24. import com.ssj.service.sys.homework.service.HomeworkPictureService;
  25. import com.ssj.service.sys.imlibuser.service.TbClassTeacherTempService;
  26. import com.ssj.service.weixin.library.service.IBookManagerService;
  27. import com.ssj.service.weixin.user.service.UserService;
  28. import com.ssj.statistics.service.IStatisticsService;
  29. import com.ssj.statistics.service.ITeacherPayService;
  30. import io.swagger.annotations.Api;
  31. import io.swagger.annotations.ApiOperation;
  32. import org.apache.poi.ss.usermodel.Workbook;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.data.domain.Page;
  35. import org.springframework.web.bind.annotation.*;
  36. import javax.servlet.ServletOutputStream;
  37. import javax.servlet.http.HttpServletResponse;
  38. import java.io.IOException;
  39. import java.time.LocalDate;
  40. import java.time.LocalTime;
  41. import java.time.format.DateTimeFormatter;
  42. import java.util.*;
  43. @Api(value = "平台批改老师相关", tags = "平台批改老师相关")
  44. @RestController
  45. @RequestMapping("/api/teacher")
  46. public class ApiManagerTeacherController extends BaseController {
  47. @Autowired
  48. private IBookManagerService managerService;
  49. @Autowired
  50. private HomeworkPictureService pictureService;
  51. @Autowired
  52. private TbClassTeacherTempService tbLibImTeacherTempService;
  53. @Autowired
  54. private IStatisticsService statisticsService;
  55. @Autowired
  56. private ITeacherPayService teacherPayService;
  57. @Autowired
  58. private KmtCorrectSysService kmtCorrectSysService;
  59. @RequestMapping(value = "/list", method = RequestMethod.POST)
  60. @ApiOperation(value = "获取平台批改老师列表接口", notes = "获取平台批改老师列表接口")
  61. public ResponseEntity list(@RequestParam(name = "accessToken") String accessToken,@RequestBody TeacherReq req) {
  62. ResponseEntity responseEntity = new ResponseEntity();
  63. Map<String,Object> data=new HashMap<>(2);
  64. Map<String,Object> params=new HashMap<>(2);
  65. try {
  66. params.put("type",30);
  67. params.put("name",req.getName());
  68. params.put("mobile",req.getMobile());
  69. Page<Map<String,Object>> list = managerService.findTeacherManagerList(params,initPage(req.getPageNo(),req.getPageSize()));
  70. data.put("list",list.getContent());
  71. data.put("totalNums",list.getTotalElements());
  72. responseEntity.success(data,"获取平台批改老师列表成功!");
  73. } catch (Exception e) {
  74. logger.error("获取平台批改老师列表接口", e);
  75. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  76. }
  77. logger.info("第三方调用接口【/open/api/teacher/list】,返回结果:"+JSONObject.toJSONString(responseEntity));
  78. return responseEntity;
  79. }
  80. @RequestMapping(value = "/delTeacher", method = RequestMethod.POST)
  81. @ApiOperation(value = "注销平台批改老师接口", notes = "注销平台批改老师接口")
  82. public ResponseEntity delTeacher(@RequestParam(name = "accessToken") String accessToken,@RequestBody TeacherDelReq req) {
  83. ResponseEntity responseEntity = new ResponseEntity();
  84. try {
  85. //查询老师是否有作业未批改
  86. String userId = tokenManager.getUserId(accessToken);
  87. TbLibManager managerAdmin = managerService.findAllByUserIdAndTypeAndState(userId,40,1);
  88. if(Objects.isNull(managerAdmin)){
  89. responseEntity.failure(ResponseConstant.CODE_000, "您不是管理员,无权进行此操作!");
  90. return responseEntity;
  91. }
  92. TbLibManager manager = managerService.getById(req.getId());
  93. if(Objects.isNull(manager)){
  94. responseEntity.failure(ResponseConstant.CODE_000, "此老师数据不存在,请检查传参!");
  95. return responseEntity;
  96. }
  97. long count = pictureService.countByTeacherIdAndIsFeedback(manager.getUserId(),0);
  98. if(count >0){
  99. responseEntity.failure(ResponseConstant.CODE_000, "此老师有作业未批改完不能注销!");
  100. return responseEntity;
  101. }
  102. manager.setState(2);
  103. manager.setIsCancelled(1);
  104. manager.setCancelledTime(new Date());
  105. managerService.save(manager);
  106. //登录状态失效
  107. tokenManager.delToken(manager.getUserId());
  108. //注销用户(删除用户)
  109. //userService.delete(manager.getUserId());
  110. responseEntity.success("注销成功!");
  111. } catch (Exception e) {
  112. logger.error("获取平台批改老师列表接口", e);
  113. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  114. }
  115. logger.info("第三方调用接口【/open/api/teacher/delTeacher】,返回结果:"+JSONObject.toJSONString(responseEntity));
  116. return responseEntity;
  117. }
  118. @RequestMapping(value = "/addTeacher", method = RequestMethod.POST)
  119. @ApiOperation(value = "添加平台批改老师接口", notes = "添加平台批改老师接口")
  120. public ResponseEntity addTeacher(@RequestParam(name = "accessToken") String accessToken,@RequestBody TeacherAddReq req) {
  121. ResponseEntity responseEntity = new ResponseEntity();
  122. String userId = tokenManager.getUserId(accessToken);
  123. TbLibManager managerAdmin = managerService.findAllByUserIdAndTypeAndState(userId,40,1);
  124. if(Objects.isNull(managerAdmin)){
  125. responseEntity.failure(ResponseConstant.CODE_000, "您不是管理员,无权进行此操作!");
  126. return responseEntity;
  127. }
  128. try {
  129. TbClassTeacherTemp tbLibImTeacherTemp=new TbClassTeacherTemp();
  130. tbLibImTeacherTemp.setLeagueName("平台批改老师");
  131. tbLibImTeacherTemp.setTeacherName(req.getName());
  132. tbLibImTeacherTemp.setTeacherPhone(req.getMobile());
  133. tbLibImTeacherTemp.setSubject(req.getCourseName());
  134. tbLibImTeacherTemp.setInspectorId(req.getTeacherId());
  135. tbLibImTeacherTemp.setIsCorrect(1);
  136. List<TbClassTeacherTemp> list = new ArrayList<>();
  137. list.add(tbLibImTeacherTemp);
  138. int num = tbLibImTeacherTempService.insertBatchTbAllImTeacher(list);
  139. if(num<1){
  140. responseEntity.failure(ResponseConstant.CODE_000, list.get(0).getErrorReason());
  141. return responseEntity;
  142. }
  143. responseEntity.success("添加成功");
  144. } catch (Exception e) {
  145. logger.error("添加平台批改老师接口", e);
  146. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  147. }
  148. logger.info("第三方调用接口【/open/api/teacher/addTeacher】,返回结果:"+JSONObject.toJSONString(responseEntity));
  149. return responseEntity;
  150. }
  151. @RequestMapping(value = "/checkList", method = RequestMethod.POST)
  152. @ApiOperation(value = "获取质检员老师列表接口", notes = "获取质检员老师列表接口")
  153. public ResponseEntity checkList(@RequestParam(name = "accessToken") String accessToken) {
  154. ResponseEntity responseEntity = new ResponseEntity();
  155. Map<String,Object> data=new HashMap<>(2);
  156. try {
  157. List<TbLibManager> managerList = managerService.findByType(Constant.CHECK_TEACHER_TYPE);
  158. List<Map<String, Object>> list = new ArrayList<>();
  159. managerList.forEach(o->{
  160. Map<String, Object> map = new HashMap<>();
  161. map.put("teacherId",o.getUserId());
  162. map.put("teacherName",o.getName());
  163. list.add(map);
  164. });
  165. data.put("list",list);
  166. responseEntity.success(data,"获取平台批改老师列表成功!");
  167. } catch (Exception e) {
  168. logger.error("获取质检员老师列表接口异常", e);
  169. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  170. }
  171. return responseEntity;
  172. }
  173. @RequestMapping(value = "/changeInspector", method = RequestMethod.POST)
  174. @ApiOperation(value = "更改老师所属质检员", notes = "更改老师所属质检员")
  175. public ResponseEntity changeInspector(@RequestParam(name = "accessToken") String accessToken,@RequestBody TeacherChangeReq req) {
  176. ResponseEntity responseEntity = new ResponseEntity();
  177. Map<String,Object> data=new HashMap<>(2);
  178. try {
  179. TbLibManager manager = managerService.getById(req.getId());
  180. if(Objects.isNull(manager)){
  181. responseEntity.failure(ResponseConstant.CODE_000, "老师数据不存在!");
  182. return responseEntity;
  183. }
  184. manager.setInspectorId(req.getTeacherId());
  185. managerService.save(manager);
  186. responseEntity.success(data,"更改成功!");
  187. } catch (Exception e) {
  188. logger.error("更改老师所属质检员异常", e);
  189. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  190. }
  191. logger.info("第三方调用接口【/open/api/teacher/changeInspector】,接收参数:"+JSONObject.toJSONString(req));
  192. return responseEntity;
  193. }
  194. @RequestMapping(value = "/statisticsList", method = RequestMethod.POST)
  195. @ApiOperation(value = "数据统计列表", notes = "数据统计列表")
  196. public ResponseEntity statisticsList(@RequestParam(name = "accessToken") String accessToken,@RequestBody ListReq req) {
  197. ResponseEntity responseEntity = new ResponseEntity();
  198. Map<String,Object> data=new HashMap<>(2);
  199. Map<String,Object> params=new HashMap<>(2);
  200. try {
  201. params.put("beginDate",req.getBeginDate());
  202. params.put("endDate",req.getEndDate());
  203. params.put("teacherName",req.getTeacherName());
  204. Map<String,Object> total = statisticsService.findTotalData(params);
  205. Page<Map<String,Object>> page = statisticsService.statisticsList(params,initPage(req.getPageNo(),req.getPageSize()));
  206. data.putAll(total);
  207. data.put("list",page.getContent());
  208. data.put("pages",Integer.parseInt(Long.toString(page.getTotalElements())));
  209. responseEntity.success(data,"获取数据统计列表成功");
  210. } catch (Exception e) {
  211. logger.error("数据统计列表异常", e);
  212. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  213. }
  214. return responseEntity;
  215. }
  216. @RequestMapping(value = "/initStatisticsData", method = RequestMethod.POST)
  217. @ApiOperation(value = "数据统计列表", notes = "数据统计列表")
  218. public ResponseEntity statisticsList(@RequestParam(name = "accessToken") String accessToken,String date) {
  219. ResponseEntity responseEntity = new ResponseEntity();
  220. try {
  221. statisticsService.addStatisticsData(date);
  222. responseEntity.success("生成数据统计列表成功");
  223. } catch (Exception e) {
  224. logger.error("数据统计列表异常", e);
  225. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  226. }
  227. return responseEntity;
  228. }
  229. @RequestMapping(value = "/initTeacherPayData", method = RequestMethod.POST)
  230. @ApiOperation(value = "手动生成老师薪酬列表", notes = "手动生成老师薪酬列表")
  231. public ResponseEntity initTeacherPayData(@RequestParam(name = "accessToken") String accessToken,String date) {
  232. ResponseEntity responseEntity = new ResponseEntity();
  233. try {
  234. statisticsService.addTeacherSalarysData(date);
  235. responseEntity.success("生成数据统计列表成功");
  236. } catch (Exception e) {
  237. logger.error("数据统计列表异常", e);
  238. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  239. }
  240. return responseEntity;
  241. }
  242. @RequestMapping(value = "/errorList", method = RequestMethod.POST)
  243. @ApiOperation(value = "查看报错列表", notes = "数据统计列表")
  244. public ResponseEntity errorList(@RequestParam(name = "accessToken") String accessToken,@RequestBody ListReq req) {
  245. ResponseEntity responseEntity = new ResponseEntity();
  246. Map<String,Object> params=new HashMap<>(4);
  247. try {
  248. params.put("beginDate",req.getBeginDate());
  249. params.put("endDate",req.getEndDate());
  250. params.put("teacherId",req.getTeacherId());
  251. params.put("subject",req.getSubject());
  252. Map<String,Object> data = statisticsService.errorList(params,initPage(req.getPageNo(),req.getPageSize()));
  253. responseEntity.success(data,"获取数据统计列表成功");
  254. } catch (Exception e) {
  255. logger.error("数据统计列表异常", e);
  256. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  257. }
  258. return responseEntity;
  259. }
  260. @RequestMapping(value = "/checkDetailList", method = RequestMethod.POST)
  261. @ApiOperation(value = "获取作业列表", notes = "获取作业列表")
  262. public ResponseEntity checkDetailList(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkReq req) {
  263. ResponseEntity responseEntity = new ResponseEntity();
  264. try {
  265. Map<String,Object> data=new HashMap<>(2);
  266. List<CheckDetailVO> list = statisticsService.checkDetailList(req.getHomeworkId());
  267. data.put("list",list);
  268. responseEntity.success(data,"获取数据统计列表成功");
  269. } catch (Exception e) {
  270. logger.error("数据统计列表异常", e);
  271. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  272. }
  273. return responseEntity;
  274. }
  275. @RequestMapping(value = "/checkHomeworkDetailList", method = RequestMethod.POST)
  276. @ApiOperation(value = "查询报错图片列表数据", notes = "查询报错图片列表数据")
  277. public ResponseEntity checkHomeworkDetailList(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkReq req) {
  278. ResponseEntity responseEntity = new ResponseEntity();
  279. try {
  280. List<HomeworkPictureCheckDto> homeworkPictures = kmtCorrectSysService.checkHomeworkDetailList(req.getHomeworkId(),accessToken);
  281. Map<String, Object> data = new HashMap<>();
  282. data.put("homeworkPictures", homeworkPictures);
  283. responseEntity.success(data, "请求成功");
  284. } catch (Exception e) {
  285. logger.error("数据统计列表异常", e);
  286. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  287. }
  288. return responseEntity;
  289. }
  290. @RequestMapping(value = "/pictureDetail", method = RequestMethod.POST)
  291. @ApiOperation(value = "作业批改痕迹", notes = "作业批改痕迹")
  292. public ResponseEntity pictureDetail(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkReq req) {
  293. ResponseEntity responseEntity = new ResponseEntity();
  294. try {
  295. Map<String,Object> data=pictureService.pictureDetail(req.getPictureId());
  296. responseEntity.success(data,"获取成功");
  297. } catch (Exception e) {
  298. logger.error("作业批改痕迹异常", e);
  299. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  300. }
  301. return responseEntity;
  302. }
  303. @RequestMapping(value = "/salaryList", method = RequestMethod.POST)
  304. @ApiOperation(value = "薪酬列表", notes = "薪酬列表")
  305. public ResponseEntity salaryList(@RequestParam(name = "accessToken") String accessToken,@RequestBody TeacherDelReq req) {
  306. ResponseEntity responseEntity = new ResponseEntity();
  307. try {
  308. Map<String,Object> data=new HashMap<>(2);
  309. TbLibManager manager = managerService.getById(req.getId());
  310. if(Objects.isNull(manager)){
  311. return responseEntity.failure(ResponseConstant.CODE_000, "请检查传参id是否正确!");
  312. }
  313. List<Map<String,Object>> list = getSalaryList(manager.getUserId());
  314. data.put("list",list);
  315. data.put("teacherName",manager.getName());
  316. responseEntity.success(data,"获取列表成功");
  317. } catch (Exception e) {
  318. logger.error("薪酬列表异常", e);
  319. responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
  320. }
  321. return responseEntity;
  322. }
  323. @RequestMapping(value = "/exportSalaryList", method = RequestMethod.GET)
  324. @ApiOperation(value = "导出薪酬列表", notes = "导出薪酬列表")
  325. @ResponseBody
  326. public void exportSalaryList(@RequestParam(name = "accessToken") String accessToken,String id) {
  327. ServletOutputStream os = null;
  328. try {
  329. String libName="老师薪酬统计";
  330. //获得输出流
  331. os = response.getOutputStream();
  332. //清空输出流
  333. response.reset();
  334. TbLibManager manager = managerService.getById(id);
  335. exportExcelHead(response,manager.getName()+libName);
  336. List<Map<String,Object>> list = getSalaryList(manager.getUserId());
  337. /**
  338. * workDate string list 日期
  339. * correctNums int list 批注总张数
  340. * overtimeNums int list 超时批注总张数
  341. * perkNums int list 高峰时段批注张数
  342. * perkEfficiency String list 高峰时段平均批注时间
  343. * errorNums int list 报错张数
  344. * accuracy string list 正确率
  345. * perkSalary String list 高峰时段薪资
  346. * otherSalary String list 其他时段薪资
  347. * salary String list 总薪资
  348. */
  349. StringBuilder head = new StringBuilder();
  350. head.append("日期|workDate;批注总张数(张)|correctNums;超时批注总张数(张)|overtimeNums;高峰时段(18:00-20:00)批注张数(张)|perkNums;");
  351. head.append("高峰时段(18:00-20:00)平均批注时间(min/张)|perkEfficiency;报错张数(张)|errorNums;正确率|accuracy;");
  352. head.append("高峰时段薪资(元)|perkSalary;其他时段薪资(元)|otherSalary;总薪资(元)|salary");
  353. List<ExcelExportEntity> entity = addEntity(head.toString());
  354. //把我们构造好的bean对象放到params就可以了
  355. Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(libName, libName, ExcelType.XSSF), entity,
  356. list);
  357. workbook.write(os);
  358. }catch (IOException e) {
  359. logger.error("异常", e);
  360. } catch (Exception e) {
  361. logger.error("作业批改痕迹异常", e);
  362. }finally {
  363. if(os != null){
  364. try {
  365. os.flush();
  366. os.close();
  367. } catch (IOException e) {
  368. logger.error("异常", e);
  369. }
  370. }
  371. }
  372. }
  373. @RequestMapping(value = "/exportStatisticsList", method = RequestMethod.GET)
  374. @ApiOperation(value = "导出数据统计列表", notes = "导出数据统计列表")
  375. @ResponseBody
  376. public void exportStatisticsList(@RequestParam(name = "accessToken") String accessToken,String beginDate,String endDate,String teacherName) {
  377. ServletOutputStream os = null;
  378. try {
  379. String libName="数据统计";
  380. //获得输出流
  381. os = response.getOutputStream();
  382. //清空输出流
  383. response.reset();
  384. exportExcelHead(response,libName);
  385. Map<String,Object> params = new HashMap<>(4);
  386. params.put("beginDate",beginDate);
  387. params.put("endDate",endDate);
  388. params.put("teacherName",teacherName);
  389. Page<Map<String,Object>> page = statisticsService.statisticsList(params,initPage(1,100000));
  390. /**
  391. * teacherName string list 老师姓名
  392. * subject string list 科目
  393. * allSubject string list 老师拥有的科目,多科目英文逗号隔开,
  394. * correctNums int list 批注页数
  395. * overtimeNums int list 超时批注页数
  396. * notCorrectNums int list 未批注页数
  397. * notCommentNums int list 不批注页数
  398. * repeatNums int list 重复页数
  399. * accuracy string list 正确率
  400. * errorNums int list 报错页数
  401. */
  402. List<Map<String,Object>> list = new ArrayList<>();
  403. list.addAll(page.getContent());
  404. StringBuilder head = new StringBuilder();
  405. head.append("姓名|teacherName;科目|subject;批注页数|correctNums;超时批注页数|overtimeNums;");
  406. head.append("未批注页数|notCorrectNums;不批注页数|notCommentNums;重复页数|repeatNums;");
  407. head.append("批注正确率|accuracy;报错页数|errorNums");
  408. List<ExcelExportEntity> entity = addEntity(head.toString());
  409. //把我们构造好的bean对象放到params就可以了
  410. Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(libName, libName, ExcelType.XSSF), entity,
  411. list);
  412. workbook.write(os);
  413. }catch (IOException e) {
  414. logger.error("异常", e);
  415. } catch (Exception e) {
  416. logger.error("作业批改痕迹异常", e);
  417. }finally {
  418. if(os != null){
  419. try {
  420. os.flush();
  421. os.close();
  422. } catch (IOException e) {
  423. logger.error("异常", e);
  424. }
  425. }
  426. }
  427. }
  428. private List<Map<String,Object>> getSalaryList(String userId){
  429. //计算今天日期
  430. LocalDate date = LocalDate.now();
  431. int day = date.getDayOfMonth();
  432. LocalTime time = LocalTime.now();
  433. boolean lastMonth = day< 4 || (day==4 && time.getHour()<12);
  434. LocalDate localDate = lastMonth?date.minusMonths(2):date.minusMonths(1);
  435. int month = localDate.getMonthValue();
  436. int year = localDate.getYear();
  437. return teacherPayService.salaryList(userId,month,year);
  438. }
  439. private List<ExcelExportEntity> addEntity(String exportHead){
  440. List<ExcelExportEntity> entity = new ArrayList<>();
  441. String[] headArr = exportHead.split(";");
  442. for (String str:headArr){
  443. int index = str.indexOf("|");
  444. entity.add(new ExcelExportEntity(str.substring(0,index), str.substring(index+1)));
  445. }
  446. return entity;
  447. }
  448. private void exportExcelHead(HttpServletResponse response, String fileName) throws Exception{
  449. String lastFileName = new String(fileName.getBytes("gb2312"), "ISO8859-1") +".xlsx";
  450. //设定输出文件头
  451. response.setHeader("Content-disposition", "attachment; filename="+ lastFileName);
  452. response.setContentType("application/vnd.ms-excel;charset=UTF-8");
  453. response.setCharacterEncoding("utf-8");
  454. }
  455. }