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