package thyyxxk.webserver.service.zhuyuanyisheng; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import thyyxxk.webserver.config.exception.BizException; import thyyxxk.webserver.config.exception.ExceptionEnum; import thyyxxk.webserver.constants.Capacity; import thyyxxk.webserver.constants.Message; import thyyxxk.webserver.dao.his.zhuyuanyisheng.CheckTheCallbackDao; import thyyxxk.webserver.dao.his.zhuyuanyisheng.JianYanJianChaDao; import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuLuRuDao; import thyyxxk.webserver.entity.ResultVo; import thyyxxk.webserver.entity.datamodify.GetDropdownBox; import thyyxxk.webserver.entity.login.UserInfo; import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.*; import thyyxxk.webserver.entity.zhuyuanyisheng.query.ChaXunJianChaHeJianYan; import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.PatientTemp; import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYiZhu; import thyyxxk.webserver.service.PublicServer; import thyyxxk.webserver.service.redislike.RedisLikeService; import thyyxxk.webserver.utils.*; import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** *

* 描述: 住院医生,检查申请 *

* * @author xc * @date 2022-02-10 15:37 */ @Service @Slf4j public class JianYanJianChaShenQingService { private final JianYanJianChaDao dao; private final PublicServer publicServer; private final YiZhuLuRuDao yiZhuLuRuDao; private final RedisLikeService realtimeService; private final CheckTheCallbackDao checkTheCallbackDao; public JianYanJianChaShenQingService(JianYanJianChaDao dao, PublicServer publicServer, YiZhuLuRuDao yiZhuLuRuDao, RedisLikeService realtimeService, CheckTheCallbackDao checkTheCallbackDao) { this.dao = dao; this.publicServer = publicServer; this.yiZhuLuRuDao = yiZhuLuRuDao; this.realtimeService = realtimeService; this.checkTheCallbackDao = checkTheCallbackDao; } /*-------------------------------------------------------------- 下面是检查的逻辑 -----------------------------------------------------------------------------------------------------*/ /** * 获取检查申请 * * @param param 检查申请 * @return 返回数据 */ public ResultVo> huoQuJianChaShenQing(ChaXunJianChaHeJianYan param) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("inpatient_no", param.getPatNo()); qw.eq("admiss_times", param.getTimes()); qw.eq("req_type", "3"); if (StringUtil.notBlank(param.getOrderName())) { qw.like("order_name", param.getOrderName()); } if (StringUtil.notBlank(param.getStartTime())) { qw.ge("start_time", param.getStartTime()) .le("start_time", param.getEndTime()); } qw.orderByDesc("req_date"); List list = dao.huoQuJianChaShenQingV2(qw); return ResultVoUtil.success(list); } public ResultVo> huoQuShengQingXiangQing(Integer reqNo) { YshYjReq req = dao.huoQuShengQingXiangQing(reqNo); if (req == null) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_HTML_ERROR, "没有查询到有效信息,可能已经被删除了。"); } Map map = new HashMap<>(); StringBuilder zhuYiShiXiang = new StringBuilder(); JcZdClass jc = dao.daYingXiangQing(req.getOrderType()); if (jc == null) { jc = new JcZdClass(); jc.setComm("检查申请单"); } if (StringUtil.isBlank(jc.getComm())) { jc.setComm("检查申请单"); } if (req.getReqType().trim().equals("2") && req.getClasses() != null && req.getClasses().equals("038")) { jc = new JcZdClass(); jc.setComm("病理检验申请单"); } else if (req.getReqType().trim().equals("2")) { return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "非病理无需打印"); } // 获取患者的住址和性别 PatientTemp patient = dao.huoQuHuanZheXinXi(req.getInpatientNo()); req.setSex(patient.getSex()); // 地址 req.setHomeStreet(patient.getHomeStreet()); //联系电话 req.setHomeTel(patient.getHomeTel()); // 医保身份 req.setResponceTypeName(dao.huoQuHuanZheShenFen(req.getInpatientNo())); map.put("title", jc.getComm()); Field[] fields = jc.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); // 输出属性名和属性值 try { String key = field.getName(); Object value = EntityStringTrim.getFieldValue(jc, key); if (key.startsWith("comment") && StringUtil.notBlank((String) value)) { zhuYiShiXiang.append(((String) value).trim()).append("\n"); } } catch (Exception e) { e.printStackTrace(); } } map.put("mattersNeedingAttention", zhuYiShiXiang.toString()); map.put("data", req); return ResultVoUtil.success(map); } public ResultVo> getTemplateGrouping(Integer itemType, Integer templateType) { QueryWrapper qw = templateQueryWrapper(itemType, templateType); return ResultVoUtil.success(dao.getTemplate(qw)); } public ResultVo>> getTemplateByCodeAndType(String code, String type) { return ResultVoUtil.success(dao.getTemplateByCodeAndType(code, type, type.equals("2") ? "jy_zd_item" : "jc_zd_item")); } private QueryWrapper templateQueryWrapper(Integer itemType, Integer templateType) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("c.req_type", itemType); if (templateType == 2) { qw.eq("c.op_id", TokenUtil.getInstance().getTokenUserId()); } else { UserInfo info = realtimeService.getUserInfoByToken(); qw.eq("c.tc_exec", info.getDeptCode()); } return qw; } /** * @param itemType 3-检查 2-检验 * @param templateType 2 个人 3 科室模板 * @return */ public ResultVo> getTemplate(Integer itemType, Integer templateType) { QueryWrapper qw = templateQueryWrapper(itemType, templateType); List parentNode = dao.getTemplate(qw); Map map = parentNode .stream() .collect(Collectors.toMap(JcZdClass::getCode, a -> a, (k1, k2) -> k1)); List> tempContent = dao.selectTemplateContent(qw); tempContent.forEach(item -> { JcZdClass jcZdClass = map.get(item.get("tc_no")); if (jcZdClass != null) { if (jcZdClass.getList() == null) { jcZdClass.setList(new ArrayList<>()); } jcZdClass.getList().add(item); } }); return ResultVoUtil.success(parentNode); } /** * 删除检查或检验模板 * * @param code 要删除的模板 code * @param deptCode 当前患者的科室编码 * @return 返回提示 */ public ResultVo shanShuJianChaMuBan(String code, String deptCode) { ZyTcYj yj = dao.jianChaLuRuRen(code); if (yj == null) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有找对应的记录可能已经被删除了。"); } if (jianChaMuBanPanDuan(yj.getOpId(), yj.getTcExec(), deptCode)) { dao.shanChuJianChaMuBan(code); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有权限执行这个操作。"); } /** * 检查模板的判断 * * @param opId 录入人 * @param tcExec 模板的科室 * @param deptCode 当前用户的科室 * @return boolean */ public boolean jianChaMuBanPanDuan(String opId, String tcExec, String deptCode) { List userRole = publicServer.getRoleCode().getData(); // 医务部 if (userRole.contains(38)) { return true; } // 科主任 可以删除自己科室任意模板 if (userRole.contains(11) && tcExec.trim().equals(deptCode)) { return true; } // 普通的只能删除自己的 return opId.trim().equals(TokenUtil.getInstance().getTokenUserId()); } /** * 获取说明,模板的一下信息 * * @param name 根据说明模板来 搜索 * @param fenLei 分类 * @param total 总数 * @param currentPage 当前页 * @return 返回提示 */ public ResultVo> huoMuShuoMingMuBan(String name, Integer fenLei, long total, long currentPage) { Page page = new Page<>(currentPage, 20, total == 0); page = dao.huoQuShuoMingMuBan(page, StringUtil.isContainChinese(name), fenLei, TokenUtil.getInstance().getTokenUserId()); return ResultVoUtil.success(page); } /** * 对于说明模板的操作 * * @param param 说明模板的内容 * @return 返回提示 */ public ResultVo shouMingMuBanChaoZuo(YshZdYjTemplate param) { switch (param.getLeiXing()) { case "修改": return xiuGaiMuBan(param, dao.muBanShuJu(param.getCode())); case "删除": return shanChuMuBan(dao.muBanShuJu(param.getCode())); case "新增": return xinZengShouMingMuBan(param); default: return ResultVoUtil.success(); } } /** * 修改说明模板 * * @param param 修改的数据 * @param mb 原来的数据 * @return 返回提示 */ private ResultVo xiuGaiMuBan(YshZdYjTemplate param, YshZdYjTemplate mb) { if (publicServer.noNeedRule(38)) { if (!TokenUtil.getInstance().getTokenUserId().equals(mb.getOpId().trim())) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该模板创建人不是你,无法操作。"); } } dao.genXingShouMingMuBan(param.getJcText(), param.getName(), PingYinUtils.pyShouZiMuDaXie(param.getName()), PingYinUtils.getWBCode(param.getName()), param.getCode()); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } /** * 删除说明模板 * * @param mb 通过数据库查找 原来的模板 * @return 返回提示 */ private ResultVo shanChuMuBan(YshZdYjTemplate mb) { List userRole = publicServer.getRoleCode().getData(); if (publicServer.noNeedRule(userRole, 38)) { if (TokenUtil.getInstance().getTokenUserId().equals(mb.getOpId().trim()) || (userRole.contains(11) && mb.getDeptCode().trim().equals(mb.getUserDeptCode().trim()))) { dao.shanChuShouMingMuBan(mb.getCode()); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } else { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有权限修改。"); } } dao.shanChuShouMingMuBan(mb.getCode()); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } /** * 新增说明模板 * * @param param 新增的数据 * @return 返回提示 */ private ResultVo xinZengShouMingMuBan(YshZdYjTemplate param) { if (param.getWhFlag().trim().equals("3") && publicServer.noNeedRule(38)) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有权限创建全院模板。"); } param.setCode(publicServer.getYjTemplateNo().toString()); param.setPyCode(PingYinUtils.pyShouZiMuDaXie(param.getName(), 8)); param.setDCode(PingYinUtils.getWBCode(param.getName(), 8)); param.setOpId(TokenUtil.getInstance().getTokenUserId()); dao.xinZengShouMingMuBan(param); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } /** * 搜索临床诊断 * * @param name 搜索的名字 * @return 返回搜索的数据 */ @DS("his") public ResultVo> diagnosisInOurHospital(String name) { return ResultVoUtil.success(dao.diagnosisInOurHospital(StringUtil.isContainChinese(name))); } /** * 判断检查模板是否有重复的 * * @param name 名称 * @return 返回有没有 */ public ResultVo jianChaJianYanMuBanMing(String name, String reqType) { return ResultVoUtil.success(!dao.huoQuJianChaJianYanChongFuMuBanMing(name, TokenUtil.getInstance().getTokenUserId(), reqType).isEmpty()); } /** * 保存检查或检验模板 * * @param param 数据 * @return 返回提示 */ public ResultVo baoCunJianChaJianYanMuBan(ZyTcYj param) { param.setOpId(TokenUtil.getInstance().getTokenUserId()); param.setTcNo(publicServer.huoQuJianYanJianChaXuHao().toString()); param.setPyCode(PingYinUtils.pyShouZiMuDaXie(param.getTcName(), 8)); param.setDCode(PingYinUtils.getWBCode(param.getTcName(), 8)); List yuanShuJu = dao.huoQuJianChaJianYanChongFuMuBanMing(param.getTcName(), param.getOpId(), param.getReqType()); if (ListUtil.notBlank(yuanShuJu)) { for (String s : yuanShuJu) { dao.shanChuJianChaMuBan(s); } } dao.chaRuJCJYMuBan(param); dao.chaRuJCJYMuBanNeiRong(param.getList(), param.getTcNo(), param.getReqType().trim()); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } public ResultVo baoCunJianYanJianCha(TianJiaJianChaJianYan param) { if (ListUtil.isBlank(param.getList())) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请选择需要保存的数据。"); } XinZhenYiZhu huanZheXinXi = yiZhuLuRuDao.queryPatientInfo(param.getInpatientNo(), param.getAdmissTimes()); publicServer.huanZheJieSuan(param.getInpatientNo(), param.getAdmissTimes()); List xm = new ArrayList<>(); int index = 1; List content = new ArrayList<>(); StringBuilder cuoWuXinXi = new StringBuilder(); for (YshYjReq item : param.getList()) { if (item.getQuantity() == null) { item.setQuantity(BigDecimal.ONE); } if (StringUtil.notBlank(item.getJzFlag()) && "0".equals(item.getJzFlag())) { item.setJzFlag(null); } if (StringUtil.notBlank(item.getYbSelfFlag()) && "0".equals(item.getYbSelfFlag())) { item.setYbSelfFlag(null); } if (StringUtil.isBlank(item.getOrderCode())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "项目编码不能为空")); } if (StringUtil.isBlank(item.getOrderName())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "项目名称不能为空")); } if (item.getStartTime() == null) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "检查时间不能为空")); } else if (DateUtil.shiJianDaXiao(huanZheXinXi.getAdmissDate(), item.getStartTime(), ">")) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "医嘱时间不能小于入院时间")); } if (StringUtil.isBlank(item.getExecDept())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "执行科室不能为空。")); } if ("3".equals(param.getReqType())) { if (StringUtil.isBlank(item.getReqComment())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "病室摘要不能为空。")); } if (StringUtil.isBlank(item.getReqTzComment())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "体征信息不能为空。")); } if (StringUtil.isBlank(item.getReqOtherResult())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "相关辅检结果不能为空。")); } if (StringUtil.isBlank(item.getDiagCode())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "临床诊断不能为空。")); } } else { if (StringUtil.isBlank(item.getInspectStuff())) { cuoWuXinXi.append(baoCunCuoWuXinXi(index, "标本不能为空。")); } } if (cuoWuXinXi.length() > 0) { cuoWuXinXi.append("
"); } xm.add(item.getOrderCode().trim()); content.add(String.format("%s:【%s】
" + "患者姓名:【%s】
" + "床位:【%s】", "2".equals(param.getReqType()) ? "检查名" : "检验名", item.getOrderName(), huanZheXinXi.getName(), huanZheXinXi.getBedNo())); index++; } // 先判断是不是停用了 String tingYong = publicServer.xiangMuXianZhi(xm, true); if (StringUtil.notBlank(tingYong)) { throw new BizException(ExceptionEnum.LOGICAL_HTML_ERROR, tingYong); } if (StringUtil.notBlank(cuoWuXinXi.toString())) { throw new BizException(ExceptionEnum.LOGICAL_HTML_ERROR, String.valueOf(cuoWuXinXi)); } // 生成 医嘱号和申请号 for (YshYjReq item : param.getList()) { item.setActOrderNo(publicServer.getActOrderNo()); item.setReqNo(publicServer.getReqPageNo()); } insertData(param, huanZheXinXi, content); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } public void insertData(TianJiaJianChaJianYan param, XinZhenYiZhu patInfo, List content) { String userCode = TokenUtil.getInstance().getTokenUserId(); Date reqDate = new Date(); dao.chaRuShenQing(param.getList(), param.getInpatientNo(), param.getName(), param.getAge() + "岁", param.getAdmissTimes(), param.getBedNo(), userCode, patInfo.getDeptCode(), patInfo.getDeptCode(), param.getReqType(), "3".equals(param.getReqType()) ? "jc_zd_item" : "jy_zd_item", reqDate); dao.chaRuShenQingYiZhu(param.getList(), param.getInpatientNo(), param.getAdmissTimes(), userCode, patInfo.getDeptCode(), patInfo.getDeptCode(), PublicServer.getInfantFlag(param.getInpatientNo()), reqDate); try { publicServer.faSongXiaoXi(patInfo, content, "2".equals(param.getReqType()) ? "新增检查" : "新增检验", TokenUtil.getInstance().getTokenUserId()); } catch (Exception e) { log.error(e.getMessage()); } } public String baoCunCuoWuXinXi(int index, String xinXi) { return String.format("第【%d】个%s
", index, xinXi); } /*-------------------------------------------------------------- 下面是检验的逻辑 -----------------------------------------------------------------------------------------------------*/ public ResultVo> huoQuJianYan(@NotNull ChaXunJianChaHeJianYan param) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("inpatient_no", param.getPatNo()); qw.eq("admiss_times", param.getTimes()); qw.eq("req_type", "2"); if (StringUtil.notBlank(param.getStartTime())) { qw.ge("start_time", param.getStartTime()) .le("start_time", param.getEndTime()); } if (StringUtil.notBlank(param.getOrderName())) { qw.like("order_name", param.getOrderName()); } qw.orderByDesc("act_order_no"); List list = dao.huoQuJianYanV2(qw); return ResultVoUtil.success(list); } public ResultVo> huoQuJianYanMing(long total, long currentPage, Integer leiXing) { IPage page = new Page<>(currentPage, 20, total == 0); if (leiXing == 1) { page = dao.jianYanFenLei(page); return ResultVoUtil.success(page); } return ResultVoUtil.success(); } public ResultVo> biaoBenShuJu(String name) { return ResultVoUtil.success(dao.biaoBenLeiXing(StringUtil.isContainChinese(name))); } @DS("his") public ResultVo> viewInspectionItemDetails(String orderCode) { return ResultVoUtil.success(dao.viewInspectionItemDetails(orderCode)); } public ResultVo shanChuJianChaJianYan(Integer reqNo, String patNo, Integer times) { if (StringUtil.isBlank(patNo)) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "住院号不能为空。"); } YshYjReq yj = dao.huoQuJianYanJianCha(reqNo, patNo, times); if (yj == null) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有查询到该数据的具体信息,已经被删除了。"); } int feeCount = dao.selectedFeeCount(yj); if (feeCount > 0) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "费用已上账无法删除。"); } int feePatientFee = dao.selecePatientFee(yj); if (feePatientFee > 0) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医技已确费无法删除。"); } dao.shanChuJianYanJianCha(reqNo, patNo, times); dao.shanChuYiZhu(yj.getActOrderNo()); dao.cancellationOfConfirmedFees(yj, TokenUtil.getInstance().getTokenUserId()); return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE); } public ResultVo> queryCheckTextResults(String patNo, String reqNo) { String jcId = dao.getJcIdByPatNo(patNo); if (StringUtil.isBlank(jcId)) { return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有获取到患者的检查id"); } YjJcRecord yjJcRecord = dao.getJcRecord(reqNo, jcId); if (yjJcRecord == null) { return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到检查结果。"); } Map textJc = dao.selectTextJc(yjJcRecord.getReportNo()); if (textJc != null) { yjJcRecord.setDiagnosticOpinion(textJc.get("text_zd")); yjJcRecord.setCheckWhatYouSee(textJc.get("text_jc")); } Map map = new HashMap<>(Capacity.TWO); map.put("record", yjJcRecord); return ResultVoUtil.success(map); } /** * 检验检查 树状图 * * @return 返回树 */ @DS("his") public ResultVo>> getJyJcZdTree() { Map> map = new HashMap<>(Capacity.TWO); map.put("jy", getJyTree()); map.put("jc", getJcTree()); return ResultVoUtil.success(map); } private List getJyTree() { // 把 检验 项目大类做map的key Map jyMap = dao.queryInspectionClassification().stream().collect( Collectors.toMap(JyJcItem::getCode, a -> a, (k1, k2) -> k1) ); // 获取检验的详细项目 List jyDetailedItems = dao.getJyDetailedItems(); grouping(jyMap, jyDetailedItems); return new ArrayList<>(jyMap.values()); } private List getJcTree() { Map jcMap = dao.queryCheckClassification().stream().collect( Collectors.toMap(JyJcItem::getCode, a -> a, (k1, k2) -> k1) ); List jcDetailedItems = dao.selectJcDetailItems(); grouping(jcMap, jcDetailedItems); // 检查项目还需要根据部位细分 List jcTree = new ArrayList<>(); for (Map.Entry item : jcMap.entrySet()) { // 没有节点就不要添加 if (item.getValue().getChildren() != null) { JyJcItem temp = new JyJcItem(); temp.setName(item.getValue().getName()); temp.setChildren(new ArrayList<>()); // 通过部位进行详细的区分 Map> tempMap = item.getValue().getChildren().stream().collect( Collectors.groupingBy(JyJcItem::getBw) ); for (Map.Entry> entry : tempMap.entrySet()) { // 如果部位是空的就直接添加到父节点 if (StringUtil.isBlank(entry.getKey())) { JyJcItem temp1 = new JyJcItem(); temp.getChildren().addAll(entry.getValue()); } else { // 添加到指定的部位 JyJcItem temp1 = new JyJcItem(); temp1.setName(entry.getKey()); temp1.setChildren(entry.getValue()); temp.getChildren().add(temp1); } } jcTree.add(temp); } } return jcTree; } private void grouping(Map jyMap, List jyDetailedItems) { for (JyJcItem item : jyDetailedItems) { if (jyMap.containsKey(item.getClasses())) { JyJcItem tempMap = jyMap.get(item.getClasses()); if (tempMap.getChildren() == null) { tempMap.setChildren(new ArrayList<>()); } tempMap.getChildren().add(item); } } } @DS("his") public ResultVo> getJcItem(String code) { return ResultVoUtil.success(dao.getJcItem(StringUtil.isContainChinese(code))); } @DS("his") public ResultVo> getJyItem(String code) { return ResultVoUtil.success(dao.getJyItem(StringUtil.isContainChinese(code))); } public ResultVo getAncillaryInformation(String patNo, Integer times) { return ResultVoUtil.success(dao.getAncillaryInformation(patNo, times)); } /** * 检查厂商回调检查结果 * * @param param 数据 * @return 提示 */ public ResultVo checkTheCallbacks(CheckTheCallbacks param) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("patient_uid", param.getPatientUid()) .eq("patient_from", param.getPatientFrom()); boolean exist = checkTheCallbackDao.selectCount(queryWrapper) > 0; for (Integer reqNo : param.getReqNo()) { dao.setCheckPatientUid(param.getPatientUid(), reqNo); } try { if (exist) { checkTheCallbackDao.update(param, queryWrapper); } else { checkTheCallbackDao.insert(param); } } catch (Exception e) { return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "数据库执行错误:" + e.getMessage()); } if (param.getPatientFrom() == 1) { final CheckTheCallbacks temp = new CheckTheCallbacks() {{ setPatientName(param.getPatientName()); setReportTime(param.getReportTime()); setReqNo(param.getReqNo()); setReqName(param.getReqName()); setCheckDoctorName(param.getCheckDoctorName()); }}; JSONObject js = new JSONObject() {{ put("data", temp); put("isAdd", !exist); }}; SocketMsg.sendMessageByUserCode(param.getReqDoctor().trim(), Message.CHECK_THE_CALLBACKS, js); } return ResultVoUtil.success(exist ? "更新成功。" : "回传成功。"); } public ResultVo> getJcIdByPatNo(String patNo) { return ResultVoUtil.success(dao.getJcIdByPatNoList(patNo)); } public ResultVo> getExamineDetail(String jcId) { List res = dao.selectJieGuo(jcId); return ResultVoUtil.success(res); } public ResultVo getExamineIllustrate(String orderCode, Boolean isCheck) { return ResultVoUtil.success(dao.getExamineIllustrate(orderCode, isCheck ? "jc_zd_item" : "jy_zd_item")); } }