Browse Source

批量导入回路

zhj 2 năm trước cách đây
mục cha
commit
dee2dfc6c3

+ 1 - 0
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -189,6 +189,7 @@ public enum InterfaceResultEnum {
     LACK_SMALL_CASE_ERROR("0378","请选择案件小类","Please select the case subcategory","Пожалуйста, выберите мелкие классы"),
     LACK_STREET_ERROR("0379","请选择街道","Please select a street","Выберите улицу."),
     LACK_LOCATION_INFO_ERROR("0380","请填写位置信息","Please fill in the location information","Пожалуйста, заполните анкету"),
+    CONTROL_TYPE_ERROR("0381","控制器类型错误","Controller type error","Ошибка типа контроллера"),
     ;
     private String code;
     private String msgCn;

+ 0 - 1
src/main/java/com/welampiot/controller/GroupController.java

@@ -14,7 +14,6 @@ import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.GroupVO;
 import com.welampiot.vo.LampListResponseVO;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;

+ 132 - 7
src/main/java/com/welampiot/controller/LoopController.java

@@ -2,25 +2,26 @@ package com.welampiot.controller;
 
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.GlobalLocationDTO;
 import com.welampiot.dto.LampInfoDTO;
 import com.welampiot.dto.LoopDTO;
+import com.welampiot.dto.SectionDTO;
+import com.welampiot.service.GlobalLocationService;
 import com.welampiot.service.LampService;
 import com.welampiot.service.LoopService;
+import com.welampiot.service.SectionService;
 import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.LampVO;
 import com.welampiot.vo.LoopDetailVO;
 import com.welampiot.vo.LoopVO;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * ClassName: LoopController
@@ -45,6 +46,12 @@ public class LoopController {
     @Autowired
     private LampService lampService;
 
+    @Autowired
+    private SectionService sectionService;
+
+    @Autowired
+    private GlobalLocationService globalLocationService;
+
     /**
      * 获取回路列表
      * @param request 路段筛选,分页
@@ -367,4 +374,122 @@ public class LoopController {
         lampVO1.setList(lampInfoList);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,lampVO1);
     }
+
+    /**
+     * 批量导入,添加回路
+     * @param loopVO 回路
+     * @return 添加回路
+     */
+    @PostMapping("/batchInput")
+    private BaseResult<?> batchInput(LoopVO loopVO) {
+        int version = loopVO.getVersion() == null ? 0 : loopVO.getVersion();
+        Integer sectionId = loopVO.getSectionId();
+        Integer areaId = loopVO.getAreaId();
+        Integer type = loopVO.getType();
+        if (sectionId == null || sectionId == 0 || areaId == null || areaId == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        MultipartFile file = loopVO.getFile();
+        if (type == 1) { // 验证
+            if (file.isEmpty()) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+            List<Map> maps = ExcelUtil.inExcel(file);
+            List<Object> msg = new ArrayList<>();
+            List<LoopDTO> loopData = new ArrayList<>();
+            int index = 1;
+            HashMap<String, String> temp = new HashMap<>();
+            HashMap<String, String> temp1 = new HashMap<>();
+            if (maps.size() > 0) {
+                for (Map m : maps) {
+                    LoopDTO loopDTO = new LoopDTO();
+                    String name = m.get(0).toString();
+                    String number = m.get(1).toString();
+                    String controlTypeStr = m.get(4).toString();
+                    Set<String> controlTypeSet = new HashSet<>(Arrays.asList("GPRS","NB","LoraWan","PLC","zigbee"));
+                    if (!controlTypeSet.contains(controlTypeStr)) return toolUtils.response(InterfaceResultEnum.CONTROL_TYPE_ERROR,version);
+                    Integer controlType = LoopDTO.getControlTypeByStr(controlTypeStr);
+                    loopDTO.setNumber(number);
+                    loopDTO.setControlType(controlType);
+                    loopDTO.setControlTypeStr(controlTypeStr);
+                    loopDTO.setName(name);
+                    SectionDTO oneById = sectionService.getOneById(sectionId);
+                    loopDTO.setSection(oneById.getName());
+                    GlobalLocationDTO oneById1 = globalLocationService.getOneById(areaId);
+                    loopDTO.setArea(oneById1.getChineseName());
+                    loopData.add(loopDTO);
+
+                    LoopDTO loopDTO1 = new LoopDTO();
+                    loopDTO1.setName(loopDTO.getName());
+                    loopDTO1.setSectionId(sectionId);
+                    if (loopService.checkLoopData(loopDTO1) > 0) {
+                        if (version == 0) {
+                            msg.add("表格第" + index + "行回路名称已经存在");
+                        }else if (version == 1) {
+                            msg.add("Table " + index + " row loop name already exists");
+                        }else {
+                            msg.add("название первой  " + index + " таблицы уже существует");
+                        }
+                    }
+
+                    loopDTO1 = new LoopDTO();
+                    loopDTO1.setNumber(loopDTO.getNumber());
+                    loopDTO1.setSectionId(sectionId);
+                    if (loopService.checkLoopData(loopDTO1) > 0) {
+                        if (version == 0) {
+                            msg.add("表格第" + index + "行回路编号已经存在");
+                        }else if (version == 1) {
+                            msg.add("Table " + index + " row loop number already exists");
+                        }else {
+                            msg.add("Номер первой строки " + index + " таблицы уже существует");
+                        }
+                    }
+
+                    if (temp.containsKey(loopDTO1.getNumber())) {
+                        if (version == 0){
+                            msg.add("表格第" + index + "行回路编号已经存在");
+                        }else if (version == 1) {
+                            msg.add("Table " + index + " row loop number already exists");
+                        }else {
+                            msg.add("Номер первой строки " + index+ " таблицы уже существует");
+                        }
+                    }
+
+                    if (temp1.containsKey(loopDTO1.getName())) {
+                        if (version == 0){
+                            msg.add("表格第" + index + "行回路名称已经存在");
+                        }else if (version == 1) {
+                            msg.add("Table " + index + " row loop name already exists");
+                        }else {
+                            msg.add("название первой  " + index+ " таблицы уже существует");
+                        }
+                    }
+                    temp.put(loopDTO.getName(),loopDTO.getName());
+                    temp1.put(loopDTO.getNumber(),loopDTO.getNumber());
+                    index ++;
+                }
+            }
+            LoopVO loopVO1 = new LoopVO();
+            loopVO1.setMsg(msg);
+            loopVO1.setLoopData(loopData);
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,loopVO1);
+        } else { // 创建
+            List<LoopDTO> loopData = loopVO.getLoopData();
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            for (LoopDTO m : loopData) {
+                String name = m.getName();
+                String number = m.getNumber();
+                Integer controlType = m.getControlType();
+                LoopDTO loopDTO = new LoopDTO();
+                loopDTO.setControlType(controlType);
+                loopDTO.setNumber(number);
+                loopDTO.setName(name);
+                loopDTO.setAreaId(areaId);
+                loopDTO.setSectionId(sectionId);
+                long timeMillis = System.currentTimeMillis();
+                String createTime = format.format(timeMillis);
+                loopDTO.setCreateTime(createTime);
+                loopService.addLoopData(loopDTO);
+            }
+        }
+
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

+ 4 - 0
src/main/java/com/welampiot/dao/LoopDao.java

@@ -25,6 +25,8 @@ public interface LoopDao {
 
     void addLoopDataByDTO(LoopDTO dto);
 
+    void addLoopData(LoopDTO dto);
+
     void updateLoopDataByDTO(LoopDTO dto);
 
     Integer findByLoopDTO(LoopDTO dto);
@@ -56,4 +58,6 @@ public interface LoopDao {
     LoopDTO getLoopEleCom(LoopDTO dto);
 
     List<LoopDTO> getLoopListByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
+
+    Integer checkLoopData(LoopDTO dto);
 }

+ 1 - 1
src/main/java/com/welampiot/dto/LampInfoDTO.java

@@ -82,7 +82,7 @@ public class LampInfoDTO {
     private Integer loopId;
     private String colourVal;
     private String keyword;
-    private List<Integer> sectionList;
+    private List<?> sectionList;
     private Integer alarmCount;
     private Integer type;
     private Integer alarmType;

+ 23 - 0
src/main/java/com/welampiot/dto/LoopDTO.java

@@ -214,7 +214,30 @@ public class LoopDTO implements Serializable {
 
     private Float totalCom;
 
+    private String controlTypeStr;
+
     private List<PlcPolicyInfoDTO> policyList;
 
     private static final long serialVersionUID = 1L;
+
+    public static Integer getControlTypeByStr(String controlTypeStr) {
+        int controlType = 0;
+        switch (controlTypeStr) {
+            case "GPRS" :
+                break;
+            case "NB" :
+                controlType = 1;
+                break;
+            case "LoraWan" :
+                controlType = 2;
+                break;
+            case "PLC" :
+                controlType = 3;
+                break;
+            case "zigbee" :
+                controlType = 4;
+                break;
+        }
+        return controlType;
+    }
 }

+ 4 - 0
src/main/java/com/welampiot/service/LoopService.java

@@ -24,6 +24,8 @@ public interface LoopService {
 
     void addLoopDataByDTO(LoopDTO dto);
 
+    void addLoopData(LoopDTO dto);
+
     void updateLoopDataByDTO(LoopDTO dto);
 
     Integer findByLoopDTO(LoopDTO dto);
@@ -57,4 +59,6 @@ public interface LoopService {
     LoopDTO getLoopEleCom(LoopDTO dto);
 
     List<LoopDTO> getLoopListByLampPoleId(Integer lampPoleId);
+
+    Integer checkLoopData(LoopDTO dto);
 }

+ 10 - 0
src/main/java/com/welampiot/service/impl/LoopServiceImpl.java

@@ -137,6 +137,11 @@ public class LoopServiceImpl implements LoopService {
         loopDao.addLoopDataByDTO(dto);
     }
 
+    @Override
+    public void addLoopData(LoopDTO dto) {
+        loopDao.addLoopData(dto);
+    }
+
     @Override
     public void updateLoopDataByDTO(LoopDTO dto) {
         loopDao.updateLoopDataByDTO(dto);
@@ -258,4 +263,9 @@ public class LoopServiceImpl implements LoopService {
     public List<LoopDTO> getLoopListByLampPoleId(Integer lampPoleId) {
         return loopDao.getLoopListByLampPoleId(lampPoleId);
     }
+
+    @Override
+    public Integer checkLoopData(LoopDTO dto) {
+        return loopDao.checkLoopData(dto);
+    }
 }

+ 15 - 0
src/main/java/com/welampiot/vo/LoopVO.java

@@ -2,6 +2,7 @@ package com.welampiot.vo;
 
 import com.welampiot.dto.LoopDTO;
 import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.Serializable;
 import java.util.List;
@@ -24,5 +25,19 @@ public class LoopVO implements Serializable {
 
     private String path;
 
+    private MultipartFile file;
+
+    private Integer type;
+
+    private Integer areaId;
+
+    private Integer sectionId;
+
+    private Integer version;
+
+    private List<LoopDTO> loopData;
+
+    private List<Object> msg;
+
     private static final long serialVersionUID = 1L;
 }

+ 24 - 0
src/main/resources/mapper/LoopMapper.xml

@@ -99,6 +99,12 @@
             (#{areaId},#{sectionId},#{name},#{number},#{devType},#{sn},#{rateId},#{lampPoleId},#{controlType},#{longitude},#{latitude})
     </insert>
 
+    <insert id="addLoopData" parameterType="com.welampiot.dto.LoopDTO" useGeneratedKeys="true" keyProperty="id">
+        insert into `loop`(areaid,sectionid,`name`,`number`,control_type,createtime)
+        values
+            (#{areaId},#{sectionId},#{name},#{number},#{controlType},#{createTime})
+    </insert>
+
     <update id="updateLoopDataByDTO" parameterType="com.welampiot.dto.LoopDTO">
         update `loop`
         set
@@ -364,4 +370,22 @@
         where l.lamp_pole_id = #{lampPoleId}
     </select>
 
+    <select id="checkLoopData" resultType="Integer">
+        select count(*)
+        from `loop` l
+        where 1=1
+        <if test="sectionId != null and sectionId != 0">
+            and l.sectionid = #{sectionId}
+        </if>
+        <if test="name != null and name != ''">
+            and l.name = #{name}
+        </if>
+        <if test="number != null and number != ''">
+            and l.number = #{number}
+        </if>
+        <if test="id != null and id != 0">
+            and l.id != #{id}
+        </if>
+    </select>
+
 </mapper>