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;
+ }
}