diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java index b422af6b61..be20e5fa68 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java @@ -82,6 +82,14 @@ public class IcNatCompareRecordDTO implements Serializable { @ExcelIgnore private String icResiUserId; + /*** + * 采样时间 + */ + @ColumnWidth(30) + @ExcelProperty("最近一次采样时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date latestCyTime; + /** * 最近一次核酸时间:接口填入 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java index 96ca61e0c7..101b9c07d2 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java @@ -38,6 +38,10 @@ public class IcNatCompareRecordPageFormDTO extends PageFormDTO { private String customerId; private String userId; private String agencyId; + /** + * 采样日期:yyyyMMdd + */ + private String cyDate; /** * 检测时间 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index ba67ff8170..831b99e408 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -28,11 +28,11 @@ epmet-commons-mybatis 2.0.0 - + org.springframework.boot spring-boot-starter-web diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java index 0110312ed9..75b18618fe 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java @@ -45,7 +45,10 @@ public class IcNatCompareRecordEntity extends BaseEpmetEntity { * 是否客户下居民,ic_resi_user.id */ private String icResiUserId; - + /** + * 最近一次采样时间:接口填入 + */ + private Date latestCyTime; /** * 最近一次核酸时间:接口填入 */ @@ -68,4 +71,9 @@ public class IcNatCompareRecordEntity extends BaseEpmetEntity { * 最新一次导入时间,对应ic_nat_compare_rec_relation.IMPORT_TIME */ private Date latestImportTime; + + /** + * 备注;系统内部使用,方便看看错误 + */ + private String internalRemark; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java index 03c01a2f37..44ed565c6e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java @@ -5,6 +5,7 @@ import com.alibaba.excel.read.listener.ReadListener; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.dto.result.YtHscyResDTO; import com.epmet.commons.tools.dto.result.YtHsjcResDTO; import com.epmet.commons.tools.dto.result.YtHsjcResDetailDTO; import com.epmet.commons.tools.enums.EnvEnum; @@ -84,27 +85,54 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener resiInfos, String customerId, String isSync) { + List> resiInfobatchs = ListUtils.partition(resiInfos, 50); + for (List resibatch : resiInfobatchs) { + // 50个一批,来处理他们的核酸信息,太多怕给数据库查崩了。 + yantaiHsjcByDbViewBatch(resibatch, customerId, isSync); + } + } + + /** + * 50个一批,来处理他们的核酸信息,太多怕给数据库查崩了。 + * @param resiInfos + * @param customerId + * @param isSync + */ + public void yantaiHsjcByDbViewBatch(List resiInfos, String customerId, String isSync) { + // 将居民信息转化为的map + Map idCardAndResiInfo = resiInfos.stream().collect(Collectors.toMap(resi -> resi.getIdCard(), Function.identity())); + Set idCards = idCardAndResiInfo.keySet();//resiInfos.stream().map(resi -> resi.getIdCard()).collect(Collectors.toList()); + // String idCardsStr = "''" + String.join("','", idCards) + "''"; + // 1.获取核酸采样信息 + String sql = "select id, name,card_no, create_time, realname from hscyxxb where card_no in (:idCards) order by create_time desc"; + HashMap args = new HashMap<>(); + args.put("idCards", idCards); + // 这一批居民的核酸采样列表 + List> hscyList = yantaiJdbcTemplate.queryForList(sql, args); + if (CollectionUtils.isNotEmpty(hscyList)) { + List entities = new ArrayList<>(); + hscyList.forEach(sampleInfo -> { + // 从视图中获取到的核酸采样相关信息 + String name = (String) sampleInfo.get("name"); + String cardNo = (String) sampleInfo.get("card_no"); + Date createTime = (Date) sampleInfo.get("create_time"); + + // 本地数据库中,居民信息 + NatUserInfoResultDTO currentResiInfo = idCardAndResiInfo.get(cardNo); + + IcNatEntity e = new IcNatEntity(); + e.setCustomerId(customerId); + e.setIsResiUser(StringUtils.isBlank(currentResiInfo.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR); + e.setUserId(currentResiInfo.getUserId()); + e.setMobile(""); + e.setUserType(isSync.equals(NumConstant.ONE_STR) ? "manualSync" : "sync"); + e.setName(StringUtils.isNotBlank(name) ? name : ""); + e.setIdCard(StringUtils.isNotBlank(cardNo) ? cardNo : ""); + e.setSampleTime(createTime); + // e.setSampleTime(DateUtils.parseDate(createTime, DateUtils.DATE_TIME_PATTERN)); + e.setAgencyId(currentResiInfo.getAgencyId()); + e.setPids(currentResiInfo.getPids()); + e.setAttachmentType(""); + e.setAttachmentUrl(""); + entities.add(e); + }); + if (CollectionUtils.isNotEmpty(entities)){ + List existSampleInfo = icNatDao.getExistNatInfo(entities); + sampleAndNat(existSampleInfo,entities,NumConstant.ONE_STR,customerId,isSync); + } + } + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml index 11018f0592..184c73ee7b 100644 --- a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml +++ b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml @@ -52,6 +52,22 @@ spring: wall: config: multi-statement-allow: true + # 对接兰图数据源 + yantai: + lantu: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/epmet_gov_voice?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai + username: root + password: root + initial-size: 10 + max-active: 100 + min-idle: 10 + max-wait: 60000 + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + # 数据迁移工具flyway flyway: enabled: @spring.flyway.enabled@ diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.80__natcompare.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.80__natcompare.sql new file mode 100644 index 0000000000..f19afc8b27 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.80__natcompare.sql @@ -0,0 +1,2 @@ +alter table ic_nat_compare_record add COLUMN `LATEST_CY_TIME` datetime DEFAULT NULL COMMENT '最近一次采样时间:接口填入' after IC_RESI_USER_ID; +ALTER TABLE ic_nat_compare_record ADD COLUMN INTERNAL_REMARK VARCHAR ( 128 ) DEFAULT '' COMMENT '备注;系统内部使用,方便看看错误' AFTER LATEST_IMPORT_TIME; \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml index cc94b06d4b..897493f745 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml @@ -11,6 +11,7 @@ c.MOBILE, c.ID_CARD, c.`NAME`, + c.LATEST_CY_TIME, c.LATEST_NAT_TIME, c.NAT_ADDRESS, c.NAT_RESULT, @@ -55,6 +56,9 @@ AND (r.AGENCY_ID = #{agencyId} or r.pids like concat('%',#{agencyId},'%') ) + + and DATE_FORMAT(c.LATEST_CY_TIME,'%Y%m%d') = #{cyDate} +