diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 9aac6abbd4..09f29f5330 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -170,8 +170,13 @@ public class HouseController implements ResultDataResolver { return new Result(); } + /** + * lzh + * @param formDTO + * @return 单独删除房屋内部调用/gov/org/house/delete + */ @PostMapping("housedel") - public Result houseDel(@LoginUser TokenDto tokenDTO, @RequestBody IcHouseFormDTO formDTO){ + public Result houseDel(@RequestBody IcHouseFormDTO formDTO){ //效验数据 ValidatorUtils.validateEntity(formDTO, IcNeighborHoodFormDTO.DeleteGroup.class); houseService.delHouse(formDTO.getHouseId()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 15f78d2015..ba39b0fcb4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -157,7 +157,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { //单个删除房屋,房屋内有居民不允许删除 NeighborHoodManageDelFormDTO formDTO=new NeighborHoodManageDelFormDTO(); formDTO.setType(CustomerGridConstant.HOUSE); - formDTO.setIds(Arrays.asList(houseId)); + List ids=new ArrayList<>(); + ids.add(houseId); + formDTO.setIds(ids); allDelete(formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java index 6ef36407e7..e2d6b7344f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java @@ -63,6 +63,21 @@ public class IcNatController implements ResultDataResolver { @Autowired private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + /** + * 记录一下核酸记录模块的业务程序逻辑,防止后续理不清 ic_nat:基础信息表 ic_nat_relation:关系表 + * 1.数字平台导入时,按身份证检测时间查询数据,查到数据不是导入的状态则记录下并跳过,是导入数据更新结果,未查到直接新增 + * 是否居民以及userId值查询数据平台居民,能查到就相应的赋值; + * 2.居民端录入可以录自己的或别人的,但是数据属于当前录入的组织; + * 3.数据平台录入可以为已有居民录入也可以录新数据,新数据则是否居民和userId无值; + * 4.导入数据不允许修改删除,录入数据可以修改删除,删除时相应的删除基础表和可能存在的所有关心表数据, + * 数据同步可多次重复,只是修改对应的关系表数据,基础信息表数据公用; + * 5.同一条数据被A街道和A社区都同步了,街道在看本辖区数据时会看到两条,但是只有A街道的那一条才能看到取消同步按钮; + * 6.数据库一个人一个检测时间只存在一条记录,以导入数据结果为准,已导入的各项值都不能修改,即使错误也只能通过导入修改; + * 7.新增、删除居民时会相应的修改基础信息表是否居民以及userId的值; + * 注:1.导入数据不允许修改是觉得导入数据是官方提供的且没有问题的数据,不需要在平台有维护操作,只要看就可以了; + * 2.是否居民的查询条件以及是否居民的列标题在看整个客户列表数据时这两个都隐藏 + * + */ /** * @Author sun diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java index adaa191b1a..5496919f3c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java @@ -46,6 +46,7 @@ public interface IcNatDao extends BaseDao { /** * 插入或者更新 + * * @param e */ void insertOrUpdate(IcNatEntity e); @@ -55,4 +56,14 @@ public interface IcNatDao extends BaseDao { * @Description 按条件查询业务数据 **/ IcNatDTO getNatDTO(@Param("customerId") String customerId, @Param("icNatId") String icNatId, @Param("idCard") String idCard, @Param("natTime") String natTime, @Param("natResult") String natResult); + + /** + * desc:根据客户id 更新是否居民状态 + * + * @param customerId + * @param icResiUserId 如果为空则更新全部 + * @return + */ + int updateIsResiFlag(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId); + } 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 ae90cdf0d9..cee68c26ea 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 @@ -54,15 +54,16 @@ public interface IcResiUserDao extends BaseDao { **/ void upTable(@Param("tableName") String tableName, @Param("id") String id, @Param("map") Map map); - List> selectListResiMap(@Param("customerId") String customerId, - @Param("formCode") String formCode, - @Param("conditions") List conditions, - @Param("resultColumns") List resultColumns, - @Param("subTables") List subTables, - @Param("currentStaffAgencyId")String currentStaffAgencyId, - @Param("staffOrgPath") String staffOrgPath, - @Param("resultTableName")String resultTableName, - @Param("keyword") String keyword); + List> selectListResiMap(@Param("customerId") String customerId, + @Param("formCode") String formCode, + @Param("conditions") List conditions, + @Param("resultColumns") List resultColumns, + @Param("subTables") List subTables, + @Param("currentStaffAgencyId") String currentStaffAgencyId, + @Param("staffOrgPath") String staffOrgPath, + @Param("resultTableName") String resultTableName, + @Param("keyword") String keyword); + /** * 查询主表 * @@ -238,11 +239,11 @@ public interface IcResiUserDao extends BaseDao { List listIcResiInfosByUserIds(@Param("userIds") List userIds); - Map getCategoryListMap(@Param("columns")List columns, @Param("icUserId") String icUserId); + Map getCategoryListMap(@Param("columns") List columns, @Param("icUserId") String icUserId); Map selectResiInfoMap(@Param("idCard") String idCard, @Param("resiId") String resiId); - List> selectResiUsers(@Param("types")List types,@Param("orgId")String orgId); + List> selectResiUsers(@Param("types") List types, @Param("orgId") String orgId); List icUserCustomerIds(); @@ -254,9 +255,9 @@ public interface IcResiUserDao extends BaseDao { * @param customerId * @param tableName * @param columnList - * @param id 非必填 leve有值时 必填 - * @param level 非必填 - * @return java.util.Map 字段名:数量 + * @param id 非必填 leve有值时 必填 + * @param level 非必填 + * @return java.util.Map 字段名:数量 * @author LiuJanJun * @date 2022/2/12 3:03 下午 */ @@ -266,6 +267,7 @@ public interface IcResiUserDao extends BaseDao { /** * Desc: 根据房屋IDs查询房屋下是否有存在居民的 + * * @param ids * @author zxc * @date 2022/3/2 10:32 上午 @@ -274,6 +276,7 @@ public interface IcResiUserDao extends BaseDao { /** * 居民防疫信息查询 + * * @Param formDTO * @Return {@link List< EpidemicPreventionResultDTO>} * @Author zhaoqifeng @@ -282,6 +285,8 @@ public interface IcResiUserDao extends BaseDao { List getEpidemicPreventionList(EpidemicPreventionFormDTO formDTO); List natList(EpidemicPreventionFormDTO formDTO); + List vaccineList(EpidemicPreventionFormDTO formDTO); + IcResiUserEntity selectResiNoDelFlag(@Param("icResiUserId") String icResiUserId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java index 266da5175a..385d02b171 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java @@ -2,8 +2,8 @@ package com.epmet.excel.data; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.epmet.dto.form.AddIcNatFormDTO; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -25,6 +25,7 @@ public class IcNatImportExcelData { @NotBlank(message = "身份证号为必填项") @ExcelProperty("身份证号") + @Length(max = 18, message = "身份证号长度不正确,应小于18位") private String idCard; @NotNull(message = "检测时间为必填项") diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java index 854507d471..1f09a5142f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java @@ -26,7 +26,7 @@ public class IcNatExcelImportListener implements ReadListener { * @Date 2022/3/29 16:29 */ List getNatList(String customerId, String idCard); + + /** + * desc:根据用户id 更新核酸中是否居民状态 + * @param customerId + * @param icResiUserId 如果为空则更新全部 + * @return + */ + Integer updateIsResiFlag(String customerId, String icResiUserId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java index e6281b9467..abb8f6184c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java @@ -2,12 +2,10 @@ package com.epmet.service.impl; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; @@ -26,7 +24,10 @@ import com.epmet.dao.IcResiUserDao; import com.epmet.dao.UserBaseInfoDao; import com.epmet.dto.IcNatDTO; import com.epmet.dto.IcNoticeDTO; -import com.epmet.dto.form.*; +import com.epmet.dto.form.AddIcNatFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.MyNatListFormDTO; +import com.epmet.dto.form.SendNoticeFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.IcNatEntity; import com.epmet.entity.IcNatRelationEntity; @@ -38,6 +39,7 @@ import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcNatService; import com.epmet.service.IcNoticeService; +import com.epmet.service.UserService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -83,6 +85,8 @@ public class IcNatServiceImpl extends BaseServiceImpl imp private IcNatRelationDao icNatRelationDao; @Autowired private IcResiUserDao icResiUserDao; + @Autowired + private UserService userService; /** * @Author sun @@ -313,9 +317,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp String app = EpmetRequestHolder.getHeader(AppClientConstant.APP); String client = EpmetRequestHolder.getHeader(AppClientConstant.CLIENT); - LoginUserDetailsFormDTO ludf = new LoginUserDetailsFormDTO(app, client, userId); - LoginUserDetailsResultDTO loginUserDetails = getResultDataOrThrowsException(epmetUserOpenFeignClient.getLoginUserDetails(ludf), ServiceConstant.EPMET_USER_SERVER, - EpmetErrorCode.SERVER_ERROR.getCode(), "调用user出错", ""); + LoginUserDetailsResultDTO loginUserDetails = userService.getLoginUserDetails(app, client, userId); String agencyId = loginUserDetails.getAgencyId(); @@ -436,6 +438,11 @@ public class IcNatServiceImpl extends BaseServiceImpl imp }).collect(Collectors.toList()); } + @Override + public Integer updateIsResiFlag(String customerId, String icResiUserId) { + return baseDao.updateIsResiFlag(customerId,icResiUserId); + } + /** * 批量持久化 * @param entities @@ -510,15 +517,15 @@ public class IcNatServiceImpl extends BaseServiceImpl imp needUpdate = true; } - // 检测地点和手机号先不提示,说需要提示再提示 - if (!natAddress.equals(resiNat.getNatAddress())) { - changedFieldNames.add("检测地点"); - resiNat.setNatResult(natAddress); + // 检测地点和手机号先不提示,说需要提示再提示。需要考虑两个都不为空&&不相等 || 两个中一个为空一个不为空 + if ((StringUtils.isBlank(natAddress) && StringUtils.isNotBlank(resiNat.getNatAddress())) + || (StringUtils.isNotBlank(natAddress) && StringUtils.isBlank(resiNat.getNatAddress())) + || (StringUtils.isNotBlank(natAddress) && StringUtils.isNotBlank(resiNat.getNatAddress()) && !natAddress.equals(resiNat.getNatAddress()))) { + resiNat.setNatAddress(natAddress); needUpdate = true; } if (!mobile.equals(resiNat.getMobile())) { - changedFieldNames.add("手机号"); resiNat.setMobile(mobile); needUpdate = true; } @@ -537,6 +544,11 @@ public class IcNatServiceImpl extends BaseServiceImpl imp if (needUpdate) { resiNat.setUpdatedBy(currentUserId); resiNat.setUpdatedTime(new Date()); + + IcResiUserEntity resi = getResi(customerId, idCard); + resiNat.setIsResiUser(resi != null ? "1" : "0"); + resiNat.setUserId(resi != null ? resi.getId() : ""); + baseDao.updateById(resiNat); } @@ -547,7 +559,9 @@ public class IcNatServiceImpl extends BaseServiceImpl imp } // 执行新增操作 - e.setIsResiUser(isResi(customerId, idCard)); + IcResiUserEntity resi = getResi(customerId, idCard); + e.setIsResiUser(resi != null ? "1" : "0"); + e.setUserId(resi != null ? resi.getId() : ""); e.setUserType("import"); baseDao.insert(e); @@ -564,11 +578,11 @@ public class IcNatServiceImpl extends BaseServiceImpl imp * @param idCard * @return */ - public String isResi(String customerId, String idCard) { + public IcResiUserEntity getResi(String customerId, String idCard) { LambdaQueryWrapper query = new LambdaQueryWrapper(); query.eq(IcResiUserEntity::getCustomerId, customerId); query.eq(IcResiUserEntity::getIdCard, idCard); - return icResiUserDao.selectCount(query) > 0 ? "1" : "0"; + return icResiUserDao.selectOne(query); } /** 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 d98de8312d..5817f5a5c2 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 @@ -79,6 +79,7 @@ import java.sql.Timestamp; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.stream.Collectors; @@ -866,11 +867,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl buildMap = buildResult.getData().stream().collect(Collectors.toMap(BuildingResultDTO::getBuildingId, BuildingResultDTO::getBuildingName)); - + AtomicInteger i = new AtomicInteger(NumConstant.ONE); result.forEach(item -> { item.setGridName(gridMap.get(item.getGridId())); item.setNeighborHoodName(neighborHoodMap.get(item.getNeighborHoodId())); item.setBuildNum(buildMap.get(item.getBuildId())); + item.setSort(i.getAndIncrement()); }); return new PageData<>(result, pageInfo.getTotal()); diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.36__ic_nat_normal.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.36__ic_nat_normal.sql new file mode 100644 index 0000000000..a0bfefa9f9 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.36__ic_nat_normal.sql @@ -0,0 +1,4 @@ +ALTER TABLE `ic_nat` +MODIFY COLUMN `USER_TYPE` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据来源【居民端小程序的人:resi;\r\n数字社区的居民:icresi;\r\n导入的:import;】' AFTER `USER_ID`, +ADD INDEX `idx_ic_card` (`ID_CARD`) USING BTREE ; + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml index 66a10d467d..8392bf5856 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml @@ -69,7 +69,7 @@ AND b.is_resi_user = #{isResiUser} - ORDER BY b.nat_time DESC + ORDER BY b.nat_time DESC, b.id ASC +