Browse Source

Merge branch 'master' of http://222.243.138.146:2000/hmy/hnyz_dcs

HMY 8 months ago
parent
commit
ceb78b3917

+ 1 - 1
admin/src/main/java/com/dcs/hnyz/controller/EquipmentController.java

@@ -181,7 +181,7 @@ public class EquipmentController extends BaseController
         util.importTemplateExcel(response, "设备数据");
     }
 
-    @Log(title = "设备管理", businessType = BusinessType.IMPORT)
+    @Log(title = "设备导入", businessType = BusinessType.IMPORT)
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
     {

+ 32 - 19
admin/src/main/java/com/dcs/hnyz/controller/EquipmentParamController.java

@@ -1,30 +1,24 @@
 package com.dcs.hnyz.controller;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
-import com.dcs.hnyz.domain.vo.EquipmentParamFormVO;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.dcs.common.annotation.Log;
 import com.dcs.common.core.controller.BaseController;
 import com.dcs.common.core.domain.AjaxResult;
+import com.dcs.common.core.page.TableDataInfo;
 import com.dcs.common.enums.BusinessType;
+import com.dcs.common.utils.poi.ExcelUtil;
 import com.dcs.hnyz.domain.EquipmentParam;
+import com.dcs.hnyz.domain.vo.EquipmentParamFormVO;
 import com.dcs.hnyz.service.IEquipmentParamService;
-import com.dcs.common.utils.poi.ExcelUtil;
-import com.dcs.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 设备参数管理Controller
@@ -151,6 +145,25 @@ public class EquipmentParamController extends BaseController
         return success(equipmentParamService.getAllSetParam(code));
     }
 
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<EquipmentParam> util = new ExcelUtil<EquipmentParam>(EquipmentParam.class);
+        util.importTemplateExcel(response, "设备数据");
+    }
+
+    @Log(title = "设备导入", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
+    {
+        ExcelUtil<EquipmentParam> util = new ExcelUtil<EquipmentParam>(EquipmentParam.class);
+        List<EquipmentParam> equipmentList = util.importExcel(file.getInputStream());
+        String operName = getUsername();
+        String message = equipmentParamService.importEquipment(equipmentList, updateSupport, operName);
+        return success(message);
+    }
+
     /**
      * 根据设备标识List获取对应所有寄存器的参数配置项数据(用于参数配置页数据初始化)
      */

+ 1 - 1
admin/src/main/java/com/dcs/hnyz/domain/EquipmentParam.java

@@ -101,7 +101,7 @@ public class EquipmentParam extends BaseEntity {
     private String paramType;
 
     /** 状态 0-启用,1-禁用*/
-    @Excel(name = "状态")
+//    @Excel(name = "状态")
     @ApiModelProperty(value = "状态 0-启用,1-禁用")
     private String status;
 

+ 61 - 0
admin/src/main/java/com/dcs/hnyz/service/impl/EquipmentParamServiceImpl.java

@@ -1,9 +1,12 @@
 package com.dcs.hnyz.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dcs.common.enums.GeneralStatus;
 import com.dcs.common.exception.CustomException;
+import com.dcs.common.exception.ServiceException;
+import com.dcs.common.utils.StringUtils;
 import com.dcs.common.utils.StringUtils;
 import com.dcs.common.utils.bean.BeanUtils;
 import com.dcs.equipment.task.ModbusTcpTask;
@@ -366,6 +369,64 @@ public class EquipmentParamServiceImpl implements IEquipmentParamService {
         return epList;
     }
 
+    @Override
+    public String importEquipment(List<EquipmentParam> equipmentList, boolean isUpdateSupport, String operName) {
+
+        if (StringUtils.isNull(equipmentList) || equipmentList.size() == 0)
+        {
+            throw new ServiceException("导入设备数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (EquipmentParam param : equipmentList)
+        {
+            try
+            {
+                // 验证是否存在这个设备
+                EquipmentParam e = equipmentParamMapper.selectOne(new QueryWrapper<EquipmentParam>().eq("code", param.getCode()));
+                if (StringUtils.isNull(e))
+                {
+                    // TODO 获取设备类型字符串查询设备类型库 填充相应的设备类型 id
+                    // TODO 模糊查询设备 识别码 填充相应的设备 id 没有命中需返回消息提示无设备
+                    param.setCreateBy(operName);
+                    equipmentParamMapper.insert(param);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、设备参数 " + param.getCode() + " 导入成功");
+                }
+                else if (isUpdateSupport)
+                {
+                    param.setCreateBy(operName);
+                    equipmentParamMapper.insert(param);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、设备参数 " + param.getCode() + " 更新成功");
+                }
+                else
+                {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、设备参数 " + param.getCode() + " 已存在");
+                }
+            }
+            catch (Exception e)
+            {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、设备 " + param.getCode() + " 导入失败:";
+                failureMsg.append(msg + e.getMessage());
+//                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0)
+        {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        }
+        else
+        {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
     @Override
     public int updateRegisterNameByEquipment(Equipment equipment) {
         if (equipment == null || equipment.getEquipmentId() == null ||

+ 1 - 1
ui/package.json

@@ -7,7 +7,7 @@
   "type": "module",
   "scripts": {
     "dev": "vite --host",
-    "build:prod": "vite build",
+    "build": "vite build",
     "build:stage": "vite build --mode staging",
     "preview": "vite preview"
   },

+ 50 - 0
ui/src/views/dcsForm2/equipmentParam/index.vue

@@ -57,6 +57,9 @@
         <el-button type="warning" plain icon="Download" @click="handleExport"
           v-hasPermi="['hnyz:param:export']">导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="info" plain icon="Upload" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button>
+      </el-col>
       <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -381,5 +384,52 @@ function handleExport() {
   }, `param_${new Date().getTime()}.xlsx`)
 }
 
+/*** 设备导入参数 */
+const upload = reactive({
+  // 是否显示弹出层(设备导入)
+  open: false,
+  // 弹出层标题(设备导入)
+  title: "",
+  // 是否禁用上传
+  isUploading: false,
+  // 是否更新已经存在的用户数据
+  updateSupport: 0,
+  // 设置上传的请求头部
+  headers: { Authorization: "Bearer " + getToken() },
+  // 上传的地址
+  url: import.meta.env.VITE_APP_BASE_API + "/hnyz/param/importData"
+});
+
+/** 导入按钮操作 */
+function handleImport() {
+  upload.title = "设备导入";
+  upload.open = true;
+};
+
+/** 下载模板操作 */
+function importTemplate() {
+  proxy.download("/hnyz/param/importTemplate", {
+  }, `equipment_param_template_${new Date().getTime()}.xlsx`);
+};
+
+/**文件上传中处理 */
+const handleFileUploadProgress = (event, file, fileList) => {
+  upload.isUploading = true;
+};
+
+/** 文件上传成功处理 */
+const handleFileSuccess = (response, file, fileList) => {
+  upload.open = false;
+  upload.isUploading = false;
+  proxy.$refs["uploadRef"].handleRemove(file);
+  proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
+  getList();
+};
+
+/** 提交上传文件 */
+function submitFileForm() {
+  proxy.$refs["uploadRef"].submit();
+};
+
 getList();
 </script>