Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java =================================================================== diff -u -r38725 -r39122 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 38725) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 39122) @@ -448,6 +448,13 @@ * 定时读取病人状态视图,并根据手术状态自动审核使用记录SZSDSRMYY-111 */ public void timingReviewAndConvertUseRecordByPatientSurgicalStatusView(); + + /** + * 定时读取病人状态视图,并根据手术状态自动审核使用记录ZSYY-394 + * 根据视图内的患者信息的字段“患者ID”(对应使用记录信息单上的字段“住院号”)进行查询, + * 如存在该患者ID的未审核或已审核的使用记录,则自动审核和转换对应的使用记录为申请单 + */ + public void timingReviewAndConvertUseRecordByPatientOperationInfoView(); /** * 修改已审核和已申请使用记录加急信息功能ZSRY-53 Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/model/OperationInfoVo.java =================================================================== diff -u --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/model/OperationInfoVo.java (revision 0) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/model/OperationInfoVo.java (revision 39122) @@ -0,0 +1,85 @@ +package com.forgon.disinfectsystem.datasynchronization.model; +/** + * 手术信息ZSYY-403 + */ +public class OperationInfoVo { + + /** + * 住院号 + */ + private String hospitalNumber; + + /** + * 出室时间 + */ + private String exitTime; + + /** + * 手术间 + */ + private String operationRoom; + + /** + * 手术台号 + */ + private String operationTableNum; + + /** + * 手术名称 + */ + private String operation; + + /** + * 手术医生 + */ + private String doctorName; + + public String getHospitalNumber() { + return hospitalNumber; + } + + public void setHospitalNumber(String hospitalNumber) { + this.hospitalNumber = hospitalNumber; + } + + public String getExitTime() { + return exitTime; + } + + public void setExitTime(String exitTime) { + this.exitTime = exitTime; + } + + public String getOperationRoom() { + return operationRoom; + } + + public void setOperationRoom(String operationRoom) { + this.operationRoom = operationRoom; + } + + public String getOperationTableNum() { + return operationTableNum; + } + + public void setOperationTableNum(String operationTableNum) { + this.operationTableNum = operationTableNum; + } + + public String getOperation() { + return operation; + } + + public void setOperation(String operation) { + this.operation = operation; + } + + public String getDoctorName() { + return doctorName; + } + + public void setDoctorName(String doctorName) { + this.doctorName = doctorName; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/spring/his.xml =================================================================== diff -u -r39062 -r39122 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/spring/his.xml (.../his.xml) (revision 39062) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/spring/his.xml (.../his.xml) (revision 39122) @@ -153,5 +153,28 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/interfaces/mybatis/FindPatientSurgicalStatusMapper.xml =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/interfaces/mybatis/FindPatientSurgicalStatusMapper.xml (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/interfaces/mybatis/FindPatientSurgicalStatusMapper.xml (revision 39122) @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r39117 -r39122 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 39117) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 39122) @@ -79,6 +79,7 @@ import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientSurgicalStatusDao; import com.forgon.disinfectsystem.datasynchronization.dao.UseRecordPushDao; +import com.forgon.disinfectsystem.datasynchronization.model.OperationInfoVo; import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; @@ -14245,5 +14246,96 @@ } } } + + @SuppressWarnings("unchecked") + @Override + public void timingReviewAndConvertUseRecordByPatientOperationInfoView() { + + logger.debug("定时审核使用记录并转换申请单"); + //1.判断是否有启用使用记录转换配置功能 + boolean enableUseRecordConvertConfig = CssdUtils.getSystemSetConfigByNameBool("enableUseRecordConvertConfig", false); + if(enableUseRecordConvertConfig == false){ + logger.debug("未开启使用记录转换配置功能"); + return; + } + if(findPatientSurgicalStatusDao == null){ + logger.debug("未找到findPatientSurgicalStatusDao"); + return; + } + + // 读取配置:是否只转换已审核状态的使用记录单 + boolean onlyConvertAuditedUseRecord = CssdUtils.getSystemSetConfigByNameBool("onlyConvertAuditedUseRecord", false); + // 默认转换未审核和已审核状态的使用记录单 + String convertStatus = UseRecord.STATUS_UNAUDITED +"','"+ UseRecord.STATUS_AUDITED; + // 值为true,只转换已审核状态的使用记录单 + if (onlyConvertAuditedUseRecord){ + convertStatus = UseRecord.STATUS_AUDITED; + } + + //查询状态为待审核并且手术单号不为空的使用记录 + String sql = " where status in ('"+ convertStatus +"') and hospitalNum is not null "; + List unAuditedUseRecordList = + objectDao.findBySql_ForUpdate(UseRecord.class.getSimpleName(), sql); + if(CollectionUtils.isEmpty(unAuditedUseRecordList)){ + logger.debug("没有住院号不为空的使用记录需要转换申请单"); + return; + } + List auditedUseRecordList = new ArrayList(); + for (UseRecord useRecord : unAuditedUseRecordList) { + + String hospitalNumber = useRecord.getHospitalNum(); + if(StringUtils.isBlank(hospitalNumber)){ + logger.debug("住院号为空的使用记录不需要处理"); + continue; + } + List operationInfoVoList = findPatientSurgicalStatusDao.findPatientOperationInfoByHospitalNumber(hospitalNumber); + if(CollectionUtils.isEmpty(operationInfoVoList)){ + logger.debug("手术结束状态信息视图没有患者ID(住院号)为【" + hospitalNumber + "】的数据"); + continue; + } + //判断使用记录的物品是否为空 + String validate = ""; + try { + useRecord.validateUseRecordItemsWhenReviewing(objectDao); + } catch (Exception e) { + e.printStackTrace(); + validate = e.getMessage(); + } + if(StringUtils.isNotBlank(validate)){ + logger.debug(validate); + continue; + } + auditedUseRecordList.add(useRecord); + } + if(CollectionUtils.isEmpty(auditedUseRecordList)){ + logger.debug("没有使用记录需要转换申请单"); + return; + } + //查询登记人(需要改审核人为登记人) + Map userMap = getOperatorMap(auditedUseRecordList); + Date applicationCreateDate = new Date(); + String applicationFormType = CssdUtils.getSystemSetConfigByName("applicationFormType"); + for (UseRecord useRecord : auditedUseRecordList) { + try { + List useRecordIdList = new ArrayList(); + useRecordIdList.add(useRecord.getId()); + String reviewer = "定时"; + String reviewerCode = ""; + User user = userMap.get(useRecord.getOperator()); + if(user != null){ + reviewer = StringTools.defaultString(user.getFullName(), "定时"); + reviewerCode = StringTools.defaultString(user.getName()); + } + createRecyclingApplicationByUseRecords(useRecordIdList, "定时", useRecord.getDepart(), + useRecord.getDepartCoding(), applicationCreateDate, + applicationFormType, reviewer, reviewerCode); + } catch (Exception e) { + e.printStackTrace(); + logger.debug("id=" + useRecord.getId() + "的使用记录,定时审核并转换申请单时报错:" + e.getMessage()); + } + } + + } + } Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/spring/timer.xml =================================================================== diff -u -r39062 -r39122 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/spring/timer.xml (.../timer.xml) (revision 39062) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/spring/timer.xml (.../timer.xml) (revision 39122) @@ -82,6 +82,29 @@ 0 0/2 * * * ? + + + + + + + + + timingReviewAndConvertUseRecordByPatientOperationInfoView + + + + + + + + + + + 0 0/5 * * * ? + + @@ -94,6 +117,8 @@ + + Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/FindPatientSurgicalStatusDao.java =================================================================== diff -u -r37069 -r39122 --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/FindPatientSurgicalStatusDao.java (.../FindPatientSurgicalStatusDao.java) (revision 37069) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/FindPatientSurgicalStatusDao.java (.../FindPatientSurgicalStatusDao.java) (revision 39122) @@ -4,6 +4,7 @@ import org.apache.ibatis.annotations.Param; +import com.forgon.disinfectsystem.datasynchronization.model.OperationInfoVo; import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; /** @@ -17,5 +18,14 @@ * @return */ public List findPatientSurgicalStatusByOperationScheduleId(@Param("operationScheduleId") String operationScheduleId); + + /** + * 根据住院号获取手术病人状态 + * @param hospitalNumber 住院号 + * @return + */ + public default List findPatientOperationInfoByHospitalNumber(@Param("hospitalNumber") String hospitalNumber){ + return null; + } }