| 
					
				 | 
			
			
				@ -19,6 +19,7 @@ import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseUserDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthUpload.dao.BaseDoctorMemberDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.PageEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.PwdUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.idcard.IdCardUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -44,6 +45,7 @@ import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.OutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.DecimalFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -323,7 +325,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportUploadDO createDailyReport(String doctorId,String report_date,Integer leaveState,String leaveHour,String week_name,String totalHour, List<BaseDailyReportDetailDO> detailDOList,String reportItemId) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportUploadDO createDailyReport(String doctorId,String report_date,Integer leaveState,String leaveHour,String week_name,String totalHour, List<BaseDailyReportDetailDO> detailDOList) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==doctorDO){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -348,14 +350,6 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportDetailDao.deleteByReportIdAndState(dailyReportUploadDO.getId(),0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(reportItemId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDailyReportItemDO itemDO = reportItemDao.findOne(reportItemId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null==itemDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("上传失败,关联日报项目不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            dailyReportUploadDO.setReportItemId(reportItemId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            dailyReportUploadDO.setReportItemName(itemDO.getTitle()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        dailyReportUploadDO.setDoctorId(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        dailyReportUploadDO.setDoctorName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        dailyReportUploadDO.setReportDate(report_date); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -454,6 +448,8 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doubt = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setVerificationTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setVerificationUser(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setVerificationUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportDetailDao.save(detailDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(dailyReportUploadDO.getId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1730,6 +1726,12 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(completionHour)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setCompletionHour(completionHour); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //查询出关联的日报详情,计算完成时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select IFNULL(sum(actual_completion_hour),'0') from base_daily_report_detail " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " where report_item_id='"+item_id+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String completionHoursql = jdbcTemplate.queryForObject(sql,String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setCompletionHour(completionHoursql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(completionTime)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setCompletionTime(DateUtil.strToDate(completionTime)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1786,7 +1788,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 管理员获取所有日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<BaseDailyReportItemDO> findReportItemListAdmin(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<BaseDailyReportItemDO> findReportItemListAdmin(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select * from base_doctor_role where doctor_code='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (userRoles.size()==0){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1810,7 +1812,10 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.end_time<='"+end_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUser)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.create_user='"+createUser+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.create_user = '"+createUser+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUserName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.create_user_name like '%"+createUserName+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDailyReportItemDO tmp:itemDOS){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1823,7 +1828,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 员工获取所有日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<BaseDailyReportItemDO> findReportItemList(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<BaseDailyReportItemDO> findReportItemList(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "select i.* from base_daily_report_item i INNER JOIN base_daily_report_item_members mem on i.id = mem.report_item_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "where i.del=1 and mem.del=1 and mem.user_id='"+user+"' " ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1843,7 +1848,10 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.end_time<='"+end_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUser)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.create_user='"+createUser+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.create_user = '"+createUser+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUserName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.create_user_name like '%"+createUserName+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += " GROUP BY i.id "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemDO> itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1854,4 +1862,160 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return itemDOS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 管理员日报项目统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public PageEnvelop statisticReportItemList(String user, String title, String content, Integer state, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                               String begin_time, String end_time, String createUser,String createUserName, Integer page, Integer size) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        page = page>0?page-1:0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select * from base_doctor_role where doctor_code='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (userRoles.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemDO> itemDOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlCondition = "  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlList = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " from base_daily_report_item i  LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " where i.del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlCount = " select count(distinct i.id) from base_daily_report_item i where i.del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition +=" and i.title like '%"+title+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(content)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition +=" and i.content like '%"+content+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null!=state){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.state='"+state+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(begin_time)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.begin_time>='"+begin_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(end_time)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.end_time<='"+end_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUser)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.create_user = '"+createUser+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUserName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.create_user_name like '%"+createUserName+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sqlList +=sqlCondition+ " group by i.id order by i.create_time,i.id desc limit "+page*size+","+size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        itemDOS = jdbcTemplate.query(sqlList,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = jdbcTemplate.queryForObject(sqlCount+sqlCondition,Long.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return PageEnvelop.getSuccessListWithPage("查询成功",itemDOS,page,size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String,Object>> statisticReportItemById(String user,String item_id,Integer type) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select * from base_doctor_role where doctor_code='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (userRoles.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(1==type){//天 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,DATE_FORMAT(de.create_time,'%Y-%m-%d') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (2==type){//按周 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,DATE_FORMAT(de.create_time,'%Y%v') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (3==type){//月 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,DATE_FORMAT(de.create_time,'%Y-%m') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("查询失败,请检查传入参数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //计算平均值和占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (list.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OptionalDouble avg =  list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).average(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Double totalHour =  list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).sum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Double avgValue = avg.getAsDouble(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map<String,Object>tmp :list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put("avgValue",avgValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Double completionHour = Double.valueOf(tmp.get("completionHour").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put("timeRange",getRangeDouble(completionHour,totalHour)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String,Object>> statisticReportItemMembersById(String user,String item_id,Integer type) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select * from base_doctor_role where doctor_code='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (userRoles.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(0==type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id order by completionHour desc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(1==type){//天 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y-%m-%d') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (2==type){//按周 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y%v') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (3==type){//月 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "from base_daily_report_item i LEFT JOIN base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where 1=1 and i.id='"+item_id+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y-%m') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("查询失败,请检查传入参数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //计算平均值和占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (list.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OptionalDouble avg =  list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).average(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Double totalHour =  list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).sum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Double avgValue = avg.getAsDouble(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map<String,Object>tmp :list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put("avgValue",avgValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Double completionHour = Double.valueOf(tmp.get("completionHour").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put("timeRange",getRangeDouble(completionHour,totalHour)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public double getRangeDouble(Double first, Double second) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (second == 0 && first > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //如果分母为0 分子不为0 返回100% 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (second == 0 && first == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //如果分母为0 分子为0 返回0% 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        double result =  (first * 100.0) / second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String filesize = df.format(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Double.parseDouble(filesize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |