From f85f756f128ea9a3aac79691b54e5f9611b61bec Mon Sep 17 00:00:00 2001 From: tangw Date: Wed, 27 Aug 2025 19:27:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E4=B8=9A=E5=8A=A1=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czlis/common/utils/DateUtils.java | 35 ++++++++++++ .../liswork/service/LisWorkOperService.java | 51 ++++++++++++++++- .../service/impl/LisWorkOperServiceImpl.java | 57 +++++++++++++++---- 3 files changed, 132 insertions(+), 11 deletions(-) diff --git a/lis-common/src/main/java/com/czlis/common/utils/DateUtils.java b/lis-common/src/main/java/com/czlis/common/utils/DateUtils.java index eb541e3..2442180 100644 --- a/lis-common/src/main/java/com/czlis/common/utils/DateUtils.java +++ b/lis-common/src/main/java/com/czlis/common/utils/DateUtils.java @@ -165,4 +165,39 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } + /** + * 根据 Date 对象获取周几(周1-周7) + * @param date 目标日期 + * @return 1-7 + */ + public static int getWeekDay(Date date) { + // Date 转 LocalDate(默认系统时区) + LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + // 获取周索引:Monday=1,Sunday=7(更符合日常认知) + return localDate.getDayOfWeek().getValue(); + } + /** + * 根据 Date 对象获取周几(中文) + * @param date 目标日期 + * @return 中文周几(如 "周一"、"周日") + */ + public static String getWeekDayName(Date date) { + // Date 转 LocalDate(默认系统时区) + LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + // 获取周索引:Monday=1,Sunday=7(更符合日常认知) + int weekIndex= localDate.getDayOfWeek().getValue(); + String[] weekDays = {"", "周一", "周二", "周三", "周四", "周五", "周六", "周日"}; + return weekDays[weekIndex]; + } + + /** + * 获取当前时间(时分秒) + * @param date + * @param format HH:mm/HH:mm:ss/hh:mm:ss a + * @return + */ + public static String time(Date date,String format) { + SimpleDateFormat hourMinFormatter = new SimpleDateFormat("HH:mm"); + return hourMinFormatter.format(date); + } } diff --git a/liswork/src/main/java/com/czlis/liswork/service/LisWorkOperService.java b/liswork/src/main/java/com/czlis/liswork/service/LisWorkOperService.java index 511f272..aa6bd57 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/LisWorkOperService.java +++ b/liswork/src/main/java/com/czlis/liswork/service/LisWorkOperService.java @@ -8,6 +8,55 @@ import java.util.Date; public interface LisWorkOperService { Result newPatInfo(Date jyrq,String ybh, String sqh, String yq, Long userId); Result changePat(LabPat labPat); - + /** + * 保存所有结果的修正值,涉及:空结果清除,计算项目添加,添加单位,添加申请项目编码,参考值重新计算更新,结果标志重新计算更新,危急值标志计算更新 + * + * @param jyrq + * @param yq + * @param ybh + * @return + */ + Result saveallresult(Date jyrq, String yq, String ybh); + /** + * 结果表补充申请单项目代码 + * + * @param jyrq + * @param yq + * @param ybh + */ + void setItemSqxmdh(Date jyrq, String yq, String ybh); + /** + * 审核报告 + * @param jyrq + * @param yq + * @param ybh + * @param hdys + * @return + */ Result confirm(Date jyrq, String yq, String ybh, String hdys); + /** + * 计算项目参考值结果异常标志 + * + * @param jyrq + * @param yq + * @param ybh + */ + Result saverefs(Date jyrq, String yq, String ybh); + /** + * 计算项目增加及重新计算 + * + * @param jyrq + * @param yq + * @param ybh + */ + Result calcsample(Date jyrq, String yq, String ybh); + /** + * 获取常用取值结果标志 + * + * @param yq + * @param xmdh + * @param csjg + * @return + */ + String getitemlmtflag(String yq, String xmdh, String 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 80498c8..0956585 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 @@ -2,6 +2,7 @@ package com.czlis.liswork.service.impl; import com.czlis.common.core.domain.entity.lis.*; +import com.czlis.common.utils.DateUtils; import com.czlis.common.utils.SecurityUtils; import com.czlis.common.utils.ServletUtils; import com.czlis.common.utils.StringUtils; @@ -23,6 +24,7 @@ import com.czlis.liswork.pojo.DTO.ResultCalcDTO; import com.czlis.liswork.service.LisWorkOperService; import lombok.extern.slf4j.Slf4j; +import lombok.val; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -264,6 +266,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { String f_check1 = commonUtil.getComOptValue(yq, "f_check1"); if ("1".equals(f_check1)) return new Result("-1", "审核前必须先初审!"); } + if(checkWorkTime(labPat)==1)return new Result("-1", "核对医生不允许与检验医生相同!"); String limit_brly = commonUtil.getHISOPT("limit_brly"); String brly = labPat.getBrly(); if ("1".equals(limit_brly) && (brly == null || "".equals(brly))) @@ -548,6 +551,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param jyrq * @return */ + @Override public Result saveallresult(Date jyrq, String yq, String ybh) { int finsh=1; List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); @@ -581,7 +585,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } return new Result("0", "保存成功!"); } - //内部使用 private int saveallresult(LabPat labPat) { Date jyrq = labPat.getJyrq(); @@ -607,7 +610,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh); return wjz; } - /** * 结果表补充申请单项目代码 * @@ -615,6 +617,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param yq * @param ybh */ + @Override public void setItemSqxmdh(Date jyrq, String yq, String ybh) { String sqh = commonUtil.getSqhByKey(jyrq, yq, ybh); if (sqh == null || "".equals(sqh)) { @@ -622,7 +625,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { setItemSqxmdh(jyrq, yq, ybh, sqh); } } - //内部使用 private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) { if (sqh != null && !"".equals(sqh)) { @@ -635,7 +637,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } } } - /** * 计算项目增加及重新计算 * @@ -643,12 +644,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param yq * @param ybh */ + @Override public Result calcsample(Date jyrq, String yq, String ybh) { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); calcsample(labPat); return new Result("0", "保存成功!"); } - //内部使用 private void calcsample(LabPat labPat) { Date jyrq = labPat.getJyrq(); @@ -705,7 +706,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } } } - /** * 计算项目参考值结果异常标志 * @@ -713,6 +713,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param yq * @param ybh */ + @Override public Result saverefs(Date jyrq, String yq, String ybh) { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); int wjz = saverefs(labPat); @@ -728,7 +729,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { return new Result("0", "保存成功!"); } //内部使用 - /** * 计算项目参考值结果异常标志(内部使用) * @@ -799,7 +799,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } return 0; } - /** * 明细结果计算参考值异常标志危急值标志并更新 * @@ -915,7 +914,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if (!"".equals(wjzflag)) wjz = 1; return wjz; } - /** * 特定条件危急值判断 * @@ -989,7 +987,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if (lb_hasval) return 0; else return -1; } - /** * 获取常用取值结果标志 * @@ -998,6 +995,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param csjg * @return */ + @Override public String getitemlmtflag(String yq, String xmdh, String csjg) { String jgbz = ""; if (csjg == null || csjg.isEmpty()) { @@ -1017,4 +1015,43 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } return jgbz; } + + /** + * 工作时间校验检验者审核者不允许相同 上班时间上午8点-12点下午2点到5点,周末不算 + * @param labPat + * @return 返回0通过,返回1不允许相同 + */ + private int checkWorkTime(LabPat labPat){ + String yhdh = labPat.getYhdh(); + String hdys = labPat.getHdys(); + if(yhdh==null || yhdh.isEmpty()) return 0; + if(hdys==null || hdys.isEmpty()) return 0; + if(!yhdh.equals(hdys)) return 0; + String sb1=commonUtil.getHISOPT("SHTIME1"); + String sb2=commonUtil.getHISOPT("SHTIME2"); + String sb3=commonUtil.getHISOPT("SHTIME3"); + String sb4=commonUtil.getHISOPT("SHTIME4"); + if((sb1==null || sb1.isEmpty()) && (sb2==null || sb2.isEmpty()) && (sb3==null || sb3.isEmpty()) && (sb4==null || sb4.isEmpty())) return 0; + Date currenttime=DateUtils.getNowDate(); + int weekDay = DateUtils.getWeekDay(currenttime); + //周末不算 + if(weekDay==6 && weekDay==7) return 0; + int lt_now= Integer.parseInt(DateUtils.time(currenttime,"HH:mm").replace(":", "")); + if((sb1==null || sb1.isEmpty()) && (sb2==null || sb2.isEmpty())) { + sb1 = sb1.replace(":", ""); + sb2 = sb2.replace(":", ""); + + if (LisUtil.isTureNumber(sb1) && LisUtil.isTureNumber(sb2)) { + int nsb1 = Integer.parseInt(sb1); + int nsb2 = Integer.parseInt(sb2); + if (lt_now > nsb1 && lt_now < nsb2) return 1; + } + if (LisUtil.isTureNumber(sb3) && LisUtil.isTureNumber(sb4)) { + int nsb3 = Integer.parseInt(sb3); + int nsb4 = Integer.parseInt(sb4); + if (lt_now > nsb3 && lt_now < nsb4) return 1; + } + } + return 0; + } }