浏览代码

征订导出

大数据与最优化研究所 1 年之前
父节点
当前提交
9f31670ba6

+ 50 - 10
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java

@@ -20,22 +20,24 @@ import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
+import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.oa.vo.NewsGradeClassTreeVo;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
 import com.xjrsoft.module.student.vo.BaseClassQfCountVo;
 import com.xjrsoft.module.student.vo.BaseClassTreeVo;
-import com.xjrsoft.module.textbook.dto.AddWfTextbookSubscriptionDto;
-import com.xjrsoft.module.textbook.dto.TextbookSubscriptionHistoryListDto;
-import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.textbook.dto.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
+import com.xjrsoft.module.textbook.entity.Textbook;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
 import com.xjrsoft.module.textbook.vo.*;
 import org.springframework.http.ResponseEntity;
 import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
+import java.util.*;
 
-import com.xjrsoft.module.textbook.dto.WfTextbookSubscriptionPageDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
 import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
 
@@ -46,9 +48,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -66,7 +65,7 @@ public class WfTextbookSubscriptionController {
 
     private final IWfTextbookSubscriptionService wfTextbookSubscriptionService;
 
-    private final BaseClassMapper baseClassMapper;
+    private final IBaseClassService baseClassService;
 
     @GetMapping(value = "/tree")
     @ApiOperation(value = "学生年级班级树")
@@ -90,7 +89,7 @@ public class WfTextbookSubscriptionController {
                 .eq(BaseClass::getDeleteMark, 0)
                 .eq(BaseClass::getIsGraduate, 1)
         ;
-        List<GradeClassListVo> gradeClassTreeVoList = baseClassMapper.selectJoinList(GradeClassListVo.class, baseClassMPJLambdaWrapper);
+        List<GradeClassListVo> gradeClassTreeVoList = baseClassService.selectJoinList(GradeClassListVo.class, baseClassMPJLambdaWrapper);
 
         //年级Map
         Map<String, GradeClassTreeVo> gradeMap = new HashMap<>();
@@ -138,6 +137,32 @@ public class WfTextbookSubscriptionController {
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/baseclass-page")
+    @ApiOperation(value="征订班级列表(分页)")
+    @SaCheckPermission("wftextbooksubscription:detail")
+    public RT<PageOutput<BaseclassPageVo>> baseclassPage(@Valid BaseclassPageDto dto){
+        if(dto.getClassIds() == null || dto.getClassIds().equals("")){
+            return RT.ok(null);
+        }
+        String classIds = dto.getClassIds();
+        String[] classIdArr = classIds.split(",");
+        List<String> classIdList = Arrays.asList(classIdArr);
+        MPJLambdaWrapper<BaseClass> 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()))
+                .leftJoin(BaseGrade.class, BaseGrade::getId, BaseClass::getGradeId)
+                .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
+                .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, BaseClass::getId)
+                .in(BaseClass::getId, classIdList)
+                ;
+        IPage<BaseclassPageVo> baseclassPageVos = baseClassService.selectJoinListPage(ConventPage.getPage(dto), BaseclassPageVo.class, baseClassMPJLambdaWrapper);
+        PageOutput<BaseclassPageVo> pageOutput = ConventPage.getPageOutput(baseclassPageVos, BaseclassPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/history-list")
     @ApiOperation(value="教材教辅征订历史列表(分页)")
     @SaCheckPermission("wftextbooksubscription:detail")
@@ -212,4 +237,19 @@ public class WfTextbookSubscriptionController {
 
         return RT.fileStream(bot.toByteArray(), "WfTextbookSubscription" + ExcelTypeEnum.XLSX.getValue());
     }
+
+//    @PostMapping("/textbook-subscription-export-query")
+//    @ApiOperation(value = "教材征订条件导出")
+//    public ResponseEntity<byte[]> textbookSubscriptionExportQuery(@Valid @RequestBody TextbookSubscriptionExportQueryListDto dto) {
+    @GetMapping("/textbook-subscription-export-query")
+    @ApiOperation(value = "教材征订条件导出")
+    public ResponseEntity<byte[]> textbookSubscriptionExportQuery(@Valid TextbookSubscriptionExportQueryListDto dto) {
+
+
+        List<TextbookSubscriptionExportQueryListVo> customerList = wfTextbookSubscriptionService.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());
+    }
 }

+ 25 - 0
src/main/java/com/xjrsoft/module/textbook/dto/BaseclassPageDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.textbook.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教材管理分页查询入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class BaseclassPageDto extends PageInput {
+    /**
+     * 使用班级
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("使用班级")
+    @ApiModelProperty("使用班级")
+    private String classIds;
+}

+ 23 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookSubscriptionExportQueryListDto.java

@@ -0,0 +1,23 @@
+package com.xjrsoft.module.textbook.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教材管理分页查询入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TextbookSubscriptionExportQueryListDto {
+    /**
+     * 教材教辅征订编号
+     */
+    @ApiModelProperty("教材教辅征订编号")
+    private Long wfTextbookSubscriptionId;
+}

+ 4 - 0
src/main/java/com/xjrsoft/module/textbook/service/IWfTextbookSubscriptionService.java

@@ -2,8 +2,10 @@ package com.xjrsoft.module.textbook.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.textbook.dto.TextbookSubscriptionExportQueryListDto;
 import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
+import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
 import lombok.Data;
 import java.util.List;
@@ -43,4 +45,6 @@ public interface IWfTextbookSubscriptionService extends MPJBaseService<WfTextboo
     Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto);
 
     WfTextbookSubscriptionVo getInfo(Long id);
+
+    List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto);
 }

+ 61 - 6
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookSubscriptionServiceImpl.java

@@ -7,6 +7,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseCourseSubject;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.oa.entity.NewsRelation;
@@ -15,16 +16,15 @@ import com.xjrsoft.module.system.entity.Databaselink;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
+import com.xjrsoft.module.textbook.dto.TextbookSubscriptionExportQueryListDto;
 import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
-import com.xjrsoft.module.textbook.entity.Textbook;
-import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
-import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
+import com.xjrsoft.module.textbook.entity.*;
 import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionRecordMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemMapper;
-import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionMapper;
 import com.xjrsoft.module.textbook.service.ITextbookService;
 import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
+import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionItemVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionPageVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
@@ -170,20 +170,23 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
 
         MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
         mpjLambdaWrapper
+                .selectAs(BaseCourseSubject::getName, WfTextbookSubscriptionItemVo::getCourseSubjectIdCn)
                 .select(WfTextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
-                .select(Textbook.class,x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
+                .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
                 .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
                 .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
                         ext -> ext.selectAs(DictionaryDetail::getName, WfTextbookSubscriptionItemVo::getTextbookTypeCn))
+                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
                 .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
                 ;
         List<WfTextbookSubscriptionItemVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(WfTextbookSubscriptionItemVo.class, mpjLambdaWrapper);
 
         //处理班级
+        String classIds = "";
         List<String> classIdList = new ArrayList<>();
         StringBuilder sb = new StringBuilder();
         if(!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")){
-            String classIds = itemList.get(0).getClassIds();
+            classIds = itemList.get(0).getClassIds();
             String[] classIdArr = classIds.split(",");
             classIdList = Arrays.asList(classIdArr);
             if(!classIdList.isEmpty()){
@@ -218,6 +221,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
         }
 
         wfTextbookSubscriptionVo.setClassIdsCn(sb.toString());
+        wfTextbookSubscriptionVo.setClassIds(classIds);
         wfTextbookSubscriptionVo.setStudentSubscriptionNumberSum(stuSum);
         wfTextbookSubscriptionVo.setTeacherSubscriptionNumberSum(teaSum);
         wfTextbookSubscriptionVo.setSum(stuSum + teaSum);
@@ -225,4 +229,55 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
 
         return wfTextbookSubscriptionVo;
     }
+
+    @Override
+    public List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto) {
+        WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getWfTextbookSubscriptionId());
+        if(wfTextbookSubscription == null){
+            return null;
+        }
+
+        MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
+        mpjLambdaWrapper
+                .selectAs(BaseCourseSubject::getName, TextbookSubscriptionExportQueryListVo::getCourseName)
+                .select(WfTextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
+                .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
+                .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
+                        ext -> ext.selectAs(DictionaryDetail::getName, TextbookSubscriptionExportQueryListVo::getTextbookTypeCn))
+                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
+                .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
+        ;
+        List<TextbookSubscriptionExportQueryListVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(TextbookSubscriptionExportQueryListVo.class, mpjLambdaWrapper);
+
+        //处理班级
+        String classIds = "";
+        List<String> classIdList = new ArrayList<>();
+        StringBuilder sb = new StringBuilder();
+        if(!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")){
+            classIds = itemList.get(0).getClassIds();
+            String[] classIdArr = classIds.split(",");
+            classIdList = Arrays.asList(classIdArr);
+            /*if(!classIdList.isEmpty()){
+                List<BaseClass> baseClassList = baseClassMapper.selectList(Wrappers.<BaseClass>query().lambda().in(BaseClass::getId, classIdList));
+                Map<Long, BaseClass> baseClassMap = baseClassList.stream()
+                        .collect(Collectors.toMap(BaseClass::getId, baseClass -> baseClass));
+
+                for (String classId : classIdList){
+                    BaseClass baseClass = baseClassMap.get(Long.parseLong(classId));
+                    if(baseClass != null){
+                        sb.append(baseClass.getName());
+                        sb.append(",");
+                    }
+                }
+                sb.deleteCharAt(sb.length() - 1);
+            }*/
+        }
+
+        for (TextbookSubscriptionExportQueryListVo w : itemList){
+            w.setClassNum(classIdList.size());
+        }
+
+        return itemList;
+    }
 }

+ 31 - 0
src/main/java/com/xjrsoft/module/textbook/vo/BaseclassPageVo.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.textbook.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 教材管理表单出参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class BaseclassPageVo {
+    @ApiModelProperty("班级名称")
+    private String name;
+
+    @ApiModelProperty("所属年级(base_grade)")
+    private Long gradeId;
+
+    @ApiModelProperty("所属年级(base_grade)")
+    private String gradeIdCn;
+
+    @ApiModelProperty("班主任(xjr_user)")
+    private Long teacherId;
+
+    @ApiModelProperty("班主任(xjr_user)")
+    private String teacherIdCn;
+
+    @ApiModelProperty("班级人数")
+    private Integer totalStudent;
+}

+ 76 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionExportQueryListVo.java

@@ -0,0 +1,76 @@
+package com.xjrsoft.module.textbook.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+* @title: 教材教辅征订项表单出参
+* @Author szs
+* @Date: 2024-06-04
+* @Version 1.0
+*/
+@Data
+public class TextbookSubscriptionExportQueryListVo {
+
+    /**
+     * 课程
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("课程")
+    @ApiModelProperty("课程")
+    private String courseName;
+    /**
+     * 书名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("书名")
+    @ApiModelProperty("书名")
+    private String bookName;
+    /**
+     * 出版社
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("出版社")
+    @ApiModelProperty("出版社")
+    private String publishingHouse;
+    /**
+     * 教材类型(xjr_dictionary_item[textbook_type])
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("出版社")
+    @ApiModelProperty("教材类型")
+    private String textbookTypeCn;
+    /**
+     * 学生用书征订数量
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学生用书征订数量")
+    @ApiModelProperty("学生用书征订数量")
+    private Integer studentSubscriptionNumber;
+    /**
+     * 教师教材征订数量
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教师教材征订数量")
+    @ApiModelProperty("教师教材征订数量")
+    private Integer teacherSubscriptionNumber;
+    /**
+     * 使用班级数
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelIgnore
+    @ApiModelProperty("使用班级")
+    private String classIds;
+    /**
+     * 使用班级数
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("使用班级数")
+    @ApiModelProperty("使用班级数")
+    private Integer classNum;
+}

+ 5 - 0
src/main/java/com/xjrsoft/module/textbook/vo/WfTextbookSubscriptionItemVo.java

@@ -88,6 +88,11 @@ public class WfTextbookSubscriptionItemVo {
     */
     @ApiModelProperty("课程编号(base_course_subject)")
     private Long courseSubjectId;
+    /**
+     * 课程编号(base_course_subject)
+     */
+    @ApiModelProperty("课程编号(base_course_subject)")
+    private String courseSubjectIdCn;
     /**
     * 班级编号(多个)
     */