diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java index 4354e72e8396bdc7d1bb86a8f92117e34e631241..6c8d217ca8baf5dd30df158370ae65a918ac68eb 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java @@ -11,6 +11,7 @@ import cn.sh.stc.sict.theme.hphy.wd.DeptInfo; import cn.sh.stc.sict.theme.hphy.wd.DoctInfo; import cn.sh.stc.sict.theme.hphy.wd.HosInfo; import cn.sh.stc.sict.theme.hphy.wd.WanDaHttpUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import ma.glasnost.orika.MapperFactory; @@ -40,7 +41,10 @@ public class RefreshJob { private static final byte TOP_DEPT = 1; private static final byte TWO_DEPT = 2; - @Scheduled(cron = "0 44 13 * * ?") + /** + * 每月一日0点 更新医院信息 + */ + @Scheduled(cron = "0 0 0 1 * ?") public void updateHosp(){ HosInfo hosInfo = new HosInfo(); List list = WanDaHttpUtil.getHospitalInfo(hosInfo); @@ -70,42 +74,96 @@ public class RefreshJob { } } -// @Scheduled(cron = "") + /** + * 每周一1点 同步科室信息 + */ + @Scheduled(cron = "0 0 1 ? * 1") public void updateDept(){ List hospitals = hpHosInfoService.list(); if (CollectionUtil.isEmpty(hospitals)){ return; } - // TODO 获取一级科室 MapperFactory factory = new DefaultMapperFactory.Builder().build(); + for (HpHosInfo hospital : hospitals) { - saveOrUpdateTopDept(hospital.getHosOrgCode(), factory); + // 获取一级科室 + saveOrUpdateTopDept(hospital.getHosOrgCode()); + // 获取二级科室 + saveOrUpdateTwoDept(hospital.getHosOrgCode(), factory); } - - // TODO 获取二级科室 - } - private void saveOrUpdateTopDept(String hosOrgCode, MapperFactory factory){ + private void saveOrUpdateTopDept(String hosOrgCode){ List deptInfos = WanDaHttpUtil.getDeptInfoTop(new HosInfo(hosOrgCode)); if (CollectionUtil.isEmpty(deptInfos)){ return; } List hpDeptInfos = cloneTopDept(deptInfos); - - + for (HpDeptInfo hpDeptInfo : hpDeptInfos) { + saveOrUpdateTopDept(hpDeptInfo); + } } + private void saveOrUpdateTopDept(HpDeptInfo hpDeptInfo){ + try { + HpDeptInfo deptInfo = deptInfoService.getOne( + new LambdaQueryWrapper() + .eq(HpDeptInfo::getHosOrgCode, hpDeptInfo.getHosOrgCode()) + .eq(HpDeptInfo::getOneDeptCode, hpDeptInfo.getOneDeptCode()) + .eq(HpDeptInfo::getDeptLevel, TOP_DEPT) + ); + if (deptInfo != null){ + hpDeptInfo.setId(deptInfo.getId()); + deptInfoService.updateById(hpDeptInfo); + }else { + deptInfoService.save(hpDeptInfo); + } + }catch (Exception e){ + log.error("一级科室保存失败:{}", hpDeptInfo); + log.error(e.getMessage(), e); + } + } + private void saveOrUpdateTwoDept(String hosOrgCode, MapperFactory factory) { + List deptInfos = WanDaHttpUtil.getDeptInfoTwo(new DeptInfo(hosOrgCode)); + if (CollectionUtil.isEmpty(deptInfos)){ + return; + } -// @Scheduled(cron = "") - public void updateDeptTwo(){ + List hpDeptInfos = factory.getMapperFacade().mapAsList(deptInfos, HpDeptInfo.class); + for (HpDeptInfo hpDeptInfo : hpDeptInfos) { + hpDeptInfo.setDeptLevel(TWO_DEPT); + saveOrUpdateTwoDept(hpDeptInfo); + } + } + private void saveOrUpdateTwoDept(HpDeptInfo hpDeptInfo){ + try { + HpDeptInfo deptInfo = deptInfoService.getOne( + new LambdaQueryWrapper() + .eq(HpDeptInfo::getHosOrgCode, hpDeptInfo.getHosOrgCode()) + .eq(HpDeptInfo::getDeptCode, hpDeptInfo.getDeptCode()) + .eq(HpDeptInfo::getDeptLevel, TWO_DEPT) + ); + if (deptInfo != null){ + hpDeptInfo.setId(deptInfo.getId()); + deptInfoService.updateById(hpDeptInfo); + }else { + deptInfoService.save(hpDeptInfo); + } + }catch (Exception e){ + log.error("二级科室保存失败:{}", hpDeptInfo); + log.error(e.getMessage(), e); + } } - @Scheduled(cron = "0 42 14 * * ?") + + /** + * 每周一 2点 更新医生信息 + */ + @Scheduled(cron = "0 0 2 ? * 1") public void updateDocInfo(){ List list = hpHosInfoService.list(); @@ -143,6 +201,7 @@ public class RefreshJob { } }catch (Exception e){ log.error("医生信息保存出错:{}", docInfo); + log.error(e.getMessage(), e); } }