Bladeren bron

[26110601] 设备管理页表格扩为10列(序号/设备名称/通道/所属场站/设备类型/品牌/型号/序列号/状态/投运日期)与导出对齐: 新增弹窗改9必填字段(名称/通道/场站/类型/品牌/型号/序列号/状态/投运日期), 保存接口insert/update补tp/brand/model/serial_number/status/install_date列, installDate按yyyy-MM-dd序列化, 导出VO重写为与表格一致, 去重mapper中config_device_id重复if块

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
taosj 8 uur geleden
bovenliggende
commit
f29d7546ec

+ 29 - 1
forecast-backend-server/src/main/java/com/ufo/project/config/controller/ConfigDeviceController.java

@@ -69,7 +69,7 @@ public class ConfigDeviceController extends BaseController
         int index = 1;
         for (ConfigDevice device : list)
         {
-            exportList.add(new ConfigDeviceExportVo(index++, device.getName(), device.getTp(), device.getStationName(), "-", device.getModel(), statusLabel(device.getStatus())));
+            exportList.add(new ConfigDeviceExportVo(index++, device.getName(), device.getChannelName(), device.getStationName(), tpLabel(device.getTp()), device.getBrand(), device.getModel(), device.getSerialNumber(), statusLabel(device.getStatus()), formatDate(device.getInstallDate())));
         }
         ExcelUtil<ConfigDeviceExportVo> util = new ExcelUtil<ConfigDeviceExportVo>(ConfigDeviceExportVo.class);
         util.exportExcel(response, exportList, "设备配置");
@@ -165,6 +165,34 @@ public class ConfigDeviceController extends BaseController
         return "GOOD".equals(status) ? "在线" : "离线";
     }
 
+    /**
+     * 设备类型字典转换: WEATHER=气象设备, AGVC=agvc设备, 其他原样
+     */
+    private String tpLabel(String tp)
+    {
+        if ("WEATHER".equals(tp))
+        {
+            return "气象设备";
+        }
+        if ("AGVC".equals(tp))
+        {
+            return "agvc设备";
+        }
+        return tp;
+    }
+
+    /**
+     * 投运日期格式化为yyyy-MM-dd
+     */
+    private String formatDate(java.util.Date date)
+    {
+        if (date == null)
+        {
+            return null;
+        }
+        return new java.text.SimpleDateFormat("yyyy-MM-dd").format(date);
+    }
+
     /**
      * config_device.config_station_id 是varchar列(存数字字符串), 转为Long用于关联config_station; 非数字值视为无场站
      */

+ 9 - 0
forecast-backend-server/src/main/java/com/ufo/project/config/domain/ConfigDevice.java

@@ -1,5 +1,7 @@
 package com.ufo.project.config.domain;
 
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 /**
@@ -19,10 +21,17 @@ public class ConfigDevice
     private String name;
     /** 设备类型 */
     private String tp;
+    /** 品牌 */
+    private String brand;
     /** 型号 */
     private String model;
+    /** 序列号 */
+    private String serialNumber;
     /** 状态 */
     private String status;
+    /** 投运日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date installDate;
     /**
      * 配置通道ID
      */

+ 62 - 17
forecast-backend-server/src/main/java/com/ufo/project/config/domain/vo/ConfigDeviceExportVo.java

@@ -19,39 +19,54 @@ public class ConfigDeviceExportVo
     @Excel(name = "设备名称")
     private String name;
 
-    /** 设备类型 */
-    @Excel(name = "设备类型")
-    private String tp;
+    /** 通道 */
+    @Excel(name = "通道")
+    private String channelName;
 
     /** 所属场站 */
     @Excel(name = "所属场站")
     private String stationName;
 
-    /** 额定容量(无对应数据源, 固定-) */
-    @Excel(name = "额定容量")
-    private String ratedCapacity;
+    /** 设备类型 */
+    @Excel(name = "设备类型")
+    private String tp;
+
+    /** 品牌 */
+    @Excel(name = "品牌")
+    private String brand;
 
     /** 型号 */
     @Excel(name = "型号")
     private String model;
 
+    /** 序列号 */
+    @Excel(name = "序列号")
+    private String serialNumber;
+
     /** 状态 */
     @Excel(name = "状态")
     private String status;
 
+    /** 投运日期 */
+    @Excel(name = "投运日期")
+    private String installDate;
+
     public ConfigDeviceExportVo()
     {
     }
 
-    public ConfigDeviceExportVo(Long serial, String name, String tp, String stationName, String ratedCapacity, String model, String status)
+    public ConfigDeviceExportVo(Long serial, String name, String channelName, String stationName, String tp, String brand, String model, String serialNumber, String status, String installDate)
     {
         this.serial = serial;
         this.name = name;
-        this.tp = tp;
+        this.channelName = channelName;
         this.stationName = stationName;
-        this.ratedCapacity = ratedCapacity;
+        this.tp = tp;
+        this.brand = brand;
         this.model = model;
+        this.serialNumber = serialNumber;
         this.status = status;
+        this.installDate = installDate;
     }
 
     public Long getSerial()
@@ -74,14 +89,14 @@ public class ConfigDeviceExportVo
         this.name = name;
     }
 
-    public String getTp()
+    public String getChannelName()
     {
-        return tp;
+        return channelName;
     }
 
-    public void setTp(String tp)
+    public void setChannelName(String channelName)
     {
-        this.tp = tp;
+        this.channelName = channelName;
     }
 
     public String getStationName()
@@ -94,14 +109,24 @@ public class ConfigDeviceExportVo
         this.stationName = stationName;
     }
 
-    public String getRatedCapacity()
+    public String getTp()
     {
-        return ratedCapacity;
+        return tp;
     }
 
-    public void setRatedCapacity(String ratedCapacity)
+    public void setTp(String tp)
     {
-        this.ratedCapacity = ratedCapacity;
+        this.tp = tp;
+    }
+
+    public String getBrand()
+    {
+        return brand;
+    }
+
+    public void setBrand(String brand)
+    {
+        this.brand = brand;
     }
 
     public String getModel()
@@ -114,6 +139,16 @@ public class ConfigDeviceExportVo
         this.model = model;
     }
 
+    public String getSerialNumber()
+    {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber)
+    {
+        this.serialNumber = serialNumber;
+    }
+
     public String getStatus()
     {
         return status;
@@ -123,4 +158,14 @@ public class ConfigDeviceExportVo
     {
         this.status = status;
     }
+
+    public String getInstallDate()
+    {
+        return installDate;
+    }
+
+    public void setInstallDate(String installDate)
+    {
+        this.installDate = installDate;
+    }
 }

+ 22 - 4
forecast-backend-server/src/main/resources/mybatis/config/ConfigDeviceMapper.xml

@@ -8,8 +8,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="id"    column="id"    />
         <result property="name"    column="name"    />
         <result property="tp"    column="tp"    />
+        <result property="brand"    column="brand"    />
         <result property="model"    column="model"    />
+        <result property="serialNumber"    column="serial_number"    />
         <result property="status"    column="status"    />
+        <result property="installDate"    column="install_date"    />
         <result property="configChannelId"    column="config_channel_id"    />
         <result property="configStationId"    column="config_station_id"    />
         <result property="configDeviceId"    column="config_device_id"    />
@@ -17,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectConfigDeviceVo">
-        select id, name, tp, model, status, config_channel_id, config_station_id, config_device_id, remark from config_device
+        select id, name, tp, brand, model, serial_number, status, install_date, config_channel_id, config_station_id, config_device_id, remark from config_device
     </sql>
 
     <select id="selectConfigDeviceList" parameterType="ConfigDevice" resultMap="ConfigDeviceResult">
@@ -57,17 +60,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         insert into config_device
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="name != null and name != ''">name,</if>
+            <if test="tp != null and tp != ''">tp,</if>
+            <if test="brand != null and brand != ''">brand,</if>
+            <if test="model != null and model != ''">model,</if>
+            <if test="serialNumber != null and serialNumber != ''">serial_number,</if>
+            <if test="status != null and status != ''">status,</if>
+            <if test="installDate != null">install_date,</if>
             <if test="configChannelId != null">config_channel_id,</if>
             <if test="configStationId != null">config_station_id,</if>
-            <if test="configDeviceId != null and configDeviceId != ''">config_device_id,</if>
             <if test="configDeviceId != null">config_device_id,</if>
             <if test="remark != null and remark != ''">remark,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="name != null and name != ''">#{name},</if>
+            <if test="tp != null and tp != ''">#{tp},</if>
+            <if test="brand != null and brand != ''">#{brand},</if>
+            <if test="model != null and model != ''">#{model},</if>
+            <if test="serialNumber != null and serialNumber != ''">#{serialNumber},</if>
+            <if test="status != null and status != ''">#{status},</if>
+            <if test="installDate != null">#{installDate},</if>
             <if test="configChannelId != null">#{configChannelId},</if>
             <if test="configStationId != null">#{configStationId},</if>
-            <if test="configDeviceId != null and configDeviceId != ''">#{configDeviceId},</if>
             <if test="configDeviceId != null">#{configDeviceId},</if>
             <if test="remark != null and remark != ''">#{remark},</if>
         </trim>
@@ -77,9 +90,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update config_device
         <trim prefix="SET" suffixOverrides=",">
             <if test="name != null and name != ''">name = #{name},</if>
+            <if test="tp != null and tp != ''">tp = #{tp},</if>
+            <if test="brand != null and brand != ''">brand = #{brand},</if>
+            <if test="model != null and model != ''">model = #{model},</if>
+            <if test="serialNumber != null and serialNumber != ''">serial_number = #{serialNumber},</if>
+            <if test="status != null and status != ''">status = #{status},</if>
+            <if test="installDate != null">install_date = #{installDate},</if>
             <if test="configChannelId != null">config_channel_id = #{configChannelId},</if>
             <if test="configStationId != null">config_station_id = #{configStationId},</if>
-            <if test="configDeviceId != null and configDeviceId != ''">config_device_id = #{configDeviceId},</if>
             <if test="configDeviceId != null">config_device_id = #{configDeviceId},</if>
             <if test="remark != null and remark != ''">remark = #{remark},</if>
             update_time = CURRENT_TIMESTAMP,

+ 49 - 13
forecast-backend-vue/src/views/ufo/electricity/device/TurbineInfo.vue

@@ -40,14 +40,29 @@
         <a-form-item label="设备名称" name="name">
           <a-input v-model:value="form.name" allow-clear placeholder="请输入设备名称" />
         </a-form-item>
+        <a-form-item label="通道" name="configChannelId">
+          <a-select v-model:value="form.configChannelId" :options="channelOptions" placeholder="请选择通道" />
+        </a-form-item>
         <a-form-item label="所属场站" name="configStationId">
-          <a-select v-model:value="form.configStationId" allow-clear :options="stationOptions" placeholder="请选择所属场站" />
+          <a-select v-model:value="form.configStationId" :options="stationOptions" placeholder="请选择所属场站" />
         </a-form-item>
-        <a-form-item label="通道" name="configChannelId">
-          <a-select v-model:value="form.configChannelId" allow-clear :options="channelOptions" placeholder="请选择通道" />
+        <a-form-item label="设备类型" name="tp">
+          <a-select v-model:value="form.tp" :options="tpOptions" placeholder="请选择设备类型" />
+        </a-form-item>
+        <a-form-item label="品牌" name="brand">
+          <a-input v-model:value="form.brand" allow-clear placeholder="请输入品牌" />
+        </a-form-item>
+        <a-form-item label="型号" name="model">
+          <a-input v-model:value="form.model" allow-clear placeholder="请输入型号" />
+        </a-form-item>
+        <a-form-item label="序列号" name="serialNumber">
+          <a-input v-model:value="form.serialNumber" allow-clear placeholder="请输入序列号" />
+        </a-form-item>
+        <a-form-item label="状态" name="status">
+          <a-select v-model:value="form.status" :options="statusOptions" placeholder="请选择状态" />
         </a-form-item>
-        <a-form-item label="备注" name="remark">
-          <a-textarea v-model:value="form.remark" :rows="3" placeholder="请输入备注" />
+        <a-form-item label="投运日期" name="installDate">
+          <a-date-picker v-model:value="form.installDate" value-format="YYYY-MM-DD" style="width: 100%" placeholder="请选择投运日期" />
         </a-form-item>
       </a-form>
     </a-modal>
@@ -97,8 +112,26 @@ const rowSelection = computed(() => ({
   }
 }));
 
+const tpOptions = [
+  {label: '气象设备', value: 'WEATHER'},
+  {label: 'agvc设备', value: 'AGVC'}
+];
+
+const statusOptions = [
+  {label: '在线', value: 'GOOD'},
+  {label: '离线', value: 'OFF'}
+];
+
 const rules = {
-  name: [{required: true, message: '请输入设备名称', trigger: 'blur'}]
+  name: [{required: true, message: '请输入设备名称', trigger: 'blur'}],
+  configChannelId: [{required: true, message: '请选择通道', trigger: 'change'}],
+  configStationId: [{required: true, message: '请选择所属场站', trigger: 'change'}],
+  tp: [{required: true, message: '请选择设备类型', trigger: 'change'}],
+  brand: [{required: true, message: '请输入品牌', trigger: 'blur'}],
+  model: [{required: true, message: '请输入型号', trigger: 'blur'}],
+  serialNumber: [{required: true, message: '请输入序列号', trigger: 'blur'}],
+  status: [{required: true, message: '请选择状态', trigger: 'change'}],
+  installDate: [{required: true, message: '请选择投运日期', trigger: 'change'}]
 };
 
 const columns = [
@@ -107,17 +140,20 @@ const columns = [
     customRender: ({index}) => (pagination.current - 1) * pagination.pageSize + index + 1
   },
   {title: '设备名称', dataIndex: 'name'},
-  {title: '设备类型', dataIndex: 'tp', width: 110},
-  {title: '所属场站', dataIndex: 'stationName', width: 180},
+  {title: '通道', dataIndex: 'channelName', width: 140},
+  {title: '所属场站', dataIndex: 'stationName', width: 160},
   {
-    title: '额定容量', width: 100,
-    customRender: () => '-'
+    title: '设备类型', dataIndex: 'tp', width: 100,
+    customRender: ({text}) => (text === 'WEATHER' ? '气象设备' : text === 'AGVC' ? 'agvc设备' : text)
   },
-  {title: '型号', dataIndex: 'model', width: 140},
+  {title: '品牌', dataIndex: 'brand', width: 110},
+  {title: '型号', dataIndex: 'model', width: 120},
+  {title: '序列号', dataIndex: 'serialNumber', width: 120},
   {
-    title: '状态', dataIndex: 'status', width: 90,
+    title: '状态', dataIndex: 'status', width: 80,
     customRender: ({text}) => (text === 'GOOD' ? '在线' : '离线')
-  }
+  },
+  {title: '投运日期', dataIndex: 'installDate', width: 110}
 ];
 
 const resetObject = (target, source = {}) => {