sinake
2025-09-29 07e3dfe61e3bbe7bc02e45e96247d4d922dca380
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -169,23 +169,28 @@
        List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);
        log.info("可同步出入院数量" + patMedInhospList.size());
        for (PatMedInhosp pm : patMedInhospList) {
            List<PatArchive> patArchives1=new ArrayList<>();
            try {
                //患者基本信息
                PatArchive patArchive = new PatArchive();
                patArchive.setPatientno(pm.getPatno());
                List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);
                if (patArchives.size() > 0) {
                    PatArchive pa1 = new PatArchive();
                    pa1.setPatientno(pm.getPatno());
                    List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);
                    if (CollectionUtils.isNotEmpty(patArchives1)) {
                        patArchives.get(0).setId(patArchives1.get(0).getId());
                        patArchives.get(0).setUpdateTime(new Date());
                        count += patArchiveMapper.updatePatArchive(patArchives.get(0));
                    } else {
                        patArchives.get(0).setCreateTime(new Date());
                        count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));
                if(ObjectUtils.isNotEmpty(pm.getPatno())) {
                    PatArchive patArchive = new PatArchive();
                    patArchive.setPatientno(pm.getPatno());
                    patArchive.setPageSize(5);
                    List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);
                    if (patArchives.size() > 0) {
                        PatArchive pa1 = new PatArchive();
                        pa1.setPatientno(pm.getPatno());
                        patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);
                        if (CollectionUtils.isNotEmpty(patArchives1)) {
                            patArchives.get(0).setId(patArchives1.get(0).getId());
                            patArchives.get(0).setUpdateTime(new Date());
                            count += patArchiveMapper.updatePatArchive(patArchives.get(0));
                        } else {
                            patArchives.get(0).setCreateTime(new Date());
                            count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));
                            patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);
                        }
                    }
                }
            }catch (Exception ex) {
@@ -193,6 +198,9 @@
            }
            try {
                if(patArchives1.size()>0) {
                    pm.setPatid(patArchives1.get(0).getId());
                }
                //同步出入院
                PatMedInhosp pmi = new PatMedInhosp();
                pmi.setSerialnum(pm.getSerialnum());
@@ -415,31 +423,34 @@
//            log.info("sysUser1的ID为:{}", sysUser1.getUserId());
//            log.info("sysUser1的HISUSERID为:{}", sysUser1.getHisUserId());
            if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;
            SysUser suTemp=new SysUser();
            SysUser suTemp = new SysUser();
            suTemp.setHisUserId(sysUser1.getHisUserId());
            List<SysUser> usersTemp= sysUser2Mapper.selectUserList(suTemp);
            if (usersTemp.size()>0) {
            List<SysUser> usersTemp = sysUser2Mapper.selectUserList(suTemp);
            if (usersTemp.size() > 0) {
                sysUser1.setUserId(usersTemp.get(0).getUserId());
                sysUser1.setUserName(sysUser1.getHisUserId());
                sysUser2Mapper.updateUser(sysUser1);
            }else{
            } else {
                sysUser1.setUserName(sysUser1.getHisUserId());
                sysUser2Mapper.insertUser(sysUser1);
                usersTemp= sysUser2Mapper.selectUserList(suTemp);
                usersTemp = sysUser2Mapper.selectUserList(suTemp);
            }
            //新增用户与部门
            //List<SysUserDept> sysUserDept = chMapper.yhyksxx(sysUser1);
            List<SysUserDept> sysUserDept=sysUserDeptAll.stream()
            List<SysUserDept> sysUserDept = sysUserDeptAll.stream()
                    .filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId()))
                    .collect(Collectors.toList());
                for (SysUserDept sud : sysUserDept) {
                    if (usersTemp.size() > 0) {
                        sud.setUserId(usersTemp.get(0).getUserId());
                        sysUserDeptMapper.insertSysUserDept(sud);
                    }
            for (SysUserDept sud : sysUserDept) {
                if (usersTemp.size() > 0) {
                    sud.setUserId(usersTemp.get(0).getUserId());
                    SysDept sysDeptTemp = sysDept2Mapper.selectDeptByCode(sud.getDeptCode());
                    if (sysDeptTemp != null)
                        sud.setDeptId(sysDeptTemp.getDeptId());
                    sysUserDeptMapper.insertSysUserDept(sud);
                }
            }
        }
        return i;
@@ -447,39 +458,20 @@
    @Override
    public Integer selectDeptList(SysDept dept) {
        int count=0;
        List<SysDept> sysDepts = chMapper.selectDeptList(dept);
        log.info("selectDeptList的采集到的数量为:{}", sysDepts.size());
        int i = sysDept2Mapper.batchDept(sysDepts);
        return i;
    }
    /**
     * 检查并执行分表的核心方法
     *
     * @param tableName 要检查的表名
     */
    private synchronized void checkAndShard(String tableName) {
        long currentCount = shardingMapper.getTableCount(tableName);
        if (currentCount >= SHARDING_THRESHOLD) {
            log.warn("表 '{}' 已达到分表阈值 {},准备执行分表操作...", tableName, SHARDING_THRESHOLD);
            String newTableName = tableName + "_" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy_MM"));
            Long maxId = shardingMapper.getMaxId(tableName);
            if (maxId == null) maxId = 0L;
            shardingMapper.renameTable(tableName, newTableName);
            log.info("已将表 '{}' 重命名为 '{}'", tableName, newTableName);
            shardingMapper.createLikeTable(tableName, newTableName);
            log.info("已创建新表 '{}'", tableName);
            shardingMapper.setAutoIncrement(tableName, maxId + 1);
            log.info("已设置新表 '{}' 的自增ID起始值为 {}", tableName, maxId + 1);
            log.info("表 '{}' 的分表操作完成!", tableName);
       // count = sysDept2Mapper.batchDept(sysDepts);
        for(SysDept row : sysDepts){
            SysDept sysDeptTemp= sysDept2Mapper.selectDeptByCode(row.getDeptCode());
            if(sysDeptTemp!=null&&sysDeptTemp.getDeptName()!=null){
                row.setDeptId(sysDeptTemp.getDeptId());
                count+=sysDept2Mapper.updateDept(row);
            }else{
                count+=sysDept2Mapper.insertDept(row);
            }
        }
        return count;
    }
}