| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |