Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dzx 1 năm trước cách đây
mục cha
commit
4c7bfd6ba8

+ 5 - 0
src/main/java/com/xjrsoft/module/student/vo/StudentPersonalInfoVo.java

@@ -34,6 +34,11 @@ public class StudentPersonalInfoVo {
     */
     @ApiModelProperty("班级名称")
     private String className;
+    /**
+     * 班级名称
+     */
+    @ApiModelProperty("班级名称")
+    private String classId;
     /**
     * 身份证号
     */

+ 26 - 0
src/main/java/com/xjrsoft/module/textbook/controller/TextbookController.java

@@ -101,6 +101,32 @@ public class TextbookController {
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/page-consumption")
+    @ApiOperation(value="教材管理列表(分页,学生收费用)")
+    @SaCheckPermission("textbook:detail")
+    public RT<PageOutput<TextbookConsumptionPageVo>> pageConsumption(@Valid TextbookConsumptionPageDto dto){
+        MPJLambdaWrapper<Textbook> textbookMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        textbookMPJLambdaWrapper
+                .select(Textbook::getId)
+                .selectAs(Textbook::getId,TextbookConsumptionPageVo::getTextbookId)
+                .selectAs(BaseCourseSubject::getName, TextbookConsumptionPageVo::getCourseSubjectIdCn)
+                .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookConsumptionPageVo.class).contains(x.getProperty()))
+                .leftJoin(TextbookClassRelation.class, TextbookClassRelation::getTextbookId, Textbook::getId)
+                .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, TextbookClassRelation::getClassId)
+                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
+                .eq(dto.getBaseSemesterId() != null && dto.getBaseSemesterId() > 0, Textbook::getBaseSemesterId, dto.getBaseSemesterId())
+                .eq(dto.getClassId() != null && dto.getClassId() > 0,TextbookClassRelation::getClassId, dto.getClassId())
+        ;
+        IPage<TextbookConsumptionPageVo> page = textbookService.selectJoinListPage(ConventPage.getPage(dto),TextbookConsumptionPageVo.class,textbookMPJLambdaWrapper);
+        for(TextbookConsumptionPageVo t : page.getRecords()){
+            if(t.getTextbookType() != null && !t.getTextbookType().equals("")){
+                t.setTextbookTypeCn(TextbookTypeEnum.getValue(t.getTextbookType()));
+            }
+        }
+        PageOutput<TextbookConsumptionPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookConsumptionPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/List-subscription")
     @ApiOperation(value="教材管理列表(不分页,教材征订用)")
     @SaCheckPermission("textbook:detail")

+ 6 - 7
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java

@@ -145,14 +145,13 @@ public class WfTextbookSubscriptionController {
 
         MPJLambdaWrapper<WfTextbookSubscription> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
-                .selectSum(WfTextbookSubscriptionItem::getStudentSubscriptionNumber, TextbookSubscriptionHistoryListVo::getTeacherSubscriptionNumber)
+                .selectSum(WfTextbookSubscriptionItem::getStudentSubscriptionNumber, TextbookSubscriptionHistoryListVo::getStudentSubscriptionNumber)
                 .selectSum(WfTextbookSubscriptionItem::getTeacherSubscriptionNumber, TextbookSubscriptionHistoryListVo::getTeacherSubscriptionNumber)
-                .selectAs(WfTextbookSubscriptionItem::getTextbookId, TextbookSubscriptionHistoryListVo::getTextbookId)
+                .selectAs(WfTextbookSubscription::getCreateDate, TextbookSubscriptionHistoryListVo::getCreateDate)
                 .rightJoin(WfTextbookSubscriptionItem.class, WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, WfTextbookSubscription::getId)
                 .eq(WfTextbookSubscriptionItem::getTextbookId, dto.getTextbookId())
                 .eq(WfTextbookSubscription::getBaseSemesterId, dto.getBaseSemesterId())
-                .orderByDesc(WfTextbookSubscription::getCreateDate)
-                .groupBy("t.id,t`.textbook_id")
+                .groupBy("t.id,t1.textbook_id")
         ;
         List<TextbookSubscriptionHistoryListVo> list = wfTextbookSubscriptionService.selectJoinList(TextbookSubscriptionHistoryListVo.class, queryWrapper);
         return RT.ok(list);
@@ -162,11 +161,11 @@ public class WfTextbookSubscriptionController {
     @ApiOperation(value="根据id查询教材教辅征订信息")
     @SaCheckPermission("wftextbooksubscription:detail")
     public RT<WfTextbookSubscriptionVo> info(@RequestParam Long id){
-        WfTextbookSubscription wfTextbookSubscription = wfTextbookSubscriptionService.getByIdDeep(id);
-        if (wfTextbookSubscription == null) {
+        WfTextbookSubscriptionVo wfTextbookSubscriptionVo = wfTextbookSubscriptionService.getInfo(id);
+        if (wfTextbookSubscriptionVo == null) {
            return RT.error("找不到此数据!");
         }
-        return RT.ok(BeanUtil.toBean(wfTextbookSubscription, WfTextbookSubscriptionVo.class));
+        return RT.ok(wfTextbookSubscriptionVo);
     }
 
 

+ 27 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookConsumptionPageDto.java

@@ -0,0 +1,27 @@
+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 TextbookConsumptionPageDto extends PageInput {
+    /**
+     * 班级
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班级")
+    private Long classId;
+
+    @ApiModelProperty("学期id")
+    public Long baseSemesterId;
+}

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
+import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
 import lombok.Data;
 import java.util.List;
 
@@ -40,4 +41,6 @@ public interface IWfTextbookSubscriptionService extends MPJBaseService<WfTextboo
     Boolean delete(List<Long> ids);
 
     Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto);
+
+    WfTextbookSubscriptionVo getInfo(Long id);
 }

+ 82 - 3
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookSubscriptionServiceImpl.java

@@ -3,10 +3,20 @@ package com.xjrsoft.module.textbook.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+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.mapper.BaseClassMapper;
+import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.oa.entity.NewsRelation;
+import com.xjrsoft.module.oa.vo.NewsAppendixVo;
+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.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.mapper.TextbookSubscriptionRecordMapper;
@@ -15,13 +25,14 @@ 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.WfTextbookSubscriptionItemVo;
+import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionPageVo;
+import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 
@@ -42,6 +53,8 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
 
     private final ITextbookService textbookService;
 
+    private final BaseClassMapper baseClassMapper;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(WfTextbookSubscription wfTextbookSubscription) {
@@ -146,4 +159,70 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
         }
         return false;
     }
+
+    @Override
+    public WfTextbookSubscriptionVo getInfo(Long id) {
+        WfTextbookSubscription wfTextbookSubscription = this.getById(id);
+        if(wfTextbookSubscription == null){
+            return null;
+        }
+        WfTextbookSubscriptionVo wfTextbookSubscriptionVo = BeanUtil.toBean(wfTextbookSubscription, WfTextbookSubscriptionVo.class);
+
+        MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
+        mpjLambdaWrapper
+                .select(WfTextbookSubscriptionItem.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))
+                .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
+                ;
+        List<WfTextbookSubscriptionItemVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(WfTextbookSubscriptionItemVo.class, mpjLambdaWrapper);
+
+        //处理班级
+        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();
+            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);
+            }
+        }
+
+        //遍历处理所有项
+        int stuSum = 0;
+        int teaSum = 0;
+        for (WfTextbookSubscriptionItemVo w : itemList){
+            if(!classIdList.isEmpty()){
+                w.setClassNum(classIdList.size());
+            }
+            if(w.getStudentSubscriptionNumber() != null){
+                stuSum += w.getStudentSubscriptionNumber();
+            }
+            if(w.getTeacherSubscriptionNumber() != null){
+                teaSum += w.getTeacherSubscriptionNumber();
+            }
+        }
+
+        wfTextbookSubscriptionVo.setClassIdsCn(sb.toString());
+        wfTextbookSubscriptionVo.setStudentSubscriptionNumberSum(stuSum);
+        wfTextbookSubscriptionVo.setTeacherSubscriptionNumberSum(teaSum);
+        wfTextbookSubscriptionVo.setSum(stuSum + teaSum);
+        wfTextbookSubscriptionVo.setWfTextbookSubscriptionItemList(itemList);
+
+        return wfTextbookSubscriptionVo;
+    }
 }

+ 66 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookConsumptionPageVo.java

@@ -0,0 +1,66 @@
+package com.xjrsoft.module.textbook.vo;
+
+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: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TextbookConsumptionPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private String textbookId;
+    /**
+     * 课程编号(base_course_subject)
+     */
+    @ApiModelProperty("课程编号(base_course_subject)")
+    private Long courseSubjectId;
+    /**
+     * 课程编号(base_course_subject)
+     */
+    @ApiModelProperty("课程编号(base_course_subject)")
+    private String courseSubjectIdCn;
+    /**
+    * 书名
+    */
+    @ApiModelProperty("书名")
+    private String bookName;
+    /**
+    * 出版社
+    */
+    @ApiModelProperty("出版社")
+    private String publishingHouse;
+    /**
+    * 教材类型(xjr_dictionary_item[textbook_type])
+    */
+    @ApiModelProperty("教材类型(xjr_dictionary_item[textbook_type])")
+    private String textbookType;
+    /**
+     * 教材类型(xjr_dictionary_item[textbook_type])
+     */
+    @ApiModelProperty("教材类型(xjr_dictionary_item[textbook_type])")
+    private String textbookTypeCn;
+    /**
+     * 定价(元)
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("定价(元)")
+    @ApiModelProperty("定价(元)")
+    private BigDecimal price;
+}

+ 0 - 6
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionHistoryListVo.java

@@ -15,12 +15,6 @@ import java.util.Date;
 */
 @Data
 public class TextbookSubscriptionHistoryListVo {
-
-    /**
-     * 教材编号
-     */
-    @ApiModelProperty("教材编号")
-    private String textbookId;
     /**
      * 学生用书征订数量
      */

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

@@ -53,6 +53,16 @@ public class WfTextbookSubscriptionItemVo {
     */
     @ApiModelProperty("书名")
     private String bookName;
+    /**
+     * 教材类型(xjr_dictionary_item[textbook_type])
+     */
+    @ApiModelProperty("教材类型(xjr_dictionary_item[textbook_type])")
+    private String textbookType;
+    /**
+     * 教材类型(xjr_dictionary_item[textbook_type])
+     */
+    @ApiModelProperty("教材类型(xjr_dictionary_item[textbook_type])")
+    private String textbookTypeCn;
     /**
     * 出版社
     */
@@ -83,6 +93,16 @@ public class WfTextbookSubscriptionItemVo {
     */
     @ApiModelProperty("班级编号(多个)")
     private String classIds;
+    /**
+     * 班级编号(多个)
+     */
+    @ApiModelProperty("班级编号(多个)")
+    private String classIdsCn;
+    /**
+     * 班级编号(多个)
+     */
+    @ApiModelProperty("班级编号(多个)")
+    private Integer classNum;
     /**
     * 学生用书征订数量
     */

+ 25 - 1
src/main/java/com/xjrsoft/module/textbook/vo/WfTextbookSubscriptionVo.java

@@ -70,7 +70,31 @@ public class WfTextbookSubscriptionVo {
     @ApiModelProperty("征订方式(1:按班级征订 2:按教材征订)")
     private Integer subscriptionMethod;
 
-
+    /**
+     * 学生用书征订数量
+     */
+    @ApiModelProperty("学生用书征订总数量")
+    private Integer studentSubscriptionNumberSum;
+    /**
+     * 教师教材征订数量
+     */
+    @ApiModelProperty("教师教材征订总数量")
+    private Integer teacherSubscriptionNumberSum;
+    /**
+     * 教师教材征订数量
+     */
+    @ApiModelProperty("总数量")
+    private Integer sum;
+    /**
+     * 班级编号(多个)
+     */
+    @ApiModelProperty("班级编号(多个)")
+    private String classIds;
+    /**
+     * 班级编号(多个)
+     */
+    @ApiModelProperty("班级编号(多个)")
+    private String classIdsCn;
     /**
     * wfTextbookSubscriptionItem
     */

+ 1 - 1
src/main/resources/mapper/student/BaseStudentMapper.xml

@@ -24,7 +24,7 @@
 
     <!--个人财务画像,查询学生个人信息-->
     <select id="getPersonalInfo" resultType="com.xjrsoft.module.student.vo.StudentPersonalInfoVo">
-        SELECT t1.user_id,t2.name,t5.name AS gender_cn,t4.name AS class_name,t2.credential_number,t2.birth_date,t2.mobile,
+        SELECT t1.user_id,t2.name,t5.name AS gender_cn,t4.id as class_id, t4.name AS class_name,t2.credential_number,t2.birth_date,t2.mobile,
         t6.name AS archives_status_cn,t7.name AS roll_modality_cn,t1.student_id,t8.name AS major_set_name,
         t9.name AS stduy_status_cn,t10.name AS teacher_name,t10.mobile AS teacher_phone,t11.bed_number,t12.room_name,
         t13.name AS build_name,t14.is_indemnify FROM base_student t1