Browse Source

Merge remote-tracking branch 'origin/dev_optimize' into dev_optimize

dev
zhaoqifeng 4 years ago
parent
commit
8d8977f177
  1. 53
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  2. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java
  3. 22
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java
  4. 4
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.40__member_huji.sql
  5. 0
      epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls

53
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -76,6 +76,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
@ -140,7 +141,7 @@ public class IcResiUserController implements ResultDataResolver {
* 模板枚举
*/
public enum IcUserTemplateEnums {
IC_RESI_IMPORT_TEMPLATE("excel/ic_resi_info_import_cid_for_easy_excel.xls", "居民信息导入模板.xls"),
IC_RESI_IMPORT_TEMPLATE("excel/ic_resi_import_template.xls", "居民信息导入模板.xls"),
IC_RESI_EXPORT_TEMPLATE("excel/ic_resi_info_cid_for_easy_excel.xlsx", "居民信息导出模板.xlsx");
private String pathInApp;
@ -162,18 +163,13 @@ public class IcResiUserController implements ResultDataResolver {
{
// 初始化上传目录
String home = System.getProperty("user.home");
Path importDir = Paths.get(home, "epmet_files", "ic_user_import");
if (Files.notExists(importDir)) {
try {
Files.createDirectories(importDir);
} catch (IOException e) {
log.error("创建数字赋能平台上传目录失败");
}
try {
IC_RESI_UPLOAD_DIR = com.epmet.commons.tools.utils.FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_user_import");
} catch (IOException e) {
log.error("初始化居民信息上传目录失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
IC_RESI_UPLOAD_DIR = importDir;
Path exportDir = Paths.get(home, "epmet_files", "ic_user_export");
Path exportDir = Paths.get(System.getProperty("user.home"), "epmet_files", "ic_user_export");
if (Files.notExists(exportDir)) {
try {
Files.createDirectories(exportDir);
@ -474,10 +470,10 @@ public class IcResiUserController implements ResultDataResolver {
// 三.异步执行导入
executorService.execute(() -> {
boolean isAllSuccess = false;
try {
List<FormItemResult> formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode());
icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR);
isAllSuccess = icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR);
} catch (Throwable e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【导入居民信息失败】导入失败:{}", errorMsg);
@ -493,8 +489,13 @@ public class IcResiUserController implements ResultDataResolver {
icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, resultDesc, null);
} finally {
try {
// 都导入成功了没问题,才删除
if (importTempFileSavePath != null){
Files.delete(importTempFileSavePath);
if (isAllSuccess) {
Files.delete(importTempFileSavePath);
} else {
log.error("【导入居民信息】未完全成功,上传文件:{}", importTempFileSavePath);
}
}
} catch (IOException e) {
log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e));
@ -606,28 +607,30 @@ public class IcResiUserController implements ResultDataResolver {
/**
* 下载ic居民信息导入excel模板
* @param loginUserInfo
* @return
*/
@PostMapping("import/download-template")
public ResponseEntity<byte[]> downloadIcResiDownloadTemplate(@LoginUser TokenDto loginUserInfo) {
String customerId = loginUserInfo.getCustomerId();
public void downloadIcResiDownloadTemplate(HttpServletResponse response) {
InputStream is = null;
ServletOutputStream os = null;
try {
File icResiImportTemplateFile = getIcResiTemplateFile(customerId, IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE);
os = response.getOutputStream();
is = this.getClass().getClassLoader().getResourceAsStream(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getPathInApp());
HttpHeaders headers = new HttpHeaders();
headers.add("Access-Control-Expose-Headers", "Content-Disposition");
headers.add("content-Type", "application/vnd.ms-excel");
headers.add("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getTemplateName(), "UTF-8"));
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getTemplateName(), "UTF-8"));
return new ResponseEntity<>(FileUtil.readBytes(icResiImportTemplateFile), headers, HttpStatus.OK);
IOUtils.copy(is, os);
} catch (Exception e) {
String errorStackTrace = ExceptionUtils.getErrorStackTrace(e);
log.error("下载IC居民信息导入模板失败:{}", errorStackTrace);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下载IC居民信息导入模板失败");
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java

@ -13,7 +13,7 @@ import java.util.List;
*/
public interface IcResiUserImportService {
void importIcResiInfoFromExcel(String importTaskId, List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response, Path importTempPath);
boolean importIcResiInfoFromExcel(String importTaskId, List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response, Path importTempPath);
/**
* 创建导入任务

22
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

@ -13,7 +13,6 @@ import com.epmet.bean.ResiImportChangedData;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.constant.ThreadLocalConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -24,7 +23,6 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.Result;
@ -211,9 +209,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
* @param formItemList item列表
* @param excelPathName excel缓存路径
* @param response 响应对象
* @return
*/
@Override
public void importIcResiInfoFromExcel(String importTaskId, List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) {
public boolean importIcResiInfoFromExcel(String importTaskId, List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) {
boolean isAllSuccess = false;
String app = EpmetRequestHolder.getHeader(AppClientConstant.APP);
String client = EpmetRequestHolder.getHeader(AppClientConstant.CLIENT);
@ -276,6 +276,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,null, resultDescFilePath);
} else {
isAllSuccess = true;
finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,null, null);
}
@ -298,6 +299,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
resiCategoryColumnNameAndLabel.remove();
itemIdAndOptionsCache.invalidateAll();
}
return isAllSuccess;
}
/**
@ -536,10 +539,18 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
private void specifiedCheck(LinkedHashMap<String, String> columnAndValues) {
String idCard = columnAndValues.get("ID_CARD");
String mobile = columnAndValues.get("MOBILE");
String name = columnAndValues.get("NAME");
List<String> errors = new ArrayList<>();
if (StringUtils.isNotBlank(idCard) && idCard.length() > 18) {
if (StringUtils.isBlank(idCard)) {
log.debug("【居民信息导入】specifiedCheck身份证号为空的:{},{}", mobile, name);
String errorMsg = "身份证号不能为空";
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg);
}
if (idCard.length() > 18) {
// 身份证号超长了哦,不可以的
errors.add("身份证号过长");
}
@ -570,9 +581,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
LinkedHashMap<String, String> columnAndValues = new LinkedHashMap<>();
String loginUserApp = EpmetRequestHolder.getHeader(AppClientConstant.APP);
String loginUserClient = EpmetRequestHolder.getHeader(AppClientConstant.CLIENT);
String loginUserId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID.toLowerCase());
String loginUserCustomerId = EpmetRequestHolder.getHeader(AppClientConstant.CUSTOMER_ID.toLowerCase());
// 遍历每一行,将行内容转化为

4
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.40__member_huji.sql

@ -1,2 +1,6 @@
alter table ic_resi_member add COLUMN DOMICILE_PLACE VARCHAR(128) comment '户籍所在地' AFTER YMJZ;
alter table ic_resi_member add COLUMN WORK_PLACE VARCHAR(128) comment '单位或学校' AFTER DOMICILE_PLACE;
-- 居民信息表添加租户列
alter table ic_resi_user add column IS_TENANT char(1) comment '是否租户【是:1 否:0】' after IS_SPECIAL;
update ic_resi_user set ic_resi_user.IS_TENANT='0' where ic_resi_user.IS_TENANT is null or ic_resi_user.IS_TENANT='';

0
epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_import_cid_for_easy_excel.xls → epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls

Loading…
Cancel
Save