Browse Source

接种记录表中,人员的街道网格等信息,增加按钮更新,增加导入时更新地址

feature/yujt_vim
zhangyuan 5 years ago
parent
commit
b2242aeae0
  1. 2
      epdc-cloud-client-yushan
  2. 2
      epdc-cloud-commons-yushan
  3. 83
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInoutRecordDao.java
  4. 6
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/controller/VaccinationInfoController.java
  5. 20
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/dao/VaccinationInfoDao.java
  6. 10
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/VaccinationInfoService.java
  7. 74
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java
  8. 21
      epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInoutRecordDao.xml
  9. 43
      epdc-cloud-vim-yushan/src/main/resources/mapper/vim/VaccinationInfoDao.xml

2
epdc-cloud-client-yushan

@ -1 +1 @@
Subproject commit 25b88835bfb861f17fcec918f51e35d1922dbe2d
Subproject commit 8988e6551401ce573c21834f842f0f68ddbd98b2

2
epdc-cloud-commons-yushan

@ -1 +1 @@
Subproject commit ea8dce697c0d53096b090c2f13c5a8c6ee0a24e0
Subproject commit 60b469fb3d9fccb7220f65c3ddbaa412033ecc01

83
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInoutRecordDao.java

@ -24,108 +24,119 @@ import java.util.List;
@Mapper
public interface EpidemicUserInoutRecordDao extends BaseDao<EpidemicUserInoutRecordEntity> {
/*
*
/**
* 根据身份证号更新身份证
* @param s 新身份证号
* @param idCard 旧身份证号
*
* @param s 新身份证号
* @param idCard 旧身份证号
* @return void
* @author wk
* @date 2021-01-29 13:48
* @return void
*/
void updateListByIdCard(@Param("s") String s, @Param("idCard") String idCard);
/*
*
/**
* 判断人员出现状态
* @param idCard 身份证号
*
* @param idCard 身份证号
* @return java.lang.Integer
* @author wk
* @date 2021-01-29 14:45
* @return java.lang.Integer
*/
Integer selectByState(@Param("idCard") String idCard);
/**
* @describe: 人口类别分析
* @author wangtong
* @date 2021/3/3 16:31
* @params []
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.dto.ScreenPeopleCategoryDetailDTO>
*/
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.dto.ScreenPeopleCategoryDetailDTO>
* @describe: 人口类别分析
* @author wangtong
* @date 2021/3/3 16:31
* @params []
*/
List<ScreenPeopleCategoryDetailDTO> getPersonCategory();
/*
*
/**
* 查询房屋总数
*
* @return java.lang.Integer
* @author wk
* @date 2021-03-03 16:51
* @return java.lang.Integer
*/
Integer getHouseNum();
/*
*
/**
* 查询房屋分类请况
*
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.dto.HouseNumTypeDto>
* @author wk
* @date 2021-03-03 17:05
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.dto.HouseNumTypeDto>
*/
List<HouseNumTypeDto> selectHouseType();
/*
*
/**
* 查询房屋种类
*
* @return java.util.List<java.lang.String>
* @author wk
* @date 2021-03-03 17:20
* @return java.util.List<java.lang.String>
*/
List<String> getHouseTypeNames();
/*
*
/**
* 查询所在区域 以及其房屋数量
*
* @return java.util.Map<java.lang.String, java.lang.Integer>
* @author wk
* @date 2021-03-03 17:43
* @return java.util.Map<java.lang.String,java.lang.Integer>
*/
List<HouseNumTypeDto> getHouseNumByArea();
/**
* @return com.elink.esua.epdc.vaccine.epidemic.dto.ScreenPersonTypeDTO
* @describe: 人群类型分布
* @author wangtong
* @date 2021/3/3 17:58
* @params []
* @return com.elink.esua.epdc.vaccine.epidemic.dto.ScreenPersonTypeDTO
*/
List<ScreenPeopleCategoryDetailDTO> getPersonType();
/**
* @return com.elink.esua.epdc.commons.tools.utils.Result<ResidentialBuildInfoDetailDTO>
* @describe: 小区楼宇基本信息
* @author wanggongfeng
* @date 2021/3/4
* @params formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result<ResidentialBuildInfoDetailDTO>
*/
List<ResidentialBuildInfoDetailDTO> getResidentialBuildInfoList(ResidentialBuildInfoFormDTO formDTO);
Integer getTotal(ResidentialBuildInfoFormDTO formDTO);
/**
* @return com.elink.esua.epdc.commons.tools.utils.Result<BuildSearchDetailDTO>
* @describe: 小区楼宇搜索
* @author wanggongfeng
* @date 2021/3/4
* @params formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result<BuildSearchDetailDTO>
*/
List<BuildSearchDetailDTO> getsearchList(BuildSearchFormDTO formDTO);
Integer getsearchTotal(BuildSearchFormDTO formDTO);
/**
* @describe: 人口区域分布
* @author wangtong
* @date 2021/3/4 17:52
* @params []
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.dto.ScreenPersonArealDistributionSqlDTO>
*/
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.dto.ScreenPersonArealDistributionSqlDTO>
* @describe: 人口区域分布
* @author wangtong
* @date 2021/3/4 17:52
* @params []
*/
List<ScreenPersonArealDistributionSqlDTO> getPersonArealDistribution();
/**
* 查询人员地址信息
*
* @param idCards
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInoutRecordEntity>
* @author zhy
* @date 2021/5/20 17:37
*/
List<EpidemicUserInoutRecordEntity> getAddressInfo(@Param("idCards") List<String> idCards);
}

6
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/controller/VaccinationInfoController.java

@ -84,6 +84,12 @@ public class VaccinationInfoController {
ExcelUtils.exportExcelToTarget(response, null, list, VaccinationInfoExcel.class);
}
@GetMapping("updateAddress")
public Result updateAddress() {
return vaccinationInfoService.updateAddress();
}
/**
* @Description: 批量导入
* @Param: [file]

20
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/dao/VaccinationInfoDao.java

@ -1,7 +1,6 @@
package com.elink.esua.epdc.vaccine.vim.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity;
import com.elink.esua.epdc.vaccine.vim.dto.VaccinationInfoDTO;
import com.elink.esua.epdc.vaccine.vim.dto.result.EpdcAppVimInfoResultDTO;
import com.elink.esua.epdc.vaccine.vim.entity.VaccinationInfoEntity;
@ -40,6 +39,15 @@ public interface VaccinationInfoDao extends BaseDao<VaccinationInfoEntity> {
*/
List<VaccinationInfoEntity> checkVaccination(VaccinationInfoDTO dto);
/**
* 查询地址为空的记录
*
* @return java.util.List<com.elink.esua.epdc.vaccine.vim.entity.VaccinationInfoEntity>
* @author zhy
* @date 2021/4/22 18:35
*/
List<VaccinationInfoEntity> checkEmptyAddress();
/**
* 覆盖重复剂次
*
@ -50,6 +58,16 @@ public interface VaccinationInfoDao extends BaseDao<VaccinationInfoEntity> {
*/
void deleteDistinctDose(@Param("deleteVaccArr") List<Long> deleteVaccArr);
/**
* 更新地址信息
*
* @param entity
* @return void
* @author zhy
* @date 2021/5/20 17:46
*/
void updateAddress(VaccinationInfoEntity entity);
/**
* 查询实际接种情况
*

10
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/VaccinationInfoService.java

@ -68,6 +68,16 @@ public interface VaccinationInfoService extends CrudService<VaccinationInfoEntit
*/
Result deleteNew(Long[] ids);
/**
* 更新地址信息
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/5/20 17:08
*/
Result updateAddress();
/**
* 批量导入
*

74
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java

@ -14,8 +14,10 @@ import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.vaccine.common.base.BaseVimCurdServiceImpl;
import com.elink.esua.epdc.vaccine.epidemic.constant.StrConstant;
import com.elink.esua.epdc.vaccine.epidemic.dao.EpidemicUserInfoDao;
import com.elink.esua.epdc.vaccine.epidemic.dao.EpidemicUserInoutRecordDao;
import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicUserInfoDTO;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInoutRecordEntity;
import com.elink.esua.epdc.vaccine.epidemic.service.EpidemicUserInfoService;
import com.elink.esua.epdc.vaccine.epidemic.utils.StreamUtils;
import com.elink.esua.epdc.vaccine.vim.dao.VaccinationErrorDao;
@ -26,7 +28,10 @@ import com.elink.esua.epdc.vaccine.vim.dto.result.VaccineDto;
import com.elink.esua.epdc.vaccine.vim.entity.VaccinationErrorEntity;
import com.elink.esua.epdc.vaccine.vim.entity.VaccinationInfoEntity;
import com.elink.esua.epdc.vaccine.vim.excel.VaccinationInfoAllExcel;
import com.elink.esua.epdc.vaccine.vim.service.*;
import com.elink.esua.epdc.vaccine.vim.service.VaccinationErrorService;
import com.elink.esua.epdc.vaccine.vim.service.VaccinationInfoService;
import com.elink.esua.epdc.vaccine.vim.service.VaccinationSiteService;
import com.elink.esua.epdc.vaccine.vim.service.VaccineCompanyService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -36,10 +41,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -64,6 +66,8 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl<Vaccinati
private VaccinationErrorDao vaccinationErrorDao;
@Resource
private EpidemicUserInfoDao epidemicUserInfoDao;
@Resource
private EpidemicUserInoutRecordDao epidemicUserInoutRecordDao;
@Override
public QueryWrapper<VaccinationInfoEntity> getWrapper(Map<String, Object> params) {
@ -132,6 +136,28 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl<Vaccinati
return new Result();
}
@Override
public Result updateAddress() {
// 剂次重复校验
List<VaccinationInfoEntity> entities = baseDao.checkEmptyAddress();
List<String> allUserIdCards = entities.stream().map(VaccinationInfoEntity::getIdentityNo).collect(Collectors.toList());
List<EpidemicUserInoutRecordEntity> addressList = epidemicUserInoutRecordDao.getAddressInfo(allUserIdCards);
entities.forEach(entity -> {
Optional<EpidemicUserInoutRecordEntity> addressOptional = addressList.stream().filter(address -> address.getIdCard().equals(entity.getIdentityNo())).findFirst();
if (addressOptional.isPresent()) {
entity.setStreet(addressOptional.get().getLiveAddressName());
entity.setStreetId(addressOptional.get().getLiveAddressCode());
entity.setCommunity(addressOptional.get().getCommunity());
entity.setGrid(addressOptional.get().getGridName());
entity.setVillageName(addressOptional.get().getPlot());
baseDao.updateAddress(entity);
}
});
log.info("已更新" + entities.size() + "条记录");
return new Result();
}
@Override
@Transactional
public Result deleteNew(Long[] ids) {
@ -285,12 +311,17 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl<Vaccinati
log.info("循环结束,判断人员信息是否需要更新");
List<String> idCards = new ArrayList<>(maxDoseMap.keySet());
List<VaccinationInfoEntity> insertUserList = new ArrayList<>();
List<EpidemicUserInfoDTO> updateList = new ArrayList<>();
List<VaccinationErrorEntity> insertErrorList = new ArrayList<>();
List<EpidemicUserInoutRecordEntity> addressList = new ArrayList<>();
EpidemicUserInfoDTO epidemicUserInfo;
String idCard;
if (!idCards.isEmpty()) {
List<EpidemicUserInfoDTO> existUserList = epidemicUserInfoDao.selectByIdCards(idCards);
addressList = epidemicUserInoutRecordDao.getAddressInfo(idCards);
EpidemicUserInfoDTO updateDto;
for (EpidemicUserInfoDTO item : existUserList) {
if (null == item) {
@ -318,27 +349,42 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl<Vaccinati
}
}
}
log.info("需要更新的人员信息数量为:" + updateList.size());
log.info("待处理人员数量为:" + idCards.size() + "||可用地址数量为" + addressList.size() + "||实际需要更新的人员信息数量为:" + updateList.size());
// 对历史数据根据身份证号进行逻辑删除
if (!deleteIdCardArr.isEmpty()) {
baseDao.deleteDistinctDose(deleteIdCardArr);
}
// 插入接种数据
List<VaccinationInfoEntity> insertUserList = ConvertUtils.sourceToTarget(addList, VaccinationInfoEntity.class);
insertBatch(insertUserList);
if (!addList.isEmpty()) {
insertUserList = ConvertUtils.sourceToTarget(addList, VaccinationInfoEntity.class);
List<EpidemicUserInoutRecordEntity> finalAddressList = addressList;
insertUserList.forEach(entity -> {
Optional<EpidemicUserInoutRecordEntity> addressOptional = finalAddressList.stream().filter(address -> address.getIdCard().equals(entity.getIdentityNo())).findFirst();
if (addressOptional.isPresent()) {
entity.setStreet(addressOptional.get().getLiveAddressName());
entity.setStreetId(addressOptional.get().getLiveAddressCode());
entity.setCommunity(addressOptional.get().getCommunity());
entity.setGrid(addressOptional.get().getGridName());
entity.setVillageName(addressOptional.get().getPlot());
}
});
insertBatch(insertUserList);
}
// 更新人员的接种信息
for (EpidemicUserInfoDTO dto : updateList) {
epidemicUserInfoDao.updateVaccinationInfo(dto);
}
// 批量插入错误数据
List<VaccinationErrorEntity> insertErrorList = ConvertUtils.sourceToTarget(addErrorList, VaccinationErrorEntity.class);
Integer insertNo = vaccinationErrorDao.getMaxInsertNo();
for (VaccinationErrorEntity entity : insertErrorList) {
entity.setInsertNo(insertNo);
if (!addErrorList.isEmpty()) {
insertErrorList = ConvertUtils.sourceToTarget(addErrorList, VaccinationErrorEntity.class);
Integer insertNo = vaccinationErrorDao.getMaxInsertNo();
for (VaccinationErrorEntity entity : insertErrorList) {
entity.setInsertNo(insertNo);
}
vaccinationErrorService.insertBatch(insertErrorList);
}
vaccinationErrorService.insertBatch(insertErrorList);
log.info("已删除用户数量:" + deleteIdCardArr.size() + "||已插入接种记录" + insertUserList.size() + "||已更新用户记录:" + updateList.size() + "||错误信息记录:" + insertErrorList.size());
// 提示报错信息
if (CollUtil.isNotEmpty(addErrorList)) {

21
epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInoutRecordDao.xml

@ -395,6 +395,25 @@
group by d.id
</select>
<select id="getAddressInfo" resultType="com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInoutRecordEntity">
SELECT
ID_CARD,
LIVE_ADDRESS_NAME,
LIVE_ADDRESS_CODE,
COMMUNITY,
GRID_NAME,
PLOT
FROM
epidemic_user_inout_record
WHERE
DEL_FLAG = 0
AND ID_CARD IS NOT NULL
AND ID_CARD in
<foreach collection="idCards" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
GROUP BY
ID_CARD
</select>
</mapper>

43
epdc-cloud-vim-yushan/src/main/resources/mapper/vim/VaccinationInfoDao.xml

@ -3,7 +3,6 @@
<mapper namespace="com.elink.esua.epdc.vaccine.vim.dao.VaccinationInfoDao">
<select id="getVaccinationInfoList" resultType="com.elink.esua.epdc.vaccine.vim.dto.VaccinationInfoDTO">
SELECT
DATE_FORMAT(v.VACCINATION_TIME,'%Y-%m-%d %H:%i:%S') as VACCINATION_TIME,
@ -66,15 +65,51 @@
</if>
</select>
<select id="checkEmptyAddress" resultType="com.elink.esua.epdc.vaccine.vim.entity.VaccinationInfoEntity">
SELECT
ID, IDENTITY_NO
FROM
vaccination_info
WHERE
DEL_FLAG = 0
AND (
LENGTH(trim(COUNTY)) = 0
OR COUNTY IS NULL
)
AND (
LENGTH(trim(STREET)) = 0
OR STREET IS NULL
)
AND (
LENGTH(trim(COMMUNITY)) = 0
OR COMMUNITY IS NULL
)
AND (
LENGTH(trim(GRID)) = 0
OR GRID IS NULL
)
</select>
<update id="deleteDistinctDose">
UPDATE vaccination_info
SET DEL_FLAG = '1'
WHERE id in
UPDATE vaccination_info
SET DEL_FLAG = '1'
WHERE id in
<foreach collection="deleteVaccArr" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<update id="updateAddress">
UPDATE vaccination_info
SET
STREET = #{street},
STREET_ID = #{streetId},
COMMUNITY = #{community},
GRID = #{grid},
VILLAGE_NAME = #{villageName}
WHERE id = #{id}
</update>
<select id="selectAllVaccinationInfo" resultType="com.elink.esua.epdc.vaccine.vim.dto.VaccinationInfoDTO">
SELECT
COUNT(0) AS dose,

Loading…
Cancel
Save