commit 17f073f52211d523192fc32f938cb5e4b464194c
Author: wyb <1977763549@qq.com>
Date: Mon May 27 09:14:27 2024 +0800
init:基础数据同步服务初始化;开发肇庆第一人医用户,科室,患者基础数据同步
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6a8a1e4
--- /dev/null
+++ b/.gitignore
@@ -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*
\ No newline at end of file
diff --git a/assembly.xml b/assembly.xml
new file mode 100644
index 0000000..b6fb827
--- /dev/null
+++ b/assembly.xml
@@ -0,0 +1,73 @@
+
+
+ exe
+
+ dir
+
+ false
+
+
+
+
+ /lib
+ ${basedir}/target/lib
+
+
+
+ /config
+ ${basedir}/target/resources
+ 0755
+
+ *.xml
+ *.yml
+ *.properties
+
+
+
+
+ /dataConfig
+ ${basedir}/target/dataConfig
+ 0755
+
+ *.json
+
+
+
+
+ /
+ ${basedir}/target/resources/bin
+ 0755
+
+ *.bat
+
+
+
+
+ /
+ ${basedir}/target/resources/bin
+ 0755
+
+ *.xml
+
+
+
+
+ /
+ ${basedir}
+ 0755
+
+ *.exe
+
+
+
+
+ ${basedir}/target
+ /
+ 0755
+
+ ${project.build.finalName}.jar
+
+
+
+
\ No newline at end of file
diff --git a/data-config/job-config/ViewPatientInfoSyncJob.json b/data-config/job-config/ViewPatientInfoSyncJob.json
new file mode 100644
index 0000000..0aad88c
--- /dev/null
+++ b/data-config/job-config/ViewPatientInfoSyncJob.json
@@ -0,0 +1 @@
+{"startDate": "2024-01-01", "pageNumber": 1, "pageSize": 100}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e854c6e
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,369 @@
+
+
+
+ com.docus
+ docus-bom
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ docus-collect-basic-data
+
+
+
+ com.docus
+ docus-knife4j-starter
+
+
+
+ com.belerweb
+ pinyin4j
+ 2.5.1
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ checker-qual
+ org.checkerframework
+
+
+ error_prone_annotations
+ com.google.errorprone
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.0
+
+
+ com.baomidou
+ dynamic-datasource-spring-boot-starter
+ 3.4.0
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ HdrHistogram
+ org.hdrhistogram
+
+
+ jsr305
+ com.google.code.findbugs
+
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.28
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+ compile
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+ compile
+
+
+ org.bgee.log4jdbc-log4j2
+ log4jdbc-log4j2-jdbc4.1
+
+
+ com.alibaba
+ druid
+ 1.2.4
+ compile
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.4.1
+ compile
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.0
+
+
+ com.xuxueli
+ xxl-job-core
+
+
+ com.docus
+ docus-base-starter
+
+
+ knife4j-spring-boot-autoconfigure
+ com.github.xiaoymin
+
+
+
+
+
+ com.docus
+ docus-tool-starter
+
+
+
+ com.docus
+ docus-shiro-starter
+
+
+
+ com.docus
+ docus-base-starter
+
+
+ springfox-core
+ io.springfox
+
+
+ springfox-schema
+ io.springfox
+
+
+ springfox-spi
+ io.springfox
+
+
+ knife4j-spring-boot-autoconfigure
+ com.github.xiaoymin
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-hystrix
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ junit
+ junit
+ test
+
+
+
+
+ com.microsoft.sqlserver
+ sqljdbc4
+ 4.0
+
+
+
+
+ com.oracle
+ ojdbc6
+ 11.2.0.4.0
+
+
+
+
+
+ org.apache.cxf
+ cxf-spring-boot-starter-jaxws
+ 3.3.4
+
+
+
+ org.dom4j
+ dom4j
+ 2.1.1
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.4.4
+
+ ZIP
+
+
+ non-exists
+ non-exists
+
+
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+
+ target/lib
+ false
+ false
+ runtime
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.2.0
+
+
+ copy-resources
+ package
+
+ copy-resources
+
+
+
+
+ src/main/resources
+
+ **/*.*
+
+
+
+ ${project.build.directory}/resources
+
+
+
+ copy-bin
+ package
+
+ copy-resources
+
+
+
+
+ src/main/resources
+ true
+
+ bin/*.xml
+ *.yml
+ bin/*.bat
+
+
+
+ ${project.build.directory}/resources
+
+
+
+ copy-data-config
+ package
+
+ copy-resources
+
+
+
+
+ ../../dataConfig
+ true
+
+
+ ${project.build.directory}/dataConfig
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.2.0
+
+
+ **/*.yml
+
+
+
+
+
+ maven-assembly-plugin
+
+
+
+ ${project.artifactId}
+ false
+
+ assembly.xml
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
+
+
+ dev
+
+ prod
+
+
+ true
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/archive/config/DocusProperties.java b/src/main/java/com/docus/server/archive/config/DocusProperties.java
new file mode 100644
index 0000000..83c0da4
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/config/DocusProperties.java
@@ -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;
+}
diff --git a/src/main/java/com/docus/server/archive/constans/SyncConstant.java b/src/main/java/com/docus/server/archive/constans/SyncConstant.java
new file mode 100644
index 0000000..1185305
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/constans/SyncConstant.java
@@ -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";
+}
diff --git a/src/main/java/com/docus/server/archive/converter/ZqDyRyDeptInfoConverter.java b/src/main/java/com/docus/server/archive/converter/ZqDyRyDeptInfoConverter.java
new file mode 100644
index 0000000..27f8e57
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/converter/ZqDyRyDeptInfoConverter.java
@@ -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;
+ }
+}
diff --git a/src/main/java/com/docus/server/archive/converter/ZqDyRyPatientInfoConverter.java b/src/main/java/com/docus/server/archive/converter/ZqDyRyPatientInfoConverter.java
new file mode 100644
index 0000000..9c283fb
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/converter/ZqDyRyPatientInfoConverter.java
@@ -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";
+ }
+}
diff --git a/src/main/java/com/docus/server/archive/converter/ZqDyRyUserInfoConverter.java b/src/main/java/com/docus/server/archive/converter/ZqDyRyUserInfoConverter.java
new file mode 100644
index 0000000..dc485cf
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/converter/ZqDyRyUserInfoConverter.java
@@ -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;
+ }
+}
diff --git a/src/main/java/com/docus/server/archive/service/DeptInfoSyncService.java b/src/main/java/com/docus/server/archive/service/DeptInfoSyncService.java
new file mode 100644
index 0000000..e4be672
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/service/DeptInfoSyncService.java
@@ -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();
+}
diff --git a/src/main/java/com/docus/server/archive/service/UserInfoSyncService.java b/src/main/java/com/docus/server/archive/service/UserInfoSyncService.java
new file mode 100644
index 0000000..16f9172
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/service/UserInfoSyncService.java
@@ -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();
+}
diff --git a/src/main/java/com/docus/server/archive/service/impl/ZqDyRyDeptInfoSyncServiceImpl.java b/src/main/java/com/docus/server/archive/service/impl/ZqDyRyDeptInfoSyncServiceImpl.java
new file mode 100644
index 0000000..fd7094a
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/service/impl/ZqDyRyDeptInfoSyncServiceImpl.java
@@ -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 deptInfoViews = deptInfoViewMapper.list();
+ if (Func.isEmpty(deptInfoViews)) {
+ return;
+ }
+ List powerDeptList = deptInfoViews.stream()
+ .map(ZqDyRyDeptInfoConverter::convertDeptInfo)
+ .collect(Collectors.toList());
+ saveOrUpdate(powerDeptList);
+ }
+
+ /**
+ * 根据修改的科室信息,根据科室code判断是否存在,如果存在则更新科室名称状态信息,如果不存在则插入科室信息
+ *
+ * @param iuPowerDeptList 修改的科室信息
+ */
+ private void saveOrUpdate(List iuPowerDeptList) {
+ Date nowDate = new Date();
+ List iuDeptCodes = iuPowerDeptList.stream()
+ .map(PowerDept::getDeptCode)
+ .collect(Collectors.toList());
+ List existsPowerDeptList = powerDeptMapper.findByDeptCodes(iuDeptCodes);
+ Map existsPowerDeptMap = existsPowerDeptList.stream().collect(Collectors.toMap(PowerDept::getDeptCode, Function.identity()));
+
+
+ List insertDeptList = new ArrayList<>();
+ List 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);
+ }
+
+ }
+}
diff --git a/src/main/java/com/docus/server/archive/service/impl/ZqDyRyUserInfoSyncServiceImpl.java b/src/main/java/com/docus/server/archive/service/impl/ZqDyRyUserInfoSyncServiceImpl.java
new file mode 100644
index 0000000..cd3f64a
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/service/impl/ZqDyRyUserInfoSyncServiceImpl.java
@@ -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 deptInfoViews = deptInfoViewMapper.list();
+ Map deptNameIdMap = deptInfoViews.stream().collect(Collectors.toMap(ZqDyRyDeptInfoView::getFDEPTNAME, ZqDyRyDeptInfoView::getID));
+ while (true) {
+ int startRow = ((pageNumber - 1) * size) + 1;
+ int endRow = pageNumber * size;
+ List userInfoViews = userInfoViewMapper.page(startRow, endRow);
+ if (Func.isNotEmpty(userInfoViews)) {
+ // 目前视图是名称,将名称转换为科室id
+ for (ZqDyRyUserInfoView userInfoView : userInfoViews) {
+ userInfoView.setFIP_DEPTID(deptNameIdMap.get(userInfoView.getFIP_DEPTID()));
+ }
+ // 转换保存
+ List 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 iuPowerUserList) {
+ Date nowDate = new Date();
+ List iuUserNames = iuPowerUserList.stream()
+ .map(PowerUser::getUserName)
+ .collect(Collectors.toList());
+
+ List existsPowerUserList = powerUserMapper.findByUserNames(iuUserNames);
+ Map existsPowerUserMap = existsPowerUserList.stream().collect(Collectors.toMap(PowerUser::getUserName, Function.identity()));
+ final String delimiter = ",";
+
+ List insertUserList = new ArrayList<>();
+ List 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 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 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);
+ }
+ }
+}
diff --git a/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyDeptInfoView.java b/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyDeptInfoView.java
new file mode 100644
index 0000000..5ee3c2d
--- /dev/null
+++ b/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyDeptInfoView.java
@@ -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;
+}
diff --git a/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyPatientInfoView.java b/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyPatientInfoView.java
new file mode 100644
index 0000000..50b95ae
--- /dev/null
+++ b/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyPatientInfoView.java
@@ -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;
+}
diff --git a/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyUserInfoView.java b/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyUserInfoView.java
new file mode 100644
index 0000000..8a4895b
--- /dev/null
+++ b/src/main/java/com/docus/server/zqdyry/entity/ZqDyRyUserInfoView.java
@@ -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;
+}
diff --git a/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyDeptInfoViewMapper.java b/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyDeptInfoViewMapper.java
new file mode 100644
index 0000000..f73266f
--- /dev/null
+++ b/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyDeptInfoViewMapper.java
@@ -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 list();
+
+}
diff --git a/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyPatientInfoViewMapper.java b/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyPatientInfoViewMapper.java
new file mode 100644
index 0000000..9a128e2
--- /dev/null
+++ b/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyPatientInfoViewMapper.java
@@ -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 pageByModifyTime(@Param("timeBegin") String timeBegin, @Param("timeEnd") String timeEnd, @Param("startRow") int startRow, @Param("endRow") int endRow);
+}
diff --git a/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyUserInfoViewMapper.java b/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyUserInfoViewMapper.java
new file mode 100644
index 0000000..4d901ff
--- /dev/null
+++ b/src/main/java/com/docus/server/zqdyry/mapper/ZqDyRyUserInfoViewMapper.java
@@ -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 page(@Param("startRow") int startRow, @Param("endRow") int endRow);
+
+}
diff --git a/src/main/resources/mapper/ZqDyRyDeptInfoViewMapper.xml b/src/main/resources/mapper/ZqDyRyDeptInfoViewMapper.xml
new file mode 100644
index 0000000..ffbc9ff
--- /dev/null
+++ b/src/main/resources/mapper/ZqDyRyDeptInfoViewMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/ZqDyRyPatientInfoViewMapper.xml b/src/main/resources/mapper/ZqDyRyPatientInfoViewMapper.xml
new file mode 100644
index 0000000..86fea94
--- /dev/null
+++ b/src/main/resources/mapper/ZqDyRyPatientInfoViewMapper.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/ZqDyRyUserInfoViewMapper.xml b/src/main/resources/mapper/ZqDyRyUserInfoViewMapper.xml
new file mode 100644
index 0000000..161245c
--- /dev/null
+++ b/src/main/resources/mapper/ZqDyRyUserInfoViewMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/winsw.exe b/winsw.exe
new file mode 100644
index 0000000..ba27e3f
Binary files /dev/null and b/winsw.exe differ