Browse Source

修改同步接口

hnzxyjhyy
zhangye 2 weeks ago
parent
commit
67cf59099d
  1. 2
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java
  2. 56
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java
  3. 16
      ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml
  4. 6
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java

2
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java

@ -152,4 +152,6 @@ public interface SysUserMapper {
* @return
*/
List<SysUser> selectUserByRoleKey(@Param("roleKey") String roleKey);
List<SysUser> getZcpsByHospitalId(@Param("hospitalId")Long hospitalId);
}

56
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<SysUser> sysUserList = sysUserMapper.getZcpsByHospitalId(hospitalId);
DockPatientBaseInfoExample dockPatientBaseInfoExample = new DockPatientBaseInfoExample();
dockPatientBaseInfoExample.createCriteria().andSyncEqualTo("0").andDelFlagEqualTo((byte) 0);
List<DockPatientBaseInfo> 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<PmsPatient> 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<SysUser> 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<SysDept> 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<PmsPatient> 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<DockPatientBaseInfo> 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);

16
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
</select>
<select id="getZcpsByHospitalId" resultType="com.ccsens.common.core.domain.entity.SysUser">
SELECT
distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.sex, u.avatar, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.update_by, u.update_time, u.remark
,r.role_id,r.role_key
FROM
ums_user u
JOIN ums_user_role ur ON u.user_id = ur.user_id
join ums_role r on ur.role_id = r.role_id
WHERE
r.role_key = 'yy_zcps'
and u.del_flag = 0
and r.del_flag = 0
and u.dept_id = #{hospitalId}
</select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into ums_user(
<if test="userId != null and userId != 0">user_id,</if>
<if test="deptId != null and deptId != 0">dept_id,</if>

6
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<SysDept> 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<SysUser> sysUsers = dockService.syncUmsUserSlave();

Loading…
Cancel
Save