Browse Source

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

dzx 1 month ago
parent
commit
c387ccf623
19 changed files with 449 additions and 212 deletions
  1. 4 1
      src/main/java/com/xjrsoft/module/base/controller/BaseClassCourseController.java
  2. 37 20
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassCourseServiceImpl.java
  3. 0 1
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookSubscriptionController.java
  4. 34 69
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookSubscriptionItemHistoryController.java
  5. 50 10
      src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookSubscriptionItemHistoryDto.java
  6. 10 4
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookInstockroomDto.java
  7. 3 9
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookSubscriptionItemHistoryPageDto.java
  8. 20 0
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookSubscriptionItemDto.java
  9. 1 1
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookSubscriptionItemHistoryDto.java
  10. 50 14
      src/main/java/com/xjrsoft/module/textbook/entity/TextbookSubscriptionItemHistory.java
  11. 1 1
      src/main/java/com/xjrsoft/module/textbook/mapper/TextbookSubscriptionItemHistoryMapper.java
  12. 1 1
      src/main/java/com/xjrsoft/module/textbook/service/ITextbookSubscriptionItemHistoryService.java
  13. 1 1
      src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookSubscriptionItemHistoryServiceImpl.java
  14. 36 16
      src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookSubscriptionServiceImpl.java
  15. 29 29
      src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookSubscriptionServiceImpl.java
  16. 104 15
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionItemHistoryPageVo.java
  17. 50 10
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionItemHistoryVo.java
  18. 1 1
      src/main/resources/mapper/base/BaseClassCourse.xml
  19. 17 9
      src/main/resources/sqlScript/textbook_sql.sql

+ 4 - 1
src/main/java/com/xjrsoft/module/base/controller/BaseClassCourseController.java

@@ -132,6 +132,9 @@ public class BaseClassCourseController {
     @SaCheckPermission("baseclasscourse:detail")
     public RT<List<CourseBookInfo>> getAllSelectedCoursesAndTextbooks(@RequestParam(required = false) Long[] classIds, @RequestParam(required = false) Long semester) {
         List<CourseBookInfo> data = baseClassCourseService.getSelectedCourseBook(classIds, semester);
+        if(ObjectUtils.isEmpty(data)){
+            return RT.ok(new ArrayList<>());
+        }
         return RT.ok(data);
     }
 
@@ -303,7 +306,7 @@ public class BaseClassCourseController {
             String newClassSemester = classId + "_" + baseSemesterId;
             Long classAdminCourseId = null;
             BaseClassAdminCourse baseClassAdminCourse = null;
-            if(ObjectUtils.isNotEmpty(classSemester) && ObjectUtils.isNotEmpty(classSemester.get(newClassSemester))){
+            if(ObjectUtils.isNotEmpty(classSemester) && classSemester.containsKey(newClassSemester)){
                 classAdminCourseId = classSemester.get(newClassSemester);
             } else {
                 baseClassAdminCourse = new BaseClassAdminCourse();

+ 37 - 20
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassCourseServiceImpl.java

@@ -35,6 +35,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -141,7 +142,7 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
             throw new MyException("添加课程的班级无效,请刷新重试");
         }
 
-        // 根据班级id查出班级已经存在的课程和教
+        // 根据班级id查出班级已经存在的课程和教
         LambdaQueryWrapper<BaseClassCourse> baseClassCourseLambdaQueryWrapper = new LambdaQueryWrapper<>();
         baseClassCourseLambdaQueryWrapper
                 .in(BaseClassCourse::getClassId, dto.getBaseClassAdminCourseIds())
@@ -177,20 +178,23 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
 
         // 处理每一个班需要新增的课程
         List<BaseClassCourse> baseClassCourseList = new ArrayList<>();
+        BaseClassCourse newBaseClassCourse;
         for (Long classId : dto.getBaseClassAdminCourseIds()) {
             // 判断当前的班级是否已经有了该课程和教材
-            List<String> tourseIdTextbookIdList = null;
+            List<String> courseIdTextbookIdList = null;
             if(ObjectUtils.isNotEmpty(courseIdTextbookIdMap)){
-                tourseIdTextbookIdList = courseIdTextbookIdMap.get(classId);
+                courseIdTextbookIdList = courseIdTextbookIdMap.get(classId);
             }
             for (Map.Entry<String, BaseClassCourse> entry : newClassCourseTextbookMap.entrySet()) {
                 String key = entry.getKey();
                 BaseClassCourse value = entry.getValue();
-                if(ObjectUtils.isNotEmpty(tourseIdTextbookIdList) && !tourseIdTextbookIdList.isEmpty() && tourseIdTextbookIdList.contains(key)){
+                newBaseClassCourse = new BaseClassCourse();
+                BeanUtils.copyProperties(value, newBaseClassCourse);
+                if(ObjectUtils.isNotEmpty(courseIdTextbookIdList) && !courseIdTextbookIdList.isEmpty() && courseIdTextbookIdList.contains(key)){
                     continue;
                 }
-                value.setClassId(classId);
-                baseClassCourseList.add(value);
+                newBaseClassCourse.setClassId(classId);
+                baseClassCourseList.add(newBaseClassCourse);
             }
         }
 
@@ -258,24 +262,23 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
         }
 
         // 已经维护了课程教材信息的班级和所在学期
+        // 一个班级一个学期应该只需要设置一次
         List<BaseClassAdminCourse> baseClassAdminCourses = baseClassAdminCourseMapper.selectList(
                 Wrappers.lambdaQuery(BaseClassAdminCourse.class)
-                        .eq(BaseClassAdminCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseClassAdminCourse::getBaseSemesterId, dto.getNewBaseSemesterId())
         );
-        Map<String, Long> classSemester = new HashMap<>();
-        for (BaseClassAdminCourse baseClassAdminCourse : baseClassAdminCourses) {
-            classSemester.put(baseClassAdminCourse.getClassId() + "_" + baseClassAdminCourse.getBaseSemesterId(), baseClassAdminCourse.getId());
-        }
+
+        Map<Long, BaseClassAdminCourse> oldClassIdMap = baseClassAdminCourses.stream()
+                .collect(Collectors.toMap(BaseClassAdminCourse::getClassId, b -> b, (b1, b2) -> b1));
 
         // 判断复用的学期复用的班级是否已经进入了班级课程列表
         // 判断本学期本班级是否已经加入课程管理的班级中
         List<Long> classAdminCourseIds = new ArrayList<>();
+        Long classAdminCourseId;
+        BaseClassAdminCourse baseClassAdminCourse;
         for (Long classId : dto.getNewClassIds()){
-            String newClassSemester = classId + "_" + dto.getNewBaseSemesterId();
-            Long classAdminCourseId = null;
-            BaseClassAdminCourse baseClassAdminCourse = null;
-            if(ObjectUtils.isNotEmpty(classSemester) && ObjectUtils.isNotEmpty(classSemester.get(newClassSemester))){
-                classAdminCourseId = classSemester.get(newClassSemester);
+            if(ObjectUtils.isNotEmpty(oldClassIdMap) && oldClassIdMap.containsKey(classId)){
+                classAdminCourseId = oldClassIdMap.get(classId).getId();
             } else {
                 baseClassAdminCourse = new BaseClassAdminCourse();
                 baseClassAdminCourse.setClassId(classId);
@@ -283,12 +286,12 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
                 baseClassAdminCourseMapper.insert(baseClassAdminCourse);
 
                 classAdminCourseId = baseClassAdminCourse.getId();
-                classSemester.put(newClassSemester, classAdminCourseId);
+                oldClassIdMap.put(classId, baseClassAdminCourse);
             }
             classAdminCourseIds.add(classAdminCourseId);
         }
 
-        //删除班级的所有课程教材
+        // 删除班级的所有课程教材
         LambdaQueryWrapper<BaseClassCourse> removeLambdaQueryWrapper = new LambdaQueryWrapper<>();
         removeLambdaQueryWrapper
                 .in(BaseClassCourse::getClassId, classAdminCourseIds)
@@ -296,12 +299,12 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
         this.remove(removeLambdaQueryWrapper);
 
         List<BaseClassCourse> newBaseClassCourseList = new ArrayList<>();
-        for (Long classAdminCourseId : classAdminCourseIds){
+        for (Long id : classAdminCourseIds){
             for (BaseClassCourse baseClassCourse : baseClassCourseList){
                 Long courseId = baseClassCourse.getCourseId();
                 Long textbookId = baseClassCourse.getTextbookId();
                 newBaseClassCourseList.add(new BaseClassCourse(){{
-                    setClassId(classAdminCourseId);
+                    setClassId(id);
                     setCourseId(courseId);
                     setTextbookId(textbookId);
                     setCreateDate(new Date());
@@ -322,8 +325,22 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
         if(ObjectUtils.isEmpty(dto.getClassIds()) || dto.getClassIds().isEmpty()){
             throw new MyException("请选择需要设置课程的班级");
         }
+
+        // 一个班级一个学期应该只需要设置一次
+        List<BaseClassAdminCourse> baseClassAdminCourses = baseClassAdminCourseMapper.selectList(
+                Wrappers.lambdaQuery(BaseClassAdminCourse.class)
+                        .eq(BaseClassAdminCourse::getBaseSemesterId, dto.getBaseSemesterId())
+        );
+
+        List<Long> oldClassId = baseClassAdminCourses.stream()
+                .map(BaseClassAdminCourse::getClassId)
+                .collect(Collectors.toList());
+
         BaseClassAdminCourse baseClassAdminCourse;
         for(Long classId : dto.getClassIds()){
+            if(ObjectUtils.isNotEmpty(oldClassId) && oldClassId.contains(classId)){
+                continue;
+            }
             baseClassAdminCourse = new BaseClassAdminCourse();
             baseClassAdminCourse.setBaseSemesterId(dto.getBaseSemesterId());
             baseClassAdminCourse.setClassId(classId);

+ 0 - 1
src/main/java/com/xjrsoft/module/textbook/controller/TextbookSubscriptionController.java

@@ -84,7 +84,6 @@ public class TextbookSubscriptionController {
         return RT.ok(list);
     }
 
-
     @GetMapping(value = "/instockroom-list")
     @ApiOperation(value = "教材教辅征订入库用页面")
     @SaCheckPermission("textbooksubscription:detail")

+ 34 - 69
src/main/java/com/xjrsoft/module/textbook/controller/TextbookSubscriptionItemHistoryController.java

@@ -21,8 +21,6 @@ import com.xjrsoft.module.textbook.dto.UpdateTextbookSubscriptionItemHistoryDto;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.alibaba.excel.EasyExcel;
 import com.xjrsoft.module.textbook.entity.Textbook;
-import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItemHistory;
-import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionItemHistoryPageVo;
 import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import com.alibaba.excel.support.ExcelTypeEnum;
@@ -48,12 +46,12 @@ import java.util.List;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @RestController
 @RequestMapping("/textbook" + "/textbookSubscriptionItemHistory")
-@Api(value = "/textbook"  + "/textbookSubscriptionItemHistory",tags = "教材教辅征订项变更历史代码(新)")
+@Api(value = "/textbook"  + "/textbookSubscriptionItemHistory",tags = "教材教辅征订项变更历史代码")
 @AllArgsConstructor
 public class TextbookSubscriptionItemHistoryController {
 
@@ -64,19 +62,42 @@ public class TextbookSubscriptionItemHistoryController {
     @ApiOperation(value="教材教辅征订项变更历史列表(分页)")
     @SaCheckPermission("textbooksubscriptionitemhistory:detail")
     public RT<PageOutput<TextbookSubscriptionItemHistoryPageVo>> page(@Valid TextbookSubscriptionItemHistoryPageDto dto){
-
         MPJLambdaWrapper<TextbookSubscriptionItemHistory> mpjLambdaWrapper = new MPJLambdaWrapper<>();
         mpjLambdaWrapper
+                .disableSubLogicDel()
                 .select(TextbookSubscriptionItemHistory::getId)
-                .selectAs(BaseCourseSubject::getName, TextbookSubscriptionItemHistoryPageVo::getCourseName)
-                .selectAs(XjrUser::getName, TextbookSubscriptionItemHistoryPageVo::getCreateUserIdCn)
-                .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemHistoryPageVo.class).contains(x.getProperty()))
+
                 .select(TextbookSubscriptionItemHistory.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemHistoryPageVo.class).contains(x.getProperty()))
-                .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItemHistory::getTextbookId)
-                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
-                        ext -> ext.selectAs(DictionaryDetail::getName, TextbookSubscriptionItemHistoryPageVo::getTextbookTypeCn))
-                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
-                .leftJoin(XjrUser.class, XjrUser::getId, TextbookSubscriptionItemHistory::getCreateUserId)
+
+                .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItemHistory::getOldTextbookId,
+                        wrapper -> wrapper
+                                .selectAs(Textbook::getIssn, TextbookSubscriptionItemHistoryPageVo::getOldIssn)
+                                .selectAs(Textbook::getBookName, TextbookSubscriptionItemHistoryPageVo::getOldBookName)
+                                .selectAs(Textbook::getPublishingHouse, TextbookSubscriptionItemHistoryPageVo::getOldPublishingHouse)
+                                .selectAs(Textbook::getEditorInChief, TextbookSubscriptionItemHistoryPageVo::getOldEditorInChief)
+                                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
+                                        ext -> ext.selectAs(DictionaryDetail::getName, TextbookSubscriptionItemHistoryPageVo::getOldTextbookTypeCn))
+                                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
+                                ext -> ext.selectAs(BaseCourseSubject::getName, TextbookSubscriptionItemHistoryPageVo::getOldCourseName))
+                )
+
+                .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItemHistory::getNewTextbookId,
+                        wrapper -> wrapper
+                                .selectAs(Textbook::getIssn, TextbookSubscriptionItemHistoryPageVo::getNewIssn)
+                                .selectAs(Textbook::getBookName, TextbookSubscriptionItemHistoryPageVo::getNewBookName)
+                                .selectAs(Textbook::getPublishingHouse, TextbookSubscriptionItemHistoryPageVo::getNewPublishingHouse)
+                                .selectAs(Textbook::getEditorInChief, TextbookSubscriptionItemHistoryPageVo::getNewEditorInChief)
+                                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
+                                        ext -> ext.selectAs(DictionaryDetail::getName, TextbookSubscriptionItemHistoryPageVo::getNewTextbookTypeCn))
+                                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
+                                        ext -> ext.selectAs(BaseCourseSubject::getName, TextbookSubscriptionItemHistoryPageVo::getNewCourseName))
+                )
+
+
+                .leftJoin(XjrUser.class, XjrUser::getId, TextbookSubscriptionItemHistory::getCreateUserId,
+                        wrapper -> wrapper
+                                .selectAs(XjrUser::getName, TextbookSubscriptionItemHistoryPageVo::getCreateUserIdCn)
+                )
                 .eq(dto.getTextbookSubscriptionItemId() != null && dto.getTextbookSubscriptionItemId() > 0, TextbookSubscriptionItemHistory::getTextbookSubscriptionItemId, dto.getTextbookSubscriptionItemId())
                 .eq(dto.getTextbookSubscriptionId() != null && dto.getTextbookSubscriptionId() > 0, TextbookSubscriptionItemHistory::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
                 .eq(dto.getTextbookType() != null && !dto.getTextbookType().isEmpty(), Textbook::getTextbookType, dto.getTextbookType())
@@ -88,60 +109,4 @@ public class TextbookSubscriptionItemHistoryController {
         PageOutput<TextbookSubscriptionItemHistoryPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookSubscriptionItemHistoryPageVo.class);
         return RT.ok(pageOutput);
     }
-
-    @GetMapping(value = "/info")
-    @ApiOperation(value="根据id查询教材教辅征订项变更历史信息")
-    @SaCheckPermission("textbooksubscriptionitemhistory:detail")
-    public RT<TextbookSubscriptionItemHistoryVo> info(@RequestParam Long id){
-        TextbookSubscriptionItemHistory textbookSubscriptionItemHistory = textbookSubscriptionItemHistoryService.getById(id);
-        if (textbookSubscriptionItemHistory == null) {
-           return RT.error("找不到此数据!");
-        }
-        return RT.ok(BeanUtil.toBean(textbookSubscriptionItemHistory, TextbookSubscriptionItemHistoryVo.class));
-    }
-
-
-    @PostMapping
-    @ApiOperation(value = "新增教材教辅征订项变更历史")
-    @SaCheckPermission("textbooksubscriptionitemhistory:add")
-    public RT<Boolean> add(@Valid @RequestBody AddTextbookSubscriptionItemHistoryDto dto){
-        TextbookSubscriptionItemHistory textbookSubscriptionItemHistory = BeanUtil.toBean(dto, TextbookSubscriptionItemHistory.class);
-        boolean isSuccess = textbookSubscriptionItemHistoryService.save(textbookSubscriptionItemHistory);
-    return RT.ok(isSuccess);
-    }
-
-    @PutMapping
-    @ApiOperation(value = "修改教材教辅征订项变更历史")
-    @SaCheckPermission("textbooksubscriptionitemhistory:edit")
-    public RT<Boolean> update(@Valid @RequestBody UpdateTextbookSubscriptionItemHistoryDto dto){
-
-        TextbookSubscriptionItemHistory textbookSubscriptionItemHistory = BeanUtil.toBean(dto, TextbookSubscriptionItemHistory.class);
-        return RT.ok(textbookSubscriptionItemHistoryService.updateById(textbookSubscriptionItemHistory));
-
-    }
-
-    @DeleteMapping
-    @ApiOperation(value = "删除教材教辅征订项变更历史")
-    @SaCheckPermission("textbooksubscriptionitemhistory:delete")
-    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
-        return RT.ok(textbookSubscriptionItemHistoryService.removeBatchByIds(ids));
-
-    }
-    @PostMapping("/import")
-    @ApiOperation(value = "导入")
-    public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
-        List<TextbookSubscriptionItemHistoryPageVo> savedDataList = EasyExcel.read(file.getInputStream()).head(TextbookSubscriptionItemHistoryPageVo.class).sheet().doReadSync();
-        Boolean result = textbookSubscriptionItemHistoryService.saveBatch(BeanUtil.copyToList(savedDataList, TextbookSubscriptionItemHistory.class));
-        return RT.ok(result);
-    }
-
-    @GetMapping("/export")
-    @ApiOperation(value = "导出")
-    public ResponseEntity<byte[]> exportData(@Valid TextbookSubscriptionItemHistoryPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
-        List<TextbookSubscriptionItemHistoryPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<TextbookSubscriptionItemHistoryPageVo>) page(dto).getData()).getList();
-        ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, TextbookSubscriptionItemHistoryPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
-
-        return RT.fileStream(bot.toByteArray(), "TextbookSubscriptionItemHistory" + ExcelTypeEnum.XLSX.getValue());
-    }
 }

+ 50 - 10
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookSubscriptionItemHistoryDto.java

@@ -16,7 +16,7 @@ import java.util.Date;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Data
@@ -43,41 +43,81 @@ public class AddTextbookSubscriptionItemHistoryDto implements Serializable {
     * 教材表主键(textbook)
     */
     @ApiModelProperty("教材表主键(textbook)")
-    private Long textbookId;
+    private Long oldTextbookId;
     /**
     * 学生用书征订数量
     */
     @ApiModelProperty("学生用书征订数量")
-    private Integer studentNum;
+    private Integer oldStudentNum;
     /**
     * 教师用书征订数量
     */
     @ApiModelProperty("教师用书征订数量")
-    private Integer teacherNum;
+    private Integer oldTeacherNum;
     /**
     * 实际折扣
     */
     @ApiModelProperty("实际折扣")
-    private Double discount;
+    private Double oldDiscount;
     /**
     * 实际价格(元)
     */
     @ApiModelProperty("实际价格(元)")
-    private BigDecimal price;
+    private BigDecimal oldPrice;
     /**
     * 当前征订任务征订项入库数量
     */
     @ApiModelProperty("当前征订任务征订项入库数量")
-    private Integer inStockNum;
+    private Integer oldInStockNum;
     /**
     * 当前征订任务征订项出库数量
     */
     @ApiModelProperty("当前征订任务征订项出库数量")
-    private Integer outStockNum;
+    private Integer oldOutStockNum;
     /**
-    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)
+    * 教材表主键(textbook)
+    */
+    @ApiModelProperty("教材表主键(textbook)")
+    private Long newTextbookId;
+    /**
+    * 学生用书征订数量
+    */
+    @ApiModelProperty("学生用书征订数量")
+    private Integer newStudentNum;
+    /**
+    * 教师用书征订数量
+    */
+    @ApiModelProperty("教师用书征订数量")
+    private Integer newTeacherNum;
+    /**
+    * 实际折扣
+    */
+    @ApiModelProperty("实际折扣")
+    private Double newDiscount;
+    /**
+    * 实际价格(元)
+    */
+    @ApiModelProperty("实际价格(元)")
+    private BigDecimal newPrice;
+    /**
+    * 当前征订任务征订项入库数量
+    */
+    @ApiModelProperty("当前征订任务征订项入库数量")
+    private Integer newInStockNum;
+    /**
+    * 当前征订任务征订项出库数量
+    */
+    @ApiModelProperty("当前征订任务征订项出库数量")
+    private Integer newOutStockNum;
+    /**
+    * 当前征订项变更历史记录版本
+    */
+    @ApiModelProperty("当前征订项变更历史记录版本")
+    private Integer historyVersion;
+    /**
+    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)
     */
-    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)")
+    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)")
     private Integer alterationType;
 
 }

+ 10 - 4
src/main/java/com/xjrsoft/module/textbook/dto/TextbookInstockroomDto.java

@@ -24,11 +24,17 @@ public class TextbookInstockroomDto {
      */
     @ApiModelProperty("教材教辅征订项编号")
     private Long textbookSubscriptionItemId;
+
     /**
-     * 国际标准刊
+     * 教材编
      */
-    @ApiModelProperty(value = "国际标准刊号",hidden = true)
-    private String issn;
+    @ApiModelProperty("教材编号")
+    private String textbookId;
+    /**
+     * 定价(元)
+     */
+    @ApiModelProperty("定价(元)")
+    private BigDecimal price;
     /**
      * 实际折扣
      */
@@ -38,7 +44,7 @@ public class TextbookInstockroomDto {
      * 实际价格(元)
      */
     @ApiModelProperty("实际价格(元)")
-    private BigDecimal price;
+    private BigDecimal subtotal;
     /**
      * 本次入库数量
      */

+ 3 - 9
src/main/java/com/xjrsoft/module/textbook/dto/TextbookSubscriptionItemHistoryPageDto.java

@@ -17,7 +17,7 @@ import java.util.Date;
 /**
 * @title: 教材教辅征订项变更历史分页查询入参
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Data
@@ -26,15 +26,11 @@ public class TextbookSubscriptionItemHistoryPageDto extends PageInput {
     /**
      * 教材教辅征订编号
      */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("教材教辅征订编号")
     @ApiModelProperty("教材教辅征订编号")
     private Long textbookSubscriptionId;
     /**
      * 教材教辅征订项编号
      */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("教材教辅征订项编号")
     @ApiModelProperty("教材教辅征订项编号")
     private Long textbookSubscriptionItemId;
     /**
@@ -47,9 +43,7 @@ public class TextbookSubscriptionItemHistoryPageDto extends PageInput {
      */
     @ApiModelProperty("书名")
     private String bookName;
-    /**
-     * 课程编号(base_course_subject)
-     */
-    @ApiModelProperty("课程编号(base_course_subject)")
+
+    @ApiModelProperty("课程名称")
     private String courseSubjectIdCn;
 }

+ 20 - 0
src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookSubscriptionItemDto.java

@@ -38,4 +38,24 @@ public class UpdateTextbookSubscriptionItemDto implements Serializable {
     */
     @ApiModelProperty("教师用书征订数量")
     private Integer teacherNum;
+    /**
+     * 实际折扣
+     */
+    @ApiModelProperty("实际折扣")
+    private Double discount;
+    /**
+     * 实际价格(元)
+     */
+    @ApiModelProperty("实际价格(元)")
+    private BigDecimal price;
+    /**
+     * 当前征订任务征订项入库数量
+     */
+    @ApiModelProperty("当前征订任务征订项入库数量")
+    private Integer inStockNum;
+    /**
+     * 当前征订任务征订项出库数量
+     */
+    @ApiModelProperty("当前征订任务征订项出库数量")
+    private Integer outStockNum;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookSubscriptionItemHistoryDto.java

@@ -16,7 +16,7 @@ import java.util.Date;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Data

+ 50 - 14
src/main/java/com/xjrsoft/module/textbook/entity/TextbookSubscriptionItemHistory.java

@@ -20,7 +20,7 @@ import java.util.Date;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Data
@@ -92,46 +92,82 @@ public class TextbookSubscriptionItemHistory implements Serializable {
     * 教材表主键(textbook)
     */
     @ApiModelProperty("教材表主键(textbook)")
-    private Long textbookId;
+    private Long oldTextbookId;
     /**
     * 学生用书征订数量
     */
     @ApiModelProperty("学生用书征订数量")
-    private Integer studentNum;
+    private Integer oldStudentNum;
     /**
     * 教师用书征订数量
     */
     @ApiModelProperty("教师用书征订数量")
-    private Integer teacherNum;
+    private Integer oldTeacherNum;
     /**
     * 实际折扣
     */
     @ApiModelProperty("实际折扣")
-    private Double discount;
+    private Double oldDiscount;
     /**
     * 实际价格(元)
     */
     @ApiModelProperty("实际价格(元)")
-    private BigDecimal price;
+    private BigDecimal oldPrice;
     /**
     * 当前征订任务征订项入库数量
     */
     @ApiModelProperty("当前征订任务征订项入库数量")
-    private Integer inStockNum;
+    private Integer oldInStockNum;
     /**
     * 当前征订任务征订项出库数量
     */
     @ApiModelProperty("当前征订任务征订项出库数量")
-    private Integer outStockNum;
+    private Integer oldOutStockNum;
     /**
-     * 当前征订项变更历史记录
-     */
-    @ApiModelProperty("当前征订项变更历史记录")
+    * 教材表主键(textbook)
+    */
+    @ApiModelProperty("教材表主键(textbook)")
+    private Long newTextbookId;
+    /**
+    * 学生用书征订数量
+    */
+    @ApiModelProperty("学生用书征订数量")
+    private Integer newStudentNum;
+    /**
+    * 教师用书征订数量
+    */
+    @ApiModelProperty("教师用书征订数量")
+    private Integer newTeacherNum;
+    /**
+    * 实际折扣
+    */
+    @ApiModelProperty("实际折扣")
+    private Double newDiscount;
+    /**
+    * 实际价格(元)
+    */
+    @ApiModelProperty("实际价格(元)")
+    private BigDecimal newPrice;
+    /**
+    * 当前征订任务征订项入库数量
+    */
+    @ApiModelProperty("当前征订任务征订项入库数量")
+    private Integer newInStockNum;
+    /**
+    * 当前征订任务征订项出库数量
+    */
+    @ApiModelProperty("当前征订任务征订项出库数量")
+    private Integer newOutStockNum;
+    /**
+    * 当前征订项变更历史记录版本
+    */
+    @ApiModelProperty("当前征订项变更历史记录版本")
     private Integer historyVersion;
-
     /**
-    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)
+    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量
     */
-    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)")
+    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)")
     private Integer alterationType;
+
+
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookSubscriptionItemHistoryMapper.java

@@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Mapper

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/service/ITextbookSubscriptionItemHistoryService.java

@@ -9,7 +9,7 @@ import java.util.List;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookSubscriptionItemHistoryServiceImpl.java

@@ -16,7 +16,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 /**
 * @title: 教材教辅征订项变更历史
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Service

+ 36 - 16
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookSubscriptionServiceImpl.java

@@ -113,18 +113,14 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
 
     @Override
     public List<TextbookInstockroomOnceListVo> everyInstockroomList(TextbookInstockroomOnceListDto dto) {
-        MPJLambdaWrapper<TextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
+        MPJLambdaWrapper<TextbookWarehouseRecord> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
                 .select(TextbookSubscriptionItem::getId)
+                .selectAs(TextbookWarehouseRecord::getWarehouseNumber, TextbookInstockroomOnceListVo::getOnceInStockNum)
+                .selectAs(TextbookWarehouseRecord::getCreateDate, TextbookInstockroomOnceListVo::getCreateDate)
+                .selectAs(TextbookWarehouseRecord::getCreateUserId, TextbookInstockroomOnceListVo::getCreateUserId)
                 .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomOnceListVo.class).contains(x.getProperty()))
-                .select(TextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomOnceListVo.class).contains(x.getProperty()))
                 .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
-                .leftJoin(TextbookWarehouseRecord.class, TextbookWarehouseRecord::getDataItemId, TextbookSubscriptionItem::getId,
-                        wrapper -> wrapper
-                                .selectAs(TextbookWarehouseRecord::getWarehouseNumber, TextbookInstockroomOnceListVo::getOnceInStockNum)
-                                .selectAs(TextbookWarehouseRecord::getCreateDate, TextbookInstockroomOnceListVo::getCreateDate)
-                                .selectAs(TextbookWarehouseRecord::getCreateUserId, TextbookInstockroomOnceListVo::getCreateUserId)
-                )
                 .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
                         wrapper -> wrapper
                                 .selectAs(BaseCourseSubject::getName, TextbookInstockroomOnceListVo::getCourseName)
@@ -137,7 +133,7 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
                 .orderByAsc(TextbookSubscriptionItem::getInStockNum)
         ;
 
-        return textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinList(TextbookInstockroomOnceListVo.class, queryWrapper);
+        return textbookWarehouseRecordMapper.selectJoinList(TextbookInstockroomOnceListVo.class, queryWrapper);
     }
 
     @Override
@@ -351,7 +347,9 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
 
         List<Long> textbookSubscriptionItemIds = new ArrayList<>();
         for (TextbookInstockroomDto dto : dtos) {
-            textbookSubscriptionItemIds.add(dto.getTextbookSubscriptionItemId());
+            if(ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId())){
+                textbookSubscriptionItemIds.add(dto.getTextbookSubscriptionItemId());
+            }
         }
 
         if (textbookSubscriptionItemIds.isEmpty()) {
@@ -378,20 +376,20 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
             itemByIdMap.put(el.getId(), el);
         }
 
+        TextbookSubscriptionItem old = null;
         for (TextbookInstockroomDto dto : dtos) {
-            TextbookSubscriptionItem old = null;
-            if (dto.getTextbookSubscriptionItemId() != null && dto.getTextbookSubscriptionItemId() > 0) {
+            if (ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId())) {
                 old = itemByIdMap.get(dto.getTextbookSubscriptionItemId());
             }
 
-            if (old == null) {
+            if (ObjectUtils.isEmpty(old)) {
                 continue;
             }
 
             TextbookSubscriptionItem updateItem = new TextbookSubscriptionItem();
             updateItem.setId(old.getId());
             updateItem.setDiscount(dto.getDiscount());
-            updateItem.setPrice(dto.getPrice());
+            updateItem.setPrice(old.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount()).divide(BigDecimal.valueOf(10), 2, RoundingMode.DOWN)));
             updateItem.setInStockNum(old.getInStockNum() + dto.getInNum());
             textbookSubscriptionTextbookSubscriptionItemMapper.updateById(updateItem);
 
@@ -401,9 +399,14 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
             textbookWarehouseRecord.setDataId(dto.getTextbookSubscriptionId());
             textbookWarehouseRecord.setDataItemId(dto.getTextbookSubscriptionItemId());
             textbookWarehouseRecord.setWarehouseNumber(dto.getInNum());
+            textbookWarehouseRecord.setPrice(old.getPrice());
+            textbookWarehouseRecord.setDiscount(dto.getDiscount());
+            textbookWarehouseRecord.setSubtotal(old.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount()).divide(BigDecimal.valueOf(10), 2, RoundingMode.DOWN)));
+            textbookWarehouseRecord.setTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(dto.getInNum())));
             textbookWarehouseRecord.setWarehouseMode(WarehouseModeEnum.WmManual.getCode());
             textbookWarehouseRecordMapper.insert(textbookWarehouseRecord);
         }
+
         return true;
     }
 
@@ -610,8 +613,25 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
 
         // 将变更前的数据记录在历史表中
         TextbookSubscriptionItemHistory textbookSubscriptionItemHistory = new TextbookSubscriptionItemHistory();
-        BeanUtils.copyProperties(old, textbookSubscriptionItemHistory);
-        textbookSubscriptionItemHistory.setId(null);
+        // 变更前
+        textbookSubscriptionItemHistory.setOldTextbookId(old.getTextbookId());
+        textbookSubscriptionItemHistory.setOldStudentNum(old.getStudentNum());
+        textbookSubscriptionItemHistory.setOldTeacherNum(old.getTeacherNum());
+        textbookSubscriptionItemHistory.setOldDiscount(old.getDiscount());
+        textbookSubscriptionItemHistory.setOldPrice(old.getPrice());
+        textbookSubscriptionItemHistory.setOldInStockNum(old.getInStockNum());
+        textbookSubscriptionItemHistory.setOldOutStockNum(old.getOutStockNum());
+
+        // 变更后
+        textbookSubscriptionItemHistory.setNewTextbookId(dto.getTextbookId());
+        textbookSubscriptionItemHistory.setNewStudentNum(dto.getStudentNum());
+        textbookSubscriptionItemHistory.setNewTeacherNum(dto.getTeacherNum());
+        textbookSubscriptionItemHistory.setNewDiscount(dto.getDiscount());
+        textbookSubscriptionItemHistory.setNewPrice(dto.getPrice());
+        textbookSubscriptionItemHistory.setNewInStockNum(dto.getInStockNum());
+        textbookSubscriptionItemHistory.setNewOutStockNum(dto.getOutStockNum());
+
+        textbookSubscriptionItemHistory.setTextbookSubscriptionId(old.getTextbookSubscriptionId());
         textbookSubscriptionItemHistory.setTextbookSubscriptionItemId(old.getId());
         textbookSubscriptionItemHistory.setCreateDate(new Date());
         textbookSubscriptionItemHistory.setCreateUserId(StpUtil.getLoginIdAsLong());

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

@@ -387,7 +387,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
         for (TextbookInstockroomImportDto item : dataList){
             textbookInstockroomDtoList.add(new TextbookInstockroomDto(){{
                 setTextbookSubscriptionId(wfTextbookSubscriptionId);
-                setIssn(item.getIssn());
+//                setIssn(item.getIssn());
                 setInNum(item.getInNum());
             }});
         }
@@ -430,34 +430,34 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
 
         Date now = new Date();
         Long loginId = StpUtil.getLoginIdAsLong();
-        for (TextbookInstockroomDto dto : dtos) {
-            WfTextbookSubscriptionItem old;
-            if(dto.getTextbookSubscriptionItemId() != null && dto.getTextbookSubscriptionItemId() > 0){
-                old = itemByIdMap.get(dto.getTextbookSubscriptionItemId());
-            } else {
-                old = itemByIssnMap.get(dto.getIssn());
-            }
-
-            if(old == null){
-                continue;
-            }
-
-            WfTextbookSubscriptionItem updateItem = new WfTextbookSubscriptionItem();
-            updateItem.setId(old.getId());
-            updateItem.setInStockroomNum(old.getInStockroomNum() + dto.getInNum());
-            updateItem.setModifyDate(now);
-            updateItem.setModifyUserId(loginId);
-            wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(updateItem);
-
-            //新增入库记录
-//            textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto() {{
-//                setTextbookId(old.getTextbookId());
-//                setWarehouseNumber(dto.getInNum());
-//                setSource("wm_manual");
-//            }});
-//            successNum++;
-            instockroomNum += dto.getInNum();
-        }
+//        for (TextbookInstockroomDto dto : dtos) {
+//            WfTextbookSubscriptionItem old;
+//            if(dto.getTextbookSubscriptionItemId() != null && dto.getTextbookSubscriptionItemId() > 0){
+//                old = itemByIdMap.get(dto.getTextbookSubscriptionItemId());
+//            } else {
+//                old = itemByIssnMap.get(dto.getIssn());
+//            }
+//
+//            if(old == null){
+//                continue;
+//            }
+//
+//            WfTextbookSubscriptionItem updateItem = new WfTextbookSubscriptionItem();
+//            updateItem.setId(old.getId());
+//            updateItem.setInStockroomNum(old.getInStockroomNum() + dto.getInNum());
+//            updateItem.setModifyDate(now);
+//            updateItem.setModifyUserId(loginId);
+//            wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(updateItem);
+//
+//            //新增入库记录
+////            textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto() {{
+////                setTextbookId(old.getTextbookId());
+////                setWarehouseNumber(dto.getInNum());
+////                setSource("wm_manual");
+////            }});
+////            successNum++;
+//            instockroomNum += dto.getInNum();
+//        }
         result.put("allNum", dtos.size());
         result.put("successNum", successNum);
         result.put("instockroomNum", instockroomNum);

+ 104 - 15
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionItemHistoryPageVo.java

@@ -17,7 +17,7 @@ import java.util.Date;
 /**
 * @title: 教材教辅征订项变更历史分页列表出参
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Data
@@ -37,10 +37,13 @@ public class TextbookSubscriptionItemHistoryPageVo {
     @ExcelProperty("创建人")
     @ApiModelProperty("创建人")
     private Long createUserId;
-
+    /**
+     * 创建人
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建人")
     @ApiModelProperty("创建人")
     private String createUserIdCn;
-
     /**
     * 创建时间
     */
@@ -68,62 +71,148 @@ public class TextbookSubscriptionItemHistoryPageVo {
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("教材表主键(textbook)")
     @ApiModelProperty("教材表主键(textbook)")
-    private Long textbookId;
+    private Long oldTextbookId;
+
+    @ApiModelProperty("国际标准刊号")
+    private String oldIssn;
+
+    @ApiModelProperty("书名")
+    private String oldBookName;
+
+    @ApiModelProperty("出版社")
+    private String oldPublishingHouse;
+
+    @ApiModelProperty("主编")
+    private String oldEditorInChief;
 
     @ApiModelProperty("课程名称")
-    private String courseName;
+    private String oldCourseName;
 
     @ApiModelProperty("教材类型")
-    private String textbookTypeCn;
+    private String oldTextbookTypeCn;
+
+    /**
+    * 学生用书征订数量
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学生用书征订数量")
+    @ApiModelProperty("学生用书征订数量")
+    private Integer oldStudentNum;
+    /**
+    * 教师用书征订数量
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教师用书征订数量")
+    @ApiModelProperty("教师用书征订数量")
+    private Integer oldTeacherNum;
+    /**
+    * 实际折扣
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("实际折扣")
+    @ApiModelProperty("实际折扣")
+    private Double oldDiscount;
+    /**
+    * 实际价格(元)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("实际价格(元)")
+    @ApiModelProperty("实际价格(元)")
+    private BigDecimal oldPrice;
+    /**
+    * 当前征订任务征订项入库数量
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("当前征订任务征订项入库数量")
+    @ApiModelProperty("当前征订任务征订项入库数量")
+    private Integer oldInStockNum;
+    /**
+    * 当前征订任务征订项出库数量
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("当前征订任务征订项出库数量")
+    @ApiModelProperty("当前征订任务征订项出库数量")
+    private Integer oldOutStockNum;
+    /**
+    * 教材表主键(textbook)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教材表主键(textbook)")
+    @ApiModelProperty("教材表主键(textbook)")
+    private Long newTextbookId;
+
+    @ApiModelProperty("国际标准刊号")
+    private String newIssn;
+
+    @ApiModelProperty("书名")
+    private String newBookName;
+
+    @ApiModelProperty("出版社")
+    private String newPublishingHouse;
 
+    @ApiModelProperty("主编")
+    private String newEditorInChief;
+
+    @ApiModelProperty("课程名称")
+    private String newCourseName;
+
+    @ApiModelProperty("教材类型")
+    private String newTextbookTypeCn;
     /**
     * 学生用书征订数量
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("学生用书征订数量")
     @ApiModelProperty("学生用书征订数量")
-    private Integer studentNum;
+    private Integer newStudentNum;
     /**
     * 教师用书征订数量
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("教师用书征订数量")
     @ApiModelProperty("教师用书征订数量")
-    private Integer teacherNum;
+    private Integer newTeacherNum;
     /**
     * 实际折扣
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("实际折扣")
     @ApiModelProperty("实际折扣")
-    private Double discount;
+    private Double newDiscount;
     /**
     * 实际价格(元)
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("实际价格(元)")
     @ApiModelProperty("实际价格(元)")
-    private BigDecimal price;
+    private BigDecimal newPrice;
     /**
     * 当前征订任务征订项入库数量
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("当前征订任务征订项入库数量")
     @ApiModelProperty("当前征订任务征订项入库数量")
-    private Integer inStockNum;
+    private Integer newInStockNum;
     /**
     * 当前征订任务征订项出库数量
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("当前征订任务征订项出库数量")
     @ApiModelProperty("当前征订任务征订项出库数量")
-    private Integer outStockNum;
+    private Integer newOutStockNum;
+    /**
+    * 当前征订项变更历史记录版本
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("当前征订项变更历史记录版本")
+    @ApiModelProperty("当前征订项变更历史记录版本")
+    private Integer historyVersion;
     /**
-    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)
+    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量
     */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)")
-    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)")
+    @ExcelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)")
+    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)")
     private Integer alterationType;
 
 }

+ 50 - 10
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionItemHistoryVo.java

@@ -12,7 +12,7 @@ import java.util.Date;
 /**
 * @title: 教材教辅征订项变更历史表单出参
 * @Author phoenix
-* @Date: 2025-01-22
+* @Date: 2025-01-23
 * @Version 1.0
 */
 @Data
@@ -42,41 +42,81 @@ public class TextbookSubscriptionItemHistoryVo {
     * 教材表主键(textbook)
     */
     @ApiModelProperty("教材表主键(textbook)")
-    private Long textbookId;
+    private Long oldTextbookId;
     /**
     * 学生用书征订数量
     */
     @ApiModelProperty("学生用书征订数量")
-    private Integer studentNum;
+    private Integer oldStudentNum;
     /**
     * 教师用书征订数量
     */
     @ApiModelProperty("教师用书征订数量")
-    private Integer teacherNum;
+    private Integer oldTeacherNum;
     /**
     * 实际折扣
     */
     @ApiModelProperty("实际折扣")
-    private Double discount;
+    private Double oldDiscount;
     /**
     * 实际价格(元)
     */
     @ApiModelProperty("实际价格(元)")
-    private BigDecimal price;
+    private BigDecimal oldPrice;
     /**
     * 当前征订任务征订项入库数量
     */
     @ApiModelProperty("当前征订任务征订项入库数量")
-    private Integer inStockNum;
+    private Integer oldInStockNum;
     /**
     * 当前征订任务征订项出库数量
     */
     @ApiModelProperty("当前征订任务征订项出库数量")
-    private Integer outStockNum;
+    private Integer oldOutStockNum;
     /**
-    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)
+    * 教材表主键(textbook)
+    */
+    @ApiModelProperty("教材表主键(textbook)")
+    private Long newTextbookId;
+    /**
+    * 学生用书征订数量
+    */
+    @ApiModelProperty("学生用书征订数量")
+    private Integer newStudentNum;
+    /**
+    * 教师用书征订数量
+    */
+    @ApiModelProperty("教师用书征订数量")
+    private Integer newTeacherNum;
+    /**
+    * 实际折扣
+    */
+    @ApiModelProperty("实际折扣")
+    private Double newDiscount;
+    /**
+    * 实际价格(元)
+    */
+    @ApiModelProperty("实际价格(元)")
+    private BigDecimal newPrice;
+    /**
+    * 当前征订任务征订项入库数量
+    */
+    @ApiModelProperty("当前征订任务征订项入库数量")
+    private Integer newInStockNum;
+    /**
+    * 当前征订任务征订项出库数量
+    */
+    @ApiModelProperty("当前征订任务征订项出库数量")
+    private Integer newOutStockNum;
+    /**
+    * 当前征订项变更历史记录版本
+    */
+    @ApiModelProperty("当前征订项变更历史记录版本")
+    private Integer historyVersion;
+    /**
+    * 变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)
     */
-    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,)")
+    @ApiModelProperty("变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)")
     private Integer alterationType;
 
 

+ 1 - 1
src/main/resources/mapper/base/BaseClassCourse.xml

@@ -95,7 +95,7 @@
         left join base_course_subject t2 on t3.course_id = t2.id
         where t.delete_mark = 0
         <if test="classIds != null">
-            AND t.class_id in
+            AND t.id in
             <foreach item="classIds" collection="classIds" open="(" separator="," close=")">
                 #{classIds}
             </foreach>

+ 17 - 9
src/main/resources/sqlScript/textbook_sql.sql

@@ -167,15 +167,23 @@ create table `textbook_subscription_item_history`
     textbook_subscription_id      bigint         not null comment '教材教辅征订编号',
     textbook_subscription_item_id bigint         not null comment '教材教辅征订项编号',
 
-    textbook_id                   bigint         null comment '教材表主键(textbook)',
-
-    student_num                   int            null default 0 comment '学生用书征订数量',
-    teacher_num                   int            null default 0 comment '教师用书征订数量',
-    discount                      float          null default 10 comment '实际折扣',
-    price                         decimal(10, 2) null default 0 comment '实际价格(元)',
-    in_stock_num                  int            null default 0 comment '当前征订任务征订项入库数量',
-    out_stock_num                 int            null default 0 comment '当前征订任务征订项出库数量',
-    history_version               int                 default 0 null comment '当前征订项变更历史记录',
+    old_textbook_id                   bigint         null comment '教材表主键(textbook)',
+    old_student_num                   int            null default 0 comment '学生用书征订数量',
+    old_teacher_num                   int            null default 0 comment '教师用书征订数量',
+    old_discount                      float          null default 10 comment '实际折扣',
+    old_price                         decimal(10, 2) null default 0 comment '实际价格(元)',
+    old_in_stock_num                  int            null default 0 comment '当前征订任务征订项入库数量',
+    old_out_stock_num                 int            null default 0 comment '当前征订任务征订项出库数量',
+
+    new_textbook_id                   bigint         null comment '教材表主键(textbook)',
+    new_student_num                   int            null default 0 comment '学生用书征订数量',
+    new_teacher_num                   int            null default 0 comment '教师用书征订数量',
+    new_discount                      float          null default 10 comment '实际折扣',
+    new_price                         decimal(10, 2) null default 0 comment '实际价格(元)',
+    new_in_stock_num                  int            null default 0 comment '当前征订任务征订项入库数量',
+    new_out_stock_num                 int            null default 0 comment '当前征订任务征订项出库数量',
+
+    history_version               int                 default 0 null comment '当前征订项变更历史记录版本',
     alteration_type               int            null default 0 comment '变更类型(0:未变更,1:学生用书征订数量,2:教师用书征订数量,3:变更课程,4:学生用书征订数量和教师用书征订数量)'
 ) engine = innodb
   default charset = utf8mb4