TextbookSubscriptionController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package com.xjrsoft.module.textbook.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.alibaba.excel.EasyExcel;
  5. import com.alibaba.excel.support.ExcelTypeEnum;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  9. import com.xjrsoft.common.model.result.RT;
  10. import com.xjrsoft.common.page.ConventPage;
  11. import com.xjrsoft.common.page.PageOutput;
  12. import com.xjrsoft.common.utils.VoToColumnUtil;
  13. import com.xjrsoft.module.textbook.dto.*;
  14. import com.xjrsoft.module.textbook.entity.TextbookSubscription;
  15. import com.xjrsoft.module.textbook.entity.TextbookSubscriptionItem;
  16. import com.xjrsoft.module.textbook.service.ITextbookSubscriptionService;
  17. import com.xjrsoft.module.textbook.vo.*;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import lombok.AllArgsConstructor;
  21. import org.springframework.http.ResponseEntity;
  22. import org.springframework.web.bind.annotation.*;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import javax.validation.Valid;
  25. import java.io.ByteArrayOutputStream;
  26. import java.io.IOException;
  27. import java.io.InputStream;
  28. import java.util.List;
  29. /**
  30. * @title: 教材教辅征订记录表
  31. * @Author dzx
  32. * @Date: 2024-12-16
  33. * @Version 1.0
  34. */
  35. @RestController
  36. @RequestMapping("/textbook" + "/textbookSubscription")
  37. @Api(value = "/textbook" + "/textbookSubscription",tags = "教材教辅征订记录表代码")
  38. @AllArgsConstructor
  39. public class TextbookSubscriptionController {
  40. private final ITextbookSubscriptionService textbookSubscriptionService;
  41. @GetMapping(value = "/page")
  42. @ApiOperation(value="教材教辅征订记录列表(分页)")
  43. @SaCheckPermission("textbooksubscription:detail")
  44. public RT<PageOutput<TextbookSubscriptionPageVo>> page(@Valid TextbookSubscriptionPageDto dto){
  45. IPage<TextbookSubscriptionPageVo> page = textbookSubscriptionService.pageRubAndHand(dto);
  46. PageOutput<TextbookSubscriptionPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookSubscriptionPageVo.class);
  47. return RT.ok(pageOutput);
  48. }
  49. @GetMapping(value = "/list")
  50. @ApiOperation(value="教材教辅征订记录表列表(不分页)")
  51. @SaCheckPermission("textbooksubscription:detail")
  52. public RT<List<TextbookSubscriptionListVo>> list(@Valid TextbookSubscriptionListDto dto){
  53. LambdaQueryWrapper<TextbookSubscription> queryWrapper = new LambdaQueryWrapper<>();
  54. queryWrapper
  55. .orderByDesc(TextbookSubscription::getId)
  56. .select(TextbookSubscription.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionListVo.class).contains(x.getProperty()));
  57. List<TextbookSubscription> list = textbookSubscriptionService.list(queryWrapper);
  58. List<TextbookSubscriptionListVo> listVos = BeanUtil.copyToList(list, TextbookSubscriptionListVo.class);
  59. return RT.ok(listVos);
  60. }
  61. @GetMapping(value = "/history-list")
  62. @ApiOperation(value="教材教辅征订历史列表(不分页)")
  63. @SaCheckPermission("wftextbooksubscription:detail")
  64. public RT<List<TextbookSubscriptionHistoryListVo>> historyList(@Valid TextbookSubscriptionHistoryListDto dto){
  65. MPJLambdaWrapper<TextbookSubscription> queryWrapper = new MPJLambdaWrapper<>();
  66. queryWrapper
  67. .selectAs(TextbookSubscriptionItem::getStudentNum, TextbookSubscriptionHistoryListVo::getStudentSubscriptionNumber)
  68. .selectAs(TextbookSubscriptionItem::getTeacherNum, TextbookSubscriptionHistoryListVo::getTeacherSubscriptionNumber)
  69. .selectAs(TextbookSubscription::getCreateDate, TextbookSubscriptionHistoryListVo::getCreateDate)
  70. .rightJoin(TextbookSubscriptionItem.class, TextbookSubscriptionItem::getTextbookSubscriptionId, TextbookSubscription::getId)
  71. .eq(TextbookSubscriptionItem::getTextbookId, dto.getTextbookId())
  72. .eq(TextbookSubscription::getBaseSemesterId, dto.getBaseSemesterId())
  73. .ne(TextbookSubscription::getStatus, 0)
  74. ;
  75. List<TextbookSubscriptionHistoryListVo> list = textbookSubscriptionService.selectJoinList(TextbookSubscriptionHistoryListVo.class, queryWrapper);
  76. return RT.ok(list);
  77. }
  78. @GetMapping(value = "/instockroom-list")
  79. @ApiOperation(value = "教材教辅征订入库用页面")
  80. @SaCheckPermission("textbooksubscription:detail")
  81. public RT<List<TextbookInstockroomListVo>> instockroomList(@Valid TextbookInstockroomListDto dto) {
  82. List<TextbookInstockroomListVo> list = textbookSubscriptionService.instockroomList(dto);
  83. return RT.ok(list);
  84. }
  85. @GetMapping(value = "/every-instockroom-list")
  86. @ApiOperation(value = "教材教辅征订每次入库详情")
  87. @SaCheckPermission("textbooksubscription:detail")
  88. public RT<List<TextbookInstockroomOnceListVo>> everyInstockroomList(@Valid TextbookInstockroomOnceListDto dto) {
  89. List<TextbookInstockroomOnceListVo> list = textbookSubscriptionService.everyInstockroomList(dto);
  90. return RT.ok(list);
  91. }
  92. @GetMapping(value = "/baseclass-page")
  93. @ApiOperation(value="征订班级列表(分页)")
  94. @SaCheckPermission("textbooksubscription:detail")
  95. public RT<PageOutput<BaseclassPageVo>> baseclassPage(@Valid BaseclassPageDto dto){
  96. IPage<BaseclassPageVo> page = textbookSubscriptionService.baseclassPage(dto);
  97. PageOutput<BaseclassPageVo> pageOutput = ConventPage.getPageOutput(page, BaseclassPageVo.class);
  98. return RT.ok(pageOutput);
  99. }
  100. @GetMapping(value = "/info")
  101. @ApiOperation(value="根据id查询教材教辅征订记录表信息")
  102. @SaCheckPermission("textbooksubscription:detail")
  103. public RT<TextbookSubscriptionVo> info(@RequestParam Long id){
  104. TextbookSubscriptionVo textbookSubscriptionVo = textbookSubscriptionService.infoRubAndHand(id);
  105. if (textbookSubscriptionVo == null) {
  106. return RT.error("找不到此数据!");
  107. }
  108. return RT.ok(textbookSubscriptionVo);
  109. }
  110. @GetMapping(value = "/detail")
  111. @ApiOperation(value="根据id查询教材教辅征订详情")
  112. @SaCheckPermission("textbooksubscription:detail")
  113. public RT<TextbookSubscriptionDetailVo> detail(@RequestParam Long id){
  114. TextbookSubscriptionDetailVo textbookSubscriptionDetailVo = textbookSubscriptionService.detail(id);
  115. if (textbookSubscriptionDetailVo == null) {
  116. return RT.error("找不到此数据!");
  117. }
  118. return RT.ok(textbookSubscriptionDetailVo);
  119. }
  120. @GetMapping(value = "/item-page")
  121. @ApiOperation(value="教材教辅征订明细列表(分页)")
  122. @SaCheckPermission("textbooksubscription:detail")
  123. public RT<PageOutput<TextbookSubscriptionItemPageVo>> itemPage(@Valid TextbookSubscriptionItemPageDto dto){
  124. IPage<TextbookSubscriptionItemPageVo> page = textbookSubscriptionService.itemPage(dto);
  125. PageOutput<TextbookSubscriptionItemPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookSubscriptionItemPageVo.class);
  126. return RT.ok(pageOutput);
  127. }
  128. @GetMapping(value = "/item-list-confirm-distribute")
  129. @ApiOperation(value="教材确认发放页面使用教材征订明细(不分页)")
  130. @SaCheckPermission("textbooksubscription:detail")
  131. public RT<List<SubscriptionItemListDistributeVo>> itemListConfirmDistribute(@Valid SubscriptionItemListDistributeDto dto){
  132. List<SubscriptionItemListDistributeVo> list = textbookSubscriptionService.itemListConfirmDistribute(dto);
  133. return RT.ok(list);
  134. }
  135. @PostMapping
  136. @ApiOperation(value = "新增教材教辅征订记录表")
  137. @SaCheckPermission("textbooksubscription:add")
  138. public RT<Boolean> add(@Valid @RequestBody AddTextbookSubscriptionDto dto){
  139. TextbookSubscription textbookSubscription = BeanUtil.toBean(dto, TextbookSubscription.class);
  140. boolean isSuccess = textbookSubscriptionService.add(textbookSubscription);
  141. return RT.ok(isSuccess);
  142. }
  143. @PutMapping
  144. @ApiOperation(value = "修改教材教辅征订记录表")
  145. @SaCheckPermission("textbooksubscription:edit")
  146. public RT<Boolean> update(@Valid @RequestBody UpdateTextbookSubscriptionDto dto){
  147. TextbookSubscription textbookSubscription = BeanUtil.toBean(dto, TextbookSubscription.class);
  148. return RT.ok(textbookSubscriptionService.update(textbookSubscription));
  149. }
  150. @PutMapping("/alteration")
  151. @ApiOperation(value = "变更")
  152. @SaCheckPermission("wftextbooksubscription:edit")
  153. public RT<Boolean> alteration(@Valid @RequestBody UpdateTextbookSubscriptionItemDto dto){
  154. return RT.ok(textbookSubscriptionService.alteration(dto));
  155. }
  156. @PutMapping(value = "/change-status")
  157. @ApiOperation(value = "修改征订状态")
  158. @SaCheckPermission("textbooksubscription:edit")
  159. public RT<Boolean> changeStatus(@Valid @RequestBody UpdateWfTextbookSubscriptionDto dto){
  160. return RT.ok(textbookSubscriptionService.changeStatus(dto));
  161. }
  162. @PostMapping(value = "/instockroom")
  163. @ApiOperation(value="手动填写入库")
  164. @SaCheckPermission("textbooksubscription:detail")
  165. public RT<Boolean> instockroom(@Valid @RequestBody List<TextbookInstockroomDto> dtos){
  166. return RT.ok(textbookSubscriptionService.instockroom(dtos));
  167. }
  168. @PostMapping("/instockroom-excel-import")
  169. @ApiOperation(value = "导入入库")
  170. public RT<String> instockroomExcelImport(@RequestParam("file") MultipartFile file, @RequestParam(value = "textbookSubscriptionId") Long textbookSubscriptionId) throws IOException {
  171. InputStream inputStream = file.getInputStream();
  172. return RT.ok(textbookSubscriptionService.instockroomExcelImport(inputStream, textbookSubscriptionId));
  173. }
  174. @DeleteMapping
  175. @ApiOperation(value = "删除教材教辅征订记录表")
  176. @SaCheckPermission("textbooksubscription:delete")
  177. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  178. return RT.ok(textbookSubscriptionService.delete(ids));
  179. }
  180. @PostMapping("/import")
  181. @ApiOperation(value = "导入")
  182. public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
  183. List<TextbookSubscriptionListVo> savedDataList = EasyExcel.read(file.getInputStream()).head(TextbookSubscriptionListVo.class).sheet().doReadSync();
  184. Boolean result = textbookSubscriptionService.saveBatch(BeanUtil.copyToList(savedDataList, TextbookSubscription.class));
  185. return RT.ok(result);
  186. }
  187. @GetMapping("/export")
  188. @ApiOperation(value = "导出")
  189. public ResponseEntity<byte[]> exportData(@Valid TextbookSubscriptionListDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
  190. List<TextbookSubscriptionListVo> customerList = (List<TextbookSubscriptionListVo>) list(dto).getData();
  191. ByteArrayOutputStream bot = new ByteArrayOutputStream();
  192. EasyExcel.write(bot, TextbookSubscriptionListVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
  193. return RT.fileStream(bot.toByteArray(), "TextbookSubscription" + ExcelTypeEnum.XLSX.getValue());
  194. }
  195. @PostMapping("/textbook-subscription-export-query")
  196. @ApiOperation(value = "教材征订条件导出")
  197. public ResponseEntity<byte[]> textbookSubscriptionExportQuery(@Valid @RequestBody TextbookSubscriptionExportQueryListDto dto) {
  198. // @GetMapping("/textbook-subscription-export-query")
  199. // @ApiOperation(value = "教材征订条件导出")
  200. // public ResponseEntity<byte[]> textbookSubscriptionExportQuery(@Valid TextbookSubscriptionExportQueryListDto dto) {
  201. List<TextbookSubscriptionExportQueryListVo> customerList = textbookSubscriptionService.textbookSubscriptionExportQuery(dto);
  202. ByteArrayOutputStream bot = new ByteArrayOutputStream();
  203. EasyExcel.write(bot, TextbookSubscriptionExportQueryListVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
  204. return RT.fileStream(bot.toByteArray(), "TextbookSubscription" + ExcelTypeEnum.XLSX.getValue());
  205. }
  206. }