From 67cf59099d77ef5d5f7cc5da07786869c5315085 Mon Sep 17 00:00:00 2001 From: zhangye <654600784@qq.com> Date: Tue, 3 Mar 2026 12:18:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8C=E6=AD=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/persist/mapper/SysUserMapper.java | 2 + .../system/service/impl/DockServiceImpl.java | 56 +++++++++++++++++-- .../resources/mapper/system/SysUserMapper.xml | 16 +++++- .../scheduled/SyncHospitalData.java | 6 +- 4 files changed, 71 insertions(+), 9 deletions(-) diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java index 7771d1e..b193b24 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java @@ -152,4 +152,6 @@ public interface SysUserMapper { * @return */ List selectUserByRoleKey(@Param("roleKey") String roleKey); + + List getZcpsByHospitalId(@Param("hospitalId")Long hospitalId); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java index 5ee88e6..3dab2d4 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.pinyin.PinyinUtil; import com.ccsens.common.annotation.DataSource; import com.ccsens.common.constant.ErrorConstant; @@ -430,6 +431,10 @@ public class DockServiceImpl implements DockService { private void syncPmsPatient() { + //查找医院下第一个总测评师 + List sysUserList = sysUserMapper.getZcpsByHospitalId(hospitalId); + + DockPatientBaseInfoExample dockPatientBaseInfoExample = new DockPatientBaseInfoExample(); dockPatientBaseInfoExample.createCriteria().andSyncEqualTo("0").andDelFlagEqualTo((byte) 0); List dockPatientBaseInfos = dockPatientBaseInfoMapper.selectByExample(dockPatientBaseInfoExample); @@ -443,18 +448,22 @@ public class DockServiceImpl implements DockService { //根据患者患者唯一编号查询业务表内患者信息 PmsPatient pmsPatient; PmsPatientExample pmsPatientExample = new PmsPatientExample(); - pmsPatientExample.createCriteria().andIdcardEqualTo(dockPatientBaseInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); + pmsPatientExample.createCriteria().andPatientNoEqualTo(dockPatientBaseInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); List pmsPatients = pmsPatientMapper.selectByExample(pmsPatientExample); if (CollUtil.isNotEmpty(pmsPatients)) { //存在就更新 pmsPatient = pmsPatients.get(0); disposePmsPatient(dockPatientBaseInfo, pmsPatient); + pmsPatient.setHospitalId(hospitalId); + pmsPatient.setUserId(CollUtil.isEmpty(sysUserList) ? null : sysUserList.get(0).getUserId()); pmsPatientMapper.updateByPrimaryKeySelective(pmsPatient); } else { //不存在则插入 pmsPatient = new PmsPatient(); pmsPatient.setId(IdUtil.getSnowflake().nextId()); disposePmsPatient(dockPatientBaseInfo, pmsPatient); + pmsPatient.setHospitalId(hospitalId); + pmsPatient.setUserId(CollUtil.isEmpty(sysUserList) ? null : sysUserList.get(0).getUserId()); pmsPatientMapper.insertSelective(pmsPatient); } //修改同步表数据的状态 @@ -480,21 +489,52 @@ public class DockServiceImpl implements DockService { } private PmsPatientBody savePatientBady(DockPatientVisitInfo dockPatientVisitInfo) { + //根据医生和部门信息查找业务表内对应的医生账号和部门id + String doctorName = ""; + Long deptId = null; + //医生用户名 + String doctor = dockPatientVisitInfo.getDoctor(); + if (StrUtil.isNotEmpty(doctor)) { + String[] split = doctor.split("/"); + if (split.length > 1) { + SysUser sysUser = new SysUser(); + sysUser.setEmplCode(split[1]); + List sysUsers = sysUserMapper.selectUserList(sysUser); + if (CollUtil.isNotEmpty(sysUsers)) { + doctorName = sysUsers.get(0).getUserName(); + } + } + } + //部门id + if (StrUtil.isNotEmpty(dockPatientVisitInfo.getDepartment())) { + SysDept sysDept = new SysDept(); + sysDept.setDeptName(dockPatientVisitInfo.getDepartment()); + List sysDepts = sysDeptMapper.selectDeptList(sysDept); + if (CollUtil.isNotEmpty(sysDepts)) { + deptId = sysDepts.get(0).getDeptId(); + } + } + //根据患者唯一编号查找业务表内患者信息 PmsPatient pmsPatient; PmsPatientExample pmsPatientExample = new PmsPatientExample(); - pmsPatientExample.createCriteria().andIdcardEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); + pmsPatientExample.createCriteria().andPatientNoEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); List pmsPatients = pmsPatientMapper.selectByExample(pmsPatientExample); if (CollUtil.isEmpty(pmsPatients)) { //根据患者唯一编号查找同步表的患者信息 DockPatientBaseInfoExample dockPatientBaseInfoExample = new DockPatientBaseInfoExample(); - dockPatientBaseInfoExample.createCriteria().andIdCardEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); + dockPatientBaseInfoExample.createCriteria().andPatientNoEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); List dockPatientBaseInfos = dockPatientBaseInfoMapper.selectByExample(dockPatientBaseInfoExample); if (CollUtil.isNotEmpty(dockPatientBaseInfos)) { //存在则更新 pmsPatient = new PmsPatient(); pmsPatient.setId(IdUtil.getSnowflake().nextId()); disposePmsPatient(dockPatientBaseInfos.get(0), pmsPatient); + //更新患者所属的部门和创建者信息,暂不考虑其他,每次都更新 + pmsPatient.setHospitalId(ObjectUtil.isNull(deptId) ? hospitalId : deptId); + if (StrUtil.isNotEmpty(doctorName)) { + pmsPatient.setCreateBy(doctorName); + } pmsPatientMapper.insertSelective(pmsPatient); } else { //不存在表示患者确实不存在,直接跳过这个就诊信息 @@ -502,6 +542,12 @@ public class DockServiceImpl implements DockService { } } else { pmsPatient = pmsPatients.get(0); + //更新患者所属的部门和创建者信息,暂不考虑其他,每次都更新 + pmsPatient.setHospitalId(ObjectUtil.isNull(deptId) ? hospitalId : deptId); + if (StrUtil.isNotEmpty(doctorName)) { + pmsPatient.setCreateBy(doctorName); + } + pmsPatientMapper.updateByPrimaryKeySelective(pmsPatient); } //根据就诊流水号查询业务表内患者就诊信息 PmsPatientBody pmsPatientBody; @@ -568,7 +614,7 @@ public class DockServiceImpl implements DockService { pmsPatientDiagnosis.setPatientId(pmsPatientBody.getPatientId()); pmsPatientDiagnosis.setVisitNo(dockPatientDiagnosis.getVisitNo()); pmsPatientDiagnosis.setDiagnosisType(dockPatientDiagnosis.getDiagnosisType()); - pmsPatientDiagnosis.setIsMainDiagnosis(dockPatientDiagnosis.getIsMainDiagnosis().toString()); + pmsPatientDiagnosis.setIsMainDiagnosis(ObjectUtil.isNull(dockPatientDiagnosis.getIsMainDiagnosis()) ? "0" : dockPatientDiagnosis.getIsMainDiagnosis().toString()); pmsPatientDiagnosis.setDiagnosisCode(dockPatientDiagnosis.getDiagnosisCode()); pmsPatientDiagnosis.setDiagnosisName(dockPatientDiagnosis.getDiagnosisName()); pmsPatientDiagnosis.setDiagnosisDate(DateUtil.format(dockPatientDiagnosis.getDiagnosisDate(), "yyyy-MM-dd HH:mm:ss")); @@ -623,7 +669,7 @@ public class DockServiceImpl implements DockService { pmsPatientParentIllness.setPatientId(pmsPatientBody.getPatientId()); pmsPatientParentIllness.setVisitNo(dockPatientMedicationInfo.getVisitNo()); pmsPatientParentIllness.setDrugName(dockPatientMedicationInfo.getDrugName()); - pmsPatientParentIllness.setDose(dockPatientMedicationInfo.getDose().toString()); + pmsPatientParentIllness.setDose(ObjectUtil.isNull(dockPatientMedicationInfo.getDose()) ? "" : dockPatientMedicationInfo.getDose().toString()); pmsPatientParentIllness.setUnit(dockPatientMedicationInfo.getUnit()); pmsPatientParentIllness.setFrequency(dockPatientMedicationInfo.getFrequency()); pmsPatientParentIllnessMapper.insertSelective(pmsPatientParentIllness); diff --git a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml index 69b1035..98efb30 100644 --- a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -229,8 +229,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and u.del_flag = 0 and r.del_flag = 0 + - + insert into ums_user( user_id, dept_id, diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java index 98388b6..0d63ca7 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java @@ -24,13 +24,13 @@ public class SyncHospitalData { private DockService dockService; @DataSource(value = DataSourceType.SLAVE) - @Scheduled(cron = "0 */2 * * * ?") + @Scheduled(cron = "0 */1 * * * ?") public void syncHospitalData() { dockService.syncHospitalData(); } @DataSource(value = DataSourceType.SLAVE) - @Scheduled(cron = "*/30 * * * * ?") + @Scheduled(cron = "0 */1 * * * ?") public void syncDeptData() { try { List sysDepts = dockService.syncUmsDeptSlave(); @@ -48,7 +48,7 @@ public class SyncHospitalData { @DataSource(value = DataSourceType.SLAVE) - @Scheduled(cron = "*/30 * * * * ?") + @Scheduled(cron = "0 */1 * * * ?") public void syncUserData() { try { List sysUsers = dockService.syncUmsUserSlave();