From b7d5462ce9133b778b8bcff5f102a2ffc56c172b Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Mon, 19 Jan 2026 16:47:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8A=A4=E7=90=86=E7=B1=BB?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4=E7=9F=A9=E9=98=B5=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E6=8E=A5=E5=8F=A3=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../directiveplan/api/CareDirectiveApi.java | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java b/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java index c5b5b0f4..1e68f48a 100644 --- a/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java +++ b/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java @@ -287,65 +287,49 @@ public class CareDirectiveApi { item.setExecuteStatus("hisUnExe"); } else { // 已开始 - Date ygkssj = item.getStartTime(); // 应该开始时间 + Date ygjssj = item.getEndTime(); // 应该结束时间 Date sjkssj = item.getBeginTime(); // 实际开始时间 Date sjjssj = item.getFinishTime(); // 实际结束时间 - String rcsc = item.getTimeoutDuration(); // 容错时长(分钟) + String cssc = item.getTimeoutDuration(); // 超时时长(分钟) String fwsc = item.getServiceDuration(); // 服务时长(分钟) - // 判断是否超时(实际开始时间 > 应该开始时间 + 容错时长) - if (ygkssj != null && sjkssj != null && rcsc != null) { + // 判断是否超时 + boolean isTimeout = false; + + // 条件1:如果实际开始时间 > (应该结束时间 + 超时时长) + if (sjkssj != null && ygjssj != null && cssc != null) { try { - int rcscInt = Integer.parseInt(rcsc); + int csscInt = Integer.parseInt(cssc); Calendar calendar = Calendar.getInstance(); - calendar.setTime(ygkssj); - calendar.add(Calendar.MINUTE, rcscInt); - Date deadlineTime = calendar.getTime(); // 最晚开始时间 + calendar.setTime(ygjssj); + calendar.add(Calendar.MINUTE, csscInt); + Date latestAllowedTime = calendar.getTime(); // 最晚允许开始时间 - if (sjkssj.after(deadlineTime)) { - // 实际开始时间超过最晚开始时间 - item.setExecuteStatus("hisTimeOut"); - return; // 进行下一条处理 + if (sjkssj.after(latestAllowedTime)) { + isTimeout = true; } } catch (NumberFormatException e) { - // 容错时长格式错误 e.printStackTrace(); - item.setExecuteStatus("hisOk"); } } - // 计算实际服务时长 - long sjfwsc = 0; - if (sjkssj != null) { - Date sjjssjDate = sjjssj; - if (sjjssjDate == null) { - // 如果实际结束时间为空,使用当前时间 - sjjssjDate = new Date(); - } - - // 计算分钟数差值 - long diffInMillis = sjjssjDate.getTime() - sjkssj.getTime(); - sjfwsc = diffInMillis / (1000 * 60); - } - - // 判断实际服务时长是否超过服务时长 - if (fwsc != null) { + // 条件2:如果实际结束时间-实际开始时间 > 服务时长 + if (!isTimeout && sjkssj != null && sjjssj != null && fwsc != null) { try { + long actualServiceMinutes = (sjjssj.getTime() - sjkssj.getTime()) / (1000 * 60); int fwscInt = Integer.parseInt(fwsc); - if (sjfwsc > fwscInt) { - // 实际服务时长超过预定服务时长 - item.setExecuteStatus("hisTimeOut"); - } else { - // 其他情况,视为成功 - item.setExecuteStatus("hisOk"); + + if (actualServiceMinutes > fwscInt) { + isTimeout = true; } } catch (NumberFormatException e) { e.printStackTrace(); - // 服务时长格式错误,视为成功 - item.setExecuteStatus("hisOk"); } + } + + if (isTimeout) { + item.setExecuteStatus("hisTimeOut"); } else { - // 没有服务时长配置,视为成功 item.setExecuteStatus("hisOk"); } }