فهرست منبع

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

dzx 9 ماه پیش
والد
کامیت
a575ca3dcc

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

@@ -111,12 +111,12 @@ public class TextbookWarehouseRecordController {
         return RT.fileStream(bot.toByteArray(), "TextbookClassWarehouse" + ExcelTypeEnum.XLSX.getValue());
     }
 
-//    @PostMapping("/export-query")
-//    @ApiOperation(value = "教材入库记录条件导出")
-//    public ResponseEntity<byte[]> exportDataQuery(@Valid @RequestBody TextbookWarehouseRecordExportDto dto) {
-    @GetMapping("/export-query")
+    @PostMapping("/export-query")
     @ApiOperation(value = "教材入库记录条件导出")
-    public ResponseEntity<byte[]> exportDataQuery(@Valid TextbookWarehouseRecordExportDto dto) {
+    public ResponseEntity<byte[]> exportDataQuery(@Valid @RequestBody TextbookWarehouseRecordExportDto dto) {
+//    @GetMapping("/export-query")
+//    @ApiOperation(value = "教材入库记录条件导出")
+//    public ResponseEntity<byte[]> exportDataQuery(@Valid TextbookWarehouseRecordExportDto dto) {
         ByteArrayOutputStream bot = textbookClassWarehouseService.exportDataQuery(dto);
 
         String fileName = "教材入库记录";

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

@@ -128,6 +128,7 @@ public class TextbookIssueRecordServiceImpl extends MPJBaseServiceImpl<TextbookI
                 .le(ObjectUtils.isNotEmpty(dto.getEndCreateDate()), TextbookIssueRecord::getCreateDate, dto.getEndCreateDate())
                 .gt(ObjectUtils.isNotEmpty(dto.getReturnState()) && dto.getReturnState() == 1, TextbookIssueRecord::getRecedeNumber, 0)
                 .eq(ObjectUtils.isNotEmpty(dto.getReturnState()) && dto.getReturnState() == 0, TextbookIssueRecord::getRecedeNumber, 0)
+                .orderByDesc(TextbookIssueRecord::getCreateDate)
                 ;
 
         return textbookIssueRecordMapper.selectJoinPage(ConventPage.getPage(dto), TextbookIssueRecordPageVo.class, textbookIssueRecordMPJLambdaWrapper);

+ 22 - 9
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookStudentClaimServiceImpl.java

@@ -45,6 +45,7 @@ import com.xjrsoft.module.textbook.vo.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -491,13 +492,14 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         List<TextbookStudentClaim> textbookStudentClaimList = textbookStudentClaimMapper.selectList(textbookStudentClaimLambdaQueryWrapper);
 
         Map<String, TextbookStudentClaim> byClassIdAndUserIdAndBook = textbookStudentClaimList.stream()
-                .collect(Collectors.toMap(t -> "" + t.getStudentUserId() + t.getTextbookId(), t -> t, (t1, t2) -> t1));
+                .collect(Collectors.toMap(t ->t.getStudentUserId() + "-" + t.getTextbookId(), t -> t, (t1, t2) -> t1));
 
         Map<Long, List<TextbookStudentClaim>> groupByUserId = textbookStudentClaimList.stream()
                 .collect(Collectors.groupingBy(TextbookStudentClaim::getStudentUserId));
 
         // 已经全部发完的用户
         List<Long> allClaimUserIds = new ArrayList<>();
+        // 部分发了的用户
         List<Long> partClaimUserIds = new ArrayList<>();
         for (Map.Entry<Long, List<TextbookStudentClaim>> entry : groupByUserId.entrySet()) {
             Long key = entry.getKey();
@@ -566,21 +568,31 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         IPage<TeacherCheckByStuVo> teacherCheckByStuVoList = baseStudentSchoolRollMapper.selectJoinPage(ConventPage.getPage(dto), TeacherCheckByStuVo.class, baseStudentSchoolRollMPJLambdaWrapper);
 
         TextbookStudentClaim oldTextbookStudentClaim;
+        List<TextbookClaimVO> stuTextbooks;
+        List<TextbookClaimVO> eachStustuTextbooks;
+        TextbookClaimVO eachStuTextbookClaimVO;
         for (TeacherCheckByStuVo vo : teacherCheckByStuVoList.getRecords()) {
-            List<TextbookClaimVO> stuTextbooks = textbookByClassIdMap.get(vo.getClassId());
+            stuTextbooks = textbookByClassIdMap.get(vo.getClassId());
+            eachStustuTextbooks = new ArrayList<>();
+            if(ObjectUtils.isEmpty(stuTextbooks)){
+                continue;
+            }
             for (TextbookClaimVO textbookClaimVO : stuTextbooks) {
-                textbookClaimVO.setTextbookStudentClaimId(null);
-                textbookClaimVO.setStudentUserId(vo.getStudentUserId());
-                String key = "" + vo.getStudentUserId() + textbookClaimVO.getTextbookId();
+                eachStuTextbookClaimVO = new TextbookClaimVO();
+                BeanUtils.copyProperties(textbookClaimVO, eachStuTextbookClaimVO);
+                eachStuTextbookClaimVO.setTextbookStudentClaimId(null);
+                eachStuTextbookClaimVO.setStudentUserId(vo.getStudentUserId());
+                String key = vo.getStudentUserId() + "-" + eachStuTextbookClaimVO.getTextbookId();
                 oldTextbookStudentClaim = byClassIdAndUserIdAndBook.get(key);
                 if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)) {
-                    textbookClaimVO.setTextbookStudentClaimId(oldTextbookStudentClaim.getId());
-                    textbookClaimVO.setIsClaim(oldTextbookStudentClaim.getIsClaim());
+                    eachStuTextbookClaimVO.setTextbookStudentClaimId(oldTextbookStudentClaim.getId());
+                    eachStuTextbookClaimVO.setIsClaim(oldTextbookStudentClaim.getIsClaim());
                 } else {
-                    textbookClaimVO.setIsClaim(0);
+                    eachStuTextbookClaimVO.setIsClaim(0);
                 }
+                eachStustuTextbooks.add(eachStuTextbookClaimVO);
             }
-            vo.setTextbookClaimVOList(stuTextbooks);
+            vo.setTextbookClaimVOList(eachStustuTextbooks);
         }
 
 //        //将班上所有学生进行分组,查询出list集合
@@ -653,6 +665,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         MPJLambdaWrapper<TextbookStudentClaim> textbookStudentClaimMPJLambdaWrapper = new MPJLambdaWrapper<>();
         textbookStudentClaimMPJLambdaWrapper
                 .disableSubLogicDel()
+                .select(TextbookStudentClaim::getId)
                 .selectAs(TextbookStudentClaim::getId, TeacherCheckStuClaimVo::getTextbookStudentClaimId)
                 .selectAs(TextbookStudentClaim::getTextbookId, TeacherCheckStuClaimVo::getTextbookId)
                 .selectAs(Textbook::getBookName, TeacherCheckStuClaimVo::getBookName)

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

@@ -111,7 +111,7 @@ public class TextbookWarehouseRecordServiceImpl extends MPJBaseServiceImpl<Textb
                 .le(ObjectUtils.isNotEmpty(dto.getEndCreateDate()), TextbookWarehouseRecord::getCreateDate, dto.getEndCreateDate())
                 .gt(ObjectUtils.isNotEmpty(dto.getReturnBookstore()) && dto.getReturnBookstore() == 1, TextbookWarehouseRecord::getReturnBookstoreNumber, 0)
                 .gt(ObjectUtils.isNotEmpty(dto.getReturnState()) && dto.getReturnState() == 1, TextbookWarehouseRecord::getRecedeNumber, 0)
-//                .orderByDesc(TextbookWarehouseRecord::getCreateDate)
+                .orderByDesc(TextbookWarehouseRecord::getCreateDate)
                 ;
         return this.selectJoinListPage(ConventPage.getPage(dto), TextbookWarehouseRecordPageVo.class, textbookWarehouseRecordMPJLambdaWrapper);
 //        return textbookWarehouseRecordMapper.getPage(page, dto);

+ 190 - 119
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookRecedeServiceImpl.java

@@ -21,6 +21,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -110,6 +112,8 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
     public Boolean dataHandle(Long formId) {
         WfTextbookRecede wfTextbookRecede = this.getByIdDeep(formId);
 
+        Date nowDate = new Date();
+
         // 根据数据id找到所在流程得状态
         WorkflowFormRelation workflowFormRelation = workflowFormRelationMapper.selectOne(
                 Wrappers.lambdaQuery(WorkflowFormRelation.class)
@@ -120,127 +124,194 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
                 && ObjectUtils.isNotEmpty(workflowFormRelation)
                 && HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
         ) {
-            List<WfTextbookRecedeItem> wfTextbookRecedeItemList = wfTextbookRecede.getWfTextbookRecedeItemList();
-            if(ObjectUtils.isNotEmpty(wfTextbookRecedeItemList)){
-                // 获取本学期所有的出库记录
-                List<TextbookIssueRecord> textbookIssueRecords = textbookIssueRecordMapper.selectList(
-                        Wrappers.lambdaQuery(TextbookIssueRecord.class)
-                                .eq(TextbookIssueRecord::getBaseSemesterId, wfTextbookRecede.getBaseSemesterId())
-                                .eq(TextbookIssueRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
-                );
-
-                Map<Long, TextbookIssueRecord> textbookIssueRecordMap = textbookIssueRecords.stream()
-                        .collect(Collectors.toMap(TextbookIssueRecord::getId, t -> t, (t1, t2) -> t1))
-                        ;
-
-                List<Long> textbookWarehouseRecordIds = textbookIssueRecords.stream()
-                        .map(TextbookIssueRecord::getTextbookWarehouseRecordId)
-                        .collect(Collectors.toList());
-
-                // 获取本学期所有的出库记录对应的所有的入库记录
-                List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(
-                        Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
-                                .in(ObjectUtils.isNotEmpty(textbookWarehouseRecordIds), TextbookWarehouseRecord::getId, textbookWarehouseRecordIds)
-                                .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
-                );
-
-                Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordMap = textbookWarehouseRecords.stream()
-                        .collect(Collectors.toMap(TextbookWarehouseRecord::getId, t -> t, (t1, t2) -> t1))
-                        ;
-
-                //遍历每一个退书申请项
-                TextbookWarehouseRecord oldTextbookWarehouseRecord;
-                TextbookWarehouseRecordDetail textbookWarehouseRecordDetail;
-                TextbookWarehouseRecord updateTextbookWarehouseRecord;
-                TextbookIssueRecord oldTextbookIssueRecord;
-                TextbookIssueRecord newTextbookIssueRecord;
-                TextbookIssueRecord updateTextbookIssueRecord;
-                for (WfTextbookRecedeItem wfTextbookRecedeItem : wfTextbookRecedeItemList) {
-                    // 退书项对应的出库记录
-                    oldTextbookIssueRecord = textbookIssueRecordMap.get(wfTextbookRecedeItem.getTextbookIssueRecordId());
-                    // 退书项对应的出库记录对应的入库记录
-                    oldTextbookWarehouseRecord = textbookWarehouseRecordMap.get(oldTextbookIssueRecord.getTextbookWarehouseRecordId());
-
-                    // 退书类型是到教务处
-                    if(RecedeTypeEnum.RecedeeDansOffice.getCode().equals(wfTextbookRecede.getRecedeType())
-                        && ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord)
-                        && ObjectUtils.isNotEmpty(oldTextbookIssueRecord)
-                    ){
-                        // 增加入库详情记录
-                        textbookWarehouseRecordDetail = new TextbookWarehouseRecordDetail();
-                        textbookWarehouseRecordDetail.setTextbookWarehouseRecordId(oldTextbookWarehouseRecord.getId());
-                        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);
-
-                        // 修改入库记录
-                        updateTextbookWarehouseRecord = new TextbookWarehouseRecord();
-                        updateTextbookWarehouseRecord.setId(oldTextbookWarehouseRecord.getId());
-                        updateTextbookWarehouseRecord.setRecedeNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRecedeNumber()) ? oldTextbookWarehouseRecord.getRecedeNumber() : 0)
-                                        + textbookWarehouseRecordDetail.getWarehouseNumber()
-                        );
-                        updateTextbookWarehouseRecord.setRemainNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRemainNumber()) ? oldTextbookWarehouseRecord.getRemainNumber() : 0)
-                                + textbookWarehouseRecordDetail.getWarehouseNumber()
-                        );
-                        updateTextbookWarehouseRecord.setModifyDate(new Date());
-                        textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
-
-                        // 修改出库记录
-                        updateTextbookIssueRecord = new TextbookIssueRecord();
-                        updateTextbookIssueRecord.setId(oldTextbookIssueRecord.getId());
-                        updateTextbookIssueRecord.setRecedeNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getRecedeNumber()) ? oldTextbookIssueRecord.getRecedeNumber() : 0)
-                                        + textbookWarehouseRecordDetail.getWarehouseNumber()
-                        );
-                        updateTextbookIssueRecord.setActualIssueNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getActualIssueNumber()) ? oldTextbookIssueRecord.getActualIssueNumber() : 0)
-                                        -  textbookWarehouseRecordDetail.getWarehouseNumber()
-                        );
-                        updateTextbookIssueRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(updateTextbookIssueRecord.getActualIssueNumber())));
-                        updateTextbookIssueRecord.setModifyDate(new Date());
-                        textbookIssueRecordMapper.updateById(updateTextbookIssueRecord);
+            // 退书类型是到教务处
+            if(RecedeTypeEnum.RecedeeDansOffice.getCode().equals(wfTextbookRecede.getRecedeType())){
+                List<WfTextbookRecedeItem> wfTextbookRecedeItemList = wfTextbookRecede.getWfTextbookRecedeItemList();
+                if(ObjectUtils.isNotEmpty(wfTextbookRecedeItemList)){
+                    // 获取本学期所有的出库记录
+                    List<TextbookIssueRecord> textbookIssueRecords = textbookIssueRecordMapper.selectList(
+                            Wrappers.lambdaQuery(TextbookIssueRecord.class)
+                                    .eq(TextbookIssueRecord::getBaseSemesterId, wfTextbookRecede.getBaseSemesterId())
+                                    .eq(TextbookIssueRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
+                    );
+
+                    Map<Long, TextbookIssueRecord> textbookIssueRecordMap = textbookIssueRecords.stream()
+                            .collect(Collectors.toMap(TextbookIssueRecord::getId, t -> t, (t1, t2) -> t1))
+                            ;
+
+                    List<Long> textbookWarehouseRecordIds = textbookIssueRecords.stream()
+                            .map(TextbookIssueRecord::getTextbookWarehouseRecordId)
+                            .collect(Collectors.toList());
+
+                    // 获取本学期所有的出库记录对应的所有的入库记录
+                    List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(
+                            Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
+                                    .in(ObjectUtils.isNotEmpty(textbookWarehouseRecordIds), TextbookWarehouseRecord::getId, textbookWarehouseRecordIds)
+                                    .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
+                    );
+
+                    Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordMap = textbookWarehouseRecords.stream()
+                            .collect(Collectors.toMap(TextbookWarehouseRecord::getId, t -> t, (t1, t2) -> t1))
+                            ;
+
+                    //遍历每一个退书申请项
+                    TextbookWarehouseRecord oldTextbookWarehouseRecord;
+                    TextbookWarehouseRecordDetail textbookWarehouseRecordDetail;
+                    TextbookWarehouseRecord updateTextbookWarehouseRecord;
+                    TextbookIssueRecord oldTextbookIssueRecord;
+                    TextbookIssueRecord newTextbookIssueRecord;
+                    TextbookIssueRecord updateTextbookIssueRecord;
+                    for (WfTextbookRecedeItem wfTextbookRecedeItem : wfTextbookRecedeItemList) {
+                        // 退书项对应的出库记录
+                        oldTextbookIssueRecord = textbookIssueRecordMap.get(wfTextbookRecedeItem.getTextbookIssueRecordId());
+                        // 退书项对应的出库记录对应的入库记录
+                        oldTextbookWarehouseRecord = textbookWarehouseRecordMap.get(oldTextbookIssueRecord.getTextbookWarehouseRecordId());
+
+                        // 退书类型是到教务处
+                        if(ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord)
+                                && ObjectUtils.isNotEmpty(oldTextbookIssueRecord)
+                        ){
+                            // 增加入库详情记录
+                            textbookWarehouseRecordDetail = new TextbookWarehouseRecordDetail();
+                            textbookWarehouseRecordDetail.setTextbookWarehouseRecordId(oldTextbookWarehouseRecord.getId());
+                            textbookWarehouseRecordDetail.setWarehouseMode(WarehouseModeEnum.WmRecede.getCode());
+                            textbookWarehouseRecordDetail.setWarehouseNumber(ObjectUtils.isEmpty(wfTextbookRecedeItem.getNumber()) ? 0 : wfTextbookRecedeItem.getNumber());
+                            textbookWarehouseRecordDetail.setCreateDate(nowDate);
+                            textbookWarehouseRecordDetail.setCreateUserId(wfTextbookRecede.getApplicantUserId());
+                            textbookWarehouseRecordDetailMapper.insert(textbookWarehouseRecordDetail);
+
+                            // 修改入库记录
+                            updateTextbookWarehouseRecord = new TextbookWarehouseRecord();
+                            updateTextbookWarehouseRecord.setId(oldTextbookWarehouseRecord.getId());
+                            updateTextbookWarehouseRecord.setRecedeNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRecedeNumber()) ? oldTextbookWarehouseRecord.getRecedeNumber() : 0)
+                                            + textbookWarehouseRecordDetail.getWarehouseNumber()
+                            );
+                            updateTextbookWarehouseRecord.setRemainNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRemainNumber()) ? oldTextbookWarehouseRecord.getRemainNumber() : 0)
+                                            + textbookWarehouseRecordDetail.getWarehouseNumber()
+                            );
+                            updateTextbookWarehouseRecord.setModifyDate(nowDate);
+                            textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
+
+                            // 修改出库记录
+                            updateTextbookIssueRecord = new TextbookIssueRecord();
+                            updateTextbookIssueRecord.setId(oldTextbookIssueRecord.getId());
+                            updateTextbookIssueRecord.setRecedeNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getRecedeNumber()) ? oldTextbookIssueRecord.getRecedeNumber() : 0)
+                                            + textbookWarehouseRecordDetail.getWarehouseNumber()
+                            );
+                            updateTextbookIssueRecord.setActualIssueNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getActualIssueNumber()) ? oldTextbookIssueRecord.getActualIssueNumber() : 0)
+                                            -  textbookWarehouseRecordDetail.getWarehouseNumber()
+                            );
+                            updateTextbookIssueRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(updateTextbookIssueRecord.getActualIssueNumber())));
+                            updateTextbookIssueRecord.setModifyDate(nowDate);
+                            textbookIssueRecordMapper.updateById(updateTextbookIssueRecord);
+                        }
                     }
+                }
+            }
+
+            // 退书类型是到书店
+            if(RecedeTypeEnum.RecedeBookstore.getCode().equals(wfTextbookRecede.getRecedeType())){
+                List<WfTextbookRecedeItem> wfTextbookRecedeItemList = wfTextbookRecede.getWfTextbookRecedeItemList();
+                if(ObjectUtils.isNotEmpty(wfTextbookRecedeItemList)){
+                    // 获取本学期所有的入库记录
+                    List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(
+                            Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
+                                    .eq(TextbookWarehouseRecord::getBaseSemesterId, wfTextbookRecede.getBaseSemesterId())
+                                    .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
+                    );
+
+                    Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordMap = textbookWarehouseRecords.stream()
+                            .collect(Collectors.toMap(TextbookWarehouseRecord::getId, t -> t, (t1, t2) -> t1))
+                            ;
+
+                    // 处理出库单号
+                    StringBuilder sb = new StringBuilder();
+                    sb.append("CK");
+                    LocalDateTime now = LocalDateTime.now();
+                    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+                    String nowStr = now.format(dateTimeFormatter);
+                    sb.append(nowStr);
+                    int oldOrderInteger = 0;
+                    int oldOrderLastInteger = 0;
+
+                    //遍历每一个退书申请项
+                    TextbookWarehouseRecord oldTextbookWarehouseRecord;
+                    TextbookWarehouseRecordDetail textbookWarehouseRecordDetail;
+                    TextbookWarehouseRecord updateTextbookWarehouseRecord;
+                    TextbookIssueRecord newTextbookIssueRecord;
+                    for (WfTextbookRecedeItem wfTextbookRecedeItem : wfTextbookRecedeItemList) {
+                        // 退书项对应的入库记录
+                        oldTextbookWarehouseRecord = textbookWarehouseRecordMap.get(wfTextbookRecedeItem.getTextbookIssueRecordId());
+
+                        if(ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord)){
+                            // 新增出库
+                            newTextbookIssueRecord = new TextbookIssueRecord();
+                            newTextbookIssueRecord.setBaseSemesterId(wfTextbookRecede.getBaseSemesterId());
+
+                            // 出库单号前缀
+                            oldOrderInteger += 1;
+                            String newOrder = String.format("%03d", oldOrderInteger); // 补零并格式化为三位数
+                            String oldPrex = sb + newOrder + "-";
+
+                            // 处理出库单号
+                            // 根据当前出库项主键id查找已经有了的出库记录
+                            LambdaQueryWrapper<TextbookIssueRecord> maxOrderNumberLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                            maxOrderNumberLambdaQueryWrapper
+                                    .eq(TextbookIssueRecord::getDataItemId, wfTextbookRecedeItem.getTextbookIssueRecordId())
+                                    .eq(TextbookIssueRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
+                                    .orderByDesc(TextbookIssueRecord::getOrderNumber)
+                                    .last("limit 1")
+                            ;
+                            TextbookIssueRecord maxOrderNumber = textbookIssueRecordMapper.selectOne(maxOrderNumberLambdaQueryWrapper);
+
+                            if(ObjectUtils.isNotEmpty(maxOrderNumber)
+                                    && ObjectUtils.isNotEmpty(maxOrderNumber.getOrderNumber())
+                            ){
+                                String oldOrderNumber = maxOrderNumber.getOrderNumber();
+                                oldPrex = oldOrderNumber.substring(0, oldOrderNumber.length() - 3);
+                                oldOrderInteger -= 1;
+                                String oldOrder = oldOrderNumber.substring(oldOrderNumber.length() - 3);
+                                oldOrderLastInteger = Integer.parseInt(oldOrder);
+                            }
+                            oldOrderLastInteger += 1;
+                            String newLastOrder = String.format("%03d", oldOrderLastInteger); // 补零并格式化为三位数
+                            newTextbookIssueRecord.setOrderNumber(oldPrex + newLastOrder);
+
+                            newTextbookIssueRecord.setTextbookWarehouseRecordId(oldTextbookWarehouseRecord.getId());
+                            newTextbookIssueRecord.setDataId(oldTextbookWarehouseRecord.getId());
+                            newTextbookIssueRecord.setIssueMode(IssueModeEnum.ImRecede.getCode());
+                            newTextbookIssueRecord.setTextbookId(wfTextbookRecedeItem.getTextbookId());
+                            newTextbookIssueRecord.setIssueNumber(ObjectUtils.isEmpty(wfTextbookRecedeItem.getNumber()) ? 0 : wfTextbookRecedeItem.getNumber());
+                            newTextbookIssueRecord.setRecedeNumber(0);
+                            newTextbookIssueRecord.setActualIssueNumber(newTextbookIssueRecord.getIssueNumber());
+                            newTextbookIssueRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(newTextbookIssueRecord.getActualIssueNumber())));
+                            newTextbookIssueRecord.setIssueUserId(wfTextbookRecede.getCreateUserId());
+                            newTextbookIssueRecord.setCreateDate(nowDate);
+                            textbookIssueRecordMapper.insert(newTextbookIssueRecord);
 
-                    //退书类型是到书店
-                    if(RecedeTypeEnum.RecedeBookstore.getCode().equals(wfTextbookRecede.getRecedeType())
-                            && ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord)
-                    ){
-                        // 新增出库
-                        newTextbookIssueRecord = new TextbookIssueRecord();
-                        newTextbookIssueRecord.setBaseSemesterId(wfTextbookRecede.getBaseSemesterId());
-                        newTextbookIssueRecord.setOrderNumber("退书到书店的出库单号");
-                        newTextbookIssueRecord.setTextbookWarehouseRecordId(oldTextbookWarehouseRecord.getId());
-                        newTextbookIssueRecord.setIssueMode(IssueModeEnum.ImRecede.getCode());
-                        newTextbookIssueRecord.setTextbookId(wfTextbookRecedeItem.getTextbookId());
-                        newTextbookIssueRecord.setIssueNumber(ObjectUtils.isEmpty(wfTextbookRecedeItem.getNumber()) ? 0 : wfTextbookRecedeItem.getNumber());
-                        newTextbookIssueRecord.setRecedeNumber(0);
-                        newTextbookIssueRecord.setActualIssueNumber(newTextbookIssueRecord.getIssueNumber());
-                        newTextbookIssueRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(newTextbookIssueRecord.getActualIssueNumber())));
-                        newTextbookIssueRecord.setIssueUserId(wfTextbookRecede.getCreateUserId());
-                        textbookIssueRecordMapper.insert(newTextbookIssueRecord);
-
-                        // 修改入库记录
-                        updateTextbookWarehouseRecord = new TextbookWarehouseRecord();
-                        updateTextbookWarehouseRecord.setId(oldTextbookWarehouseRecord.getId());
-                        updateTextbookWarehouseRecord.setReturnBookstoreNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getReturnBookstoreNumber()) ? oldTextbookWarehouseRecord.getReturnBookstoreNumber() : 0)
-                                        + newTextbookIssueRecord.getIssueNumber()
-                        );
-                        updateTextbookWarehouseRecord.setActualWarehouseNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getWarehouseNumber()) ? oldTextbookWarehouseRecord.getWarehouseNumber() : 0)
-                                        - updateTextbookWarehouseRecord.getReturnBookstoreNumber()
-                        );
-                        updateTextbookWarehouseRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(updateTextbookWarehouseRecord.getActualWarehouseNumber())));
-                        updateTextbookWarehouseRecord.setRemainNumber(
-                                (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRemainNumber()) ? oldTextbookWarehouseRecord.getRemainNumber() : 0)
-                                        - newTextbookIssueRecord.getIssueNumber()
-                        );
-                        updateTextbookWarehouseRecord.setModifyDate(new Date());
-                        textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
+                            // 修改入库记录
+                            updateTextbookWarehouseRecord = new TextbookWarehouseRecord();
+                            updateTextbookWarehouseRecord.setId(oldTextbookWarehouseRecord.getId());
+                            updateTextbookWarehouseRecord.setReturnBookstoreNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getReturnBookstoreNumber()) ? oldTextbookWarehouseRecord.getReturnBookstoreNumber() : 0)
+                                            + newTextbookIssueRecord.getIssueNumber()
+                            );
+                            updateTextbookWarehouseRecord.setActualWarehouseNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getWarehouseNumber()) ? oldTextbookWarehouseRecord.getWarehouseNumber() : 0)
+                                            - updateTextbookWarehouseRecord.getReturnBookstoreNumber()
+                            );
+                            updateTextbookWarehouseRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(updateTextbookWarehouseRecord.getActualWarehouseNumber())));
+                            updateTextbookWarehouseRecord.setRemainNumber(
+                                    (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRemainNumber()) ? oldTextbookWarehouseRecord.getRemainNumber() : 0)
+                                            - newTextbookIssueRecord.getIssueNumber()
+                            );
+                            updateTextbookWarehouseRecord.setModifyDate(nowDate);
+                            textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
+                        }
                     }
                 }
             }

+ 1 - 1
src/test/java/com/xjrsoft/module/textbook/service/impl/WfTextbookRecedeServiceImplTest.java

@@ -19,6 +19,6 @@ class WfTextbookRecedeServiceImplTest {
 
     @Test
     void dataHandle() {
-        wfTextbookRecedeService.dataHandle(1893987152298057728L);
+        wfTextbookRecedeService.dataHandle(1894552632448589824L);
     }
 }