Browse Source

新冠病毒疫苗接种人员信息台账

master
wanggongfeng 3 years ago
parent
commit
1db5a91cfc
  1. 2
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java
  2. 41
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridInfoByNameResultDTO.java
  3. 12
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java
  4. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  5. 9
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
  6. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  7. 14
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  8. 31
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GridInfoVaccinePrarmeterFormDTO.java
  9. 54
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccinePrarmeterController.java
  10. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcVaccinePrarmeterExcel.java
  11. 95
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcVaccinePrarmeterImportExcel.java
  12. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java
  13. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java
  14. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcPointNucleicMonitoringService.java
  15. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccinePrarmeterService.java
  16. 321
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccinePrarmeterServiceImpl.java

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

@ -23,6 +23,8 @@ public interface ImportTaskConstants {
String BIZ_TYPE_IC_ENTERPRISE="ic_enterprise";
String IC_POINT_NUCLEIC_MONITORING = "ic_point_nucleic_monitoring";
String IC_POINT_VACCINES_INOCULATION = "ic_point_vaccines_inoculation";
// 新冠病毒疫苗接种人员信息台账
String IC_VACCINE_PRARMETER = "ic_vaccine_prarmeter";
/**
* 核酸检测
*/

41
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridInfoByNameResultDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 网格所属组织基本信息
* @Author wgf
* @Date 2020/4/26 22:35
*/
@Data
public class GridInfoByNameResultDTO implements Serializable {
private static final long serialVersionUID = 4360690752084258055L;
/**
* 客户ID
*/
private String customerId;
/**
* 网格组织ID
*/
private String deptId;
/**
* 网格名称
*/
private String deptName;
/**
* 网格的上级组织
*/
private String pid;
/**
* 网格的所有上级组织
*/
private String pids;
}

12
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java

@ -475,6 +475,18 @@ public class CustomerAgencyController {
return customerAgencyService.getCommunityInfo(formDTO);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.CommunityInfoResultDTO>
* @Author wgf
* @Description 根据网格名称查询所属组织信息
* @Date 2022/6/21 22:41
**/
@PostMapping("getGridInfoByGridName")
public Result<GridInfoByNameResultDTO> getGridInfoByGridName(@RequestBody GridInfoVaccinePrarmeterFormDTO formDTO) {
return customerAgencyService.getGridInfoByGridName(formDTO);
}
/**
* @param userId
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.CommunityInfoResultDTO>

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.GridInfoVaccinePrarmeterFormDTO;
import com.epmet.dto.form.OrgInfoPointFormDTO;
import com.epmet.dto.form.OrgTreeByUserAndTypeFormDTO;
import com.epmet.dto.result.*;
@ -352,6 +353,8 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
CommunityInfoResultDTO getCommunityInfo(OrgInfoPointFormDTO formDTO);
GridInfoByNameResultDTO getGridInfoByGridName(GridInfoVaccinePrarmeterFormDTO formDTO);
CommunityInfoResultDTO getCommunityInfoByUserId(@Param("userId") String userId);
/**

9
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java

@ -327,6 +327,15 @@ public interface CustomerAgencyService extends BaseService<CustomerAgencyEntity>
**/
Result<CommunityInfoResultDTO> getCommunityInfo(OrgInfoPointFormDTO formDTO);
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.CommunityInfoResultDTO>
* @Author wgf
* @Description 根据网格名称查询所属组织信息
* @Date 2022/6/21 22:41
**/
Result<GridInfoByNameResultDTO> getGridInfoByGridName(GridInfoVaccinePrarmeterFormDTO formDTO);
/**
* @param userId
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.CommunityInfoResultDTO>

7
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -1580,6 +1580,13 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
return new Result<CommunityInfoResultDTO>().ok(communityInfoResultDTO);
}
@Override
public Result<GridInfoByNameResultDTO> getGridInfoByGridName(GridInfoVaccinePrarmeterFormDTO formDTO) {
GridInfoByNameResultDTO gridInfoByNameResultDTO = baseDao.getGridInfoByGridName(formDTO);
return new Result<GridInfoByNameResultDTO>().ok(gridInfoByNameResultDTO);
}
@Override
public Result<CommunityInfoResultDTO> getCommunityInfoByUserId(String userId) {
CommunityInfoResultDTO communityInfoResultDTO = baseDao.getCommunityInfoByUserId(userId);

14
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -916,6 +916,20 @@
limit 1
</select>
<select id="getGridInfoByGridName" resultType="com.epmet.dto.result.GridInfoByNameResultDTO" parameterType="com.epmet.dto.form.GridInfoVaccinePrarmeterFormDTO">
select
ID as deptId,
CUSTOMER_ID,
PID,
PIDS,
GRID_NAME as deptName
from customer_grid
where DEL_FLAG = '0'
and GRID_NAME = #{gridName}
and CUSTOMER_ID = #{customerId}
limit 1
</select>
<select id="getCommunityInfoByUserId" resultType="com.epmet.dto.result.CommunityInfoResultDTO">
select
ca.ID as deptId,

31
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GridInfoVaccinePrarmeterFormDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* 所属网格
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-06-20
*/
@Data
public class GridInfoVaccinePrarmeterFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 所属网格名称
*/
private String gridName;
}

54
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccinePrarmeterController.java

@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelPoiUtils;
@ -14,18 +15,27 @@ 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.constants.ImportTaskConstants;
import com.epmet.dao.IcVaccinePrarmeterDao;
import com.epmet.dto.IcPointNucleicMonitoringDTO;
import com.epmet.dto.IcVaccinePrarmeterDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.PointHSYMFormDTO;
import com.epmet.dto.form.VaccinePrarmeterListFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.excel.IcPointNucleicMonitoringExcel;
import com.epmet.excel.IcVaccinePrarmeterExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.IcPointNucleicMonitoringService;
import com.epmet.service.IcVaccinePrarmeterService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -39,6 +49,7 @@ import java.util.Map;
*/
@RestController
@RequestMapping("icVaccinePrarmeter")
@Slf4j
public class IcVaccinePrarmeterController {
@Autowired
@ -47,6 +58,9 @@ public class IcVaccinePrarmeterController {
@Autowired
private IcVaccinePrarmeterDao icVaccinePrarmeterDao;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@RequestMapping("page")
public Result<PageData<IcVaccinePrarmeterDTO>> page(@RequestParam Map<String, Object> params){
PageData<IcVaccinePrarmeterDTO> page = icVaccinePrarmeterService.page(params);
@ -118,6 +132,46 @@ public class IcVaccinePrarmeterController {
ExcelPoiUtils.exportExcel(templatePath ,new HashMap<>(),"新冠病毒疫苗接种人员信息台账",response);
}
/**
* Desc: 新冠病毒疫苗接种人员信息台账导入
* @param
* @author wgf
* @date 2022/8/22 13:40
*/
@PostMapping("importFile")
public Result importFile(@LoginUser TokenDto tokenDto, @RequestParam("file") MultipartFile file){
if (file.isEmpty()) {
throw new EpmetException("请上传文件");
}
// 校验文件类型
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
if (!"xls".equals(extension) && !"xlsx".equals(extension)) {
throw new EpmetException("文件类型不匹配");
}
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOriginFileName(file.getOriginalFilename());
importTaskForm.setOperatorId(tokenDto.getUserId());
importTaskForm.setBizType(ImportTaskConstants.IC_VACCINE_PRARMETER);
Result<ImportTaskCommonResultDTO> result = commonServiceOpenFeignClient.createImportTask(importTaskForm);
if (!result.success()) {
throw new EpmetException(9999,"存在进行中的导入");
}
InputStream inputStream = null;
try {
inputStream = file.getInputStream();
}catch (Exception e){
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO();
input.setOperatorId(tokenDto.getUserId());
input.setTaskId(result.getData().getTaskId());
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
commonServiceOpenFeignClient.finishImportTask(input);
log.error("读取文件失败");
}
icVaccinePrarmeterService.importFile(tokenDto,inputStream,result.getData().getTaskId());
return new Result();
}
}

6
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcVaccinePrarmeterExcel.java

@ -20,10 +20,6 @@ public class IcVaccinePrarmeterExcel {
private String gridName;
@Excel(name = "组织的pids")
private String pids;
@Excel(name = "所属小区名称")
private String villageName;
@ -51,7 +47,7 @@ public class IcVaccinePrarmeterExcel {
@Excel(name = "身份证号")
private String idCard;
@Excel(name = "是否接种:0否1是")
@Excel(name = "是否接种", replace = {"否_0","是_1"})
private String isVaccination;
@Excel(name = "第一次接种时间")

95
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcVaccinePrarmeterImportExcel.java

@ -0,0 +1,95 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import lombok.Data;
/**
* 新冠病毒疫苗接种人员信息台账
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-08-22
*/
@Data
public class IcVaccinePrarmeterImportExcel {
@Excel(name = "网格名称")
private String gridName;
@Excel(name = "所属小区名称")
private String villageName;
@Excel(name = "所属楼宇名称")
private String buildName;
@Excel(name = "单元名")
private String unitName;
@Excel(name = "房间名")
private String homeName;
@Excel(name = "户口性质", replace = {"户籍_0","外来_1"})
private String householdType;
@Excel(name = "姓名")
private String name;
@Excel(name = "联系电话")
private String mobile;
@Excel(name = "身份证号")
private String idCard;
@Excel(name = "是否接种", replace = {"否_0","是_1"})
private String isVaccination;
@Excel(name = "第一次接种时间")
private String firstVacTime;
@Excel(name = "第一次接种地点")
private String firstVacSite;
@Excel(name = "第二次接种时间")
private String secondVacTime;
@Excel(name = "第二次接种地点")
private String secondVacSite;
@Excel(name = "第三次接种时间")
private String thirdVacTime;
@Excel(name = "第三次接种地点")
private String thirdVacSite;
@Excel(name = "原因")
private String reason;
@Excel(name = "备注")
private String note;
@ExcelIgnore
private Boolean addStatus = false;
@ExcelIgnore
private Integer num;
/**
* 所属网格ID
*/
@ExcelIgnore
private String gridId;
/**
* 组织ID上级
*/
@ExcelIgnore
private String pid;
/**
* 组织ID所有上级
*/
@ExcelIgnore
private String pids;
}

11
epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java

@ -5,6 +5,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CommunityInfoResultDTO;
import com.epmet.dto.result.GridInfoByNameResultDTO;
import com.epmet.dto.result.GridInfoResultDTO;
import com.epmet.dto.result.IcHouseInfoCollectResultDTO;
import com.epmet.feign.fallback.GovOrgFeignClientFallBack;
@ -74,6 +75,16 @@ public interface GovOrgFeignClient {
@PostMapping("/gov/org/customeragency/getCommunityInfo")
Result<CommunityInfoResultDTO> getCommunityInfo(OrgInfoPointFormDTO formDTO);
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.CommunityInfoResultDTO>
* @Author wgf
* @Description 根据网格名称查询所属网格信息
* @Date 2020/4/26 23:16
**/
@PostMapping("/gov/org/customeragency/getGridInfoByGridName")
Result<GridInfoByNameResultDTO> getGridInfoByGridName(GridInfoVaccinePrarmeterFormDTO formDTO);
/**
* @param userId
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.CommunityInfoResultDTO>

6
epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java

@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CommunityInfoResultDTO;
import com.epmet.dto.result.GridInfoByNameResultDTO;
import com.epmet.dto.result.GridInfoResultDTO;
import com.epmet.dto.result.IcHouseInfoCollectResultDTO;
import com.epmet.feign.GovOrgFeignClient;
@ -46,6 +47,11 @@ public class GovOrgFeignClientFallBack implements GovOrgFeignClient {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getCommunityInfo",formDTO);
}
@Override
public Result<GridInfoByNameResultDTO> getGridInfoByGridName(GridInfoVaccinePrarmeterFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGridInfoByGridName",formDTO);
}
@Override
public Result<CommunityInfoResultDTO> getCommunityInfoByUserId(String userId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getCommunityInfoByUserId",userId);

4
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcPointNucleicMonitoringService.java

@ -91,8 +91,8 @@ public interface IcPointNucleicMonitoringService extends BaseService<IcPointNucl
* Desc: 核酸检测点导入
* @param tokenDto
* @param inputStream
* @author zxc
* @date 2022/3/29 15:35
* @author wgf
* @date 2022/6/21 15:35
*/
void importFile(TokenDto tokenDto, InputStream inputStream, String taskId);

11
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccinePrarmeterService.java

@ -2,9 +2,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcVaccinePrarmeterDTO;
import com.epmet.entity.IcVaccinePrarmeterEntity;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
@ -75,4 +77,13 @@ public interface IcVaccinePrarmeterService extends BaseService<IcVaccinePrarmete
* @date 2022-08-22
*/
void delete(String[] ids);
/**
* Desc: 新冠病毒疫苗接种人员信息台账导入
* @param tokenDto
* @param inputStream
* @author wgf
* @date 2022/8/22 15:35
*/
void importFile(TokenDto tokenDto, InputStream inputStream, String taskId);
}

321
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccinePrarmeterServiceImpl.java

@ -1,24 +1,60 @@
package com.epmet.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.ExcelPoiUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcVaccinePrarmeterDao;
import com.epmet.dto.IcVaccinePrarmeterDTO;
import com.epmet.dto.form.GridInfoVaccinePrarmeterFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.OrgInfoPointFormDTO;
import com.epmet.dto.result.CommunityInfoResultDTO;
import com.epmet.dto.result.GridInfoByNameResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.IcPointNucleicMonitoringEntity;
import com.epmet.entity.IcVaccinePrarmeterEntity;
import com.epmet.excel.IcPointNucleicMonitoringImportExcel;
import com.epmet.excel.IcVaccinePrarmeterImportExcel;
import com.epmet.excel.error.PointNucleicMonitoringErrorModel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.redis.IcVaccinePrarmeterRedis;
import com.epmet.service.IcVaccinePrarmeterService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
/**
* 新冠病毒疫苗接种人员信息台账
@ -27,11 +63,21 @@ import java.util.Map;
* @since v1.0.0 2022-08-22
*/
@Service
@Slf4j
public class IcVaccinePrarmeterServiceImpl extends BaseServiceImpl<IcVaccinePrarmeterDao, IcVaccinePrarmeterEntity> implements IcVaccinePrarmeterService {
@Autowired
private IcVaccinePrarmeterRedis icVaccinePrarmeterRedis;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private OssFeignClient ossFeignClient;
@Autowired
private GovOrgFeignClient govOrgFeignClient;
@Override
public PageData<IcVaccinePrarmeterDTO> page(Map<String, Object> params) {
IPage<IcVaccinePrarmeterEntity> page = baseDao.selectPage(
@ -84,4 +130,273 @@ public class IcVaccinePrarmeterServiceImpl extends BaseServiceImpl<IcVaccinePrar
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* Desc: 新冠病毒疫苗接种人员信息台账导入
* @param tokenDto
* @param inputStream
* @param taskId
* @author wgf
* @date 2022/8/22 15:35
*/
@Override
@Async
public void importFile(TokenDto tokenDto, InputStream inputStream, String taskId) {
List<PointNucleicMonitoringErrorModel> errorInfo = new ArrayList<>();
try {
List<IcVaccinePrarmeterImportExcel> list = ExcelPoiUtils.importExcel(inputStream, 0,1, IcVaccinePrarmeterImportExcel.class);
if (CollectionUtils.isEmpty(list)){
closeTask(taskId,tokenDto.getUserId(), ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,"");
return;
}
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo){
throw new EpmetException("未查询到工作人员信息"+tokenDto.getUserId());
}
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfo.getAgencyId());
if (null == agencyInfo){
throw new EpmetException("未查询到组织信息"+staffInfo.getAgencyId());
}
// 校验空单元格以及网格名称是否正确
checkInfo(list,errorInfo,tokenDto);
if (list.size() > errorInfo.size()){
Map<String, Long> groupByName = list.stream().collect(Collectors.groupingBy(IcVaccinePrarmeterImportExcel::getName, Collectors.counting()));
groupByName.forEach((name,count) -> {
if (Integer.valueOf(count.toString()).compareTo(1) != 0){
for (IcVaccinePrarmeterImportExcel i : list) {
if (name.equals(i.getName()) && !i.getAddStatus()){
errorInfo.add(getErrorInfo(i,"数据重复",i.getNum()));
i.setAddStatus(true);
}
}
}
});
}
Map<Boolean, List<IcVaccinePrarmeterImportExcel>> groupByStatus = list.stream().collect(Collectors.groupingBy(IcVaccinePrarmeterImportExcel::getAddStatus));
List<IcVaccinePrarmeterImportExcel> needInsert = groupByStatus.get(false);
if (CollectionUtils.isNotEmpty(needInsert)){
List<IcVaccinePrarmeterEntity> entities = ConvertUtils.sourceToTarget(needInsert, IcVaccinePrarmeterEntity.class);
entities.forEach(e -> {
// 设置客户ID
e.setCustomerId(tokenDto.getCustomerId());
});
insertBatch(entities);
}
if (CollectionUtils.isNotEmpty(errorInfo)){
String url = importOssUpload(errorInfo, PointNucleicMonitoringErrorModel.class);
closeTask(taskId,tokenDto.getUserId(), ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,url);
}else {
closeTask(taskId,tokenDto.getUserId(),ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,"");
}
}catch (Exception e){
log.error(e.getMessage());
closeTask(taskId,tokenDto.getUserId(),ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,"");
}
}
/**
* 校验空单元格以及网格名称是否正确
* @param list
* @param errorInfo
* @param tokenDto
*/
public void checkInfo(List<IcVaccinePrarmeterImportExcel> list,List<PointNucleicMonitoringErrorModel> errorInfo,TokenDto tokenDto){
for (int i = 0; i < list.size(); i++) {
list.get(i).setNum(i+1);
if (StringUtils.isBlank(list.get(i).getGridName()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "所属网格不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getVillageName()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "所属小区不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getBuildName()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "所属楼宇不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getUnitName()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "单元不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getHomeName()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "门牌号不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getName()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "姓名不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getIdCard()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "身份证号不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getMobile()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "咨询电话不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getIsVaccination()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "是否接种不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if("0".equals(list.get(i).getIsVaccination())){
// 未接种 判断是否填写原因
if (StringUtils.isBlank(list.get(i).getReason()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "选择未接种时,原因不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if("其他原因".equals(list.get(i).getReason())){
// 未接种原因选择其他,判断是否填写备注
if (StringUtils.isBlank(list.get(i).getNote()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "选择其他原因时,备注不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
}
}else{
// 已接种 判断是否填写接种时间地点
if (StringUtils.isBlank(list.get(i).getFirstVacTime()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第一次接种时间不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getFirstVacSite()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第一次接种地点不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getSecondVacTime()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第二次接种时间不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getSecondVacSite()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第二次接种地点不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getThirdVacTime()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第三次接种时间不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if (StringUtils.isBlank(list.get(i).getThirdVacSite()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第三次接种地点不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
}
// 校验所属组织通过名称能否匹配到ID
GridInfoVaccinePrarmeterFormDTO formDTO = new GridInfoVaccinePrarmeterFormDTO();
formDTO.setGridName(list.get(i).getGridName());
formDTO.setCustomerId(tokenDto.getCustomerId());
Result<GridInfoByNameResultDTO> resultDTOResult = govOrgFeignClient.getGridInfoByGridName(formDTO);
GridInfoByNameResultDTO gridInfoByNameResultDTO = resultDTOResult.getData();
if(gridInfoByNameResultDTO == null && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "所属网格匹配失败",i+1));
list.get(i).setAddStatus(true);
continue;
}else{
list.get(i).setGridId(gridInfoByNameResultDTO.getDeptId());
list.get(i).setPid(gridInfoByNameResultDTO.getPid());
list.get(i).setPids(gridInfoByNameResultDTO.getPids());
}
}
}
/**
* Desc: 文件上传并返回url
* @param errorRows
* @param tClass
* @author wgf
* @date 2022/8/23 09:16
*/
public <T> String importOssUpload(Collection<?> errorRows, Class<T> tClass) throws IOException {
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表","导入失败的数据列表"),
tClass, errorRows);
// 文件名
String resultDescFileName = UUID.randomUUID().toString().concat(".xls");
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName);
OutputStream os = fileItem.getOutputStream();
Result<UploadImgResultDTO> uploadResult = null;
try {
workbook.write(os);
uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("上传错误描述文件:{}", errormsg);
} finally {
try {
os.close();
} catch (IOException e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("上传错误描述文件关闭输出流:{}", errormsg);
}
try {
fileItem.delete();
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("上传错误描述文件删除临时文件:{}", errormsg);
}
}
if (uploadResult == null || !uploadResult.success()) {
log.error("调用OSS上传结果描述文件失败");
return null;
}
return uploadResult.getData().getUrl();
}
/**
* Desc: 关闭任务
* @param taskId
* @param userId
* @param status
* @param url
* @author wgf
* @date 2022/8/23 09:05
*/
public void closeTask(String taskId,String userId,String status,String url){
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO();
input.setOperatorId(userId);
input.setTaskId(taskId);
input.setProcessStatus(status);
input.setResultDescFilePath(url);
commonServiceOpenFeignClient.finishImportTask(input);
}
/**
* Desc: 构造错误信息
* @param dto
* @param info
* @param num
* @author wgf
* @date 2022/8/23 17:17
*/
public PointNucleicMonitoringErrorModel getErrorInfo(IcVaccinePrarmeterImportExcel dto, String info, Integer num){
PointNucleicMonitoringErrorModel result = ConvertUtils.sourceToTarget(dto, PointNucleicMonitoringErrorModel.class);
result.setErrorMsg(info);
result.setNum(num);
return result;
}
}
Loading…
Cancel
Save