Ver Fonte

风机信息导入

xusl há 10 meses atrás
pai
commit
14c66f9bad

+ 9 - 7
ipp-ap/src/const/crud/windturbineinfo.js

@@ -97,13 +97,15 @@ export const tableOption = {
         message: '请选择是否上报',
         trigger: 'blur'
       }],
-      dicData: [{
-        value: 1,
-        label: '是'
-      }, {
-        value: 0,
-        label: '否'
-      }],
+      formatter: (row, value, label, column) => {
+        if (value == 1) {
+          return label = "是"
+        }
+        if (value == 0) {
+          return label = "否"
+        }
+
+      }
     }
     , {
       "type": "select",

+ 61 - 1
ipp-ap/src/views/idp/control/windturbineinfo/index.vue

@@ -29,8 +29,23 @@
         </el-option>
       </el-select>
       &nbsp;
-      <div class="timeQuery" style="display: inline-block">
+      <div  style="display: inline-block">
         <el-button size="small" :loading="loading" @click="dataQuery">查询</el-button>
+        <el-button size="small" :loading="loading" @click="exportTemplateEvent">风机模板下载</el-button>
+      </div>
+      <div  style="display: inline-block">
+        <el-upload
+          :auto-upload="true"
+          ref="uploadFjTemplate"
+          action="/windturbineinfo/uploadFjTemplate"
+          :http-request="dataUpload"
+          :on-change="beforeUpload"
+          :on-error="onError"
+          :file-list="fileList"
+          :show-file-list="false"
+        >
+          <el-button size="small" :loading="loading">风机模板导入</el-button>
+        </el-upload>
       </div>
     </div>
     <basic-container>
@@ -85,6 +100,7 @@ export default {
       tableLoading: false,
       tableOption: tableOption,
       modId: '',//备用id
+      fileList: [],
     }
   },
   computed: {
@@ -101,6 +117,50 @@ export default {
     this.getStationCode()
   },
   methods: {
+    dataUpload(item) {
+      const formData = new FormData()
+      formData.append('file', item.file)
+      this.$axios.post('windturbineinfo/uploadFjTemplate', formData).then((response) => {
+        this.$message.success("导入成功")
+      }).catch((error) => {
+        this.$message.error("导入失败" + error)
+      })
+    },
+    onError(err, file, fileList){
+      console.log(JSON.parse(err.message).msg)
+      alert('失败')
+    },
+    beforeUpload(file, fileList){
+      if (fileList.length > 1) {
+        // 移除旧文件
+        this.fileList = [file];
+      } else {
+        this.fileList = fileList;
+      }
+      let index = file.name.lastIndexOf(".");
+      let suffixName = file.name.substr(index+1);
+      if (suffixName=='xls' || suffixName=='xlsx'){
+        return true
+      }
+      else{
+        this.$message({
+          type: 'warning',
+          message: '请导入excel模板文件!'
+        })
+        this.fileList=[]
+        return false
+      }
+    },
+    exportTemplateEvent() {
+      this.$axios.get("/windturbineinfo/exportTemplateEvent/", {
+        responseType: 'blob'// 用于解决中文乱码
+      }).then((response) => {
+        this.loading = false
+      }).catch((error) => {
+        this.loading = false
+        this.$message.error('下载模板失败' + error)
+      })
+    },
     checkequipmentNo(rule, value, callback) {
       if (value == '') {
         callback(new Error('请输入设备编号'))

+ 0 - 1
ipp-common/ipp-common-data/src/main/java/com/jiayue/ipp/common/data/entity/WindTurbineStatusData.java

@@ -10,7 +10,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
 
 /**

+ 96 - 0
ipp-idp/src/main/java/com/jiayue/ipp/idp/controller/WindTurbineInfoController.java

@@ -1,10 +1,17 @@
 package com.jiayue.ipp.idp.controller;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.poi.excel.ExcelReader;
+import cn.hutool.poi.excel.ExcelUtil;
+import cn.hutool.poi.excel.ExcelWriter;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jiayue.ipp.common.data.entity.ElectricField;
 import com.jiayue.ipp.common.data.entity.WindTurbineInfo;
+import com.jiayue.ipp.common.data.entity.WindTurbineStatusData;
 import com.jiayue.ipp.idp.service.ElectricFieldService;
 import com.jiayue.ipp.idp.service.WindTurbineInfoService;
 import com.jiayue.ipp.idp.util.R;
@@ -12,10 +19,22 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.ss.format.CellFormat;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -206,4 +225,81 @@ public class WindTurbineInfoController {
         List<WindTurbineInfo> windTurbineInfoList = windTurbineInfoService.list(wrapper);
         return R.ok(windTurbineInfoList);
     }
+
+    @GetMapping(value = {"/exportTemplateEvent" })
+    public R exportTemplateEvent(HttpServletResponse response) {
+        try {
+            ExcelWriter writer = ExcelUtil.getWriter(true);
+            writer.renameSheet(0, "风机信息");
+            List<String> headFieldName = Arrays.asList("场站编号","设备编号","风机名称","经度","纬度","制造商","型号","安装时间(yyyy-MM-dd)","并网日期(yyyy-MM-dd)","是否样板(1=>是,0=>否)","是否上报(1=>是,0=>否)","入库时间间隔(1=>1分钟,5=>5分钟)","风机等级(整型数值)","设计空气密度(数值)","切入速度(数值)","额定风速(数值)","切出速度(数值)","生存风速(数值)","叶轮直径(数值)","最大转速(数值)","最小转速(数值)","额定转速(数值)","轮毂高度(数值)","使用寿命(数值)","最大功率(数值)","集电线路","分期");
+            List<List<String>> rowHeather = CollUtil.newArrayList();
+            rowHeather.add(headFieldName);
+            writer.write(rowHeather, true);
+            String fileName = "风机信息"+ ".xlsx";
+            response.setContentType("application/x-msdownload;charset=utf-8");
+            response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            ServletOutputStream out = null;
+            out = response.getOutputStream();
+            writer.flush(out, true);
+            // 关闭writer,释放内存
+            writer.close();
+            //此处记得关闭输出Servlet流
+            IoUtil.close(out);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return R.ok();
+    }
+
+    /**
+     * 上传升级文件
+     */
+    @PostMapping(value = "/uploadFjTemplate")
+    public R uploadFjTemplate(@RequestParam(value="file") MultipartFile file){
+        try (InputStream inputStream = file.getInputStream()) {
+            ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
+            List<List<Object>> read = excelReader.read(1, excelReader.getRowCount());
+            List<WindTurbineInfo> list = new ArrayList<>();
+            for (List<Object> objects : read) {
+                WindTurbineInfo windTurbineInfo = new WindTurbineInfo();
+                // 读取某行第一列数据
+                windTurbineInfo.setStationCode(objects.get(0).toString());
+                // 读取某行第二列数据
+                windTurbineInfo.setEquipmentNo(objects.get(1).toString());
+                windTurbineInfo.setName(objects.get(2).toString());
+                windTurbineInfo.setLongitude(new BigDecimal(objects.get(3).toString()));
+                windTurbineInfo.setLatitude(new BigDecimal(objects.get(4).toString()));
+                windTurbineInfo.setManufacturer(objects.get(5).toString());
+                windTurbineInfo.setModelNumber(objects.get(6).toString());
+                windTurbineInfo.setInstallationTime(DateUtil.parse(objects.get(7).toString(),"yyyy-MM-dd"));
+                windTurbineInfo.setParallelInDate(DateUtil.parse(objects.get(8).toString(),"yyyy-MM-dd"));
+                windTurbineInfo.setSample(objects.get(9).toString());
+                windTurbineInfo.setReport(objects.get(10).toString());
+                windTurbineInfo.setTimeInterval(Integer.parseInt(objects.get(11).toString()));
+                windTurbineInfo.setGrade(Integer.parseInt(objects.get(12).toString()));
+                windTurbineInfo.setAirDensity(new BigDecimal(objects.get(13).toString()));
+                windTurbineInfo.setCutInSpeed(new BigDecimal(objects.get(14).toString()));
+                windTurbineInfo.setRatedWindSpeed(new BigDecimal(objects.get(15).toString()));
+                windTurbineInfo.setCutOutSpeed(new BigDecimal(objects.get(16).toString()));
+                windTurbineInfo.setLiveWindSpeed(new BigDecimal(objects.get(17).toString()));
+                windTurbineInfo.setWindWheelDiameter(new BigDecimal(objects.get(18).toString()));
+                windTurbineInfo.setWindWheelMaxSpeed(new BigDecimal(objects.get(19).toString()));
+                windTurbineInfo.setWindWheelMinSpeed(new BigDecimal(objects.get(20).toString()));
+                windTurbineInfo.setWindWheelRatedSpeed(new BigDecimal(objects.get(21).toString()));
+                windTurbineInfo.setHubHeight(new BigDecimal(objects.get(22).toString()));
+                windTurbineInfo.setLifeLength(new BigDecimal(objects.get(23).toString()));
+                windTurbineInfo.setMaxPower(new BigDecimal(objects.get(24).toString()));
+                windTurbineInfo.setCollectorCircuit(objects.get(25).toString());
+                windTurbineInfo.setDivideIntoDifferentPeriod(objects.get(26).toString());
+                list.add(windTurbineInfo);
+            }
+            windTurbineInfoService.saveBatch(list);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("导入风机信息文件失败",e);
+            return R.failed("导入风机信息文件失败");
+        }
+        return R.ok();
+    }
 }