Bläddra i källkod

教材入库导入报错解决

dzx 6 månader sedan
förälder
incheckning
264beb3857

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

@@ -261,6 +261,7 @@ public class WfTextbookSubscriptionController {
     @PostMapping("/instockroom-excel-import")
     @ApiOperation(value = "教材征订入库数量导入")
     public RT<String> excelImport(@RequestParam("file") MultipartFile file,  @RequestParam(value = "wfTextbookSubscriptionId") Long wfTextbookSubscriptionId) throws IOException {
+
         InputStream inputStream = file.getInputStream();
         return RT.ok(wfTextbookSubscriptionService.excelImport(inputStream, wfTextbookSubscriptionId));
     }

+ 5 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookInstockroomImportDto.java

@@ -4,7 +4,10 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ContentStyle;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.hibernate.validator.constraints.Range;
 
+import javax.validation.Valid;
+import javax.validation.constraints.Pattern;
 import java.math.BigDecimal;
 
 @Data
@@ -19,6 +22,8 @@ public class TextbookInstockroomImportDto {
     /**
      * 本次入库数量
      */
+    @Pattern(regexp = "\\d+",message = "本次入库数量必须为数字!")
+    @Range(min = 0, message = "本次入库数量不能小于0")
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("本次入库数量")
     @ApiModelProperty("本次入库数量")

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

@@ -3,20 +3,29 @@ package com.xjrsoft.module.textbook.service.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.read.listener.PageReadListener;
 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.exception.MyException;
 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.*;
-import com.xjrsoft.module.textbook.entity.*;
+import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
+import com.xjrsoft.module.textbook.dto.TextbookInstockroomDto;
+import com.xjrsoft.module.textbook.dto.TextbookInstockroomImportDto;
+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.dto.UpdateWfTextbookSubscriptionItemDto;
+import com.xjrsoft.module.textbook.dto.WfTextbookSubscriptionDto;
+import com.xjrsoft.module.textbook.entity.Textbook;
+import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
+import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
+import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
+import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItemHistory;
 import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionRecordMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemHistoryMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemMapper;
@@ -33,9 +42,16 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.InputStream;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -355,22 +371,32 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
     @Override
     public String excelImport(InputStream inputStream, Long wfTextbookSubscriptionId) {
         AtomicReference<Map<String, Object>> atomicMap = new AtomicReference<>(new HashMap<>());
-        EasyExcel.read(inputStream, TextbookInstockroomImportDto.class, new PageReadListener<TextbookInstockroomImportDto>(dataList -> {
-            if (dataList.isEmpty()) {
-                throw new MyException("导入数据为空");
+        List<Map<Integer, Object>> excalDataList = EasyExcel.read(inputStream).sheet().headRowNumber(1).doReadSync();
+        String regex = "\\d+";
+        Pattern pattern = Pattern.compile(regex);
+        List<TextbookInstockroomImportDto> dataList = new ArrayList<>();
+        for (Map<Integer, Object> integerObjectMap : excalDataList) {
+            Matcher matcher = pattern.matcher(integerObjectMap.get(11).toString());
+            int inNum = 0;
+            if(matcher.find()){
+                inNum = Integer.parseInt(integerObjectMap.get(11).toString());
             }
+            TextbookInstockroomImportDto importDto = new TextbookInstockroomImportDto();
+            importDto.setInNum(inNum);
+            importDto.setIssn(integerObjectMap.get(2).toString());
+            dataList.add(importDto);
+        }
 
-            List<TextbookInstockroomDto> textbookInstockroomDtoList = new ArrayList<>();
-            for (TextbookInstockroomImportDto item : dataList){
-                textbookInstockroomDtoList.add(new TextbookInstockroomDto(){{
-                    setWfTextbookSubscriptionId(wfTextbookSubscriptionId);
-                    setIssn(item.getIssn());
-                    setInNum(item.getInNum());
-                }});
-            }
-            atomicMap.set(saveData(textbookInstockroomDtoList));
-        })).sheet().doRead();
 
+        List<TextbookInstockroomDto> textbookInstockroomDtoList = new ArrayList<>();
+        for (TextbookInstockroomImportDto item : dataList){
+            textbookInstockroomDtoList.add(new TextbookInstockroomDto(){{
+                setWfTextbookSubscriptionId(wfTextbookSubscriptionId);
+                setIssn(item.getIssn());
+                setInNum(item.getInNum());
+            }});
+        }
+        atomicMap.set(saveData(textbookInstockroomDtoList));
         if(atomicMap.get() != null){
             return "计划入库教材" + atomicMap.get().get("allNum") + "样,成功入库" + atomicMap.get().get("successNum") + "样,成功入库" + atomicMap.get().get("instockroomNum") + "本";
         }