From a8db3a15ececfbc8eeab999d4985788b26dfdcb3 Mon Sep 17 00:00:00 2001 From: zhangyuan Date: Mon, 13 Sep 2021 16:10:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epidemic/dao/EpidemicUserInfoDao.java | 21 +++++ .../epidemic/dto/EpidemicUserDeptInfoDTO.java | 50 ++++++++++ .../epidemic/dto/EpidemicUserInfoDTO.java | 1 + .../vim/entity/VaccinationInfoEntity.java | 25 +++++ .../impl/VaccinationInfoServiceImpl.java | 91 ++++++++++++++++++- .../mapper/epidemic/EpidemicUserInfoDao.xml | 42 +++++++++ .../mapper/vim/VaccinationInfoDao.xml | 6 ++ 7 files changed, 232 insertions(+), 4 deletions(-) create mode 100644 epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserDeptInfoDTO.java diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java index 2900311..ad4d65c 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java @@ -4,6 +4,7 @@ package com.elink.esua.epdc.vaccine.epidemic.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicRecordDetailDTO; import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicRecordListDTO; +import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicUserDeptInfoDTO; import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicUserInfoDTO; import com.elink.esua.epdc.vaccine.epidemic.dto.result.EpidemicPageResultDTO; import com.elink.esua.epdc.vaccine.epidemic.dto.result.EpidemicPageResultV2DTO; @@ -90,6 +91,26 @@ public interface EpidemicUserInfoDao extends BaseDao { */ List selectByIdCards(@Param("idCards") List idCards); + /** + * 根据身份证号查询基础信息表网格信息 + * + * @param idCards + * @return java.util.List + * @author zhy + * @date 2021/9/13 15:32 + */ + List selectDeptInfoByIdCards(@Param("idCards") List idCards); + + /** + * 根据身份证号查询基础信息表网格信息 + * + * @param idCard + * @return java.util.List + * @author zhy + * @date 2021/9/13 15:32 + */ + EpidemicUserDeptInfoDTO selectDeptInfoByIdCard(@Param("idCard") String idCard); + /** * @return com.elink.esua.epdc.commons.tools.utils.Result> * @describe: 接种信息列表 diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserDeptInfoDTO.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserDeptInfoDTO.java new file mode 100644 index 0000000..3278b9e --- /dev/null +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserDeptInfoDTO.java @@ -0,0 +1,50 @@ +package com.elink.esua.epdc.vaccine.epidemic.dto; + + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 人员网格归属表 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 2021-01-26 + */ +@Data +public class EpidemicUserDeptInfoDTO implements Serializable { + private static final long serialVersionUID = 1L; + + private Long id; + + private String userName; + + private String idCard; + + /** + * 所属网格ID + */ + private Long gridId; + + /** + * 父所有部门 + */ + private String parentDeptIds; + + /** + * 父所有部门名称 + */ + private String parentDeptNames; + + /** + * 所有部门ID + */ + private String allDeptIds; + + /** + * 所有部门名称 + */ + private String allDeptNames; +} \ No newline at end of file diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserInfoDTO.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserInfoDTO.java index 36e78cc..7cae661 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserInfoDTO.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dto/EpidemicUserInfoDTO.java @@ -79,4 +79,5 @@ public class EpidemicUserInfoDTO implements Serializable { * 网格名称 */ private String gridName; + } \ No newline at end of file diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/entity/VaccinationInfoEntity.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/entity/VaccinationInfoEntity.java index 4d9a466..738fa15 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/entity/VaccinationInfoEntity.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/entity/VaccinationInfoEntity.java @@ -91,4 +91,29 @@ public class VaccinationInfoEntity extends BasePingyinEntity { * 疫苗生成批次、批号 */ private String batchNo; + + /** + * 所属网格ID + */ + private Long gridId; + + /** + * 父所有部门 + */ + private String parentDeptIds; + + /** + * 父所有部门名称 + */ + private String parentDeptNames; + + /** + * 所有部门ID + */ + private String allDeptIds; + + /** + * 所有部门名称 + */ + private String allDeptNames; } \ No newline at end of file diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java index 5d4415a..bcc3e17 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java @@ -18,6 +18,7 @@ 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.EpidemicUserDeptInfoDTO; import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicUserInfoDTO; import com.elink.esua.epdc.vaccine.epidemic.dto.EpidemicUserInfoDTOV2; import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity; @@ -50,6 +51,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -110,6 +112,11 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl authParams = vaccinationUserRoleService.getVaccinationAuthParams(user.getId()); params.putAll(authParams); + // 街道和超管有权查看所有数据 + if (NumConstant.ZERO == user.getSuperAdmin() && user.getDeptId() != 1258587398679126017L) { + params.put("deptIdList", user.getDeptIdList()); + } + List list = getVaccinationInfoList(params); return new PageData<>(list, page.getTotal()); } @@ -157,6 +164,14 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl addressList, Map maxDoseMap) { + List idCards = new ArrayList<>(maxDoseMap.keySet()); + List updateList = new ArrayList<>(); + EpidemicUserInfoDTO epidemicUserInfo; + String idCard; + + if (!idCards.isEmpty()) { + List existUserList = epidemicUserInfoDao.selectByIdCards(idCards); + addressList = epidemicUserInoutRecordDao.getAddressInfo(idCards); + + EpidemicUserInfoDTO updateDto; + for (EpidemicUserInfoDTO item : existUserList) { + if (null == item) { + continue; + } + idCard = item.getIdCard(); + epidemicUserInfo = maxDoseMap.get(idCard.toUpperCase()); + if (null == epidemicUserInfo) { + log.error(idCard); + continue; + } + updateDto = new EpidemicUserInfoDTO(); + epidemicUserInfo = maxDoseMap.get(idCard.toUpperCase()); + // 已经接种完的不需要处理,excel的剂次数据小于数据库时不需要处理,已经接种完的不需要处理 + if (item.getVaccinationState() != NumConstant.TWO && item.getVaccinationNum() <= epidemicUserInfo.getVaccinationNum()) { + updateDto.setIdCard(idCard); + updateDto.setVaccinationNum(epidemicUserInfo.getVaccinationNum()); + if (epidemicUserInfo.getVaccinationNum().equals(epidemicUserInfo.getMaxDose())) { + // 如果最大剂次同于excel的剂次就是接种完成,否则是接种中 + updateDto.setVaccinationState(2); + } else { + updateDto.setVaccinationState(1); + } + updateList.add(updateDto); + } + } + } + // 更新人员的接种信息 + for (EpidemicUserInfoDTO dto : updateList) { + epidemicUserInfoDao.updateVaccinationInfo(dto); + } + log.info("待处理人员数量为:" + idCards.size() + "||可用地址数量为" + addressList.size() + "||实际需要更新的人员信息数量为:" + updateList.size()); + return Boolean.TRUE; + } /** * @return boolean @@ -239,7 +307,7 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl addressList, Map maxDoseMap) { + private boolean updateEpidemicUserInfoV2(List addressList, Map maxDoseMap) { List idCards = new ArrayList<>(maxDoseMap.keySet()); if (!idCards.isEmpty()) { addressList = epidemicUserInoutRecordDao.getAddressInfo(idCards); @@ -309,12 +377,19 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl addList, List addressList, List deleteIdCardArr) { + private boolean insertBatchVaccination(List addList, List addressList, List deleteIdCardArr,Map maxDoseMap) { // 对历史数据根据身份证号进行逻辑删除// 对历史数据根据身份证号进行逻辑删除 if (!deleteIdCardArr.isEmpty()) { baseDao.deleteDistinctDose(deleteIdCardArr); } + log.info("已删除用户数量:" + deleteIdCardArr.size()); + + // 网格信息 + List idCards = new ArrayList<>(maxDoseMap.keySet()); + List userDeptInfoList = epidemicUserInfoDao.selectDeptInfoByIdCards(idCards); + Map deptMaps = userDeptInfoList.stream().collect(Collectors.toMap(EpidemicUserDeptInfoDTO::getIdCard, Function.identity())); + // 插入接种数据 if (!addList.isEmpty()) { List insertUserList = ConvertUtils.sourceToTarget(addList, VaccinationInfoEntity.class); @@ -329,6 +404,14 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl addressList = Lists.newArrayList(); // 更新人员的接种信息 - if (!updateEpidemicUserInfo(addressList, maxDoseMap)) { + if (!updateEpidemicUserInfoV1(addressList, maxDoseMap)) { throw new RenException("更新人员的接种信息失败"); } // 插入接种数据 - if (!insertBatchVaccination(addList, addressList, deleteIdCardArr)) { + if (!insertBatchVaccination(addList, addressList, deleteIdCardArr,maxDoseMap)) { throw new RenException("插入接种数据失败"); } diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml index 94aef8a..1491c4a 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml +++ b/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml @@ -222,6 +222,48 @@ #{idCard} + +