|
@@ -19,6 +19,7 @@ import com.bootdo.system.domain.RoleDO;
|
|
|
import com.bootdo.system.domain.UserDO;
|
|
|
import com.bootdo.system.service.RoleService;
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
|
+import org.apache.poi.ss.usermodel.CellType;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
@@ -262,7 +263,7 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
userCity = sysCity;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ log.info("===========1=============");
|
|
|
//判断是哪种格式的
|
|
|
Row firstRow = xssfSheet.getRow(0);
|
|
|
Cell firstRowCell = firstRow.getCell(0);
|
|
@@ -272,10 +273,13 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
} else {
|
|
|
beginDataRowIndex = 4;
|
|
|
}
|
|
|
+ log.info("===========2=============");
|
|
|
|
|
|
if(xssfSheet.getLastRowNum() < beginDataRowIndex){ //getLastRowNum返回最后一行的索引,即 比行总数小1
|
|
|
throw new BDException("excel文件无数据");
|
|
|
}
|
|
|
+ log.info("===========3=============");
|
|
|
+ log.info("===========3=============");
|
|
|
// 遍历
|
|
|
for (int i = beginDataRowIndex; i <= xssfSheet.getLastRowNum(); i++) {
|
|
|
log.info("userProvince: {}, i: {}", userProvince, i);
|
|
@@ -287,6 +291,7 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
if(row.getLastCellNum()<52){ //getLastCellNum返回的是最后一列的列数,即 等于总列数
|
|
|
throw new BDException("excel文件列数不正确");
|
|
|
}
|
|
|
+ log.info("===========4============="+i);
|
|
|
//所属省份
|
|
|
String dataProvince = row.getCell(18).getStringCellValue();
|
|
|
String dataCity = row.getCell(19).getStringCellValue();
|
|
@@ -297,6 +302,7 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
otherProvince++;
|
|
|
continue;
|
|
|
}
|
|
|
+ log.info("===========5============="+i);
|
|
|
|
|
|
if (StringUtils.isEmpty(dataCity) || (!StringUtils.isEmpty(userCity)) && !dataCity.equals(userCity)) {
|
|
|
log.info("当前用户地市: {}, 当前数据地市: {}, 数据名称: {}", userCity, dataCity, row.getCell(1).getStringCellValue());
|
|
@@ -304,17 +310,26 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ log.info("===========6============="+i);
|
|
|
|
|
|
// 企业单位
|
|
|
GyUnitDO gyUnitDO = new GyUnitDO();
|
|
|
// 数据信息
|
|
|
GyDataDO gyDataDO = new GyDataDO();
|
|
|
|
|
|
+ //代码报错:java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
|
|
|
+ //GyUnitDO tmpGyUnitDO = gyUnitDao.getGyUnitByCreditCode(row.getCell(17).getStringCellValue());
|
|
|
+
|
|
|
+ //获取单元格的字符出信息
|
|
|
+ String creditCode = this.getCellValue_String(row,17);
|
|
|
+ log.info("===========6.5============creditCode="+creditCode);
|
|
|
+ // 使用获取到的信用代码
|
|
|
+ GyUnitDO tmpGyUnitDO = gyUnitDao.getGyUnitByCreditCode(creditCode);
|
|
|
|
|
|
- GyUnitDO tmpGyUnitDO = gyUnitDao.getGyUnitByCreditCode(row.getCell(17).getStringCellValue());
|
|
|
//判断是否已经在gu_unit表中添加企业信息
|
|
|
if (ObjectUtils.isEmpty(tmpGyUnitDO) ) {
|
|
|
//没有添加企业信息, 需要进行企业信息的添加,审核状态为【未审核】
|
|
|
+ log.info("===========7============="+i);
|
|
|
try {
|
|
|
this.createGyUnitDO(gyUnitDO, row);
|
|
|
gyUnitDO.setCreateTime(new Date());
|
|
@@ -327,15 +342,18 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
unitNoAudit++;
|
|
|
break;
|
|
|
} else {
|
|
|
+ log.info("===========8============="+i);
|
|
|
if ( !"1".equals(tmpGyUnitDO.getAuditStatus()) ){
|
|
|
unitNoAudit++;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ log.info("===========9============="+i);
|
|
|
//无数据导出
|
|
|
- if ("/".equals(row.getCell(1).getStringCellValue()) && row.getCell(16).getStringCellValue() !=null && !"/".equals(row.getCell(16).getStringCellValue())) {
|
|
|
+ if ("/".equals(this.getCellValue_String(row,1)) && this.getCellValue_String(row,16) !=null && !"/".equals(row.getCell(16).getStringCellValue())) {
|
|
|
|
|
|
+ log.info("===========10============="+i);
|
|
|
int count = gyUnitDao.getGyUnit(this.createGyUnitDO(gyUnitDO,row));
|
|
|
if (count == 0) {
|
|
|
try {
|
|
@@ -350,57 +368,63 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- gyDataDO.setDataName(row.getCell(1).getStringCellValue());//数据名称
|
|
|
- gyDataDO.setDataTypeBase(row.getCell(2).getStringCellValue());//数据分类分级规范
|
|
|
- gyDataDO.setDataTypeOne(row.getCell(3).getStringCellValue());//数据一级类别
|
|
|
- gyDataDO.setDataTypeTwo(row.getCell(4).getStringCellValue());//数据二级类别
|
|
|
- gyDataDO.setDataTypeThree(row.getCell(5)==null?null:row.getCell(5).getStringCellValue());//数据三级类别
|
|
|
- gyDataDO.setDataTypeFour(row.getCell(6)==null?null:row.getCell(6).getStringCellValue());//数据四级类别
|
|
|
- gyDataDO.setDataLevel(row.getCell(7).getStringCellValue());//数据级别
|
|
|
- gyDataDO.setDataCarrier(row.getCell(8).getStringCellValue());//数据载体
|
|
|
- gyDataDO.setDataSource(row.getCell(9).getStringCellValue());//数据来源
|
|
|
+ gyDataDO.setDataName(this.getCellValue_String(row,1));//数据名称
|
|
|
+ gyDataDO.setDataTypeBase(this.getCellValue_String(row,2));//数据分类分级规范
|
|
|
+ gyDataDO.setDataTypeOne(this.getCellValue_String(row,3));//数据一级类别
|
|
|
+ gyDataDO.setDataTypeTwo(this.getCellValue_String(row,4));//数据二级类别
|
|
|
+ gyDataDO.setDataTypeThree(row.getCell(5)==null?null:this.getCellValue_String(row,5));//数据三级类别
|
|
|
+ gyDataDO.setDataTypeFour(row.getCell(6)==null?null:this.getCellValue_String(row,6));//数据四级类别
|
|
|
+ gyDataDO.setDataLevel(this.getCellValue_String(row,7));//数据级别
|
|
|
+ gyDataDO.setDataCarrier(this.getCellValue_String(row,8));//数据载体
|
|
|
+ gyDataDO.setDataSource(this.getCellValue_String(row,9));//数据来源
|
|
|
gyDataDO.setDataNumGb(row.getCell(10).getNumericCellValue());//数据数量(非电子数据)
|
|
|
gyDataDO.setDataNum((int) row.getCell(11).getNumericCellValue());//数据数量(电子数据)
|
|
|
- gyDataDO.setDataScope(row.getCell(12).getStringCellValue());//覆盖类型
|
|
|
- gyDataDO.setDataProportion(row.getCell(13).getStringCellValue());//覆盖占比
|
|
|
- gyDataDO.setDataPrecision(row.getCell(14).getStringCellValue());//数据精度
|
|
|
- gyDataDO.setDataPrecisionDes(row.getCell(15).getStringCellValue());//数据精度描述
|
|
|
+ gyDataDO.setDataScope(this.getCellValue_String(row,12));//覆盖类型
|
|
|
+ gyDataDO.setDataProportion(this.getCellValue_String(row,13));//覆盖占比
|
|
|
+ gyDataDO.setDataPrecision(this.getCellValue_String(row,14));//数据精度
|
|
|
+ gyDataDO.setDataPrecisionDes(this.getCellValue_String(row,15));//数据精度描述
|
|
|
|
|
|
+ log.info("===========11============="+i);
|
|
|
//添加企业信息
|
|
|
gyUnitList.add(this.createGyUnitDO(gyUnitDO,row));
|
|
|
|
|
|
- gyDataDO.setDataHandleType(row.getCell(26).getStringCellValue());//数据处理方式
|
|
|
- gyDataDO.setDataResult(row.getCell(27).getStringCellValue());//数据目的
|
|
|
- gyDataDO.setIsAlgorithmHandle(row.getCell(28).getStringCellValue());//是否涉及算法处理
|
|
|
- gyDataDO.setIsCross(row.getCell(29).getStringCellValue());//是否出境
|
|
|
- gyDataDO.setCrossAcceptName(row.getCell(30).getStringCellValue());//跨境接收方名称
|
|
|
- gyDataDO.setDataCrossType(row.getCell(31).getStringCellValue());//出境方式
|
|
|
- gyDataDO.setIsSecurityAss(row.getCell(32).getStringCellValue());//是否安全评估
|
|
|
- gyDataDO.setAssessResult(row.getCell(33).getStringCellValue());//评估结果
|
|
|
- gyDataDO.setIsCrossMain(row.getCell(34).getStringCellValue());//是否对外共享
|
|
|
- gyDataDO.setCrossmainAcceptName(row.getCell(35).getStringCellValue());//数据对外共享接收方
|
|
|
- gyDataDO.setDataCrossmainType(row.getCell(36).getStringCellValue());//数据对外共享方式
|
|
|
- gyDataDO.setIsForeignData(row.getCell(37).getStringCellValue());//是否为涉外数据
|
|
|
- gyDataDO.setIsCrossmainFlow(row.getCell(38).getStringCellValue());//是否涉及跨主体流动
|
|
|
- gyDataDO.setInfoSystemName(row.getCell(39).getStringCellValue());//信息系统名称
|
|
|
- gyDataDO.setInfoSystemIpAddress(row.getCell(40).getStringCellValue());//信息系统ip地址
|
|
|
- gyDataDO.setInfoSystemDomainName(row.getCell(41).getStringCellValue());//信息系统域名
|
|
|
- gyDataDO.setInfoSystemType(row.getCell(42).getStringCellValue());//信息系统类型
|
|
|
- gyDataDO.setSecurityCognizance(row.getCell(43).getStringCellValue());//网络安全等级保护认定情况
|
|
|
- gyDataDO.setComSecurityCognizance(row.getCell(44).getStringCellValue());//通信网络安全防护定级备案情况
|
|
|
- gyDataDO.setIsKetSystem(row.getCell(45).getStringCellValue());//是否为关键信息基础设施
|
|
|
- gyDataDO.setIsKeydataAss(row.getCell(46).getStringCellValue());//是否开展重要数据安全风险评估
|
|
|
- gyDataDO.setAssessOrg(row.getCell(47).getStringCellValue());//评估机构
|
|
|
- gyDataDO.setAssessBase(row.getCell(48).getStringCellValue());//评估依据的规范
|
|
|
- gyDataDO.setAssessTime(row.getCell(49).getStringCellValue());//评估时间
|
|
|
- gyDataDO.setDataAssessResult(row.getCell(50).getStringCellValue());//重要数据安全风险评估结论
|
|
|
- gyDataDO.setDataDesc(row.getCell(51).getStringCellValue());//备注
|
|
|
+ gyDataDO.setDataHandleType(this.getCellValue_String(row,26));//数据处理方式
|
|
|
+ gyDataDO.setDataResult(this.getCellValue_String(row,27));//数据目的
|
|
|
+ gyDataDO.setIsAlgorithmHandle(this.getCellValue_String(row,28));//是否涉及算法处理
|
|
|
+ gyDataDO.setIsCross(this.getCellValue_String(row,29));//是否出境
|
|
|
+ gyDataDO.setCrossAcceptName(this.getCellValue_String(row,30));//跨境接收方名称
|
|
|
+ gyDataDO.setDataCrossType(this.getCellValue_String(row,31));//出境方式
|
|
|
+ gyDataDO.setIsSecurityAss(this.getCellValue_String(row,32));//是否安全评估
|
|
|
+ gyDataDO.setAssessResult(this.getCellValue_String(row,33));//评估结果
|
|
|
+ gyDataDO.setIsCrossMain(this.getCellValue_String(row,34));//是否对外共享
|
|
|
+ gyDataDO.setCrossmainAcceptName(this.getCellValue_String(row,35));//数据对外共享接收方
|
|
|
+ gyDataDO.setDataCrossmainType(this.getCellValue_String(row,36));//数据对外共享方式
|
|
|
+ gyDataDO.setIsForeignData(this.getCellValue_String(row,37));//是否为涉外数据
|
|
|
+ gyDataDO.setIsCrossmainFlow(this.getCellValue_String(row,38));//是否涉及跨主体流动
|
|
|
+ gyDataDO.setInfoSystemName(this.getCellValue_String(row,39));//信息系统名称
|
|
|
+ gyDataDO.setInfoSystemIpAddress(this.getCellValue_String(row,40));//信息系统ip地址
|
|
|
+ gyDataDO.setInfoSystemDomainName(this.getCellValue_String(row,41));//信息系统域名
|
|
|
+ gyDataDO.setInfoSystemType(this.getCellValue_String(row,42));//信息系统类型
|
|
|
+ gyDataDO.setSecurityCognizance(this.getCellValue_String(row,43));//网络安全等级保护认定情况
|
|
|
+ gyDataDO.setComSecurityCognizance(this.getCellValue_String(row,44));//通信网络安全防护定级备案情况
|
|
|
+ gyDataDO.setIsKetSystem(this.getCellValue_String(row,45));//是否为关键信息基础设施
|
|
|
+ gyDataDO.setIsKeydataAss(this.getCellValue_String(row,46));//是否开展重要数据安全风险评估
|
|
|
+ gyDataDO.setAssessOrg(this.getCellValue_String(row,47));//评估机构
|
|
|
+ gyDataDO.setAssessBase(this.getCellValue_String(row,48));//评估依据的规范
|
|
|
+ gyDataDO.setAssessTime(this.getCellValue_String(row,49));//评估时间
|
|
|
+ gyDataDO.setDataAssessResult(this.getCellValue_String(row,50));//重要数据安全风险评估结论
|
|
|
+ gyDataDO.setDataDesc(this.getCellValue_String(row,51));//备注
|
|
|
+ log.info("===========12============="+i);
|
|
|
|
|
|
gyDataDO.setGyUnitId(gyUnitDO.getCreditCode());//关联填报企业
|
|
|
+
|
|
|
+ log.info("===========12.1============="+i+"===type=="+type);
|
|
|
if (type == 1) { //导入列表导入
|
|
|
+ log.info("===========13============="+i);
|
|
|
gyDataDO.setSendVerify("0");// 送审状态 0:未送审 1:已送审
|
|
|
gyDataDO.setDataStatus("0"); // 状态 0:待审核 1:删除 2:已上报 3:通过审核 4:驳回
|
|
|
gyDataDO.setDeleteStatus("0"); // 状态 0:正常 1:删除
|
|
|
+ log.info("===========14============="+i+"===deployType===="+deployType);
|
|
|
if("1".equals(deployType)){ //市级单独部署
|
|
|
gyDataDO.setAuditStage("1");
|
|
|
} else if("2".equals(deployType)){ //省级单独部署
|
|
@@ -433,6 +457,7 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
|
|
|
}
|
|
|
} else { //上报到省级导入
|
|
|
+ log.info("===========15============="+i);
|
|
|
gyDataDO.setSendVerify("1");// 送审状态 0:未送审 1:已送审
|
|
|
gyDataDO.setDataStatus("3"); // 状态 0:待审核 1:删除 2:已上报 3:通过审核 4:驳回
|
|
|
gyDataDO.setDeleteStatus("0"); // 状态 0:正常 1:删除
|
|
@@ -460,6 +485,7 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
params.put("gyUnitId", gyDataDO.getGyUnitId());// 单位
|
|
|
//判断数据是否已经上传过
|
|
|
List<GyDataImportDTO> listInfo = gyDataDao.listId(params);
|
|
|
+ log.info("============16=======listInfo======"+listInfo);
|
|
|
if (listInfo !=null && listInfo.size()>0) {
|
|
|
GyDataImportDTO gyDataImportDTO = listInfo.get(0);
|
|
|
if("3".equals(gyDataImportDTO.getDataStatus())){ //审核通过数据不导入
|
|
@@ -524,18 +550,49 @@ public class GyDataServiceImpl implements GyDataService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ //获取单元格的字符出信息
|
|
|
+ private String getCellValue_String(Row row,int i) {
|
|
|
+ // 获取单元格
|
|
|
+ Cell cell = row.getCell(i);
|
|
|
+ String result = null;
|
|
|
+
|
|
|
+ if (cell != null) {
|
|
|
+ // 根据 POI 3.17 版本的单元格类型常量处理
|
|
|
+ switch (cell.getCellType()) {
|
|
|
+ case Cell.CELL_TYPE_STRING:
|
|
|
+ result = cell.getStringCellValue();
|
|
|
+ break;
|
|
|
+ case Cell.CELL_TYPE_NUMERIC:
|
|
|
+ // 数值类型转换为字符串
|
|
|
+ result = String.valueOf(cell.getNumericCellValue());
|
|
|
+ // 处理小数点后为0的情况(如12345.0 -> 12345)
|
|
|
+ if (result.endsWith(".0")) {
|
|
|
+ result = result.substring(0, result.length() - 2);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case Cell.CELL_TYPE_BLANK:
|
|
|
+ result = "";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ // 处理公式、布尔等其他类型
|
|
|
+ result = String.valueOf(cell);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private GyUnitDO createGyUnitDO(GyUnitDO gyUnitDO, Row row){
|
|
|
- gyUnitDO.setReporterUnit(row.getCell(16).getStringCellValue());// 数据处理者名称
|
|
|
- gyUnitDO.setCreditCode(row.getCell(17).getStringCellValue());// 统一社会信用代码(机构代码 )
|
|
|
- gyUnitDO.setUnitProvince(row.getCell(18).getStringCellValue());//所在地区(省)
|
|
|
- gyUnitDO.setUnitCity(row.getCell(19).getStringCellValue());//所在地区(市)
|
|
|
- gyUnitDO.setUnitCharacter(row.getCell(20).getStringCellValue());//数据处理者性质
|
|
|
- gyUnitDO.setIndustryTypeOne(row.getCell(21).getStringCellValue());//所属行业
|
|
|
- gyUnitDO.setIndustryTypeTwo(row.getCell(22).getStringCellValue());//主营业务范围
|
|
|
- gyUnitDO.setDataSecurityMan(row.getCell(23).getStringCellValue());//数据安全负责人姓名
|
|
|
- gyUnitDO.setDataSecurityOffice(row.getCell(24).getStringCellValue());//数据安全负责人职务
|
|
|
- gyUnitDO.setDataSecurityWay(row.getCell(25).getStringCellValue());//数据安全负责人联系方式
|
|
|
+ gyUnitDO.setReporterUnit(this.getCellValue_String(row,16));// 数据处理者名称
|
|
|
+ gyUnitDO.setCreditCode(this.getCellValue_String(row,17));// 统一社会信用代码(机构代码 )
|
|
|
+ gyUnitDO.setUnitProvince(this.getCellValue_String(row,18));//所在地区(省)
|
|
|
+ gyUnitDO.setUnitCity(this.getCellValue_String(row,19));//所在地区(市)
|
|
|
+ gyUnitDO.setUnitCharacter(this.getCellValue_String(row,20));//数据处理者性质
|
|
|
+ gyUnitDO.setIndustryTypeOne(this.getCellValue_String(row,21));//所属行业
|
|
|
+ gyUnitDO.setIndustryTypeTwo(this.getCellValue_String(row,22));//主营业务范围
|
|
|
+ gyUnitDO.setDataSecurityMan(this.getCellValue_String(row,23));//数据安全负责人姓名
|
|
|
+ gyUnitDO.setDataSecurityOffice(this.getCellValue_String(row,24));//数据安全负责人职务
|
|
|
+ gyUnitDO.setDataSecurityWay(this.getCellValue_String(row,25));//数据安全负责人联系方式
|
|
|
return gyUnitDO;
|
|
|
}
|
|
|
|