Kaynağa Gözat

征订历史记录

大数据与最优化研究所 1 yıl önce
ebeveyn
işleme
39a57ac4a5

+ 2 - 2
src/main/java/com/xjrsoft/common/enums/WarehouseModeEnum.java

@@ -8,12 +8,12 @@ package com.xjrsoft.common.enums;
  */
 public enum WarehouseModeEnum {
     /**
-     * 笔记本
+     * 手动
      * */
     WmManual("wm_manual", "手动"),
 
     /**
-     * 作业本
+     * 退书
      * */
     WmRecede("wm_recede", "退书");
 

+ 4 - 2
src/main/java/com/xjrsoft/module/textbook/controller/TextbookController.java

@@ -79,8 +79,9 @@ public class TextbookController {
         MPJLambdaWrapper<Textbook> textbookMPJLambdaWrapper = new MPJLambdaWrapper<>();
         textbookMPJLambdaWrapper
                 .select(Textbook::getId)
+                .selectAs(Textbook::getId,TextbookSubscriptionListVo::getTextbookId)
                 .selectAs(BaseCourseSubject::getName, TextbookSubscriptionListVo::getCourseSubjectIdCn)
-                .selectSum(BaseClassMajorSet::getTotalStudent, TextbookSubscriptionListVo::getNumber)
+                .selectSum(BaseClassMajorSet::getTotalStudent, TextbookSubscriptionListVo::getStudentSubscriptionNumber)
                 .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionListVo.class).contains(x.getProperty()))
                 .leftJoin(TextbookClassRelation.class, TextbookClassRelation::getTextbookId, Textbook::getId)
                 .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, TextbookClassRelation::getClassId)
@@ -106,8 +107,9 @@ public class TextbookController {
         MPJLambdaWrapper<Textbook> textbookMPJLambdaWrapper = new MPJLambdaWrapper<>();
         textbookMPJLambdaWrapper
                 .select(Textbook::getId)
+                .selectAs(Textbook::getId,TextbookSubscriptionListVo::getTextbookId)
                 .selectAs(BaseCourseSubject::getName, TextbookSubscriptionListVo::getCourseSubjectIdCn)
-                .selectSum(BaseClassMajorSet::getTotalStudent, TextbookSubscriptionListVo::getNumber)
+                .selectSum(BaseClassMajorSet::getTotalStudent, TextbookSubscriptionListVo::getStudentSubscriptionNumber)
                 .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionListVo.class).contains(x.getProperty()))
                 .leftJoin(TextbookClassRelation.class, TextbookClassRelation::getTextbookId, Textbook::getId)
                 .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, TextbookClassRelation::getClassId)

+ 30 - 4
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java

@@ -24,12 +24,13 @@ import com.xjrsoft.module.oa.vo.NewsGradeClassTreeVo;
 import com.xjrsoft.module.student.vo.BaseClassQfCountVo;
 import com.xjrsoft.module.student.vo.BaseClassTreeVo;
 import com.xjrsoft.module.textbook.dto.AddWfTextbookSubscriptionDto;
+import com.xjrsoft.module.textbook.dto.TextbookSubscriptionHistoryListDto;
 import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
-import com.xjrsoft.module.textbook.vo.GradeClassListVo;
-import com.xjrsoft.module.textbook.vo.GradeClassTreeVo;
+import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
+import com.xjrsoft.module.textbook.vo.*;
 import org.springframework.http.ResponseEntity;
 import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
@@ -37,9 +38,7 @@ import java.util.ArrayList;
 import com.xjrsoft.module.textbook.dto.WfTextbookSubscriptionPageDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
 import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
-import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionPageVo;
 
-import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -137,6 +136,26 @@ public class WfTextbookSubscriptionController {
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/history-list")
+    @ApiOperation(value="教材教辅征订历史列表(分页)")
+    @SaCheckPermission("wftextbooksubscription:detail")
+    public RT<List<TextbookSubscriptionHistoryListVo>> historyList(@Valid TextbookSubscriptionHistoryListDto dto){
+
+        MPJLambdaWrapper<WfTextbookSubscription> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .selectSum(WfTextbookSubscriptionItem::getStudentSubscriptionNumber, TextbookSubscriptionHistoryListVo::getTeacherSubscriptionNumber)
+                .selectSum(WfTextbookSubscriptionItem::getTeacherSubscriptionNumber, TextbookSubscriptionHistoryListVo::getTeacherSubscriptionNumber)
+                .selectAs(WfTextbookSubscriptionItem::getTextbookId, TextbookSubscriptionHistoryListVo::getTextbookId)
+                .rightJoin(WfTextbookSubscriptionItem.class, WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, WfTextbookSubscription::getId)
+                .eq(WfTextbookSubscriptionItem::getTextbookId, dto.getTextbookId())
+                .eq(WfTextbookSubscription::getBaseSemesterId, dto.getBaseSemesterId())
+                .orderByDesc(WfTextbookSubscription::getCreateDate)
+                .groupBy(WfTextbookSubscriptionItem::getTextbookId)
+        ;
+        List<TextbookSubscriptionHistoryListVo> list = wfTextbookSubscriptionService.selectJoinList(TextbookSubscriptionHistoryListVo.class, queryWrapper);
+        return RT.ok(list);
+    }
+
     @GetMapping(value = "/info")
     @ApiOperation(value="根据id查询教材教辅征订信息")
     @SaCheckPermission("wftextbooksubscription:detail")
@@ -168,6 +187,13 @@ public class WfTextbookSubscriptionController {
 
     }
 
+    @PutMapping(value = "/change-status")
+    @ApiOperation(value = "修改教材教辅征订状态")
+    @SaCheckPermission("wftextbooksubscription:edit")
+    public RT<Boolean> changeStatus(@Valid @RequestBody UpdateWfTextbookSubscriptionDto dto){
+        return RT.ok(wfTextbookSubscriptionService.changeStatus(dto));
+    }
+
     @DeleteMapping
     @ApiOperation(value = "删除教材教辅征订")
     @SaCheckPermission("wftextbooksubscription:delete")

+ 8 - 4
src/main/java/com/xjrsoft/module/textbook/dto/AddWfTextbookSubscriptionDto.java

@@ -1,5 +1,7 @@
 package com.xjrsoft.module.textbook.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.io.Serializable;
@@ -56,15 +58,17 @@ public class AddWfTextbookSubscriptionDto implements Serializable {
     @ApiModelProperty("备注")
     private String remark;
     /**
-    * 状态(1:结束 0:未结束)
-    */
-    @ApiModelProperty("状态(1:结束 0:未结束)")
+     * 状态(1:结束 0:未结束)
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
+    @ApiModelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
     private Integer status;
     /**
      * 征订方式(1:结束 2:未结束)
      */
     @ApiModelProperty("征订方式(1:按班级征订 2:按教材征订)")
-    private Integer subscription_method;
+    private Integer subscriptionMethod;
     /**
     * wfTextbookSubscriptionItem
     */

+ 28 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookSubscriptionHistoryListDto.java

@@ -0,0 +1,28 @@
+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 TextbookSubscriptionHistoryListDto {
+    /**
+     * 学期ID(base_semester)
+     */
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private Long textbookId;
+}

+ 8 - 4
src/main/java/com/xjrsoft/module/textbook/entity/WfTextbookSubscription.java

@@ -1,5 +1,7 @@
 package com.xjrsoft.module.textbook.entity;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
@@ -104,16 +106,18 @@ public class WfTextbookSubscription implements Serializable {
     @ApiModelProperty("备注")
     private String remark;
     /**
-    * 状态(1:结束 0:未结束)
-    */
-    @ApiModelProperty("状态(1:结束 0:未结束)")
+     * 状态(1:结束 0:未结束)
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
+    @ApiModelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
     private Integer status;
 
     /**
      * 征订方式(1:结束 2:未结束)
      */
     @ApiModelProperty("征订方式(1:按班级征订 2:按教材征订)")
-    private Integer subscription_method;
+    private Integer subscriptionMethod;
 
     /**
     * wfTextbookSubscriptionItem

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

@@ -2,6 +2,7 @@ package com.xjrsoft.module.textbook.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
 import lombok.Data;
 import java.util.List;
@@ -37,4 +38,6 @@ public interface IWfTextbookSubscriptionService extends MPJBaseService<WfTextboo
     * @return
     */
     Boolean delete(List<Long> ids);
+
+    Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto);
 }

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

@@ -1,15 +1,25 @@
 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.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.oa.entity.NewsRelation;
+import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
+import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
+import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
+import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionRecordMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemMapper;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionMapper;
+import com.xjrsoft.module.textbook.service.ITextbookService;
 import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
 import 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.stream.Collectors;
@@ -28,10 +38,14 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
 
     private final WfTextbookSubscriptionItemMapper wfTextbookSubscriptionWfTextbookSubscriptionItemMapper;
 
+    private final TextbookSubscriptionRecordMapper textbookTextbookSubscriptionRecordMapper;
+
+    private final ITextbookService textbookService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(WfTextbookSubscription wfTextbookSubscription) {
+        wfTextbookSubscription.setStatus(1);
         wfTextbookSubscriptionWfTextbookSubscriptionMapper.insert(wfTextbookSubscription);
         for (WfTextbookSubscriptionItem wfTextbookSubscriptionItem : wfTextbookSubscription.getWfTextbookSubscriptionItemList()) {
             wfTextbookSubscriptionItem.setWfTextbookSubscriptionId(wfTextbookSubscription.getId());
@@ -85,4 +99,45 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
 
         return true;
     }
+
+    @Override
+    public Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto) {
+        WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getId());
+        if(wfTextbookSubscription == null){
+            return false;
+        }
+        //点击发起征订
+        if(dto.getStatus() == 2){
+            WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
+            return this.update(newW);
+        }
+
+        //点击完成征订
+        if(dto.getStatus() == 3){
+            //添加征订记录
+            List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
+            for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
+                textbookTextbookSubscriptionRecordMapper.insert(new TextbookSubscriptionRecord() {{
+                    setCreateDate(new Date());
+                    setTextbookId(w.getTextbookId());
+                    setWfTextbookSubscriptionId(wfTextbookSubscription.getId());
+                    setWfTextbookSubscriptionItemId(w.getId());//该字段存入征订项的id,征订项中有所属征订记录
+                }});
+            }
+            return true;
+        }
+
+        //点击确认入库
+        if(dto.getStatus() == 4){
+            List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
+            for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
+                textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto(){{
+                    setTextbookId(w.getTextbookId());
+                    setWarehouseNumber((w.getStudentSubscriptionNumber() != null ? w.getStudentSubscriptionNumber() : 0) + (w.getStudentSubscriptionNumber() != null ? w.getTeacherSubscriptionNumber() : 0));
+                    setSource("wm_manual");
+                }});
+            }
+        }
+        return null;
+    }
 }

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

@@ -23,6 +23,11 @@ public class TextbookPageVo {
     @ExcelProperty("主键编号")
     @ApiModelProperty("主键编号")
     private String id;
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private String textbookId;
     /**
     * 序号
     */

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

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.textbook.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 教材管理表单出参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TextbookSubscriptionHistoryListVo {
+
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private String textbookId;
+    /**
+     * 学生用书征订数量
+     */
+    @ApiModelProperty("学生用书征订数量")
+    private Integer studentSubscriptionNumber;
+    /**
+     * 教师教材征订数量
+     */
+    @ApiModelProperty("教师教材征订数量")
+    private Integer teacherSubscriptionNumber;
+}

+ 7 - 2
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionListVo.java

@@ -19,7 +19,12 @@ public class TextbookSubscriptionListVo {
     * 主键编号
     */
     @ApiModelProperty("主键编号")
-    private Long id;
+    private String id;
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private String textbookId;
     /**
      * 课程编号(base_course_subject)
      */
@@ -59,5 +64,5 @@ public class TextbookSubscriptionListVo {
      * 学生用书征订数量
      */
     @ApiModelProperty("学生用书征订数量")
-    private Integer number;
+    private Integer studentSubscriptionNumber;
 }

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

@@ -108,7 +108,11 @@ public class WfTextbookSubscriptionItemVo {
     */
     @ApiModelProperty("版本")
     private String version;
-
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private Long textbookId;
 
 
 }

+ 3 - 3
src/main/java/com/xjrsoft/module/textbook/vo/WfTextbookSubscriptionPageVo.java

@@ -125,14 +125,14 @@ public class WfTextbookSubscriptionPageVo {
     * 状态(1:结束 0:未结束)
     */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("状态(1:结束 0:未结束)")
-    @ApiModelProperty("状态(1:结束 0:未结束)")
+    @ExcelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
+    @ApiModelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
     private Integer status;
     /**
      * 征订方式(1:结束 2:未结束)
      */
     @ApiModelProperty("征订方式(1:按班级征订 2:按教材征订)")
-    private Integer subscription_method;
+    private Integer subscriptionMethod;
 
     private Integer sum;
 }

+ 13 - 3
src/main/java/com/xjrsoft/module/textbook/vo/WfTextbookSubscriptionVo.java

@@ -1,5 +1,7 @@
 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;
 
@@ -55,11 +57,19 @@ public class WfTextbookSubscriptionVo {
     @ApiModelProperty("备注")
     private String remark;
     /**
-    * 状态(1:结束 0:未结束)
-    */
-    @ApiModelProperty("状态(1:结束 0:未结束)")
+     * 状态(1:结束 0:未结束)
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
+    @ApiModelProperty("状态(1:待发起 2:征订中 3:待入库 4:已入库)")
     private Integer status;
 
+    /**
+     * 征订方式(1:结束 2:未结束)
+     */
+    @ApiModelProperty("征订方式(1:按班级征订 2:按教材征订)")
+    private Integer subscriptionMethod;
+
 
     /**
     * wfTextbookSubscriptionItem

+ 1 - 1
src/main/resources/mapper/textbook/TextbookMapper.xml

@@ -5,7 +5,7 @@
 <mapper namespace="com.xjrsoft.module.textbook.mapper.TextbookMapper">
     <select id="getPage" parameterType="com.xjrsoft.module.textbook.dto.TextbookPageDto"
             resultType="com.xjrsoft.module.textbook.vo.TextbookPageVo">
-        SELECT t1.id,t1.sort_code,t1.issn,t1.book_name,t1.publishing_house,t1.editor_in_chief,
+        SELECT t1.id,t1.id AS textbookId,t1.sort_code,t1.issn,t1.book_name,t1.publishing_house,t1.editor_in_chief,
         t1.subject_group_id,t2.group_name,t3.name AS semester_name,t4.name AS course_name,t7.name AS
         is_textbook_plan_cn,
         t5.name AS textbook_type_cn,t1.specifications_models,t1.appraisal_price,t1.price,t1.discount,t1.subtotal,t1.stock,