瀏覽代碼

站点信息导入

skyline 2 年之前
父節點
當前提交
4085edfa3b

+ 6 - 5
admin-web/src/views/admin/station/endpoint/upload.vue

@@ -164,12 +164,13 @@ const initState = () => ({
   importLoading: false,
   tableHeight: 400,
   fieldList:[
+    {label:'序号ID',value:'id'},
+    {label:'站点ID',value:'stationId'},
     {label:'站点名称',value:'stationName'},
-    {label:'充电桩编号',value:'shortId'},
+    {label:'设备短编号',value:'shortId'},
+    {label:'充电桩SN',value:'equipmentId'},
+    {label:'充电口SN',value:'connectorId'},
     {label:'车位编号',value:'parkingNo'},
-    {label:'充电桩序列号',value:'equipmentId'},
-    {label:'充电桩接口编号',value:'connectorId'},
-    {label:'状态',value:'status'},
   ]
 })
 
@@ -270,7 +271,7 @@ let  fields=state.excelForm.importFields.filter(k => !!k);
     dataList
   }
 
-  $body(`connector/importData`, params).then(() => {
+  $body(`station/importData`, params).then(() => {
     Msg.message(`导入成功`)
     state.importLoading = false;
     emit('on-import-finish')

+ 7 - 0
admin/src/main/java/com/kym/admin/controller/StationController.java

@@ -1,6 +1,7 @@
 package com.kym.admin.controller;
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.kym.common.R;
 import com.kym.common.annotation.SysLog;
 import com.kym.entity.admin.Station;
@@ -82,4 +83,10 @@ public class StationController {
         return R.success();
     }
 
+    @PostMapping("/importData")
+    R<?> importData(@RequestBody JSONObject data){
+        stationService.importData(data);
+        return R.success(data);
+    }
+
 }

+ 14 - 19
entity/src/main/java/com/kym/entity/admin/EquipmentRelation.java

@@ -1,9 +1,9 @@
 package com.kym.entity.admin;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.kym.entity.BaseEntity;
-import lombok.Getter;
+import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 
@@ -15,7 +15,8 @@ import java.io.Serializable;
  * @author skyline
  * @since 2023-08-07
  */
-@Getter
+@Data
+@Accessors(chain = true)
 @TableName("t_equipment_relation")
 public class EquipmentRelation extends BaseEntity implements Serializable {
 
@@ -26,6 +27,11 @@ public class EquipmentRelation extends BaseEntity implements Serializable {
      */
     private String stationId;
 
+    /**
+     * 站点名称
+     */
+    private String stationName;
+
     /**
      * 二维码sn号
      */
@@ -38,28 +44,17 @@ public class EquipmentRelation extends BaseEntity implements Serializable {
     /**
      * 充电枪口编号
      */
-    @TableField(exist = false)
     private String connectorId;
 
+    /**
+     * 停车位编号
+     */
+    private String parkingNo;
+
     /**
      * 状态 0:启用,1:未启用
      */
     private Integer status;
 
-    public void setStationId(String stationId) {
-        this.stationId = stationId;
-    }
-
-    public void setShortId(String shortId) {
-        this.shortId = shortId;
-    }
-
-    public void setEquipmentId(String equipmentId) {
-        this.equipmentId = equipmentId;
-        this.connectorId = equipmentId.concat("1");
-    }
 
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
 }

+ 2 - 0
entity/src/main/java/com/kym/entity/admin/Station.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.kym.entity.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 
@@ -23,6 +24,7 @@ import java.io.Serializable;
 @Getter
 @Setter
 @TableName("t_station")
+@Accessors(chain = true)
 public class Station extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;

+ 4 - 1
mapper/src/main/resources/mappers/admin/EquipmentRelationMapper.xml

@@ -6,8 +6,11 @@
     <resultMap id="BaseResultMap" type="com.kym.entity.admin.EquipmentRelation">
         <id column="id" property="id" />
         <result column="station_id" property="stationId" />
+        <result column="station_name" property="stationName" />
         <result column="short_id" property="shortId" />
         <result column="equipment_id" property="equipmentId" />
+        <result column="connector_id" property="connectorId" />
+        <result column="parking_no" property="parkingNo" />
         <result column="status" property="status" />
         <result column="create_time" property="createTime" />
         <result column="update_time" property="updateTime" />
@@ -15,7 +18,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, station_id, short_id, equipment_id, status, create_time, update_time
+        id, station_id, station_name,short_id, equipment_id,connector_id, parking_no,status, create_time, update_time
     </sql>
 
 </mapper>

+ 2 - 0
service/src/main/java/com/kym/service/admin/ConnectorInfoService.java

@@ -1,5 +1,6 @@
 package com.kym.service.admin;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.github.yulichang.base.MPJBaseService;
 import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.queryParams.EquipmentQueryParam;
@@ -20,4 +21,5 @@ public interface ConnectorInfoService extends MPJBaseService<ConnectorInfo> {
     PageBean<ConnectorInfoVo> listConnectors(EquipmentQueryParam params);
 
     Map<Integer, Long> statConnectorStatus(String stationId);
+
 }

+ 3 - 0
service/src/main/java/com/kym/service/admin/StationService.java

@@ -1,5 +1,6 @@
 package com.kym.service.admin;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.github.yulichang.base.MPJBaseService;
 import com.kym.entity.admin.Station;
@@ -33,4 +34,6 @@ public interface StationService extends MPJBaseService<Station> {
     void modifyStation(Station station);
 
     void addStation(List<ConnectorVo> connectorVos);
+
+    void importData(JSONObject data);
 }

+ 9 - 1
service/src/main/java/com/kym/service/admin/impl/ConnectorInfoServiceImpl.java

@@ -1,6 +1,8 @@
 package com.kym.service.admin.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.github.pagehelper.PageHelper;
@@ -8,12 +10,14 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.EquipmentInfo;
+import com.kym.entity.admin.EquipmentRelation;
 import com.kym.entity.admin.queryParams.EquipmentQueryParam;
 import com.kym.entity.admin.vo.ConnectorInfoVo;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.mapper.admin.ConnectorInfoMapper;
 import com.kym.service.admin.ConnectorInfoService;
+import com.kym.service.admin.EquipmentRelationService;
 import com.kym.service.cache.KymCache;
 import com.kym.service.miniapp.ChargeOrderService;
 import org.springframework.beans.BeanUtils;
@@ -40,8 +44,11 @@ public class ConnectorInfoServiceImpl extends MPJBaseServiceImpl<ConnectorInfoMa
 
     private final ChargeOrderService chargeOrderService;
 
-    public ConnectorInfoServiceImpl(ChargeOrderService chargeOrderService) {
+    private final EquipmentRelationService equipmentRelationService;
+
+    public ConnectorInfoServiceImpl(ChargeOrderService chargeOrderService, EquipmentRelationService equipmentRelationService) {
         this.chargeOrderService = chargeOrderService;
+        this.equipmentRelationService = equipmentRelationService;
     }
 
     @Override
@@ -104,4 +111,5 @@ public class ConnectorInfoServiceImpl extends MPJBaseServiceImpl<ConnectorInfoMa
         res.put(EquipmentInfo.SERVICE_STATUS_预约中, orderInfos);
         return res;
     }
+
 }

+ 43 - 0
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -1,11 +1,13 @@
 package com.kym.service.admin.impl;
 
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.annotation.DynamicCache;
 import com.kym.common.enums.EnPlusApi;
+import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.AESUtil;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.ConnectorInfo;
@@ -25,6 +27,7 @@ import com.kym.service.admin.StationService;
 import com.kym.service.cache.KymCache;
 import com.kym.service.enplus.EnPlusService;
 import jakarta.annotation.PostConstruct;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -44,6 +48,7 @@ import java.util.stream.Collectors;
  */
 @Service
 @DS("db-admin")
+@Slf4j
 public class StationServiceImpl extends MPJBaseServiceImpl<StationMapper, Station> implements StationService {
 
     private final EnPlusService enPlusService;
@@ -235,4 +240,42 @@ public class StationServiceImpl extends MPJBaseServiceImpl<StationMapper, Statio
         // TODO redis发布订阅?
     }
 
+    @Override
+    @Transactional
+    public void importData(JSONObject data) {
+        log.debug("导入数据:{}", data.toString());
+        var fieldIndexes = data.getJSONArray("fieldIndexes");
+        if (fieldIndexes.size() != 7) {
+            throw new BusinessException("导入数据格式错误,请正确匹配对应数据列");
+        }
+
+        String dataList = data.getString("dataList");
+        var list = JSON.parseArray(dataList, EquipmentRelation.class);
+
+        // t_station
+        var stations = list.stream().filter(CommUtil.distinctByKey(EquipmentRelation::getStationId))
+                .map(item -> Map.of("stationId", item.getStationId(), "stationName", item.getStationName())).toList();
+        var stationList = stations.stream().map(map -> new Station().setStationId(map.get("stationId")).setStationName(map.get("stationName"))).toList();
+        saveBatch(stationList);
+
+        // t_equipment_info
+        var equipmentInfoList = list.stream().map(item -> {
+            var equipmentInfo = new EquipmentInfo();
+            BeanUtils.copyProperties(item, equipmentInfo, "id");
+            return equipmentInfo;
+        }).toList();
+        equipmentInfoService.saveBatch(equipmentInfoList);
+
+        // t_connector_info
+        var connectorInfoList = list.stream().map(item -> {
+            var connectorInfo = new ConnectorInfo();
+            BeanUtils.copyProperties(item, connectorInfo, "id");
+            return connectorInfo;
+        }).toList();
+        connectorInfoService.saveBatch(connectorInfoList);
+
+        // t_equipment_relation
+        equipmentRelationService.saveBatch(list);
+    }
+
 }