Browse Source

导入重名校验

feature/teamB_zz_wgh
sunyuchao 3 years ago
parent
commit
d09f7eace0
  1. 34
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java
  2. 34
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java
  3. 37
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java
  4. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcCityManagementServiceImpl.java
  5. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java
  6. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java

34
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java

@ -2,10 +2,12 @@ package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.listener.ReadListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dao.IcCityManagementDao;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.entity.IcCityManagementEntity; import com.epmet.entity.IcCityManagementEntity;
import com.epmet.excel.IcCityManagementExcel; import com.epmet.excel.IcCityManagementExcel;
@ -13,9 +15,11 @@ import com.epmet.service.CoverageService;
import com.epmet.service.impl.IcCityManagementServiceImpl; import com.epmet.service.impl.IcCityManagementServiceImpl;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -42,14 +46,19 @@ public class IcCityManagementExcelImportListener implements ReadListener<IcCityM
private List<IcCityManagementExcel.RowRemarkMessage> otherRows = new ArrayList<>(); private List<IcCityManagementExcel.RowRemarkMessage> otherRows = new ArrayList<>();
private IcCityManagementServiceImpl IcCityManagementServiceImpl; private IcCityManagementServiceImpl IcCityManagementServiceImpl;
private CoverageService coverageService; private CoverageService coverageService;
private IcCityManagementDao icCityManagementDao;
//存放当前组织下已存在的场所信息
private Map<String, String> existMap = null;
public IcCityManagementExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcCityManagementServiceImpl IcCityManagementServiceImpl, CoverageService coverageService) { public IcCityManagementExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids,
IcCityManagementServiceImpl IcCityManagementServiceImpl, CoverageService coverageService, IcCityManagementDao icCityManagementDao) {
this.currentUserId = currentUserId; this.currentUserId = currentUserId;
this.currentCustomerId = currentCustomerId; this.currentCustomerId = currentCustomerId;
this.currentAgencyId = currentAgencyId; this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids; this.currentAgencyPids = currentAgencyPids;
this.IcCityManagementServiceImpl = IcCityManagementServiceImpl; this.IcCityManagementServiceImpl = IcCityManagementServiceImpl;
this.coverageService = coverageService; this.coverageService = coverageService;
this.icCityManagementDao = icCityManagementDao;
} }
@Override @Override
@ -59,6 +68,15 @@ public class IcCityManagementExcelImportListener implements ReadListener<IcCityM
// 先校验数据 // 先校验数据
ValidatorUtils.validateEntity(data); ValidatorUtils.validateEntity(data);
existMap = null == existMap ? getExistMap(currentAgencyId) : existMap;
ValidatorUtils.validateEntity(data);
if (StringUtils.isNotBlank(existMap.get(data.getName()))) {
IcCityManagementExcel.RowRemarkMessage errorRow = ConvertUtils.sourceToTarget(data, IcCityManagementExcel.RowRemarkMessage.class);
errorRow.setErrorInfo("数据库存在当前场所数据");
errorRows.add(errorRow);
return;
}
// 去除前后空格 // 去除前后空格
if (StringUtils.isNotBlank(data.getName())) { if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim()); data.setName(data.getName().trim());
@ -107,6 +125,20 @@ public class IcCityManagementExcelImportListener implements ReadListener<IcCityM
execPersist(); execPersist();
} }
/**
* 查询当前组织下已存在场所数据
*/
public Map<String, String> getExistMap(String agencyId) {
LambdaQueryWrapper<IcCityManagementEntity> tWrapper = new LambdaQueryWrapper<>();
tWrapper.eq(IcCityManagementEntity::getAgencyId, agencyId);
List<IcCityManagementEntity> entityList = icCityManagementDao.selectList(tWrapper);
Map<String, String> existMap = new HashMap<>(16);
if (CollectionUtils.isNotEmpty(entityList)) {
existMap = entityList.stream().collect(Collectors.toMap(IcCityManagementEntity::getName, IcCityManagementEntity::getId, (v1, v2) -> v1));
}
return existMap;
}
/** /**
* 执行持久化 * 执行持久化
*/ */

34
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java

@ -2,10 +2,12 @@ package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.listener.ReadListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dao.IcPublicServiceDao;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.entity.IcPublicServiceEntity; import com.epmet.entity.IcPublicServiceEntity;
import com.epmet.excel.IcPublicServiceExcel; import com.epmet.excel.IcPublicServiceExcel;
@ -13,9 +15,11 @@ import com.epmet.service.CoverageService;
import com.epmet.service.impl.IcPublicServiceServiceImpl; import com.epmet.service.impl.IcPublicServiceServiceImpl;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -42,14 +46,19 @@ public class IcPublicServiceExcelImportListener implements ReadListener<IcPublic
private List<IcPublicServiceExcel.RowRemarkMessage> otherRows = new ArrayList<>(); private List<IcPublicServiceExcel.RowRemarkMessage> otherRows = new ArrayList<>();
private IcPublicServiceServiceImpl IcPublicServiceServiceImpl; private IcPublicServiceServiceImpl IcPublicServiceServiceImpl;
private CoverageService coverageService; private CoverageService coverageService;
private IcPublicServiceDao icPublicServiceDao;
//存放当前组织下已存在的场所信息
private Map<String, String> existMap = null;
public IcPublicServiceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcPublicServiceServiceImpl IcPublicServiceServiceImpl, CoverageService coverageService) { public IcPublicServiceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids,
IcPublicServiceServiceImpl IcPublicServiceServiceImpl, CoverageService coverageService, IcPublicServiceDao icPublicServiceDao) {
this.currentUserId = currentUserId; this.currentUserId = currentUserId;
this.currentCustomerId = currentCustomerId; this.currentCustomerId = currentCustomerId;
this.currentAgencyId = currentAgencyId; this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids; this.currentAgencyPids = currentAgencyPids;
this.IcPublicServiceServiceImpl = IcPublicServiceServiceImpl; this.IcPublicServiceServiceImpl = IcPublicServiceServiceImpl;
this.coverageService = coverageService; this.coverageService = coverageService;
this.icPublicServiceDao = icPublicServiceDao;
} }
@Override @Override
@ -59,6 +68,15 @@ public class IcPublicServiceExcelImportListener implements ReadListener<IcPublic
// 先校验数据 // 先校验数据
ValidatorUtils.validateEntity(data); ValidatorUtils.validateEntity(data);
existMap = null == existMap ? getExistMap(currentAgencyId) : existMap;
ValidatorUtils.validateEntity(data);
if (StringUtils.isNotBlank(existMap.get(data.getName()))) {
IcPublicServiceExcel.RowRemarkMessage errorRow = ConvertUtils.sourceToTarget(data, IcPublicServiceExcel.RowRemarkMessage.class);
errorRow.setErrorInfo("数据库存在当前场所数据");
errorRows.add(errorRow);
return;
}
// 去除前后空格 // 去除前后空格
if (StringUtils.isNotBlank(data.getName())) { if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim()); data.setName(data.getName().trim());
@ -107,6 +125,20 @@ public class IcPublicServiceExcelImportListener implements ReadListener<IcPublic
execPersist(); execPersist();
} }
/**
* 查询当前组织下已存在场所数据
*/
public Map<String, String> getExistMap(String agencyId) {
LambdaQueryWrapper<IcPublicServiceEntity> tWrapper = new LambdaQueryWrapper<>();
tWrapper.eq(IcPublicServiceEntity::getAgencyId, agencyId);
List<IcPublicServiceEntity> entityList = icPublicServiceDao.selectList(tWrapper);
Map<String, String> existMap = new HashMap<>(16);
if (CollectionUtils.isNotEmpty(entityList)) {
existMap = entityList.stream().collect(Collectors.toMap(IcPublicServiceEntity::getName, IcPublicServiceEntity::getId, (v1, v2) -> v1));
}
return existMap;
}
/** /**
* 执行持久化 * 执行持久化
*/ */

37
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java

@ -2,22 +2,24 @@ package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.listener.ReadListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dao.IcSuperiorResourceDao;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.dto.result.IcSuperiorResourceListResultDTO;
import com.epmet.entity.IcSuperiorResourceEntity; import com.epmet.entity.IcSuperiorResourceEntity;
import com.epmet.excel.IcSuperiorResourceExcel; import com.epmet.excel.IcSuperiorResourceExcel;
import com.epmet.service.CoverageService; import com.epmet.service.CoverageService;
import com.epmet.service.impl.IcSuperiorResourceServiceImpl; import com.epmet.service.impl.IcSuperiorResourceServiceImpl;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -44,14 +46,20 @@ public class IcSuperiorResourceExcelImportListener implements ReadListener<IcSup
private List<IcSuperiorResourceExcel.RowRemarkMessage> otherRows = new ArrayList<>(); private List<IcSuperiorResourceExcel.RowRemarkMessage> otherRows = new ArrayList<>();
private IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl; private IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl;
private CoverageService coverageService; private CoverageService coverageService;
private IcSuperiorResourceDao icSuperiorResourceDao;
//存放当前组织下已存在的场所信息
private Map<String, String> existMap = null;
public IcSuperiorResourceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl, CoverageService coverageService) {
public IcSuperiorResourceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids,
IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl, CoverageService coverageService, IcSuperiorResourceDao icSuperiorResourceDao) {
this.currentUserId = currentUserId; this.currentUserId = currentUserId;
this.currentCustomerId = currentCustomerId; this.currentCustomerId = currentCustomerId;
this.currentAgencyId = currentAgencyId; this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids; this.currentAgencyPids = currentAgencyPids;
this.icSuperiorResourceServiceImpl = icSuperiorResourceServiceImpl; this.icSuperiorResourceServiceImpl = icSuperiorResourceServiceImpl;
this.coverageService = coverageService; this.coverageService = coverageService;
this.icSuperiorResourceDao = icSuperiorResourceDao;
} }
@Override @Override
@ -61,6 +69,15 @@ public class IcSuperiorResourceExcelImportListener implements ReadListener<IcSup
// 先校验数据 // 先校验数据
ValidatorUtils.validateEntity(data); ValidatorUtils.validateEntity(data);
existMap = null == existMap ? getExistMap(currentAgencyId) : existMap;
ValidatorUtils.validateEntity(data);
if (StringUtils.isNotBlank(existMap.get(data.getName()))) {
IcSuperiorResourceExcel.RowRemarkMessage errorRow = ConvertUtils.sourceToTarget(data, IcSuperiorResourceExcel.RowRemarkMessage.class);
errorRow.setErrorInfo("数据库存在当前场所数据");
errorRows.add(errorRow);
return;
}
// 去除前后空格 // 去除前后空格
if (StringUtils.isNotBlank(data.getName())) { if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim()); data.setName(data.getName().trim());
@ -109,6 +126,20 @@ public class IcSuperiorResourceExcelImportListener implements ReadListener<IcSup
execPersist(); execPersist();
} }
/**
* 查询当前组织下已存在场所数据
*/
public Map<String, String> getExistMap(String agencyId) {
LambdaQueryWrapper<IcSuperiorResourceEntity> tWrapper = new LambdaQueryWrapper<>();
tWrapper.eq(IcSuperiorResourceEntity::getAgencyId, agencyId);
List<IcSuperiorResourceEntity> entityList = icSuperiorResourceDao.selectList(tWrapper);
Map<String, String> existMap = new HashMap<>(16);
if (CollectionUtils.isNotEmpty(entityList)) {
existMap = entityList.stream().collect(Collectors.toMap(IcSuperiorResourceEntity::getName, IcSuperiorResourceEntity::getId, (v1, v2) -> v1));
}
return existMap;
}
/** /**
* 执行持久化 * 执行持久化
*/ */

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcCityManagementServiceImpl.java

@ -74,6 +74,8 @@ public class IcCityManagementServiceImpl extends BaseServiceImpl<IcCityManagemen
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired @Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private IcCityManagementDao icCityManagementDao;
@Override @Override
@ -209,7 +211,7 @@ public class IcCityManagementServiceImpl extends BaseServiceImpl<IcCityManagemen
String agencyId = staffInfo.getAgencyId(); String agencyId = staffInfo.getAgencyId();
String agencyIdPath = StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId(); String agencyIdPath = StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId();
IcCityManagementExcelImportListener listener = new IcCityManagementExcelImportListener(userId, customerId, agencyId, agencyIdPath, this, coverageService); IcCityManagementExcelImportListener listener = new IcCityManagementExcelImportListener(userId, customerId, agencyId, agencyIdPath, this, coverageService, icCityManagementDao);
EasyExcel.read(filePath.toFile(), IcCityManagementExcel.class, listener).headRowNumber(1).sheet(0).doRead(); EasyExcel.read(filePath.toFile(), IcCityManagementExcel.class, listener).headRowNumber(1).sheet(0).doRead();

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java

@ -19,6 +19,7 @@ import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants; import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcPublicServiceDao; import com.epmet.dao.IcPublicServiceDao;
import com.epmet.dao.IcSuperiorResourceDao;
import com.epmet.dto.IcPublicServiceDTO; import com.epmet.dto.IcPublicServiceDTO;
import com.epmet.dto.form.IcPublicServiceAddEditFormDTO; import com.epmet.dto.form.IcPublicServiceAddEditFormDTO;
import com.epmet.dto.form.IcPublicServiceListFormDTO; import com.epmet.dto.form.IcPublicServiceListFormDTO;
@ -74,6 +75,8 @@ public class IcPublicServiceServiceImpl extends BaseServiceImpl<IcPublicServiceD
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired @Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private IcPublicServiceDao icPublicServiceDao;
@Override @Override
@ -209,7 +212,7 @@ public class IcPublicServiceServiceImpl extends BaseServiceImpl<IcPublicServiceD
String agencyId = staffInfo.getAgencyId(); String agencyId = staffInfo.getAgencyId();
String agencyIdPath = StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId(); String agencyIdPath = StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId();
IcPublicServiceExcelImportListener listener = new IcPublicServiceExcelImportListener(userId, customerId, agencyId, agencyIdPath, this, coverageService); IcPublicServiceExcelImportListener listener = new IcPublicServiceExcelImportListener(userId, customerId, agencyId, agencyIdPath, this, coverageService, icPublicServiceDao);
EasyExcel.read(filePath.toFile(), IcPublicServiceExcel.class, listener).headRowNumber(1).sheet(0).doRead(); EasyExcel.read(filePath.toFile(), IcPublicServiceExcel.class, listener).headRowNumber(1).sheet(0).doRead();

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java

@ -74,6 +74,8 @@ public class IcSuperiorResourceServiceImpl extends BaseServiceImpl<IcSuperiorRes
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired @Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private IcSuperiorResourceDao icSuperiorResourceDao;
@Override @Override
@ -209,7 +211,7 @@ public class IcSuperiorResourceServiceImpl extends BaseServiceImpl<IcSuperiorRes
String agencyId = staffInfo.getAgencyId(); String agencyId = staffInfo.getAgencyId();
String agencyIdPath = StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId(); String agencyIdPath = StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId();
IcSuperiorResourceExcelImportListener listener = new IcSuperiorResourceExcelImportListener(userId, customerId, agencyId, agencyIdPath, this, coverageService); IcSuperiorResourceExcelImportListener listener = new IcSuperiorResourceExcelImportListener(userId, customerId, agencyId, agencyIdPath, this, coverageService, icSuperiorResourceDao);
EasyExcel.read(filePath.toFile(), IcSuperiorResourceExcel.class, listener).headRowNumber(1).sheet(0).doRead(); EasyExcel.read(filePath.toFile(), IcSuperiorResourceExcel.class, listener).headRowNumber(1).sheet(0).doRead();

Loading…
Cancel
Save