package com.xjrsoft.module.textbook.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.xjrsoft.common.model.result.RT; import com.xjrsoft.common.page.ConventPage; import com.xjrsoft.common.page.PageOutput; import com.xjrsoft.common.utils.VoToColumnUtil; import com.xjrsoft.module.base.entity.BaseClass; import com.xjrsoft.module.base.entity.BaseGrade; import com.xjrsoft.module.base.service.IBaseClassService; import com.xjrsoft.module.student.entity.BaseClassMajorSet; import com.xjrsoft.module.teacher.entity.XjrUser; import com.xjrsoft.module.textbook.dto.*; import com.xjrsoft.module.textbook.entity.TextbookSubscription; import com.xjrsoft.module.textbook.entity.TextbookSubscriptionClass; import com.xjrsoft.module.textbook.service.ITextbookSubscriptionService; import com.xjrsoft.module.textbook.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; /** * @title: 教材教辅征订记录表 * @Author dzx * @Date: 2024-12-16 * @Version 1.0 */ @RestController @RequestMapping("/textbook" + "/textbookSubscription") @Api(value = "/textbook" + "/textbookSubscription",tags = "教材教辅征订记录表代码") @AllArgsConstructor public class TextbookSubscriptionController { private final ITextbookSubscriptionService textbookSubscriptionService; private final IBaseClassService baseClassService; @GetMapping(value = "/page") @ApiOperation(value="教材教辅征订记录列表(分页)") @SaCheckPermission("textbooksubscription:detail") public RT> page(@Valid TextbookSubscriptionPageDto dto){ IPage page = textbookSubscriptionService.pageRubAndHand(dto); PageOutput pageOutput = ConventPage.getPageOutput(page, TextbookSubscriptionPageVo.class); return RT.ok(pageOutput); } @GetMapping(value = "/list") @ApiOperation(value="教材教辅征订记录表列表(不分页)") @SaCheckPermission("textbooksubscription:detail") public RT> list(@Valid TextbookSubscriptionListDto dto){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper .orderByDesc(TextbookSubscription::getId) .select(TextbookSubscription.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionListVo.class).contains(x.getProperty())); List list = textbookSubscriptionService.list(queryWrapper); List listVos = BeanUtil.copyToList(list, TextbookSubscriptionListVo.class); return RT.ok(listVos); } @GetMapping(value = "/instockroom-list") @ApiOperation(value = "教材教辅征订入库用页面") @SaCheckPermission("textbooksubscription:detail") public RT> instockroomList(@Valid TextbookInstockroomListDto dto) { List list = textbookSubscriptionService.instockroomList(dto); return RT.ok(list); } @GetMapping(value = "/every-instockroom-list") @ApiOperation(value = "教材教辅征订每次入库详情") @SaCheckPermission("textbooksubscription:detail") public RT> everyInstockroomList(@Valid TextbookInstockroomOnceListDto dto) { List list = textbookSubscriptionService.everyInstockroomList(dto); return RT.ok(list); } @GetMapping(value = "/baseclass-page") @ApiOperation(value="征订班级列表(分页)") @SaCheckPermission("textbooksubscription:detail") public RT> baseclassPage(@Valid BaseclassPageDto dto){ MPJLambdaWrapper baseClassMPJLambdaWrapper = new MPJLambdaWrapper<>(); baseClassMPJLambdaWrapper .selectAs(BaseGrade::getName, BaseclassPageVo::getGradeIdCn) .selectAs(XjrUser::getName, BaseclassPageVo::getTeacherIdCn) .selectAs(BaseClassMajorSet::getTotalStudent, BaseclassPageVo::getTotalStudent) .select(BaseClass.class,x -> VoToColumnUtil.fieldsToColumns(BaseclassPageVo.class).contains(x.getProperty())) .innerJoin(TextbookSubscriptionClass.class, TextbookSubscriptionClass::getBaseClassId, BaseClass::getId) .leftJoin(BaseGrade.class, BaseGrade::getId, BaseClass::getGradeId) .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId) .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, BaseClass::getId) .eq(TextbookSubscriptionClass::getTextbookSubscriptionId, dto.getId()) ; IPage baseclassPageVos = baseClassService.selectJoinListPage(ConventPage.getPage(dto), BaseclassPageVo.class, baseClassMPJLambdaWrapper); PageOutput pageOutput = ConventPage.getPageOutput(baseclassPageVos, BaseclassPageVo.class); return RT.ok(pageOutput); } @GetMapping(value = "/info") @ApiOperation(value="根据id查询教材教辅征订记录表信息") @SaCheckPermission("textbooksubscription:detail") public RT info(@RequestParam Long id){ TextbookSubscriptionVo textbookSubscriptionVo = textbookSubscriptionService.infoRubAndHand(id); if (textbookSubscriptionVo == null) { return RT.error("找不到此数据!"); } return RT.ok(textbookSubscriptionVo); } @GetMapping(value = "/detail") @ApiOperation(value="根据id查询教材教辅征订详情") @SaCheckPermission("textbooksubscription:detail") public RT detail(@RequestParam Long id){ TextbookSubscriptionDetailVo textbookSubscriptionDetailVo = textbookSubscriptionService.detail(id); if (textbookSubscriptionDetailVo == null) { return RT.error("找不到此数据!"); } return RT.ok(textbookSubscriptionDetailVo); } @GetMapping(value = "/item-page") @ApiOperation(value="教材教辅征订明细列表(分页)") @SaCheckPermission("textbooksubscription:detail") public RT> itemPage(@Valid TextbookSubscriptionItemPageDto dto){ IPage page = textbookSubscriptionService.itemPage(dto); PageOutput pageOutput = ConventPage.getPageOutput(page, TextbookSubscriptionItemPageVo.class); return RT.ok(pageOutput); } @GetMapping(value = "/item-list-confirm-distribute") @ApiOperation(value="教材确认发放页面使用教材征订明细(不分页)") @SaCheckPermission("textbooksubscription:detail") public RT> itemListConfirmDistribute(@Valid SubscriptionItemListDistributeDto dto){ List list = textbookSubscriptionService.itemListConfirmDistribute(dto); return RT.ok(list); } @PostMapping @ApiOperation(value = "新增教材教辅征订记录表") @SaCheckPermission("textbooksubscription:add") public RT add(@Valid @RequestBody AddTextbookSubscriptionDto dto){ TextbookSubscription textbookSubscription = BeanUtil.toBean(dto, TextbookSubscription.class); boolean isSuccess = textbookSubscriptionService.add(textbookSubscription); return RT.ok(isSuccess); } @PutMapping @ApiOperation(value = "修改教材教辅征订记录表") @SaCheckPermission("textbooksubscription:edit") public RT update(@Valid @RequestBody UpdateTextbookSubscriptionDto dto){ TextbookSubscription textbookSubscription = BeanUtil.toBean(dto, TextbookSubscription.class); return RT.ok(textbookSubscriptionService.update(textbookSubscription)); } @PutMapping(value = "/change-status") @ApiOperation(value = "修改征订状态") @SaCheckPermission("textbooksubscription:edit") public RT changeStatus(@Valid @RequestBody UpdateWfTextbookSubscriptionDto dto){ return RT.ok(textbookSubscriptionService.changeStatus(dto)); } @PostMapping(value = "/instockroom") @ApiOperation(value="手动填写入库") @SaCheckPermission("textbooksubscription:detail") public RT instockroom(@Valid @RequestBody List dtos){ return RT.ok(textbookSubscriptionService.instockroom(dtos)); } @PostMapping("/instockroom-excel-import") @ApiOperation(value = "导入入库") public RT instockroomExcelImport(@RequestParam("file") MultipartFile file, @RequestParam(value = "textbookSubscriptionId") Long textbookSubscriptionId) throws IOException { InputStream inputStream = file.getInputStream(); return RT.ok(textbookSubscriptionService.instockroomExcelImport(inputStream, textbookSubscriptionId)); } @DeleteMapping @ApiOperation(value = "删除教材教辅征订记录表") @SaCheckPermission("textbooksubscription:delete") public RT delete(@Valid @RequestBody List ids){ return RT.ok(textbookSubscriptionService.delete(ids)); } @PostMapping("/import") @ApiOperation(value = "导入") public RT importData(@RequestParam MultipartFile file) throws IOException { List savedDataList = EasyExcel.read(file.getInputStream()).head(TextbookSubscriptionListVo.class).sheet().doReadSync(); Boolean result = textbookSubscriptionService.saveBatch(BeanUtil.copyToList(savedDataList, TextbookSubscription.class)); return RT.ok(result); } @GetMapping("/export") @ApiOperation(value = "导出") public ResponseEntity exportData(@Valid TextbookSubscriptionListDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) { List customerList = (List) list(dto).getData(); ByteArrayOutputStream bot = new ByteArrayOutputStream(); EasyExcel.write(bot, TextbookSubscriptionListVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList); return RT.fileStream(bot.toByteArray(), "TextbookSubscription" + ExcelTypeEnum.XLSX.getValue()); } // @PostMapping("/textbook-subscription-export-query") // @ApiOperation(value = "教材征订条件导出") // public ResponseEntity textbookSubscriptionExportQuery(@Valid @RequestBody TextbookSubscriptionExportQueryListDto dto) { @GetMapping("/textbook-subscription-export-query") @ApiOperation(value = "教材征订条件导出") public ResponseEntity textbookSubscriptionExportQuery(@Valid TextbookSubscriptionExportQueryListDto dto) { List customerList = textbookSubscriptionService.textbookSubscriptionExportQuery(dto); ByteArrayOutputStream bot = new ByteArrayOutputStream(); EasyExcel.write(bot, TextbookSubscriptionExportQueryListVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList); return RT.fileStream(bot.toByteArray(), "TextbookSubscription" + ExcelTypeEnum.XLSX.getValue()); } }