Browse Source

更新房屋内的居民数量

dev
jianjun 3 years ago
parent
commit
297cfa92f2
  1. 12
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  2. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  3. 6
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  4. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java
  5. 46
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java
  6. 8
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java
  7. 26
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  8. 5
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  9. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  10. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/ICWarnStatsEventListener.java
  11. 37
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  12. 4
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

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

@ -790,15 +790,5 @@ public class RedisKeys {
return rootPrefix.concat("updateHouseResiNumber:").concat(customerId);
}
/**
* desc:获取更新 房屋内有居民数量 线程的key
* @param customerId
* @return
*/
public static String updateIcHouseResiNumberThread(String customerId) {
if (StringUtils.isBlank(customerId)){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"参数错误");
}
return rootPrefix.concat("updateHouseResiNumber:thread:").concat(customerId);
}
}

9
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java

@ -12,6 +12,7 @@ import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -672,4 +673,12 @@ public interface GovOrgOpenFeignClient {
*/
@PostMapping("/gov/org/house/getHomeInfoByHouseCode")
Result<HouseInfoResultDTO> getHomeInfoByHouseCode(CommonHouseFormDTO dto);
/**
* desc:根据房屋id更新 屋内的居民数量
* @param paramList
* @return
*/
@PostMapping("/gov/org/ichouse/updateIcHouseResiNumber")
Result<Integer> updateIcHouseResiNumber(List<Map<String,Object>> paramList);
}

6
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java

@ -10,6 +10,7 @@ import com.epmet.dto.result.*;
import com.epmet.feign.GovOrgOpenFeignClient;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -431,4 +432,9 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getHomeInfoByHouseCode", dto);
}
@Override
public Result<Integer> updateIcHouseResiNumber(List<Map<String, Object>> paramList) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "updateIcHouseResiNumber", paramList);
}
}

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java

@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
@ -94,4 +95,14 @@ public class IcHouseController {
public Result<IcHouseDTO> getByHouseCode(@PathVariable("houseCode") String houseCode){
return new Result<IcHouseDTO>().ok(icHouseService.getByHouseCode(houseCode));
}
/**
* desc:更新房屋的屋内居民数
* @param paramList houseId:'123',resiNumber:20
* @return
*/
@PostMapping("updateIcHouseResiNumber")
public Result<Integer> updateIcHouseResiNumber(@RequestBody List<Map<String,Object>> paramList){
return new Result<Integer>().ok(icHouseService.updateIcHouseResiNumber(paramList));
}
}

46
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java

@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -147,29 +148,38 @@ public interface IcHouseDao extends BaseDao<IcHouseEntity> {
List<CreateHouseCodeAndUrlDTO> selectBatchHouseCodeAndUrl(@Param("customerId") String customerId);
/**
* @describe: 通过客户id查询
* @author wangtong
* @date 2022/6/7 18:36
* @params [customerId]
* @return com.epmet.dto.result.IcHouseQrcodeConfigDTO
*/
* @return com.epmet.dto.result.IcHouseQrcodeConfigDTO
* @describe: 通过客户id查询
* @author wangtong
* @date 2022/6/7 18:36
* @params [customerId]
*/
CustomerOrgParameterEntity selectByCustomerId(@Param("customerId") String customerId, @Param("preKey") String preKey);
/**
* @describe: 工作端-通过房屋编码获取房屋信息
* @author wangtong
* @date 2022/6/9 15:23
* @params [houseCode]
* @return com.epmet.dto.result.HouseInfoResultDTO
*/
* @return com.epmet.dto.result.HouseInfoResultDTO
* @describe: 工作端-通过房屋编码获取房屋信息
* @author wangtong
* @date 2022/6/9 15:23
* @params [houseCode]
*/
HouseInfoResultDTO selectHomeInfoByHouseCode(@Param("houseCode") String houseCode);
/**
* @describe: 根据筛选获取需要下载的一户一码信息
* @author wangtong
* @date 2022/6/13 16:34
* @params [formDTO]
* @return java.util.List<com.epmet.dto.result.IcHouseListResultDTO>
*/
* @return java.util.List<com.epmet.dto.result.IcHouseListResultDTO>
* @describe: 根据筛选获取需要下载的一户一码信息
* @author wangtong
* @date 2022/6/13 16:34
* @params [formDTO]
*/
List<IcHouseListResultDTO> searchHouseZipList(IcHouseListFormDTO formDTO);
/**
* desc:更新房屋的屋内居民数
*
* @param paramList houseId:'123',resiNumber:20
* @return
*/
Integer updateIcHouseResiNumber(@Param("paramList") List<Map<String, Object>> paramList);
}

8
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java

@ -11,6 +11,7 @@ import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.entity.IcHouseEntity;
import java.util.List;
import java.util.Map;
/**
* 房屋信息
@ -100,4 +101,11 @@ public interface IcHouseService extends BaseService<IcHouseEntity> {
* @return
*/
String getFullName(String neighborHoodId, String buildingId, String unitId, String doorName);
/**
* desc:更新房屋的屋内居民数
* @param paramList houseId:'123',resiNumber:20
* @return
*/
Integer updateIcHouseResiNumber(List<Map<String, Object>> paramList);
}

26
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java

@ -43,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@ -274,4 +275,29 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
String unitName = Optional.ofNullable(unit).map(u -> u.getUnitNum().concat("单元")).orElse("");
return new StringBuilder().append(neighborhoodName).append(buildingName).append(unitName).append(doorName).toString();
}
@Override
public Integer updateIcHouseResiNumber(List<Map<String, Object>> paramList) {
if (CollectionUtils.isEmpty(paramList)){
log.warn("updateIcHouseResiNumber param is empty");
return 0;
}
IcHouseEntity entity = new IcHouseEntity();
AtomicInteger effects = new AtomicInteger(0);
paramList.forEach(o->{
Object houseId = o.get("houseId");
Object resiNumber = o.get("resiNumber");
if (houseId == null || resiNumber == null){
return;
}
entity.setId(houseId.toString());
entity.setResiNumber(resiNumber.toString());
int i = baseDao.updateById(entity);
effects.incrementAndGet();
});
return effects.get();
// return baseDao.updateIcHouseResiNumber(paramList);
}
}

5
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml

@ -521,5 +521,10 @@
<foreach collection="unitIds" item="id" separator=",">#{id}</foreach>
)
</select>
<update id="updateIcHouseResiNumber">
<foreach collection="paramList" separator=";" item="item" >
UPDATE ic_house SET RESI_NUMBER = #{item.resiNumber} where ID = #{item.houseId} and DEL_FLAG = '0'
</foreach>
</update>
</mapper>

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

@ -376,5 +376,5 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
* @param customerId
* @return
*/
List<HouseIcResiUserCountResultDTO> getResiUserCountGroupHomeId(@Param("customerId") String customerId);
List<Map<String, Object>> getResiUserCountGroupHomeId(@Param("customerId") String customerId);
}

4
epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/ICWarnStatsEventListener.java

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
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.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
@ -69,7 +71,7 @@ public class ICWarnStatsEventListener implements MessageListenerConcurrently {
log.info("obj is {}", JSON.toJSONString(obj));
try {
if (!resiWarnStats(obj)||!updateIcNatResiFlag(tags, obj)||!updateIcHouseResiNumber(obj)){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"消费失败,等待重新消费");
}
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试

37
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -19,12 +19,12 @@ package com.epmet.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.bean.ResiExportBaseInfoData;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.dto.form.DictListFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.DictListResultDTO;
@ -60,7 +60,10 @@ import com.epmet.dto.result.demand.IcResiDemandDictDTO;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.entity.*;
import com.epmet.excel.support.ExportResiUserItemDTO;
import com.epmet.feign.*;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.resi.partymember.feign.ResiPartyMemberOpenFeignClient;
import com.epmet.service.*;
import com.github.pagehelper.Page;
@ -109,8 +112,6 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
@Autowired
private EpmetHeartOpenFeignClient heartOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private IcResiUserAttachmentService icResiUserAttachmentService;
@Autowired
private IcResiUserImportServiceImpl icResiUserImportService;
@ -121,8 +122,6 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
@Autowired
private EpmetAdminOpenFeignClient epmetAdminOpenFeignClient;
@Autowired
private GovOrgFeignClient govOrgFeignClient;
@Autowired
private IcResiUserDao icResiUserDao;
@Autowired
private IcUserChangeRecordService icUserChangeRecordService;
@ -146,8 +145,6 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient;
@Resource
private UserBaseInfoDao userBaseInfoDao;
@Autowired
private DistributedLock distributedLock;
private QueryWrapper<IcResiUserEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
@ -2583,37 +2580,27 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
@Override
public void updateIcHouseResiNumber(String customerId) {
String threadKey = RedisKeys.updateIcHouseResiNumberThread(customerId);
/*RLock lock = distributedLock.getLock(threadKey);
if (lock!= null && lock.isLocked()){
Future<Integer> o = (Future<Integer>) redisUtils.get(threadKey);
if (o != null){
//如果是自己的 则取消就行了
//o.cancel(true);
log.info("updateIcHouseResiNumber 任务取消");
}
}*/
Future submit = executorService.submit(() -> {
int pageNo = 1;
int pageSize = NumConstant.TEN_THOUSAND;
Page<HouseIcResiUserCountResultDTO> houseReisCountListPage = null;
Page<Map<String, Object>> houseReisCountListPage = null;
String key = RedisKeys.getUpdateHouseResiNumer(customerId);
redisUtils.delete(key);
do {
houseReisCountListPage = PageHelper.startPage(pageNo++, pageSize, false)
.doSelectPage(() -> baseDao.getResiUserCountGroupHomeId(customerId));
System.out.println(houseReisCountListPage.getResult().size());
List<HouseIcResiUserCountResultDTO> result = houseReisCountListPage.getResult();
for (HouseIcResiUserCountResultDTO o: result){
redisUtils.leftPush(key,o);
}
List<Map<String, Object>> result = houseReisCountListPage.getResult();
Result<Integer> effectRowResult = govOrgOpenFeignClient.updateIcHouseResiNumber(result);
if (effectRowResult == null || !effectRowResult.success()){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"调用org服务失败");
}
log.debug("updateIcHouseResiNumber org effectRowResult:{}",JSON.toJSONString(effectRowResult));
} while (houseReisCountListPage.getResult().size() == pageSize);
log.info("updateIcHouseResiNumber 执行完毕");
//distributedLock.unLock(lock);
});
redisUtils.set(threadKey,submit);
}
/**

4
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -1132,7 +1132,7 @@
AND customer_id = #{customerId}
AND DEL_FLAG = '0'
</select>
<select id="getResiUserCountGroupHomeId" resultType="com.epmet.dto.result.HouseIcResiUserCountResultDTO">
select HOME_ID,count(1) resiNumber from ic_resi_user WHERE CUSTOMER_ID = #{customerId} and DEL_FLAG = '0' AND `status` = '0' group by HOME_ID
<select id="getResiUserCountGroupHomeId" resultType="java.util.Map">
select HOME_ID houseId,count(1) resiNumber from ic_resi_user WHERE CUSTOMER_ID = #{customerId} and DEL_FLAG = '0' AND `status` = '0' group by HOME_ID
</select>
</mapper>

Loading…
Cancel
Save