diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java index 016882b3e063e5dbdfc48fdb18e2752b190b349a..cabf946761e47dfc4f7b23713a649f6cbfc5caad 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java @@ -41,6 +41,10 @@ public enum LoginTypeEnum { * 打浦桥,外滩,小东门,老西门,豫园,五里桥,淮海,瑞二 */ WOA_ZZ("woa_zz", "中智用户系统公众号登录"), + /** + * 上海交通大学医学院附属第九人民医院黄浦分院 + */ + WOA_WD("woa_wd", "万达公众号用户系统公众号登录"), /** * H5登录 diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java index 4a1b04d39fc529977444d114fc53038376e6071c..56e508a524bd2211aa6d00b7d2426ea08b07fa74 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java @@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; +import cn.sh.stc.sict.cloud.common.core.dto.WOAWDUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import lombok.experimental.UtilityClass; @@ -37,7 +38,7 @@ public class WoaUtil { /** * 获取用户信息请求地址 */ - private final static String WOA_XSZY_USER_INFO_API_URL = WOA_XSZY_PROXY_PASS_URL + WOA_XSZY_GATEWAY_URL; + private final static String WOA_XSZY_USER_INFO_API_URL = WOA_XSZY_URL + WOA_XSZY_GATEWAY_URL; /** * 接口授权信息 @@ -98,6 +99,9 @@ public class WoaUtil { // private final static String WOA_ZZ_PROXY_PASS_URL = "https://booking.hpdapuqiao.com"; private final static String ZZ_USER_INFO_API_URL = WOA_ZZ_PROXY_PASS_URL + "/api/Other/GetPerson"; + //private final static String WOA_WD_PROXY_PASS_URL = "https://wxgzh.shjyhpfy.com/api/hosservice/visit/GetUserInfoByToken"; + private final static String WOA_WD_PROXY_PASS_URL = "http://30.30.5.74:9988/woa/wd"; + private final static String WOA_WD_USER_INFO_URL = WOA_WD_PROXY_PASS_URL + "/api/hosservice/visit/GetUserInfoByToken"; public WOAZzUserInfo getZzUserInfo(String accessToken) { try { @@ -114,6 +118,23 @@ public class WoaUtil { log.error(ex.getMessage(), ex); return null; } + } + + public WOAWDUserInfo getWoaWDUserInfo(String accessToken) { + try { + HttpResponse response = HttpRequest.get(WOA_WD_USER_INFO_URL) + .header("access-token", accessToken) + .execute(); + if (response.getStatus() != 200) { + log.error("万达公众号获取用户信息异常-1"); + return null; + } + return JSONUtil.toBean(response.body(), WOAWDUserInfo.class); + } catch (Exception ex) { + log.error("万达公众号token获取用户信息异-2!"); + log.error(ex.getMessage(), ex); + return null; + } } diff --git a/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java b/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java index 933036f75b1fb88bec6ab767892d9bc394a728ac..1ba6ae29af11ed6f68cb4b6e55d326a7e3a7cc63 100644 --- a/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java +++ b/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java @@ -10,6 +10,7 @@ import cn.sh.stc.sict.cloud.common.core.constant.RedisCacheConstant; import cn.sh.stc.sict.cloud.common.core.constant.UserConstant; import cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum; import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WOAWDUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; @@ -96,6 +97,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUserBase::getOpenId, userInfo.getId()) + .or() + .eq(SysUserBase::getPhone, userInfo.getMobile()) + .orderByDesc(SysUserBase::getUpdateTime) + .last("limit 1"); + SysUserBase user = this.getOne(wrapper); + + // 未注册用户默认注册 + if (user == null) { + user = new SysUserBase(); + user.setUserName(userInfo.getMobile()); + user.setOpenId(userInfo.getId()); + user.setName(userInfo.getUsername()); + user.setIdCard(userInfo.getPersoncard()); + user.setSex(userInfo.getGender()); + user.setHeadimg(userInfo.getAvator()); + user.setSource(source); + user.setStatus(Constant.BYTE_NO); + user.setPasswd(ENCODER.encode(Constant.DEFAULT_PASSWORD)); + user.setPhone(userInfo.getMobile()); + user.setAppId(appId); + + this.save(user); + } + + UserInfo info = new UserInfo(); + info.setSysUserBase(user); + info.setOpenId(userInfo.getId()); + + // 设置医疗机构代码,后续查询只显示当前医疗机构下的查询结果 + info.setHospitalCode(hospitalCode); + return info; + } + @Override public boolean saveDto(UserDTO dto) { if (NumberUtil.isNotNullOrZero(dto.getUser().getId())) { diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpBusyIdlePredictionService.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpBusyIdlePredictionService.java index 498ef1562ad548d35a5a44dd28954b3b65e26a62..e95e3023acbf5fe96b4e00c98d16006c30090873 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpBusyIdlePredictionService.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpBusyIdlePredictionService.java @@ -3,6 +3,7 @@ package cn.sh.stc.sict.theme.hpgp.service; import cn.hutool.core.date.DateTime; import cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction; import cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank; +import cn.sh.stc.sict.theme.hphy.model.HpDeptInfo; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Date; @@ -28,7 +29,7 @@ public interface HpgpBusyIdlePredictionService extends IService busyIdlePrediction(String hospitalCode, String deptName); - void statisticResourceInfo(HpgpDepartmentRank dept, Date startDate, Date endDate, Byte flag); + void statisticResourceInfo(HpDeptInfo dept, Date startDate, Date endDate, Byte flag); - List listByDeptRank(HpgpDepartmentRank dept, DateTime startTime, DateTime endTime); + List listByDept(HpDeptInfo dept, DateTime startTime, DateTime endTime); } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpKsHotService.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpKsHotService.java index e2677e590ede3bc76fec637298416232dee3ecd0..270c0e49487d3ac9ec0f6f44965b46b10091aa38 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpKsHotService.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpKsHotService.java @@ -17,8 +17,9 @@ public interface HpgpKsHotService extends IService { * 根据医疗机构代码查询热门科室 * * @param yljgdm 医疗机构代码 + * @param size 科室数量 * @return */ - List listHotDept(String yljgdm); + List listHotDept(String yljgdm, int size); } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpHzjlServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpHzjlServiceImpl.java index 7179aa563d9d48e21bd544551854704fbb314c9a..6f9d2aec903ceb6b956ec46645a7b5fa87a7f566 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpHzjlServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpHzjlServiceImpl.java @@ -8,19 +8,19 @@ import cn.hutool.core.util.StrUtil; import cn.sh.stc.sict.theme.hpgp.dao.HpHzjlMapper; import cn.sh.stc.sict.theme.hpgp.model.HpHzjl; import cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction; -import cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank; import cn.sh.stc.sict.theme.hpgp.model.HpgpKsHot; import cn.sh.stc.sict.theme.hpgp.service.HpHzjlService; import cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService; import cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService; import cn.sh.stc.sict.theme.hpgp.service.HpgpKsHotService; +import cn.sh.stc.sict.theme.hphy.model.HpDeptInfo; import cn.sh.stc.sict.theme.hphy.model.HpDocInfo; +import cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService; import cn.sh.stc.sict.theme.hphy.service.HpDocInfoService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -40,6 +40,9 @@ public class HpHzjlServiceImpl extends ServiceImpl impleme private final HpgpBusyIdlePredictionService hpgpBusyIdlePredictionService; private final HpDocInfoService hpDocInfoService; private final HpgpKsHotService hpgpKsHotService; + private final HpDeptInfoService hpDeptInfoService; + + private static final Integer MAX_DEPT_SIZE = 3; /** * 根据身份证号查找最后三次不同科室就诊记录,并计算忙闲 @@ -53,6 +56,7 @@ public class HpHzjlServiceImpl extends ServiceImpl impleme public List listByCertIdAndHosCode(String certId, String hospitalCode) { List result = new ArrayList<>(); + int resultDeptSize = 0; DateTime startTime = DateUtil.tomorrow(); DateTime endTime = DateUtil.offsetDay(startTime, 6); @@ -61,33 +65,38 @@ public class HpHzjlServiceImpl extends ServiceImpl impleme .eq(StrUtil.isNotBlank(hospitalCode), HpHzjl::getYljgdm, hospitalCode) .groupBy(HpHzjl::getJzksbm) .orderByDesc(HpHzjl::getJzksrq) - .last("limit 10"); + .last("limit " + MAX_DEPT_SIZE); List recordList = this.list(wrapper); if (CollUtil.isNotEmpty(recordList)) { for (HpHzjl record : recordList) { - if (result.size() >= 20) { - break; - } // 查找科室 - HpgpDepartmentRank dept = hpgpDepartmentRankService.getByCode(record.getYljgdm(), null, record.getJzksbm()); - if (ObjectUtil.isEmpty(dept)) { + LambdaQueryWrapper deptWrapper = Wrappers.lambdaQuery(); + deptWrapper.eq(HpDeptInfo::getHosOrgCode, record.getYljgdm()) + .eq(HpDeptInfo::getDeptCode, record.getJzksbm()) + .eq(HpDeptInfo::getDeptLevel, 2); + HpDeptInfo dept = hpDeptInfoService.getOne(deptWrapper); + if (ObjectUtil.isNull(dept)) { continue; } // 忙闲预测 - result.addAll(hpgpBusyIdlePredictionService.listByDeptRank(dept, startTime, endTime)); + result.addAll(hpgpBusyIdlePredictionService.listByDept(dept, startTime, endTime)); + resultDeptSize++; } } - // 历史科室查询结果为空时,采用热点科室数据 - if (CollUtil.isEmpty(result)) { - List hotList = hpgpKsHotService.listHotDept(hospitalCode); + // 历史科室查询结果少于3个时,采用热点科室数据补充 + if (resultDeptSize < MAX_DEPT_SIZE) { + List hotList = hpgpKsHotService.listHotDept(hospitalCode, MAX_DEPT_SIZE - resultDeptSize); hotList.forEach(hot -> { - HpgpDepartmentRank rank = new HpgpDepartmentRank(); - BeanUtils.copyProperties(hot, rank); - result.addAll(hpgpBusyIdlePredictionService.listByDeptRank(rank, startTime, endTime)); + HpDeptInfo dept = new HpDeptInfo(); + dept.setHosOrgCode(hot.getHospitalCode()); + dept.setHosName(hot.getHospitalName()); + dept.setOneDeptCode(hot.getOneDeptCode()); + dept.setDeptCode(hot.getDeptCode()); + dept.setDeptName(hot.getDeptName()); + result.addAll(hpgpBusyIdlePredictionService.listByDept(dept, startTime, endTime)); }); } - return result; } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java index 4ff1a8444d4918b44de0a440ab736cb8b4e5bbe1..365119bba5f1d7411067c425e8e5d3ae7b2cd2bf 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java @@ -15,6 +15,7 @@ import cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction; import cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank; import cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService; import cn.sh.stc.sict.theme.hpgp.vo.DeptRankVO; +import cn.sh.stc.sict.theme.hphy.model.HpDeptInfo; import cn.sh.stc.sict.theme.hphy.model.HpDocInfo; import cn.sh.stc.sict.theme.hphy.service.HpDocInfoService; import cn.sh.stc.sict.theme.hphy.wd.*; @@ -113,19 +114,26 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl result = new ArrayList<>(); deptList.forEach(rank -> { + HpDeptInfo dept = new HpDeptInfo(); + dept.setHosOrgCode(rank.getHospitalCode()); + dept.setHosName(rank.getHospitalName()); + dept.setOneDeptCode(rank.getOneDeptCode()); + dept.setDeptCode(rank.getDeptCode()); + dept.setDeptName(rank.getDeptName()); // 查询医院忙闲 - result.addAll(this.listByDeptRank(rank, startTime, endTime)); + result.addAll(this.listByDept(dept, startTime, endTime)); }); return result; } - private HpgpBusyIdlePrediction getNoneSourcePredictionInfo(HpgpDepartmentRank rank, Date i) { + private HpgpBusyIdlePrediction getNoneSourcePredictionInfo(HpDeptInfo dept, Date i) { HpgpBusyIdlePrediction vo = new HpgpBusyIdlePrediction(); - vo.setDeptCode(rank.getDeptCode()); - vo.setDeptName(rank.getDeptName()); - vo.setHospitalName(rank.getHospitalName()); - vo.setHospitalCode(rank.getHospitalCode()); + vo.setOneDeptCode(dept.getOneDeptCode()); + vo.setDeptCode(dept.getDeptCode()); + vo.setDeptName(dept.getDeptName()); + vo.setHospitalName(dept.getHosName()); + vo.setHospitalCode(dept.getHosOrgCode()); vo.setPredictionDate(i); vo.setScoreByNum(); return vo; @@ -133,14 +141,14 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl outList = WanDaHttpUtil.getResourceOutPatInfo(deptInfo); - List docList = WanDaHttpUtil.getResourceDoctInfo(deptInfo); + List outList = WanDaHttpUtil.getOutPatInfo(deptInfo); + List docList = WanDaHttpUtil.getDoctInfo(deptInfo); List hpDocList = hpDocInfoService.listByDeptInfo(deptInfo); if (CollUtil.isEmpty(outList) && CollUtil.isEmpty(docList) && CollUtil.isEmpty(hpDocList)) { return; @@ -168,13 +176,13 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl listByDeptRank(HpgpDepartmentRank rank, DateTime startTime, DateTime endTime) { + public List listByDept(HpDeptInfo dept, DateTime startTime, DateTime endTime) { List result = new ArrayList<>(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(HpgpBusyIdlePrediction::getHospitalCode, rank.getHospitalCode()) - .eq(HpgpBusyIdlePrediction::getOneDeptCode, rank.getOneDeptCode()) - .eq(HpgpBusyIdlePrediction::getDeptCode, rank.getDeptCode()) + wrapper.eq(HpgpBusyIdlePrediction::getHospitalCode, dept.getHosOrgCode()) + .eq(HpgpBusyIdlePrediction::getOneDeptCode, dept.getOneDeptCode()) + .eq(HpgpBusyIdlePrediction::getDeptCode, dept.getDeptCode()) .between(HpgpBusyIdlePrediction::getPredictionDate, DateUtil.format(startTime, DatePattern.NORM_DATE_FORMAT), DateUtil.format(endTime, DatePattern.NORM_DATE_FORMAT)) .orderByAsc(HpgpBusyIdlePrediction::getPredictionDate); List list = this.list(wrapper); @@ -184,28 +192,36 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl docList, Map dateResultMap, Date startDate, Date - endDate) { + private void getDocResourceInfo(HpDeptInfo dept, + List docList, + Map dateResultMap, + Date startDate, + Date endDate) { if (CollUtil.isNotEmpty(docList)) { docList.forEach(doc -> { NumSourceInfo numSourceInfo = new NumSourceInfo(); - numSourceInfo.setHosOrgCode(dept.getHospitalCode()); + numSourceInfo.setHosOrgCode(dept.getHosOrgCode()); numSourceInfo.setOneDeptCode(dept.getOneDeptCode()); numSourceInfo.setDeptCode(dept.getDeptCode()); numSourceInfo.setStartTime(DateUtil.format(startDate, DatePattern.NORM_DATE_FORMAT)); @@ -221,14 +237,24 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl n.getNumSourceId() + n.getScheduleId(), Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0)))) + .values().stream().mapToInt(NumSourceInfo::getReserveOrderNum).sum(); vo.setReserveOrderNum(NumberUtil.isNullOrZero(vo.getReserveOrderNum()) ? reserveOrderNum : vo.getReserveOrderNum() + reserveOrderNum); - int remain = numList.stream().mapToInt(NumSourceInfo::getRemainNum).sum(); + + int remain = numList.stream() + // 按最小粒度的预约时段分组,并取出分组后第一条号源信息 + .collect(Collectors.groupingBy(n -> n.getNumSourceId() + n.getScheduleId(), Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0)))) + .values().stream().mapToInt(NumSourceInfo::getRemainNum).sum(); vo.setRemainNum(NumberUtil.isNullOrZero(vo.getRemainNum()) ? remain : vo.getRemainNum() + remain); + vo.setScoreByNum(); dateResultMap.put(date, vo); }); @@ -239,7 +265,7 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl hpDocList, List docList, Map dateResultMap, Date startDate, @@ -251,7 +277,7 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl n.getNumSourceId() + n.getScheduleId(), Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0)))) + .values().stream().mapToInt(NumSourceInfo::getReserveOrderNum).sum(); vo.setReserveOrderNum(NumberUtil.isNullOrZero(vo.getReserveOrderNum()) ? reserveOrderNum : vo.getReserveOrderNum() + reserveOrderNum); - int remain = numList.stream().mapToInt(NumSourceInfo::getRemainNum).sum(); + + int remain = numList.stream() + // 按最小粒度的预约时段分组,并取出分组后第一条号源信息 + .collect(Collectors.groupingBy(n -> n.getNumSourceId() + n.getScheduleId(), Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0)))) + .values().stream().mapToInt(NumSourceInfo::getRemainNum).sum(); vo.setRemainNum(NumberUtil.isNullOrZero(vo.getRemainNum()) ? remain : vo.getRemainNum() + remain); + vo.setScoreByNum(); dateResultMap.put(date, vo); }); @@ -285,13 +321,13 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl outList, Map dateResultMap, Date startDate, Date endDate) { if (CollUtil.isNotEmpty(outList)) { outList.forEach(pat -> { NumSourceInfo numSourceInfo = new NumSourceInfo(); - numSourceInfo.setHosOrgCode(dept.getHospitalCode()); + numSourceInfo.setHosOrgCode(dept.getHosOrgCode()); numSourceInfo.setOneDeptCode(dept.getOneDeptCode()); numSourceInfo.setDeptCode(dept.getDeptCode()); numSourceInfo.setStartTime(DateUtil.format(startDate, DatePattern.NORM_DATE_FORMAT)); @@ -306,14 +342,24 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl n.getNumSourceId() + n.getScheduleId(), Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0)))) + .values().stream().mapToInt(NumSourceInfo::getReserveOrderNum).sum(); vo.setReserveOrderNum(NumberUtil.isNullOrZero(vo.getReserveOrderNum()) ? reserveOrderNum : vo.getReserveOrderNum() + reserveOrderNum); - int remain = numList.stream().mapToInt(NumSourceInfo::getRemainNum).sum(); + + int remain = numList.stream() + // 按最小粒度的预约时段分组,并取出分组后第一条号源信息 + .collect(Collectors.groupingBy(n -> n.getNumSourceId() + n.getScheduleId(), Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0)))) + .values().stream().mapToInt(NumSourceInfo::getRemainNum).sum(); vo.setRemainNum(NumberUtil.isNullOrZero(vo.getRemainNum()) ? remain : vo.getRemainNum() + remain); + vo.setScoreByNum(); dateResultMap.put(date, vo); }); diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpDepartmentRankServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpDepartmentRankServiceImpl.java index 274ecb7f8f4e5bcdd7e11bfd6765dfd758b6c7f8..9be0a162ac1d20c5ba935560159f50996322878e 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpDepartmentRankServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpDepartmentRankServiceImpl.java @@ -67,8 +67,8 @@ public class HpgpDepartmentRankServiceImpl extends ServiceImpl resourceOutPatInfo = WanDaHttpUtil.getResourceOutPatInfo(deptInfo); - List resourceDoctInfo = WanDaHttpUtil.getResourceDoctInfo(deptInfo); + List resourceOutPatInfo = WanDaHttpUtil.getOutPatInfo(deptInfo); + List resourceDoctInfo = WanDaHttpUtil.getDoctInfo(deptInfo); if (CollUtil.isEmpty(resourceDoctInfo) && CollUtil.isEmpty(resourceOutPatInfo)) { return; } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpKsHotServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpKsHotServiceImpl.java index f82b9ae9e01000efd9edae764de4fdcd70e31101..c268b5d4419898a123ec010792a9b046c7702888 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpKsHotServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpKsHotServiceImpl.java @@ -21,11 +21,11 @@ import java.util.List; public class HpgpKsHotServiceImpl extends ServiceImpl implements HpgpKsHotService { @Override - public List listHotDept(String yljgdm) { + public List listHotDept(String yljgdm, int size) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(HpgpKsHot::getGzh, StrUtil.isBlank(yljgdm) ? "ALL" : yljgdm) .orderByAsc(HpgpKsHot::getRankScore) - .last("limit 3"); + .last("limit " + size); return this.list(wrapper); } } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HpDeptInfoController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HpDeptInfoController.java index 4f015748aaff18f0c70d2d607d39934cfe39c390..8a8c92e0ee3080d90f6c45a74735d929a1fd4dcc 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HpDeptInfoController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HpDeptInfoController.java @@ -77,13 +77,13 @@ public class HpDeptInfoController extends ApiController { @RequestParam(value = "oneDeptCode", required = false) String oneDeptCode, @RequestParam(value = "dept", required = false) String deptCode, @RequestParam(value = "flag", required = false, defaultValue = Constant.STRING_NO) Byte flag) { - QueryWrapper wrapper = Wrappers.emptyWrapper(); - LambdaQueryWrapper queryWrapper = wrapper.select("DISTINCT standard_dept,hospital_code,hospital_name,one_dept_code,dept_code,dept_name").lambda(); - queryWrapper.eq(StrUtil.isNotEmpty(hospCode), HpgpDepartmentRank::getHospitalCode, hospCode) - .eq(StrUtil.isNotEmpty(oneDeptCode), HpgpDepartmentRank::getOneDeptCode, oneDeptCode) - .eq(StrUtil.isNotEmpty(deptCode), HpgpDepartmentRank::getDeptCode, deptCode); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(HpDeptInfo::getDeptLevel, 2) + .eq(StrUtil.isNotEmpty(hospCode), HpDeptInfo::getHosOrgCode, hospCode) + .eq(StrUtil.isNotEmpty(oneDeptCode), HpDeptInfo::getOneDeptCode, oneDeptCode) + .eq(StrUtil.isNotEmpty(deptCode), HpDeptInfo::getDeptCode, deptCode);; - List deptList = hpgpDepartmentRankService.list(queryWrapper); + List deptList = hpDeptInfoService.list(wrapper); log.error("医院科室查询结果deptList = {}", deptList); deptList.forEach(dept -> { if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) { diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java index 33989ab1602781baf3b676aa888798a54b385e95..895604abd088fc0693a372489cd0ddff025823f6 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java @@ -6,10 +6,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.sh.stc.sict.cloud.common.core.constant.Constant; import cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum; -import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; -import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; -import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; -import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.*; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; import cn.sh.stc.sict.cloud.common.core.util.R; import cn.sh.stc.sict.cloud.common.core.util.SsbUtil; @@ -143,6 +140,7 @@ public class HphyPatientBaseController { } // 获取患者信息 HphyPatientBase base = hphyPatientBaseService.getByOpenId(current.getOpenId()); + log.error("获取患者信息 = {}", JSONUtil.toJsonStr(base)); // 根据手机号去重 if (ObjectUtil.isNull(base) || NumberUtil.isNullOrZero(base.getId())) { base = hphyPatientBaseService.getByPhone(current.getPhone(), true); @@ -172,7 +170,13 @@ public class HphyPatientBaseController { if (LoginTypeEnum.WOA_ZZ.getType().equals(source)) { WOAZzUserInfo zzUserInfo = WoaUtil.getZzUserInfo(token); log.error("zzUser = {}", zzUserInfo); - base = hphyPatientBaseService.saveWoaInfo(current, zzUserInfo); + base = hphyPatientBaseService.saveWoaZzInfo(current, zzUserInfo); + } + // 万达微信公众后 + if (LoginTypeEnum.WOA_WD.getType().equals(source)) { + WOAWDUserInfo wdUserInfo = WoaUtil.getWoaWDUserInfo(token); + log.error("wdUserInfo = {}", wdUserInfo); + base = hphyPatientBaseService.saveWoaWdInfo(current, wdUserInfo); } } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/WDController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/WDController.java index 32137ff90f1fbfbf05179ad37180a2d13755b81b..9beb8d915dc0a10c1a08cc9ce51732f1987f00fc 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/WDController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/WDController.java @@ -75,20 +75,23 @@ public class WDController { public R getOrderNumberInfo(NumSourceInfo numSourceInfo) { // 医生查询所有号源能查到,查询指定类型号源差不多,20220715处理:查询所有,过滤 - String orderNumType = numSourceInfo.getOrderNumType(); - if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){ - numSourceInfo.setOrderNumType(null); - } +// String orderNumType = numSourceInfo.getOrderNumType(); +// if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){ +// numSourceInfo.setOrderNumType(null); +// } + numSourceInfo.setOrderNumType(null); List list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo); if(CollUtil.isEmpty(list)){ return new R(); } - if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){ - List result = list.stream().filter(i -> orderNumType.equals(i.getOrderNumType())).collect(Collectors.toList()); - return new R(result); - }else{ - return new R(list); - } + + return new R(list); +// if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){ +// List result = list.stream().filter(i -> orderNumType.equals(i.getOrderNumType())).collect(Collectors.toList()); +// return new R(result); +// }else{ +// return new R(list); +// } // if (CollUtil.isNotEmpty(list)) { // return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build(); 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 9aedb249725f260706ad019dbbae985fdcd574b4..6bab7771f720e23f10b9ae0b4f7cbea5fbb91734 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 @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.sh.stc.sict.cloud.common.core.constant.Constant; -import cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank; import cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService; import cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService; import cn.sh.stc.sict.theme.hphy.constant.DataConstant; @@ -19,7 +18,6 @@ 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -92,7 +90,7 @@ public class RefreshJob { /** * 每周一 2点 更新医生信息 - * + *

* 1、调用接口获取医生列表 * 2、删除现有医生信息 * 3、插入新的医生信息 @@ -115,11 +113,11 @@ public class RefreshJob { * 每天中午12点,晚上12点,统计号源信息 */ // @Scheduled(cron = "0 50 12 * * ? ") - @Scheduled(cron = "0 0 0,12 * * ? ") + @Scheduled(cron = "0 0 12,0 * * ? ") public void statisticRankDeptResourceInfo() { - QueryWrapper wrapper = Wrappers.emptyWrapper(); - LambdaQueryWrapper lambda = wrapper.select("DISTINCT standard_dept,hospital_code,hospital_name,one_dept_code,dept_code,dept_name").lambda(); - List deptList = hpgpDepartmentRankService.list(lambda); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(HpDeptInfo::getDeptLevel, 2); + List deptList = deptInfoService.list(wrapper); deptList.forEach(dept -> { if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) { return; @@ -141,7 +139,7 @@ public class RefreshJob { List docInfos = factory.getMapperFacade().mapAsList(doctInfos, HpDocInfo.class); try { docInfoService.saveDoctor(docInfos, hosOrgCode); - }catch (Exception e){ + } catch (Exception e) { log.error("医院 {} 医生信息保存出错", hosOrgCode); log.error(e.getMessage(), e); } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HpDeptInfoService.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HpDeptInfoService.java index 2371ab30dcfe3d675bc9ffa13aa41be1c457a40f..4d9b92d71ba931d470b78b2e2baea0ed5171047f 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HpDeptInfoService.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HpDeptInfoService.java @@ -21,4 +21,6 @@ public interface HpDeptInfoService extends IService { DeptDoctorsVO getDeptDoctors(String hospitalCode, String deptCode); void asyncUpdate(HpDeptInfo dept); + + } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java index 5495ad5c456e0660f0cc8464e293d5c8fddea014..80bfba4520f55a06eb8068b64ffe4d0003e874cd 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java @@ -1,9 +1,6 @@ package cn.sh.stc.sict.theme.hphy.service; -import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; -import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; -import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; -import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.*; import cn.sh.stc.sict.cloud.upms.dto.CurrentUser; import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase; import com.baomidou.mybatisplus.extension.service.IService; @@ -39,7 +36,16 @@ public interface HphyPatientBaseService extends IService { * @param userInfo 公众号用户详情 * @return XSZYUserInfo {@link WOAZzUserInfo} */ - HphyPatientBase saveWoaInfo(CurrentUser current, WOAZzUserInfo userInfo); + HphyPatientBase saveWoaZzInfo(CurrentUser current, WOAZzUserInfo userInfo); + + /** + * 保存万达公众号用户信息 + * + * @param current 当前用户 + * @param userInfo 公众号用户详情 + * @return XSZYUserInfo {@link WOAWDUserInfo} + */ + HphyPatientBase saveWoaWdInfo(CurrentUser current, WOAWDUserInfo userInfo); void savePatient(HphyPatientBase patient); diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java index 0bfc12f211aee3703d54217db7d6da2acab2b608..3c128065da92a37b439efaee3c4778d4fd39b9cd 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java @@ -77,8 +77,8 @@ public class HpDeptInfoServiceImpl extends ServiceImpl resourceOutPatInfo = WanDaHttpUtil.getResourceOutPatInfo(info); - List resourceDoctInfo = WanDaHttpUtil.getResourceDoctInfo(info); + List resourceOutPatInfo = WanDaHttpUtil.getOutPatInfo(info); + List resourceDoctInfo = WanDaHttpUtil.getDoctInfo(info); List remainDoctors = this.getRemainDoctList(doctors, resourceDoctInfo); return new DeptDoctorsVO(hosInfo, deptInfo, resourceOutPatInfo, remainDoctors); @@ -91,8 +91,8 @@ public class HpDeptInfoServiceImpl extends ServiceImpl resourceOutPatInfo = WanDaHttpUtil.getResourceOutPatInfo(deptInfo); - List resourceDoctInfo = WanDaHttpUtil.getResourceDoctInfo(deptInfo); + List resourceOutPatInfo = WanDaHttpUtil.getOutPatInfo(deptInfo); + List resourceDoctInfo = WanDaHttpUtil.getDoctInfo(deptInfo); if (CollUtil.isEmpty(resourceDoctInfo) && CollUtil.isEmpty(resourceOutPatInfo)) { return; } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java index bce7af5187cbf03f765dd8781dd356852622f77e..df49f0e73a0fa1c2866c970ce08a892c74937d8e 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java @@ -4,10 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.ObjectUtil; import cn.sh.stc.sict.cloud.common.core.constant.Constant; -import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; -import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; -import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; -import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.*; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils; import cn.sh.stc.sict.cloud.upms.dto.CurrentUser; @@ -112,7 +109,37 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl0){ + if (null != obj && Integer.valueOf(obj.toString()) > 0) { JSONArray arr = parse.getByPath("data.data", JSONArray.class); return ((JSONObject) arr.get(0)).get("SQJGMC").toString(); } @@ -48,6 +50,7 @@ public class WanDaHttpUtil { /** * 发送短信 + * * @param phone * @param msg * @param appName @@ -197,6 +200,7 @@ public class WanDaHttpUtil { */ public List getOrderNumInfo(NumSourceInfo numSourceInfo) { String xml = WanDaUtil.GetOrderNumInfoServiceXML(numSourceInfo); + log.error("号源查询:xml = {}", xml); String body = ""; try { body = HttpRequest.post(URL) @@ -215,14 +219,22 @@ public class WanDaHttpUtil { List list = new ArrayList<>(); if (null != nodeList && nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { - list.add(XmlUtil.xmlToBean(nodeList.item(i), NumSourceInfo.class)); + + try { + // 外层异常只处理查询号源、解析xml的问题 + // 号源数据出现异常,不再处理(大概率是医院数据质量低,造成号源数字解析问题) + list.add(XmlUtil.xmlToBean(nodeList.item(i), NumSourceInfo.class)); + } catch (Exception e) { + // ignore exception + } + } } return list; } else { return null; } - }catch (Exception e){ + } catch (Exception e) { log.error("号源查询失败,num = {}", JSONUtil.toJsonStr(numSourceInfo)); log.error("号源查询失败,body = {}", body); log.error(e.getMessage(), e); @@ -423,7 +435,7 @@ public class WanDaHttpUtil { */ public List getResourceDoctInfo(DeptInfo deptInfo) { String xml = WanDaUtil.GetResourceDoctInfoServiceXML(deptInfo); - //log.error("获取可预约医生信息 xml = {}", xml); + log.error("获取可预约医生信息 xml = {}", xml); String body = HttpRequest.post(URL) .body(xml) .execute() @@ -433,7 +445,7 @@ public class WanDaHttpUtil { log.error("获取可预约医生信息 失败"); return null; } - //log.info("获取可预约医生信息:body = {}", body); + log.error("获取可预约医生信息:body = {}", body); String returnXml = getReturn(body, "GetResourceDoctInfoService"); return serialDoctInfo(returnXml); } @@ -446,7 +458,7 @@ public class WanDaHttpUtil { */ public List getResourceOutPatInfo(DeptInfo deptInfo) { String xml = WanDaUtil.GetResourceOutPatInfoServiceXML(deptInfo); - //log.error("获取可预约门诊信息 xml = {}", xml); + log.error("获取可预约门诊信息 xml = {}", xml); String body = HttpRequest.post(URL) .body(xml) .execute() @@ -456,7 +468,7 @@ public class WanDaHttpUtil { log.error("查询门诊信息失败"); return null; } - //log.info("查询门诊信息:body = {}", body); + log.error("查询门诊信息:body = {}", body); String returnXml = getReturn(body, "GetResourceOutPatInfoService"); return serialOutPatInfo(returnXml); } @@ -487,7 +499,11 @@ public class WanDaHttpUtil { List list = new ArrayList<>(); if (null != nodeList && nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { - list.add(XmlUtil.xmlToBean(nodeList.item(i), DoctInfo.class)); + try { + list.add(XmlUtil.xmlToBean(nodeList.item(i), DoctInfo.class)); + }catch (Exception e){ + // ignore exception + } } } return list; @@ -505,7 +521,11 @@ public class WanDaHttpUtil { List list = new ArrayList<>(); if (null != nodeList && nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { - list.add(XmlUtil.xmlToBean(nodeList.item(i), OutPatInfo.class)); + try { + list.add(XmlUtil.xmlToBean(nodeList.item(i), OutPatInfo.class)); + }catch (Exception e){ + // ignore exception + } } } return list;