jingyuanchao 1 жил өмнө
parent
commit
706bc78393

+ 5 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/DictConstants.java

@@ -301,4 +301,9 @@ public class DictConstants {
      * APP动环传感器设备类型
      */
     public static final String APP_SENSOR_DEVICE_TYPE = "app_sensor_device_type";
+
+    /**
+     * 资产设备状态
+     */
+    public static final String ASSET_STATUS = "asset_status";
 }

+ 3 - 128
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeviceController.java

@@ -1,9 +1,5 @@
 package com.xunmei.system.controller;
 
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.event.AnalysisEventListener;
-import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.controller.BaseController;
@@ -13,18 +9,12 @@ import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
-import com.xunmei.system.api.RemoteProtectionService;
 import com.xunmei.system.api.domain.SysDevice;
 import com.xunmei.system.api.domain.SysDictData;
-import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.dto.ProtectionDTO;
 import com.xunmei.system.api.dto.SysDeviceInnerListDto;
 import com.xunmei.system.dto.SysDevicePageDto;
 import com.xunmei.system.service.ISysDeviceService;
-import com.xunmei.system.service.ISysDictDataService;
 import com.xunmei.system.service.ISysDictTypeService;
-import com.xunmei.system.service.ISysOrgService;
-import com.xunmei.system.util.DeviceExport;
 import com.xunmei.system.vo.device.SysDevicePageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -36,9 +26,8 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
 import java.io.IOException;
-import java.util.*;
+import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -56,13 +45,7 @@ public class SysDeviceController extends BaseController {
     private ISysDeviceService sysDeviceService;
     @Autowired
     private ISysDictTypeService dictTypeService;
-    @Autowired
-    private ISysOrgService sysOrgService;
-    @Autowired
-    private ISysDictDataService sysDictDataService;
 
-    @Autowired
-    private RemoteProtectionService remoteProtectionService;
 
     /**
      * 查询【请填写功能名称】列表
@@ -194,98 +177,12 @@ public class SysDeviceController extends BaseController {
      * 导入
      */
     @RequiresPermissions("system:device:importData")
-    @ResponseBody
     @PostMapping("/importData")
     @Transactional(rollbackFor = {RuntimeException.class, Exception.class})
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) {
-        List<DeviceExport> list = new ArrayList<>();
-        // 读取excel
-        EasyExcel.read(multipartFileToFile(file), DeviceExport.class, new AnalysisEventListener<DeviceExport>() {
-            @Override
-            public void invoke(DeviceExport deviceExport, AnalysisContext analysisContext) {
-                list.add(deviceExport);
-            }
-
-            @Override
-            public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                List<ProtectionDTO> dtos = new ArrayList<>();
-                for (DeviceExport d : list) {
-                    SysDevice sysDevice = new SysDevice();
-                    BeanUtils.copyProperties(d, sysDevice);
-                    sysDevice.setDelFlag("0");
-                    SysOrg sysOrg = sysOrgService.selectByOrgName(d.getOrgName());
-                    if (null == d.getDeviceName() || null == d.getOrgName() || null == d.getAssetType() || null == d.getDeviceType()) {
-                        throw new RuntimeException("请完善数据");
-                    }
-                    if (null != sysOrg) {
-                        sysDevice.setOrgName(sysOrg.getShortName());
-                        SysDevice sysDevice1 = sysDeviceService.selectByHostNameAndOrgId(d.getHostName(), sysOrg.getId());
-                        sysDevice.setOrgId(sysOrg.getId());
-                        //查询资产类别
-                        String sys_asset_type = sysDictDataService.selectDictValue("sys_asset_type", d.getAssetType());
-                        if (null == sys_asset_type) {
-                            throw new RuntimeException("设备" + d.getDeviceName() + "的资产类别不正确");
-                        }
-                        sysDevice.setAssetType(sys_asset_type);
-                        //根据资产类别和设备分类查询
-                        List<SysDictData> deviceTypeByAssetType = dictTypeService.getDeviceTypeByAssetType(sys_asset_type);
-                        List<String> collect = deviceTypeByAssetType.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
-                        Set<String> sc = new HashSet<>();
-                        sc.addAll(collect);
-                        if (sc.contains(d.getDeviceType())) {
-                            deviceTypeByAssetType.forEach(de -> {
-                                if (de.getDictLabel().equals(d.getDeviceType())) {
-                                    sysDevice.setDeviceType(de.getDictValue());
-                                }
-                            });
-                        } else {
-                            throw new RuntimeException("设备" + d.getDeviceName() + "的设备分类不正确");
-                        }
-                        //根据机构和主机查询
-                        if (d.getDeviceType().equals("摄像机")) {
-                            if (null != sysDevice1) {
-                                sysDevice.setHostId(sysDevice1.getId());
-                            } else {
-                                throw new RuntimeException("设备" + d.getDeviceName() + "关联主机不正确");
-                            }
-                        }
-                        if (null != d.getDefinition()) {
-                            if (d.getDefinition().equals("是")) {
-                                sysDevice.setDefinition("1");
-                            } else {
-                                sysDevice.setDefinition("0");
-                            }
-                        }
-                        if (d.getAssetType().equals("消防类")) {
-                            if (null == d.getCheckTime()) {
-                                throw new RuntimeException("设备名称" + d.getDeviceName() + "的有效期至缺失");
-                            }
-                        } else {
-                            sysDevice.setCheckTime(null);
-                        }
-                        SysDevice device = sysDeviceService.checkName(sysDevice.getOrgId(), sysDevice.getDeviceName());
-                        if (null != device) {
-                            throw new RuntimeException("设备名称" + device.getDeviceName() + "已存在");
-                        }
-                        ProtectionDTO protectionDTO = sysDeviceService.insertSysDeviceExcel(sysDevice);
+    public void importData(MultipartFile file, boolean updateSupport,HttpServletResponse response) {
 
-                        if (null != protectionDTO) {
-                            dtos.add(protectionDTO);
-                        }
-                    } else {
-                        throw new RuntimeException("机构名称" + d.getOrgName() + "不存在");
-                    }
-                }
-                if (!dtos.isEmpty()) {
-                    for (ProtectionDTO dto : dtos) {
-                        remoteProtectionService.addByDevice(dto, SecurityConstants.INNER);
-                    }
-                }
+            sysDeviceService.importData(file, updateSupport, response);
 
-
-            }
-        }).sheet().doRead();
-        return success();
     }
 
     @RequiresPermissions("system:device:export")
@@ -293,26 +190,4 @@ public class SysDeviceController extends BaseController {
     public void downInChargeOfTemplate(HttpServletResponse response) throws IOException {
         sysDeviceService.downInChargeOfTemplate(response);
     }
-
-    /***
-     * 功能描述:
-     * MultipartFile 转 File
-     * @return: java.io.File
-     */
-    public static File multipartFileToFile(MultipartFile multipartFile) {
-        // 获取文件名
-        String fileName = multipartFile.getOriginalFilename();
-        // 获取文件后缀
-        assert fileName != null;
-        String suffix = fileName.substring(fileName.lastIndexOf("."));
-        // 若需要防止临时文件重复,需要在文件名后加上UUID
-        try {
-            File file = File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")) + UUID.randomUUID(), suffix);
-            multipartFile.transferTo(file);
-            return file;
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysDeviceService.java

@@ -8,6 +8,7 @@ import com.xunmei.system.api.dto.SysDeviceInnerListDto;
 import com.xunmei.system.dto.SysDevicePageDto;
 import com.xunmei.system.vo.area.HostVO;
 import com.xunmei.system.vo.device.SysDevicePageVo;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -115,4 +116,6 @@ public interface ISysDeviceService extends IService<SysDevice> {
      * @return
      */
     List<SysDevice> findList(SysDeviceInnerListDto listDto);
+
+    void importData(MultipartFile file, boolean updateSupport, HttpServletResponse response);
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysMultiLayerDictionaryService.java

@@ -20,4 +20,7 @@ public interface ISysMultiLayerDictionaryService extends IService<SysMultiLayerD
     List<DictionaryTreeVo> getDictionaryTree();
 
     List<DictionaryTreeVo> getDictTreeByParentId(Long parentId);
+
+    List<DictionaryTreeVo> selectList();
+
 }

+ 239 - 9
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java

@@ -1,48 +1,59 @@
 package com.xunmei.system.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.CacheConstants;
+import com.xunmei.common.core.constant.DictConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.device.domain.SysMultiLayerDictionary;
+import com.xunmei.common.core.domain.device.vo.DictionaryTreeVo;
 import com.xunmei.common.core.exception.ServiceException;
+import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.system.api.RemoteProtectionService;
 import com.xunmei.system.api.domain.SysDevice;
+import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.dto.ProtectionDTO;
 import com.xunmei.system.api.dto.SysDeviceInnerListDto;
 import com.xunmei.system.api.vo.ProtectionVO;
+import com.xunmei.system.api.vo.SysOrgVO;
 import com.xunmei.system.dto.SysDevicePageDto;
 import com.xunmei.system.mapper.SysDeviceMapper;
 import com.xunmei.system.mapper.SysOrgMapper;
-import com.xunmei.system.service.ISysDeviceService;
-import com.xunmei.system.service.ISysMultiLayerDictionaryService;
-import com.xunmei.system.service.ISysOrgService;
+import com.xunmei.system.service.*;
 import com.xunmei.system.util.DeviceExport;
+import com.xunmei.system.util.DeviceImportErrorMsg;
 import com.xunmei.system.vo.area.AccessType;
 import com.xunmei.system.vo.area.HostVO;
 import com.xunmei.system.vo.area.VideoVO;
 import com.xunmei.system.vo.device.SysDevicePageVo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.io.IOException;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -64,7 +75,9 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
     @Resource
     private ISysMultiLayerDictionaryService dictionaryService;
     @Autowired
-    private RedisTemplate redisTemplate;
+    private ISysDictDataService sysDictDataService;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
 
     @Override
     public TableDataInfo<SysDevicePageVo> selectPage(SysDevicePageDto req) {
@@ -264,8 +277,12 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
     public ProtectionDTO insertSysDeviceExcel(SysDevice sysDevice) {
         sysDevice.setCreateTime(DateUtils.getNowDate());
         sysDevice.setCreateBy(SecurityUtils.getUsername());
+        sysDevice.setCreateBy(SecurityUtils.getUsername());
+        sysDevice.setUpdateBy(SecurityUtils.getUsername());
         SysOrg sysOrg = orgService.selectSysOrgById(sysDevice.getOrgId());
         sysDevice.setOrgName(sysOrg.getShortName());
+        sysDevice.setOrgPath(sysOrg.getPath());
+        sysDevice.setOrgId(sysOrg.getId());
         SysDevice sysDevice1 = this.checkName(sysDevice.getOrgId(), sysDevice.getDeviceName());
         if (null != sysDevice1) {
             throw new RuntimeException("设备名称重复");
@@ -373,4 +390,217 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
     public int deleteSysDeviceById(Long id) {
         return sysDeviceMapper.deleteById(id);
     }
+
+    @Override
+    public void importData(MultipartFile file, boolean updateSupport, HttpServletResponse response) {
+        List<DeviceExport> list = new ArrayList<>();
+        List<SysDevice> result = new ArrayList<>();
+        List<DeviceImportErrorMsg> errorList = new ArrayList<>();
+        List<DictionaryTreeVo> dictionaryList = dictionaryService.selectList();
+        List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+        // 读取excel
+        EasyExcel.read(multipartFileToFile(file), DeviceExport.class, new AnalysisEventListener<DeviceExport>() {
+            @Override
+            public void invoke(DeviceExport deviceExport, AnalysisContext analysisContext) {
+                validatorParam(deviceExport, dictionaryList, errorList, result, cacheList);
+            }
+
+            @Override
+            public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                for (SysDevice d : result) {
+                    ProtectionDTO protectionDTO = insertSysDeviceExcel(d);
+                    remoteProtectionService.addByDevice(protectionDTO, SecurityConstants.INNER);
+                }
+            }
+        }).sheet().doRead();
+
+
+        if (errorList.isEmpty()) {
+            return;
+        }
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("设备导入数据.xlsx", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), DeviceImportErrorMsg.class)
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("设备导入数据.xlsx").doWrite(errorList);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+
+    }
+
+    private void validatorParam(DeviceExport deviceExport, List<DictionaryTreeVo> dictionaryList, List<DeviceImportErrorMsg> errorList, List<SysDevice> result, List<SysOrgVO> cacheList) {
+        SysDevice device = new SysDevice();
+        List<String> msgList = new ArrayList<>();
+        String orgName = deviceExport.getOrgName();
+        Optional<SysOrgVO> orgNameOptional = cacheList.stream().filter(sysOrgVO -> sysOrgVO.getShortName().equals(orgName) || sysOrgVO.getName().equals(orgName)).findFirst();
+        if (!orgNameOptional.isPresent()) {
+            msgList.add("账户名称为空");
+        } else {
+            SysOrgVO orgVO = orgNameOptional.get();
+            device.setOrgId(orgVO.getId());
+            device.setOrgName(orgVO.getShortName());
+            device.setOrgPath(orgVO.getPath());
+        }
+
+        String assetNo = deviceExport.getAssetNo();
+        if (StringUtils.isEmpty(assetNo)) {
+            msgList.add("资产编号为空");
+        } else {
+            device.setAssetNo(assetNo);
+        }
+
+        String deviceName = deviceExport.getDeviceName();
+        if (StringUtils.isEmpty(deviceName)) {
+            msgList.add("设备名称为空");
+        } else {
+            device.setDeviceName(deviceName);
+        }
+        String assetType = deviceExport.getAssetType();
+        Optional<DictionaryTreeVo> assetOptional = dictionaryList.stream().filter(r -> ObjectUtil.equal(r.getName(), assetType)).findFirst();
+        if (!assetOptional.isPresent()) {
+            msgList.add("资产分类未填写");
+        } else {
+            device.setAssetType(assetOptional.get().getId().toString());
+        }
+        String deviceType = deviceExport.getDeviceType();
+        if (StringUtils.isEmpty(deviceType)) {
+            msgList.add("设备分类未填写");
+        } else {
+            Optional<DictionaryTreeVo> deviceOptional = dictionaryList.stream().filter(r -> ObjectUtil.equal(r.getName(), deviceType)).findFirst();
+            if (!deviceOptional.isPresent()) {
+                msgList.add("设备分类不存在");
+            } else {
+                device.setDeviceType(deviceOptional.get().getId().toString());
+            }
+        }
+
+        String deviceModel = deviceExport.getDeviceModel();
+        if (StringUtils.isEmpty(deviceModel)) {
+            msgList.add("设备型号未填写");
+        } else {
+            Optional<DictionaryTreeVo> deviceModelOptional = dictionaryList
+                    .stream()
+                    .filter(r -> ObjectUtil.equal(r.getName(), deviceModel))
+                    .findFirst();
+            if (!deviceModelOptional.isPresent()) {
+                msgList.add("设备型号不存在");
+            } else {
+                device.setDeviceModel(deviceModelOptional.get().getId().toString());
+            }
+        }
+
+        String deviceBrand = deviceExport.getDeviceBrand();
+        if (StringUtils.isEmpty(deviceBrand)) {
+            msgList.add("设备品牌未填写");
+        } else {
+            Optional<DictionaryTreeVo> deviceBrandOptional = dictionaryList
+                    .stream()
+                    .filter(r -> ObjectUtil.equal(r.getName(), deviceBrand))
+                    .findFirst();
+            if (!deviceBrandOptional.isPresent()) {
+                msgList.add("设备品牌不存在");
+            } else {
+                device.setDeviceBrand(deviceBrandOptional.get().getId().toString());
+            }
+        }
+        String purchasingTimeStr = deviceExport.getPurchasingTime();
+        if (StringUtils.isEmpty(purchasingTimeStr)) {
+            msgList.add("采购时间未填写");
+        } else {
+            try {
+                DateTime purchasingTime = DateUtil.parse(purchasingTimeStr);
+                device.setPurchasingTime(purchasingTime);
+            } catch (Exception e) {
+                msgList.add("采购时间日期格式错误");
+            }
+        }
+
+        String address = deviceExport.getAddress();
+        if (StringUtils.isEmpty(address)) {
+            msgList.add("安装位置未填写");
+        }
+        String checkTimeStr = deviceExport.getCheckTime();
+        if (StringUtils.isEmpty(checkTimeStr)) {
+            msgList.add("消防有效期未填写");
+        } else {
+            try {
+                DateTime checkTime = DateUtil.parse(checkTimeStr);
+                device.setCheckTime(checkTime);
+            } catch (Exception e) {
+                msgList.add("消防有效期日期格式错误");
+            }
+        }
+        String maintenanceTermStr = deviceExport.getMaintenanceTerm();
+        if (StringUtils.isEmpty(maintenanceTermStr)) {
+            msgList.add("保修期限未填写");
+        } else {
+            try {
+                DateUtil.parse(maintenanceTermStr);
+                device.setMaintenanceTerm(maintenanceTermStr);
+            } catch (Exception e) {
+                msgList.add("保修期限日期格式错误");
+            }
+        }
+        String useTimeStr = deviceExport.getUseTime();
+        if (StringUtils.isEmpty(useTimeStr)) {
+            msgList.add("投产日期未填写");
+        } else {
+            try {
+                DateTime useTime = DateUtil.parse(useTimeStr);
+                device.setUseTime(useTime);
+            } catch (Exception e) {
+                msgList.add("投产日期格式错误");
+            }
+        }
+        String deviceStatus = deviceExport.getDeviceStatus();
+        if (StringUtils.isEmpty(deviceStatus)) {
+            msgList.add("设备状态未填写");
+        } else {
+            List<SysDictData> dictCache = DictUtils.getDictCache(DictConstants.ASSET_STATUS);
+            Optional<SysDictData> optional = dictCache.stream().filter(dictData -> dictData.getDictLabel().equals(deviceStatus)).findFirst();
+            if (optional.isPresent()) {
+                device.setDeviceStatus(Integer.parseInt(optional.get().getDictValue()));
+            } else {
+                msgList.add("设备状态填写错误");
+            }
+        }
+        if (msgList.isEmpty()) {
+            result.add(device);
+        } else {
+            String string = String.join(";", msgList);
+            DeviceImportErrorMsg properties = BeanHelper.copyProperties(deviceExport, DeviceImportErrorMsg.class);
+            properties.setErrorMsg(string);
+            errorList.add(properties);
+        }
+    }
+
+
+    /***
+     * 功能描述:
+     * MultipartFile 转 File
+     * @return: java.io.File
+     */
+    public static File multipartFileToFile(MultipartFile multipartFile) {
+        // 获取文件名
+        String fileName = multipartFile.getOriginalFilename();
+        // 获取文件后缀
+        assert fileName != null;
+        String suffix = fileName.substring(fileName.lastIndexOf("."));
+        // 若需要防止临时文件重复,需要在文件名后加上UUID
+        try {
+            File file = File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")) + UUID.randomUUID(), suffix);
+            multipartFile.transferTo(file);
+            return file;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 }

+ 9 - 5
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysMultiLayerDictionaryServiceImpl.java

@@ -26,11 +26,7 @@ public class SysMultiLayerDictionaryServiceImpl extends ServiceImpl<SysMultiLaye
 
     @Override
     public List<DictionaryTreeVo> getDictionaryTree() {
-        LambdaQueryWrapper<SysMultiLayerDictionary> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(SysMultiLayerDictionary::getDeleted, 0);
-        final List<SysMultiLayerDictionary> dictionaryList = baseMapper.selectList(wrapper);
-        final List<DictionaryTreeVo> treeVoList = BeanHelper.copyProperties(dictionaryList, DictionaryTreeVo.class);
-        return buildTree(treeVoList, -1L);
+        return buildTree(selectList(), -1L);
     }
 
     @Override
@@ -54,4 +50,12 @@ public class SysMultiLayerDictionaryServiceImpl extends ServiceImpl<SysMultiLaye
         return tree;
 
     }
+
+    @Override
+    public List<DictionaryTreeVo> selectList() {
+        LambdaQueryWrapper<SysMultiLayerDictionary> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysMultiLayerDictionary::getDeleted, 0);
+        final List<SysMultiLayerDictionary> dictionaryList = baseMapper.selectList(wrapper);
+        return BeanHelper.copyProperties(dictionaryList, DictionaryTreeVo.class);
+    }
 }

+ 22 - 17
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/DeviceExport.java

@@ -5,11 +5,8 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
  * @author :LuoWei
  * @date : 2023/10/9
@@ -19,23 +16,31 @@ import java.util.Date;
 @HeadRowHeight(16) //表头行高
 @ContentRowHeight(16) //数据行高
 public class DeviceExport {
-    @ExcelProperty(value = "设备名称", index = 0)
-    private String deviceName;
-    @ExcelProperty(value = "所属机构", index = 1)
+    @ExcelProperty(value = "所属机构", index = 0)
     private String orgName;
-    @ExcelProperty(value = "设备类别", index = 2)
+    @ExcelProperty(value = "资产编号", index = 1)
+    private String assetNo;
+    @ExcelProperty(value = "设备名称", index = 2)
+    private String deviceName;
+    @ExcelProperty(value = "资产分类", index = 3)
     private String assetType;
-    @ExcelProperty(value = "设备分类", index = 3)
+    @ExcelProperty(value = "设备分类", index = 4)
     private String deviceType;
-    @ExcelProperty(value = "设备品牌", index = 4)
+    @ExcelProperty(value = "设备品牌", index = 5)
     private String deviceBrand;
+    @ExcelProperty(value = "设备型号", index = 6)
+    private String deviceModel;
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    @ExcelProperty(value = "有效期至", index = 5)
-    private Date checkTime;
-    @ExcelProperty(value = "硬盘录像机", index = 6)
-    private String hostName;
-    @ExcelProperty(value = "通道号", index = 7)
-    private Long channel;
-    @ExcelProperty(value = "是否高清", index = 8)
-    private String definition;
+    @ExcelProperty(value = "采购日期", index = 7)
+    private String purchasingTime;
+    @ExcelProperty(value = "安装位置", index = 8)
+    private String address;
+    @ExcelProperty(value = "消防有效期", index = 9)
+    private String checkTime;
+    @ExcelProperty(value = "保修期限", index = 10)
+    private String maintenanceTerm;
+    @ExcelProperty(value = "投产时间", index = 11)
+    private String useTime;
+    @ExcelProperty(value = "资产状态", index = 12)
+    private String deviceStatus;
 }

+ 13 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/DeviceImportErrorMsg.java

@@ -0,0 +1,13 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class DeviceImportErrorMsg  extends DeviceExport{
+
+    @ExcelProperty(value = "错误信息", index = 13)
+    private String errorMsg;
+}