feat: 梅州三院,添加基础数据同步检查

master
WenYongbin 2 months ago
parent 6589a73323
commit b9b90dc3c8

@ -134,7 +134,7 @@ public class PatientInfoSyncJob {
}
private static class PatientInfoSyncJobConfig {
public static class PatientInfoSyncJobConfig {
private String startDate;
private String startTime;
private String cyrqStart;

@ -28,4 +28,8 @@ public interface TBasicMapper {
int delZkInfo(@Param("patientId") String patientId);
int addZkInfo(@Param("basicZkList") List<TBasicZkInfo> tBasicZkInfoList);
List<String> getJzhByDisDate(@Param("cyrqStart") String cyrqStart,@Param("offset") int offset,@Param("size") int size);
int cancenlByJzhs(@Param("jzhs") List<String> cancelJzhs);
}

@ -0,0 +1,71 @@
package com.docus.server.mzsy.job;
import cn.hutool.core.collection.CollUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.utils.TableJsonRead;
import com.docus.server.archive.job.PatientInfoSyncJob;
import com.docus.server.archive.mapper.TBasicMapper;
import com.docus.server.mzsy.entity.MzsyPatientInfoView;
import com.docus.server.mzsy.mapper.MzsyPatientInfoViewMapper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* @author YongBin Wen
* @date 2026/2/27 10:38
*/
@Component
@Slf4j
public class BasicCheckJob {
@Resource
private MzsyPatientInfoViewMapper mzsyPatientInfoViewMapper;
@Resource
private TBasicMapper tBasicMapper;
@XxlJob("MzsyBasicSyncCheckJob")
public void basicSyncCheckJob() {
log.info("梅州三院基础数据检查任务开始了");
try {
String jobConfigPath = "data-config\\job-config";
String jobConfigName = "ViewPatientInfoSyncJob.json";
TableJsonRead jsonReader = new TableJsonRead();
PatientInfoSyncJob.PatientInfoSyncJobConfig syncJobConfig = jsonReader.Read(jobConfigPath, jobConfigName, PatientInfoSyncJob.PatientInfoSyncJobConfig.class);
syncJobConfig = PatientInfoSyncJob.PatientInfoSyncJobConfig.checkAndInit(syncJobConfig);
String cyrqStart = syncJobConfig.getCyrqStart();
int offset = 0;
int size = 2000;
while (true) {
List<String> jzhs = tBasicMapper.getJzhByDisDate(cyrqStart, offset, size);
if (CollUtil.isEmpty(jzhs)) {
break;
}
List<MzsyPatientInfoView> views = mzsyPatientInfoViewMapper.getByJzh(cyrqStart, jzhs);
List<String> viewJzhs = views.stream().map(MzsyPatientInfoView::getJZH).collect(Collectors.toList());
List<String> cancelJzhs = new ArrayList<>();
for (String jzh : jzhs) {
if (viewJzhs.contains(jzh)) {
continue;
}
cancelJzhs.add(jzh);
}
if(CollUtil.isNotEmpty(cancelJzhs)){
tBasicMapper.cancenlByJzhs(cancelJzhs);
log.info("jzhs:{} 视图数据为无需同步数据或者不存在,作废基础数据!", Func.toJson(cancelJzhs));
}
offset = offset + size;
}
log.info("梅州三院基础数据检查任务结束了");
} catch (Exception e) {
log.error("梅州三院基础数据检查出错了," + e.getMessage(), e);
}
}
}

@ -19,4 +19,6 @@ public interface MzsyPatientInfoViewMapper {
List<TBasicZkInfo> listZkInfo(@Param("jzh") String jzh);
List<MzsyPatientInfoView> getByJzh(@Param("cyrqStart") String cyrqStart,@Param("jzhs") List<String> jzhs);
}

@ -23,4 +23,11 @@
from dbo.V_JSWZH_BASE_ZK
where jzh = #{jzh}
</select>
<select id="getByJzh" resultType="com.docus.server.mzsy.entity.MzsyPatientInfoView">
select ROW_NUMBER()over(order by jzh) as ROWNUMBER,* from dbo.V_JSWZH_BASE_ZL
where CONVERT(DATETIME, cyrq) &gt; #{cyrqStart}
and jzh in <foreach collection="jzhs" item="jzh" open="(" close=")" separator=",">
#{jzh}
</foreach>
</select>
</mapper>

@ -45,7 +45,7 @@
`admiss_date`=#{basic.admissDate},`admiss_dept`=#{basic.admissDept}, `admiss_dept_name`=#{basic.admissDeptName},
`dis_date`= #{basic.disDate},`dis_dept`=#{basic.disDept}, `dis_dept_name`=#{basic.disDeptName},
`attending`= #{basic.attending}, `attending_name`=#{basic.attendingName},
`is_dead`=#{basic.isDead},`file_source`=#{basic.fileSource},
`is_dead`=#{basic.isDead},`file_source`=#{basic.fileSource},`is_cancel`= 0,
`jzh`= #{basic.jzh},`bed_no`=#{basic.bedNo}, `jz_card_no`=#{basic.jzCardNo}, `total_cost`=#{basic.totalCost},
`create_time`= #{basic.createTime}, `update_time`=#{basic.updateTime},`admiss_days`=#{basic.admissDays},`grounding_no`=#{basic.groundingNo}
WHERE patient_id= #{basic.patientId};
@ -61,6 +61,13 @@
leave_method=#{basic.leaveMethod};
</foreach>
</update>
<update id="cancenlByJzhs">
UPDATE `docus_medicalrecord`.`t_basic`
set `is_cancel` = 0
where jzh in <foreach collection="jzhs" item="jzh" open="(" close=")" separator=",">
#{jzh}
</foreach>
</update>
<delete id="delZkInfo">
delete from docus_medicalrecord.t_basic_zk_info where patient_id = #{patientId}
</delete>
@ -79,4 +86,11 @@
#{jzh}
</foreach>
</select>
<select id="getJzhByDisDate" resultType="java.lang.String">
select jzh
from docus_medicalrecord.t_basic
where dis_date > #{cyrqStart}
and is_cancel = 0
limit ${offset},${size}
</select>
</mapper>

Loading…
Cancel
Save