فهرست منبع

Merge branch 'server-165' into usky-zyj

james 1 سال پیش
والد
کامیت
34daba811c

+ 20 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseGgpFacilityController.java

@@ -13,6 +13,7 @@ import com.usky.iot.service.BaseGgpFacilityService;
 import com.usky.iot.service.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -181,15 +182,29 @@ public class BaseGgpFacilityController {
         return ApiResult.success(baseGgpFacilityService.baseGgpFacilityList(baseGgpFacilityVO));
     }
 
+        /**
+         * 设施弹窗查询
+         *
+         * @param id  主键ID
+         * @return
+         */
+        @GetMapping("facilityPopInfo")
+        public ApiResult<List<Object>> facilityPopInfo(@RequestParam(value = "id") Integer id) {
+            return ApiResult.success(baseGgpFacilityService.facilityPopInfo(id));
+        }
+
     /**
-     * 设施弹窗查询
+     * 地理设施-导入
      *
-     * @param id  主键ID
+     * @param file 导入文件
      * @return
+     * @throws Exception
      */
-    @GetMapping("facilityPopInfo")
-    public ApiResult<List<Object>> facilityPopInfo(@RequestParam(value = "id") Integer id) {
-        return ApiResult.success(baseGgpFacilityService.facilityPopInfo(id));
+    @Log(title = "地理设施", businessType = BusinessType.IMPORT)
+    @PostMapping("/facilityImport")
+    public ApiResult<Void> facilityImport(@RequestParam("file") MultipartFile file){
+        baseGgpFacilityService.facilityImport(file);
+        return ApiResult.success();
     }
 
 }

+ 2 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java

@@ -80,13 +80,11 @@ public class DmpDeviceInfoController {
     /**
      * 批量导入
      * @param multipartFiles
-     * @param productId
      * @return
      */
     @PostMapping("/addByFile")
-    public ApiResult<Void> addByFile(@RequestParam(value = "file") MultipartFile multipartFiles,
-                                     @RequestParam("productId") Integer productId){
-        dmpDeviceInfoService.addByFile(productId,multipartFiles);
+    public ApiResult<Void> addByFile(@RequestParam(value = "file") MultipartFile multipartFiles){
+        dmpDeviceInfoService.addByFile(multipartFiles);
         return ApiResult.success();
     }
 

+ 3 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseGgpFacilityService.java

@@ -9,6 +9,7 @@ import com.usky.iot.service.vo.BaseFacilityDeviceVO;
 import com.usky.iot.service.vo.BaseGgpFacilityExportVo;
 import com.usky.iot.service.vo.BaseGgpFacilityRequest;
 import com.usky.iot.service.vo.BaseGgpFacilityVO;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -55,4 +56,6 @@ public interface BaseGgpFacilityService extends CrudService<BaseGgpFacility> {
      * @param id  主键ID
      */
     List<Object> facilityPopInfo(Integer id);
+
+    void facilityImport(MultipartFile multipartFile);
 }

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java

@@ -47,7 +47,7 @@ public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
      */
     int deviceCountByProductId(Integer productId);
 
-    void addByFile(Integer productId, MultipartFile multipartFiles);
+    void addByFile(MultipartFile multipartFiles);
 
     void importDeviceInfo(List<DmpDeviceInfo> list);
 

+ 44 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseGgpFacilityServiceImpl.java

@@ -1,5 +1,7 @@
 package com.usky.iot.service.impl;
 
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -9,6 +11,8 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.core.util.BeanMapperUtils;
 import com.usky.common.core.util.UUIDUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.*;
@@ -23,6 +27,9 @@ import com.usky.system.model.LoginUser;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
@@ -401,4 +408,41 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
         list.add(map);
         return list;
     }
+
+    @Override
+    public void facilityImport(MultipartFile multipartFile) {
+        ImportParams params = new ImportParams();
+        params.setHeadRows(1);
+        params.setTitleRows(1);
+        String err="文件导入失败";
+        try {
+            List<FacilityImportVo> facilityImportVos = ExcelImportUtil.importExcel(multipartFile.getInputStream(),
+                    FacilityImportVo.class, params);
+            if (CollectionUtils.isNotEmpty(facilityImportVos)){
+                int rot=0;
+                for (FacilityImportVo facilityImportVo:facilityImportVos) {
+                    BaseGgpFacility baseGgpFacility = BeanMapperUtils.map(facilityImportVo, BaseGgpFacility.class);
+                    if (StringUtils.isBlank(baseGgpFacility.getFacilityType())||StringUtils.isBlank(baseGgpFacility.getFacilityName())||StringUtils.isBlank(baseGgpFacility.getAddress())||StringUtils.isBlank(baseGgpFacility.getLatitude())||StringUtils.isBlank(baseGgpFacility.getLongitude())){
+                        int h=rot+3;
+                        err="文件导入失败,第"+h+"行数据导入失败,必填字段不能为空";
+                        throw  new BusinessException(err);
+                    }
+                    try{
+                        this.add(baseGgpFacility);
+                    }catch (Exception e){
+                        int h=rot+3;
+                        err="文件导入失败,第"+h+"行数据导入失败";
+                        throw  new BusinessException(err);
+                    }
+                    rot++;
+                }
+            }else {
+                err="文件不能为空";
+                throw new BusinessException(err);
+            }
+        }catch (Exception e){
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            throw  new BusinessException(err);
+        }
+    }
 }

+ 35 - 7
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -26,13 +26,11 @@ import com.usky.iot.mapper.DmpDeviceInfoMapper;
 import com.usky.iot.service.BaseFacilityDeviceService;
 import com.usky.iot.service.DmpDeviceInfoService;
 import com.usky.iot.service.DmpDeviceStatusService;
-import com.usky.iot.service.vo.BaseFacilityDeviceVO;
-import com.usky.iot.service.vo.DmpDeviceExcelVO;
-import com.usky.iot.service.vo.DmpDeviceExportVO;
-import com.usky.iot.service.vo.DmpDeviceInfoRequest;
+import com.usky.iot.service.vo.*;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.ServletOutputStream;
@@ -165,9 +163,39 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     }
 
     @Override
-    public void addByFile(Integer productId, MultipartFile multipartFiles) {
-        List<DmpDeviceInfo> deviceByFile = getDeviceByFile(productId, multipartFiles);
-        this.saveBatch(deviceByFile);
+    public void addByFile(MultipartFile multipartFiles) {
+        ImportParams params = new ImportParams();
+        params.setHeadRows(1);
+        params.setTitleRows(1);
+        String err="文件导入失败";
+        try {
+            List<DeviceImportVo> deviceImportVos = ExcelImportUtil.importExcel(multipartFiles.getInputStream(),
+                    DeviceImportVo.class, params);
+            if (CollectionUtils.isNotEmpty(deviceImportVos)){
+                int rot=0;
+                for (DeviceImportVo deviceImportVo:deviceImportVos) {
+                    DmpDeviceInfo dmpDeviceInfo = BeanMapperUtils.map(deviceImportVo, DmpDeviceInfo.class);
+                    if (StringUtils.isBlank(dmpDeviceInfo.getDeviceId())||StringUtils.isBlank(dmpDeviceInfo.getProductCode())||StringUtils.isBlank(dmpDeviceInfo.getDeviceName())||StringUtils.isBlank(dmpDeviceInfo.getInstallAddress())){
+                        int h=rot+3;
+                        err="文件导入失败,第"+h+"行数据导入失败,必填字段不能为空";
+                        throw  new BusinessException(err);
+                    }
+                    try{
+                        this.add(dmpDeviceInfo);
+                    }catch (Exception e){
+                        int h=rot+3;
+                        err="文件导入失败,第"+h+"行数据导入失败";
+                        throw  new BusinessException(err);
+                    }
+                    rot++;
+                }
+            }else {
+                err="文件不能为空";
+                throw new BusinessException(err);
+            }
+        }catch (Exception e){
+            throw  new BusinessException(err);
+        }
     }
 
     @Override

+ 46 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DeviceImportVo.java

@@ -0,0 +1,46 @@
+package com.usky.iot.service.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+
+import lombok.Data;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author han
+ * @since 2023-07-27
+ */
+@Data
+public class DeviceImportVo{
+    /**
+     * 系统编号(必填)
+     */
+    @Excel(name = "系统编号(必填)")
+    private String productCode;
+
+    /**
+     * 设备id(必填)
+     */
+    @Excel(name = "设备id(必填)")
+    private String deviceId;
+
+    /**
+     * 设备名称(必填)
+     */
+    @Excel(name = "设备名称(必填)")
+    private String deviceName;
+    /**
+     * SIM
+     */
+    @Excel(name = "SIM")
+    private String simCode;
+
+    /**
+     * 安装位置描述(必填)
+     */
+    @Excel(name = "安装位置描述(必填)")
+    private String installAddress;
+
+}

+ 64 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/FacilityImportVo.java

@@ -0,0 +1,64 @@
+package com.usky.iot.service.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+
+import lombok.Data;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author han
+ * @since 2023-07-27
+ */
+@Data
+public class FacilityImportVo{
+    /**
+     * 设施类型(必填)
+     */
+    @Excel(name = "设施类型(必填)")
+    private String facilityType;
+
+    /**
+     * 设施名称(必填)
+     */
+    @Excel(name = "设施名称(必填)")
+    private String facilityName;
+
+    /**
+     * 设施地址(必填)
+     */
+    @Excel(name = "设施地址(必填)")
+    private String address;
+    /**
+     * 联系人
+     */
+    @Excel(name = "联系人")
+    private String contact;
+
+    /**
+     * 联系电话
+     */
+    @Excel(name = "联系电话")
+    private String contactPhone;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String facilityDesc;
+
+    /**
+     * 经度(必填)
+     */
+    @Excel(name = "经度(必填)")
+    private String longitude;
+
+    /**
+     * 维度(必填)
+     */
+    @Excel(name = "维度(必填)")
+    private String latitude;
+
+}

+ 4 - 4
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseFacilityTypeMapper.xml

@@ -40,7 +40,7 @@
             <if test="tenantId != null and tenantId != ''">
                 and e.tenant_id = #{tenantId}
             </if>
-                and e.status = 0
+                and e.facility_status = 0
         </where>
         GROUP BY d.id
     </select>
@@ -53,7 +53,7 @@
             <if test="tenantId != null and tenantId != ''">
                 and e.tenant_id = #{tenantId}
             </if>
-            and e.status = 1
+            and e.facility_status = 1
         </where>
         GROUP BY d.id
     </select>
@@ -66,12 +66,12 @@
             <if test="tenantId != null and tenantId != ''">
                 and e.tenant_id = #{tenantId}
             </if>
-            and e.status = 2
+            and e.facility_status = 2
         </where>
         GROUP BY d.id
     </select>
     <select id="typeList" resultType="com.usky.iot.domain.BaseFacilityType">
-        SELECT id,type_name as typeName,type_abbrevia as typeAbbrevia
+        SELECT id,type_code,type_name as typeName,type_abbrevia as typeAbbrevia
         FROM base_facility_type
         <where>
             <if test="typeId != null and typeId != ''">