init:基础数据同步服务初始化;开发肇庆第一人医用户,科室,患者基础数据同步

master
wyb 1 year ago
commit 17f073f522

35
.gitignore vendored

@ -0,0 +1,35 @@
target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
docus-services/docus-services-system1/
### IntelliJ IDEA ###
*.log
.idea
*.iws
*.iml
*.ipr
mvnw*
*.cmd
*.mvn
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
logs*

@ -0,0 +1,73 @@
<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
<id>exe</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<outputDirectory>/lib</outputDirectory>
<directory>${basedir}/target/lib</directory>
</fileSet>
<fileSet>
<outputDirectory>/config</outputDirectory>
<directory>${basedir}/target/resources</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.xml</include>
<include>*.yml</include>
<include>*.properties</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/dataConfig</outputDirectory>
<directory>${basedir}/target/dataConfig</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.json</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${basedir}/target/resources/bin</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.bat</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${basedir}/target/resources/bin</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.xml</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${basedir}</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.exe</include>
</includes>
</fileSet>
<!-- 将项目启动jar打包到boot目录中 -->
<fileSet>
<directory>${basedir}/target</directory>
<outputDirectory>/</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>${project.build.finalName}.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>

@ -0,0 +1 @@
{"startDate": "2024-01-01", "pageNumber": 1, "pageSize": 100}

@ -0,0 +1,369 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.docus</groupId>
<artifactId>docus-bom</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>docus-collect-basic-data</artifactId>
<dependencies>
<dependency>
<groupId>com.docus</groupId>
<artifactId>docus-knife4j-starter</artifactId>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<!--配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<exclusions>
<exclusion>
<artifactId>checker-qual</artifactId>
<groupId>org.checkerframework</groupId>
</exclusion>
<exclusion>
<artifactId>error_prone_annotations</artifactId>
<groupId>com.google.errorprone</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!--nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<artifactId>HdrHistogram</artifactId>
<groupId>org.hdrhistogram</groupId>
</exclusion>
<exclusion>
<artifactId>jsr305</artifactId>
<groupId>com.google.code.findbugs</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
<dependency>
<groupId>com.docus</groupId>
<artifactId>docus-base-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>knife4j-spring-boot-autoconfigure</artifactId>
<groupId>com.github.xiaoymin</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.docus</groupId>
<artifactId>docus-tool-starter</artifactId>
</dependency>
<dependency>
<groupId>com.docus</groupId>
<artifactId>docus-shiro-starter</artifactId>
</dependency>
<dependency>
<groupId>com.docus</groupId>
<artifactId>docus-base-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>springfox-core</artifactId>
<groupId>io.springfox</groupId>
</exclusion>
<exclusion>
<artifactId>springfox-schema</artifactId>
<groupId>io.springfox</groupId>
</exclusion>
<exclusion>
<artifactId>springfox-spi</artifactId>
<groupId>io.springfox</groupId>
</exclusion>
<exclusion>
<artifactId>knife4j-spring-boot-autoconfigure</artifactId>
<groupId>com.github.xiaoymin</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!--&lt;!&ndash;添加feign依赖&ndash;&gt;-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--sqlserver驱动-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<!-- oracle 驱动-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4.0</version>
</dependency>
<!-- webservice cxf-->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<!--打包时去除第三方依赖-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.4</version>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>non-exists</groupId>
<artifactId>non-exists</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!--拷贝第三方依赖文件到指定目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--target/lib是依赖jar包的输出目录根据自己喜好配置-->
<outputDirectory>target/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<!-- copy资源文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/resources</outputDirectory>
</configuration>
</execution>
<execution>
<id>copy-bin</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>bin/*.xml</include>
<include>*.yml</include>
<include>bin/*.bat</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/resources</outputDirectory>
</configuration>
</execution>
<execution>
<id>copy-data-config</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>../../dataConfig</directory>
<filtering>true</filtering>
</resource>
</resources>
<outputDirectory>${project.build.directory}/dataConfig</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 打jar包时忽略配置文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<excludes>
<exclude>**/*.yml</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.name>prod</profile.name>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
</project>

@ -0,0 +1,18 @@
package com.docus.server.archive.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author YongBin Wen
* @date 2024/5/23 15:47
*/
@Component
@Data
public class DocusProperties {
@Value("${docus.sync-service-prefix}")
private String syncServicePrefix;
@Value("${docus.default-user-pwd:fd29cd53ec12616e5f36b77d4afffbff}")
private String defaultUserPwd;
}

@ -0,0 +1,14 @@
package com.docus.server.archive.constans;
/**
* @author YongBin Wen
* @date 2024/5/23 15:42
*/
public interface SyncConstant {
String PATIENT_INFO_SYNC_SERVICE_SUFFIX = "PatientInfoSyncService";
String USER_INFO_SYNC_SERVICE_SUFFIX = "UserInfoSyncService";
String DEPT_INFO_SYNC_SERVICE_SUFFIX = "DeptInfoSyncService";
}

@ -0,0 +1,23 @@
package com.docus.server.archive.converter;
import com.docus.server.archive.entity.PowerDept;
import com.docus.server.zqdyry.entity.ZqDyRyDeptInfoView;
import java.util.Objects;
/**
* @author YongBin Wen
* @date 2024/5/24 14:17
*/
public class ZqDyRyDeptInfoConverter {
public static PowerDept convertDeptInfo(ZqDyRyDeptInfoView view) {
if (view == null) {
return null;
}
PowerDept powerDept = new PowerDept();
powerDept.setDeptCode(view.getID());
powerDept.setDeptName(view.getFDEPTNAME());
powerDept.setEffective(Objects.isNull(view.getSTATUS()) ? 1 : Integer.parseInt(view.getSTATUS()));
return powerDept;
}
}

@ -0,0 +1,62 @@
package com.docus.server.archive.converter;
import com.docus.server.archive.entity.TBasic;
import com.docus.server.archive.utils.PinYinUtil;
import com.docus.server.zqdyry.entity.ZqDyRyPatientInfoView;
/**
* @author YongBin Wen
* @date 2024/5/24 14:17
*/
public class ZqDyRyPatientInfoConverter {
public static TBasic convertPatientInfo(ZqDyRyPatientInfoView view) {
if (view == null) {
return null;
}
TBasic tBasic = new TBasic();
tBasic.setJzh(view.getJZH());
tBasic.setInpatientNo(view.getZYH());
tBasic.setAdmissTimes(view.getZYCS());
tBasic.setName(view.getXM());
tBasic.setNameSpell(getPinyinFirstSpell(view.getXM()));
tBasic.setSex(getSexCodeBySexName(view.getXB()));
tBasic.setSexName(view.getXB());
tBasic.setAdmissDate(view.getRYRQ());
tBasic.setAdmissDept(view.getRYBQ());
tBasic.setAdmissDeptName(view.getRYKS());
tBasic.setBedNo(view.getCWDM());
tBasic.setAttending(view.getDQYS());
tBasic.setAttendingName(view.getDQXM());
tBasic.setAge(view.getNL());
tBasic.setAgeMonth(0);
tBasic.setAgeDay(0);
tBasic.setIdCard(view.getSFZH());
tBasic.setTelphone(view.getLXDH());
tBasic.setDisDate(view.getCYRQ());
tBasic.setDisDept(view.getDQBQ());
tBasic.setDisDeptName(view.getDQKS());
tBasic.setTotalCost(view.getZJINE());
tBasic.setIsDead(view.getSFSW());
tBasic.setFileSource(1);
return tBasic;
}
public static String getPinyinFirstSpell(String str) {
try {
return PinYinUtil.getFirstSpell(str);
} catch (Exception ex) {
return null;
}
}
public static String getSexCodeBySexName(String sexName) {
if ("男".equals(sexName)) {
return "1";
}
if ("女".equals(sexName)) {
return "2";
}
return "3";
}
}

@ -0,0 +1,31 @@
package com.docus.server.archive.converter;
import com.docus.server.archive.entity.PowerUser;
import com.docus.server.zqdyry.entity.ZqDyRyUserInfoView;
/**
* @author YongBin Wen
* @date 2024/5/24 14:17
*/
public class ZqDyRyUserInfoConverter {
public static PowerUser convertUserInfo(ZqDyRyUserInfoView view) {
if (view == null) {
return null;
}
Long roleId = ("1".equals(view.getFL()) || "3".equals(view.getFL())) ? 1L : 2L;
Integer enable = "1".equals(view.getFISAVAILABLE()) ? 1 : 0;
PowerUser user = new PowerUser();
user.setUserName(view.getFEMPCODE());
user.setName(view.getFEMPNAME());
user.setDeptId(view.getFIP_DEPTID());
user.setEffective(enable);
user.setEnabled(enable);
user.setRoleId(roleId);
user.setPowerDept(user.getDeptId());
// 医生默认管辖医生为自己
if (roleId.equals(1L)) {
user.setPowerAttending(user.getUserName());
}
return user;
}
}

@ -0,0 +1,16 @@
package com.docus.server.archive.service;
/**
*
*
* @author YongBin Wen
* @date 2024/3/27 16:25
*/
public interface DeptInfoSyncService {
/**
*
* @date 2024/5/23 15:45
* @author YongBin Wen
*/
void fullSync();
}

@ -0,0 +1,17 @@
package com.docus.server.archive.service;
/**
*
*
* @author YongBin Wen
* @date 2024/3/27 16:25
*/
public interface UserInfoSyncService {
/**
*
*
* @date 2024/5/23 15:45
* @author YongBin Wen
*/
void fullSync();
}

@ -0,0 +1,93 @@
package com.docus.server.archive.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.archive.constans.SyncConstant;
import com.docus.server.archive.converter.ZqDyRyDeptInfoConverter;
import com.docus.server.archive.entity.PowerDept;
import com.docus.server.archive.mapper.PowerDeptMapper;
import com.docus.server.archive.service.DeptInfoSyncService;
import com.docus.server.zqdyry.entity.ZqDyRyDeptInfoView;
import com.docus.server.zqdyry.mapper.ZqDyRyDeptInfoViewMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author YongBin Wen
* @date 2024/3/27 16:25
*/
@Service("ZqDyRy" + SyncConstant.DEPT_INFO_SYNC_SERVICE_SUFFIX)
@Slf4j
public class ZqDyRyDeptInfoSyncServiceImpl implements DeptInfoSyncService {
@Resource
private PowerDeptMapper powerDeptMapper;
@Resource
private ZqDyRyDeptInfoViewMapper deptInfoViewMapper;
@Resource
private IdService idService;
@Override
public void fullSync() {
List<ZqDyRyDeptInfoView> deptInfoViews = deptInfoViewMapper.list();
if (Func.isEmpty(deptInfoViews)) {
return;
}
List<PowerDept> powerDeptList = deptInfoViews.stream()
.map(ZqDyRyDeptInfoConverter::convertDeptInfo)
.collect(Collectors.toList());
saveOrUpdate(powerDeptList);
}
/**
* code
*
* @param iuPowerDeptList
*/
private void saveOrUpdate(List<PowerDept> iuPowerDeptList) {
Date nowDate = new Date();
List<String> iuDeptCodes = iuPowerDeptList.stream()
.map(PowerDept::getDeptCode)
.collect(Collectors.toList());
List<PowerDept> existsPowerDeptList = powerDeptMapper.findByDeptCodes(iuDeptCodes);
Map<String, PowerDept> existsPowerDeptMap = existsPowerDeptList.stream().collect(Collectors.toMap(PowerDept::getDeptCode, Function.identity()));
List<PowerDept> insertDeptList = new ArrayList<>();
List<PowerDept> updateDeptList = new ArrayList<>();
for (PowerDept iuPowerDept : iuPowerDeptList) {
if (existsPowerDeptMap.containsKey(iuPowerDept.getDeptCode())) {
PowerDept powerDept = existsPowerDeptMap.get(iuPowerDept.getDeptCode());
powerDept.setDeptName(iuPowerDept.getDeptName());
powerDept.setEffective(iuPowerDept.getEffective());
powerDept.setUpdateDate(nowDate);
powerDept.setUpdater("java-sync");
updateDeptList.add(powerDept);
continue;
}
iuPowerDept.setDeptId(idService.getDateSeq());
iuPowerDept.setUpdater("java-sync");
iuPowerDept.setUpdateDate(nowDate);
iuPowerDept.setCreater("java-sync");
iuPowerDept.setCreateDate(nowDate);
iuPowerDept.setType(1);
iuPowerDept.setSort(0);
insertDeptList.add(iuPowerDept);
}
if (Func.isEmpty(insertDeptList)) {
powerDeptMapper.insertBatch(insertDeptList);
}
if (Func.isEmpty(updateDeptList)) {
powerDeptMapper.updateBatch(updateDeptList);
}
}
}

@ -0,0 +1,139 @@
package com.docus.server.archive.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.archive.config.DocusProperties;
import com.docus.server.archive.constans.SyncConstant;
import com.docus.server.archive.converter.ZqDyRyUserInfoConverter;
import com.docus.server.archive.entity.PowerUser;
import com.docus.server.archive.mapper.PowerUserMapper;
import com.docus.server.archive.service.UserInfoSyncService;
import com.docus.server.zqdyry.entity.ZqDyRyDeptInfoView;
import com.docus.server.zqdyry.entity.ZqDyRyUserInfoView;
import com.docus.server.zqdyry.mapper.ZqDyRyDeptInfoViewMapper;
import com.docus.server.zqdyry.mapper.ZqDyRyUserInfoViewMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author YongBin Wen
* @date 2024/3/27 16:25
*/
@Service("ZqDyRy" + SyncConstant.USER_INFO_SYNC_SERVICE_SUFFIX)
@Slf4j
public class ZqDyRyUserInfoSyncServiceImpl implements UserInfoSyncService {
@Resource
private PowerUserMapper powerUserMapper;
@Resource
private ZqDyRyUserInfoViewMapper userInfoViewMapper;
@Resource
private ZqDyRyDeptInfoViewMapper deptInfoViewMapper;
@Resource
private IdService idService;
@Resource
private DocusProperties docusProperties;
@Override
public void fullSync() {
int size = 2000;
int pageNumber = 1;
List<ZqDyRyDeptInfoView> deptInfoViews = deptInfoViewMapper.list();
Map<String, String> deptNameIdMap = deptInfoViews.stream().collect(Collectors.toMap(ZqDyRyDeptInfoView::getFDEPTNAME, ZqDyRyDeptInfoView::getID));
while (true) {
int startRow = ((pageNumber - 1) * size) + 1;
int endRow = pageNumber * size;
List<ZqDyRyUserInfoView> userInfoViews = userInfoViewMapper.page(startRow, endRow);
if (Func.isNotEmpty(userInfoViews)) {
// 目前视图是名称将名称转换为科室id
for (ZqDyRyUserInfoView userInfoView : userInfoViews) {
userInfoView.setFIP_DEPTID(deptNameIdMap.get(userInfoView.getFIP_DEPTID()));
}
// 转换保存
List<PowerUser> powerUsers = userInfoViews.stream()
.map(ZqDyRyUserInfoConverter::convertUserInfo)
.collect(Collectors.toList());
saveOrUpdate(powerUsers);
}
if (Func.isEmpty(userInfoViews) || userInfoViews.size() < size) {
break;
}
pageNumber++;
}
}
/**
*
*
* @param iuPowerUserList
*/
private void saveOrUpdate(List<PowerUser> iuPowerUserList) {
Date nowDate = new Date();
List<String> iuUserNames = iuPowerUserList.stream()
.map(PowerUser::getUserName)
.collect(Collectors.toList());
List<PowerUser> existsPowerUserList = powerUserMapper.findByUserNames(iuUserNames);
Map<String, PowerUser> existsPowerUserMap = existsPowerUserList.stream().collect(Collectors.toMap(PowerUser::getUserName, Function.identity()));
final String delimiter = ",";
List<PowerUser> insertUserList = new ArrayList<>();
List<PowerUser> updateUserList = new ArrayList<>();
for (PowerUser iuPowerUser : iuPowerUserList) {
if (existsPowerUserMap.containsKey(iuPowerUser.getUserName())) {
PowerUser powerUser = existsPowerUserMap.get(iuPowerUser.getUserName());
// 如果修改的管辖科室不为空,获取原来的,加上现在的,得到最新的,下面管辖医生同理
String powerDept = powerUser.getPowerDept();
if (Func.isNotBlank(iuPowerUser.getPowerDept())) {
HashSet<String> powerDepts = new HashSet<>();
if (Func.isNotBlank(powerDept)) {
Collections.addAll(powerDepts, powerDept.split(delimiter));
}
powerDepts.add(iuPowerUser.getPowerDept());
powerDept = String.join(delimiter, powerDepts);
}
String powerAttending = powerUser.getPowerAttending();
if (Func.isNotBlank(iuPowerUser.getPowerAttending())) {
HashSet<String> powerAttendings = new HashSet<>();
if (Func.isNotBlank(powerAttending)) {
Collections.addAll(powerAttendings, powerAttending.split(delimiter));
}
powerAttendings.add(iuPowerUser.getPowerAttending());
powerAttending = String.join(delimiter, powerAttendings);
}
powerUser.setName(iuPowerUser.getName());
powerUser.setEnabled(iuPowerUser.getEnabled());
powerUser.setEffective(iuPowerUser.getEffective());
powerUser.setPowerDept(powerDept);
powerUser.setPowerAttending(powerAttending);
powerUser.setUpdateDate(nowDate);
powerUser.setUpdater("java-sync");
updateUserList.add(powerUser);
continue;
}
iuPowerUser.setUserId(idService.getDateSeq());
iuPowerUser.setUpdater("java-sync");
iuPowerUser.setUpdateDate(nowDate);
iuPowerUser.setCreater("java-sync");
iuPowerUser.setCreateDate(nowDate);
iuPowerUser.setAccountState(0);
iuPowerUser.setIsThird(0);
iuPowerUser.setLoginFlag(0);
iuPowerUser.setPwdChange(0);
iuPowerUser.setUserPwd(docusProperties.getDefaultUserPwd());
insertUserList.add(iuPowerUser);
}
if (Func.isEmpty(insertUserList)) {
powerUserMapper.insertBatch(insertUserList);
}
if (Func.isEmpty(updateUserList)) {
powerUserMapper.updateBatch(updateUserList);
}
}
}

@ -0,0 +1,24 @@
package com.docus.server.zqdyry.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author YongBin Wen
* @date 2024/5/23 16:35
*/
@ApiModel("肇庆第一人医科室信息视图")
@Data
public class ZqDyRyDeptInfoView {
@ApiModelProperty("科室id")
private String ID;
@ApiModelProperty("科室编码")
private String FDEPTCODE;
@ApiModelProperty("科室名称")
private String FDEPTNAME;
@ApiModelProperty("启用状态1 启用0 停用")
private String STATUS;
@ApiModelProperty("最后修改时间")
private String CREATE_DEPT_TIME;
}

@ -0,0 +1,58 @@
package com.docus.server.zqdyry.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author YongBin Wen
* @date 2024/5/23 16:35
*/
@ApiModel("肇庆第一人医患者信息视图")
@Data
public class ZqDyRyPatientInfoView {
@ApiModelProperty("id号码 唯一标识")
private String JZH;
@ApiModelProperty("住院号")
private String ZYH;
@ApiModelProperty("住院次数")
private Integer ZYCS;
@ApiModelProperty("病人姓名")
private String XM;
@ApiModelProperty("性别 男女")
private String XB;
@ApiModelProperty("入院时间")
private Date RYRQ;
@ApiModelProperty("入院科室id")
private String RYBQ;
@ApiModelProperty("入院科室名称")
private String RYKS;
@ApiModelProperty("床位号码")
private String CWDM;
@ApiModelProperty("主治医师编码")
private String DQYS;
@ApiModelProperty("主治医师名称")
private String DQXM;
@ApiModelProperty("nl")
private Integer NL;
@ApiModelProperty("最后修改时间")
private String LAST_MODIFIC_TIME;
@ApiModelProperty("身份证件号码")
private String SFZH;
@ApiModelProperty("联系人电话")
private String LXDH;
@ApiModelProperty("出院时间")
private Date CYRQ;
@ApiModelProperty("出院科室编码")
private String DQBQ;
@ApiModelProperty("出院科室名称")
private String DQKS;
@ApiModelProperty("是否死亡 1死亡 0非死亡")
private Integer SFSW;
@ApiModelProperty("出院方式")
private String CYQK;
@ApiModelProperty("患者本次住院总费用")
private String ZJINE;
}

@ -0,0 +1,29 @@
package com.docus.server.zqdyry.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author YongBin Wen
* @date 2024/5/23 16:35
*/
@ApiModel("肇庆第一人医用户信息视图")
@Data
public class ZqDyRyUserInfoView {
@ApiModelProperty("员工工号")
private String FEMPCODE;
@ApiModelProperty("员工姓名")
private String FEMPNAME;
@ApiModelProperty("员工ID")
private String FDCOID;
@ApiModelProperty("所属科室id")
private String FIP_DEPTID;
@ApiModelProperty("启用标记如0停用1在用2废弃")
private String FISAVAILABLE;
@ApiModelProperty("角色1-医生2-护士3-其他医技)")
private String FL;
@ApiModelProperty("-登录密码")
private String FUSERPWD;
}

@ -0,0 +1,21 @@
package com.docus.server.zqdyry.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.server.zqdyry.entity.ZqDyRyDeptInfoView;
import java.util.List;
/**
* @author YongBin Wen
* @date 2024/3/27 15:55
*/
@DS("zqdyry")
public interface ZqDyRyDeptInfoViewMapper {
/**
*
*
* @return
*/
List<ZqDyRyDeptInfoView> list();
}

@ -0,0 +1,27 @@
package com.docus.server.zqdyry.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.server.zqdyry.entity.ZqDyRyPatientInfoView;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author YongBin Wen
* @date 2024/3/27 15:55
*/
@DS("zqdyry")
public interface ZqDyRyPatientInfoViewMapper {
/**
* (yyyy-MM-dd HH:mm:ss)
*
* @param timeBegin
* @param timeEnd
* @param startRow oracle ROWNUM 1
* @param endRow oracle ROWNUM ()
* @return
*/
List<ZqDyRyPatientInfoView> pageByModifyTime(@Param("timeBegin") String timeBegin, @Param("timeEnd") String timeEnd, @Param("startRow") int startRow, @Param("endRow") int endRow);
}

@ -0,0 +1,25 @@
package com.docus.server.zqdyry.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.server.zqdyry.entity.ZqDyRyUserInfoView;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author YongBin Wen
* @date 2024/3/27 15:55
*/
@DS("zqdyry")
public interface ZqDyRyUserInfoViewMapper {
/**
*
*
* @param startRow oracle ROWNUM 1
* @param endRow oracle ROWNUM ()
* @return
*/
List<ZqDyRyUserInfoView> page(@Param("startRow") int startRow, @Param("endRow") int endRow);
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.zqdyry.mapper.ZqDyRyDeptInfoViewMapper">
<select id="list" resultType="com.docus.server.zqdyry.entity.ZqDyRyDeptInfoView">
SELECT ID, FDEPTCODE,FDEPTNAME,STATUS,CREATE_DEPT_TIME
FROM V_JSWZH_EMR_DEPT_KS
</select>
</mapper>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.zqdyry.mapper.ZqDyRyPatientInfoViewMapper">
<select id="pageByModifyTime" resultType="com.docus.server.zqdyry.entity.ZqDyRyPatientInfoView">
SELECT *
FROM (
SELECT t.*,
ROWNUM rn
FROM V_JSWZH_BASE_ZL t
WHERE LAST_MODIFIC_TIME BETWEEN TO_DATE(#{timeBegin}, 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE(#{timeEnd}, 'YYYY-MM-DD HH24:MI:SS')
) WHERE rn BETWEEN ${startRow} AND ${endRow}
</select>
</mapper>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.zqdyry.mapper.ZqDyRyUserInfoViewMapper">
<select id="page" resultType="com.docus.server.zqdyry.entity.ZqDyRyUserInfoView">
SELECT *
FROM (
SELECT t.*,
ROWNUM rn
FROM V_JSWZH_EMR_EMPLOYEE t
) where rn BETWEEN ${startRow} AND ${endRow}
</select>
</mapper>

Binary file not shown.
Loading…
Cancel
Save