From c7b8e07ce35e899f8c9fe676575c9441fe743e00 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 15 Jul 2022 17:06:41 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=BC=8F=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 12 + .../service/impl/IcResiUserServiceImpl.java | 339 +++++++++--------- 2 files changed, 186 insertions(+), 165 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index b9795ef8dc..99dca942df 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -778,6 +778,18 @@ public class RedisKeys { return rootPrefix.concat("lock:").concat(methodName); } + /** + * desc:获取分布式锁key + * @param customerId + * @return + */ + public static String getXiaoquEditLock(String customerId) { + if (StringUtils.isBlank(customerId)){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"参数错误"); + } + return rootPrefix.concat("lock:xiaoquedit").concat(customerId); + } + /** * desc:获取更新 房屋内有居民数量的key * @param customerId diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 6fc096dfd4..a2a67103c3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; 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; @@ -78,6 +79,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; +import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -153,6 +155,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl formDTO) { - //1.校验主表数据是否存在 - String resiUserId = ""; - LinkedHashMap map = new LinkedHashMap<>(); - com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO partyMemberDTO = new com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO(); - Map>> formMap = formDTO.stream().collect(Collectors.toMap(IcResiUserFormDTO::getTableName, IcResiUserFormDTO::getList)); - boolean isDyzxh = false; - //判断是否是党员中心户 - if (formMap.containsKey("ic_party_member")) { - for (LinkedHashMap hash : formMap.get("ic_party_member")) { - if (NumConstant.ONE_STR.equals(hash.get("IS_DYZXH"))) { - isDyzxh = true; + RLock lock = null; + try { + lock = distributedLock.getLock(RedisKeys.getXiaoquEditLock(tokenDto.getCustomerId()), 120L, 3L,TimeUnit.SECONDS); + //1.校验主表数据是否存在 + String resiUserId = ""; + LinkedHashMap map = new LinkedHashMap<>(); + com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO partyMemberDTO = new com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO(); + Map>> formMap = formDTO.stream().collect(Collectors.toMap(IcResiUserFormDTO::getTableName, IcResiUserFormDTO::getList)); + boolean isDyzxh = false; + //判断是否是党员中心户 + if (formMap.containsKey("ic_party_member")) { + for (LinkedHashMap hash : formMap.get("ic_party_member")) { + if (NumConstant.ONE_STR.equals(hash.get("IS_DYZXH"))) { + isDyzxh = true; + } } } - } - for (IcResiUserFormDTO d : formDTO) { - if ("ic_resi_user".equals(d.getTableName())) { - map = d.getList().get(0); - if (!map.containsKey("ID")) { - throw new RenException(String.format("居民信息修改-居民信息表主键值为空")); - } - //2021.11.25 新增需求 客户下身份证号唯一 start - if (map.containsKey("ID_CARD")) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcResiUserEntity::getCustomerId, tokenDto.getCustomerId()); - wrapper.eq(IcResiUserEntity::getIdCard, map.get("ID_CARD")); - wrapper.ne(IcResiUserEntity::getId, map.get("ID")); - List entityList = baseDao.selectList(wrapper); - if (CollectionUtils.isNotEmpty(entityList)) { - String errorMsg = "修改居民信息失败,身份证号已存在!"; - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + for (IcResiUserFormDTO d : formDTO) { + if ("ic_resi_user".equals(d.getTableName())) { + map = d.getList().get(0); + if (!map.containsKey("ID")) { + throw new RenException(String.format("居民信息修改-居民信息表主键值为空")); } - } - //2021.11.25 end - //2022.04.19 start 这个房屋下已经设置了户主后,再次选择户主时提示提示“房屋下已存在户主” PS.户主指与户主关系是本人的用户 - if (map.containsKey("YHZGX") && RelationshipEnum.SELF.getCode().equals(map.get("YHZGX"))) { - IcResiUserEntity entity = baseDao.selectById(map.get("ID")); - if (entity != null && !RelationshipEnum.SELF.getCode().equals(entity.getYhzgx())) { + //2021.11.25 新增需求 客户下身份证号唯一 start + if (map.containsKey("ID_CARD")) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcResiUserEntity::getHomeId, entity.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getCustomerId, tokenDto.getCustomerId()); + wrapper.eq(IcResiUserEntity::getIdCard, map.get("ID_CARD")); + wrapper.ne(IcResiUserEntity::getId, map.get("ID")); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { - String errorMsg = "房屋下已存在户主"; - throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); + String errorMsg = "修改居民信息失败,身份证号已存在!"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); } } - } - //2022.04.19 end - resiUserId = map.get("ID"); - //2022.05.18 start zhaoqf 党员信息同步 - IcResiUserEntity icResiUser = baseDao.selectById(resiUserId); - if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY")))) { - if (formMap.containsKey("ic_party_member")) { - for (LinkedHashMap hash : formMap.get("ic_party_member")) { - if (!hash.containsKey("ID") && !hash.containsKey("SSZB")) { - String errorMsg = "党员信息所属支部不能为空"; - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + //2021.11.25 end + //2022.04.19 start 这个房屋下已经设置了户主后,再次选择户主时提示提示“房屋下已存在户主” PS.户主指与户主关系是本人的用户 + if (map.containsKey("YHZGX") && RelationshipEnum.SELF.getCode().equals(map.get("YHZGX"))) { + IcResiUserEntity entity = baseDao.selectById(map.get("ID")); + if (entity != null && !RelationshipEnum.SELF.getCode().equals(entity.getYhzgx())) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiUserEntity::getHomeId, entity.getHomeId()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + List entityList = baseDao.selectList(wrapper); + if (CollectionUtils.isNotEmpty(entityList)) { + String errorMsg = "房屋下已存在户主"; + throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); } } - } else { - String errorMsg = "党员信息所属支部不能为空"; - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); - } - } - if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY"))) - || (!map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(icResiUser.getIsParty()))) { - partyMemberDTO.setCustomerId(tokenDto.getCustomerId()); - partyMemberDTO.setAgencyId(icResiUser.getAgencyId()); - partyMemberDTO.setAgencyPids(icResiUser.getPids()); - partyMemberDTO.setIcResiUser(resiUserId); - if (map.containsKey("NAME")) { - partyMemberDTO.setName(map.get("NAME")); - } else { - partyMemberDTO.setName(icResiUser.getName()); - } - if (map.containsKey("ID_CARD")) { - partyMemberDTO.setIdCard(map.get("ID_CARD")); - } else { - partyMemberDTO.setIdCard(icResiUser.getIdCard()); - } - if (map.containsKey("MOBILE")) { - partyMemberDTO.setMobile(map.get("MOBILE")); - } else { - partyMemberDTO.setMobile(icResiUser.getMobile()); - } - //查询网格信息 - String gridId = null; - if (map.containsKey("GRID_ID")) { - gridId = map.get("GRID_ID"); - } else { - gridId = icResiUser.getGridId(); } - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId); - //查询房屋信息 - String houseId = null; - if (map.containsKey("HOME_ID")) { - houseId = map.get("HOME_ID"); - } else { - houseId = icResiUser.getHomeId(); + //2022.04.19 end + resiUserId = map.get("ID"); + //2022.05.18 start zhaoqf 党员信息同步 + IcResiUserEntity icResiUser = baseDao.selectById(resiUserId); + if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY")))) { + if (formMap.containsKey("ic_party_member")) { + for (LinkedHashMap hash : formMap.get("ic_party_member")) { + if (!hash.containsKey("ID") && !hash.containsKey("SSZB")) { + String errorMsg = "党员信息所属支部不能为空"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + } + } else { + String errorMsg = "党员信息所属支部不能为空"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } } - HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(tokenDto.getCustomerId(), houseId); - if (null != gridInfo && null != houseInfo) { - String address; - if (StringUtils.isNotBlank(gridInfo.getAllParentName())) { - address = gridInfo.getAllParentName().concat(StrConstant.HYPHEN).concat(gridInfo.getGridNamePath()) - .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) - .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); + if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY"))) + || (!map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(icResiUser.getIsParty()))) { + partyMemberDTO.setCustomerId(tokenDto.getCustomerId()); + partyMemberDTO.setAgencyId(icResiUser.getAgencyId()); + partyMemberDTO.setAgencyPids(icResiUser.getPids()); + partyMemberDTO.setIcResiUser(resiUserId); + if (map.containsKey("NAME")) { + partyMemberDTO.setName(map.get("NAME")); + } else { + partyMemberDTO.setName(icResiUser.getName()); + } + if (map.containsKey("ID_CARD")) { + partyMemberDTO.setIdCard(map.get("ID_CARD")); } else { - address = gridInfo.getGridNamePath() - .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) - .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); + partyMemberDTO.setIdCard(icResiUser.getIdCard()); + } + if (map.containsKey("MOBILE")) { + partyMemberDTO.setMobile(map.get("MOBILE")); + } else { + partyMemberDTO.setMobile(icResiUser.getMobile()); + } + //查询网格信息 + String gridId = null; + if (map.containsKey("GRID_ID")) { + gridId = map.get("GRID_ID"); + } else { + gridId = icResiUser.getGridId(); + } + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId); + //查询房屋信息 + String houseId = null; + if (map.containsKey("HOME_ID")) { + houseId = map.get("HOME_ID"); + } else { + houseId = icResiUser.getHomeId(); + } + HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(tokenDto.getCustomerId(), houseId); + if (null != gridInfo && null != houseInfo) { + String address; + if (StringUtils.isNotBlank(gridInfo.getAllParentName())) { + address = gridInfo.getAllParentName().concat(StrConstant.HYPHEN).concat(gridInfo.getGridNamePath()) + .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) + .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); + } else { + address = gridInfo.getGridNamePath() + .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) + .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); + } + partyMemberDTO.setAddress(address); } - partyMemberDTO.setAddress(address); } + //2022.05.18 end zhaoqf } - //2022.05.18 end zhaoqf } - } - if (null == map) { - throw new RenException(String.format("居民信息修改,参数错误,未传入基础信息Id")); - } - IcResiUserEntity entity = baseDao.selectById(resiUserId); - if (null == entity) { - throw new RenException(String.format("居民信息修改,获取基础信息失败,基础信息Id->", resiUserId)); - } - //2022-1-18 信息修改判断基础信息表人员网格、小区、楼栋、单元、房屋维度数据以及十八类的类别数据是否变化,相应生成变更记录和变更明细数据 sun start - icUserChangeRecord(tokenDto, entity, map); - //2022-1-18 sun end - //2.更新主表数据 - if (map.size() > NumConstant.ONE) { - if (isDyzxh) { - map.put("IS_VOLUNTEER", NumConstant.ONE_STR); + if (null == map) { + throw new RenException(String.format("居民信息修改,参数错误,未传入基础信息Id")); } - map.put("updated_by", tokenDto.getUserId()); - baseDao.upTable("ic_resi_user", resiUserId, map); - } - - //3.循环更新或新增字表数据 - String finalResiUserId = resiUserId; - //存放子表的表名,用于删除字表数据时使用,比如未来可能会存在子表多条数据的情况,那样的只能删一次,不然第二条保存时又把第一条删了 - Map tableMap = new HashMap<>(); - formDTO.forEach(d -> { - if (!"ic_resi_user".equals(d.getTableName())) { - for (LinkedHashMap hash : d.getList()) { - hash.put("updated_by", tokenDto.getUserId()); - if (!hash.containsKey("ID")) { - hash.put("id", UUID.randomUUID().toString().replaceAll("-", "")); - hash.put("ic_resi_user", finalResiUserId); - hash.put("customer_id", tokenDto.getCustomerId()); - hash.put("created_by", tokenDto.getUserId()); - //2022.5.31 bug修改【举例党员类别新增选是,修改为否,在修改为是时,此时字表id没值,实际有脏数据,导致字表新数据进不去】 - if (!"ic_resi_demand".equals(d.getTableName()) && !tableMap.containsKey(d.getTableName())) { - baseDao.del(d.getTableName(), finalResiUserId); - tableMap.put(d.getTableName(), d.getTableName()); + IcResiUserEntity entity = baseDao.selectById(resiUserId); + if (null == entity) { + throw new RenException(String.format("居民信息修改,获取基础信息失败,基础信息Id->", resiUserId)); + } + //2022-1-18 信息修改判断基础信息表人员网格、小区、楼栋、单元、房屋维度数据以及十八类的类别数据是否变化,相应生成变更记录和变更明细数据 sun start + icUserChangeRecord(tokenDto, entity, map); + //2022-1-18 sun end + //2.更新主表数据 + if (map.size() > NumConstant.ONE) { + if (isDyzxh) { + map.put("IS_VOLUNTEER", NumConstant.ONE_STR); + } + map.put("updated_by", tokenDto.getUserId()); + baseDao.upTable("ic_resi_user", resiUserId, map); + } + + //3.循环更新或新增字表数据 + String finalResiUserId = resiUserId; + //存放子表的表名,用于删除字表数据时使用,比如未来可能会存在子表多条数据的情况,那样的只能删一次,不然第二条保存时又把第一条删了 + Map tableMap = new HashMap<>(); + formDTO.forEach(d -> { + if (!"ic_resi_user".equals(d.getTableName())) { + for (LinkedHashMap hash : d.getList()) { + hash.put("updated_by", tokenDto.getUserId()); + if (!hash.containsKey("ID")) { + hash.put("id", UUID.randomUUID().toString().replaceAll("-", "")); + hash.put("ic_resi_user", finalResiUserId); + hash.put("customer_id", tokenDto.getCustomerId()); + hash.put("created_by", tokenDto.getUserId()); + //2022.5.31 bug修改【举例党员类别新增选是,修改为否,在修改为是时,此时字表id没值,实际有脏数据,导致字表新数据进不去】 + if (!"ic_resi_demand".equals(d.getTableName()) && !tableMap.containsKey(d.getTableName())) { + baseDao.del(d.getTableName(), finalResiUserId); + tableMap.put(d.getTableName(), d.getTableName()); + } + //字表新增数据 + baseDao.add(d.getTableName(), hash); + } else { + //字表更新数据 + baseDao.upTable(d.getTableName(), hash.get("ID"), hash); } - //字表新增数据 - baseDao.add(d.getTableName(), hash); - } else { - //字表更新数据 - baseDao.upTable(d.getTableName(), hash.get("ID"), hash); } } - } - //2022.05.18 start zhaoqf 党员信息同步 - if ("ic_party_member".equals(d.getTableName())) { - for (LinkedHashMap hash : d.getList()) { - partyMemberDTO.setRdsj(hash.get("RDSJ")); - partyMemberDTO.setSszb(hash.get("SSZB")); - partyMemberDTO.setIsLd(hash.get("IS_LD")); - partyMemberDTO.setLdzh(hash.get("LDZH")); - partyMemberDTO.setPartyZw(hash.get("PARTY_ZW")); - partyMemberDTO.setIsTx(hash.get("IS_TX")); - partyMemberDTO.setIsDyzxh(hash.get("IS_DYZXH")); + //2022.05.18 start zhaoqf 党员信息同步 + if ("ic_party_member".equals(d.getTableName())) { + for (LinkedHashMap hash : d.getList()) { + partyMemberDTO.setRdsj(hash.get("RDSJ")); + partyMemberDTO.setSszb(hash.get("SSZB")); + partyMemberDTO.setIsLd(hash.get("IS_LD")); + partyMemberDTO.setLdzh(hash.get("LDZH")); + partyMemberDTO.setPartyZw(hash.get("PARTY_ZW")); + partyMemberDTO.setIsTx(hash.get("IS_TX")); + partyMemberDTO.setIsDyzxh(hash.get("IS_DYZXH")); + } } - } - if ("ic_volunteer".equals(d.getTableName())) { - for (LinkedHashMap hash : d.getList()) { - partyMemberDTO.setVolunteerCategory(hash.get("VOLUNTEER_CATEGORY")); + if ("ic_volunteer".equals(d.getTableName())) { + for (LinkedHashMap hash : d.getList()) { + partyMemberDTO.setVolunteerCategory(hash.get("VOLUNTEER_CATEGORY")); + } + } + //2022.05.18 end zhaoqf + }); + if (StringUtils.isNotBlank(partyMemberDTO.getIcResiUser())) { + Result syncResult = resiPartyMemberOpenFeignClient.icPartyMemberSync(partyMemberDTO); + if (!syncResult.success()) { + log.error("同步党员信息失败"); } } - //2022.05.18 end zhaoqf - }); - if (StringUtils.isNotBlank(partyMemberDTO.getIcResiUser())) { - Result syncResult = resiPartyMemberOpenFeignClient.icPartyMemberSync(partyMemberDTO); - if (!syncResult.success()) { - log.error("同步党员信息失败"); - } + return resiUserId; + } finally { + distributedLock.unlock(lock); } - return resiUserId; } /** @@ -2209,7 +2219,6 @@ public class IcResiUserServiceImpl extends BaseServiceImpl changeIcResiUserBelongTo(TokenDto tokenDto, IcUserBelongToChangedFormDTO formDTO) { List resiUserIdList = baseDao.listUserIds(formDTO.getCustomerId(), formDTO.getSourceGridId()); From ea663d7debeccc1cfab3948684451c9c198d2c29 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 15 Jul 2022 17:42:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E3=80=90?= =?UTF-8?q?=E5=B0=8F=E5=8C=BA=E7=BC=96=E8=BE=91=E3=80=91=E3=80=90=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E7=BC=96=E8=BE=91=E3=80=91=E3=80=90=E5=B1=85=E6=B0=91?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E3=80=91=E5=A2=9E=E5=8A=A0=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=BA=A7=E5=88=AB=E5=88=86=E5=B8=83=E5=BC=8F=E9=94=81=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E5=90=8C=E6=97=B6=E8=BF=9B=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/NeighborHoodController.java | 14 +- .../controller/IcResiUserController.java | 24 +- .../service/impl/IcResiUserServiceImpl.java | 334 +++++++++--------- 3 files changed, 197 insertions(+), 175 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java index 743254c2d4..e01d8cba4b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java @@ -21,6 +21,8 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.distributedlock.DistributedLock; +import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -33,6 +35,7 @@ import com.epmet.entity.IcBuildingEntity; import com.epmet.service.NeighborHoodService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; +import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; @@ -44,6 +47,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; +import java.util.concurrent.TimeUnit; /** @@ -61,6 +65,8 @@ public class NeighborHoodController { private NeighborHoodService neighborHoodService; @Resource private IcBuildingDao icBuildingDao; + @Autowired + private DistributedLock distributedLock; @PostMapping("neighborhoodlist") @@ -88,7 +94,13 @@ public class NeighborHoodController { ValidatorUtils.validateEntity(formDTO, IcNeighborHoodAddFormDTO.UpdateShowGroup.class); String customerId = tokenDTO.getCustomerId(); // String customerId = "123123"; - neighborHoodService.updateNeighborhood(customerId,formDTO); + RLock lock = null; + try { + lock = distributedLock.getLock(RedisKeys.getXiaoquEditLock(tokenDTO.getCustomerId()), 120L, 3L, TimeUnit.SECONDS); + neighborHoodService.updateNeighborhood(customerId,formDTO); + } finally { + lock.unlock(); + } return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 9becc91a97..ddd53b88b9 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -30,6 +30,7 @@ import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.Constant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.dto.form.mq.MqBaseFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; @@ -76,6 +77,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.jetbrains.annotations.NotNull; +import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -90,6 +92,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -139,6 +142,8 @@ public class IcResiUserController implements ResultDataResolver { private RequestInterceptor requestInterceptor; @Autowired private ExecutorService executorService; + @Autowired + private DistributedLock distributedLock; /** * 模板枚举 @@ -247,11 +252,17 @@ public class IcResiUserController implements ResultDataResolver { @NoRepeatSubmit @PostMapping("edit") public Result edit(@LoginUser TokenDto tokenDto, @RequestBody List formDTO) { - String resiUserId = icResiUserService.edit(tokenDto, formDTO); - //推送MQ事件 - editResiMq(tokenDto.getCustomerId(), resiUserId); + RLock lock = null; + try { + lock = distributedLock.getLock(RedisKeys.getXiaoquEditLock(tokenDto.getCustomerId()), 120L, 3L, TimeUnit.SECONDS); + String resiUserId = icResiUserService.edit(tokenDto, formDTO); + //推送MQ事件 + editResiMq(tokenDto.getCustomerId(), resiUserId); - this.sendVolunteerMsg(tokenDto.getCustomerId(), resiUserId); + this.sendVolunteerMsg(tokenDto.getCustomerId(), resiUserId); + } finally { + lock.unlock(); + } return new Result(); } @@ -599,7 +610,9 @@ public class IcResiUserController implements ResultDataResolver { // 三.异步执行导入 executorService.execute(() -> { boolean isAllSuccess = false; + RLock lock = null; try { + lock = distributedLock.getLock(RedisKeys.getXiaoquEditLock(customerId), 120L, 3L, TimeUnit.SECONDS); List formItemList = icResiUserService.listFormItems(customerId, IcFormCodeEnum.RESI_BASE_INFO.getCode()); isAllSuccess = icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); } catch (Throwable e) { @@ -637,6 +650,9 @@ public class IcResiUserController implements ResultDataResolver { form.setMessageType(SystemMessageType.IC_RESI_USER_ADD); form.setContent(mqMsg); epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + + //解锁 + lock.unlock(); } }); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index a2a67103c3..546bd447c1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -471,201 +471,195 @@ public class IcResiUserServiceImpl extends BaseServiceImpl formDTO) { - RLock lock = null; - try { - lock = distributedLock.getLock(RedisKeys.getXiaoquEditLock(tokenDto.getCustomerId()), 120L, 3L,TimeUnit.SECONDS); - //1.校验主表数据是否存在 - String resiUserId = ""; - LinkedHashMap map = new LinkedHashMap<>(); - com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO partyMemberDTO = new com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO(); - Map>> formMap = formDTO.stream().collect(Collectors.toMap(IcResiUserFormDTO::getTableName, IcResiUserFormDTO::getList)); - boolean isDyzxh = false; - //判断是否是党员中心户 - if (formMap.containsKey("ic_party_member")) { - for (LinkedHashMap hash : formMap.get("ic_party_member")) { - if (NumConstant.ONE_STR.equals(hash.get("IS_DYZXH"))) { - isDyzxh = true; - } + //1.校验主表数据是否存在 + String resiUserId = ""; + LinkedHashMap map = new LinkedHashMap<>(); + com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO partyMemberDTO = new com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO(); + Map>> formMap = formDTO.stream().collect(Collectors.toMap(IcResiUserFormDTO::getTableName, IcResiUserFormDTO::getList)); + boolean isDyzxh = false; + //判断是否是党员中心户 + if (formMap.containsKey("ic_party_member")) { + for (LinkedHashMap hash : formMap.get("ic_party_member")) { + if (NumConstant.ONE_STR.equals(hash.get("IS_DYZXH"))) { + isDyzxh = true; } } - for (IcResiUserFormDTO d : formDTO) { - if ("ic_resi_user".equals(d.getTableName())) { - map = d.getList().get(0); - if (!map.containsKey("ID")) { - throw new RenException(String.format("居民信息修改-居民信息表主键值为空")); + } + for (IcResiUserFormDTO d : formDTO) { + if ("ic_resi_user".equals(d.getTableName())) { + map = d.getList().get(0); + if (!map.containsKey("ID")) { + throw new RenException(String.format("居民信息修改-居民信息表主键值为空")); + } + //2021.11.25 新增需求 客户下身份证号唯一 start + if (map.containsKey("ID_CARD")) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiUserEntity::getCustomerId, tokenDto.getCustomerId()); + wrapper.eq(IcResiUserEntity::getIdCard, map.get("ID_CARD")); + wrapper.ne(IcResiUserEntity::getId, map.get("ID")); + List entityList = baseDao.selectList(wrapper); + if (CollectionUtils.isNotEmpty(entityList)) { + String errorMsg = "修改居民信息失败,身份证号已存在!"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); } - //2021.11.25 新增需求 客户下身份证号唯一 start - if (map.containsKey("ID_CARD")) { + } + //2021.11.25 end + //2022.04.19 start 这个房屋下已经设置了户主后,再次选择户主时提示提示“房屋下已存在户主” PS.户主指与户主关系是本人的用户 + if (map.containsKey("YHZGX") && RelationshipEnum.SELF.getCode().equals(map.get("YHZGX"))) { + IcResiUserEntity entity = baseDao.selectById(map.get("ID")); + if (entity != null && !RelationshipEnum.SELF.getCode().equals(entity.getYhzgx())) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcResiUserEntity::getCustomerId, tokenDto.getCustomerId()); - wrapper.eq(IcResiUserEntity::getIdCard, map.get("ID_CARD")); - wrapper.ne(IcResiUserEntity::getId, map.get("ID")); + wrapper.eq(IcResiUserEntity::getHomeId, entity.getHomeId()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { - String errorMsg = "修改居民信息失败,身份证号已存在!"; - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + String errorMsg = "房屋下已存在户主"; + throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); } } - //2021.11.25 end - //2022.04.19 start 这个房屋下已经设置了户主后,再次选择户主时提示提示“房屋下已存在户主” PS.户主指与户主关系是本人的用户 - if (map.containsKey("YHZGX") && RelationshipEnum.SELF.getCode().equals(map.get("YHZGX"))) { - IcResiUserEntity entity = baseDao.selectById(map.get("ID")); - if (entity != null && !RelationshipEnum.SELF.getCode().equals(entity.getYhzgx())) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcResiUserEntity::getHomeId, entity.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); - List entityList = baseDao.selectList(wrapper); - if (CollectionUtils.isNotEmpty(entityList)) { - String errorMsg = "房屋下已存在户主"; - throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); + } + //2022.04.19 end + resiUserId = map.get("ID"); + //2022.05.18 start zhaoqf 党员信息同步 + IcResiUserEntity icResiUser = baseDao.selectById(resiUserId); + if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY")))) { + if (formMap.containsKey("ic_party_member")) { + for (LinkedHashMap hash : formMap.get("ic_party_member")) { + if (!hash.containsKey("ID") && !hash.containsKey("SSZB")) { + String errorMsg = "党员信息所属支部不能为空"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); } } + } else { + String errorMsg = "党员信息所属支部不能为空"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); } - //2022.04.19 end - resiUserId = map.get("ID"); - //2022.05.18 start zhaoqf 党员信息同步 - IcResiUserEntity icResiUser = baseDao.selectById(resiUserId); - if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY")))) { - if (formMap.containsKey("ic_party_member")) { - for (LinkedHashMap hash : formMap.get("ic_party_member")) { - if (!hash.containsKey("ID") && !hash.containsKey("SSZB")) { - String errorMsg = "党员信息所属支部不能为空"; - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); - } - } - } else { - String errorMsg = "党员信息所属支部不能为空"; - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); - } + } + if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY"))) + || (!map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(icResiUser.getIsParty()))) { + partyMemberDTO.setCustomerId(tokenDto.getCustomerId()); + partyMemberDTO.setAgencyId(icResiUser.getAgencyId()); + partyMemberDTO.setAgencyPids(icResiUser.getPids()); + partyMemberDTO.setIcResiUser(resiUserId); + if (map.containsKey("NAME")) { + partyMemberDTO.setName(map.get("NAME")); + } else { + partyMemberDTO.setName(icResiUser.getName()); } - if ((map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(map.get("IS_PARTY"))) - || (!map.containsKey("IS_PARTY") && NumConstant.ONE_STR.equals(icResiUser.getIsParty()))) { - partyMemberDTO.setCustomerId(tokenDto.getCustomerId()); - partyMemberDTO.setAgencyId(icResiUser.getAgencyId()); - partyMemberDTO.setAgencyPids(icResiUser.getPids()); - partyMemberDTO.setIcResiUser(resiUserId); - if (map.containsKey("NAME")) { - partyMemberDTO.setName(map.get("NAME")); - } else { - partyMemberDTO.setName(icResiUser.getName()); - } - if (map.containsKey("ID_CARD")) { - partyMemberDTO.setIdCard(map.get("ID_CARD")); - } else { - partyMemberDTO.setIdCard(icResiUser.getIdCard()); - } - if (map.containsKey("MOBILE")) { - partyMemberDTO.setMobile(map.get("MOBILE")); - } else { - partyMemberDTO.setMobile(icResiUser.getMobile()); - } - //查询网格信息 - String gridId = null; - if (map.containsKey("GRID_ID")) { - gridId = map.get("GRID_ID"); - } else { - gridId = icResiUser.getGridId(); - } - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId); - //查询房屋信息 - String houseId = null; - if (map.containsKey("HOME_ID")) { - houseId = map.get("HOME_ID"); + if (map.containsKey("ID_CARD")) { + partyMemberDTO.setIdCard(map.get("ID_CARD")); + } else { + partyMemberDTO.setIdCard(icResiUser.getIdCard()); + } + if (map.containsKey("MOBILE")) { + partyMemberDTO.setMobile(map.get("MOBILE")); + } else { + partyMemberDTO.setMobile(icResiUser.getMobile()); + } + //查询网格信息 + String gridId = null; + if (map.containsKey("GRID_ID")) { + gridId = map.get("GRID_ID"); + } else { + gridId = icResiUser.getGridId(); + } + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId); + //查询房屋信息 + String houseId = null; + if (map.containsKey("HOME_ID")) { + houseId = map.get("HOME_ID"); + } else { + houseId = icResiUser.getHomeId(); + } + HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(tokenDto.getCustomerId(), houseId); + if (null != gridInfo && null != houseInfo) { + String address; + if (StringUtils.isNotBlank(gridInfo.getAllParentName())) { + address = gridInfo.getAllParentName().concat(StrConstant.HYPHEN).concat(gridInfo.getGridNamePath()) + .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) + .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); } else { - houseId = icResiUser.getHomeId(); - } - HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(tokenDto.getCustomerId(), houseId); - if (null != gridInfo && null != houseInfo) { - String address; - if (StringUtils.isNotBlank(gridInfo.getAllParentName())) { - address = gridInfo.getAllParentName().concat(StrConstant.HYPHEN).concat(gridInfo.getGridNamePath()) - .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) - .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); - } else { - address = gridInfo.getGridNamePath() - .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) - .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); - } - partyMemberDTO.setAddress(address); + address = gridInfo.getGridNamePath() + .concat(StrConstant.HYPHEN).concat(houseInfo.getNeighborHoodName()) + .concat(StrConstant.HYPHEN).concat(houseInfo.getHouseName()); } + partyMemberDTO.setAddress(address); } - //2022.05.18 end zhaoqf } + //2022.05.18 end zhaoqf } - if (null == map) { - throw new RenException(String.format("居民信息修改,参数错误,未传入基础信息Id")); - } - IcResiUserEntity entity = baseDao.selectById(resiUserId); - if (null == entity) { - throw new RenException(String.format("居民信息修改,获取基础信息失败,基础信息Id->", resiUserId)); + } + if (null == map) { + throw new RenException(String.format("居民信息修改,参数错误,未传入基础信息Id")); + } + IcResiUserEntity entity = baseDao.selectById(resiUserId); + if (null == entity) { + throw new RenException(String.format("居民信息修改,获取基础信息失败,基础信息Id->", resiUserId)); + } + //2022-1-18 信息修改判断基础信息表人员网格、小区、楼栋、单元、房屋维度数据以及十八类的类别数据是否变化,相应生成变更记录和变更明细数据 sun start + icUserChangeRecord(tokenDto, entity, map); + //2022-1-18 sun end + //2.更新主表数据 + if (map.size() > NumConstant.ONE) { + if (isDyzxh) { + map.put("IS_VOLUNTEER", NumConstant.ONE_STR); } - //2022-1-18 信息修改判断基础信息表人员网格、小区、楼栋、单元、房屋维度数据以及十八类的类别数据是否变化,相应生成变更记录和变更明细数据 sun start - icUserChangeRecord(tokenDto, entity, map); - //2022-1-18 sun end - //2.更新主表数据 - if (map.size() > NumConstant.ONE) { - if (isDyzxh) { - map.put("IS_VOLUNTEER", NumConstant.ONE_STR); - } - map.put("updated_by", tokenDto.getUserId()); - baseDao.upTable("ic_resi_user", resiUserId, map); - } - - //3.循环更新或新增字表数据 - String finalResiUserId = resiUserId; - //存放子表的表名,用于删除字表数据时使用,比如未来可能会存在子表多条数据的情况,那样的只能删一次,不然第二条保存时又把第一条删了 - Map tableMap = new HashMap<>(); - formDTO.forEach(d -> { - if (!"ic_resi_user".equals(d.getTableName())) { - for (LinkedHashMap hash : d.getList()) { - hash.put("updated_by", tokenDto.getUserId()); - if (!hash.containsKey("ID")) { - hash.put("id", UUID.randomUUID().toString().replaceAll("-", "")); - hash.put("ic_resi_user", finalResiUserId); - hash.put("customer_id", tokenDto.getCustomerId()); - hash.put("created_by", tokenDto.getUserId()); - //2022.5.31 bug修改【举例党员类别新增选是,修改为否,在修改为是时,此时字表id没值,实际有脏数据,导致字表新数据进不去】 - if (!"ic_resi_demand".equals(d.getTableName()) && !tableMap.containsKey(d.getTableName())) { - baseDao.del(d.getTableName(), finalResiUserId); - tableMap.put(d.getTableName(), d.getTableName()); - } - //字表新增数据 - baseDao.add(d.getTableName(), hash); - } else { - //字表更新数据 - baseDao.upTable(d.getTableName(), hash.get("ID"), hash); + map.put("updated_by", tokenDto.getUserId()); + baseDao.upTable("ic_resi_user", resiUserId, map); + } + + //3.循环更新或新增字表数据 + String finalResiUserId = resiUserId; + //存放子表的表名,用于删除字表数据时使用,比如未来可能会存在子表多条数据的情况,那样的只能删一次,不然第二条保存时又把第一条删了 + Map tableMap = new HashMap<>(); + formDTO.forEach(d -> { + if (!"ic_resi_user".equals(d.getTableName())) { + for (LinkedHashMap hash : d.getList()) { + hash.put("updated_by", tokenDto.getUserId()); + if (!hash.containsKey("ID")) { + hash.put("id", UUID.randomUUID().toString().replaceAll("-", "")); + hash.put("ic_resi_user", finalResiUserId); + hash.put("customer_id", tokenDto.getCustomerId()); + hash.put("created_by", tokenDto.getUserId()); + //2022.5.31 bug修改【举例党员类别新增选是,修改为否,在修改为是时,此时字表id没值,实际有脏数据,导致字表新数据进不去】 + if (!"ic_resi_demand".equals(d.getTableName()) && !tableMap.containsKey(d.getTableName())) { + baseDao.del(d.getTableName(), finalResiUserId); + tableMap.put(d.getTableName(), d.getTableName()); } + //字表新增数据 + baseDao.add(d.getTableName(), hash); + } else { + //字表更新数据 + baseDao.upTable(d.getTableName(), hash.get("ID"), hash); } } - //2022.05.18 start zhaoqf 党员信息同步 - if ("ic_party_member".equals(d.getTableName())) { - for (LinkedHashMap hash : d.getList()) { - partyMemberDTO.setRdsj(hash.get("RDSJ")); - partyMemberDTO.setSszb(hash.get("SSZB")); - partyMemberDTO.setIsLd(hash.get("IS_LD")); - partyMemberDTO.setLdzh(hash.get("LDZH")); - partyMemberDTO.setPartyZw(hash.get("PARTY_ZW")); - partyMemberDTO.setIsTx(hash.get("IS_TX")); - partyMemberDTO.setIsDyzxh(hash.get("IS_DYZXH")); - } - } - if ("ic_volunteer".equals(d.getTableName())) { - for (LinkedHashMap hash : d.getList()) { - partyMemberDTO.setVolunteerCategory(hash.get("VOLUNTEER_CATEGORY")); - } + } + //2022.05.18 start zhaoqf 党员信息同步 + if ("ic_party_member".equals(d.getTableName())) { + for (LinkedHashMap hash : d.getList()) { + partyMemberDTO.setRdsj(hash.get("RDSJ")); + partyMemberDTO.setSszb(hash.get("SSZB")); + partyMemberDTO.setIsLd(hash.get("IS_LD")); + partyMemberDTO.setLdzh(hash.get("LDZH")); + partyMemberDTO.setPartyZw(hash.get("PARTY_ZW")); + partyMemberDTO.setIsTx(hash.get("IS_TX")); + partyMemberDTO.setIsDyzxh(hash.get("IS_DYZXH")); } - //2022.05.18 end zhaoqf - }); - if (StringUtils.isNotBlank(partyMemberDTO.getIcResiUser())) { - Result syncResult = resiPartyMemberOpenFeignClient.icPartyMemberSync(partyMemberDTO); - if (!syncResult.success()) { - log.error("同步党员信息失败"); + } + if ("ic_volunteer".equals(d.getTableName())) { + for (LinkedHashMap hash : d.getList()) { + partyMemberDTO.setVolunteerCategory(hash.get("VOLUNTEER_CATEGORY")); } } - return resiUserId; - } finally { - distributedLock.unlock(lock); + //2022.05.18 end zhaoqf + }); + if (StringUtils.isNotBlank(partyMemberDTO.getIcResiUser())) { + Result syncResult = resiPartyMemberOpenFeignClient.icPartyMemberSync(partyMemberDTO); + if (!syncResult.success()) { + log.error("同步党员信息失败"); + } } + return resiUserId; } /** From 56e60425a0520734530e62e6d5d7653e7506f7be Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 15 Jul 2022 17:59:17 +0800 Subject: [PATCH 3/3] - --- .../java/com/epmet/controller/NeighborHoodController.java | 4 +++- .../java/com/epmet/controller/IcResiUserController.java | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java index e01d8cba4b..e6ad2250fb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java @@ -99,7 +99,9 @@ public class NeighborHoodController { lock = distributedLock.getLock(RedisKeys.getXiaoquEditLock(tokenDTO.getCustomerId()), 120L, 3L, TimeUnit.SECONDS); neighborHoodService.updateNeighborhood(customerId,formDTO); } finally { - lock.unlock(); + if (lock != null) { + lock.unlock(); + } } return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index ddd53b88b9..42dfbc7622 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -261,7 +261,9 @@ public class IcResiUserController implements ResultDataResolver { this.sendVolunteerMsg(tokenDto.getCustomerId(), resiUserId); } finally { - lock.unlock(); + if (lock != null) { + lock.unlock(); + } } return new Result(); } @@ -652,7 +654,9 @@ public class IcResiUserController implements ResultDataResolver { epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); //解锁 - lock.unlock(); + if (lock != null) { + lock.unlock(); + } } });