@ -64,114 +64,122 @@ public class faultController {
@RequestMapping ( value = "/exportExcel" )
public void exportExcel ( HttpServletResponse response , Emr_Fault_Vo emrFaultVo ) throws Exception {
response . setContentType ( "application/vnd.ms-excel;charset=UTF-8" ) ;
String [ ] header = { "病历清单id" , "住院号" , "住院次数" , "姓名" , "出院科室" , "出院日期" , "归档状态" , "评分" , "主管医生" , "退回总次数" , "退回总费用(元)" , "当前退回次数" , "退回费用" , "退回人" , "退回时间" , "缺陷选项" , "缺陷评分" , "缺陷内容" , "创建人" , "创建时间" } ; //,"回退内容"
String [ ] fileNames = { "archiveDetailId" , "inpNo" , "visitId" , "name" , "deptName" , "dischargeDateTime" , "archivestate" , "price" , "doctorInCharge" , "totalBackNum" , "totalBackFee" , "backNum" , "backFee" , "updater" , "updateTime" , "assortName" , "score" , "content" , "creater" , "createTime" } ; //,"backContent"
//文件名
String fileName = "缺陷信息数据" + new SimpleDateFormat ( "yyyyMMddHHmmss" ) . format ( new Date ( ) ) + ".xls" ;
//获取病案室退回医生或护士的缺陷列表
List < Emr_Fault_Vo > list = emrFaultDetailService . selByCol ( emrFaultVo ) ;
//获取病案退回是第几次 updater为退回人
List < Emr_Fault_Vo > backList = emrFaultDetailService . faultBackScoreList ( emrFaultVo ) ;
//退回总次数、总费用和总评分
List < Emr_Fault_Vo > masterList = emrFaultDetailService . masterTotalList ( emrFaultVo ) ;
if ( list ! = null & & list . size ( ) > 0 ) {
if ( backList ! = null & & backList . size ( ) > 0 ) {
if ( masterList ! = null & & masterList . size ( ) > 0 ) {
//缺陷列表
for ( Emr_Fault_Vo faultInfo : list ) {
faultInfo . setBackFee ( "0" ) ;
faultInfo . setBackNum ( "0" ) ;
faultInfo . setUpdater ( null ) ;
faultInfo . setTotalBackNum ( "0" ) ;
faultInfo . setTotalBackFee ( "0" ) ;
//退回总次数、总费用和总评分
List < Emr_Fault_Vo > masterList2 = masterList . stream ( ) . filter ( u - > ( u . getArchiveDetailId ( ) ) . equals ( faultInfo . getArchiveDetailId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( masterList2 . size ( ) > 0 ) {
Emr_Fault_Vo masertInfo = masterList2 . get ( 0 ) ;
faultInfo . setBackFee ( masertInfo . getBackFee ( ) ) ;
faultInfo . setInpNo ( masertInfo . getInpNo ( ) ) ;
faultInfo . setVisitId ( masertInfo . getVisitId ( ) ) ;
faultInfo . setName ( masertInfo . getName ( ) ) ;
faultInfo . setDeptName ( masertInfo . getDeptName ( ) ) ;
faultInfo . setDischargeDateTime ( masertInfo . getDischargeDateTime ( ) ) ;
faultInfo . setArchiveState ( masertInfo . getArchiveState ( ) ) ;
faultInfo . setPrice ( masertInfo . getScore ( ) ) ;
faultInfo . setTotalBackNum ( masertInfo . getTotalBackNum ( ) ) ;
faultInfo . setTotalBackFee ( masertInfo . getTotalBackFee ( ) ) ;
} else {
//匹配不到退回相关的ArchiveDetailId,分数暂时为100
faultInfo . setPrice ( new BigDecimal ( 100 ) ) ;
}
List < Emr_Fault_Vo > backList2 = backList . stream ( ) . filter ( u - > ( u . getArchiveDetailId ( ) ) . equals ( faultInfo . getArchiveDetailId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
//获取病案退回是第几次 updater为退回人 1583480
for ( Emr_Fault_Vo backInfo : backList2 ) {
if ( backInfo . getCreateTime ( ) ! = null & & backInfo . getCreateTime ( ) ! = "" ) {
if ( backInfo . getStartDateTo ( ) ! = null & & backInfo . getStartDateTo ( ) ! = "" & & backInfo . getEndDateTo ( ) ! = null & & backInfo . getEndDateTo ( ) ! = "" ) {
SimpleDateFormat ft = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
Date nowTime = ft . parse ( faultInfo . getCreateTime ( ) ) ;
Date startTime = ft . parse ( backInfo . getStartDateTo ( ) ) ;
Date endTime = ft . parse ( backInfo . getEndDateTo ( ) ) ;
if ( isEffectiveDate ( nowTime , startTime , endTime ) ) {
faultInfo . setStartDateTo ( backInfo . getStartDateTo ( ) ) ;
faultInfo . setEndDateTo ( backInfo . getEndDateTo ( ) ) ;
faultInfo . setBackNum ( backInfo . getBackNum ( ) ) ;
faultInfo . setUpdater ( backInfo . getCreater ( ) ) ;
// faultInfo.setDoctorInCharge(backInfo.getDoctorInCharge());
//System.out.println(backInfo.getCreateTime());
if ( StringUtils . isNotBlank ( backInfo . getEndDateTo ( ) ) ) {
faultInfo . setUpdateTime ( backInfo . getEndDateTo ( ) ) ;
} else {
faultInfo . setUpdateTime ( backInfo . getStartDateTo ( ) ) ;
}
faultInfo . setBackContent ( backInfo . getContent ( ) ) ;
break ;
String [ ] header = new String [ ] { "病历清单id" , "住院号" , "住院次数" , "姓名" , "出院科室" , "出院日期" , "归档状态" , "评分" , "主管医生" , "退回总次数" , "退回总费用(元)" , "当前退回次数" , "退回费用" , "退回人" , "退回时间" , "缺陷选项" , "缺陷评分" , "缺陷内容" , "创建人" , "创建时间" } ;
String [ ] fileNames = new String [ ] { "archiveDetailId" , "inpNo" , "visitId" , "name" , "deptName" , "dischargeDateTime" , "archivestate" , "score" , "doctorInCharge" , "totalBackNum" , "totalBackFee" , "backNum" , "backFee" , "updater" , "updateTime" , "assortName" , "price" , "content" , "creater" , "createTime" } ;
String fileName = "缺陷信息数据" + ( new SimpleDateFormat ( "yyyyMMddHHmmss" ) ) . format ( new Date ( ) ) + ".xls" ;
List < Emr_Fault_Vo > list = this . emrFaultDetailService . selByCol ( emrFaultVo ) ;
List < Emr_Fault_Vo > backList = this . emrFaultDetailService . faultBackScoreList ( emrFaultVo ) ;
List < Emr_Fault_Vo > masterList = this . emrFaultDetailService . masterTotalList ( emrFaultVo ) ;
if ( list ! = null & & list . size ( ) > 0 & & backList ! = null & & backList . size ( ) > 0 & & masterList ! = null & & masterList . size ( ) > 0 ) {
Iterator var9 = list . iterator ( ) ;
label88 :
while ( true ) {
label86 :
while ( true ) {
if ( ! var9 . hasNext ( ) ) {
break label88 ;
}
Emr_Fault_Vo faultInfo = ( Emr_Fault_Vo ) var9 . next ( ) ;
faultInfo . setBackFee ( "0" ) ;
faultInfo . setBackNum ( "0" ) ;
faultInfo . setUpdater ( ( String ) null ) ;
faultInfo . setTotalBackNum ( "0" ) ;
faultInfo . setTotalBackFee ( "0" ) ;
List < Emr_Fault_Vo > masterList2 = ( List ) masterList . stream ( ) . filter ( ( u ) - > {
return u . getArchiveDetailId ( ) . equals ( faultInfo . getArchiveDetailId ( ) ) ;
} ) . collect ( Collectors . toList ( ) ) ;
if ( masterList2 . size ( ) > 0 ) {
Emr_Fault_Vo masertInfo = ( Emr_Fault_Vo ) masterList2 . get ( 0 ) ;
faultInfo . setBackFee ( masertInfo . getBackFee ( ) ) ;
faultInfo . setInpNo ( masertInfo . getInpNo ( ) ) ;
faultInfo . setVisitId ( masertInfo . getVisitId ( ) ) ;
faultInfo . setName ( masertInfo . getName ( ) ) ;
faultInfo . setDischargeDateTime ( masertInfo . getDischargeDateTime ( ) ) ;
faultInfo . setArchiveState ( masertInfo . getArchiveState ( ) ) ;
BigDecimal score = faultInfo . getScore ( ) ;
Double v = score . doubleValue ( ) ;
if ( v = = 0 ) {
faultInfo . setScore ( BigDecimal . valueOf ( 100.0 ) ) ;
faultInfo . setPrice ( BigDecimal . valueOf ( 0 ) ) ;
} else {
double v1 = 100 - v ;
faultInfo . setScore ( BigDecimal . valueOf ( v ) ) ;
faultInfo . setPrice ( BigDecimal . valueOf ( v1 ) ) ;
}
faultInfo . setTotalBackNum ( masertInfo . getTotalBackNum ( ) ) ;
faultInfo . setTotalBackFee ( masertInfo . getTotalBackFee ( ) ) ;
} else {
faultInfo . setPrice ( new BigDecimal ( 0 ) ) ;
}
List < Emr_Fault_Vo > backList2 = ( List ) backList . stream ( ) . filter ( ( u ) - > {
return u . getArchiveDetailId ( ) . equals ( faultInfo . getArchiveDetailId ( ) ) ;
} ) . collect ( Collectors . toList ( ) ) ;
Iterator var13 = backList2 . iterator ( ) ;
while ( true ) {
while ( true ) {
Emr_Fault_Vo backInfo ;
do {
do {
if ( ! var13 . hasNext ( ) ) {
continue label86 ;
}
} else if ( faultInfo . getEndDateTo ( ) ! = null & & faultInfo . getEndDateTo ( ) ! = "" ) {
if ( compare ( backInfo . getCreateTime ( ) , faultInfo . getEndDateTo ( ) ) ) {
faultInfo . setBackNum ( backInfo . getBackNum ( ) ) ;
faultInfo . setUpdater ( backInfo . getCreater ( ) ) ;
//faultInfo.setDoctorInCharge(backInfo.getDoctorInCharge());
//System.out.println(backInfo.getCreateTime());
if ( StringUtils . isNotBlank ( backInfo . getEndDateTo ( ) ) ) {
faultInfo . setUpdateTime ( backInfo . getEndDateTo ( ) ) ;
} else {
faultInfo . setUpdateTime ( backInfo . getStartDateTo ( ) ) ;
}
faultInfo . setBackContent ( backInfo . getContent ( ) ) ;
break ;
backInfo = ( Emr_Fault_Vo ) var13 . next ( ) ;
} while ( backInfo . getCreateTime ( ) = = null ) ;
} while ( backInfo . getCreateTime ( ) = = "" ) ;
if ( backInfo . getStartDateTo ( ) ! = null & & backInfo . getStartDateTo ( ) ! = "" & & backInfo . getEndDateTo ( ) ! = null & & backInfo . getEndDateTo ( ) ! = "" ) {
SimpleDateFormat ft = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
Date nowTime = ft . parse ( faultInfo . getCreateTime ( ) ) ;
Date startTime = ft . parse ( backInfo . getStartDateTo ( ) ) ;
Date endTime = ft . parse ( backInfo . getEndDateTo ( ) ) ;
if ( isEffectiveDate ( nowTime , startTime , endTime ) ) {
faultInfo . setStartDateTo ( backInfo . getStartDateTo ( ) ) ;
faultInfo . setEndDateTo ( backInfo . getEndDateTo ( ) ) ;
faultInfo . setBackNum ( backInfo . getBackNum ( ) ) ;
faultInfo . setUpdater ( backInfo . getCreater ( ) ) ;
if ( StringUtils . isNotBlank ( backInfo . getEndDateTo ( ) ) ) {
faultInfo . setUpdateTime ( backInfo . getEndDateTo ( ) ) ;
} else {
faultInfo . setUpdateTime ( backInfo . getCreateTime ( ) ) ;
}
} else if ( faultInfo . getStartDateTo ( ) ! = null & & faultInfo . getStartDateTo ( ) ! = "" ) {
if ( compare ( faultInfo . getStartDateTo ( ) , backInfo . getCreateTime ( ) ) ) {
faultInfo . setBackNum ( backInfo . getBackNum ( ) ) ;
faultInfo . setUpdater ( backInfo . getCreater ( ) ) ;
//faultInfo.setDoctorInCharge(backInfo.getDoctorInCharge());
if ( StringUtils . isNotBlank ( backInfo . getEndDateTo ( ) ) ) {
faultInfo . setUpdateTime ( backInfo . getEndDateTo ( ) ) ;
} else {
faultInfo . setUpdateTime ( backInfo . getStartDateTo ( ) ) ;
}
faultInfo . setBackContent ( backInfo . getContent ( ) ) ;
break ;
faultInfo . setBackContent ( backInfo . getContent ( ) ) ;
continue label86 ;
}
} else if ( faultInfo . getEndDateTo ( ) ! = null & & faultInfo . getEndDateTo ( ) ! = "" ) {
if ( this . compare ( backInfo . getCreateTime ( ) , faultInfo . getEndDateTo ( ) ) ) {
faultInfo . setBackNum ( backInfo . getBackNum ( ) ) ;
faultInfo . setUpdater ( backInfo . getCreater ( ) ) ;
if ( StringUtils . isNotBlank ( backInfo . getEndDateTo ( ) ) ) {
faultInfo . setUpdateTime ( backInfo . getEndDateTo ( ) ) ;
} else {
faultInfo . setUpdateTime ( backInfo . getCreateTime ( ) ) ;
}
faultInfo . setBackContent ( backInfo . getContent ( ) ) ;
continue label86 ;
}
} else if ( faultInfo . getStartDateTo ( ) ! = null & & faultInfo . getStartDateTo ( ) ! = "" & & this . compare ( faultInfo . getStartDateTo ( ) , backInfo . getCreateTime ( ) ) ) {
faultInfo . setBackNum ( backInfo . getBackNum ( ) ) ;
faultInfo . setUpdater ( backInfo . getCreater ( ) ) ;
if ( StringUtils . isNotBlank ( backInfo . getEndDateTo ( ) ) ) {
faultInfo . setUpdateTime ( backInfo . getEndDateTo ( ) ) ;
} else {
faultInfo . setUpdateTime ( backInfo . getCreateTime ( ) ) ;
}
faultInfo . setBackContent ( backInfo . getContent ( ) ) ;
continue label86 ;
}
}
}
}
}
}
ThreadExcelUtils utils = new ThreadExcelUtils ( fileName , "" , header , fileNames ) ;
/ * System . out . println ( "开始执行导出......." ) ;
long start = System . currentTimeMillis ( ) ; * /
String result = utils . exportExcelToFilePath ( response , utils . listConvert ( list ) ) ;
/ * long end = System . currentTimeMillis ( ) ;
System . out . println ( "耗时:" + ( end - start ) / 1000 + "秒" ) ; * /
ThreadExcelUtils utils = new ThreadExcelUtils ( fileName , "" , header , fileNames ) ;
utils . exportExcelToFilePath ( response , utils . listConvert ( list ) ) ;
}
public boolean compare ( String time1 , String time2 ) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;