瀏覽代碼

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

dzx 1 年之前
父節點
當前提交
1c16a06b4d

+ 20 - 27
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java

@@ -17,42 +17,21 @@ import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.student.entity.BaseClassMajorSet;
 import com.xjrsoft.module.teacher.entity.XjrUser;
-import com.xjrsoft.module.textbook.dto.AddWfTextbookSubscriptionDto;
-import com.xjrsoft.module.textbook.dto.BaseclassPageDto;
-import com.xjrsoft.module.textbook.dto.TextbookSubscriptionExportQueryListDto;
-import com.xjrsoft.module.textbook.dto.TextbookSubscriptionHistoryListDto;
-import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
-import com.xjrsoft.module.textbook.dto.WfTextbookSubscriptionPageDto;
+import com.xjrsoft.module.textbook.dto.*;
+import com.xjrsoft.module.textbook.entity.Textbook;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
 import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
-import com.xjrsoft.module.textbook.vo.BaseclassPageVo;
-import com.xjrsoft.module.textbook.vo.GradeClassListVo;
-import com.xjrsoft.module.textbook.vo.GradeClassTreeVo;
-import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
-import com.xjrsoft.module.textbook.vo.TextbookSubscriptionHistoryListVo;
-import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionPageVo;
-import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
+import com.xjrsoft.module.textbook.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
 * @title: 教材教辅征订
@@ -124,7 +103,6 @@ public class WfTextbookSubscriptionController {
     @ApiOperation(value="教材教辅征订列表(分页)")
     @SaCheckPermission("wftextbooksubscription:detail")
     public RT<PageOutput<WfTextbookSubscriptionPageVo>> page(@Valid WfTextbookSubscriptionPageDto dto){
-
         MPJLambdaWrapper<WfTextbookSubscription> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
                 .select(WfTextbookSubscription::getId)
@@ -186,6 +164,21 @@ public class WfTextbookSubscriptionController {
         return RT.ok(list);
     }
 
+    @GetMapping(value = "/instockroom-list")
+    @ApiOperation(value="教材教辅征订入库列表")
+    @SaCheckPermission("wftextbooksubscription:detail")
+    public RT<List<TextbookInstockroomListVo>> instockroomList(@Valid TextbookInstockroomListDto dto){
+        List<TextbookInstockroomListVo> list =  wfTextbookSubscriptionService.instockroomList(dto);
+        return RT.ok(list);
+    }
+
+    @PostMapping(value = "/instockroom")
+    @ApiOperation(value="入库")
+    @SaCheckPermission("wftextbooksubscription:detail")
+    public RT<Boolean> instockroom(@Valid @RequestBody  List<TextbookInstockroomDto> dtos){
+        return RT.ok(wfTextbookSubscriptionService.instockroom(dtos));
+    }
+
     @GetMapping(value = "/info")
     @ApiOperation(value="根据id查询教材教辅征订信息")
     @SaCheckPermission("wftextbooksubscription:detail")

+ 30 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookInstockroomDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教材管理分页查询入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TextbookInstockroomDto {
+    /**
+     * 教材教辅征订编号
+     */
+    @ApiModelProperty("教材教辅征订编号")
+    private Long wfTextbookSubscriptionId;
+    /**
+     * 教材教辅征订项编号
+     */
+    @ApiModelProperty("教材教辅征订项编号")
+    private Long id;
+    /**
+     * 本次入库数量
+     */
+    @ApiModelProperty("本次入库数量")
+    private Integer inNum;
+}

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

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

+ 5 - 0
src/main/java/com/xjrsoft/module/textbook/entity/WfTextbookSubscriptionItem.java

@@ -161,4 +161,9 @@ public class WfTextbookSubscriptionItem implements Serializable {
      */
     @ApiModelProperty("教材编号")
     private Long textbookId;
+    /**
+     * 已入库数量
+     */
+    @ApiModelProperty("已入库数量")
+    private Integer instockroomNum;
 }

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

@@ -1,9 +1,12 @@
 package com.xjrsoft.module.textbook.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.textbook.dto.TextbookInstockroomDto;
+import com.xjrsoft.module.textbook.dto.TextbookInstockroomListDto;
 import com.xjrsoft.module.textbook.dto.TextbookSubscriptionExportQueryListDto;
 import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
+import com.xjrsoft.module.textbook.vo.TextbookInstockroomListVo;
 import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
 
@@ -46,4 +49,8 @@ public interface IWfTextbookSubscriptionService extends MPJBaseService<WfTextboo
     WfTextbookSubscriptionVo getInfo(Long id);
 
     List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto);
+
+    List<TextbookInstockroomListVo> instockroomList(TextbookInstockroomListDto dto);
+
+    Boolean instockroom(List<TextbookInstockroomDto> dtos);
 }

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

@@ -2,17 +2,17 @@ package com.xjrsoft.module.textbook.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseCourseSubject;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
-import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
-import com.xjrsoft.module.textbook.dto.TextbookSubscriptionExportQueryListDto;
-import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
+import com.xjrsoft.module.textbook.dto.*;
 import com.xjrsoft.module.textbook.entity.Textbook;
 import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
 import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
@@ -22,6 +22,7 @@ import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionMapper;
 import com.xjrsoft.module.textbook.service.ITextbookService;
 import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
+import com.xjrsoft.module.textbook.vo.TextbookInstockroomListVo;
 import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionItemVo;
 import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
@@ -29,20 +30,15 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
-* @title: 教材教辅征订
-* @Author szs
-* @Date: 2024-06-04
-* @Version 1.0
-*/
+ * @title: 教材教辅征订
+ * @Author szs
+ * @Date: 2024-06-04
+ * @Version 1.0
+ */
 @Service
 @AllArgsConstructor
 public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfTextbookSubscriptionMapper, WfTextbookSubscription> implements IWfTextbookSubscriptionService {
@@ -99,7 +95,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
                 }
             }
             //已经不存在的id 删除
-            if(wfTextbookSubscriptionItemRemoveIds.size() > 0){
+            if (wfTextbookSubscriptionItemRemoveIds.size() > 0) {
                 wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.deleteBatchIds(wfTextbookSubscriptionItemRemoveIds);
             }
         }
@@ -121,20 +117,15 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
     @Transactional(rollbackFor = Exception.class)
     public Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto) {
         WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getId());
-        if(wfTextbookSubscription == null){
+        if (wfTextbookSubscription == null) {
             return false;
         }
         //点击发起征订
-        if(wfTextbookSubscription.getStatus() == 1 && dto.getStatus() == 2){
+        if (wfTextbookSubscription.getStatus() == 1 && dto.getStatus() == 2) {
             WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
-            return this.updateById(newW);
-        }
-
-        //点击完成征订
-        if(wfTextbookSubscription.getStatus() == 2 && dto.getStatus() == 3){
             //添加征订记录
             List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
-            for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
+            for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList) {
                 textbookTextbookSubscriptionRecordMapper.insert(new TextbookSubscriptionRecord() {{
                     setCreateDate(new Date());
                     setTextbookId(w.getTextbookId());
@@ -142,20 +133,12 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
                     setWfTextbookSubscriptionItemId(w.getId());//该字段存入征订项的id,征订项中有所属征订记录
                 }});
             }
-            WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
             return this.updateById(newW);
         }
 
-        //点击确认入库
-        if(wfTextbookSubscription.getStatus() == 3 && 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.getTeacherSubscriptionNumber() != null ? w.getTeacherSubscriptionNumber() : 0));
-                    setSource("wm_manual");
-                }});
-            }
+
+        //点击完成征订
+        if (wfTextbookSubscription.getStatus() == 3 && dto.getStatus() == 4) {
             WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
             return this.updateById(newW);
         }
@@ -165,7 +148,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
     @Override
     public WfTextbookSubscriptionVo getInfo(Long id) {
         WfTextbookSubscription wfTextbookSubscription = this.getById(id);
-        if(wfTextbookSubscription == null){
+        if (wfTextbookSubscription == null) {
             return null;
         }
         WfTextbookSubscriptionVo wfTextbookSubscriptionVo = BeanUtil.toBean(wfTextbookSubscription, WfTextbookSubscriptionVo.class);
@@ -173,32 +156,32 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
         MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
         mpjLambdaWrapper
                 .selectAs(BaseCourseSubject::getName, WfTextbookSubscriptionItemVo::getCourseSubjectIdCn)
-                .select(WfTextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
+                .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
                 .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
                 .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
                 .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
                         ext -> ext.selectAs(DictionaryDetail::getName, WfTextbookSubscriptionItemVo::getTextbookTypeCn))
                 .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
                 .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
-                ;
+        ;
         List<WfTextbookSubscriptionItemVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(WfTextbookSubscriptionItemVo.class, mpjLambdaWrapper);
 
         //处理班级
         String classIds = "";
         List<String> classIdList = new ArrayList<>();
         StringBuilder sb = new StringBuilder();
-        if(!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")){
+        if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
             classIds = itemList.get(0).getClassIds();
             String[] classIdArr = classIds.split(",");
             classIdList = Arrays.asList(classIdArr);
-            if(!classIdList.isEmpty()){
+            if (!classIdList.isEmpty()) {
                 List<BaseClass> baseClassList = baseClassMapper.selectList(Wrappers.<BaseClass>query().lambda().in(BaseClass::getId, classIdList));
                 Map<Long, BaseClass> baseClassMap = baseClassList.stream()
                         .collect(Collectors.toMap(BaseClass::getId, baseClass -> baseClass));
 
-                for (String classId : classIdList){
+                for (String classId : classIdList) {
                     BaseClass baseClass = baseClassMap.get(Long.parseLong(classId));
-                    if(baseClass != null){
+                    if (baseClass != null) {
                         sb.append(baseClass.getName());
                         sb.append(",");
                     }
@@ -210,14 +193,14 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
         //遍历处理所有项
         int stuSum = 0;
         int teaSum = 0;
-        for (WfTextbookSubscriptionItemVo w : itemList){
-            if(!classIdList.isEmpty()){
+        for (WfTextbookSubscriptionItemVo w : itemList) {
+            if (!classIdList.isEmpty()) {
                 w.setClassNum(classIdList.size());
             }
-            if(w.getStudentSubscriptionNumber() != null){
+            if (w.getStudentSubscriptionNumber() != null) {
                 stuSum += w.getStudentSubscriptionNumber();
             }
-            if(w.getTeacherSubscriptionNumber() != null){
+            if (w.getTeacherSubscriptionNumber() != null) {
                 teaSum += w.getTeacherSubscriptionNumber();
             }
         }
@@ -235,14 +218,14 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
     @Override
     public List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto) {
         WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getWfTextbookSubscriptionId());
-        if(wfTextbookSubscription == null){
+        if (wfTextbookSubscription == null) {
             return null;
         }
 
         MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
         mpjLambdaWrapper
                 .selectAs(BaseCourseSubject::getName, TextbookSubscriptionExportQueryListVo::getCourseName)
-                .select(WfTextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
+                .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
                 .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
                 .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
                 .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
@@ -256,7 +239,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
         String classIds = "";
         List<String> classIdList = new ArrayList<>();
         StringBuilder sb = new StringBuilder();
-        if(!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")){
+        if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
             classIds = itemList.get(0).getClassIds();
             String[] classIdArr = classIds.split(",");
             classIdList = Arrays.asList(classIdArr);
@@ -276,10 +259,78 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
             }*/
         }
 
-        for (TextbookSubscriptionExportQueryListVo w : itemList){
+        for (TextbookSubscriptionExportQueryListVo w : itemList) {
             w.setClassNum(classIdList.size());
         }
 
         return itemList;
     }
+
+    @Override
+    public List<TextbookInstockroomListVo> instockroomList(TextbookInstockroomListDto dto) {
+        MPJLambdaWrapper<WfTextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(WfTextbookSubscriptionItem::getId)
+                .selectAs(BaseCourseSubject::getName, TextbookInstockroomListVo::getCourseSubjectIdCn)
+                .selectAs(DictionaryDetail::getName, TextbookInstockroomListVo::getTextbookTypeCn)
+                .select("(t.student_subscription_number + t.teacher_subscription_number) as subscriptionNumber")
+                .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
+                .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
+                .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
+                .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType)
+                .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, dto.getWfTextbookSubscriptionId())
+                .orderByAsc(WfTextbookSubscriptionItem::getInstockroomNum)
+        ;
+        List<TextbookInstockroomListVo> list = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(TextbookInstockroomListVo.class, queryWrapper);
+
+        return list;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean instockroom(List<TextbookInstockroomDto> dtos) {
+        if (dtos.isEmpty()) {
+            return false;
+        }
+
+        //获取需要修改的list
+        LambdaQueryWrapper<WfTextbookSubscriptionItem> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, dtos.get(0).getWfTextbookSubscriptionId())
+                .eq(WfTextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
+        ;
+        List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(queryWrapper);
+
+        if (wfTextbookSubscriptionItemList.isEmpty()) {
+            return false;
+        }
+
+        Map<Long, WfTextbookSubscriptionItem> itemMap = wfTextbookSubscriptionItemList
+                .stream()
+                .collect(Collectors.toMap(
+                        WfTextbookSubscriptionItem::getId,
+                        item -> item
+                ));
+
+        Date now = new Date();
+        Long loginId = StpUtil.getLoginIdAsLong();
+        for (TextbookInstockroomDto dto : dtos) {
+            WfTextbookSubscriptionItem old = itemMap.get(dto.getId());
+            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");
+            }});
+        }
+        return true;
+    }
 }

+ 92 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookInstockroomListVo.java

@@ -0,0 +1,92 @@
+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;
+
+/**
+* @title: 教材管理表单出参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TextbookInstockroomListVo {
+
+    /**
+     * 教材教辅征订编号
+     */
+    @ApiModelProperty("教材教辅征订编号")
+    private Long wfTextbookSubscriptionId;
+    /**
+    * 征订项编号
+    */
+    @ApiModelProperty("征订项编号")
+    private String id;
+    /**
+     * 教材编号
+     */
+    @ApiModelProperty("教材编号")
+    private String textbookId;
+    /**
+     * 课程编号(base_course_subject)
+     */
+    @ApiModelProperty("课程编号(base_course_subject)")
+    private Long courseSubjectId;
+    /**
+     * 课程编号(base_course_subject)
+     */
+    @ApiModelProperty("课程编号(base_course_subject)")
+    private String courseSubjectIdCn;
+    /**
+     * 书名
+     */
+    @ApiModelProperty("书名")
+    private String bookName;
+    /**
+     * 国际标准刊号
+     */
+    @ApiModelProperty("国际标准刊号")
+    private String issn;
+    /**
+    * 出版社
+    */
+    @ApiModelProperty("出版社")
+    private String publishingHouse;
+    /**
+     * 主编
+     */
+    @ApiModelProperty("主编")
+    private String editorInChief;
+    /**
+    * 教材类型(xjr_dictionary_item[textbook_type])
+    */
+    @ApiModelProperty("教材类型(xjr_dictionary_item[textbook_type])")
+    private String textbookType;
+    /**
+     * 教材类型(xjr_dictionary_item[textbook_type])
+     */
+    @ApiModelProperty("教材类型(xjr_dictionary_item[textbook_type])")
+    private String textbookTypeCn;
+    /**
+     * 学生用书征订数量
+     */
+    @ApiModelProperty("学生用书征订数量")
+    private Integer studentSubscriptionNumber;
+    /**
+     * 教师教材征订数量
+     */
+    @ApiModelProperty("教师教材征订数量")
+    private Integer teacherSubscriptionNumber;
+    /**
+     * 教材征订总数量
+     */
+    @ApiModelProperty("教材征订总数量")
+    private Integer subscriptionNumber;
+    /**
+     * 已入库数量
+     */
+    @ApiModelProperty("已入库数量")
+    private Integer instockroomNum;
+}

+ 1 - 0
src/test/java/com/xjrsoft/xjrsoftboot/log.log

@@ -0,0 +1 @@
+鑫怡","orgIndexCode":"567891198765191-2022-early_class-FB3001","orgName":"铜梁职教中心/走读学生/3+2班/2022级/22艺术设计1","doorName":"出门方向从右到左第4台进(进门方向)","doorIndexCode":"66a018915db34f359886642d71e7cb86","doorRegionIndexCode":"root000000","picUri":"/pic?fd00=e802l5f-do771a*63eb3017-460f647ba*022s=**812==*p317=8t1371273070=0l6*2419=4o2*062-144oe9-pi0cd4=00180","svrIndexCode":"30a36469-6434-4c95-9474-f935146cafd5","eventType":196893,"inAndOutType":1,"readerDevIndexCode":"e909e0b292984a10ba1358530359d100","readerDevName":"出门方向从右到左第4台进(进门方向)","devIndexCode":"65afb7ca6b4a4b189bb40f686551585c","devName":"出门方向从右到左第4台进(进门方向)","identityCardUri":null,"receiveTime":"2024-06-18T12:29:13.842+08:00","jobNo":"500225200612136228","studentId":null,"certNo":null,"temp":null},{"eventId":"5531c065102d41a4c0988de4597ffbd4","eventName":"acs.acs.eventType.successFace","eventTime":"2024-06-18T12:28:49+08:00","personId":"654321987655145","cardNo":null,"personName":"田慧淋","orgIndexCode":"567891198765135-2023-early_class-FB3001","orgName":"铜梁职教中心/走读学生/3+2班/2023级/23物联网","doorName":"出门方向从右到左第3台进(进门方向)","doorIndexCode":"4368606854fa4fc98740ea9605e68bd5","doorRegionIndexCode":"root000000","picUri":"/pic?fd00=e802l5f-do371a*52eb3617-460f647ba*022s=**812==*p017=8t1371972070=0l2*2514=3o2*952-180oe9-pi0cd4=00180","svrIndexCode":"30a36469-6434-4c95-9474-f935146cafd5","eventType":196893,"inAndOutType":1,"readerDevIndexCode":"8371a888128d420c9d2c2b4622b7c754","readerDevName":"出门方向从右到左第3台进(进门方向)","devIndexCode":"f2cae097aed349acb3e966622b73eaf6","devName":"出门方向从右到左第3台进(进门方向)","identityCardUri":null,"receiveTime":"2024-06-18T12:29:05.767+08:00","jobNo":"500224200801036940","studentId":null,"certNo":null,"temp":null}],"total":17060,"totalPage":171,"pageNo":9}}