TextbookSubscriptionController.java 12 KB

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