Sfoglia il codice sorgente

增加逆变器信息导入

xusl 8 mesi fa
parent
commit
1a9a011f4d

+ 59 - 0
ipp-ap/src/views/idp/control/inverterinfo/index.vue

@@ -31,6 +31,21 @@
        
       <div class="timeQuery" 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>
@@ -101,6 +116,50 @@ export default {
     }
   },
   methods: {
+    dataUpload(item) {
+      const formData = new FormData()
+      formData.append('file', item.file)
+      this.$axios.post('inverterinfo/uploadNbqTemplate', 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("/inverterinfo/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('请输入设备编号'))

+ 3 - 2
ipp-common/ipp-common-data/src/main/java/com/jiayue/ipp/common/data/entity/InverterInfo.java

@@ -11,7 +11,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
+import java.util.Date;
+
 
 /**
  * idp_inverter_info
@@ -70,7 +71,7 @@ public class InverterInfo extends BaseDataEntity<InverterInfo> {
      * 安装时间
      */
     @ApiModelProperty(value = "安装时间")
-    private LocalDate installationTime;
+    private Date installationTime;
 
 
     /**

+ 75 - 4
ipp-idp/src/main/java/com/jiayue/ipp/idp/controller/InverterInfoController.java

@@ -1,5 +1,11 @@
 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;
@@ -12,11 +18,14 @@ import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.util.*;
 
 
 /**
@@ -157,4 +166,66 @@ public class InverterInfoController {
         List<InverterInfo> inverterInfoList = inverterInfoService.list(wrapper);
         return R.ok(inverterInfoList);
     }
+
+    @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)","是否样板(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 = "/uploadNbqTemplate")
+    public R uploadNbqTemplate(@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<InverterInfo> list = new ArrayList<>();
+            for (List<Object> objects : read) {
+                InverterInfo inverterInfo = new InverterInfo();
+                // 读取某行第一列数据
+                inverterInfo.setStationCode(objects.get(0).toString());
+                // 读取某行第二列数据
+                inverterInfo.setEquipmentNo(objects.get(1).toString());
+                inverterInfo.setName(objects.get(2).toString());
+                inverterInfo.setManufacturer(objects.get(3).toString());
+                inverterInfo.setModelNumber(objects.get(4).toString());
+                inverterInfo.setInstallationTime(DateUtil.parse(objects.get(5).toString(),"yyyy-MM-dd"));
+                inverterInfo.setSample(objects.get(6).toString());
+                inverterInfo.setGroupSeries(objects.get(7).toString());
+                inverterInfo.setTimeInterval(Integer.parseInt(objects.get(8).toString()));
+                inverterInfo.setEfficiency(new BigDecimal(objects.get(9).toString()));
+                inverterInfo.setCapacity(new BigDecimal(objects.get(10).toString()));
+                inverterInfo.setCollectorCircuit(objects.get(11).toString());
+                list.add(inverterInfo);
+            }
+            inverterInfoService.saveBatch(list);
+        } catch (Exception e) {
+            e.printStackTrace();
+//            log.error("导入风机信息文件失败",e);
+            return R.failed("导入逆变器信息文件失败");
+        }
+        return R.ok();
+    }
 }

+ 1 - 1
ipp-idp/src/main/java/com/jiayue/ipp/idp/job/ApiJob.java

@@ -25,7 +25,7 @@ public class ApiJob {
     @Autowired
     private CallPowerStationStatusDataApi callPowerStationStatusDataApi;
 
-//    @Scheduled(cron = "30 0,15,30,45 * * * ? ")
+    @Scheduled(cron = "30 0,15,30,45 * * * ? ")
     public void ultraShortTermApi(){
         callForecastPowerUltraShortTermApi.executeForecast();
     }