From e65f138de0afbf039cba8685910f020d84383fe7 Mon Sep 17 00:00:00 2001 From: tangw Date: Thu, 4 Sep 2025 18:35:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=B8=BB=E4=B8=9A=E5=8A=A1=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/CheckResultUtils.java | 30 +++++---- .../interfaceCommon/utils/CommonUtil.java | 31 +++++++-- .../czlis/interfaceCommon/utils/LisUtil.java | 66 +++++++------------ 3 files changed, 69 insertions(+), 58 deletions(-) diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java index ef8f633..18e13ef 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java @@ -5,6 +5,7 @@ import com.czlis.common.core.domain.entity.lis.*; import com.czlis.interfaceCommon.mapper.CheckResultMapper; import com.czlis.interfaceCommon.mapper.LabCheckrulesMapper; import com.czlis.interfaceCommon.mapper.XmInfoMapper; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -32,10 +33,12 @@ public class CheckResultUtils { Date jyrq = labPat.getJyrq(); String ybh = labPat.getYbh(); List xmInfoList0 = commonUtil.getXmInfoList(yq); + if(xmInfoList0.size()==0) return errmsg; List xmInfoList = xmInfoList0.stream().filter(xmInfo -> xmInfo.getXjx()!=null||xmInfo.getSjx()!=null||xmInfo.getJgjg()!=null||xmInfo.getJgz()!=null||xmInfo.getJgbz()!=null).collect(Collectors.toList()); if(xmInfoList.size()>0) { for (LabResult labResult : labResultList) { String xmdh = labResult.getXmdh(); + List collect = xmInfoList.stream().filter(xmInfo -> xmInfo.getXmdh().equals(xmdh)).collect(Collectors.toList()); if (collect.size() > 0) { XmInfo xmInfo = collect.get(0); @@ -73,17 +76,19 @@ public class CheckResultUtils { lde_low = csjgnum - jgz; } List chkval = checkResultMapper.getChkvaList(brdh, ldt_startda, jyrq, yq, xmdh); - List collect0 = chkval.stream().filter(LabResult0 -> LisUtil.isNumber(LabResult0.getCsjg())).collect(Collectors.toList()); - if (collect0.size() > 0) { - Double finalLde_up = lde_up; - Double finalLde_low = lde_low; - List collect1 = collect0.stream().filter(LabResult1 -> Double.parseDouble(LabResult1.getCsjg()) > finalLde_up && Double.parseDouble(LabResult1.getCsjg()) < finalLde_low).collect(Collectors.toList()); + if (chkval != null && chkval.size() > 0) { + List collect0 = chkval.stream().filter(LabResult0 -> LisUtil.isNumber(LabResult0.getCsjg())).collect(Collectors.toList()); if (collect0.size() > 0) { - errmsg = errmsg + LisUtil.LINE_SEPARATOR + xmdh + " 结果 (" + labResult.getCsjg() + ") 和 " + - DateFormatUtils.format(collect1.get(0).getJyrq(), "yyyy-MM-dd") + "日" + - collect1.get(0).getYbh() + " 号标本的结果 (" + collect1.get(0).getCsjg() + ") 相比超标"; - } + Double finalLde_up = lde_up; + Double finalLde_low = lde_low; + List collect1 = collect0.stream().filter(LabResult1 -> Double.parseDouble(LabResult1.getCsjg()) > finalLde_up && Double.parseDouble(LabResult1.getCsjg()) < finalLde_low).collect(Collectors.toList()); + if (collect1.size() > 0) { + errmsg = errmsg + LisUtil.LINE_SEPARATOR + xmdh + " 结果 (" + labResult.getCsjg() + ") 和 " + + DateFormatUtils.format(collect1.get(0).getJyrq(), "yyyy-MM-dd") + "日" + + collect1.get(0).getYbh() + " 号标本的结果 (" + collect1.get(0).getCsjg() + ") 相比超标"; + } + } } } } @@ -93,6 +98,7 @@ public class CheckResultUtils { } } List labChkList = checkResultMapper.getLabChkList(yq); + if(labChkList.size()==0) return errmsg; for (LabChk labChk : labChkList) { String jsgs = labChk.getHdnr(); boolean setjgsg = true; @@ -177,14 +183,14 @@ public class CheckResultUtils { String errmsg = checkcondition(labPat, labResultList, checkrules, ruledisplay); if (!"".equals(errmsg)) { if ("0".equals(checktype)) { - errmsg = "审核规则触发,未通过审核!,你是否要强行通过?" + ruledisplay + LisUtil.LINE_SEPARATOR + "审核规则触发,未通过审核!,你是否要强行通过?" + LisUtil.LINE_SEPARATOR + errmsg; + errmsg = errmsg+ LisUtil.LINE_SEPARATOR + "你是否要强行通过?" ; params.put("code", "5"); params.put("msg", errmsg); int ruleid0 = labCheckrules.getRuleid(); params.put("xh", i+1); return params; } else if ("3".equals(checktype)) { - errmsg = "审核规则触发,未通过审核!" + LisUtil.LINE_SEPARATOR + "设置的组合审核条件:" + errmsg + LisUtil.LINE_SEPARATOR + "审核规则触发,未通过审核!,不允许审核!"; + errmsg = errmsg + LisUtil.LINE_SEPARATOR + "不允许审核!"; params.put("code", "1"); params.put("msg", errmsg); params.put("xh", i+1); @@ -281,7 +287,7 @@ public class CheckResultUtils { errmsg.replace("[" + itemcode + "]", csjg); } - List labResultList0 = commonUtil.labResultMapper.getLabResultWithSql(labPat.getJyrq(), labPat.getYq(), labPat.getYbh(), errmsg); + List labResultList0 = commonUtil.getLabResultWithSql(labPat.getJyrq(), labPat.getYq(), labPat.getYbh(), errmsg); if (labResultList0.size() > 0) flag = true; } if (flag = true) errmsg = "审核条件: " + ruledisplay + " 规则触发,未通过审核!"; diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java index 41a404e..38497e7 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java @@ -55,6 +55,7 @@ public class CommonUtil { ComLogMapper comLogMapper; @Autowired LabRefusedMapper labRefusedMapper; + //====检验主表操作方法集合=== public LabPat getLabPatOne(Date jyrq, String yq, String ybh) { return labPatMapper.getLabPatOne(jyrq, yq, ybh); @@ -111,10 +112,12 @@ public class CommonUtil { public List getLabReqsteplog(String sqh) { return labReqsteplogMapper.getLabReqsteplog(sqh); } - public List getLabRefusedList(LabRefused labRefused){ + + public List getLabRefusedList(LabRefused labRefused) { return labRefusedMapper.getLabRefusedList(labRefused); } - public int insertLabRefused(LabRefused labRefused){ + + public int insertLabRefused(LabRefused labRefused) { return labRefusedMapper.insertLabRefused(labRefused); } @@ -148,6 +151,10 @@ public class CommonUtil { return labResultMapper.delNullLabResult(jyrq, yq, ybh); } + public List getLabResultWithSql(Date jyrq, String yq, String ybh, String errmsg) { + return labResultMapper.getLabResultWithSql(jyrq, yq, ybh, errmsg); + } + @Transactional(rollbackFor = Exception.class) public int updateLabResult(LabResult labResult) { return labResultMapper.updateLabResult(labResult); @@ -173,7 +180,8 @@ public class CommonUtil { public XmRef getXmRefValue(Map map) { return xmRefMapper.getXmRefValue(map); } - public XmRef getXmRefValue(String yq,String xmdh,String bbtype,String sex,Double age,String zd,String slzq) { + + public XmRef getXmRefValue(String yq, String xmdh, String bbtype, String sex, Double age, String zd, String slzq) { return xmRefMapper.getXmRefValue(yq, xmdh, bbtype, sex, age, zd, slzq); } @@ -184,7 +192,10 @@ public class CommonUtil { public List getXmAlarmdetail(String yq, String xmdh) { return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh); } - public Integer insertComLog(ComLog comLog) {return comLogMapper.insertComLog(comLog);} + + public Integer insertComLog(ComLog comLog) { + return comLogMapper.insertComLog(comLog); + } public String getYqmc(String yq) { @@ -251,6 +262,11 @@ public class CommonUtil { List collect = comDictList.stream().filter(comDict -> comDict.getZddh().equals(zddh)).collect(Collectors.toList()); if (collect.size() > 0) { return collect.get(0).getZdmc(); + }else{ + List collect0 = comDictList.stream().filter(comDict -> comDict.getZdmc().equals(zddh)).collect(Collectors.toList()); + if (collect0.size() > 0) { + return collect0.get(0).getZdmc(); + } } } //如果redis当中没有查到数据,则先在设置redis值, @@ -263,7 +279,12 @@ public class CommonUtil { if (comDictList != null) { List collect = comDictList.stream().filter(comDict -> comDict.getZdmc().equals(zdmc)).collect(Collectors.toList()); if (collect.size() > 0) { - return collect.get(0).getZdmc(); + return collect.get(0).getZddh(); + }else{ + List collect0 = comDictList.stream().filter(comDict -> comDict.getZddh().equals(zdmc)).collect(Collectors.toList()); + if (collect0.size() > 0) { + return collect0.get(0).getZddh(); + } } } //如果redis当中没有查到数据,则先在设置redis值, diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java index 654fbc2..3a8e2f9 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java @@ -1,6 +1,8 @@ package com.czlis.interfaceCommon.utils; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Calendar; import java.util.Date; import java.util.Map; @@ -149,59 +151,41 @@ public class LisUtil { return input; } } + /** - * 保留指定小数位数 - * 支持比较符号(<=、>=、<、>)和负号(-)同时存在的情况 - * @param input 输入字符串,如"123.1234"、">123.252"、"<=123.252"、"-45.67"、">=-89.01" - * @param decimalPlaces 要保留的小数位数,需为非负整数 - * @return 格式化后的字符串,无法处理时返回原值 + 保留指定小数位数(四舍五入) + 支持比较符号 (<=、>=、<、>) 和负号 (-) 同时存在的情况 + @param input 输入字符串,如 "123.1234"、">123.252"、"<=123.252"、"-45.67"、">=-89.01" + @param decimalPlaces 要保留的小数位数,需为非负整数 + @return 格式化后的字符串,无法处理时返回原值 */ - public static String round(String input, int decimalPlaces) { - // 处理空输入或无效小数位数 - if (input == null || input.trim().isEmpty() || decimalPlaces < 0) { + public static String round (String input, int decimalPlaces) { +// 处理空输入或无效小数位数 + if (input == null || input.trim ().isEmpty () || decimalPlaces < 0) { return input; } - - // 定义比较运算符前缀(按长度排序,确保正确识别) - String[] comparisonPrefixes = {"<=", ">=", "<", ">"}; +// 定义比较运算符前缀(按长度排序,确保正确识别) + String [] comparisonPrefixes = {"<=", ">=", "<", ">"}; String comparisonPrefix = ""; - String remainingPart = input; - - // 提取比较运算符前缀 + String remainingPart = input.trim (); // 去除首尾空格 +// 提取比较运算符前缀 for (String prefix : comparisonPrefixes) { - if (remainingPart.startsWith(prefix)) { + if (remainingPart.startsWith (prefix)) { comparisonPrefix = prefix; - remainingPart = remainingPart.substring(prefix.length()); + remainingPart = remainingPart.substring (prefix.length ()).trim (); // 去除前缀后的空格 break; } } - - // 尝试解析剩余部分为数字 +// 尝试解析剩余部分为数字(使用 BigDecimal 避免精度问题) try { - // 解析数字(包含可能的负号) - double number = Double.parseDouble(remainingPart); - - // 创建格式化模式(整数部分至少1位,小数部分固定位数) - StringBuilder formatPattern = new StringBuilder(); - formatPattern.append("0"); - if (decimalPlaces > 0) { - formatPattern.append("."); - // 循环添加指定数量的0 - for (int i = 0; i < decimalPlaces; i++) { - formatPattern.append("0"); - } - } - - // 格式化数字并拼接比较前缀 - String formattedNumber = String.format( - "%s%s", - comparisonPrefix, - String.format(formatPattern.toString(), number) - ); - - return formattedNumber; +// 解析为 BigDecimal(支持正负号和小数) + BigDecimal number = new BigDecimal (remainingPart); +// 设置四舍五入模式并保留指定小数位数 + BigDecimal rounded = number.setScale (decimalPlaces, RoundingMode.HALF_UP); +// 拼接比较前缀和格式化后的数字 + return comparisonPrefix + rounded.toPlainString (); //toPlainString 避免科学计数法 } catch (NumberFormatException e) { - // 数字部分无法解析时返回原值 +// 数字部分无法解析时返回原值 return input; } } From baf49b98437e1ca1184a246921e482b807e064ab Mon Sep 17 00:00:00 2001 From: tangw Date: Fri, 5 Sep 2025 19:39:38 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=B8=BB=E4=B8=9A=E5=8A=A1=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/domain/entity/lis/LabResult.java | 1 + .../common/core/domain/entity/lis/XmCalc.java | 19 + .../interfaceCommon/mapper/XmCalcMapper.java | 12 + .../interfaceCommon/utils/CommonUtil.java | 18 + .../main/resources/mapper/LabResultMapper.xml | 4 +- .../main/resources/mapper/XmCalcMapper.xml | 16 + .../service/impl/LisWorkOperServiceImpl.java | 347 +++++++++++------- 7 files changed, 280 insertions(+), 137 deletions(-) create mode 100644 lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java create mode 100644 lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java index de75658..8eaf25d 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java @@ -42,4 +42,5 @@ public class LabResult extends BaseEntity { private String xmmc; private String ygzd; private String ygzq; + private Integer xsws; } diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java new file mode 100644 index 0000000..3413426 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java @@ -0,0 +1,19 @@ +package com.czlis.common.core.domain.entity.lis; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class XmCalc { + + private String yq; + private String jsxm; + private String xmdh; + private String jsgs; + private String bz; + + +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java new file mode 100644 index 0000000..90a0de6 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java @@ -0,0 +1,12 @@ +package com.czlis.interfaceCommon.mapper; + +import com.czlis.common.core.domain.entity.lis.XmCalc; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface XmCalcMapper { + List getXmCalcList(String yq); + List getXmCalc(@Param("yq") String yq,@Param("jsxm") String jsxm); + List getXmCalcbyxmdh(@Param("yq")String yq,@Param("xmdh") String xmdh); +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java index 38497e7..5fd338e 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java @@ -55,6 +55,8 @@ public class CommonUtil { ComLogMapper comLogMapper; @Autowired LabRefusedMapper labRefusedMapper; + @Autowired + XmCalcMapper xmCalcMapper; //====检验主表操作方法集合=== public LabPat getLabPatOne(Date jyrq, String yq, String ybh) { @@ -169,6 +171,7 @@ public class CommonUtil { return xmInfoMapper.getXmInfo(yq, xmdh); } + public List getXmRefList(String yq) { return xmRefMapper.getXmRefList(yq); } @@ -193,6 +196,13 @@ public class CommonUtil { return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh); } + public List getXmAlarmdetailList(String yq) { + return xmAlarmdetailMapper.getXmAlarmdetailList(yq); + } + + public List getXmCalcList(String yq) { + return xmCalcMapper.getXmCalcList(yq); + } public Integer insertComLog(ComLog comLog) { return comLogMapper.insertComLog(comLog); } @@ -322,6 +332,14 @@ public class CommonUtil { if (comOpt1 != null) { ComOptionUtils.setOptCache(yq, xxdh, comOpt1); return comOpt1.getXxqz(); + }else{ + ComOpt comOpt2=new ComOpt(); + comOpt2.setBz(""); + comOpt2.setXxdh(xxdh); + comOpt2.setYq(yq); + comOpt2.setXxqz(""); + comOpt2.setXxlb(""); + ComOptionUtils.setOptCache(yq, xxdh, comOpt2); } return null; } diff --git a/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml index bd27bbb..b61adae 100644 --- a/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml +++ b/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml @@ -23,7 +23,7 @@ select lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt, operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd - ,textresult + ,textresult,xm_info.xsws from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh @@ -41,7 +41,7 @@ select lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt, operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd - ,textresult + ,textresult,xm_info.xsws from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh diff --git a/lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml new file mode 100644 index 0000000..cfe11ae --- /dev/null +++ b/lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java index 995b18b..ca9d826 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java @@ -23,6 +23,7 @@ import com.czlis.liswork.mapper.dict.LabInstrvsreqclassMapper; import com.czlis.liswork.pojo.DTO.ResultCalcDTO; import com.czlis.liswork.service.LisWorkOperService; +import com.czlis.liswork.utils.LisWorkUtil; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.apache.commons.lang3.time.DateFormatUtils; @@ -51,6 +52,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { LabReqdetailMapper labReqdetailMapper; @Autowired CheckResultUtils checkResultUtils; + @Autowired + private LisWorkUtil lisWorkUtil; @Override public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, Long userId) { @@ -215,33 +218,47 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { //入参通过GET推送时使用ServletUtils.getParameterToInt获取 //入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取 int problemId = ServletUtils.getParameterToInt("problemId", 0); - - //1,审核权限校验 - if (!commonUtil.getUserPower(yq, hdys, 20)) return new Result("-1", "当前核对者无权对本仪器报告审核!"); - //2:数据合法性校验 - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); labPat.setHdys(hdys); - Result result = beforeconfirm(labPat, 2, problemId); - if (!"0".equals(result.getCode())) return result; - //3:数据完整保存 - int wjz = saveallresult(labPat); - //同步主表危急值标识 - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { - labPat.setAlarmflag("1"); - commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { - labPat.setAlarmflag(""); - commonUtil.updateLabPat(labPat); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + if(problemId<3) { + //1,审核权限校验 + if (!commonUtil.getUserPower(yq, hdys, 20)) return new Result("-1", "当前核对者无权对本仪器报告审核!"); + //2:数据合法性校验 + Result result0 = beforeconfirm(labPat, labResultList, 2, problemId); + if (!"0".equals(result0.getCode())) return result0; } - //医学审核条件判断 - if (problemId < 3) problemId = 3; - result = chksample(labPat, problemId); - if ("99".equals(result.getCode())) { - labPat.setBz(result.getMsg()); - result.setCode("0"); + if(problemId<3) problemId = 3; + if(problemId<4) { + //3:数据完整保存 + labResultList = saveallresult(labPat, labResultList); + boolean wjz = getAlarmFlag(labResultList); + //同步主表危急值标识 + String alarmflag = labPat.getAlarmflag(); + if (("1".equals(alarmflag) && !wjz)) { + labPat.setAlarmflag("1"); + commonUtil.updateLabPat(labPat); + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { + labPat.setAlarmflag(""); + commonUtil.updateLabPat(labPat); + } + } + if(problemId<4) problemId = 4; + if(problemId<5) { + //医学审核条件判断 + Result result = chksample(labPat, labResultList, problemId); + if (!"0".equals(result.getCode())) return result; + } + if(problemId<5) problemId = 5; + if(problemId<99) { + //高级医学审核条件判断 + Result result = chksamplenew(labPat, labResultList, problemId); + if ("99".equals(result.getCode())) { + labPat.setBz(result.getMsg()); + result.setCode("0"); + } + if (!"0".equals(result.getCode())) return result; } - if (!"0".equals(result.getCode())) return result; if (problemId < 99) problemId = 99; //4:CA请求业务的处理 //Result result=addCA(jyrq, yq, ybh, hdys); @@ -263,11 +280,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { public Result beforeconfirm(Date jyrq, String yq, String ybh) { int problemId = ServletUtils.getParameterToInt("problemId", 0); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - return beforeconfirm(labPat, 2, problemId); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + return beforeconfirm(labPat, labResultList,2, problemId); } //内部使用 - private Result beforeconfirm(LabPat labPat, Integer checktype, Integer problemId) { + private Result beforeconfirm(LabPat labPat,List labResultList, Integer checktype, Integer problemId) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); @@ -310,7 +328,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); } String yqdl = commonUtil.getYqdl(yq); - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); if (labResultList == null || labResultList.size() == 0) return new Result("-1", "结果为空禁止审核!"); for (LabResult labResult : labResultList) { String csjg = labResult.getCsjg(); @@ -412,27 +429,34 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { /** * 医学审核条件判断 - * * @param labPat * @param problemId * @return */ - private Result chksample(LabPat labPat, Integer problemId) { - List labResultList = commonUtil.getLabResultList(labPat.getJyrq(), labPat.getYq(), labPat.getYbh()); + private Result chksample(LabPat labPat, List labResultList,Integer problemId) { //医学审核条件判断 - if (problemId < 4) { + if (problemId < 5) { String checkvalue = checkResultUtils.chksample(labPat, labResultList); if (checkvalue != null && !"".equals(checkvalue)) { - return new Result("5", checkvalue, 4); + return new Result("5", checkvalue, 5); } } - + return new Result("0", "保存成功!"); + } + /** + * 高级医学审核条件判断 + * @param labPat + * @param problemId + * @return + */ + private Result chksamplenew(LabPat labPat, List labResultList,Integer problemId) { + //医学审核条件判断 Boolean setbz = false; String bz = labPat.getBz(); //医学审核条件判断(新规则),预留99个递归ID - if (problemId < 4) problemId = 4; + if (problemId < 5) problemId = 5; if (problemId < 99) { - int xh = problemId - 4; + int xh = problemId - 5; Map chksamplenewvalue = checkResultUtils.chksamplenew(labPat, labResultList, xh); String chkCode = (String) chksamplenewvalue.get("code"); String chkMsg = (String) chksamplenewvalue.get("msg"); @@ -440,7 +464,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { labPat.setBz(bz); xh = (Integer) chksamplenewvalue.get("xh"); setbz = (Boolean) chksamplenewvalue.get("setbz"); - problemId = 4 + xh; + problemId = 5 + xh; if ("5".equals(chkCode)) { if (setbz) { commonUtil.updateLabPat(labPat); @@ -455,7 +479,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } return new Result("0", "保存成功!"); } - /** * 审核后步骤,在审核过程中,必须完成审核前校验通过,结果计算值填充,参考值结果标志危急值标志填写完成,最后使用此方法修改状态 * @@ -478,11 +501,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { String hdys = labPat.getHdys(); String yqdl = commonUtil.getYqdl(yq); String itemvs = commonUtil.getHISOPT("itemvs"); + Result ret=new Result("0", "保存成功!"); if ("1".equals(itemvs)) { if (!"细菌仪".equals(yqdl)) { String nullcount = lisWorkOperMapper.checkresultnosqxmdh(jyrq, yq, ybh); if (!"".equals(nullcount) && nullcount != null) - return new Result("-1", "报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:\r\n" + nullcount); + ret=new Result("3", "警告!"+LisUtil.LINE_SEPARATOR +" 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:"+LisUtil.LINE_SEPARATOR + nullcount); } } @@ -526,7 +550,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if (problemId < 100) { return new Result(result.getCode(), result.getMsg(), 100); } - return new Result("0", "保存成功!"); + return ret; } if (!result.getCode().equals("0")) return result; //最后完成 @@ -538,7 +562,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { shcs = shcs + 1; labPat.setShcs(shcs); commonUtil.updateLabPat(labPat); - return new Result("0", "保存成功!"); + return ret; } /** @@ -659,13 +683,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); String finish = labPat.getFinish(); if (!"细菌仪".equals(yqdl) && finish != null && finsh == 1) labPat.setFinish("1"); - int wjz = saveallresult(labPat); + labResultList = saveallresult(labPat,labResultList); + boolean wjz=getAlarmFlag(labResultList); //同步主表危急值标识 String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { + if (("1".equals(alarmflag) && !wjz )) { labPat.setAlarmflag("1"); commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { labPat.setAlarmflag(""); commonUtil.updateLabPat(labPat); } @@ -673,7 +698,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } //内部使用 - private int saveallresult(LabPat labPat) { + private List saveallresult(LabPat labPat,List labResultList) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); @@ -683,19 +708,13 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { commonUtil.delNullLabResult(jyrq, yq, ybh); } //计算项目更新 - calcsample(labPat); - //保存最新参考值结果标志 - int wjz = saverefs(labPat); - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { - labPat.setAlarmflag("1"); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { - labPat.setAlarmflag(""); - } + labResultList=calcsample(labPat,labResultList); //补写结果表申请单项目编号 String sqh = labPat.getSqh(); if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh); - return wjz; + //保存最新参考值结果标志 + labResultList = saverefs(labPat); + return labResultList; } /** @@ -737,71 +756,92 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { @Override public Result calcsample(Date jyrq, String yq, String ybh) { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - calcsample(labPat); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + calcsample(labPat,labResultList); return new Result("0", "保存成功!"); } - - //内部使用 - private void calcsample(LabPat labPat) { + private List calcsample(LabPat labPat,List labResultList) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); - List resultCalcDTO = lisWorkOperMapper.getResultCalc(jyrq, yq, ybh); - String xmdhold = ""; - for (ResultCalcDTO resultCalc : resultCalcDTO) { - String jsgs = resultCalc.getJsgs(); - String xmdh = resultCalc.getJsxm(); - if (!xmdhold.equals(xmdh)) { - xmdhold = xmdh; + String jsxmold = ""; + List xmCalcList =commonUtil.getXmCalcList(yq); + for (XmCalc xmCalc : xmCalcList) { + String jsxm = xmCalc.getJsxm(); + if (!jsxmold.equals(jsxm)) { + jsxmold = jsxm; + String jsgs = xmCalc.getJsgs(); + String xmdh= xmCalc.getXmdh(); boolean setjgsg = true; + boolean lb_jsx= false; Map variables = new HashMap<>(); String[] parameters = CalcUtils.getParameters(jsgs); for (int i = 0; i < parameters.length; i++) { String itemcode = parameters[i]; if ("SEX".equals(itemcode)) { String sex = labPat.getBrxb().trim(); - // if ("1".equals(sex)) sex = "男"; - // if ("2".equals(sex)) sex = "女"; + if ("男".equals(sex)) sex = "1"; + if ("女".equals(sex)) sex = "2"; variables.put("SEX", sex); + lb_jsx=true; } else if ("AGE".equals(itemcode)) { double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); variables.put("AGE", String.valueOf(age)); + lb_jsx=true; } else { - List collect = resultCalcDTO.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); + List collect = labResultList.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); if (collect.size() > 0) { variables.put(itemcode, collect.get(0).getCsjg()); } else { setjgsg = false; + break; } } } if (setjgsg) { String result = CalcUtils.getValueFromCalc(jsgs, variables); + if("0".equals(result) && lb_jsx)result=null; if (result != null && !result.trim().isEmpty()) { - if(LisUtil.isNumber(result)) { - Integer xsws =lisWorkOperMapper.getxsws(yq,xmdh); - if (xsws >= 0) result = LisUtil.round(result, xsws); - } //插入结果值 - LabResult labResult = commonUtil.getLabResult(jyrq, yq, ybh, xmdh); - if (labResult == null) { - labResult = new LabResult(); + Optional collect0 = labResultList.stream().filter(labR -> labR.getXmdh().equals(jsxm)).findFirst(); + if (collect0.isPresent()) { + LabResult labResult =collect0.get(); + if(LisUtil.isNumber(result)) { + Integer xsws =labResult.getXsws(); + if (xsws >= 0) result = LisUtil.round(result, xsws); + } + // log.info("result:{},getCsjg:{}",result,labResult.getCsjg()); + if(!result.equals(labResult.getCsjg())) { + labResult.setCsjg(result); + String finalResult = result; + collect0.ifPresent(labR -> labR.setCsjg(finalResult)); + commonUtil.updateLabResult(labResult); + } + }else{ + XmInfo xmInfo=commonUtil.getXmInfo(yq,xmdh); + if(LisUtil.isNumber(result)) { + Integer xsws =xmInfo.getXsws(); + if (xsws >= 0) result = LisUtil.round(result, xsws); + } + LabResult labResult = new LabResult(); labResult.setJyrq(jyrq); labResult.setYq(yq); labResult.setYbh(ybh); - labResult.setXmdh(xmdh); + labResult.setXmdh(jsxm); labResult.setCsjg(result); commonUtil.insertLabResult(labResult); - } else { - labResult.setCsjg(result); - commonUtil.updateLabResult(labResult); + labResult.setXsws(xmInfo.getXsws()); + labResult.setYgzd(xmInfo.getYgzd()); + labResult.setYgzq(xmInfo.getYgzq()); + labResult.setXmmc(xmInfo.getXmmc()); + labResultList.set(labResultList.size(), labResult); } } } } } + return labResultList; } - /** * 计算项目参考值结果异常标志 * @@ -812,13 +852,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { @Override public Result saverefs(Date jyrq, String yq, String ybh) { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - int wjz = saverefs(labPat); + List labResultList = saverefs(labPat); + boolean wjz=getAlarmFlag(labResultList); //同步主表危急值标识 String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { + if (("1".equals(alarmflag) && !wjz )) { labPat.setAlarmflag("1"); commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { labPat.setAlarmflag(""); commonUtil.updateLabPat(labPat); } @@ -832,12 +873,26 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param labPat * @return 返回值0正常, 1有危急值明细存在 */ - private int saverefs(LabPat labPat) { + private List saverefs(LabPat labPat) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); String yqdl = commonUtil.getYqdl(yq); - boolean lb_setbj = true, lb_wjz = false; + boolean lb_setbj = true, lb_wjz = false,nowjz=false; + //危急值标识去除原则 nowjz = true 不能算做危急值 + String brxm = labPat.getBrxm(); + if (brxm != null) { + if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { + nowjz = true; + } + } + String brly = labPat.getBrly(); + if (brly != null) brly = commonUtil.getComDictNameById("PT", brly); + if (brly != null) if (brly.contains("质控")) nowjz = true; + String ksdh = labPat.getKsdh(); + if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh); + if (ksdh != null) if (ksdh.contains("检验科")) nowjz = true; + List labResultList = null; if (!"细菌仪".equals(yqdl)) { Map map = new HashMap<>(); map.put("jyrq", jyrq); @@ -851,7 +906,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { String retMsg = String.valueOf(map.get("retmsg")); log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg); if (retCode == null || "".equals(retCode) || "-1".equals(retCode)) lb_setbj = false; - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + List xmInfoList= commonUtil.getXmInfoList(yq); + List xmAlarmdetailList=null; + if(!nowjz){xmAlarmdetailList =commonUtil.getXmAlarmdetailList(yq);} for (LabResult labResult : labResultList) { String csjg = labResult.getCsjg(); boolean lb_nummode = LisUtil.isTureNumber(csjg); @@ -859,43 +917,50 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { String ygzd = labResult.getYgzd(); //当结果为数值并且与周期诊断无关,计算存储过程保存成功后,只进行危急值判断 if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) { - int wjz = alarmcondition(labPat, labResult); - if (wjz != -1) {//危急值标识特殊判断存在时优先使用特殊结果 - String resultalarmflag = labResult.getAlarmFlag(); - if (("".equals(resultalarmflag) && lb_wjz)) { - String jgbz = labResult.getJgbz(); - if (jgbz == null || !"L".equals(jgbz)) jgbz = "H"; - labResult.setAlarmFlag(jgbz); - commonUtil.updateLabResult(labResult); - } else if (!"".equals(resultalarmflag) && !lb_wjz) { + if(nowjz){ + String resultalarmflag1 = labResult.getAlarmFlag(); + if (!"".equals(resultalarmflag1) && resultalarmflag1 != null){ labResult.setAlarmFlag(""); commonUtil.updateLabResult(labResult); } + }else { + String xmdh=labResult.getXmdh(); + List getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail-> detail.getXmdh().equals(xmdh)).collect(Collectors.toList()); + int wjz = alarmcondition(labPat, labResult, getXmAlarmdetail); + if (wjz != -1) {//危急值标识特殊判断存在时优先使用特殊结果 + String resultalarmflag = labResult.getAlarmFlag(); + if (("".equals(resultalarmflag) && lb_wjz)) { + String jgbz = labResult.getJgbz(); + if (jgbz == null || !"L".equals(jgbz)) jgbz = "H"; + labResult.setAlarmFlag(jgbz); + commonUtil.updateLabResult(labResult); + } else if (!"".equals(resultalarmflag) && !lb_wjz) { + labResult.setAlarmFlag(""); + commonUtil.updateLabResult(labResult); + } + } + String resultalarmflag1 = labResult.getAlarmFlag(); + if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true; } - String resultalarmflag1 = labResult.getAlarmFlag(); - if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true; } else { - int wjz = setrefs(labPat, labResult); - if (wjz == 1) lb_wjz = true; + String xmdh=labResult.getXmdh(); + List xmInfo0=xmInfoList.stream().filter(xm->xm.getXmdh().equals(xmdh)).collect(Collectors.toList()); + if(xmInfo0.size()>0){ + XmInfo xmInfo=xmInfo0.get(0); + List getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail-> detail.getXmdh().equals(xmdh)).collect(Collectors.toList()); + LabResult labResult0 = setxmdhrefs(labPat, labResult,xmInfo,getXmAlarmdetail,nowjz); + labResult.setCsjg(csjg); + labResult.setDw(labResult0.getDw()); + labResult.setRefs(labResult0.getRefs()); + labResult.setResultFlag(labResult0.getResultFlag()); + labResult.setJgbz(labResult0.getJgbz()); + labResult.setAlarmFlag(labResult0.getAlarmFlag()); + } } } - //危急值标识去除原则 - String brxm = labPat.getBrxm(); - if (brxm != null) - if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { - lb_wjz = false; - } - ; - String brly = labPat.getBrly(); - if (brly != null) brly = commonUtil.getComDictNameById("PT", brly); - if (brly != null) if (brly.contains("质控")) lb_wjz = false; - String ksdh = labPat.getKsdh(); - if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh); - if (ksdh != null) if (ksdh.contains("检验科")) lb_wjz = false; - //同步主表危急值标识 - if (lb_wjz) return 1; + } - return 0; + return labResultList; } /** @@ -905,18 +970,16 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param labResult * @return */ - private int setrefs(LabPat labPat, LabResult labResult) { + private LabResult setxmdhrefs(LabPat labPat, LabResult labResult,XmInfo xmInfo,List getXmAlarmdetail,boolean nowjz) { String yq = labPat.getYq(); String resultflag = "M", wjzflag = ""; - int wjz = 0; String xmdh = labResult.getXmdh(); String csjg = labResult.getCsjg(); - if (csjg == null || csjg.trim().isEmpty()) return 0; + if (csjg == null || csjg.trim().isEmpty()) return labResult; String csjgnew = LisUtil.getOverNumber(csjg.trim()); boolean lb_nummode = LisUtil.isNumber(csjgnew); //当结果为数值时计算上下限 if (lb_nummode) { - XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); String dw = xmInfo.getDw(); String refs = xmInfo.getDyckz(); Double ckxx = xmInfo.getCkxx(); @@ -980,14 +1043,15 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { Double csjgnum = Double.valueOf(csjgnew); if (ckxx != null) if (csjgnum < ckxx) resultflag = "L"; if (cksx != null) if (csjgnum > cksx) resultflag = "H"; - int wjzf = alarmcondition(labPat, labResult); - if (wjzf == -1) { - if (llimit != null) if (csjgnum < llimit) wjzflag = "L"; - if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H"; - } else if (wjzf == 1) { - wjzflag = resultflag; + if(!nowjz) { + int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail); + if (wjzf == -1) { + if (llimit != null) if (csjgnum < llimit) wjzflag = "L"; + if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H"; + } else if (wjzf == 1) { + wjzflag = resultflag; + } } - if (!"".equals(wjzflag)) wjz = 1; } else { //文字型结果判断 String jgbzold = labResult.getJgbz(); @@ -995,10 +1059,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if ("P".equals(jgbzold) && (csjg.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (lmtflag == null || lmtflag.trim().isEmpty())) lmtflag = "P"; resultflag = lmtflag; - if ("J".equals(lmtflag)) wjzflag = "H"; - int wjzf = alarmcondition(labPat, labResult); - if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 - if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 + if(!nowjz) { + if ("J".equals(lmtflag)) wjzflag = "H"; + int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail); + if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 + if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 + } } //小数保留位数计算 Integer xsws = xmInfo.getXsws(); @@ -1012,8 +1078,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { commonUtil.updateLabResult(labResult); } - if (!"".equals(wjzflag)) wjz = 1; - return wjz; + return labResult; } /** @@ -1023,14 +1088,13 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param labResult * @return */ - private int alarmcondition(LabPat labPat, LabResult labResult) { + private int alarmcondition(LabPat labPat, LabResult labResult,List getXmAlarmdetail) { + if (getXmAlarmdetail == null) return -1; boolean lb_fcb = false, lb_hasval = false; String csjg = labResult.getCsjg(); if (csjg == null || csjg.trim().isEmpty()) return -1; String yq = labPat.getYq(); String xmdh = labResult.getXmdh(); - List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); - if (getXmAlarmdetail == null) return -1; String brxm = ""; String brdh = ""; String ksdh = labPat.getKsdh(); @@ -1200,4 +1264,17 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { return 0; } + /** + * 查询明细是否有危急值标识 + * @param labResultList + * @return + */ + private boolean getAlarmFlag(List labResultList){ + boolean wjz=false; + List labResultList0=labResultList.stream().filter(xm->!"".equals(xm.getAlarmFlag())&&xm.getAlarmFlag()!=null).collect(Collectors.toList()); + if(labResultList0.size()>0){ + wjz=true; + } + return wjz; + } } From dcdc2f00234f06ead8fa6c74a5e32bb21dfced76 Mon Sep 17 00:00:00 2001 From: tangw Date: Fri, 5 Sep 2025 20:21:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=B8=BB=E4=B8=9A=E5=8A=A1=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czlis/interfaceCommon/utils/CheckResultUtils.java | 4 ++-- .../czlis/liswork/service/impl/LisWorkOperServiceImpl.java | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java index 18e13ef..9ef12a3 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java @@ -283,7 +283,7 @@ public class CheckResultUtils { break; default: String csjg = Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); - if (csjg == null) csjg = ""; + if (csjg == null) return ""; errmsg.replace("[" + itemcode + "]", csjg); } @@ -333,7 +333,7 @@ public class CheckResultUtils { break; default: String csjg = Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); - if (csjg == null) csjg = ""; + if (csjg == null)return ""; variables.put(itemcode, csjg); } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java index ca9d826..140ddc8 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java @@ -810,7 +810,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { Integer xsws =labResult.getXsws(); if (xsws >= 0) result = LisUtil.round(result, xsws); } - // log.info("result:{},getCsjg:{}",result,labResult.getCsjg()); + // log.info("result:{},getCsjg:{}",result,labResult.getCsjg()); if(!result.equals(labResult.getCsjg())) { labResult.setCsjg(result); String finalResult = result; @@ -835,6 +835,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { labResult.setYgzq(xmInfo.getYgzq()); labResult.setXmmc(xmInfo.getXmmc()); labResultList.set(labResultList.size(), labResult); + } } } @@ -907,6 +908,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg); if (retCode == null || "".equals(retCode) || "-1".equals(retCode)) lb_setbj = false; labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + log.info("labResultList.size:{}",labResultList.size()); List xmInfoList= commonUtil.getXmInfoList(yq); List xmAlarmdetailList=null; if(!nowjz){xmAlarmdetailList =commonUtil.getXmAlarmdetailList(yq);}