@ -27,11 +27,9 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes ;
import javax.servlet.http.HttpServletRequest ;
import java.text.ParseException ;
import java.text.SimpleDateFormat ;
import java.util.ArrayList ;
import java.util.Date ;
import java.util.List ;
import java.util.Set ;
import java.util.* ;
/ * *
* @author zwh
@ -58,6 +56,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
private PaperPostionService paperPostionService ;
@Autowired
private ArchiveForceSumbitInfoService archiveForceSumbitInfoService ;
@Autowired
private ArchiveOtherExtMapper archiveOtherExtMapper ;
/ * *
* 在 院 列 表
* * /
@ -295,8 +295,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
masterVo . setCurrentStatus ( currentArchivestate ) ;
//根据角色
//获取审核按钮和退回按钮集合
String btns = getBtns ( status , flowRoles , masterVo . getId ( ) ) ;
masterVo . setBtns ( btns ) ;
getBtns ( status , flowRoles , masterVo . getId ( ) , masterVo . getPatientId ( ) , masterVo ) ;
}
}
}
@ -483,10 +482,24 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
return list ;
}
/ * *
* 组 织 前 端 操 作 审 核 的 方 法 名
* @param code
* @param status
* @param targetCode
* @param masterId
* @param patientId
* @return
* /
private String verifyInfoMethodStr ( int code , Integer status , int targetCode , String masterId , String patientId ) {
patientId = "\"" + patientId + "\"" ;
return "verifyInfo(" + code + "," + status + "," + targetCode + "," + masterId + "," + patientId + ")" ;
}
/ * *
* 获 取 审 核 按 钮 和 退 回 按 钮 集 合
* * /
private String getBtns ( Integer status , List < ArchiveFlowRole > roles , String id ) {
private void getBtns ( Integer status , List < ArchiveFlowRole > roles , String id , String patientId , Archive_Master_Vo masterVo ) {
String btns = "" ;
//获取用户功能权限信息
HttpServletRequest request = ( ( ServletRequestAttributes ) RequestContextHolder . getRequestAttributes ( ) ) . getRequest ( ) ;
@ -595,49 +608,58 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
String masterId = '"' + id + '"' ;
//定义下个节点code
int targetCode = 0 ;
//定义医生支线或护士长节点的code
Integer judgeCode = null ;
if ( ! EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . HeadNurseCheck ) ) {
//判断是否护士长审核
boolean headNurseCheckFlag = getHeadNurseCheckFlag ( status , roles ) ;
if ( headNurseCheckFlag ) {
if ( headNurseCheckPower = = 1 & & headNurseCheckEffective = = 1 ) {
targetCode = EnumVerify . DocState . HeadNurseCheck . getCode ( ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='verifyInfo(" + EnumVerify . Checker . Generate . getCode ( ) + "," + status + "," + targetCode + "," + masterId + ")' title=" + headNurseSumbitName + ">" + headNurseSumbitName + "</button>" ;
String verifyInfo = verifyInfoMethodStr ( EnumVerify . Checker . Generate . getCode ( ) , status , targetCode , masterId , patientId ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='" + verifyInfo + "' title=" + headNurseSumbitName + ">" + headNurseSumbitName + "</button>" ;
judgeCode = targetCode ;
}
} else {
//没有医生提交
if ( ! EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . DortorSubmit ) ) {
if ( doctorSumbitPower = = 1 & & doctorSubmitEffective = = 1 ) {
targetCode = EnumVerify . DocState . DortorSubmit . getCode ( ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='verifyInfo(" + EnumVerify . Checker . Dortor . getCode ( ) + "," + status + "," + targetCode + "," + masterId + ")' title=" + doctorSumbitName + ">" + doctorSumbitName + "</button>" ;
String verifyInfo = verifyInfoMethodStr ( EnumVerify . Checker . Dortor . getCode ( ) , status , targetCode , masterId , patientId ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='" + verifyInfo + "' title=" + doctorSumbitName + ">" + doctorSumbitName + "</button>" ;
}
}
//没有医生质控员提交
if ( ! EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . DortorCheck ) & & EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . DortorSubmit ) | | doctorSubmitEffective = = 0 ) {
if ( doctorCheckSumbitPower = = 1 & & dortorCheckEffective = = 1 ) {
targetCode = EnumVerify . DocState . DortorCheck . getCode ( ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='verifyInfo(" + EnumVerify . Checker . Dortor . getCode ( ) + "," + status + "," + targetCode + "," + masterId + ")' title=" + doctorCheckSumbitName + ">" + doctorCheckSumbitName + "</button>" ;
String verifyInfo = verifyInfoMethodStr ( EnumVerify . Checker . Dortor . getCode ( ) , status , targetCode , masterId , patientId ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='" + verifyInfo + "' title=" + doctorCheckSumbitName + ">" + doctorCheckSumbitName + "</button>" ;
}
}
//没有科主任审核
if ( ! EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . DirectorCheck ) & & EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . DortorCheck ) | | ( dortorCheckEffective = = 0 & & doctorSubmitEffective = = 0 ) | | ( dortorCheckEffective = = 0 & & EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . DortorSubmit ) ) ) {
if ( directorCheckSumbitPower = = 1 & & directorCheckEffective = = 1 ) {
targetCode = EnumVerify . DocState . DirectorCheck . getCode ( ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='verifyInfo(" + EnumVerify . Checker . Dortor . getCode ( ) + "," + status + "," + targetCode + "," + masterId + ")' title=" + directorCheckSumbitName + ">" + directorCheckSumbitName + "</button>" ;
String verifyInfo = verifyInfoMethodStr ( EnumVerify . Checker . Dortor . getCode ( ) , status , targetCode , masterId , patientId ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='" + verifyInfo + "' title=" + directorCheckSumbitName + ">" + directorCheckSumbitName + "</button>" ;
judgeCode = targetCode ;
}
}
//没有护士提交
if ( ! EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . NurseSubmit ) ) {
if ( nurseSumbitPower = = 1 & & nurseSubmitEffective = = 1 ) {
targetCode = EnumVerify . DocState . NurseSubmit . getCode ( ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='verifyInfo(" + EnumVerify . Checker . Nurse . getCode ( ) + "," + status + "," + targetCode + "," + masterId + ")' title=" + nurseSumbitName + ">" + nurseSumbitName + "</button>" ;
String verifyInfo = verifyInfoMethodStr ( EnumVerify . Checker . Nurse . getCode ( ) , status , targetCode , masterId , patientId ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='" + verifyInfo + "' title=" + nurseSumbitName + ">" + nurseSumbitName + "</button>" ;
}
//没有护士质控员提交
}
if ( ! EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . NurseCheck ) & & EnumVerify . DocState . HasCurrentState ( status , EnumVerify . DocState . NurseSubmit ) | | nurseSubmitEffective = = 0 ) {
if ( nurseCheckSumbitPower = = 1 & & nurseCheckEffective = = 1 ) {
targetCode = EnumVerify . DocState . NurseCheck . getCode ( ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='verifyInfo(" + EnumVerify . Checker . Nurse . getCode ( ) + "," + status + "," + targetCode + "," + masterId + ")' title=" + nurseCheckSumbitName + ">" + nurseCheckSumbitName + "</button>" ;
String verifyInfo = verifyInfoMethodStr ( EnumVerify . Checker . Nurse . getCode ( ) , status , targetCode , masterId , patientId ) ;
btns + = "<button type='button' class='btn btn-primary btn-sm' onclick='" + verifyInfo + "' title=" + nurseCheckSumbitName + ">" + nurseCheckSumbitName + "</button>" ;
}
}
}
@ -646,8 +668,9 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
btns + = "<button type='button' class='btn btn-warning btn-sm ' onclick='returnInfo(" + status + "," + targetCode + "," + masterId + ")' title='退回'>退回</button>" ;
}
}
masterVo . setBtns ( btns ) ;
masterVo . setOperRole ( judgeCode ) ;
}
return btns ;
}
/ * *
* 计 算 是 否 属 于 护 士 长 审 核
@ -1042,7 +1065,6 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
log . info ( "失败" ) ;
throw new RuntimeException ( "审核信息插入oracle失败" ) ;
}
}
}
@ -1305,6 +1327,125 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
archiveMasterMapper . updateById ( archiveMaster ) ;
//加入日志
}
/ * *
* 格 式 化 时 间 判 断
* @param time
* @param jzh
* @param dataBaseName
* @param sysFlagStr
* @return
* /
private Date judgeTime ( String time , String jzh , String dataBaseName , String sysFlagStr ) {
SimpleDateFormat fmt = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
try {
Date parse = fmt . parse ( time ) ;
return parse ;
} catch ( ParseException e ) {
e . printStackTrace ( ) ;
log . info ( "实时查询各个采集任务是否采集完成格式化时间出错了:" + "数据库:" + dataBaseName + "." + sysFlagStr + ";记账号:" + jzh ) ;
}
return null ;
}
@Override
public Msg judgeCollectCompleted ( String jzh ) {
//定义失败提示语
StringBuilder failResult = new StringBuilder ( ) ;
//判断护理文书是否完成sysFlag = 1
//查询护理文书采集任务
String sql1 = "SELECT SHOW_NAME,KDSJ FROM V_JSWZH_HL_DATA WHERE (ENABLED_VALUE = 'Y' OR ENABLED_VALUE IS NULL) AND JZH = '" + jzh + "'" ;
try {
List < Map > selectList1 = OracleConnect . selectListConvertMap ( sql1 ) ;
if ( ! CollectionUtils . isEmpty ( selectList1 ) ) {
//查询护理文书采集现有的数据
List < ArchiveOtherExt > archiveOtherExts1 = archiveOtherExtMapper . judgeCollectCompleted ( jzh , 1 ) ;
for ( Map map1 : selectList1 ) {
//获取文件名
String showName = ( String ) map1 . get ( "SHOW_NAME" ) ;
//获取最后时间
String kdsj = ( String ) map1 . get ( "KDSJ" ) ;
Date kdsjDate = judgeTime ( kdsj , jzh , "MZ" , "V_JSWZH_HL_DATA" ) ;
if ( null = = kdsjDate ) {
return Msg . fail ( "护理记录任务的时间格式不符合规范" ) ;
}
//定义是否完整
boolean complete = false ;
//遍历判断关联的文件的采集时间前后
for ( ArchiveOtherExt archiveOtherExt : archiveOtherExts1 ) {
//获取文件名
String c1 = archiveOtherExt . getC1 ( ) ;
//获取最后同步时间
Date sysupdatetime = archiveOtherExt . getSysupdatetime ( ) ;
if ( null ! = sysupdatetime & & showName . equals ( c1 ) ) {
if ( kdsjDate . getTime ( ) < = sysupdatetime . getTime ( ) ) {
complete = true ;
}
break ;
}
}
if ( ! complete ) {
//不完整添加进提示语句
if ( StringUtils . isNotBlank ( failResult ) ) {
failResult . append ( "," ) ;
}
failResult . append ( showName ) ;
}
}
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
//判断电子病历是否完成sysFlag = 2
//查询电子病历采集任务
String sql2 = "SELECT FPAT_NO,FREC_ID,FFILE_NAME,FLOGLUDATE FROM VIEW_DOCTOR_DATA_2 WHERE FPAT_NO = '" + jzh + "'" ;
try {
List < Map > selectList2 = OracleConnect . selectListConvertMap ( sql2 ) ;
if ( ! CollectionUtils . isEmpty ( selectList2 ) ) {
//查询电子病历采集现有的数据
List < ArchiveOtherExt > archiveOtherExts2 = archiveOtherExtMapper . judgeCollectCompleted ( jzh , 2 ) ;
for ( Map map1 : selectList2 ) {
//获取文件ID
String frecId = ( String ) map1 . get ( "FREC_ID" ) ;
//获取最后时间
String flogludate = ( String ) map1 . get ( "FLOGLUDATE" ) ;
Date flogluDate = judgeTime ( flogludate , jzh , "MZ" , "VIEW_DOCTOR_DATA_2" ) ;
if ( null = = flogluDate ) {
return Msg . fail ( "电子病历任务的时间格式不符合规范" ) ;
}
//定义是否完整
boolean complete = false ;
//遍历判断关联的文件的采集时间前后
for ( ArchiveOtherExt archiveOtherExt : archiveOtherExts2 ) {
//获取文件
String c2 = archiveOtherExt . getC2 ( ) ;
//获取最后同步时间
Date sysupdatetime = archiveOtherExt . getSysupdatetime ( ) ;
if ( null ! = sysupdatetime & & frecId . equals ( c2 ) ) {
if ( flogluDate . getTime ( ) < = sysupdatetime . getTime ( ) ) {
complete = true ;
}
break ;
}
}
if ( ! complete ) {
//不完整添加进提示语句
if ( StringUtils . isNotBlank ( failResult ) ) {
failResult . append ( "," ) ;
}
failResult . append ( map1 . get ( "FFILE_NAME" ) ) ;
}
}
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
if ( StringUtils . isNotBlank ( failResult ) ) {
failResult . append ( "采集未完成不允许提交" ) ;
return Msg . fail ( failResult . toString ( ) ) ;
}
return Msg . success ( ) ;
}
}