Jelajahi Sumber

平曲线导入问题

yangyj 2 tahun lalu
induk
melakukan
a574a19d65

+ 1 - 4
blade-service/blade-business/src/main/java/org/springblade/business/controller/MileageController.java

@@ -137,10 +137,7 @@ public class MileageController {
         if(file != null&&Func.isNotEmpty(partId)) {
             if(Pattern.matches(".+(\\.xls)x?$", Objects.requireNonNull(file.getOriginalFilename()).toLowerCase(Locale.ROOT))) {
               List<MileageExcel> data = ExcelUtil.read(file,MileageExcel.class);
-              if("导入成功".equals(this.service.importMileagexy(file,AuthUtil.getUserId(),projectId,contractId,partId))){
-                  R.success("导入成功");
-              }
-             return  R.fail("数据错误");
+              return  this.service.importMileagexy(data,AuthUtil.getUserId(),projectId,contractId,partId);
             } else {
                return   R.fail("文件格式不正确,请上传Excel文件");
             }

+ 17 - 0
blade-service/blade-business/src/main/java/org/springblade/business/excel/MileageExcel.java

@@ -7,6 +7,7 @@ import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Arrays;
 
 /**
  * @author yangyj
@@ -19,6 +20,7 @@ import java.io.Serializable;
 @ContentRowHeight(18)
 public class MileageExcel implements Serializable {
     private static final long serialVersionUID = 1L;
+    public static String[] TYPE_KEYS={"直线段","圆曲线","入缓和曲线","出缓和曲线","不完整缓和曲线"};
     @ExcelProperty(value = "类型")
     private String type;
     @ExcelProperty(value = "开始里程")
@@ -47,4 +49,19 @@ public class MileageExcel implements Serializable {
     private Double r2;
     @ExcelProperty(value = "顺序")
     private Integer orderNum;
+
+    public Integer getTypeInt() {
+        for(int i=0;i<TYPE_KEYS.length;i++){
+            if(this.type.equals(TYPE_KEYS[i])){
+                return i;
+            }
+        }
+        return 0;
+    }
+    public String getSwingNull() {
+        if("无".equals(this.swing)||"0".equals(this.swing)){
+            return "";
+        }
+         return swing;
+    }
 }

+ 87 - 55
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/MileagexyService.java

@@ -1,18 +1,24 @@
 package org.springblade.business.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import lombok.AllArgsConstructor;
 import org.apache.poi.hssf.usermodel.HSSFDataFormatter;
 import org.apache.poi.ss.usermodel.*;
 import org.springblade.business.entity.MileagePart;
 import org.springblade.business.entity.Mileagexy;
+import org.springblade.business.excel.MileageExcel;
 import org.springblade.business.mapper.MileagexyMapper;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
@@ -100,65 +106,91 @@ public class MileagexyService  extends BaseServiceImpl<MileagexyMapper, Mileagex
     }
 
 
-    public String importMileagexy(MultipartFile file,Long userId,String projectId, String contractId ,String partId) throws Exception {
-        try {
-            Workbook wb = WorkbookFactory.create(file.getInputStream());
-            Sheet sheet = wb.getSheetAt(0);
-            List<Mileagexy> importList = new ArrayList<>();
-            MileagePart part = this.partService.getById(partId);
-            if(part==null){
-                return "所属片段不存在,请重新再试";
-            }
-            for (int i = 1; ; i++) {
-                Row row = sheet.getRow(i);
-                if(row == null) {
-                    break;
-                }
-                Mileagexy obj = new Mileagexy();
-                for(int j=0;j<14;j++){
-                    Object v=getValue(row.getCell(j));
-                    String value="0";
-                    if(v!=null){
-                         value = v.toString();
-                    }
-                    switch (j){
-                        case 0:obj.setType(toType(value));break;
-                        case 1:obj.setValue(Double.valueOf(value));break;
-                        case 2:obj.setX(Double.valueOf(value));break;
-                        case 3:obj.setY(Double.valueOf(value));break;
-                        case 4:obj.setR(Double.valueOf(value));break;
-                        case 5:if("无".equals(value)||"0".equals(value)){obj.setSwing("");}else{obj.setSwing((String) value);};break;
-                        case 6:obj.setL(Double.valueOf(value));break;
-                        case 7:obj.setDu(Integer.valueOf(value));break;
-                        case 8:obj.setFen(Integer.valueOf(value));break;
-                        case 9:obj.setMiao(Double.valueOf(value));break;
-                        case 10:obj.setDlq(Double.valueOf(value));break;
-                        case 11:obj.setDlh(Double.valueOf(value));break;
-                        case 12:obj.setR2(Double.valueOf(value));break;
-                        case 13:obj.setOrderNum(Integer.valueOf(value));break;
-                        default:break;
-                    }
-
-                }
-                obj.setUpdateUser(userId);
-                obj.setProjectId(projectId);
-                obj.setValueEnd(obj.getValue()+obj.getL());
-                obj.setPartId(partId);
-                obj.setContractId(contractId);
-                obj.setPartNo(part.getPrefix());
-                //必须要设置angle
-                obj.setAngle(obj.getDu()+Double.valueOf(obj.getFen())/60+obj.getMiao()/3600);
-                importList.add(obj);
-            }
+//    public String importMileagexy(MultipartFile file,Long userId,String projectId, String contractId ,String partId) throws Exception {
+//        try {
+//            Workbook wb = WorkbookFactory.create(file.getInputStream());
+//            Sheet sheet = wb.getSheetAt(0);
+//            List<Mileagexy> importList = new ArrayList<>();
+//            MileagePart part = this.partService.getById(partId);
+//            if(part==null){
+//                return "所属片段不存在,请重新再试";
+//            }
+//            for (int i = 1; ; i++) {
+//                Row row = sheet.getRow(i);
+//                if(row == null) {
+//                    break;
+//                }
+//                Mileagexy obj = new Mileagexy();
+//                for(int j=0;j<14;j++){
+//                    Object v=getValue(row.getCell(j));
+//                    String value="0";
+//                    if(v!=null){
+//                         value = v.toString();
+//                    }
+//                    switch (j){
+//                        case 0:obj.setType(toType(value));break;
+//                        case 1:obj.setValue(Double.valueOf(value));break;
+//                        case 2:obj.setX(Double.valueOf(value));break;
+//                        case 3:obj.setY(Double.valueOf(value));break;
+//                        case 4:obj.setR(Double.valueOf(value));break;
+//                        case 5:if("无".equals(value)||"0".equals(value)){obj.setSwing("");}else{obj.setSwing((String) value);};break;
+//                        case 6:obj.setL(Double.valueOf(value));break;
+//                        case 7:obj.setDu(Integer.valueOf(value));break;
+//                        case 8:obj.setFen(Integer.valueOf(value));break;
+//                        case 9:obj.setMiao(Double.valueOf(value));break;
+//                        case 10:obj.setDlq(Double.valueOf(value));break;
+//                        case 11:obj.setDlh(Double.valueOf(value));break;
+//                        case 12:obj.setR2(Double.valueOf(value));break;
+//                        case 13:obj.setOrderNum(Integer.valueOf(value));break;
+//                        default:break;
+//                    }
+//
+//                }
+//                obj.setUpdateUser(userId);
+//                obj.setProjectId(projectId);
+//                obj.setValueEnd(obj.getValue()+obj.getL());
+//                obj.setPartId(partId);
+//                obj.setContractId(contractId);
+//                obj.setPartNo(part.getPrefix());
+//                //必须要设置angle
+//                obj.setAngle(obj.getDu()+Double.valueOf(obj.getFen())/60+obj.getMiao()/3600);
+//                importList.add(obj);
+//            }
+//            this.saveBatch(importList);
+//              return  "导入成功";
+//        } catch (Exception e){
+//            e.printStackTrace();
+//        }
+//        return "导入失败";
+//    }
+    public R importMileagexy(List<MileageExcel> data, Long userId, String projectId, String contractId , String partId){
+        List<Mileagexy> importList = new ArrayList<>();
+        MileagePart part = this.partService.getById(partId);
+        if(part==null){
+            return R.fail("所属片段不存在,请重新再试");
+        }
+        importList=data.stream().map(e->{
+            Mileagexy obj = new Mileagexy();
+            BeanUtils.copyProperties(e,obj);
+            obj.setType(e.getTypeInt());
+            obj.setSwing(e.getSwingNull());
+            obj.setUpdateUser(userId);
+            obj.setProjectId(projectId);
+            obj.setValueEnd(obj.getValue()+obj.getL());
+            obj.setPartId(partId);
+            obj.setContractId(contractId);
+            obj.setPartNo(part.getPrefix());
+            //必须要设置angle
+            obj.setAngle(obj.getDu()+Double.valueOf(obj.getFen())/60+obj.getMiao()/3600);
+            return obj;
+        }).collect(Collectors.toList());
+        if(Func.isNotEmpty(importList)){
             this.saveBatch(importList);
-              return  "导入成功";
-        } catch (Exception e){
-            e.printStackTrace();
+            return  R.success("导入成功");
         }
-        return "导入失败";
+        return R.fail("导入失败");
     }
 
-
     public Mileagexy getMaxMileagexy(String partId,Integer deleted,String projId,Integer orderNum){
         if(null!=orderNum&&orderNum>0){
             orderNum--;