Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r30657 -r30733 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30657) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30733) @@ -85,6 +85,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.LowTempSterilizerRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.OneOfGetingeSterilizerRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.SterilizerRecord; +import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningVo; import com.forgon.disinfectsystem.entity.urgent.UrgentLevel; import com.forgon.disinfectsystem.expirationdateinfo.service.ExpirationDateInfoManager; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationTransition.service.SterilizationTransitionItemManager; @@ -6731,4 +6732,50 @@ } return result; } + + @Override + public List promptUploadDeviceParameterPicture() { + List warningVoList = new ArrayList(); + Boolean enablePromptUploadDeviceParameterPicture = ConfigUtils.getSystemSetConfigByNameBool("enablePromptUploadDeviceParameterPicture"); + if(!enablePromptUploadDeviceParameterPicture){ + return warningVoList; + } + // 用户拥有【提示上传灭菌记录物理参数】的权限 + if(!operationManager.isCurrentUserHaveAnyOperation("SSTS_Sterilization_Message")){ + return warningVoList; + } + // 有属于用户的当前登录科室的灭菌器,并且灭菌器的【提示上传设备物理参数图片】属性的值为“是” + String hql = String.format("select po from %s po where po.orgUnitCoding = '%s' and po.promptUploadDevParamPic = '%s'", + Sterilizer.class.getSimpleName(), AcegiHelper.getCurrentOrgUnitCode(), Constants.STR_YES); + List sterilizerList = objectDao.findByHql(hql); + if(CollectionUtils.isEmpty(sterilizerList)){ + return warningVoList; + } + // 上面符合条件的设备,存在有灭菌记录的结束时间到了,但还没上传物理参数图片,并且该记录并没有设置为不再提醒 + List sterilizerIdList = new ArrayList(); + for (Sterilizer sterilizer : sterilizerList) { + sterilizerIdList.add(sterilizer.getId()); + } + String recordHql = String.format("select po from %s po where (po.sterilizerRecordAmount is null or po.sterilizerRecordAmount = 0) and po.endDate is not null and po.endDate < %s and %s and po.promptUploadDevParamPic = '%s' order by po.endDate desc ", + SterilizationRecord.class.getSimpleName(), + dateQueryAdapter.dateAdapter(new Date()), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.sterilizer.id", sterilizerIdList), + Constants.STR_YES); + List sterilizationRecordList = objectDao.findByHql(recordHql, 0, 20); + if(CollectionUtils.isEmpty(sterilizationRecordList)){ + return warningVoList; + } + for (SterilizationRecord sterilizationRecord : sterilizationRecordList) { + String message = String.format("%s第%s炉次已于%s完成灭菌,请上传物理参数图片。", + sterilizationRecord.getSterilizer().getName(), + sterilizationRecord.getFrequency(), + DateTools.getFormatDateStr(sterilizationRecord.getEndDate(), DateTools.COMMON_DATE_HM)); + SystemWarningVo vo = new SystemWarningVo(); + vo.setMessage(message); + vo.setEndDate(sterilizationRecord.getEndDate()); + warningVoList.add(vo); + } + return warningVoList; + } + } Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java =================================================================== diff -u -r30445 -r30733 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 30445) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 30733) @@ -13,6 +13,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; +import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningVo; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashData; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataItemOfChangLong; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfChangLong; @@ -319,4 +320,11 @@ * @return <清洗篮筐id,清洗记录json> */ public Map getLastWashAndDisinfectRecordsMapByIds(Set classifyBasketIds, SimpleDateFormat sdf); + + /** + * 提示上传设备物理参数图片(SZYK-27) + * @return + */ + public List promptUploadDeviceParameterPicture(); + } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java =================================================================== diff -u -r30381 -r30733 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 30381) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 30733) @@ -21,6 +21,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.LowTempSterilizerRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.OneOfGetingeSterilizerRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.SterilizerRecord; +import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningVo; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.vo.SterilizationRecordPrintTousseItem; import com.forgon.disinfectsystem.vo.SimpleInfoVo; import com.forgon.tools.hibernate.BasePoManager; @@ -548,5 +549,11 @@ * @return */ public OneOfGetingeSterilizerRecord getOneOfGetingeSterilizerRecordSterilizerRecord(String machineNo, Date startDate); + + /** + * 提示上传设备物理参数图片(SZYK-27) + * @return + */ + public List promptUploadDeviceParameterPicture(); } Index: forgon-tools/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r30680 -r30733 --- forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 30680) +++ forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 30733) @@ -26,7 +26,7 @@ "4.9.7","4.9.8","4.9.9","4.9.10","4.9.11","4.9.12","4.9.13","4.9.14","4.9.15","4.9.16","4.9.17","4.9.18","4.9.19","4.9.20","4.9.21","4.9.22","4.9.23","4.9.24", "4.9.25","4.9.26","4.9.27","4.9.28","4.9.29","4.9.30","4.9.31","4.9.32","4.9.33","4.9.34","4.9.35","4.9.36","4.9.37","4.9.38","4.9.39","4.9.40","4.9.41","4.9.42","4.9.43","4.9.44", "4.9.45","4.9.46","4.9.47","4.9.48","4.9.49","4.9.50","4.9.51","4.9.52","4.9.53","4.9.54","4.9.55","4.9.56","4.9.57","4.9.58","4.9.59","4.9.60","4.9.61","4.9.62", - "4.9.63","4.9.64","4.9.65","4.9.66","4.9.67","4.9.68","4.9.69"}; + "4.9.63","4.9.64","4.9.65","4.9.66","4.9.67","4.9.68","4.9.69","4.9.70"}; // 版本列表(4.0版本升级4.1版需要分两步:先从4.0升到4.1.0、然后从4.1.0升级4.1最新版本) /*public final static String[] SOFTWARE_VERSION_ARRAY = new String[] { Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washanddisinfectrecord/WashAndDisinfectRecord.java =================================================================== diff -u -r26219 -r30733 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washanddisinfectrecord/WashAndDisinfectRecord.java (.../WashAndDisinfectRecord.java) (revision 26219) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washanddisinfectrecord/WashAndDisinfectRecord.java (.../WashAndDisinfectRecord.java) (revision 30733) @@ -177,6 +177,11 @@ @JsonIgnore private List washAndDisinfectPictures; + /** + * 提示上传清洗记录物理参数(SZYK-27只是可以通过升级脚本,把历史记录设置为不再提醒的字段) + */ + private String promptUploadDevParamPic = Constants.STR_YES; + @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long getId() { @@ -467,4 +472,12 @@ this.washPersonInChargeCode = washPersonInChargeCode; } + public String getPromptUploadDevParamPic() { + return promptUploadDevParamPic; + } + + public void setPromptUploadDevParamPic(String promptUploadDevParamPic) { + this.promptUploadDevParamPic = promptUploadDevParamPic; + } + } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r30278 -r30733 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 30278) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 30733) @@ -11,11 +11,13 @@ import java.io.OutputStream; import java.sql.ResultSet; import java.sql.SQLException; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -58,6 +60,7 @@ import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; import com.forgon.disinfectsystem.entity.basedatamanager.bioreader.Bioreader; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; @@ -70,11 +73,13 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationInterruptRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; +import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningVo; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.vo.SterilizationRecordPrintTousseItem; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; import com.forgon.exception.SterilingModeNotTheSameException; import com.forgon.exception.SystemException; import com.forgon.exception.UnScanSterilizationMonitoringPackageException; @@ -157,6 +162,13 @@ private SterilisationManager sterilisationManager; + private WashAndDisinfectRecordManager washAndDisinfectRecordManager; + + public void setWashAndDisinfectRecordManager( + WashAndDisinfectRecordManager washAndDisinfectRecordManager) { + this.washAndDisinfectRecordManager = washAndDisinfectRecordManager; + } + public File[] getUploadFiles() { return uploadFiles; } @@ -2406,4 +2418,41 @@ StrutsResponseUtils.output(true, message); } + /** + * 提示上传设备物理参数图片(SZYK-27) + */ + public void promptUploadDeviceParameterPicture(){ + try { + JSONArray message = new JSONArray(); + List allVo = new ArrayList(); + List vo1 = sterilizationRecordManager.promptUploadDeviceParameterPicture(); + List vo2 = washAndDisinfectRecordManager.promptUploadDeviceParameterPicture(); + if(vo1 != null){ + allVo.addAll(vo1); + } + if(vo2 != null){ + allVo.addAll(vo2); + } + allVo.sort(new Comparator() { + @Override + public int compare(SystemWarningVo o1, SystemWarningVo o2) { + if (o1.getEndDate() == null && o2.getEndDate() != null) { + return -1; + } + if (o1.getEndDate() != null && o2.getEndDate() == null) { + return 1; + } + return o2.getEndDate().compareTo(o1.getEndDate()); + } + }); + for(int i=0;i<20 && i promptUploadDeviceParameterPicture() { + List warningVoList = new ArrayList(); + Boolean enablePromptUploadDeviceParameterPicture = ConfigUtils.getSystemSetConfigByNameBool("enablePromptUploadDeviceParameterPicture"); + if(!enablePromptUploadDeviceParameterPicture){ + return warningVoList; + } + // 用户拥有【提示上传清洗记录物理参数】的权限 + if(!operationManager.isCurrentUserHaveAnyOperation("SSTS_WashRecord_Message")){ + return warningVoList; + } + // 有属于用户的当前登录科室的清洗机,并且清洗机的【提示上传设备物理参数图片】属性的值为“是” + String hql = String.format("select po from %s po where po.orgUnitCoding = '%s' and po.promptUploadDevParamPic = '%s'", + Rinser.class.getSimpleName(), AcegiHelper.getCurrentOrgUnitCode(), Constants.STR_YES); + List rinserList = objectDao.findByHql(hql); + if(CollectionUtils.isEmpty(rinserList)){ + return warningVoList; + } + // 上面符合条件的设备,存在有清洗记录的结束时间到了,但还没上传物理参数图片,并且该记录并没有设置为不再提醒 + List rinserIdList = new ArrayList(); + Map rinserMap = new HashMap(); + for (Rinser rinser : rinserList) { + rinserIdList.add(rinser.getId()); + rinserMap.put(rinser.getId(), rinser); + } + String recordHql = String.format("select po from %s po where (po.washDataAmount is null or po.washDataAmount = 0) and po.endDate is not null and po.endDate < %s and %s and po.promptUploadDevParamPic = '%s' order by po.endDate desc", + WashAndDisinfectRecord.class.getSimpleName(), + dateQueryAdapter.dateAdapter(new Date()), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.rinserId", rinserIdList), + Constants.STR_YES); + List washAndDisinfectRecordList = objectDao.findByHql(recordHql, 0, 20); + if(CollectionUtils.isEmpty(washAndDisinfectRecordList)){ + return warningVoList; + } + for (WashAndDisinfectRecord washAndDisinfectRecord : washAndDisinfectRecordList) { + String message = String.format("%s已于%s完成清洗,请上传物理参数图片。", + rinserMap.get(washAndDisinfectRecord.getRinserId()).getName(), + DateTools.getFormatDateStr(washAndDisinfectRecord.getEndDate(), DateTools.COMMON_DATE_HM)); + SystemWarningVo vo = new SystemWarningVo(); + vo.setMessage(message); + vo.setEndDate(washAndDisinfectRecord.getEndDate()); + warningVoList.add(vo); + } + return warningVoList; + } } Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.69_4.9.70.sql =================================================================== diff -u --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.69_4.9.70.sql (revision 0) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.69_4.9.70.sql (revision 30733) @@ -0,0 +1,2 @@ +update SterilizationRecord set promptUploadDevParamPic = '否'; +update WashAndDisinfectRecord set promptUploadDevParamPic = '否'; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/rinser/Rinser.java =================================================================== diff -u -r28691 -r30733 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/rinser/Rinser.java (.../Rinser.java) (revision 28691) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/rinser/Rinser.java (.../Rinser.java) (revision 30733) @@ -24,6 +24,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Cascade; +import com.forgon.Constants; import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.entity.basedatamanager.cleanmethod.CleanMethod; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; @@ -117,6 +118,11 @@ public static final String CONCURRENT_ENABLE = "允许"; public static final String CONCURRENT_DISABLE = "禁止"; + /** + * 提示上传清洗记录物理参数(SZYK-27) + */ + private String promptUploadDevParamPic = Constants.STR_NO; + public Rinser() { initType(); } @@ -386,5 +392,13 @@ public void setTimingCompleteWash(String timingCompleteWash) { this.timingCompleteWash = timingCompleteWash; } + + public String getPromptUploadDevParamPic() { + return promptUploadDevParamPic; + } + public void setPromptUploadDevParamPic(String promptUploadDevParamPic) { + this.promptUploadDevParamPic = promptUploadDevParamPic; + } + } Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r30588 -r30733 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 30588) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 30733) @@ -85,6 +85,7 @@ + @@ -115,6 +116,7 @@ +