Browse Source

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

master
jianjun 3 years ago
parent
commit
c39b0f56eb
  1. 2
      epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml
  2. 2
      epmet-auth/deploy/docker-compose-prod.yml
  3. 2
      epmet-commons/epmet-commons-extapp-auth/pom.xml
  4. 2
      epmet-commons/epmet-commons-tools/pom.xml
  5. 9
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/AsyncConfig.java
  6. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  7. 14
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  8. 63
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java
  9. 93
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/EasyPoiExcelExportStylerImpl.java
  10. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/ExportMultiView.java
  11. 46
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/FreezeAndFilter.java
  12. 2
      epmet-gateway/deploy/docker-compose-prod.yml
  13. 2
      epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml
  14. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  15. 2
      epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml
  16. 2
      epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml
  17. 2
      epmet-module/epmet-activiti/epmet-activiti-server/deploy/docker-compose-prod.yml
  18. 4
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java
  19. 4
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java
  20. 2
      epmet-module/epmet-common-service/common-service-server/deploy/docker-compose-prod.yml
  21. 2
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java
  22. 2
      epmet-module/epmet-ext/epmet-ext-server/deploy/docker-compose-prod.yml
  23. 2
      epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-prod.yml
  24. 2
      epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-prod.yml
  25. 2
      epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-prod.yml
  26. 2
      epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-prod.yml
  27. 2
      epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-prod.yml
  28. 3
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java
  29. 2
      epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-prod.yml
  30. 2
      epmet-module/gov-access/gov-access-server/deploy/docker-compose-prod.yml
  31. 2
      epmet-module/gov-grid/gov-grid-server/deploy/docker-compose-prod.yml
  32. 2
      epmet-module/gov-issue/gov-issue-server/deploy/docker-compose-prod.yml
  33. 2
      epmet-module/gov-mine/gov-mine-server/deploy/docker-compose-prod.yml
  34. 2
      epmet-module/gov-org/gov-org-server/deploy/docker-compose-prod.yml
  35. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java
  36. 1
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java
  37. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java
  38. 35
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  39. 7
      epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml
  40. 2
      epmet-module/gov-project/gov-project-server/deploy/docker-compose-prod.yml
  41. 2
      epmet-module/gov-voice/gov-voice-server/deploy/docker-compose-prod.yml
  42. 2
      epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml
  43. 3
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/OpenDataApplication.java
  44. 33
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/GriderOnlineNumDao.java
  45. 61
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/GriderOnlineNumEntity.java
  46. 38
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/GriderOnlineNumService.java
  47. 69
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GriderOnlineNumServiceImpl.java
  48. 71
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/task/ExtractBizDataToOpenData.java
  49. 13
      epmet-module/open-data-worker/open-data-worker-server/src/main/resources/db/migration/V0.0.1__add_grider_online_num.sql
  50. 6
      epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/GriderOnlineNumDao.xml
  51. 2
      epmet-module/oper-access/oper-access-server/deploy/docker-compose-prod.yml
  52. 2
      epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-prod.yml
  53. 2
      epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-prod.yml
  54. 2
      epmet-module/resi-group/resi-group-server/deploy/docker-compose-prod.yml
  55. 2
      epmet-module/resi-guide/resi-guide-server/deploy/docker-compose-prod.yml
  56. 2
      epmet-module/resi-hall/resi-hall-server/deploy/docker-compose-prod.yml
  57. 2
      epmet-module/resi-home/resi-home-server/deploy/docker-compose-prod.yml
  58. 2
      epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-prod.yml
  59. 2
      epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-prod.yml
  60. 2
      epmet-module/resi-voice/resi-voice-server/deploy/docker-compose-prod.yml
  61. 2
      epmet-openapi/epmet-openapi-scan/deploy/docker-compose-prod.yml
  62. 14
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcEpidemicSpecialAttentionDTO.java
  63. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcTripReportRecordDTO.java
  64. 119
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVaccineDTO.java
  65. 82
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVaccineRelationDTO.java
  66. 1
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/AddIcNatFormDTO.java
  67. 1
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java
  68. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java
  69. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java
  70. 14
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SendNoticeFormDTO.java
  71. 67
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VaccineListFormDTO.java
  72. 27
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcVaccineListCommonExcelResultDTO.java
  73. 89
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcVaccineListResultDTO.java
  74. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyNatListResultDTO.java
  75. 2
      epmet-user/epmet-user-server/deploy/docker-compose-prod.yml
  76. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java
  77. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java
  78. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java
  79. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNoticeController.java
  80. 64
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  81. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java
  82. 230
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java
  83. 37
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineRelationController.java
  84. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java
  85. 16
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiVaccineDao.java
  86. 71
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java
  87. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineRelationDao.java
  88. 23
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineEntity.java
  89. 55
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineRelationEntity.java
  90. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java
  91. 65
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcVaccineImportExcelData.java
  92. 136
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcVaccineExcelImportListener.java
  93. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java
  94. 89
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiVaccineService.java
  95. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcTripReportRecordService.java
  96. 78
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccineRelationService.java
  97. 56
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccineService.java
  98. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcEpidemicSpecialAttentionServiceImpl.java
  99. 22
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java
  100. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNoticeServiceImpl.java

2
epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-admin-server:
container_name: epmet-admin-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-admin-server:0.3.32
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-admin-server:version_placeholder
ports:
- "8082:8082"
network_mode: host # 使用现有网络

2
epmet-auth/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-auth-server:
container_name: epmet-auth-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-auth:0.3.98
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-auth:version_placeholder
ports:
- "8081:8081"
network_mode: host # 使用现有网络

2
epmet-commons/epmet-commons-extapp-auth/pom.xml

@ -18,7 +18,7 @@
<commons.fileupload.version>1.3.3</commons.fileupload.version>
<commons.io.version>2.6</commons.io.version>
<hutool.version>4.6.1</hutool.version>
<easypoi.version>4.4.0</easypoi.version>
<easypoi.version>4.3.0</easypoi.version>
<joda.time.version>2.9.9</joda.time.version>
<fastjson.version>1.2.79</fastjson.version>
<gson.version>2.8.6</gson.version>

2
epmet-commons/epmet-commons-tools/pom.xml

@ -18,7 +18,7 @@
<commons.fileupload.version>1.3.3</commons.fileupload.version>
<commons.io.version>2.6</commons.io.version>
<hutool.version>4.6.1</hutool.version>
<easypoi.version>4.4.0</easypoi.version>
<easypoi.version>4.3.0</easypoi.version>
<joda.time.version>2.9.9</joda.time.version>
<fastjson.version>1.2.79</fastjson.version>
<gson.version>2.8.6</gson.version>

9
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/AsyncConfig.java

@ -1,5 +1,6 @@
package com.epmet.commons.tools.config;
import com.alibaba.ttl.TtlRunnable;
import com.alibaba.ttl.threadpool.TtlExecutors;
import org.slf4j.MDC;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@ -64,8 +65,9 @@ public class AsyncConfig {
executor.setKeepAliveSeconds(keepAliveSeconds);
// 设置装饰器,使用MDC将runnable进行装饰,实现日志上下文传递到子线程
executor.setTaskDecorator((Runnable r) -> {
// 1.mdc包装,日志追踪
Map<String, String> copyOfContextMap = MDC.getCopyOfContextMap();
return () -> {
Runnable rr = () -> {
try {
if (copyOfContextMap != null && copyOfContextMap.size() > 0) {
MDC.setContextMap(copyOfContextMap);
@ -75,6 +77,9 @@ public class AsyncConfig {
MDC.clear();
}
};
// 2.ttl包装,异步线程上下文透传
return TtlRunnable.get(rr);
});
executor.initialize();
return executor;
@ -83,7 +88,7 @@ public class AsyncConfig {
@Bean
public ExecutorService executorService() {
ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor();
return TtlExecutors.getTtlExecutorService(executor.getThreadPoolExecutor());
return executor.getThreadPoolExecutor();
}
/**

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -253,6 +253,7 @@ public enum EpmetErrorCode {
NEIGHBORHOOD_DEL_FAILED(8922,""),
IC_NAT_IDCARD_NATTIME(8923,"已存在相同记录"),
IC_NAT(8924,"平台已存在记录,请去修改原有记录"),
RESI_IC_NAT(8925,"已存在记录,请联系社区工作人员修改"),
//通用错误码 start

14
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -10,6 +10,8 @@ package com.epmet.commons.tools.redis;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
@ -763,4 +765,16 @@ public class RedisKeys {
public static String getNextAreaCodeKey(String areaCode) {
return rootPrefix.concat("areaCode:parentCode:").concat(areaCode);
}
/**
* desc:获取分布式锁key
* @param methodName
* @return
*/
public static String getLockByMethodName(String methodName) {
if (StringUtils.isBlank(methodName)){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"参数错误");
}
return rootPrefix.concat("lock:").concat(methodName);
}
}

63
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java

@ -11,12 +11,13 @@ package com.epmet.commons.tools.utils;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.epmet.commons.tools.utils.excel.ExportMultiView;
import com.epmet.commons.tools.utils.poi.excel.EasyPoiExcelExportStylerImpl;
import com.epmet.commons.tools.utils.poi.excel.ExportMultiView;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
@ -30,6 +31,7 @@ import java.util.*;
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Slf4j
public class ExcelUtils {
/**
@ -47,15 +49,16 @@ public class ExcelUtils {
fileName = DateUtils.format(new Date());
}
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), pojoClass, list);
ExportParams exportParams = new ExportParams();
//设置导出的样式
exportParams.setStyle(EasyPoiExcelExportStylerImpl.class);
//设置sheet名称
exportParams.setSheetName("Sheet1");
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
Sheet sheet1 = workbook.getSheetAt(0);
sheet1.setDefaultColumnWidth(50*256);
sheet1.setDefaultRowHeight((short)(2*256));
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");
ServletOutputStream out = response.getOutputStream();
//sheet1.setDefaultRowHeight((short)(2*256));
ServletOutputStream out = ExcelUtils.getOutputStreamForExcel(fileName,response);
workbook.write(out);
out.flush();
out.close();
@ -81,47 +84,9 @@ public class ExcelUtils {
exportExcel(response, fileName, targetList, targetClass);
}
public static void exportExcelToTargetDisposeAll(HttpServletResponse response, String fileName, Collection<?> sourceList,
Class<?> targetClass) throws Exception {
if (!CollectionUtils.isEmpty(sourceList)){
List<Object> targetList = new ArrayList<>(sourceList.size());
for(Object source : sourceList){
Object target = targetClass.newInstance();
BeanUtils.copyProperties(source, target);
targetList.add(target);
}
exportExcelDispose(response, fileName, targetList, targetClass);
}else {
exportExcelDispose(response, fileName, new ArrayList<>(), targetClass);
}
}
public static void exportExcelDispose(HttpServletResponse response, String fileName, Collection<?> list,
Class<?> pojoClass) throws IOException {
if(StringUtils.isBlank(fileName)){
//当前日期
fileName = DateUtils.format(new Date());
}
ExportParams params = new ExportParams(fileName,fileName);
Workbook workbook = ExcelExportUtil.exportExcel(params, pojoClass, list);
Sheet sheet1 = workbook.getSheetAt(0);
sheet1.setDefaultColumnWidth(50*256);
sheet1.setDefaultRowHeight((short)(2*256));
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
fileName = fileName + ".xls";
response.setHeader("Content-Disposition",
"attachment;filename=" +fileName);
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
public static ServletOutputStream getOutputStreamForExcel(String fileName, HttpServletResponse response) throws Exception {
public static ServletOutputStream getOutputStreamForExcel(String fileName, HttpServletResponse response) throws IOException {
fileName = URLEncoder.encode(fileName, "UTF-8");
if (!fileName.endsWith(".xls") ||!fileName.endsWith(".xlsx")){
if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")){
fileName = fileName + ".xlsx";
}
response.setContentType("application/vnd.ms-excel");

93
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/EasyPoiExcelExportStylerImpl.java

@ -0,0 +1,93 @@
package com.epmet.commons.tools.utils.poi.excel;
import cn.afterturn.easypoi.excel.export.styler.AbstractExcelExportStyler;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import org.apache.poi.ss.usermodel.*;
/**
* desc:easypoi自定义表头颜色
*
* @author: LiuJanJun
* @date: 2022/4/8 4:39 下午
* @version: 1.0
*/
public class EasyPoiExcelExportStylerImpl extends AbstractExcelExportStyler
implements IExcelExportStyler {
public EasyPoiExcelExportStylerImpl(Workbook workbook) {
super.createStyles(workbook);
}
@Override
public CellStyle getTitleStyle(short color) {
CellStyle titleStyle = workbook.createCellStyle();
Font font = this.workbook.createFont();
// 字体加粗
font.setBold(true);
font.setFontHeightInPoints((short) 12);
titleStyle.setFont(font);
//居中
titleStyle.setAlignment(HorizontalAlignment.CENTER);
//垂直居中
titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//设置颜色
titleStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
titleStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
titleStyle.setBorderRight(BorderStyle.THIN);
titleStyle.setBorderLeft(BorderStyle.THIN);
titleStyle.setBorderBottom(BorderStyle.THIN);
titleStyle.setBorderTop(BorderStyle.THIN);
titleStyle.setWrapText(true);
return titleStyle;
}
@Override
public CellStyle getHeaderStyle(short color) {
CellStyle titleStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setFontHeightInPoints((short) 12);
titleStyle.setFont(font);
titleStyle.setAlignment(HorizontalAlignment.CENTER);
titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);
return null;
}
/**
* desc:隔行样式
* @param workbook
* @param isWarp
* @return
*/
@Override
public CellStyle stringNoneStyle(Workbook workbook, boolean isWarp) {
CellStyle style = workbook.createCellStyle();
//style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
style.setDataFormat(STRING_FORMAT);
if (isWarp) {
style.setWrapText(true);
}
return style;
}
/**
* desc:隔行样式
* @param workbook
* @param isWarp
* @return
*/
@Override
public CellStyle stringSeptailStyle(Workbook workbook, boolean isWarp) {
CellStyle style = workbook.createCellStyle();
//style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
style.setDataFormat(STRING_FORMAT);
if (isWarp) {
style.setWrapText(true);
}
return style;
}
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/excel/ExportMultiView.java → epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/ExportMultiView.java

@ -1,4 +1,4 @@
package com.epmet.commons.tools.utils.excel;
package com.epmet.commons.tools.utils.poi.excel;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import lombok.AllArgsConstructor;

46
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/FreezeAndFilter.java

@ -0,0 +1,46 @@
package com.epmet.commons.tools.utils.poi.excel;
/**
* desc:easyExcel 冻结标题
*
* @author: LiuJanJun
* @date: 2022/4/11 10:27 上午
* @version: 1.0
*/
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
public class FreezeAndFilter implements SheetWriteHandler {
public int colSplit = 0, rowSplit = 1, leftmostColumn = 0, topRow = 1;
public String autoFilterRange = "1:1";
private boolean isFilter;
public FreezeAndFilter() {
}
public FreezeAndFilter(boolean isFilter) {
this.isFilter = isFilter;
}
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Sheet sheet = writeSheetHolder.getSheet();
sheet.createFreezePane(colSplit, rowSplit, leftmostColumn, topRow);
//不让他筛选
if (isFilter){
sheet.setAutoFilter(CellRangeAddress.valueOf(autoFilterRange));
}
}
}

2
epmet-gateway/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-gateway-server:
container_name: epmet-gateway-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-gateway:0.3.71
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-gateway:version_placeholder
ports:
- "8080:8080"
network_mode: host # 使用现有网络

2
epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
data-aggregator-server:
container_name: data-aggregator-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-aggregator-server:0.3.92
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-aggregator-server:version_placeholder
ports:
- "8114:8114"
network_mode: host # 使用现有网络

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -11,7 +11,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.excel.ExportMultiView;
import com.epmet.commons.tools.utils.poi.excel.ExportMultiView;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;

2
epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
data-report-server:
container_name: data-report-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-report-server:0.3.210
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-report-server:version_placeholder
ports:
- "8108:8108"
network_mode: host # 使用现有网络

2
epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
data-statistical-server:
container_name: data-statistical-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-statistical-server:0.3.345
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-statistical-server:version_placeholder
ports:
- "8108:8108"
network_mode: host # 使用现有网络

2
epmet-module/epmet-activiti/epmet-activiti-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-activiti-server:
container_name: epmet-activiti-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-activiti-server:0.3.1
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-activiti-server:version_placeholder
ports:
- "8086:8086"
network_mode: host # 使用现有网络

4
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java

@ -22,6 +22,10 @@ public interface ImportTaskConstants {
* 核酸检测
*/
String BIZ_TYPE_IC_NAT = "ic_nat";
/**
* 疫苗接种
*/
String BIZ_TYPE_IC_VACCINE = "ic_vaccine";
/**
* 行程上报
*/

4
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java

@ -22,7 +22,7 @@ import java.util.Map;
* @date 2020/6/4 10:28
*/
@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallbackFactory = EpmetCommonServiceOpenFeignClientFallbackFactory.class)
//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallbackFactory = EpmetCommonServiceOpenFeignClientFallbackFactory.class, url = "http://192.168.1.132:8103")
//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallbackFactory = EpmetCommonServiceOpenFeignClientFallbackFactory.class, url = "http://localhost:8103")
public interface EpmetCommonServiceOpenFeignClient {
/**
* @param formDTO
@ -131,7 +131,7 @@ public interface EpmetCommonServiceOpenFeignClient {
* @param input
* @return
*/
@RequestMapping("/commonservice/import-task/create")
@PostMapping("/commonservice/import-task/create")
Result<ImportTaskCommonResultDTO> createImportTask(@RequestBody ImportTaskCommonFormDTO input);
/**

2
epmet-module/epmet-common-service/common-service-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
common-service-server:
container_name: common-service-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/common-service-server:0.3.42
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/common-service-server:version_placeholder
ports:
- "8103:8103"
network_mode: host # 使用现有网络

2
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java

@ -39,7 +39,7 @@ public class ImportTaskController {
* @param input
* @return
*/
@RequestMapping("create")
@PostMapping("create")
public Result<ImportTaskCommonResultDTO> createTask(@RequestBody ImportTaskCommonFormDTO input) {
ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Create.class);
String operatorId = input.getOperatorId();

2
epmet-module/epmet-ext/epmet-ext-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-ext-server:
container_name: epmet-ext-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-ext-server:0.0.20
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-ext-server:version_placeholder
ports:
- "8113:8113"
network_mode: host # 使用现有网络

2
epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-heart-server:
container_name: epmet-heart-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-heart-server:0.0.72
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-heart-server:version_placeholder
ports:
- "8111:8111"
network_mode: host # 使用现有网络

2
epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-job-server:
container_name: epmet-job-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-job-server:0.3.47
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-job-server:version_placeholder
ports:
- "8084:8084"
network_mode: host # 使用现有网络

2
epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-message-server:
container_name: epmet-message-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-message-server:0.3.57
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-message-server:version_placeholder
ports:
- "8085:8085"
network_mode: host # 使用现有网络

2
epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-oss-server:
container_name: epmet-oss-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-oss-server:0.3.40
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-oss-server:version_placeholder
ports:
- "8083:8083"
network_mode: host # 使用现有网络

2
epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-point-server:
container_name: epmet-point-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-point-server:0.0.63
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-point-server:version_placeholder
ports:
- "8112:8112"
network_mode: host # 使用现有网络

3
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java

@ -44,7 +44,8 @@ public class BackDoorController {
* @param customerId
* @return
*/
@GetMapping(value = "initpointrule")
//@GetMapping(value = "initpointrule")
@RequestMapping(value = "initpointrule", method = {RequestMethod.POST, RequestMethod.GET})
public Result<InitPointRuleResultDTO> initPointRule(@RequestParam(required = false) String customerId) {
InitPointRuleResultDTO resultDTO = pointRuleService.initPointRule(customerId);
return new Result<InitPointRuleResultDTO>().ok(resultDTO);

2
epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-third-server:
container_name: epmet-third-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-third-server:0.0.183
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-third-server:version_placeholder
ports:
- "8110:8110"
network_mode: host # 使用现有网络

2
epmet-module/gov-access/gov-access-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-access-server:
container_name: gov-access-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-access-server:0.3.61
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-access-server:version_placeholder
ports:
- "8099:8099"
network_mode: host # 使用现有网络

2
epmet-module/gov-grid/gov-grid-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-grid-server:
container_name: gov-grid-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-grid-server:0.3.49
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-grid-server:version_placeholder
ports:
- "8097:8097"
network_mode: host # 使用现有网络

2
epmet-module/gov-issue/gov-issue-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-issue-server:
container_name: gov-issue-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-issue-server:0.3.100
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-issue-server:version_placeholder
ports:
- "8101:8101"
network_mode: host # 使用现有网络

2
epmet-module/gov-mine/gov-mine-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-mine-server:
container_name: gov-mine-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-mine-server:0.3.47
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-mine-server:version_placeholder
ports:
- "8098:8098"
network_mode: host # 使用现有网络

2
epmet-module/gov-org/gov-org-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-org-server:
container_name: gov-org-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-org-server:0.3.156
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-org-server:version_placeholder
ports:
- "8092:8092"
network_mode: host # 使用现有网络

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java

@ -29,7 +29,6 @@ import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingUnitDao;
import com.epmet.dto.BuildingTreeLevelDTO;
@ -42,8 +41,6 @@ import com.epmet.entity.IcBuildingUnitEntity;
import com.epmet.excel.IcBuildingExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.BuildingService;
import com.epmet.service.IcBuildingService;
import com.epmet.service.NeighborHoodService;
import com.epmet.util.ExcelPoiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -118,7 +115,7 @@ public class BuildingController {
@PostMapping("treelist")
public Result treeList(@LoginUser TokenDto tokenDTO){
List<BuildingTreeLevelDTO> buildingTreeLevelDTOS =buildingService.treeList(tokenDTO.getUserId());
List<BuildingTreeLevelDTO> buildingTreeLevelDTOS =buildingService.treeList(tokenDTO.getCustomerId(), tokenDTO.getUserId());
return new Result().ok(buildingTreeLevelDTOS);
}
/**

1
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java

@ -228,6 +228,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
// 集合里重复的
if (!r.getAddStatus()){
nums.add(r.getNum());
info = ConvertUtils.sourceToTarget(r,HouseInfoModel.class);
disposeErrorMsg(info,"文件中存在重复数据");
r.setExistStatus(true);
r.setAddStatus(true);

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java

@ -27,7 +27,6 @@ import com.epmet.dto.result.BuildingResultPagedDTO;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.excel.IcBuildingExcel;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -57,7 +56,7 @@ public interface BuildingService {
void addBuilding(String customerId, IcBulidingFormDTO formDTO);
List<BuildingTreeLevelDTO> treeList(String customerId);
List<BuildingTreeLevelDTO> treeList(String customerId, String staffId);
List<Integer> importExcel(String customerId, List<IcBuildingExcel> list, String staffId, List<Integer> numList);

35
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java

@ -13,45 +13,37 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ImportErrorMsgConstants;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*;
import com.epmet.dto.BuildingTreeLevelDTO;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.form.IcBulidingFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.ListIcNeighborHoodFormDTO;
import com.epmet.dto.result.*;
import com.epmet.dto.result.BuildingResultDTO;
import com.epmet.dto.result.BuildingResultPagedDTO;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.entity.*;
import com.epmet.enums.BuildingTypeEnums;
import com.epmet.excel.IcBuildingExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.model.BuildingInfoModel;
import com.epmet.model.HouseInfoModel;
import com.epmet.model.ImportBuildingInfoListener;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.*;
import com.epmet.service.BuildingService;
import com.epmet.service.IcBuildingService;
import com.epmet.service.IcBuildingUnitService;
import com.epmet.service.IcHouseService;
import com.epmet.util.ExcelPoiUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@ -128,8 +120,8 @@ public class BuildingServiceImpl implements BuildingService {
}
@Override
public List<BuildingTreeLevelDTO> treeList(String staffId) {
CustomerStaffAgencyDTO agency = customerStaffAgencyDao.selectLatestCustomerByStaff(staffId);
public List<BuildingTreeLevelDTO> treeList(String customerId, String staffId) {
CustomerStaffInfoCacheResult agency = CustomerStaffRedis.getStaffInfo(customerId, staffId);
if(null == agency || StringUtils.isBlank(agency.getAgencyId())){
log.error("com.epmet.service.impl.BuildingServiceImpl.treeList,没有找到工作人员所属的机关信息,用户Id:{}",staffId);
return new ArrayList<>();
@ -163,7 +155,7 @@ public class BuildingServiceImpl implements BuildingService {
//2.获取组织所在网格
List<String> agencyIdList = customerAgencyList.stream().map(a->a.getId()).collect(Collectors.toList());
List<String> agencyIdList = customerAgencyList.stream().map(BaseEpmetEntity::getId).collect(Collectors.toList());
// agencyIdList.add(customerAgency.getId());
List<CustomerGridEntity> customerGridList = customerGridDao.selectList(new QueryWrapper<CustomerGridEntity>().lambda().in(CustomerGridEntity::getPid, agencyIdList));
@ -222,8 +214,12 @@ public class BuildingServiceImpl implements BuildingService {
agencyList.addAll(neighbourHoodList);
return covertToTree(customerAgency,agencyList);
}
//获取楼里已经有多少个房屋
LambdaQueryWrapper<IcHouseEntity> icHouseEntityWrapper = new QueryWrapper<IcHouseEntity>().lambda()
.in(IcHouseEntity::getNeighborHoodId, neighborHoodIdList);
List<IcHouseEntity> buildingHouseCount = icHouseDao.selectList(icHouseEntityWrapper);
Map<String, Long> buildingHouseCountMap = buildingHouseCount.stream().collect(Collectors.groupingBy(IcHouseEntity::getBuildingId, Collectors.counting()));
//组合封装
List<BuildingTreeLevelDTO> buildingList = icBuildingList.stream().map(item -> {
BuildingTreeLevelDTO buildingTreeLevelDTO = new BuildingTreeLevelDTO();
buildingTreeLevelDTO.setId(item.getId());
@ -246,9 +242,10 @@ public class BuildingServiceImpl implements BuildingService {
//02.11 之前录入的户数概念改为总户数,无需计算直接用就可以了
Integer total = null == item.getTotalHouseNum() ? NumConstant.ZERO : item.getTotalHouseNum();
//已经添加了多少户
LambdaQueryWrapper<IcHouseEntity> icHouseEntityWrapper = new QueryWrapper<IcHouseEntity>().lambda()
.in(IcHouseEntity::getBuildingId, item.getId());
int count= icHouseDao.selectCount(icHouseEntityWrapper);
// LambdaQueryWrapper<IcHouseEntity> icHouseEntityWrapper = new QueryWrapper<IcHouseEntity>().lambda()
// .in(IcHouseEntity::getBuildingId, item.getId());
// int count= icHouseDao.selectCount(icHouseEntityWrapper);
int count = buildingHouseCountMap.getOrDefault(item.getId(), NumConstant.ZERO_L).intValue();
if(NumConstant.ZERO==total){
buildingTreeLevelDTO.setShowNum(String.format("%s/%s",count,count));
}else{

7
epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml

@ -79,6 +79,13 @@ spring:
namespace: @nacos.config.namespace@
group: @nacos.config.group@
file-extension: yaml
servlet:
# 上传文件限制
multipart:
max-file-size: 100MB
max-request-size: 100MB
management:
endpoints:
web:

2
epmet-module/gov-project/gov-project-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-project-server:
container_name: gov-project-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-project-server:0.3.96
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-project-server:version_placeholder
ports:
- "8102:8102"
network_mode: host # 使用现有网络

2
epmet-module/gov-voice/gov-voice-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-voice-server:
container_name: gov-voice-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-voice-server:0.3.78
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-voice-server:version_placeholder
ports:
- "8105:8105"
network_mode: host # 使用现有网络

2
epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-voice-server:
container_name: open-data-worker-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.22
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:version_placeholder
ports:
- "8117:8117"
network_mode: host # 使用现有网络

3
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/OpenDataApplication.java

@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @Description OpenData服务启动类
@ -14,6 +14,7 @@ import org.springframework.context.annotation.ComponentScan;
* @author wxz
* @date 2021.10.13 15:16:05
*/
@EnableScheduling
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients

33
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/GriderOnlineNumDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.opendata.entity.GriderOnlineNumEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 在线网格员人数
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-14
*/
@Mapper
public interface GriderOnlineNumDao extends BaseDao<GriderOnlineNumEntity> {
}

61
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/GriderOnlineNumEntity.java

@ -0,0 +1,61 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 用户巡查主记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-14
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("grider_online_num")
public class GriderOnlineNumEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
private String customerId;
private String qxGridId;
/**
* 推送时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date pushTime;
/**
* 在线数
*/
private Integer onlineNum;
}

38
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/GriderOnlineNumService.java

@ -0,0 +1,38 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.opendata.entity.GriderOnlineNumEntity;
/**
* 用户巡查主记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-14
*/
public interface GriderOnlineNumService extends BaseService<GriderOnlineNumEntity> {
/**
* desc:插入巡查中的网格员数据
* @return boolean
*/
Boolean insertData(String agencyId);
}

69
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GriderOnlineNumServiceImpl.java

@ -0,0 +1,69 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.PatrolCountFormDTO;
import com.epmet.dto.result.PatrolCountResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.opendata.dao.GriderOnlineNumDao;
import com.epmet.opendata.entity.GriderOnlineNumEntity;
import com.epmet.opendata.service.GriderOnlineNumService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 用户巡查主记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-14
*/
@Slf4j
@Service
public class GriderOnlineNumServiceImpl extends BaseServiceImpl<GriderOnlineNumDao, GriderOnlineNumEntity> implements GriderOnlineNumService {
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Override
public Boolean insertData(String agencyId) {
PatrolCountFormDTO param = new PatrolCountFormDTO();
param.setAgencyId(agencyId);
Result<PatrolCountResultDTO> patrolCountResult = epmetUserOpenFeignClient.patrolCount(param);
log.debug("insertData patrolCountResult return:{}", JSON.toJSONString(patrolCountResult));
if (patrolCountResult == null || !patrolCountResult.success()) {
log.warn("insertData patrolCount fail,return null");
return false;
}
PatrolCountResultDTO data = patrolCountResult.getData();
int count = data.getPatrollingCount() == null ? NumConstant.ZERO : data.getPatrollingCount();
GriderOnlineNumEntity entity = new GriderOnlineNumEntity();
entity.setCustomerId(StrConstant.PY_CUSTOMER);
entity.setPushTime(new Date());
entity.setOnlineNum(count);
baseDao.insert(entity);
return true;
}
}

71
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/task/ExtractBizDataToOpenData.java

@ -0,0 +1,71 @@
package com.epmet.opendata.task;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.opendata.service.GriderOnlineNumService;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2022/4/12 4:21 下午
* @version: 1.0
*/
@Slf4j
@Component
public class ExtractBizDataToOpenData {
@Autowired
private DistributedLock distributedLock;
@Autowired
private GriderOnlineNumService griderOnlineNumService;
@Scheduled(cron = "0 30 */2 * * *")
//@Scheduled(cron = "0/15 * * * * *")
public void extractGridMemberPatrollingCount() {
String currentTime = DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN);
log.info("extractGridMemberPatrollingCount start,date:{}", currentTime);
RLock rLock = null;
try {
rLock = distributedLock.tryLock(RedisKeys.getLockByMethodName("extractGridMemberPatrollingCount"));
if (rLock == null || !rLock.isLocked()) {
log.warn("tryLock method extractGridMemberPatrollingCount fail");
return;
}
boolean patrolCountResult;
int retryTime = NumConstant.THREE;
do {
//StrConstant.PY_ROOT_AGENCY
patrolCountResult = griderOnlineNumService.insertData(StrConstant.PY_ROOT_AGENCY);
if (!patrolCountResult) {
break;
}
//如果 重试次数为1了 就让歇个 5分钟
if (retryTime == 1) {
Thread.sleep(NumConstant.FIVE * NumConstant.SIXTY * NumConstant.ONE_THOUSAND);
}
} while (retryTime-- > 0);
if (!patrolCountResult) {
log.error("插入网格员在线人数失败,请检查原因,时间:{}", currentTime);
}
} catch (Exception e) {
log.warn("tryLock method extractGridMemberPatrollingCount fail");
} finally {
distributedLock.unLock(rLock);
}
log.info("extractGridMemberPatrollingCount end");
}
}

13
epmet-module/open-data-worker/open-data-worker-server/src/main/resources/db/migration/V0.0.1__add_grider_online_num.sql

@ -0,0 +1,13 @@
CREATE TABLE `grider_online_num` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id',
`ONLINE_NUM` int(11) NOT NULL COMMENT '在线人数',
`PUSH_TIME` datetime NOT NULL COMMENT '推送时间',
`DEL_FLAG` bigint(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='网格员在线人数';

6
epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/GriderOnlineNumDao.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.opendata.dao.GriderOnlineNumDao">
</mapper>

2
epmet-module/oper-access/oper-access-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
oper-access-server:
container_name: oper-access-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-access-server:0.3.24
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-access-server:version_placeholder
ports:
- "8093:8093"
network_mode: host # 使用现有网络

2
epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
oper-crm-server:
container_name: oper-crm-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-crm-server:0.3.87
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-crm-server:version_placeholder
ports:
- "8090:8090"
network_mode: host # 使用现有网络

2
epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
oper-customize-server:
container_name: oper-customize-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-customize-server:0.3.66
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-customize-server:version_placeholder
ports:
- "8089:8089"
network_mode: host # 使用现有网络

2
epmet-module/resi-group/resi-group-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-group-server:
container_name: resi-group-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-group-server:0.3.130
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-group-server:version_placeholder
ports:
- "8095:8095"
network_mode: host # 使用现有网络

2
epmet-module/resi-guide/resi-guide-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-guide-server:
container_name: resi-guide-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-guide-server:0.3.34
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-guide-server:version_placeholder
ports:
- "8091:8091"
network_mode: host # 使用现有网络

2
epmet-module/resi-hall/resi-hall-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-hall-server:
container_name: resi-hall-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-hall-server:0.3.36
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-hall-server:version_placeholder
ports:
- "8100:8100"
network_mode: host # 使用现有网络

2
epmet-module/resi-home/resi-home-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-home-server:
container_name: resi-home-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-home-server:0.3.23
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-home-server:version_placeholder
ports:
- "8104:8104"
network_mode: host # 使用现有网络

2
epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-mine-server:
container_name: resi-mine-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-mine-server:0.3.54
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-mine-server:version_placeholder
ports:
- "8094:8094"
network_mode: host # 使用现有网络

2
epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-partymember-server:
container_name: resi-partymember-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-partymember-server:0.3.83
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-partymember-server:version_placeholder
ports:
- "8096:8096"
network_mode: host # 使用现有网络

2
epmet-module/resi-voice/resi-voice-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
resi-voice-server:
container_name: resi-voice-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-voice-server:0.3.12
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-voice-server:version_placeholder
ports:
- "8106:8106"
network_mode: host # 使用现有网络

2
epmet-openapi/epmet-openapi-scan/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-openapi-scan:
container_name: epmet-openapi-scan-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-openapi-scan:0.3.32
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-openapi-scan:version_placeholder
ports:
- "8107:8107"
network_mode: host # 不会创建新的网络

14
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcEpidemicSpecialAttentionDTO.java

@ -4,8 +4,11 @@ import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@ -21,8 +24,8 @@ public class IcEpidemicSpecialAttentionDTO implements Serializable {
private static final long serialVersionUID = 1L;
public interface IcEpidemicSpecialAttentionUpdate{}
public interface IcEpidemicSpecialAttentionAdd{}
public interface IcEpidemicSpecialAttentionUpdate extends CustomerClientShowGroup {}
public interface IcEpidemicSpecialAttentionAdd extends CustomerClientShowGroup {}
/**
* ID
@ -81,12 +84,14 @@ public class IcEpidemicSpecialAttentionDTO implements Serializable {
/**
* 原因
*/
private String reason;
@Length(max = 500,message = "原因限制500字以内",groups = {IcEpidemicSpecialAttentionAdd.class,IcEpidemicSpecialAttentionUpdate.class})
private String reason;
/**
* 备注
*/
private String remark;
@Length(max = 500,message = "备注限制500字以内",groups = {IcEpidemicSpecialAttentionAdd.class,IcEpidemicSpecialAttentionUpdate.class})
private String remark;
/**
*
@ -126,6 +131,7 @@ public class IcEpidemicSpecialAttentionDTO implements Serializable {
/**
* 通知内容
*/
@Length(max = 500,message = "通知内容限制500字以内",groups = {IcEpidemicSpecialAttentionAdd.class,IcEpidemicSpecialAttentionUpdate.class})
private String content;
}

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcTripReportRecordDTO.java

@ -212,7 +212,7 @@ public class IcTripReportRecordDTO implements Serializable {
@ExcelIgnore
private Boolean heSuanCheck;
@ColumnWidth(20)
@ColumnWidth(25)
@ExcelProperty("核算检测关注名单")
private String heSuanCheckDesc;
}
}

119
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVaccineDTO.java

@ -0,0 +1,119 @@
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 疫苗接种记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
@Data
public class IcVaccineDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 唯一标识
*/
private String id;
/**
* 客户Id customer.id
*/
private String customerId;
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String mobile;
/**
* 身份证号
*/
private String idCard;
/**
* 是否客户下居民(0: 1:)
*/
private String isResiUser;
/**
* 数据来源导入的import;
*/
private String userType;
/**
* 接种时间
*/
private Date inoculateTime;
/**
* 接种地点
*/
private String inoculateAddress;
/**
* 疫苗厂家
*/
private String manufacturer;
/**
* 预留字段1
*/
private String field1;
/**
* 预留字段2
*/
private String field2;
/**
* 预留字段3
*/
private String field3;
/**
* 备注
*/
private String remaek;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

82
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVaccineRelationDTO.java

@ -0,0 +1,82 @@
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 疫苗接种记录关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
@Data
public class IcVaccineRelationDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private String id;
/**
* 客户Id
*/
private String customerId;
/**
* 居民端上报时存储用户所在网格的组织id.居民信息的人存储居民所在组织id.单个新增或者导入的存储登录用户所属的组织id
*/
private String agencyId;
/**
* 组织pids,包含当前agencyId值
*/
private String pids;
/**
* 疫苗记录表Id(ic_vaccine.id)
*/
private String icVaccineId;
/**
* 关系数据的绑定途径
数字社区录入icresi;
导入的import;
同步的synchro
*/
private String userType;
/**
* 删除标识
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

1
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/AddIcNatFormDTO.java

@ -100,6 +100,7 @@ public class AddIcNatFormDTO implements Serializable {
//token中信息
private String customerId;
private String staffId;
private String client;
}

1
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java

@ -28,6 +28,7 @@ public class EpidemicPreventionFormDTO extends PageFormDTO implements Serializab
* 网格ID
*/
private String gridId;
private String staffId;
/**
* 小区ID
*/

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java

@ -2,7 +2,6 @@ package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
@ -18,13 +17,13 @@ public class IcResiCollectMemFormDTO implements Serializable {
/**
* 居住成员1姓名
*/
@NotBlank(message = "姓名不能为空", groups = {ResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class})
// @NotBlank(message = "姓名不能为空", groups = {ResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class})
private String name;
/**
* 居住成员1身份证号
*/
@NotBlank(message = "身份证号不能为空", groups = {ResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class})
// @NotBlank(message = "身份证号不能为空", groups = {ResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class})
private String idNum;
/**

8
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java

@ -1,7 +1,9 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@ -32,11 +34,13 @@ public class PageTripReportFormDTO extends PageFormDTO implements Serializable {
* 来源地区名称
*/
private String sourceAddress;
/**
* 来到本地时间
*/
private Date startDate;
private Date endDate;
private String startDate;
private String endDate;
/**
* token里设置

14
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SendNoticeFormDTO.java

@ -1,10 +1,12 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;
@ -22,22 +24,22 @@ public class SendNoticeFormDTO implements Serializable {
/**
* 用户列表
*/
@NotNull(message = "用户列表不能为空", groups = DefaultGroup.class)
@NotEmpty(message = "用户列表不能为空", groups = CustomerClientShowGroup.class)
private List<UserListBean> userList;
/**
* 通知渠道通知渠道 0小程序通知1短信通知
*/
@NotNull(message = "通知渠道不能为空", groups = DefaultGroup.class)
@NotEmpty(message = "请选择通知渠道", groups = CustomerClientShowGroup.class)
private List<String> channel;
/**
* 通知来源 0 行程上报1 疫苗接种2 核酸检测
*/
@NotNull(message = "通知来源不能为空", groups = DefaultGroup.class)
@NotEmpty(message = "通知来源不能为空", groups = CustomerClientShowGroup.class)
private String origin;
/**
* 通知内容
*/
@NotNull(message = "通知内容不能为空", groups = DefaultGroup.class)
@Size(min = 1, max = 500, message = "通知内容不超过500字", groups = CustomerClientShowGroup.class)
private String content;
/**
* 组织名

67
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VaccineListFormDTO.java

@ -0,0 +1,67 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Description 疫苗接种信息查询
* @Author sun
*/
@Data
public class VaccineListFormDTO extends PageFormDTO {
private static final long serialVersionUID = -6809065476616323072L;
public interface Detail extends CustomerClientShowGroup {
}
public interface Del extends CustomerClientShowGroup {
}
public interface Synchro extends CustomerClientShowGroup {
}
/**
* 身份证号
*/
private String idCard;
/**
* 当前组织:current 根组织all
*/
private String searchType;
private String agencyId;
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String mobile;
/**
* 是否客户下居民(0: 1:)
*/
private String isResiUser;
/**
* 检测开始时间yyyy-MM-dd HH:mm
*/
private String startTime;
/**
* 检测结束时间yyyy-MM-dd HH:mm间yy-mm-dd
*/
private String endTime;
/**
* 核酸记录Id
*/
@NotBlank(message = "疫苗接种记录Id不能为空", groups = { Detail.class, Del.class, Synchro.class})
private String icVaccineId;
/**
* token里设置
*/
private String customerId;
private String userId;
}

27
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcVaccineListCommonExcelResultDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import lombok.Data;
/**
* @Description 疫苗接种-全局导出
* @Author sun
*/
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44)
@Data
public class IcVaccineListCommonExcelResultDTO extends IcVaccineListResultDTO{
private static final long serialVersionUID = 1L;
/**
* 是否客户下居民(0: 1:)
*/
@ColumnWidth(20)
@ExcelProperty(value = "本辖区居民",order = 6)
private String isResiUser;
}

89
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcVaccineListResultDTO.java

@ -0,0 +1,89 @@
package com.epmet.dto.result;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Description 核酸检测-我的上报记录
* @Author sun
*/
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44)
@Data
public class IcVaccineListResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 组织Id
*/
@ExcelIgnore
private String agencyId;
@ExcelIgnore
private String vaccineId;
@ExcelIgnore
private String userId;
/**
* 居民端小程序的人resi;数字社区的居民icresi;未关联上的other
*/
@ExcelIgnore
private String userType;
/**
* 姓名
*/
@ColumnWidth(20)
@ExcelProperty(value = "姓名",order = 1)
private String name;
/**
* 手机号
*/
@ColumnWidth(20)
@ExcelProperty(value = "手机号",order = 2)
private String mobile;
/**
* 身份证号
*/
@ColumnWidth(25)
@ExcelProperty(value = "身份证号",order = 3)
private String idCard;
/**
* 检测时间,yyyy-MM-dd HH:mm
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
@ColumnWidth(25)
@ExcelProperty(value = "接种时间",order = 4)
private Date inoculateTime;
/**
* 检测结果
*/
@ColumnWidth(20)
@ExcelProperty(value = "接种地点",order = 5)
private String inoculateAddress;
/**
* 是否客户下居民(0: 1:)
*/
@ExcelIgnore
private String isResiUser;
/**
* 检测地点
*/
@ColumnWidth(30)
@ExcelProperty(value = "疫苗厂家",order = 7)
private String manufacturer;
}

6
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyNatListResultDTO.java

@ -67,4 +67,10 @@ public class MyNatListResultDTO implements Serializable {
*/
private String attachmentUrl;
/**
* 检测时间,yyyy-MM-dd HH:mm
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date reportTime;
}

2
epmet-user/epmet-user-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-user-server:
container_name: epmet-user-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.218
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:version_placeholder
ports:
- "8087:8087"
network_mode: host # 不会创建新的网络

2
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java

@ -60,6 +60,7 @@ public class IcEpidemicPreventionController{
@PostMapping("page")
public Result<PageData<EpidemicPreventionResultDTO>> search(@LoginUser TokenDto tokenDto, @RequestBody EpidemicPreventionFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
PageData<EpidemicPreventionResultDTO> result = icResiUserService.epidemicPreventionList(formDTO);
return new Result<PageData<EpidemicPreventionResultDTO>>().ok(result);
}
@ -67,6 +68,7 @@ public class IcEpidemicPreventionController{
@PostMapping("user-list")
public Result<PageData<EpidemicPreventionResultDTO>> userList(@LoginUser TokenDto tokenDto, @RequestBody EpidemicPreventionFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
PageData<EpidemicPreventionResultDTO> result = icResiUserService.userList(formDTO);
return new Result<PageData<EpidemicPreventionResultDTO>>().ok(result);
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java

@ -12,6 +12,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.DefaultGroup;
@ -115,7 +116,7 @@ public class IcFollowUpRecordController {
String today= DateUtils.format(new Date(),DateUtils.DATE_PATTERN_MMDD);
String fileName = formDTO.getName().concat("随访记录").concat(today).concat(".xlsx");
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcFollowUpRecordDTO.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<IcFollowUpRecordDTO> data = null;
do {
data = icFollowUpRecordService.page(formDTO);

6
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java

@ -15,6 +15,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcNatDTO;
@ -89,6 +90,7 @@ public class IcNatController implements ResultDataResolver {
ValidatorUtils.validateEntity(formDTO, AddIcNatFormDTO.Nat.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
formDTO.setClient(tokenDto.getClient());
icNucleinService.add(formDTO);
return new Result();
}
@ -246,7 +248,7 @@ public class IcNatController implements ResultDataResolver {
response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition");
//response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel");
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("社区自组织导入模板", "UTF-8") + ".xlsx");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("核酸检测导入模板", "UTF-8") + ".xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/ic_nat.xlsx");
try {
@ -287,7 +289,7 @@ public class IcNatController implements ResultDataResolver {
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), NatListCommonExcelResultDTO.class).build();
}
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<NatListResultDTO> data = null;
do {
data = icNucleinService.natList(formDTO);

3
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNoticeController.java

@ -8,6 +8,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IcNoticeDTO;
@ -72,7 +73,7 @@ public class IcNoticeController {
@PostMapping("sendNotice")
public Result sendNotice(@LoginUser TokenDto tokenDto, @RequestBody SendNoticeFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
ValidatorUtils.validateEntity(formDTO, CustomerClientShowGroup.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
icNoticeService.sendNotice(formDTO);

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

@ -63,6 +63,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
@ -71,6 +72,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;
@ -82,7 +84,6 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
@ -135,7 +136,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;
@ -157,18 +158,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);
@ -469,20 +465,32 @@ 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);
String resultDesc;
if (e instanceof OfficeXmlFileException) {
resultDesc = "文件格式异常,请确保使用下载的模板文件";
} else {
resultDesc = "系统异常,请查看系统日志";
}
// 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值
icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, "系统异常,请查看系统日志", null);
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));
@ -578,28 +586,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();
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"));
is = this.getClass().getClassLoader().getResourceAsStream(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getPathInApp());
return new ResponseEntity<>(FileUtil.readBytes(icResiImportTemplateFile), headers, HttpStatus.OK);
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"));
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);
}
}

7
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java

@ -16,6 +16,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.constants.ImportTaskConstants;
@ -203,7 +204,7 @@ public class IcTripReportRecordController implements ResultDataResolver {
String today= DateUtils.format(new Date(),DateUtils.DATE_PATTERN_MMDD);
String fileName = "行程上报信息".concat(today);
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcTripReportRecordDTO.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<IcTripReportRecordDTO> data = null;
do {
data = icTripReportRecordService.page(formDTO);
@ -227,7 +228,7 @@ public class IcTripReportRecordController implements ResultDataResolver {
* @return
*/
@PostMapping("import")
public Result importExcel(MultipartFile file) {
public Result importExcel(@LoginUser TokenDto tokenDto, MultipartFile file) {
String userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
// 1.暂存文件
@ -271,7 +272,7 @@ public class IcTripReportRecordController implements ResultDataResolver {
"行程上报导入失败");
// 3.执行导入
icTripReportRecordService.execAsyncExcelImport(fileSavePath, rstData.getTaskId());
icTripReportRecordService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),tokenDto.getCustomerId(),tokenDto.getUserId());
return new Result();
}
}

230
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java

@ -0,0 +1,230 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListCommonExcelResultDTO;
import com.epmet.dto.result.IcVaccineListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.IcVaccineService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.List;
import java.util.UUID;
/**
* 疫苗接种记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
@Slf4j
@RestController
@RequestMapping("icVaccine")
public class IcVaccineController implements ResultDataResolver {
@Autowired
private IcVaccineService icVaccineService;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
/**
* @Author sun
* @Description 疫苗疫苗接种信息列表
**/
@NoRepeatSubmit
@PostMapping("vaccine-list")
public Result<PageData<IcVaccineListResultDTO>> vaccineList(@LoginUser TokenDto tokenDto, @RequestBody VaccineListFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<PageData<IcVaccineListResultDTO>>().ok(icVaccineService.icVaccineList(formDTO));
}
/**
* @Author zxc
* @Description 疫苗疫苗接种信息同步
**/
@NoRepeatSubmit
@PostMapping("synchro")
public Result synchro(@LoginUser TokenDto tokenDto, @RequestBody VaccineListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, VaccineListFormDTO.Synchro.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
icVaccineService.synchro(formDTO);
return new Result();
}
/**
* @Author zxc
* @Description 疫苗疫苗接种信息取消同步
**/
@NoRepeatSubmit
@PostMapping("cancelsynchro")
public Result cancelSynchro(@LoginUser TokenDto tokenDto, @RequestBody VaccineListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, VaccineListFormDTO.Synchro.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
icVaccineService.cancelSynchro(formDTO);
return new Result<>();
}
/**
* 导入excel
* @return
*/
@PostMapping("import")
public Result importExcel(MultipartFile file) {
String userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
// 1.暂存文件
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
Path fileSavePath;
try {
Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_vaccine", "import");
fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName));
} catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【疫苗接种导入】创建临时存储文件失败:{}", errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败");
}
InputStream is = null;
FileOutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(fileSavePath.toString());
IOUtils.copy(is, os);
} catch (Exception e) {
log.error("importExcel exception", e);
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
// 2.生成导入任务记录
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOperatorId(userId);
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_IC_VACCINE);
importTaskForm.setOriginFileName(originalFilename);
ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm),
ServiceConstant.EPMET_COMMON_SERVICE,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"excel导入疫苗接种信息错误",
"导入居民疫苗接种信息失败");
// 3.执行导入
icVaccineService.execAsyncExcelImport(fileSavePath, rstData.getTaskId());
return new Result();
}
/**
* @Author zxc
* @Description 疫苗疫苗接种信息下载模板
**/
@RequestMapping(value = "import-template-download", method = {RequestMethod.GET, RequestMethod.POST})
public void downloadTemplate(HttpServletResponse response) throws IOException {
response.setCharacterEncoding("UTF-8");
response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition");
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("疫苗接种导入模板", "UTF-8") + ".xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/ic_vaccine.xlsx");
try {
ServletOutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
} finally {
if (is != null) {
is.close();
}
}
}
/**
* @Author sun
* @Description 疫苗疫苗接种信息列表
**/
@NoRepeatSubmit
@PostMapping("export")
public void export(@LoginUser TokenDto tokenDto, @RequestBody VaccineListFormDTO formDTO, HttpServletResponse response) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
formDTO.setIsPage(false);
ExcelWriter excelWriter = null;
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
int pageNo = formDTO.getPageNo();
try {
// 这里 需要指定写用哪个class去写
String fileName = "疫苗接种信息.xlsx";
if ("all".equals(formDTO.getSearchType())) {
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcVaccineListResultDTO.class).build();
}else {
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcVaccineListCommonExcelResultDTO.class).build();
}
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<IcVaccineListResultDTO> data = null;
do {
data = icVaccineService.icVaccineList(formDTO);
data.getList().forEach(o-> {
o.setIsResiUser(NumConstant.ONE_STR.equals(o.getIsResiUser()) ? "是" : "否");
});
formDTO.setPageNo(++pageNo);
if ("current".equals(formDTO.getSearchType())) {
List<IcVaccineListResultDTO> list = ConvertUtils.sourceToTarget(data.getList(), IcVaccineListResultDTO.class);
excelWriter.write(list, writeSheet);
}else{
excelWriter.write(data.getList(), writeSheet);
}
} while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize());
}catch (Exception e){
log.error("export exception", e);
}finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
}

37
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiVaccineController.java → epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineRelationController.java

@ -8,55 +8,54 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.IcResiVaccineDTO;
import com.epmet.service.IcResiVaccineService;
import com.epmet.dto.IcVaccineRelationDTO;
import com.epmet.service.IcVaccineRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 居民疫苗情况
* 疫苗接种记录关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-03-28
* @since v1.0.0 2022-04-06
*/
@RestController
@RequestMapping("icResiVaccine")
public class IcResiVaccineController {
@RequestMapping("icVaccineRelation")
public class IcVaccineRelationController {
@Autowired
private IcResiVaccineService icResiVaccineService;
private IcVaccineRelationService icVaccineRelationService;
@RequestMapping("page")
public Result<PageData<IcResiVaccineDTO>> page(@RequestParam Map<String, Object> params){
PageData<IcResiVaccineDTO> page = icResiVaccineService.page(params);
return new Result<PageData<IcResiVaccineDTO>>().ok(page);
public Result<PageData<IcVaccineRelationDTO>> page(@RequestParam Map<String, Object> params){
PageData<IcVaccineRelationDTO> page = icVaccineRelationService.page(params);
return new Result<PageData<IcVaccineRelationDTO>>().ok(page);
}
@RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET})
public Result<IcResiVaccineDTO> get(@PathVariable("id") String id){
IcResiVaccineDTO data = icResiVaccineService.get(id);
return new Result<IcResiVaccineDTO>().ok(data);
public Result<IcVaccineRelationDTO> get(@PathVariable("id") String id){
IcVaccineRelationDTO data = icVaccineRelationService.get(id);
return new Result<IcVaccineRelationDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody IcResiVaccineDTO dto){
public Result save(@RequestBody IcVaccineRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
icResiVaccineService.save(dto);
icVaccineRelationService.save(dto);
return new Result();
}
@NoRepeatSubmit
@PostMapping("update")
public Result update(@RequestBody IcResiVaccineDTO dto){
public Result update(@RequestBody IcVaccineRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
icResiVaccineService.update(dto);
icVaccineRelationService.update(dto);
return new Result();
}
@ -64,7 +63,7 @@ public class IcResiVaccineController {
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
icResiVaccineService.delete(ids);
icVaccineRelationService.delete(ids);
return new Result();
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java

@ -40,5 +40,5 @@ public interface IcResiCollectDao extends BaseDao<IcResiCollectEntity> {
* @param userId
* @return
*/
String selectLastSubmitId(@Param("customerId") String customerId, @Param("userId") String userId);
List<String> selectLastSubmitId(@Param("customerId") String customerId, @Param("userId") String userId);
}

16
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiVaccineDao.java

@ -1,16 +0,0 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IcResiVaccineEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 居民疫苗情况
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-03-28
*/
@Mapper
public interface IcResiVaccineDao extends BaseDao<IcResiVaccineEntity> {
}

71
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java

@ -0,0 +1,71 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IcNatDTO;
import com.epmet.dto.form.MyNatListFormDTO;
import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListResultDTO;
import com.epmet.dto.result.MyNatListResultDTO;
import com.epmet.dto.result.NatListResultDTO;
import com.epmet.entity.IcVaccineEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 疫苗接种记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
@Mapper
public interface IcVaccineDao extends BaseDao<IcVaccineEntity> {
/**
* @Author sun
* @Description 核酸检测-按条件查询核酸记录
**/
List<MyNatListResultDTO> getMyNatList(MyNatListFormDTO formDTO);
/**
* @Author sun
* @Description 核酸本辖区核酸检测信息列表
*
* @param formDTO*/
List<IcVaccineListResultDTO> getIcVaccineList(VaccineListFormDTO formDTO);
/**
* @Author sun
* @Description 核酸客户下核酸检测信息列表
*
* @param formDTO*/
List<IcVaccineListResultDTO> getCustomerIcVaccineList(VaccineListFormDTO formDTO);
/**
* @Author sun
* @Description 删除操作--物理删除业务数据
**/
int delById(@Param("icNatId") String icNatId);
/**
* 插入或者更新
*
* @param e
*/
void insertOrUpdate(IcVaccineEntity e);
/**
* @Author sun
* @Description 按条件查询业务数据
**/
IcNatDTO getNatDTO(@Param("customerId") String customerId, @Param("icNatId") String icNatId, @Param("idCard") String idCard, @Param("natTime") String natTime, @Param("natResult") String natResult);
/**
* desc:根据客户id 更新是否居民状态
*
* @param customerId
* @param icResiUserId 如果为空则更新全部
* @return
*/
int updateIsResiFlag(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId);
}

17
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineRelationDao.java

@ -0,0 +1,17 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IcVaccineRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 疫苗接种记录关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
@Mapper
public interface IcVaccineRelationDao extends BaseDao<IcVaccineRelationEntity> {
int delRelation(@Param("icVaccineId") String icNatId, @Param("agencyId") String agencyId);
}

23
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiVaccineEntity.java → epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineEntity.java

@ -1,5 +1,7 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
@ -9,21 +11,22 @@ import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 居民疫苗情况
* 疫苗接种记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-03-28
* @since v1.0.0 2022-04-06
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_resi_vaccine")
public class IcResiVaccineEntity extends BaseEpmetEntity {
@TableName("ic_vaccine")
public class IcVaccineEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id customer.id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String customerId;
/**
@ -41,6 +44,16 @@ public class IcResiVaccineEntity extends BaseEpmetEntity {
*/
private String idCard;
/**
* 是否客户下居民(0: 1:)
*/
private String isResiUser;
/**
* 数据来源导入的import;
*/
private String userType;
/**
* 接种时间
*/
@ -74,6 +87,6 @@ public class IcResiVaccineEntity extends BaseEpmetEntity {
/**
* 备注
*/
private String remaek;
private String remark;
}

55
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineRelationEntity.java

@ -0,0 +1,55 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 疫苗接种记录关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_vaccine_relation")
public class IcVaccineRelationEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
@TableField(fill = FieldFill.INSERT)
private String customerId;
/**
* 居民端上报时存储用户所在网格的组织id.居民信息的人存储居民所在组织id.单个新增或者导入的存储登录用户所属的组织id
*/
private String agencyId;
/**
* 组织pids,包含当前agencyId值
*/
private String pids;
/**
* 疫苗记录表Id(ic_vaccine.id)
*/
private String icVaccineId;
/**
* 关系数据的绑定途径
数字社区录入icresi;
导入的import;
同步的synchro
*/
private String userType;
}

1
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java

@ -21,6 +21,7 @@ public class IcNatImportExcelData {
@NotBlank(message = "手机号为必填项")
@ExcelProperty("手机号")
@Length(max = 15, message = "手机号长度不正确,应小于15位")
private String mobile;
@NotBlank(message = "身份证号为必填项")

65
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcVaccineImportExcelData.java

@ -0,0 +1,65 @@
package com.epmet.excel.data;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* 疫苗接种信息导入excel数据
*/
@Data
public class IcVaccineImportExcelData implements Serializable {
private static final long serialVersionUID = -700535059296633797L;
@NotBlank(message = "姓名为必填项")
@ExcelProperty("姓名")
private String name;
@NotBlank(message = "手机号为必填项")
@ExcelProperty("手机号")
@Length(max = 15, message = "手机号长度不正确")
private String mobile;
@NotBlank(message = "身份证号为必填项")
@ExcelProperty("身份证号")
@Length(max = 18, message = "身份证号长度不正确")
private String idCard;
@NotNull(message = "接种时间为必填项")
@ExcelProperty("接种时间")
private Date inoculateTime;
@NotBlank(message = "接种地点为必填项")
@ExcelProperty("接种地点")
private String inoculateAddress;
@NotBlank(message = "疫苗厂家为必填项")
@ExcelProperty("疫苗厂家")
private String manufacturer;
@Data
public static class RowRemarkMessage {
@ExcelProperty("姓名")
@ColumnWidth(20)
private String name;
@ExcelProperty("手机号")
@ColumnWidth(20)
private String mobile;
@ColumnWidth(20)
@ExcelProperty("身份证号")
private String idCard;
@ColumnWidth(60)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

136
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcVaccineExcelImportListener.java

@ -0,0 +1,136 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.entity.IcVaccineEntity;
import com.epmet.excel.data.IcNatImportExcelData;
import com.epmet.excel.data.IcVaccineImportExcelData;
import com.epmet.service.impl.IcNatServiceImpl;
import com.epmet.service.impl.IcVaccineServiceImpl;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 核酸检测excel导入监听器
*/
@Data
@Slf4j
public class IcVaccineExcelImportListener implements ReadListener<IcVaccineImportExcelData> {
/**
* 最大条数阈值
*/
public static final int MAX_THRESHOLD = 200;
private String currentUserId;
/**
* 当前组织ID
*/
private String currentAgencyId;
private String currentAgencyPids;
/**
* 数据
*/
private List<IcVaccineEntity> datas = new ArrayList<>();
/**
* 错误项列表
*/
private List<IcVaccineImportExcelData.RowRemarkMessage> errorRows = new ArrayList<>();
/**
* 其他被标记出来的列表列表
*/
private List<IcVaccineImportExcelData.RowRemarkMessage> otherRows = new ArrayList<>();
private IcVaccineServiceImpl icVaccineService;
public IcVaccineExcelImportListener(String currentUserId, String currentAgencyId, String currentAgencyPids, IcVaccineServiceImpl icVaccineService) {
this.currentUserId = currentUserId;
this.currentAgencyId = currentAgencyId;
this.currentAgencyPids = currentAgencyPids;
this.icVaccineService = icVaccineService;
}
@Override
public void invoke(IcVaccineImportExcelData data, AnalysisContext context) {
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
// 取出前后空格
if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim());
}
if (StringUtils.isNotBlank(data.getMobile())) {
data.setMobile(data.getMobile().trim());
}
if (StringUtils.isNotBlank(data.getInoculateAddress())) {
data.setInoculateAddress(data.getInoculateAddress().trim());
}
if (StringUtils.isNotBlank(data.getIdCard())) {
data.setIdCard(data.getIdCard().trim());
}
IcVaccineEntity icVaccineEntity = ConvertUtils.sourceToTarget(data, IcVaccineEntity.class);
icVaccineEntity.setUserType("import");
datas.add(icVaccineEntity);
if (datas.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
log.error("【疫苗接种信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
IcVaccineImportExcelData.RowRemarkMessage errorRow = new IcVaccineImportExcelData.RowRemarkMessage();
errorRow.setName(data.getName());
errorRow.setMobile(data.getMobile());
errorRow.setIdCard(data.getIdCard());
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
if (datas != null && datas.size() > 0) {
icVaccineService.batchPersist(datas, this);
}
} finally {
datas.clear();
}
}
/**
* 获取错误行
* @return
*/
public List<IcVaccineImportExcelData.RowRemarkMessage> getErrorRows() {
return errorRows;
}
}

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);
/**
* 创建导入任务

89
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiVaccineService.java

@ -1,89 +0,0 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcResiVaccineDTO;
import com.epmet.dto.result.VaccineListDTO;
import com.epmet.entity.IcResiVaccineEntity;
import java.util.List;
import java.util.Map;
/**
* 居民疫苗情况
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-03-28
*/
public interface IcResiVaccineService extends BaseService<IcResiVaccineEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IcResiVaccineDTO>
* @author generator
* @date 2022-03-28
*/
PageData<IcResiVaccineDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<IcResiVaccineDTO>
* @author generator
* @date 2022-03-28
*/
List<IcResiVaccineDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IcResiVaccineDTO
* @author generator
* @date 2022-03-28
*/
IcResiVaccineDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-03-28
*/
void save(IcResiVaccineDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-03-28
*/
void update(IcResiVaccineDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-03-28
*/
void delete(String[] ids);
/**
* 获取居民疫苗接种信息
*
* @Param idCard
* @Return {@link List< VaccineListDTO>}
* @Author zhaoqifeng
* @Date 2022/3/30 10:24
*/
List<VaccineListDTO> getVaccineList(String customerId, String idCard);
}

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

@ -99,5 +99,5 @@ public interface IcTripReportRecordService extends BaseService<IcTripReportRecor
* 执行Excel导入
* @param filePath
*/
void execAsyncExcelImport(Path filePath, String importTaskId);
void execAsyncExcelImport(Path filePath, String importTaskId,String customerId,String userId);
}

78
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccineRelationService.java

@ -0,0 +1,78 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcVaccineRelationDTO;
import com.epmet.entity.IcVaccineRelationEntity;
import java.util.List;
import java.util.Map;
/**
* 疫苗接种记录关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
public interface IcVaccineRelationService extends BaseService<IcVaccineRelationEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IcVaccineRelationDTO>
* @author generator
* @date 2022-04-06
*/
PageData<IcVaccineRelationDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<IcVaccineRelationDTO>
* @author generator
* @date 2022-04-06
*/
List<IcVaccineRelationDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IcVaccineRelationDTO
* @author generator
* @date 2022-04-06
*/
IcVaccineRelationDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-04-06
*/
void save(IcVaccineRelationDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-04-06
*/
void update(IcVaccineRelationDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-04-06
*/
void delete(String[] ids);
}

56
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccineService.java

@ -0,0 +1,56 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListResultDTO;
import com.epmet.dto.result.VaccineListDTO;
import com.epmet.entity.IcVaccineEntity;
import java.nio.file.Path;
import java.util.List;
/**
* 疫苗接种记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-06
*/
public interface IcVaccineService extends BaseService<IcVaccineEntity> {
/**
* @Author sun
* @Description 核酸核酸检测信息列表
*
* @param formDTO
* @return*/
PageData<IcVaccineListResultDTO> icVaccineList(VaccineListFormDTO formDTO);
/**
* @Author zxc
* @Description 核酸核酸检测信息同步
**/
void synchro(VaccineListFormDTO formDTO);
/**
* @Author zxc
* @Description 核酸核酸检测信息取消同步
**/
void cancelSynchro(VaccineListFormDTO formDTO);
/**
* 执行Excel导入
* @param filePath
*/
void execAsyncExcelImport(Path filePath, String importTaskId);
/**
* 获取居民疫苗接种信息
*
* @Param idCard
* @Return {@link List <VaccineListDTO>}
* @Author zhaoqifeng
* @Date 2022/3/30 10:24
*/
List<VaccineListDTO> getVaccineList(String customerId, String idCard);
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcEpidemicSpecialAttentionServiceImpl.java

@ -334,7 +334,8 @@ public class IcEpidemicSpecialAttentionServiceImpl extends BaseServiceImpl<IcEpi
for (String s : existList) {
for (int i = NumConstant.ZERO; i < list.size(); i++) {
if (s.equals(list.get(i).getIdCard()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i),"数据已存在",list.get(i).getNum()));
// 按照产品指示,去除提示错误信息,并不做操作
// errorInfo.add(getErrorInfo(list.get(i),"数据已存在",list.get(i).getNum()));
list.get(i).setAddStatus(true);
continue;
}

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

@ -85,8 +85,8 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
private IcNatRelationDao icNatRelationDao;
@Autowired
private IcResiUserDao icResiUserDao;
@Autowired
private UserService userService;
//@Autowired
//private UserService userService;
/**
* @Author sun
@ -101,6 +101,9 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
if (null != icNatDTO && icNatDTO.getNatResult().equals(formDTO.getNatResult())) {
throw new RenException(EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getCode(), EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getMsg());
} else if (null != icNatDTO && !icNatDTO.getNatResult().equals(formDTO.getNatResult())) {
if ("wxmp".equals(formDTO.getClient())) {
throw new RenException(EpmetErrorCode.RESI_IC_NAT.getCode(), EpmetErrorCode.RESI_IC_NAT.getMsg());
}
throw new RenException(EpmetErrorCode.IC_NAT.getCode(), EpmetErrorCode.IC_NAT.getMsg());
}
//1.获取所填居民所属组织缓存信息
@ -317,7 +320,7 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
String app = EpmetRequestHolder.getHeader(AppClientConstant.APP);
String client = EpmetRequestHolder.getHeader(AppClientConstant.CLIENT);
LoginUserDetailsResultDTO loginUserDetails = userService.getLoginUserDetails(app, client, userId);
LoginUserDetailsResultDTO loginUserDetails = SpringContextUtils.getBean(UserService.class).getLoginUserDetails(app, client, userId);
String agencyId = loginUserDetails.getAgencyId();
@ -488,6 +491,9 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
String natResult = e.getNatResult();
String natAddress = e.getNatAddress();
// 居民信息
IcResiUserEntity resi = getResi(customerId, idCard, null);
//1.先看客户下有没有这个人
IcNatEntity resiNat = getResiNat(customerId, idCard, natTime);
if (resiNat != null && !"import".equals(resiNat.getUserType())) {
@ -547,7 +553,6 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
resiNat.setUpdatedBy(currentUserId);
resiNat.setUpdatedTime(new Date());
IcResiUserEntity resi = getResi(customerId, idCard, null);
resiNat.setIsResiUser(resi != null ? "1" : "0");
resiNat.setUserId(resi != null ? resi.getId() : "");
@ -555,15 +560,14 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
}
// 还要创建关系。只有本辖区及下级居民,才建立关系
if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) {
createNatRelation(resiNat.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids());
if (resi != null) {
createNatRelation(resiNat.getId(), resi.getAgencyId(), resi.getPids());
}
return;
}
// 执行新增操作
IcResiUserEntity resi = getResi(customerId, idCard, null);
e.setIsResiUser(resi != null ? "1" : "0");
e.setUserId(resi != null ? resi.getId() : "");
e.setUserType("import");
@ -571,8 +575,8 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
baseDao.insert(e);
// 还要创建关系。只有本辖区及下级居民,才建立关系
if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) {
createNatRelation(e.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids());
if (resi != null) {
createNatRelation(e.getId(), resi.getAgencyId(), resi.getPids());
}
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNoticeServiceImpl.java

@ -137,7 +137,10 @@ public class IcNoticeServiceImpl extends BaseServiceImpl<IcNoticeDao, IcNoticeEn
//保存消息
String channel = StringUtils.join(formDTO.getChannel(), StrConstant.COMMA);
String finalOrgName = orgName;
List<IcNoticeEntity> entityList = formDTO.getUserList().stream().map(item -> {
List<SendNoticeFormDTO.UserListBean> userBeanList = formDTO.getUserList().stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing( SendNoticeFormDTO.UserListBean::getIdCard))), ArrayList::new));
List<IcNoticeEntity> entityList = userBeanList.stream().map(item -> {
IcNoticeEntity entity = new IcNoticeEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setChannel(channel);

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save