Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java =================================================================== diff -u -r16347 -r16353 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java (.../Sterilizer.java) (revision 16347) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java (.../Sterilizer.java) (revision 16353) @@ -107,7 +107,7 @@ public static Map ColumnNameAndPoPropertyNameMap = new LinkedHashMap(); /** - * 灭菌与生物监测间隔时间(单位:分钟)默认190分钟 + * 灭菌与生物监测间隔时间(单位:分钟) */ private Integer lagTime; Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManager.java =================================================================== diff -u -r16274 -r16353 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManager.java (.../InvoiceManager.java) (revision 16274) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManager.java (.../InvoiceManager.java) (revision 16353) @@ -176,7 +176,11 @@ public JSONObject batchPrintInvoice(String ids,String type); /** - * 验证是否器械包常规发货 + * 验证器械包是否常规发货,以及生物监测的情况,返回值JSONObject对象的三个元素的具体如下:
+ * noBiologicalMonitoringForeignTousses:没做生物监测的器械包集合,用分号分隔
+ * unconventionalForeignTousses生物监测没结束就要发货的器械包集合,用分号分隔
+ * isUnqualified:生物监测结果为"不合格"的器械包集合,用分号分隔 + * * @param tousseBarcodes:器械包条码集合的字符串,用分号分隔 * @return */ Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r16348 -r16353 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 16348) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 16353) @@ -180,7 +180,7 @@ Long sterilizationRecordId = sterilizationRecord.getId(); Date biologicalMonitoringEndDate = sterilizationRecord.getBiologicalMonitoringEndDate(); String biologyResult = sterilizationRecord.getBiologyResult(); - if (sterilizationRecordId != null && !SterilizationRecord.MONITOR_RESULT_NO.equals(biologyResult) && biologicalMonitoringEndDate != null) { + if (sterilizationRecordId != null) { sterilizerManager.updateIsRoutineAttribute(sterilizationRecordId, biologicalMonitoringEndDate, biologyResult); } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r16274 -r16353 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 16274) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 16353) @@ -7439,13 +7439,13 @@ } /** - * 根据器械包条码集合,获取器械包信息具体如下:
+ * 根据器械包条码集合,获取 "包含植入物的器械包的信息",信息具体如下:
* barcode:器械包条码
- * biologicalMonitoringStartDate:生物监测的开始时间
* biologicalMonitoringEndDate:生物监测的结束时间
* endDate:灭菌的结束时间
* biologyResult:生物监测的结果
- * biologicalMonitoringTime:对应灭菌炉配置的生物监测默认时间
+ * biologicalMonitoringTime:对应灭菌炉配置的生物监测持续时间
+ * lagTime:对应灭菌炉配置的灭菌与生物监测间隔时间 * * @param tousseBarcodes 器械包条码集合,用分号分隔 * @return @@ -7468,10 +7468,10 @@ "SELECT t.tousseName tousseName," + "bd.barcode barcode," + "sr.biologicalMonitoringEndDate biologicalMonitoringEndDate," - + "sr.biologicalMonitoringStartDate biologicalMonitoringStartDate," + "sr.endDate endDate," + "sr.biologyResult biologyResult," - + "s.biologicalMonitoringTime biologicalMonitoringTime " + + "s.biologicalMonitoringTime biologicalMonitoringTime," + + "s.lagTime lagTime " + "FROM TousseInstance t," + "barcodeDevice bd," @@ -7493,20 +7493,20 @@ while(result.next()){ String tousseName = result.getString("tousseName"); String barcode = result.getString("barcode"); - String biologicalMonitoringStartDate = result.getString("biologicalMonitoringStartDate"); String biologicalMonitoringEndDate = result.getString("biologicalMonitoringEndDate"); String endDate = result.getString("endDate"); String biologyResult = result.getString("biologyResult"); String biologicalMonitoringTime = result.getString("biologicalMonitoringTime"); + String lagTime = result.getString("lagTime"); Map map = new HashMap(); map.put("tousseName", tousseName); map.put("barcode", barcode); - map.put("biologicalMonitoringStartDate", biologicalMonitoringStartDate); map.put("biologicalMonitoringEndDate", biologicalMonitoringEndDate); map.put("endDate", endDate); map.put("biologyResult", biologyResult); map.put("biologicalMonitoringTime", biologicalMonitoringTime); + map.put("lagTime", lagTime); list.add(map); } } catch (SQLException e) { @@ -7521,10 +7521,10 @@ /** - * 验证是否器械包常规发货,返回值JSONObject对象的三个元素的具体如下:
+ * 验证器械包是否常规发货,以及生物监测的情况,返回值JSONObject对象的三个元素的具体如下:
* noBiologicalMonitoringForeignTousses:没做生物监测的器械包集合,用分号分隔
- * unconventionalForeignTousses:做了生物监测,但是没结束就要发货的器械包集合,用分号分隔
- * isUnqualified:做了生物监测,但是结果为"不合格"的器械包集合,用分号分隔 + * unconventionalForeignTousses生物监测没结束就要发货的器械包集合,用分号分隔
+ * isUnqualified:生物监测结果为"不合格"的器械包集合,用分号分隔 * * @param tousseBarcodes:器械包条码集合的字符串,用分号分隔 * @return @@ -7541,30 +7541,40 @@ if (list.size() > 0) { for (Map map : list) { String endDate = map.get("endDate"); //灭菌的结束时间 - String biologicalMonitoringStartDate =map.get("biologicalMonitoringStartDate"); //生物监测的开始时间 - String biologicalMonitoringEndDate = map.get("biologicalMonitoringEndDate"); //生物监测的结束时间 String biologyResult = map.get("biologyResult"); //生物监测的结果 + String biologicalMonitoringEndDate = map.get("biologicalMonitoringEndDate"); //生物监测的结束时间 String biologicalMonitoringTimeString = map.get("biologicalMonitoringTime"); //对应灭菌炉配置的生物监测默认时间 + String lagTimeString = map.get("lagTime"); //对应灭菌炉配置的灭菌与生物监测间隔时间 - biologicalMonitoringStartDate = StringTools.isBlank(biologicalMonitoringStartDate)?endDate:biologicalMonitoringStartDate; //生物监测的开始时间默认就是灭菌的结束时间 - Integer biologicalMonitoringTime = StringTools.isBlank(biologicalMonitoringTimeString)?190:new Integer(biologicalMonitoringTimeString); - long nowTime = System.currentTimeMillis(); - if (SterilizationRecord.MONITOR_RESULT_NO.equals(biologyResult) || StringTools.isBlank(biologicalMonitoringEndDate)) { //没有进行生物监测或者忘记录了,则和默认的配置的是生物监测时间比较 + if (SterilizationRecord.MONITOR_RESULT_NO.equals(biologyResult)) { noBiologicalMonitoringForeignTousses += map.get("barcode") + ";"; - - long biologicalMonitoringStartDateTime = 0; - try { - biologicalMonitoringStartDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(biologicalMonitoringStartDate).getTime(); - } catch (ParseException e) { - logger.debug("生物监测开始时间格式有误先不处理"); + if (StringUtils.isNotBlank(biologicalMonitoringEndDate)) { //填了生物监测的结束时间 + try { + long biologicalMonitoringEndDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(biologicalMonitoringEndDate).getTime(); + if (biologicalMonitoringEndDateTime > nowTime) { + unconventionalForeignTousses += map.get("barcode") + ";"; + } + } catch (ParseException e) { + logger.debug("生物监测结束时间格式有误先不处理"); + } + } else { + if (StringUtils.isNotBlank(lagTimeString) && StringUtils.isNotBlank(biologicalMonitoringTimeString)) { //在对应的灭菌炉"灭菌与生物监测间隔时间"和"生物监测持续时间"两个参数都要有配才会去判断是否紧急发货,否则默认常规 + try { + Integer lagTime = new Integer(lagTimeString)*60*1000; + Integer biologicalMonitoringTime = new Integer(biologicalMonitoringTimeString)*60*1000; + long endDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endDate).getTime(); + long biologicalMonitoringEndDateTime = endDateTime + lagTime + biologicalMonitoringTime; + + if (biologicalMonitoringEndDateTime > nowTime) { + unconventionalForeignTousses += map.get("barcode") + ";"; + } + } catch (ParseException e) { + logger.debug("灭菌结束时间格式有误先不处理"); + } + } } - - long tempTime = biologicalMonitoringStartDateTime + (biologicalMonitoringTime*60*1000); //生物监测开始的时间加上对应灭菌炉配置的生物监测默认时间 - if (tempTime > nowTime) { //默认生物监测时间还没结束就发货 - unconventionalForeignTousses += map.get("barcode") + ";"; - } - } else { //登记了生物监测,则判断是否为常规发货 + } else { //如果生物监测结果不是"无",那么生物监测结束时间一定有值 long biologicalMonitoringEndDateTime = 0; try { biologicalMonitoringEndDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(biologicalMonitoringEndDate).getTime(); Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r16347 -r16353 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 16347) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 16353) @@ -2212,6 +2212,7 @@ return; } top.Ext.getCmp('monitorUser').setValue(result.fullName); + top.Ext.getCmp('monitorCheckerBarcode').focus(); }else{ showResult('找不到该条码所对应的人员信息'); } @@ -2510,6 +2511,7 @@ top.Ext.getCmp('biologicalMonitoringEndDate').disable(); top.Ext.getCmp('monitorCheckerBarcode').disable(); top.Ext.getCmp('monitorChecker').disable(); + top.Ext.getCmp('monitorUserBarcode').disable(); top.Ext.getCmp('monitorUser').disable(); if(action.result.data.status == statusFailure && reSterilization == false){ Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java =================================================================== diff -u -r16274 -r16353 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java (.../SterilizerManagerImpl.java) (revision 16274) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java (.../SterilizerManagerImpl.java) (revision 16353) @@ -122,40 +122,76 @@ String sql = "select t.id tousseId," - + "t.tousseName tousseName," - + "i.sendTime sendTime " + + "i.sendTime sendTime," + + "sr.endDate endDate," + + "s.biologicalMonitoringTime biologicalMonitoringTime," + + "s.lagTime lagTime " + "from TousseInstance t," + "TousseDefinition td," + "SterilizationRecord sr," + + "Sterilizer s," + "Invoice i " + "where t.sterilizationRecord_id=sr.id " + "and t.invoice_id=i.id " + "and t.tousseDefinition_id=td.id " + "and td.includeImplant=" + TousseDefinition.INCLUDE_IMPLANT + " " - + "and sr.id=" + (sterilizationRecordId.toString()) + + "and sr.id=" + (sterilizationRecordId.toString()) + " " + + "and s.id=sr.sterilizer_id" ; - ResultSet result = objectDao.executeSql(sql); + ResultSet result = objectDao.executeSql(sql); //此灭菌炉的所有含有植入物并且已经"发货的"器械包的集合 try { while(result.next()){ String tousseId = result.getString("tousseId"); String sendTime = result.getString("sendTime"); + String endDate = result.getString("endDate"); + String biologicalMonitoringTimeString = result.getString("biologicalMonitoringTime"); + String lagTimeString = result.getString("lagTime"); + try { long sendTimeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(sendTime).getTime(); - long biologicalMonitoringEndDateStamp = biologicalMonitoringEndDate.getTime(); - String isRoutine = TousseInstance.ROUTINE_YES; - if (SterilizationRecord.MONITOR_RESULT_UNQUALIFIED.equals(biologyResult) || biologicalMonitoringEndDateStamp > sendTimeStamp) { //非常规发货 + if (SterilizationRecord.MONITOR_RESULT_NO.equals(biologyResult)) { + if (biologicalMonitoringEndDate != null) { + long biologicalMonitoringEndDateStamp = biologicalMonitoringEndDate.getTime(); + if (biologicalMonitoringEndDateStamp > sendTimeStamp) { //非常规发货 + isRoutine = TousseInstance.ROUTINE_NO; + } + } else { + if (StringUtils.isNotBlank(lagTimeString) && StringUtils.isNotBlank(biologicalMonitoringTimeString)) { //在对应的灭菌炉"灭菌与生物监测间隔时间"和"生物监测持续时间"两个参数都要有配才会去判断是否紧急发货,否则默认常规 + try { + Integer lagTime = new Integer(lagTimeString)*60*1000; + Integer biologicalMonitoringTime = new Integer(biologicalMonitoringTimeString)*60*1000; + long endDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endDate).getTime(); + long biologicalMonitoringEndDateTime = endDateTime + lagTime + biologicalMonitoringTime; + + if (biologicalMonitoringEndDateTime > sendTimeStamp) { + isRoutine = TousseInstance.ROUTINE_NO; + } + } catch (ParseException e) { + //灭菌结束时间格式有误,这种情况不会出现的 + } + } + } + } else if (SterilizationRecord.MONITOR_RESULT_UNQUALIFIED.equals(biologyResult)) { //结果不合格也是紧急发货 isRoutine = TousseInstance.ROUTINE_NO; + } else { //如果生物监测结果为"合格" + if (biologicalMonitoringEndDate != null) { //其实biologicalMonitoringEndDate不会出现空的,但是为了保守,还是排除掉空异常 + long biologicalMonitoringEndDateStamp = biologicalMonitoringEndDate.getTime(); + if (biologicalMonitoringEndDateStamp > sendTimeStamp) { //非常规发货 + isRoutine = TousseInstance.ROUTINE_NO; + } + } } + String sql2 = "update TousseInstance set isRoutine='" + isRoutine + "' where id=" + tousseId; objectDao.executeUpdate(sql2); - } catch (ParseException e) { - e.printStackTrace(); + } catch (Exception e) { + //发货时间格式有误,这种情况不会出现的 } } } catch (SQLException e) { Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js =================================================================== diff -u -r16303 -r16353 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 16303) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 16353) @@ -552,21 +552,28 @@ continue; } - if (goods.isUnqualified && sstsConfig.biologicalMonitoringEnable) { //此外来器械包生物监测不合格 - alert('[' + goods.name + ']生物监测不合格,不能发货'); - continue; - } - if (goods.noBiologicalMonitoring && sstsConfig.biologicalMonitoringEnable) { //此外来器械包没做生物监测(cjr) - if (!confirm('[' + goods.name + ']没做生物监测,确定要发货吗?')){ + if (sstsConfig.biologicalMonitoringEnable) { //发货时对含植入物的器械包,进行是否紧急发货以及生物监测情况的提示 + if (goods.isUnqualified) { //生物监测不合格 + alert('[' + goods.name + ']生物监测结果为不合格,不能发货'); continue; } - } - - if (goods.isRoutine == '否' && sstsConfig.biologicalMonitoringEnable && !goods.noBiologicalMonitoring){ //此外来器械包正在做生物监测(cjr) - if (!confirm('[' + goods.name + ']正在做生物监测,需要紧急发货吗?')){ - continue; + + if (goods.noBiologicalMonitoring) { //生物监测为无(1、真的没做 2、填了生物监测的结束时间相当于生物监测正在进行中) + var massage = '[' + goods.name + ']生物监测结果为无,确定要发货吗?'; + if (goods.isRoutine == '否') { + massage = '[' + goods.name + ']正在做生物监测,并且生物监测结果为无,确定要发货吗?'; + } + if (!confirm(massage)){ + continue; + } } + + if (goods.isRoutine == '否' && !goods.noBiologicalMonitoring){ //正在做生物监测(cjr) + if (!confirm('[' + goods.name + ']正在做生物监测,需要紧急发货吗?')){ + continue; + } + } } addGoods(goods,speakBasket); Index: forgon-core/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r16343 -r16353 --- forgon-core/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 16343) +++ forgon-core/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 16353) @@ -19,7 +19,7 @@ "3.3.0","3.3.8", "3.3.9", "3.3.10","3.3.12","3.3.13","3.8.0","3.9.0","3.9.1","3.9.2","4.0.2","4.0.3","4.0.4", "4.0.5","4.0.6","4.0.44","4.0.45","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.1.6","4.1.7","4.1.8","4.1.9","4.2.0","4.2.1","4.2.2", "4.2.3","4.2.4","4.2.5","4.2.6","4.2.7","4.2.8","4.2.9","4.3.0","4.3.1","4.3.2","4.3.3","4.3.4","4.3.5","4.3.6","4.3.7","4.3.8","4.3.9", - "4.4.0","4.4.1","4.4.2","4.4.3","4.4.4","4.4.5","4.4.6","4.4.7","4.4.8","4.4.9","4.5.0","4.5.1","4.5.2"};// 版本列表 + "4.4.0","4.4.1","4.4.2","4.4.3","4.4.4","4.4.5","4.4.6","4.4.7","4.4.8","4.4.9","4.5.0","4.5.1","4.5.2","4.5.3"};// 版本列表 public final static List SOFTWARE_VERSION_LIST = Arrays .asList(SOFTWARE_VERSION_ARRAY); public final static String SOFTWARE_VERSION = SOFTWARE_VERSION_ARRAY[SOFTWARE_VERSION_ARRAY.length - 1];// 软件最新版本 Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.5.2_4.5.3.sql =================================================================== diff -u --- ssts-web/src/main/webapp/dataUpdater/sqls/4.5.2_4.5.3.sql (revision 0) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.5.2_4.5.3.sql (revision 16353) @@ -0,0 +1 @@ +update SterilizationRecord set biologyResult='无' where biologyResult is null; \ No newline at end of file