Ver código fonte

fix: 资源导入接口(待自测)

huangjy 4 anos atrás
pai
commit
3d37f569f8

+ 8 - 0
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IApplyInfoFacade.java

@@ -265,4 +265,12 @@ public interface IApplyInfoFacade {
      */
     @RequestMapping(value = "getByApplyUrl")
     ApplyInfo getByApplyUrl(@RequestParam("applyUrl") String applyUrl);
+
+    /**
+     * 应用导入
+     * @param fileId
+     * @return
+     */
+    @PostMapping(value = "/import")
+    ResponseStatus impExcel(String fileId);
 }

+ 9 - 0
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IServiceResourceFacade.java

@@ -2,6 +2,7 @@ package com.dragoninfo.dcuc.app.facade;
 
 import com.dragoninfo.dcuc.app.entity.ServiceResource;
 import com.dragoninfo.dcuc.app.vo.ServiceResourceVo;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.data.domain.Page;
@@ -46,4 +47,12 @@ public interface IServiceResourceFacade {
      */
     @PostMapping(value = "/search")
     Page<ServiceResourceVo> page(@RequestBody SearchDTO toSearchDTO);
+
+    /**
+     * 服务资源导入
+     * @param fileId
+     * @return
+     */
+    @PostMapping(value = "/import")
+    ResponseStatus impExcel(String fileId);
 }

+ 4 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ServiceResourceDTO.java

@@ -48,6 +48,10 @@ public class ServiceResourceDTO extends ResourceDTO implements Serializable {
      * 服务提供应用系统code
      */
     private String appCode;
+    /**
+     * 服务资源描述
+     */
+    private String remark;
 
     public ServiceResourceDTO() {
         super();

+ 5 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/ServiceResource.java

@@ -156,4 +156,9 @@ public class ServiceResource implements Serializable {
      */
     private String appCode;
 
+    /**
+     * 服务资源描述
+     */
+    private String remark;
+
 }

+ 0 - 1
dcuc-app-service/pom.xml

@@ -10,7 +10,6 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dcuc-app-service</artifactId>
-
     <dependencies>
         <!--配置 duceap 开始-->
         <!-- 引入duceap-cloud核心包-->

+ 1 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java

@@ -423,6 +423,7 @@ public class ResourceBusiness implements IResourceBusiness {
         if (ServiceStatusCons.STATUS_DELETED.equals(fwzyztdm)) {
             dto.setDeleted(BooleanEnum.TRUE.getValue());
         }
+        dto.setRemark(acceptDTO.getFWZYMS());
         dto.setServiceType(acceptDTO.getFWLXDM());
         dto.setServiceProvideWay(acceptDTO.getFWTGFSDM());
         //是否自用服务,服务资源未返回

+ 6 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/ApplyInfoFacade.java

@@ -62,6 +62,12 @@ public class ApplyInfoFacade implements IApplyInfoFacade {
         return applyInfoService.getAppByAppUrl(applyUrl);
     }
 
+
+    @Override
+    public ResponseStatus impExcel(String fileId) {
+        return applyInfoService.impExcel(fileId);
+    }
+
     @AuditLog(actionType = "找到最新的排序", operateType = OperateTypeEnum.SEARCH)
     @Override
     public String getNewSort() {

+ 14 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/ServiceResourceFacade.java

@@ -3,13 +3,20 @@ package com.dragoninfo.dcuc.app.facade;
 import com.dragoninfo.dcuc.app.entity.ServiceResource;
 import com.dragoninfo.dcuc.app.service.IServiceResourceService;
 import com.dragoninfo.dcuc.app.vo.ServiceResourceVo;
+import com.dragoninfo.dcuc.duceap.upload.dto.DocContentDTO;
+import com.dragoninfo.duceap.core.response.Result;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 
 /**
@@ -24,6 +31,7 @@ public class ServiceResourceFacade implements IServiceResourceFacade {
     @Autowired
     private IServiceResourceService serviceResourceService;
 
+
     @Override
     public ServiceResource detailByCode(String serviceCode) {
         return serviceResourceService.detailByCode(serviceCode);
@@ -46,4 +54,10 @@ public class ServiceResourceFacade implements IServiceResourceFacade {
     public Page<ServiceResourceVo> page(SearchDTO searchDTO) {
         return serviceResourceService.page(Searchable.toSearchable(searchDTO));
     }
+
+    @Override
+    public ResponseStatus impExcel(String fileId) {
+        return serviceResourceService.impExcel(fileId);
+
+    }
 }

+ 2 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IApplyInfoService.java

@@ -238,4 +238,6 @@ public interface IApplyInfoService extends IBaseService<ApplyInfo, String> {
      * @return
      */
     List<ApplyInfo> getIdsByCodes(List<String> appCodes);
+
+    ResponseStatus impExcel(String fileId);
 }

+ 7 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IServiceResourceService.java

@@ -3,6 +3,7 @@ package com.dragoninfo.dcuc.app.service;
 import com.dragoninfo.dcuc.app.dto.ServiceResourceDTO;
 import com.dragoninfo.dcuc.app.entity.ServiceResource;
 import com.dragoninfo.dcuc.app.vo.ServiceResourceVo;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.core.service.IBaseService;
 import org.springframework.data.domain.Page;
@@ -46,4 +47,10 @@ public interface IServiceResourceService extends IBaseService<ServiceResource, S
      * @return
      */
     Page<ServiceResourceVo> page(Searchable toSearchable);
+
+    /**
+     * 服务资源导入
+     * @param fileId
+     */
+    ResponseStatus impExcel(String fileId);
 }

+ 194 - 3
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ApplyInfoServiceImpl.java

@@ -17,17 +17,25 @@ import com.dragoninfo.dcuc.app.mapper.ApplyInfoMapper;
 import com.dragoninfo.dcuc.app.service.IApplyInfoService;
 import com.dragoninfo.dcuc.app.service.IApplyOauthService;
 import com.dragoninfo.dcuc.app.service.IManufacturerInfoService;
+import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
 import com.dragoninfo.dcuc.auth.auth.facade.IPermissionNotificationFacade;
 import com.dragoninfo.dcuc.common.utils.LangUtil;
 import com.dragoninfo.dcuc.duceap.facade.IDuceapUploadFacade;
+import com.dragoninfo.dcuc.duceap.upload.dto.DocContentDTO;
 import com.dragoninfo.dcuc.duceap.upload.dto.FileUploadDTO;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import com.dragonsoft.duceap.base.entity.uploader.FileHolder;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
 import com.dragonsoft.duceap.core.context.ContextUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.mybaitsplus.core.services.BaseMybatisService;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -35,9 +43,11 @@ import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.annotation.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -50,6 +60,9 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
 
     private final ApplyInfoMapper applyInfoMapper;
 
+    @Resource
+    private IDuceapUploadFacade uploadhandler;
+
     public ApplyInfoServiceImpl(ApplyInfoMapper applyInfoMapper) {
         super(applyInfoMapper);
         this.applyInfoMapper = applyInfoMapper;
@@ -303,6 +316,57 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectList(queryWrapper);
     }
 
+    @Override
+    public ResponseStatus impExcel(String fileId) {
+        try {
+            fileId = JsonUtils.parseObject(fileId).getString("fileId");
+            DocContentDTO fileContent = uploadhandler.getFileContent(fileId);
+            byte[] fileData = fileContent.getFileData();
+            InputStream inputStream = new ByteArrayInputStream(fileData);
+            List<ApplyInfo> list = loadInfo(inputStream);
+            saveAll(list);
+        }catch (IOException e) {
+            return ResponseStatus.fail("300","导入文件类型错误");
+        } catch (NumberFormatException e) {
+            return ResponseStatus.fail("300",e.getMessage());
+        } catch (Exception e) {
+            return ResponseStatus.fail("300","导入失败");
+        }
+        return ResponseStatus.success();
+
+    }
+
+    private List<ApplyInfo> loadInfo(InputStream inputStream) throws IOException {
+        List<ApplyInfo> result = new ArrayList<>();
+        //根据指定的文件输入流导入Excel从而产生Workbook对象
+        Workbook wb0 = new HSSFWorkbook(inputStream);
+        //获取Excel文档中的第一个表单
+        Sheet sht0 = wb0.getSheetAt(0);
+        List<ApplyInfo> list = new ArrayList<>();
+        for (Row r : sht0) {
+            if (r.getRowNum() == 0) {
+                checkRowTitle(r);
+                continue;
+            }else {
+                //循环每行的每一列
+                ApplyInfo entity = new ApplyInfo();
+                for (int i = 0; i < 8; i++) {
+                    Cell cell = r.getCell(i);
+                    checkServiceResourceCellData(cell, i, r.getRowNum());
+                    checkServiceResourceCellDataValid(cell, i, r.getRowNum(), entity);
+                }
+                entity.setDeleted(YesNotEnum.NO.getValue());
+                list.add(entity);
+            }
+
+        }
+
+        return result;
+    }
+
+
+
+
     @Override
     public ResponseStatus isRepeat(ApplyInfo applyInfo) {
 
@@ -502,4 +566,131 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         FileUploadDTO fileUploadDTO = new FileUploadDTO(busiId, busiType, fileHolders);
         uploadHandler.saveOrUpdate(fileUploadDTO);
     }
+
+
+    /**
+     * 校验参数和设置参数
+     * @param cell
+     * @param num
+     * @param row
+     * @param resource
+     */
+    private void checkServiceResourceCellDataValid(Cell cell, int num, int row, ApplyInfo resource) {
+        if (cell == null)
+            return;
+        String value = cell.getStringCellValue();
+        switch (num) {
+            case 0:
+                if (value.length() > 100) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务资源标识符''长度大于100!");
+                }
+                break;
+            case 1:
+                if (value.length() > 500) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务资源名称''长度大于500!");
+                }
+                break;
+            case 2:
+                if (value.length() > 20) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务类型''长度大于20!");
+                }
+                break;
+            case 3:
+                //TODO 判断服务提供方式的枚举
+                String wayCode = "";
+                if (com.dragonsoft.duceap.commons.util.string.StringUtils.isBlank(wayCode) ){
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务提供方式''填写不正确!");
+                }
+
+                if (wayCode.length() > 20) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务提供方式''长度大于20!");
+                }
+
+                break;
+            case 4:
+                if (com.dragonsoft.duceap.commons.util.string.StringUtils.isNotBlank(value)){
+                    String code = "";
+                    for (YesNotEnum yesNotEnum: YesNotEnum.values()){
+                        if (value.equals(yesNotEnum.getLabel())){
+                            code = yesNotEnum.getValue();
+                            continue;
+                        }
+                    }
+                }
+                break;
+            case 5:
+                if (value.length() > 500) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务访问地址''长度大于500!");
+                }
+                break;
+            case 6:
+                break;
+            case 7:
+                break;
+            default:
+                break;
+
+        }
+    }
+
+
+    /**
+     * 校验数据是否为空
+     * @param cell
+     * @param i
+     * @param row
+     */
+    private static void checkServiceResourceCellData(Cell cell, int i, int row) {
+        if (!(cell == null || com.dragonsoft.duceap.commons.util.string.StringUtils.isBlank(cell.getStringCellValue()))) {
+            return;
+        }
+        switch (row) {
+            case 0:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务资源标识''为空!");
+            case 1:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务资源名称''为空!");
+            case 2:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务类型''为空!");
+            case 3:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务提供方式''为空!");
+            case 5:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务访问地址''为空!");
+            case 6:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务提供应用系统名称''为空!");
+            default:
+                break;
+        }
+
+    }
+
+    /**
+     * 校验列头
+     * @param r
+     */
+    private static void checkRowTitle(Row r) {
+        if (!r.getCell(0).getStringCellValue().equals("服务资源标识")) {
+            throw new NumberFormatException("缺少''服务资源标识''列!");
+        }
+        if (!r.getCell(1).getStringCellValue().equals("服务资源名称")) {
+            throw new NumberFormatException("缺少''服务资源名称''列!");
+        }
+        if (!r.getCell(2).getStringCellValue().equals("服务类型")) {
+            throw new NumberFormatException("缺少''服务类型''列!");
+        }
+        if (!r.getCell(3).getStringCellValue().equals("服务提供方式")) {
+            throw new NumberFormatException("缺少''服务提供方式''列!");
+        }
+        if (!r.getCell(4).getStringCellValue().equals("是否自用服务")) {
+            throw new NumberFormatException("缺少''是否自用服务''列!");
+        }
+        if (!r.getCell(5).getStringCellValue().equals("服务访问地址")) {
+            throw new NumberFormatException("缺少''服务访问地址''列!");
+        }
+        if (!r.getCell(6).getStringCellValue().equals("服务提供应用系统名称")) {
+            throw new NumberFormatException("缺少''服务提供应用系统名称''列!");
+        }
+        if (!r.getCell(7).getStringCellValue().equals("服务资源描述")) {
+            throw new NumberFormatException("缺少''服务资源描述''列!");
+        }
+    }
 }

+ 225 - 3
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ServiceResourceServiceImpl.java

@@ -10,9 +10,22 @@ import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade;
 import com.dragoninfo.dcuc.app.mapper.ServiceResourceMapper;
 import com.dragoninfo.dcuc.app.service.IServiceResourceService;
 import com.dragoninfo.dcuc.app.vo.ServiceResourceVo;
+import com.dragoninfo.dcuc.auth.auth.enumresources.ServiceProvideWayEnum;
+import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
+import com.dragoninfo.dcuc.duceap.facade.IDuceapUploadFacade;
+import com.dragoninfo.dcuc.duceap.upload.dto.DocContentDTO;
+import com.dragoninfo.duceap.core.response.Result;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+import com.dragonsoft.duceap.commons.util.string.StringUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.mybaitsplus.core.services.BaseMybatisService;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -20,9 +33,11 @@ import org.springframework.data.domain.PageImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import javax.annotation.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
 
 /**
  * @author huangzqa
@@ -32,11 +47,15 @@ import java.util.List;
 @Service
 public class ServiceResourceServiceImpl extends BaseMybatisService<ServiceResource, String> implements IServiceResourceService {
 
+
     private final ServiceResourceMapper serviceResourceMapper;
 
     @Autowired
     private IApplyInfoFacade applyInfoFacade;
 
+    @Resource
+    private IDuceapUploadFacade uploadhandler;
+
     public ServiceResourceServiceImpl(ServiceResourceMapper serviceResourceMapper) {
         super(serviceResourceMapper);
         this.serviceResourceMapper = serviceResourceMapper;
@@ -93,6 +112,209 @@ public class ServiceResourceServiceImpl extends BaseMybatisService<ServiceResour
         return new PageImpl<>(result, searchable.getPage(), serviceResources.getTotalElements());
     }
 
+    /**
+     * 服务资源导入
+     * @param fileId
+     * @return
+     */
+    @Override
+    public ResponseStatus impExcel(String fileId) {
+        try {
+            fileId = JsonUtils.parseObject(fileId).getString("fileId");
+            DocContentDTO fileContent = uploadhandler.getFileContent(fileId);
+            byte[] fileData = fileContent.getFileData();
+            InputStream inputStream = new ByteArrayInputStream(fileData);
+            List<ServiceResource> list = loadServiceResourceInfo(inputStream);
+            saveAll(list);
+        }catch (IOException e) {
+            return ResponseStatus.fail("300","导入文件类型错误");
+        } catch (NumberFormatException e) {
+            return ResponseStatus.fail("300",e.getMessage());
+        } catch (Exception e) {
+            return ResponseStatus.fail("300","导入失败");
+        }
+        return ResponseStatus.success();
+    }
+
+    /**
+     * 构建服务资源数组
+     * @param inputStream
+     * @return
+     * @throws IOException
+     */
+    public List<ServiceResource> loadServiceResourceInfo(InputStream inputStream) throws IOException {
+        List<ServiceResource> result = new ArrayList<>();
+        //根据指定的文件输入流导入Excel从而产生Workbook对象
+        Workbook wb0 = new HSSFWorkbook(inputStream);
+        //获取Excel文档中的第一个表单
+        Sheet sht0 = wb0.getSheetAt(0);
+        for (Row r : sht0) {
+            if (r.getRowNum() == 0) {
+                checkRowServiceResourceTitle(r);
+                continue;
+            }else {
+                //循环每行的每一列
+                ServiceResource resource = new ServiceResource();
+                for (int i = 0; i < 8; i++) {
+                    Cell cell = r.getCell(i);
+                    checkServiceResourceCellData(cell, i, r.getRowNum());
+                    checkServiceResourceCellDataValid(cell, i, r.getRowNum(), resource);
+                }
+                resource.setCreateTime(new Date());
+                resource.setDeleted(YesNotEnum.NO.getValue());
+                result.add(resource);
+            }
+
+        }
+        return result;
+    }
+
+    /**
+     * 校验参数和设置参数
+     * @param cell
+     * @param num
+     * @param row
+     * @param resource
+     */
+    private void checkServiceResourceCellDataValid(Cell cell, int num, int row, ServiceResource resource) {
+        if (cell == null)
+            return;
+        String value = cell.getStringCellValue();
+        switch (num) {
+            case 0:
+                if (value.length() > 100) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务资源标识符''长度大于100!");
+                }
+                resource.setServiceCode(value);
+                break;
+            case 1:
+                if (value.length() > 500) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务资源名称''长度大于500!");
+                }
+                resource.setServiceName(value);
+                break;
+            case 2:
+                if (value.length() > 20) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务类型''长度大于20!");
+                }
+                resource.setServiceType(value);
+                break;
+            case 3:
+                //TODO 判断服务提供方式的枚举
+                String wayCode = "";
+                for (ServiceProvideWayEnum wayEnum: ServiceProvideWayEnum.values()){
+                    if (value.equals(wayEnum.getLabel())){
+                        wayCode = wayEnum.getValue();
+                        continue;
+                    }
+                }
+                if (StringUtils.isBlank(wayCode) ){
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务提供方式''填写不正确!");
+                }
+
+                if (wayCode.length() > 20) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务提供方式''长度大于20!");
+                }
+
+                resource.setServiceProvideWay(wayCode);
+                break;
+            case 4:
+                if (StringUtils.isNotBlank(value)){
+                    String code = "";
+                    for (YesNotEnum yesNotEnum: YesNotEnum.values()){
+                        if (value.equals(yesNotEnum.getLabel())){
+                            code = yesNotEnum.getValue();
+                            continue;
+                        }
+                    }
+                    //是否自用服务
+                    resource.setMustSelf(code);
+                }
+                break;
+            case 5:
+                if (value.length() > 500) {
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务访问地址''长度大于500!");
+                }
+                resource.setServiceUrl(value);
+                break;
+            case 6:
+                //判断是否为正确的应用
+                ApplyInfo applyInfo = applyInfoFacade.getOneByName(value);
+                if (applyInfo == null){
+                    throw new NumberFormatException("第" + (row + 1) + "行''服务提供应用系统名称''不存在!");
+                }
+                resource.setAppCode(applyInfo.getApplyCode());
+                break;
+            case 7:
+                resource.setRemark(value);
+                break;
+            default:
+                break;
+
+        }
+    }
+
+
+    /**
+     * 校验数据是否为空
+     * @param cell
+     * @param i
+     * @param row
+     */
+    private static void checkServiceResourceCellData(Cell cell, int i, int row) {
+        if (!(cell == null || StringUtils.isBlank(cell.getStringCellValue()))) {
+            return;
+        }
+        switch (row) {
+            case 0:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务资源标识''为空!");
+            case 1:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务资源名称''为空!");
+            case 2:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务类型''为空!");
+            case 3:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务提供方式''为空!");
+            case 5:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务访问地址''为空!");
+            case 6:
+                throw new NumberFormatException("第" + (row + 1) + "行''服务提供应用系统名称''为空!");
+            default:
+                break;
+        }
+
+    }
+
+    /**
+     * 校验列头
+     * @param r
+     */
+    private static void checkRowServiceResourceTitle(Row r) {
+        if (!r.getCell(0).getStringCellValue().equals("服务资源标识")) {
+            throw new NumberFormatException("缺少''服务资源标识''列!");
+        }
+        if (!r.getCell(1).getStringCellValue().equals("服务资源名称")) {
+            throw new NumberFormatException("缺少''服务资源名称''列!");
+        }
+        if (!r.getCell(2).getStringCellValue().equals("服务类型")) {
+            throw new NumberFormatException("缺少''服务类型''列!");
+        }
+        if (!r.getCell(3).getStringCellValue().equals("服务提供方式")) {
+            throw new NumberFormatException("缺少''服务提供方式''列!");
+        }
+        if (!r.getCell(4).getStringCellValue().equals("是否自用服务")) {
+            throw new NumberFormatException("缺少''是否自用服务''列!");
+        }
+        if (!r.getCell(5).getStringCellValue().equals("服务访问地址")) {
+            throw new NumberFormatException("缺少''服务访问地址''列!");
+        }
+        if (!r.getCell(6).getStringCellValue().equals("服务提供应用系统名称")) {
+            throw new NumberFormatException("缺少''服务提供应用系统名称''列!");
+        }
+        if (!r.getCell(7).getStringCellValue().equals("服务资源描述")) {
+            throw new NumberFormatException("缺少''服务资源描述''列!");
+        }
+    }
+
     /**
      * 设置应用名称
      * @param serviceResourceVo

+ 4 - 0
dcuc-app-service/src/main/resources/config/mysql/V4_1_0004__alert_column.sql

@@ -4,6 +4,10 @@ ADD COLUMN `service_provide_way`  varchar(20) NULL COMMENT '服务提供方式'
 ADD COLUMN `must_self`  varchar(1) NULL COMMENT '是否自用服务' AFTER `service_provide_way`,
 ADD COLUMN `app_code`  varchar(100) NULL COMMENT '服务提供应用系统code' AFTER `must_self`;
 
+ALTER TABLE `t_service_resource`
+ADD COLUMN `remark`  varchar(255) NULL COMMENT '服务资源描述' AFTER `app_code`;
+
+
 ALTER TABLE `t_apply_info`
 ADD COLUMN `app_ops_dep_name`  varchar(255) NULL COMMENT '应用系统运维单位名称' AFTER `manager_org_name`,
 ADD COLUMN `manager_org_code`  varchar(255) NULL COMMENT '应用系统事权单位代码' AFTER `app_ops_dep_name`;

+ 2 - 0
dcuc-app-service/src/main/resources/config/sql/V4_1_0005__ALERT_COLUMN_init.sql

@@ -3,6 +3,7 @@ ADD ( "SERVICE_TYPE" VARCHAR2(20) NULL  )
 ADD ( "SERVICE_PROVIDE_WAY" VARCHAR2(20) NULL  ) 
 ADD ( "MUST_SELF" VARCHAR2(1) NULL  ) 
 ADD ( "APP_CODE" VARCHAR2(100) NULL  ) ;
+ADD ( "REMARK" VARCHAR2(255) NULL  ) ;
 
 COMMENT ON COLUMN "T_SERVICE_RESOURCE"."SERVICE_TYPE" IS ''服务类型'';
 
@@ -12,6 +13,7 @@ COMMENT ON COLUMN "T_SERVICE_RESOURCE"."MUST_SELF" IS ''是否自用服务'';
 
 COMMENT ON COLUMN "T_SERVICE_RESOURCE"."APP_CODE" IS ''服务提供应用系统code'';
 
+COMMENT ON COLUMN "T_SERVICE_RESOURCE"."REMARK" IS ''服务资源描述'';
 
 
 ALTER TABLE "T_APPLY_INFO"