소스 검색

更改入库后记录的折扣
入库详情拆分为退书和其他

大数据与最优化研究所 9 달 전
부모
커밋
62924c5b46
20개의 변경된 파일777개의 추가작업 그리고 26개의 파일을 삭제
  1. 149 0
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookDiscountAlterRecordController.java
  2. 1 1
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookWarehouseRecordController.java
  3. 19 21
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookWarehouseRecordDetailController.java
  4. 48 0
      src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookDiscountAlterRecordDto.java
  5. 36 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookDiscountAlterRecordListDto.java
  6. 26 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookDiscountAlterRecordPageDto.java
  7. 12 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookWarehouseRecordDetailPageDto.java
  8. 32 0
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookDiscountAlterRecordDto.java
  9. 98 0
      src/main/java/com/xjrsoft/module/textbook/entity/TextbookDiscountAlterRecord.java
  10. 17 0
      src/main/java/com/xjrsoft/module/textbook/mapper/TextbookDiscountAlterRecordMapper.java
  11. 17 0
      src/main/java/com/xjrsoft/module/textbook/service/ITextbookDiscountAlterRecordService.java
  12. 25 0
      src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookDiscountAlterRecordServiceImpl.java
  13. 12 4
      src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookWarehouseRecordServiceImpl.java
  14. 1 0
      src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookRecedeServiceImpl.java
  15. 77 0
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookDiscountAlterRecordListVo.java
  16. 104 0
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookDiscountAlterRecordPageVo.java
  17. 49 0
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookDiscountAlterRecordVo.java
  18. 7 0
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookWarehouseRecordDetailPageVo.java
  19. 22 0
      src/main/resources/sqlScript/textbook_sql.sql
  20. 25 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 149 - 0
src/main/java/com/xjrsoft/module/textbook/controller/TextbookDiscountAlterRecordController.java

@@ -0,0 +1,149 @@
+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.teacher.entity.XjrUser;
+import com.xjrsoft.module.textbook.dto.AddTextbookDiscountAlterRecordDto;
+import com.xjrsoft.module.textbook.dto.TextbookDiscountAlterRecordListDto;
+import com.xjrsoft.module.textbook.dto.TextbookDiscountAlterRecordPageDto;
+import com.xjrsoft.module.textbook.dto.UpdateTextbookDiscountAlterRecordDto;
+import com.xjrsoft.module.textbook.entity.TextbookDiscountAlterRecord;
+import com.xjrsoft.module.textbook.service.ITextbookDiscountAlterRecordService;
+import com.xjrsoft.module.textbook.vo.TextbookDiscountAlterRecordListVo;
+import com.xjrsoft.module.textbook.vo.TextbookDiscountAlterRecordPageVo;
+import com.xjrsoft.module.textbook.vo.TextbookDiscountAlterRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+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.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/textbook" + "/textbookDiscountAlterRecord")
+@Api(value = "/textbook"  + "/textbookDiscountAlterRecord",tags = "教材折扣变更记录代码")
+@AllArgsConstructor
+public class TextbookDiscountAlterRecordController {
+
+
+    private final ITextbookDiscountAlterRecordService textbookDiscountAlterRecordService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="教材折扣变更记录列表(分页)")
+    @SaCheckPermission("textbookdiscountalterrecord:detail")
+    public RT<PageOutput<TextbookDiscountAlterRecordPageVo>> page(@Valid TextbookDiscountAlterRecordPageDto dto){
+
+        LambdaQueryWrapper<TextbookDiscountAlterRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(TextbookDiscountAlterRecord::getId)
+                .select(TextbookDiscountAlterRecord.class,x -> VoToColumnUtil.fieldsToColumns(TextbookDiscountAlterRecordPageVo.class).contains(x.getProperty()));
+        IPage<TextbookDiscountAlterRecord> page = textbookDiscountAlterRecordService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<TextbookDiscountAlterRecordPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookDiscountAlterRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value="教材折扣变更记录列表(不分页)")
+    @SaCheckPermission("textbookdiscountalterrecord:detail")
+    public RT<List<TextbookDiscountAlterRecordListVo>> list(@Valid TextbookDiscountAlterRecordListDto dto){
+
+        MPJLambdaWrapper<TextbookDiscountAlterRecord> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .disableSubLogicDel()
+                .select(TextbookDiscountAlterRecord::getId)
+                .select(TextbookDiscountAlterRecord.class,x -> VoToColumnUtil.fieldsToColumns(TextbookDiscountAlterRecordListVo.class).contains(x.getProperty()))
+                .leftJoin(XjrUser.class, XjrUser::getId, TextbookDiscountAlterRecord::getCreateUserId,
+                        wrapper -> wrapper
+                                .selectAs(XjrUser::getName, TextbookDiscountAlterRecordListVo::getCreateUserIdCn)
+                                .like(StringUtils.isNotEmpty(dto.getCreateUserIdCn()), XjrUser::getName, dto.getCreateUserIdCn())
+                        )
+                .eq(TextbookDiscountAlterRecord::getTextbookWarehouseRecordId, dto.getTextbookWarehouseRecordId())
+                .ge(ObjectUtils.isNotEmpty(dto.getStartCreateDate()), TextbookDiscountAlterRecord::getCreateDate, dto.getStartCreateDate())
+                .le(ObjectUtils.isNotEmpty(dto.getEndCreateDate()), TextbookDiscountAlterRecord::getCreateDate, dto.getEndCreateDate())
+                .orderByDesc(TextbookDiscountAlterRecord::getId)
+        ;
+
+        List<TextbookDiscountAlterRecordListVo> list = textbookDiscountAlterRecordService.selectJoinList(TextbookDiscountAlterRecordListVo.class, queryWrapper);
+        List<TextbookDiscountAlterRecordListVo> listVos = BeanUtil.copyToList(list, TextbookDiscountAlterRecordListVo.class);
+        return RT.ok(listVos);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询教材折扣变更记录信息")
+    @SaCheckPermission("textbookdiscountalterrecord:detail")
+    public RT<TextbookDiscountAlterRecordVo> info(@RequestParam Long id){
+        TextbookDiscountAlterRecord textbookDiscountAlterRecord = textbookDiscountAlterRecordService.getById(id);
+        if (textbookDiscountAlterRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(textbookDiscountAlterRecord, TextbookDiscountAlterRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增教材折扣变更记录")
+    @SaCheckPermission("textbookdiscountalterrecord:add")
+    public RT<Boolean> add(@Valid @RequestBody AddTextbookDiscountAlterRecordDto dto){
+        TextbookDiscountAlterRecord textbookDiscountAlterRecord = BeanUtil.toBean(dto, TextbookDiscountAlterRecord.class);
+        boolean isSuccess = textbookDiscountAlterRecordService.save(textbookDiscountAlterRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改教材折扣变更记录")
+    @SaCheckPermission("textbookdiscountalterrecord:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateTextbookDiscountAlterRecordDto dto){
+
+        TextbookDiscountAlterRecord textbookDiscountAlterRecord = BeanUtil.toBean(dto, TextbookDiscountAlterRecord.class);
+        return RT.ok(textbookDiscountAlterRecordService.updateById(textbookDiscountAlterRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除教材折扣变更记录")
+    @SaCheckPermission("textbookdiscountalterrecord:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(textbookDiscountAlterRecordService.removeBatchByIds(ids));
+
+    }
+    @PostMapping("/import")
+    @ApiOperation(value = "导入")
+    public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
+        List<TextbookDiscountAlterRecordPageVo> savedDataList = EasyExcel.read(file.getInputStream()).head(TextbookDiscountAlterRecordPageVo.class).sheet().doReadSync();
+        Boolean result = textbookDiscountAlterRecordService.saveBatch(BeanUtil.copyToList(savedDataList, TextbookDiscountAlterRecord.class));
+        return RT.ok(result);
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid TextbookDiscountAlterRecordPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<TextbookDiscountAlterRecordPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<TextbookDiscountAlterRecordPageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, TextbookDiscountAlterRecordPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "TextbookDiscountAlterRecord" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

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

@@ -83,7 +83,7 @@ public class TextbookWarehouseRecordController {
 
     }
 
-    @PutMapping("/update-discount")
+    @PostMapping("/update-discount")
     @ApiOperation(value = "修改入库后的折扣")
     @SaCheckPermission("textbookclasswarehouse:edit")
     public RT<Boolean> updateDiscount(@Valid @RequestBody UpdateDiscountDto dto){

+ 19 - 21
src/main/java/com/xjrsoft/module/textbook/controller/TextbookWarehouseRecordDetailController.java

@@ -1,46 +1,38 @@
 package com.xjrsoft.module.textbook.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.xjrsoft.common.constant.GlobalConstant;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.enums.WarehouseModeEnum;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDetailDto;
-import com.xjrsoft.module.textbook.dto.UpdateTextbookWarehouseRecordDetailDto;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.alibaba.excel.EasyExcel;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
-import com.alibaba.excel.support.ExcelTypeEnum;
-import org.springframework.http.ResponseEntity;
-import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
-
 import com.xjrsoft.module.textbook.dto.TextbookWarehouseRecordDetailPageDto;
+import com.xjrsoft.module.textbook.dto.UpdateTextbookWarehouseRecordDetailDto;
 import com.xjrsoft.module.textbook.entity.TextbookWarehouseRecordDetail;
 import com.xjrsoft.module.textbook.service.ITextbookWarehouseRecordDetailService;
 import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordDetailPageVo;
-
 import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordDetailVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -64,18 +56,24 @@ public class TextbookWarehouseRecordDetailController {
     public RT<PageOutput<TextbookWarehouseRecordDetailPageVo>> page(@Valid TextbookWarehouseRecordDetailPageDto dto){
         MPJLambdaWrapper<TextbookWarehouseRecordDetail> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
+                .disableSubLogicDel()
                 .select(TextbookWarehouseRecordDetail::getId)
                 .select(TextbookWarehouseRecordDetail.class,x -> VoToColumnUtil.fieldsToColumns(TextbookWarehouseRecordDetailPageVo.class).contains(x.getProperty()))
                 .leftJoin(XjrUser.class, XjrUser::getId, TextbookWarehouseRecordDetail::getCreateUserId,
                         wrapper -> wrapper
                                 .selectAs(XjrUser::getName, TextbookWarehouseRecordDetailPageVo::getCreateUserIdCn)
+                                .like(StringUtils.isNotEmpty(dto.getCreateUserIdCn()), XjrUser::getName, dto.getCreateUserIdCn())
                         )
                 .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, TextbookWarehouseRecordDetail::getWarehouseMode,
                         wrapper -> wrapper
                                 .selectAs(DictionaryDetail::getName, TextbookWarehouseRecordDetailPageVo::getWarehouseModeCn)
                 )
                 .eq(ObjectUtils.isNotEmpty(dto.getTextbookWarehouseRecordId()), TextbookWarehouseRecordDetail::getTextbookWarehouseRecordId, dto.getTextbookWarehouseRecordId())
+                .eq(ObjectUtils.isNotEmpty(dto.getWarehouseModeInt()) && dto.getWarehouseModeInt() == 1, TextbookWarehouseRecordDetail::getWarehouseMode, WarehouseModeEnum.WmRecede)
+                .ne(ObjectUtils.isNotEmpty(dto.getWarehouseModeInt()) && dto.getWarehouseModeInt() != 1, TextbookWarehouseRecordDetail::getWarehouseMode, WarehouseModeEnum.WmRecede)
                 .eq(StringUtils.isNotEmpty(dto.getWarehouseMode()), TextbookWarehouseRecordDetail::getWarehouseMode, dto.getWarehouseMode())
+                .ge(ObjectUtils.isNotEmpty(dto.getStartCreateDate()), TextbookWarehouseRecordDetail::getCreateDate, dto.getStartCreateDate())
+                .le(ObjectUtils.isNotEmpty(dto.getEndCreateDate()), TextbookWarehouseRecordDetail::getCreateDate, dto.getEndCreateDate())
                 .orderByDesc(TextbookWarehouseRecordDetail::getId)
         ;
         IPage<TextbookWarehouseRecordDetailPageVo> page = textbookWarehouseRecordDetailService.selectJoinListPage(ConventPage.getPage(dto), TextbookWarehouseRecordDetailPageVo.class, queryWrapper);

+ 48 - 0
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookDiscountAlterRecordDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+public class AddTextbookDiscountAlterRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 入库编号
+    */
+    @ApiModelProperty("入库编号")
+    private Long textbookWarehouseRecordId;
+    /**
+    * 旧的折扣
+    */
+    @ApiModelProperty("旧的折扣")
+    private Double oldDiscount;
+    /**
+    * 新的折扣
+    */
+    @ApiModelProperty("新的折扣")
+    private Double newDiscount;
+
+}

+ 36 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookDiscountAlterRecordListDto.java

@@ -0,0 +1,36 @@
+package com.xjrsoft.module.textbook.dto;
+
+import com.xjrsoft.common.page.ListInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 教材折扣变更记录列表查询入参
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TextbookDiscountAlterRecordListDto extends ListInput {
+
+    @ApiModelProperty("入库编号")
+    private Long textbookWarehouseRecordId;
+
+    @ApiModelProperty("创建人")
+    private String createUserIdCn;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime startCreateDate;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime endCreateDate;
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookDiscountAlterRecordPageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.textbook.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 教材折扣变更记录分页查询入参
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TextbookDiscountAlterRecordPageDto extends PageInput {
+
+
+}

+ 12 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookWarehouseRecordDetailPageDto.java

@@ -27,6 +27,18 @@ public class TextbookWarehouseRecordDetailPageDto extends PageInput {
     @ApiModelProperty("教材入库记录主键id(textbook_warehouse_record)")
     private Long textbookWarehouseRecordId;
 
+    @ApiModelProperty("入库方式,1:退书,2:非退书的其他")
+    private Integer warehouseModeInt;
+
     @ApiModelProperty("入库方式(xjr_dictionary_item[warehouse_mode])")
     private String warehouseMode;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime startCreateDate;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime endCreateDate;
+
+    @ApiModelProperty("创建人")
+    private String createUserIdCn;
 }

+ 32 - 0
src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookDiscountAlterRecordDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+public class UpdateTextbookDiscountAlterRecordDto extends AddTextbookDiscountAlterRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 98 - 0
src/main/java/com/xjrsoft/module/textbook/entity/TextbookDiscountAlterRecord.java

@@ -0,0 +1,98 @@
+package com.xjrsoft.module.textbook.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+@TableName("textbook_discount_alter_record")
+@ApiModel(value = "textbook_discount_alter_record", description = "教材折扣变更记录")
+public class TextbookDiscountAlterRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 入库编号
+    */
+    @ApiModelProperty("入库编号")
+    private Long textbookWarehouseRecordId;
+    /**
+    * 旧的折扣
+    */
+    @ApiModelProperty("旧的折扣")
+    private Double oldDiscount;
+    /**
+    * 新的折扣
+    */
+    @ApiModelProperty("新的折扣")
+    private Double newDiscount;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookDiscountAlterRecordMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.textbook.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.textbook.entity.TextbookDiscountAlterRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Mapper
+public interface TextbookDiscountAlterRecordMapper extends MPJBaseMapper<TextbookDiscountAlterRecord> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/textbook/service/ITextbookDiscountAlterRecordService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.textbook.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.textbook.entity.TextbookDiscountAlterRecord;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+
+public interface ITextbookDiscountAlterRecordService extends MPJBaseService<TextbookDiscountAlterRecord> {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookDiscountAlterRecordServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.textbook.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.textbook.entity.TextbookDiscountAlterRecord;
+import com.xjrsoft.module.textbook.mapper.TextbookDiscountAlterRecordMapper;
+import com.xjrsoft.module.textbook.service.ITextbookDiscountAlterRecordService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 教材折扣变更记录
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class TextbookDiscountAlterRecordServiceImpl extends MPJBaseServiceImpl<TextbookDiscountAlterRecordMapper, TextbookDiscountAlterRecord> implements ITextbookDiscountAlterRecordService {
+}

+ 12 - 4
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookWarehouseRecordServiceImpl.java

@@ -21,10 +21,7 @@ import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.textbook.dto.*;
 import com.xjrsoft.module.textbook.entity.*;
-import com.xjrsoft.module.textbook.mapper.TextbookMapper;
-import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionItemMapper;
-import com.xjrsoft.module.textbook.mapper.TextbookWarehouseRecordDetailMapper;
-import com.xjrsoft.module.textbook.mapper.TextbookWarehouseRecordMapper;
+import com.xjrsoft.module.textbook.mapper.*;
 import com.xjrsoft.module.textbook.service.ITextbookWarehouseRecordService;
 import com.xjrsoft.module.textbook.vo.SubscriptionItemListDistributeVo;
 import com.xjrsoft.module.textbook.vo.TextbookSubscriptionPageVo;
@@ -57,6 +54,8 @@ public class TextbookWarehouseRecordServiceImpl extends MPJBaseServiceImpl<Textb
 
     private final TextbookSubscriptionItemMapper textbookSubscriptionItemMapper;
 
+    private final TextbookDiscountAlterRecordMapper textbookDiscountAlterRecordMapper;
+
     @Override
     public IPage<TextbookWarehouseRecordPageVo> getPage(TextbookWarehouseRecordPageDto dto) {
         MPJLambdaWrapper<TextbookWarehouseRecord> textbookWarehouseRecordMPJLambdaWrapper = new MPJLambdaWrapper<>();
@@ -215,6 +214,7 @@ public class TextbookWarehouseRecordServiceImpl extends MPJBaseServiceImpl<Textb
             updateTextbookSubscriptionItem.setId(textbookSubscriptionItem.getId());
             updateTextbookSubscriptionItem.setDiscount(dto.getDiscount());
             updateTextbookSubscriptionItem.setPrice(textbookWarehouseRecord.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount() / 10)));
+            updateTextbookSubscriptionItem.setModifyDate(new Date());
             textbookSubscriptionItemMapper.updateById(updateTextbookSubscriptionItem);
         }
 
@@ -224,8 +224,16 @@ public class TextbookWarehouseRecordServiceImpl extends MPJBaseServiceImpl<Textb
         updateTextbookWarehouseRecord.setSubtotal(textbookWarehouseRecord.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount() / 10)));
         updateTextbookWarehouseRecord.setTotalPrice(updateTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getWarehouseNumber())));
         updateTextbookWarehouseRecord.setActualTotalPrice(updateTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getActualWarehouseNumber())));
+        updateTextbookWarehouseRecord.setModifyDate(new Date());
         textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
 
+        TextbookDiscountAlterRecord textbookDiscountAlterRecord = new TextbookDiscountAlterRecord();
+        textbookDiscountAlterRecord.setTextbookWarehouseRecordId(textbookWarehouseRecord.getId());
+        textbookDiscountAlterRecord.setOldDiscount(textbookWarehouseRecord.getDiscount());
+        textbookDiscountAlterRecord.setNewDiscount(dto.getDiscount());
+        textbookDiscountAlterRecord.setCreateDate(new Date());
+        textbookDiscountAlterRecordMapper.insert(textbookDiscountAlterRecord);
+
         return true;
     }
 }

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

@@ -172,6 +172,7 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
                         textbookWarehouseRecordDetail.setWarehouseMode(WarehouseModeEnum.WmRecede.getCode());
                         textbookWarehouseRecordDetail.setWarehouseNumber(ObjectUtils.isEmpty(wfTextbookRecedeItem.getNumber()) ? 0 : wfTextbookRecedeItem.getNumber());
                         textbookWarehouseRecordDetail.setCreateDate(new Date());
+                        textbookWarehouseRecordDetail.setCreateUserId(wfTextbookRecede.getApplicantUserId());
                         textbookWarehouseRecordDetailMapper.insert(textbookWarehouseRecordDetail);
 
                         // 修改入库记录

+ 77 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookDiscountAlterRecordListVo.java

@@ -0,0 +1,77 @@
+package com.xjrsoft.module.textbook.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 教材折扣变更记录列表列表入参
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+public class TextbookDiscountAlterRecordListVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键编号")
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建人")
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    /**
+     * 创建人
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建人")
+    @ApiModelProperty("创建人")
+    private String createUserIdCn;
+    /**
+    * 创建时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建时间")
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 入库编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入库编号")
+    @ApiModelProperty("入库编号")
+    private Long textbookWarehouseRecordId;
+    /**
+    * 旧的折扣
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("旧的折扣")
+    @ApiModelProperty("旧的折扣")
+    private Double oldDiscount;
+    /**
+    * 新的折扣
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("新的折扣")
+    @ApiModelProperty("新的折扣")
+    private Double newDiscount;
+
+}

+ 104 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookDiscountAlterRecordPageVo.java

@@ -0,0 +1,104 @@
+package com.xjrsoft.module.textbook.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 教材折扣变更记录分页列表出参
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+public class TextbookDiscountAlterRecordPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键编号")
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建人")
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建时间")
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("修改人")
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("修改时间")
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("删除标记")
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("有效标志")
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 入库编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入库编号")
+    @ApiModelProperty("入库编号")
+    private Long textbookWarehouseRecordId;
+    /**
+    * 旧的折扣
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("旧的折扣")
+    @ApiModelProperty("旧的折扣")
+    private Double oldDiscount;
+    /**
+    * 新的折扣
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("新的折扣")
+    @ApiModelProperty("新的折扣")
+    private Double newDiscount;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookDiscountAlterRecordVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.textbook.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 教材折扣变更记录表单出参
+* @Author phoenix
+* @Date: 2025-02-17
+* @Version 1.0
+*/
+@Data
+public class TextbookDiscountAlterRecordVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 入库编号
+    */
+    @ApiModelProperty("入库编号")
+    private Long textbookWarehouseRecordId;
+    /**
+    * 旧的折扣
+    */
+    @ApiModelProperty("旧的折扣")
+    private Double oldDiscount;
+    /**
+    * 新的折扣
+    */
+    @ApiModelProperty("新的折扣")
+    private Double newDiscount;
+
+
+
+}

+ 7 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookWarehouseRecordDetailPageVo.java

@@ -30,6 +30,13 @@ public class TextbookWarehouseRecordDetailPageVo {
     @ExcelProperty("主键编号")
     @ApiModelProperty("主键编号")
     private String id;
+    /**
+     * 创建人
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建人")
+    @ApiModelProperty("创建人")
+    private Long createUserId;
     /**
     * 创建人
     */

+ 22 - 0
src/main/resources/sqlScript/textbook_sql.sql

@@ -433,7 +433,29 @@ create table `wf_textbook_recede_item`
   collate = utf8mb4_0900_ai_ci comment ='退书申请项';
 
 
+-- ----------------------------
+-- 2025-02-17 14:36
+-- 教材折扣变更记录
+-- ----------------------------
+drop table if exists textbook_discount_alter_record;
+create table `textbook_discount_alter_record`
+(
+    id                    bigint   not null comment '主键编号'
+        primary key,
+    create_user_id        bigint   null comment '创建人',
+    create_date           datetime null comment '创建时间',
+    modify_user_id        bigint   null comment '修改人',
+    modify_date           datetime null comment '修改时间',
+    delete_mark           int      not null comment '删除标记',
+    enabled_mark          int      not null comment '有效标志',
+    sort_code             int      null comment '序号',
 
+    textbook_warehouse_record_id bigint   null comment '入库编号',
+    old_discount                 double null default 10 comment '旧的折扣',
+    new_discount                 double null default 10 comment '新的折扣'
+) engine = innodb
+  default charset = utf8mb4
+  collate = utf8mb4_0900_ai_ci comment ='教材折扣变更记录';
 
 
 

+ 25 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -4385,4 +4385,29 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    @Test
+    public void gcTextbookDiscountAlterRecord() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("textbook_discount_alter_record");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("textbook");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(false);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }