From 723b9ba0d96de57ddecf6172b49ca09a322b32f9 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 19 May 2022 15:49:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8F=96=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E5=92=8C=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E9=87=8C=E7=9A=84?= =?UTF-8?q?=E5=BF=97=E6=84=BF=E8=80=85=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/EpmetHeartOpenFeignClient.java | 12 ++ .../EpmetHeartOpenFeignClientFallback.java | 15 +++ .../controller/ResiVolunteerController.java | 6 + .../epmet/service/VolunteerInfoService.java | 10 ++ .../impl/VolunteerInfoServiceImpl.java | 36 +++++- .../com/epmet/dto/IcVolunteerPolyDTO.java | 14 ++- .../controller/IcVolunteerPolyController.java | 12 ++ .../java/com/epmet/dao/IcResiUserDao.java | 10 ++ .../com/epmet/dao/IcVolunteerPolyDao.java | 3 + .../epmet/entity/IcVolunteerPolyEntity.java | 13 +- .../epmet/service/IcVolunteerPolyService.java | 9 ++ .../impl/IcVolunteerPolyServiceImpl.java | 116 +++++++++++++++++- .../main/resources/mapper/IcResiUserDao.xml | 20 +++ .../resources/mapper/IcVolunteerPolyDao.xml | 8 +- 14 files changed, 271 insertions(+), 13 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java index 133cb6200c..6677f738f6 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.ActInfoDTO; +import com.epmet.dto.IcVolunteerPolyDTO; import com.epmet.dto.VolunteerInfoDTO; import com.epmet.dto.form.AutoEvaluateDemandFormDTO; import com.epmet.dto.form.CommonCustomerFormDTO; @@ -107,4 +108,15 @@ public interface EpmetHeartOpenFeignClient { @PostMapping("/heart/icresidemanddict/demandoption") Result> getDemandOptions(); + + /** + * 获取客户下志愿者列表 + * + * @Param customerId + * @Return {@link Result< List< IcVolunteerPolyDTO>>} + * @Author zhaoqifeng + * @Date 2022/5/19 11:14 + */ + @PostMapping("/heart/resi/volunteer/getVolunteerList/{customerId}") + Result> getVolunteerList(@PathVariable("customerId") String customerId); } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java index a0af921435..d96476f4cf 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.ActInfoDTO; +import com.epmet.dto.IcVolunteerPolyDTO; import com.epmet.dto.VolunteerInfoDTO; import com.epmet.dto.form.AutoEvaluateDemandFormDTO; import com.epmet.dto.form.CommonCustomerFormDTO; @@ -108,4 +109,18 @@ public class EpmetHeartOpenFeignClientFallback implements EpmetHeartOpenFeignCli public Result> getDemandOptions() { return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "getDemandOptions", null); } + + /** + * 获取客户下志愿者列表 + * + * @param customerId + * @Param customerId + * @Return {@link Result< List< IcVolunteerPolyDTO >>} + * @Author zhaoqifeng + * @Date 2022/5/19 11:14 + */ + @Override + public Result> getVolunteerList(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "getVolunteerList", customerId); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java index 410cbdf981..5aee9461b7 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java @@ -21,6 +21,7 @@ import com.epmet.commons.tools.annotation.LoginUser; 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.dto.IcVolunteerPolyDTO; import com.epmet.dto.VolunteerInfoDTO; import com.epmet.dto.form.CommonCustomerFormDTO; import com.epmet.dto.form.demand.ServiceQueryFormDTO; @@ -170,4 +171,9 @@ public class ResiVolunteerController { volunteerInfoService.modifyVolunteerGrid(volunteerInfoDTO); return new Result(); } + + @PostMapping("getVolunteerList/{customerId}") + public Result> getVolunteerList(@PathVariable("customerId") String customerId) { + return new Result>().ok(volunteerInfoService.getVolunteerList(customerId)); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java index 7cd4d30769..0c0c0e7b5e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java @@ -20,6 +20,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.IcVolunteerPolyDTO; import com.epmet.dto.VolunteerInfoDTO; import com.epmet.dto.form.CommonCustomerFormDTO; import com.epmet.dto.form.resi.ResiSendSmsCodeFormDTO; @@ -117,4 +118,13 @@ public interface VolunteerInfoService extends BaseService { * @param volunteerInfoDTO */ void modifyVolunteerGrid(VolunteerInfoDTO volunteerInfoDTO); + + /** + * 获取客户下志愿者 + * @Param customerId + * @Return {@link List< IcVolunteerPolyDTO>} + * @Author zhaoqifeng + * @Date 2022/5/19 10:58 + */ + List getVolunteerList(String customerId); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java index 846e342657..6acc0c4e3d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java @@ -39,10 +39,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.constant.SmsTemplateConstant; import com.epmet.constant.SystemMessageType; import com.epmet.dao.VolunteerInfoDao; -import com.epmet.dto.CustomerAgencyDTO; -import com.epmet.dto.CustomerGridDTO; -import com.epmet.dto.HeartUserInfoDTO; -import com.epmet.dto.VolunteerInfoDTO; +import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.form.resi.ResiSendSmsCodeFormDTO; import com.epmet.dto.form.resi.ResiVolunteerAuthenticateFormDTO; @@ -424,4 +421,35 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2022/5/19 10:58 + */ + @Override + public List getVolunteerList(String customerId) { + if (StringUtils.isBlank(customerId)) { + return Collections.emptyList(); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(VolunteerInfoEntity::getCustomerId, customerId); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(item -> { + IcVolunteerPolyDTO dto = new IcVolunteerPolyDTO(); + dto.setCustomerId(item.getCustomerId()); + dto.setAgencyId(item.getPid()); + dto.setAgencyPids(item.getPids()); + dto.setUserId(item.getUserId()); + dto.setVolunteerCategory("qita"); + return dto; + }).collect(Collectors.toList()); + } } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVolunteerPolyDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVolunteerPolyDTO.java index 3a237f0856..2dd4a32511 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVolunteerPolyDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVolunteerPolyDTO.java @@ -1,8 +1,9 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -36,6 +37,16 @@ public class IcVolunteerPolyDTO implements Serializable { */ private String agencyPids; + /** + * 居民端用户id + */ + private String userId; + + /** + * 对应的ic_resi_user主表Id + */ + private String icResiUser; + /** * 居住成员1姓名 */ @@ -65,6 +76,7 @@ public class IcVolunteerPolyDTO implements Serializable { * 纬度 */ private String latitude; + private String volunteerCategory; /** * 乐观锁 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVolunteerPolyController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVolunteerPolyController.java index af09d7312f..3b8fe6885d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVolunteerPolyController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVolunteerPolyController.java @@ -104,4 +104,16 @@ public class IcVolunteerPolyController { return new Result().ok(data); } + /** + * 抽取志愿者数据 + * @Param customerId + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/5/19 15:41 + */ + @PostMapping("volunteerDataExtraction/{customerId}") + public Result volunteerDataExtraction(@PathVariable("customerId") String customerId){ + icVolunteerPolyService.volunteerDataExtraction(customerId); + return new Result(); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index 41903388f5..a8b65b6ed2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; import com.epmet.dto.IcResiUserDTO; +import com.epmet.dto.IcVolunteerPolyDTO; import com.epmet.dto.form.EpidemicPreventionFormDTO; import com.epmet.dto.form.RentTenantDataFormDTO; import com.epmet.dto.form.ResiUserQueryValueDTO; @@ -309,4 +310,13 @@ public interface IcResiUserDao extends BaseDao { * @return */ List getResiUserGroupHomeId(RentTenantDataFormDTO formDTO); + + /** + * 获取客户下志愿者信息 + * @Param customerId + * @Return {@link List< IcVolunteerPolyDTO>} + * @Author zhaoqifeng + * @Date 2022/5/19 10:40 + */ + List getVolunteerList(@Param("customerId") String customerId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVolunteerPolyDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVolunteerPolyDao.java index 79ca4b5d4d..d138a2a9d4 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVolunteerPolyDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVolunteerPolyDao.java @@ -31,4 +31,7 @@ public interface IcVolunteerPolyDao extends BaseDao { */ List getList(@Param("code") String code, @Param("customerId") String customerId); + + void deleteDataByCustomerId(@Param("customerId") String customerId); + void deleteCategoryByCustomerId(@Param("customerId") String customerId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVolunteerPolyEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVolunteerPolyEntity.java index 7db2e18595..8eb0922704 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVolunteerPolyEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVolunteerPolyEntity.java @@ -1,13 +1,10 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; - /** * 志愿者信息聚合 * @@ -36,6 +33,16 @@ public class IcVolunteerPolyEntity extends BaseEpmetEntity { */ private String agencyPids; + /** + * 居民端用户id + */ + private String userId; + + /** + * 对应的ic_resi_user主表Id + */ + private String icResiUser; + /** * 居住成员1姓名 */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVolunteerPolyService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVolunteerPolyService.java index f1b8ae62a4..897c0cb136 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVolunteerPolyService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVolunteerPolyService.java @@ -98,4 +98,13 @@ public interface IcVolunteerPolyService extends BaseService implements IcVolunteerPolyService { + @Resource + private IcResiUserDao icResiUserDao; + @Resource + private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient; + @Resource + private UserBaseInfoDao userBaseInfoDao; + @Resource + private IcVolunteerPolyCategoryService icVolunteerPolyCategoryService; + @Override public PageData page(Map params) { @@ -138,4 +162,90 @@ public class IcVolunteerPolyServiceImpl extends BaseServiceImpl(result, info.getTotal()); } + /** + * 志愿者数据抽取 + * + * @param customerId + * @Param customerId + * @Return void + * @Author zhaoqifeng + * @Date 2022/5/19 10:00 + */ + @Override + public void volunteerDataExtraction(String customerId) { + //获取居民信息表的志愿者 + List volunteerList = icResiUserDao.getVolunteerList(customerId); + if (CollectionUtils.isEmpty(volunteerList)) { + volunteerList = new ArrayList<>(); + } + //获取小程序居民端志愿者 + Result> result = epmetHeartOpenFeignClient.getVolunteerList(customerId); + if (!result.success()) { + log.error("志愿者数据抽取-获取小程序志愿者失败"); + } + List appVolunteerList = result.getData(); + if (CollectionUtils.isNotEmpty(appVolunteerList)) { + //获取居民信息 + List userIds = appVolunteerList.stream().map(IcVolunteerPolyDTO::getUserId).collect(Collectors.toList()); + + //根据志愿者的userId获取居民信息并转成map + List userList = new ArrayList<>(); + List> partition = ListUtils.partition(userIds, NumConstant.FIFTY); + partition.forEach(part -> userList.addAll(getUserInfoList(part))); + Map userMap = userList.stream().collect(Collectors.toMap(UserBaseInfoEntity::getUserId, a -> a, (o, n) -> o)); + //将居民志愿者转成map + Map volunteerMap = volunteerList.stream().collect(Collectors.toMap(IcVolunteerPolyDTO::getIdCard,a -> a, (o, n) -> o)); + //小程序与居民信息匹配不上的志愿者 + List notInList = new ArrayList<>(); + appVolunteerList.forEach(item -> { + //补充志愿者信息 + if (userMap.containsKey(item.getUserId())) { + UserBaseInfoEntity userInfo = userMap.get(item.getUserId()); + item.setName(userInfo.getRealName()); + item.setIdCard(userInfo.getIdNum()); + item.setMobile(userInfo.getMobile()); + } + //小程序与居民信息匹配不上的志愿者拿出来 + if (!volunteerMap.containsKey(item.getIdCard())) { + notInList.add(item); + } + }); + //将小程序的志愿者列表转成map + Map appVolunteerMap = appVolunteerList.stream().collect(Collectors.toMap(IcVolunteerPolyDTO::getIdCard,a -> a, (o, n) -> o)); + ////小程序与居民信息匹配上的志愿者userId更新到居民志愿者列表 + volunteerList.forEach(item -> { + if (appVolunteerMap.containsKey(item.getIdCard())) { + item.setUserId(appVolunteerMap.get(item.getIdCard()).getUserId()); + } + }); + volunteerList.addAll(notInList); + } + if (CollectionUtils.isNotEmpty(volunteerList)) { + //删除原数据 + baseDao.deleteDataByCustomerId(customerId); + baseDao.deleteCategoryByCustomerId(customerId); + //保存新数据 + volunteerList.forEach(item -> { + IcVolunteerPolyEntity entity = ConvertUtils.sourceToTarget(item, IcVolunteerPolyEntity.class); + baseDao.insert(entity); + List categoryList = Arrays.asList(item.getVolunteerCategory().split(StrConstant.COMMA)); + List entityList = categoryList.stream().map(o -> { + IcVolunteerPolyCategoryEntity category = new IcVolunteerPolyCategoryEntity(); + category.setCustomerId(item.getCustomerId()); + category.setIdCard(item.getIdCard()); + category.setLatitude(item.getLatitude()); + category.setLongitude(item.getLongitude()); + category.setVolunteerCategory(o); + return category; + }).collect(Collectors.toList()); + icVolunteerPolyCategoryService.insertBatch(entityList); + }); + } + } + private List getUserInfoList(List userIds) { + LambdaQueryWrapper userInfoWrapper = new LambdaQueryWrapper<>(); + userInfoWrapper.in(UserBaseInfoEntity::getUserId, userIds); + return userBaseInfoDao.selectList(userInfoWrapper); + } + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 7057ade746..7204a7b22b 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -972,4 +972,24 @@ + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVolunteerPolyDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVolunteerPolyDao.xml index 617416426e..90e1558333 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVolunteerPolyDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVolunteerPolyDao.xml @@ -54,6 +54,10 @@ c.VOLUNTEER_CATEGORY = #{code} AND c.CUSTOMER_ID = #{customerId} - - + + delete from ic_volunteer_poly where CUSTOMER_ID = #{customerId} + + + delete from ic_volunteer_poly_category where CUSTOMER_ID = #{customerId} + \ No newline at end of file