zxc 3 years ago
parent
commit
c53303a518
  1. 3
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/NatInfoScanTaskFormDTO.java
  2. 20
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java
  3. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java
  4. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java
  5. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java
  6. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatEntity.java
  7. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java
  8. 98
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java
  9. 38
      epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml
  10. 13
      epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml

3
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/NatInfoScanTaskFormDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
@ -15,4 +16,6 @@ public class NatInfoScanTaskFormDTO implements Serializable {
private static final long serialVersionUID = 3053943501957102943L;
private String customerId;
private List<String> idCards;
}

20
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/9/27 10:23
* @DESC
*/
@Data
public class NatUserInfoResultDTO implements Serializable {
private static final long serialVersionUID = 8904940082452398136L;
private String idCard;
private String userId;
}

7
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java

@ -13,6 +13,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.ScopeSaveFormDTO;
import com.epmet.service.DataSyncConfigService;
import org.springframework.beans.factory.annotation.Autowired;
@ -105,4 +106,10 @@ public class DataSyncConfigController {
return new Result();
}
@PostMapping("natInfoScanTask")
public Result natInfoScanTask(@RequestBody NatInfoScanTaskFormDTO formDTO){
dataSyncConfigService.natInfoScanTask(formDTO);
return new Result();
}
}

11
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java

@ -4,6 +4,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.DataSyncScopeDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.result.NatUserInfoResultDTO;
import com.epmet.entity.DataSyncConfigEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -45,4 +46,14 @@ public interface DataSyncConfigDao extends BaseDao<DataSyncConfigEntity> {
*/
void delScope(@Param("dataSyncConfigId")String dataSyncConfigId);
/**
* Desc: 根据范围查询居民证件号
* @param list
* @author zxc
* @date 2022/9/27 09:23
*/
List<NatUserInfoResultDTO> getIdCardsByScope(@Param("list") List<DataSyncScopeDTO> list);
List<NatUserInfoResultDTO> getUserIdByIdCard(@Param("list") List<String> list);
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java

@ -5,6 +5,7 @@ import com.epmet.dto.IcNatDTO;
import com.epmet.dto.form.MyNatListFormDTO;
import com.epmet.dto.result.MyNatListResultDTO;
import com.epmet.dto.result.NatListResultDTO;
import com.epmet.dto.result.NatUserInfoResultDTO;
import com.epmet.entity.IcNatEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -59,4 +60,6 @@ public interface IcNatDao extends BaseDao<IcNatEntity> {
*/
int updateIsResiFlag(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId);
List<NatUserInfoResultDTO> getExistNatInfo(@Param("list") List<IcNatEntity> entities);
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatEntity.java

@ -89,4 +89,7 @@ public class IcNatEntity extends BaseEpmetEntity {
*/
private String attachmentUrl;
@TableField(exist = false)
private Boolean existStatus = false;
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java

@ -6,6 +6,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.ScopeSaveFormDTO;
import com.epmet.entity.DataSyncConfigEntity;
@ -80,4 +81,6 @@ public interface DataSyncConfigService extends BaseService<DataSyncConfigEntity>
* @date 2022/9/26 15:41
*/
void scopeSave(ScopeSaveFormDTO formDTO);
void natInfoScanTask(NatInfoScanTaskFormDTO formDTO);
}

98
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java

@ -5,6 +5,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.dto.result.YtHsjcResDTO;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
@ -12,14 +13,21 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.YtHsResUtils;
import com.epmet.dao.DataSyncConfigDao;
import com.epmet.dao.IcNatDao;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.ScopeSaveFormDTO;
import com.epmet.dto.result.NatUserInfoResultDTO;
import com.epmet.entity.DataSyncConfigEntity;
import com.epmet.entity.DataSyncScopeEntity;
import com.epmet.entity.IcNatEntity;
import com.epmet.service.DataSyncConfigService;
import com.epmet.service.DataSyncScopeService;
import com.epmet.service.IcNatService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
@ -30,7 +38,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 数据更新配置表
@ -43,6 +53,10 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
@Autowired
private DataSyncScopeService dataSyncScopeService;
@Autowired
private IcNatDao icNatDao;
@Autowired
private IcNatService icNatService;
private QueryWrapper<DataSyncConfigEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
@ -142,4 +156,88 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
dataSyncScopeService.insertBatch(ConvertUtils.sourceToTarget(formDTO.getScopeList(), DataSyncScopeEntity.class));
}
}
/**
* Desc:
* 大数据局部门配置on
* 根据范围搜索居民调接口查询最近一次核酸检测记录
* 检测时间 + 身份证 不存在就插入
* @param formDTO
* @author zxc
* @date 2022/9/26 17:16
*/
@Override
public void natInfoScanTask(NatInfoScanTaskFormDTO formDTO) {
if (CollectionUtils.isNotEmpty(formDTO.getIdCards())){
List<NatUserInfoResultDTO> userIdByIdCard = baseDao.getUserIdByIdCard(formDTO.getIdCards());
List<NatUserInfoResultDTO> collect = formDTO.getIdCards().stream().map(id -> {
NatUserInfoResultDTO e = new NatUserInfoResultDTO();
e.setIdCard(id);
e.setUserId("");
return e;
}).collect(Collectors.toList());
collect.forEach(c -> userIdByIdCard.stream().filter(u -> u.getIdCard().equals(c.getIdCard())).forEach(u -> c.setUserId(u.getUserId())));
hsjc(collect,formDTO.getCustomerId());
return;
}
List<DataSyncConfigDTO> allConfigList = baseDao.list(StringUtils.isNotBlank(formDTO.getCustomerId()) ? formDTO.getCustomerId() : null);
if (CollectionUtils.isEmpty(allConfigList)){
return;
}
List<DataSyncConfigDTO> configList = allConfigList.stream().filter(l -> l.getDeptCode().equals("dsjj") && l.getSwitchStatus().equals("open")).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(configList)){
configList.forEach(c -> {
if (CollectionUtils.isNotEmpty(c.getScopeList())){
Integer no = NumConstant.ONE;
Integer size;
do {
PageInfo<NatUserInfoResultDTO> pageInfo = PageHelper.startPage(no, NumConstant.ONE_THOUSAND).doSelectPageInfo(() -> baseDao.getIdCardsByScope(c.getScopeList()));
size = pageInfo.getList().size();
hsjc(pageInfo.getList(),c.getCustomerId());
no++;
}while (size.compareTo(NumConstant.ONE_THOUSAND) == NumConstant.ZERO);
}
});
}
}
/**
* Desc: 根据证件号 查询nat 存在 ? 不处理 : 新增
* @param idCards
* @param customerId
* @author zxc
* @date 2022/9/27 11:08
*/
private void hsjc(List<NatUserInfoResultDTO> idCards,String customerId){
if (CollectionUtils.isNotEmpty(idCards)){
List<IcNatEntity> entities = new ArrayList<>();
idCards.forEach(idCard -> {
YtHsjcResDTO natInfoResult = YtHsResUtils.hsjc(idCard.getIdCard(), NumConstant.ONE, NumConstant.ONE);
if (CollectionUtils.isNotEmpty(natInfoResult.getData())){
natInfoResult.getData().forEach(natInfo -> {
IcNatEntity e = new IcNatEntity();
e.setCustomerId(customerId);
e.setIsResiUser(StringUtils.isBlank(idCard.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR);
e.setUserId(idCard.getUserId());
e.setUserType("sync");
e.setName(natInfo.getName());
e.setMobile(natInfo.getTelephone());
e.setIdCard(natInfo.getCard_no());
e.setNatTime(DateUtils.parseDate(natInfo.getTest_time(),DateUtils.DATE_TIME_PATTERN));
e.setNatResult(natInfo.getSample_result_pcr());
e.setNatAddress(natInfo.getSampling_org_pcr());
entities.add(e);
});
}
});
if (CollectionUtils.isNotEmpty(entities)){
List<NatUserInfoResultDTO> existNatInfos = icNatDao.getExistNatInfo(entities);
entities.forEach(e -> existNatInfos.stream().filter(i -> i.getUserId().equals(e.getUserId()) && i.getIdCard().equals(e.getIdCard())).forEach(i -> e.setExistStatus(true)));
Map<Boolean, List<IcNatEntity>> groupByStatus = entities.stream().collect(Collectors.groupingBy(IcNatEntity::getExistStatus));
if (CollectionUtils.isNotEmpty(groupByStatus.get(false))){
icNatService.insertBatch(groupByStatus.get(false));
}
}
}
}
}

38
epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml

@ -40,10 +40,46 @@
data_code AS dataCode
FROM data_sync_config
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
<if test='null != customerId and customerId != "" '>
AND CUSTOMER_ID = #{customerId}
</if>
order by sort
</select>
<!-- 范围查询 -->
<select id="scopeList" resultType="com.epmet.dto.DataSyncScopeDTO">
SELECT * FROM data_sync_scope WHERE DEL_FLAG = '0' AND DATA_SYNC_CONFIG_ID = #{id};
</select>
<!-- 根据范围查询居民证件号 -->
<select id="getIdCardsByScope" resultType="com.epmet.dto.result.NatUserInfoResultDTO">
SELECT
DISTINCT ID_CARD,
ID AS userId
FROM ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = '0'
AND (
<foreach collection="list" item="l" separator="OR">
<choose>
<when test='"grid" == l.orgType'>GRID_ID = #{l.orgId}</when>
<otherwise>PIDS LIKE CONCAT('%',#{l.orgId},'%')</otherwise>
</choose>
</foreach>
)
ORDER BY CREATED_TIME
</select>
<select id="getUserIdByIdCard" resultType="com.epmet.dto.result.NatUserInfoResultDTO">
SELECT
DISTINCT ID_CARD,
ID AS userId
FROM ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = '0'
AND id_card in (
<foreach collection="list" item="l" separator=",">
#{l}
</foreach>
)
</select>
</mapper>

13
epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml

@ -135,6 +135,19 @@
LIMIT 1
</select>
<select id="getExistNatInfo" resultType="com.epmet.dto.result.NatUserInfoResultDTO">
<foreach collection="list" item="l" separator="UNION ALL">
SELECT
USER_ID,
ID_CARD
FROM ic_nat
WHERE del_flag = '0'
AND USER_ID = #{l.userId}
AND ID_CARD = #{l.idCard}
AND UNIX_TIMESTAMP(NAT_TIME) = UNIX_TIMESTAMP(#{l.natTime})
</foreach>
</select>
<delete id="delById">
DELETE FROM ic_nat WHERE id = #{icNatId}
</delete>

Loading…
Cancel
Save