| 
					
				 | 
			
			
				@ -2,9 +2,8 @@ package com.yihu.jw.dailyReport.service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.dailyReport.dao.BaseDailyReportDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.dailyReport.dao.BaseDailyReportLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.dailyReport.dao.BaseDailyReportUploadDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.dailyReport.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorRoleDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -14,16 +13,16 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.WxAccessTokenDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.WxPushLogDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.WxTemplateConfigDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.dailyReport.BaseDailyReportDetailDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.dailyReport.BaseDailyReportLogDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.dailyReport.BaseDailyReportUploadDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.dailyReport.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.file.FileUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.idcard.IdCardUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.wechat.WeixinMessagePushUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.StringUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -32,8 +31,13 @@ import com.yihu.jw.wechat.dao.WxTemplateConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.enterprise.EnterpriseService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.enterprise.dao.WxEnterpriseUserDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.service.WxAccessTokenService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import jxl.Workbook; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import jxl.write.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.ss.util.WorkbookUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.jsoup.Jsoup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.jsoup.nodes.Document; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.BeanUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -41,12 +45,18 @@ import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.domain.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.domain.PageRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.BeanPropertyRowMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.OutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.URLEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.DecimalFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by Bing on 2022/7/25. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -86,6 +96,10 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String wechatId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private EnterpriseService enterpriseService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDailyReportItemDao reportItemDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDailyReportItemMembersDao reportItemMembersDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static Logger logger = LoggerFactory.getLogger(DailyReportUploadService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -329,7 +343,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (1==leaveState){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNotBlank(leaveHour)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (Integer.parseInt(leaveHour)<8&&detailDOList.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (Double.parseDouble(leaveHour)<8&&detailDOList.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    throw new Exception("上传失败,请假未满8小时需要提交完成内容"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -356,6 +370,43 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        dailyReportUploadDO = dailyReportUploadDao.save(dailyReportUploadDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDailyReportDetailDO tmp :detailDOList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            tmp.setReportId(dailyReportUploadDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (tmp.isReportItemFlag()==true){//新则自建关联项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String title = tmp.getReportItemTitle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDailyReportItemDO reportItemDO = new BaseDailyReportItemDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setState(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setProjectCode(tmp.getProjectCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setProjectName(tmp.getProjectName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setTitle(title); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setContent(tmp.getReportContent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setBeginTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setEndTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setCreateUser(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setCreateUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    reportItemDO.setDept(doctorHospitalDOS.get(0).getDeptCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    reportItemDO.setDeptName(doctorHospitalDOS.get(0).getDeptName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO = reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setReportItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setUserId(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemMembersDao.save(membersDOTmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setReportItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setReportItemName(title); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(tmp.getReportItemId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=reportItemDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (StringUtils.isBlank(reportItemDO.getAcBeginTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    reportItemDO.setAcBeginTime(DateUtil.getStringDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (detailDOList.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportDetailDao.save(detailDOList); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -372,22 +423,29 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (boosSenderIds.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boosID=boosSenderIds.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorRoleDO> roleDOS = doctorRoleDao.findByDoctorCode(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (roleDOS.size()==0){//普通员工 需要查询对应上级人员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDoctorHospitalDO doctorHospitalDO = doctorHospitalDOS.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql = " select role.doctor_code from base_doctor_role role INNER JOIN base_doctor_hospital dh  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "on role.doctor_code = dh.doctor_code and dh.dept_code='"+doctorHospitalDO.getDeptCode()+"'  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "where role.role_code='deptAdmin' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<String> deptAdmins = jdbcTemplate.queryForList(sql,String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (deptAdmins.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    senderID = deptAdmins.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    senderID=boosID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //优先查询核实人指定表无记录再按默认逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql = " select verify_user from base_daily_report_verify where upload_user='"+doctorId+"' and del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> verifyList = jdbcTemplate.queryForList(sql,String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (verifyList.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            senderID = verifyList.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDoctorRoleDO> roleDOS = doctorRoleDao.findByDoctorCode(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (roleDOS.size()==0){//普通员工 需要查询对应上级人员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    BaseDoctorHospitalDO doctorHospitalDO = doctorHospitalDOS.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sql = " select role.doctor_code from base_doctor_role role INNER JOIN base_doctor_hospital dh  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            "on role.doctor_code = dh.doctor_code and dh.dept_code='"+doctorHospitalDO.getDeptCode()+"'  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            "where role.role_code='deptAdmin' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List<String> deptAdmins = jdbcTemplate.queryForList(sql,String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (deptAdmins.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        senderID = deptAdmins.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        senderID=boosID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else {//部门管理员 发送对象为老板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                senderID = boosID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else {//部门管理员 发送对象为老板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            senderID = boosID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(senderID)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO remindDoctorDO = baseDoctorDao.findById(senderID); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -429,6 +487,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportUploadDO verifiedItem(String doctorId,String reportId,List<BaseDailyReportDetailDO> detailDOList) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String nowDate = DateUtil.getStringDateShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==doctorDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw  new Exception("无权限审核"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -437,13 +496,18 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==dailyReportUploadDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw  new Exception("核实记录未查询到"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (DateUtil.getDays(nowDate,dailyReportUploadDO.getReportDate())>7){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw  new Exception("上传记录已超过7天无法再次操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(detailDOList.size()>0){//无完成事项内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boolean doubt  =false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (BaseDailyReportDetailDO tmp:detailDOList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (1==tmp.getDoubt()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (1==tmp.getDoubt()&&(null==tmp.getDoubtState()||0==tmp.getDoubtState())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doubt = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setVerificationTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setVerificationUser(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.setVerificationUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportDetailDao.save(detailDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(dailyReportUploadDO.getId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -577,27 +641,38 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询成员的日报上传记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctorId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param pageSize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDateStr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDateStr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Page<BaseDailyReportUploadDO> selectReportByDoctorId(String doctorId,String startDate,String endDate,Integer page,Integer pageSize){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        PageRequest pageRequest = new PageRequest(page - 1, pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Page<BaseDailyReportUploadDO> list = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(startDate)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list = dailyReportUploadDao.selectDailyReportByDoctorAndDateAndPage(doctorId, startDate, endDate, pageRequest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list = dailyReportUploadDao.selectDailyReportByDoctor(doctorId, pageRequest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String,List<BaseDailyReportUploadDO>>> selectReportByDoctorId(String doctorId,String startDateStr,String endDateStr){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportUploadDO> list = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        list = dailyReportUploadDao.selectDailyReportByDoctorAndDate(doctorId, startDateStr, endDateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDailyReportUploadDO tmp:list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(tmp.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            tmp.setDetailDOList(detailDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportLogDO> dailyReportLogDOList = dailyReportLogDao.findByReportId(tmp.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            tmp.setDailyReportLogDOList(dailyReportLogDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,List<BaseDailyReportUploadDO>> reportList = list.stream().collect(Collectors.groupingBy(BaseDailyReportUploadDO::getReportDate)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date endDate =DateUtil.strToDate(endDateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date startDate =DateUtil.strToDate(startDateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,List<BaseDailyReportUploadDO>>> result = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (;;){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String,List<BaseDailyReportUploadDO>> tmp = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String timeStr = DateUtil.dateToStrShort(endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (reportList.get(timeStr)!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put(timeStr,reportList.get(timeStr)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put(timeStr,new ArrayList<>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.add(tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!startDate.before(endDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endDate = DateUtil.getPreDays(endDate,-1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -607,6 +682,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportUploadDO selectReportById(String reportId) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String nowDate = DateUtil.getStringDateShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDailyReportUploadDO reportUploadDO = dailyReportUploadDao.findOne(reportId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==reportUploadDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("未找到日报记录"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -616,6 +692,11 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportLogDO> dailyReportLogDOList = dailyReportLogDao.findByReportId(reportUploadDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportUploadDO.setDailyReportLogDOList(dailyReportLogDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (DateUtil.getDays(nowDate,reportUploadDO.getReportDate())>7){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportUploadDO.setVerifiedRepeatFlag(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportUploadDO.setVerifiedRepeatFlag(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return reportUploadDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -882,7 +963,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info("deptSql=="+deptSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(deptSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (Map<String,Object> deptMap:mapList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String day = DateUtil.getTwoDay(endDate, startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String day = DateUtil.getWorkDays(endDate, startDate)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer doctorTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer total=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer yishangbaoTotal=0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -935,7 +1016,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONArray selectListByTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONArray selectListByTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name,Integer doubtType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date startTime = DateUtil.strToDateShort(startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date endDateTime = DateUtil.strToDateShort(endDate); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -971,6 +1052,9 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doctorSql += " and d.id not in(select d1.doctor_id from base_doctor_daily_report_upload d1 where 1=1 and d1.report_date >='" + date + "' and d1.report_date<='" + date + "' ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=doubtType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorSql += " and d.id in(select d1.doctor_id from base_doctor_daily_report_upload d1 inner join base_daily_report_detail rd on d1.id = rd.report_id and rd.doubt_type='"+doubtType+"' where 1=1 and d1.report_date >='" + date + "' and d1.report_date<='" + date + "' ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(state)) {//核实状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorSql +=" and d.id in(select d1.doctor_id from base_doctor_daily_report_upload d1 where 1=1 and d1.report_date >='" + date + "' and d1.report_date<='" + date +"' and d1.state='"+state+"' ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1004,7 +1088,8 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name      total 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONArray selectListInfoByTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONArray selectListInfoByTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                           Integer doubtType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date startTime = DateUtil.strToDateShort(startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date endDateTime = DateUtil.strToDateShort(endDate); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1040,6 +1125,9 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doctorSql += " and d.id not in(select d1.doctor_id from base_doctor_daily_report_upload d1 where 1=1 and d1.report_date >='" + date + "' and d1.report_date<='" + date + "' ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=doubtType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorSql += " and d.id in(select d1.doctor_id from base_doctor_daily_report_upload d1 inner join base_daily_report_detail rd on d1.id = rd.report_id and rd.doubt_type='"+doubtType+"' where 1=1 and d1.report_date >='" + date + "' and d1.report_date<='" + date + "' ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(state)) {//核实状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorSql += " and d.id in(select d1.doctor_id from base_doctor_daily_report_upload d1 where 1=1 and d1.report_date >='" + date + "' and d1.report_date<='" + date + "' and d1.state='" + state + "' ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1088,48 +1176,163 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return array; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//     * 报表导出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    public JSONArray pushListWriteDailyReport(OutputStream os, String startDate, String endDate, String dept) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        List<String> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Date startTime = DateUtil.strToDateShort(startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Date endDateTime = DateUtil.strToDateShort(endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        int i=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        do{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            startTime = DateUtil.getPreDays(startTime, i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            String str = DateUtil.dateToStrShort(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            list.add(str); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        }while (startTime.before(endDateTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        JSONArray array = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        for (i = 0; i < list.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            String date = list.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            String doctorSql = " select id,name,job_title_name from base_doctor d where d.del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            if (StringUtils.isNoneBlank(dept)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                doctorSql += " and d.id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            List<Map<String, Object>> mapList = jdbcTemplate.queryForList(doctorSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            for (Map<String, Object> map : mapList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                String id = map.get("id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                if (baseDoctorHospitalDOS != null && baseDoctorHospitalDOS.size() != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    map.put("deptName", baseDoctorHospitalDOS.get(0).getDeptName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            object.put("time", date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            object.put("list", mapList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            array.add(object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        pushListWritePriceTotal(os, array, startDate, endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        return array; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取存疑列表列表的时间及数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param dept 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param idType 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doubtType 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONArray selectListByTotalDoubt(String dept, String idType, String startDate, String endDate, String name,Integer doubtType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date startTime = DateUtil.strToDateShort(startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date endDateTime = DateUtil.strToDateShort(endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int i=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        do{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startTime = DateUtil.getPreDays(startTime, i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String str = DateUtil.dateToStrShort(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list.add(str); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            i=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }while (startTime.before(endDateTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONArray array = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for ( i = 0; i < list.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String date = list.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String doubtSql = " select count(distinct rd.id) as 'total' from base_doctor_daily_report_upload up " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " inner join base_doctor d on up.doctor_id = d.id and d.del=1 and d.identity=0 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " inner join base_daily_report_detail rd on up.id = rd.report_id  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "  where rd.doubt=1 and up.report_date >='" + date + "' and up.report_date<='" + date + "' and up.state=1  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String deptCondition = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(dept)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                deptCondition += " (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(idType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doubtSql += " and  d.id_type = '" + idType + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(deptCondition)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doubtSql += " and d.id IN " + deptCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=doubtType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (0==doubtType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doubtSql += " and rd.doubt_type is not null "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doubtSql += " and rd.doubt_type='"+doubtType+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doubtSql += " and d.name LIKE  '%" + name + "%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> map = jdbcTemplate.queryForMap(doubtSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer total = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (map != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (map.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    total = Integer.parseInt(map.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("time", date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("total", total); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            array.add(object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return array; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取存疑列表的具体人员信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param dept 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param idType 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONArray selectListInfoByTotalDoubt(String dept, String idType, String startDate, String endDate, String name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                           Integer doubtType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date startTime = DateUtil.strToDateShort(startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date endDateTime = DateUtil.strToDateShort(endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int i=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        do{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startTime = DateUtil.getPreDays(startTime, i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String str = DateUtil.dateToStrShort(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list.add(str); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            i=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }while (startTime.before(endDateTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONArray array = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (i = 0; i < list.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String date = list.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String doubtSql = " select up.doctor_id,up.doctor_name,rd.id detailId,rd.report_id uploadId,rd.sort,rd.report_content, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " rd.completion_schedule,rd.actual_completion_hour,rd.completion_hour, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " rd.state,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time,rd.remark,rd.doubt,rd.doubt_state, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " rd.doubt_remark,rd.report_item_id,rd.report_item_name,rd.verification_user_name,rd.doubt_type " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " from base_doctor_daily_report_upload up " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " inner join base_doctor d on up.doctor_id = d.id and d.del=1 and d.identity=0 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " inner join base_daily_report_detail rd on up.id = rd.report_id  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "  where rd.doubt=1 and up.report_date >='" + date + "' and up.report_date<='" + date + "' and up.state=1  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String deptCondition = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(dept)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                deptCondition += " (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(idType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doubtSql += "   and d.id_type = '" + idType + "')"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(deptCondition)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doubtSql += " and d.id IN " + deptCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=doubtType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(0==doubtType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doubtSql += " and rd.doubt_type is not null "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    doubtSql += " and rd.doubt_type='"+doubtType+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doubtSql += " and d.name LIKE  '%" + name + "%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<Map<String, Object>> mapList = jdbcTemplate.queryForList(doubtSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map<String, Object> map : mapList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String id = map.get("doctor_id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<BaseDoctorHospitalDO> hospitalDOList = baseDoctorHospitalDao.findByDoctorCode(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map.put("deptInfo", hospitalDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String stateMap = map.get("state").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String doubtState = map.get("doubt_state")==null?"":map.get("doubt_state").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String doubt_type = map.get("doubt_type")==null?"":map.get("doubt_type").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if("1".equals(stateMap)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map.put("verifiedState", "已核实"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map.put("verifiedState", "未核实"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map.put("doubt_state", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (StringUtils.isNotBlank(doubtState)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if("1".equals(doubtState)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put("doubt_state", "存疑已核实"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put("doubt_state", "存疑未核实"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map.put("doubt_type", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (StringUtils.isNotBlank(doubt_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if("1".equals(doubt_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put("doubt_type", "不饱和存疑"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } else if ("2".equals(doubt_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put("doubt_type", "效率存疑"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put("doubt_type", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("time", date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("list", mapList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            array.add(object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return array; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1353,7 +1556,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startDate = DateUtil.getFristDayOfMonth(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endDate = DateUtil.getLastDayOfMonth(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String day = DateUtil.getTwoDay(endDate, startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String day = DateUtil.getWorkDays(endDate, startDate)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and d.identity=0  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer total = 0;//总人次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlCondition = ""; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1383,6 +1586,8 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer weishangbaoTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer verifiedTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer notVerifiedTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer baoheDoubt = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer xiaolvDoubt = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //已上传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> yishangchaungMap = jdbcTemplate.queryForMap(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (yishangchaungMap != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1437,19 +1642,54 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (level==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            notVerifiedTotalSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //正常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> yichangMap = jdbcTemplate.queryForMap(notVerifiedTotalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (yichangMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (yichangMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                notVerifiedTotal = Integer.parseInt(yichangMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //不饱和存疑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String baoheTotalSql = "select COUNT(de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " on de.report_id = d.id  where  de.doubt_type=1  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(startDate)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baoheTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (level==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baoheTotalSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> baoheMap = jdbcTemplate.queryForMap(baoheTotalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (baoheMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (baoheMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baoheDoubt = Integer.parseInt(baoheMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //效率存疑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String xiaolvTotalSql = "select COUNT(de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " on de.report_id = d.id  where  de.doubt_type=2  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(startDate)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xiaolvTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (level==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xiaolvTotalSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> xiaolvMap = jdbcTemplate.queryForMap(xiaolvTotalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (xiaolvMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (xiaolvMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                xiaolvDoubt = Integer.parseInt(xiaolvMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("total", total);//总人次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("yishangbaoTotal", yishangbaoTotal);//已上报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("weishangbaoTotal", weishangbaoTotal);//未上报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("verifiedTotal", verifiedTotal);//已核实 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("notVerifiedTotal", notVerifiedTotal);//未核实 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("shangchuanTotal", shangchuanTotal);//上传总次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("baoheDoubt", baoheDoubt);//不饱和存疑数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("xiaolvDoubt", xiaolvDoubt);//效率存疑数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("doubtTotal", baoheDoubt+xiaolvDoubt);//存疑总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1466,7 +1706,7 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject selectHeaderTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String day = DateUtil.getTwoDay(endDate, startDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String day = DateUtil.getWorkDays(endDate, startDate)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 and d.identity=0 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer total = 0;//总人次 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1511,6 +1751,8 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer notVerified=0;//未核实 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer verified=0;//已核实 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer shangchuanTotal=0;//上传总次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer baoheDoubt=0;//饱和度存疑次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer xiaolvDoubt=0;//效益存疑数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(startDate)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1554,24 +1796,41 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //已核实数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String verifiedSql = "select COUNT(DISTINCT d.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " on d.id = de.report_id where de.state=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //不饱和存疑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String bubaoheSql = "select COUNT(DISTINCT de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " on d.id = de.report_id where de.state=1 and de.doubt_type=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //效率存疑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String xiaolvSql = "select COUNT(DISTINCT de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " on d.id = de.report_id where de.state=1 and de.doubt_type=2 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(startDate)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            notVerifiedSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            verifiedSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            bubaoheSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xiaolvSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(deptCondition)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            notVerifiedSql += " and d.doctor_id IN " + deptCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            verifiedSql += " and d.doctor_id IN " + deptCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            bubaoheSql += " and d.doctor_id IN " + deptCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xiaolvSql += " and d.doctor_id IN " + deptCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(idTypeCondition)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            notVerifiedSql += " and d.doctor_id IN " + idTypeCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            verifiedSql += " and d.doctor_id IN " + idTypeCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            bubaoheSql += " and d.doctor_id IN " + idTypeCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xiaolvSql += " and d.doctor_id IN " + idTypeCondition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            notVerifiedSql += " and d.doctor_name like '%" + name + "%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            verifiedSql += " and d.doctor_name like '%" + name + "%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            bubaoheSql += " and d.doctor_name like '%" + name + "%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xiaolvSql += " and d.doctor_name like '%" + name + "%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        notVerified = jdbcTemplate.queryForObject(notVerifiedSql,Integer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        verified = jdbcTemplate.queryForObject(verifiedSql,Integer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baoheDoubt = jdbcTemplate.queryForObject(bubaoheSql,Integer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        xiaolvDoubt = jdbcTemplate.queryForObject(xiaolvSql,Integer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //上传总次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        shangchuanTotal = jdbcTemplate.queryForObject(shangchuanTotalSql,Integer.class); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1582,7 +1841,922 @@ public class DailyReportUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("notVerified", notVerified);//未核实数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("verified", verified);//已核实数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("shangchuanTotal", shangchuanTotal);//上传总次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("baoheDoubt", baoheDoubt);//饱和度存疑次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("xiaolvDoubt", xiaolvDoubt);//效率存疑次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("doubtTotal", baoheDoubt+xiaolvDoubt);//存疑总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /*************************************日报项目相关******************************************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 新增日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportItemDO newReportItem(String user,String projectCode,String projectName,String title,String content,String begin_time,String end_time,Integer member_type,String members) 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("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = baseDoctorDao.findById(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==doctorDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("用户不存在无权操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDailyReportItemDO reportItemDO = new BaseDailyReportItemDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setState(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setProjectCode(projectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setProjectName(projectName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setTitle(title); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setContent(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setBeginTime(begin_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setEndTime(end_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setCreateUser(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setCreateUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorHospitalDO> doctorHospitalDOs = baseDoctorHospitalDao.findByDoctorCode(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null !=doctorHospitalDOs&&doctorHospitalDOs.size()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setDept(doctorHospitalDOs.get(0).getDeptCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setDeptName(doctorHospitalDOs.get(0).getDeptName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO = reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemMembersDO> membersDOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (1==member_type){//指定成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<String> membersList = Arrays.asList(members.split(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String tmp:membersList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDoctorDO docMemberTmp = baseDoctorDao.findById(tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (null!=docMemberTmp){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setReportItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setUserId(tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setUserName(docMemberTmp.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOS.add(membersDOTmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (2==member_type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<String> depts = Arrays.asList(members.split(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String dept:depts){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql =  " select distinct doc.id,doc.name from base_doctor doc inner join base_doctor_hospital dh  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "on doc.id = dh.doctor_code and doc.del=1 and dh.del=1  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "where dh.dept_code='"+dept+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<Map<String,Object>> membersList = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (Map<String,Object> tmp:membersList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String docTmp = tmp.get("id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String docNameTmp = tmp.get("name").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setReportItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setUserId(docTmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setUserName(docNameTmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOTmp.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    membersDOS.add(membersDOTmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("系统异常,请稍后重试"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (membersDOS.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemMembersDao.save(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setItemMembersDOList(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return reportItemDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 编辑日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportItemDO modifyReportItem(String user,String item_id,String projectCode,String projectName,String title,String content,Integer state,String begin_time,String end_time,String members) 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("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = baseDoctorDao.findById(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==doctorDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("用户不存在无权操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==reportItemDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("日报项目不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (1==reportItemDO.getState()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("日报项目已完成无法修改"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setState(state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setProjectCode(projectCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setProjectName(projectName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setTitle(title); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setContent(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setBeginTime(begin_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setEndTime(end_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateUser(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorHospitalDO> doctorHospitalDOs = baseDoctorHospitalDao.findByDoctorCode(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null !=doctorHospitalDOs&&doctorHospitalDOs.size()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setDept(doctorHospitalDOs.get(0).getDeptCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setDeptName(doctorHospitalDOs.get(0).getDeptName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO = reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemMembersDO> membersDOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemMembersDao.deleteAllByReportItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> membersList = Arrays.asList(members.split(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String tmp:membersList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO docMemberTmp = baseDoctorDao.findById(tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=docMemberTmp){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setReportItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setUserId(tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setUserName(docMemberTmp.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOTmp.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                membersDOS.add(membersDOTmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (membersDOS.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemMembersDao.save(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setItemMembersDOList(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return reportItemDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *管理员完成日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportItemDO completeReportItem(String user,String item_id,String completionUser,String completionHour,String completionTime) 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("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = baseDoctorDao.findById(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==doctorDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("用户不存在无权操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==reportItemDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("日报项目不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setState(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(completionUser)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO completionUserDO = baseDoctorDao.findById(completionUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null!=completionUserDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setCompletionUser(completionUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportItemDO.setCompletionUserName(completionUserDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("完成人不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setCompletionUser(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setCompletionUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(completionHour)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            reportItemDO.setCompletionHour(completionHour); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //查询出关联的日报详情,计算完成时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select sum(IFNULL(actual_completion_hour,IFNULL(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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateUser(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(reportItemDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setItemMembersDOList(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return reportItemDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 管理员删除日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public boolean delReportItem(String user,String item_id) 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("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO doctorDO = baseDoctorDao.findById(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==doctorDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("用户不存在无权操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==reportItemDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("日报项目不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setDel(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateUser(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateUserName(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDao.save(reportItemDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询日报项目详情 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseDailyReportItemDO  findReportItemById(String item_id) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null==reportItemDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("日报项目不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select m.*,IFNULL(A.completion_hour,0) completion_hour,dh.dept_code,dh.dept_name from base_daily_report_item_members m  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "LEFT JOIN ( " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "select up.doctor_id,SUM(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) completion_hour " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " from base_doctor_daily_report_upload up " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "INNER JOIN base_daily_report_detail rd on up.id = rd.report_id and rd.report_item_id='"+item_id+"' )A on m.user_id = A.doctor_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "INNER JOIN base_doctor_hospital dh on m.user_id = dh.doctor_code and dh.del=1 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " where m.del=1 and m.report_item_id='"+item_id+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemMembersDO> membersDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemMembersDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        reportItemDO.setItemMembersDOList(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return reportItemDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 管理员获取所有日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDailyReportItemDO> itemDOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql = " select i.* from base_daily_report_item i where 1=1 and i.del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and i.title like '%"+title+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(content)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and i.content like '%"+content+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null!=state){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.state='"+state+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(begin_time)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.begin_time>='"+begin_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(end_time)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.end_time<='"+end_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            tmp.setItemMembersDOList(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return itemDOS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 员工获取所有日报项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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+"' " ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and i.title like '%"+title+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(content)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and i.content like '%"+content+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null!=state){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.state='"+state+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(begin_time)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.begin_time>='"+begin_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(end_time)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and i.end_time<='"+end_time+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDailyReportItemDO tmp:itemDOS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            tmp.setItemMembersDOList(membersDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return itemDOS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 管理员日报项目统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String,Object>> statisticReportProjectList(String user, String projectCode,String startDate, String endDate) 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("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlCondition = "  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(startDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and up.report_date>='"+startDate+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(endDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and up.report_date<='"+endDate+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(projectCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.project_code='"+projectCode+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlList = "  select dict.dict_code project_code,dict.dict_value projectName,IFNULL( A.completionHour,0) 'completionHour', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " IFNULL(A.doctorTotal,0) 'doctorTotal' from wlyy_hospital_sys_dict dict " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " Left JOIN (" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " count(distinct up.doctor_id) as doctorTotal 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 up.id = de.report_id  and up.report_date>='2022-08-01' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  and up.report_date<='2022-08-13'  where i.del=1 "+sqlCondition+" GROUP BY i.project_code )A " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "on A.project_code = dict.dict_code where dict.dict_name='daily_report_project' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(projectCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlList +=" and dict.dict_code='"+projectCode+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sqlList += "  order by completionHour desc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return jdbcTemplate.queryForList(sqlList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 管理员日报项目统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public PageEnvelop statisticReportItemList(String user, String projectCode,String title, String content, Integer state, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                               String startDate, String endDate, 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 updateTimeSql=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(startDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            updateTimeSql += " and up.report_date>='"+startDate+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(endDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            updateTimeSql += " and up.report_date<='"+endDate+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlList = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,count(distinct up.doctor_id) as doctorTotal " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " 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 up.id = de.report_id "+updateTimeSql+" 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(createUser)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.create_user = '"+createUser+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(createUserName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.create_user_name like '%"+createUserName+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(projectCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCondition += " and i.project_code='"+projectCode+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " count(distinct up.doctor_id) as doctorTotal 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 up.id = de.report_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,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " count(distinct up.doctor_id) as doctorTotal 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 up.id = de.report_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,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " count(distinct up.doctor_id) as doctorTotal 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 up.id = de.report_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,String member) 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("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String memberSql = " "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(member)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            memberSql = " and up.doctor_id='"+member+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String searchTimeFormat = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(0==type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_id,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time'," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'searchTime' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "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+"' " +memberSql+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id order by completionHour desc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y-%m-%d') "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else if(1==type){//天 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_id,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'searchTime' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "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 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y-%m-%d') "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (2==type){//按周 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_id,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "DATE_FORMAT(de.create_time,'%Y%v') as 'searchTime' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "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+"' " +memberSql+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y%v') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y%v') "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (3==type){//月 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_id,up.doctor_name doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "DATE_FORMAT(de.create_time,'%Y-%m') as 'searchTime' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "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+"' " +memberSql+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y-%m') order by time asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y-%m') "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String searchTime =tmp.get("searchTime").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String doctorId = tmp.get("doctor_id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql = " select up.doctor_name,up.report_date,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        " from base_daily_report_detail de  INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "where  de.report_item_id='"+item_id+"' and up.doctor_id='"+doctorId+"'  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "and "+searchTimeFormat+"='"+searchTime+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "GROUP BY up.report_date ORDER BY up.report_date asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<Map<String,Object>> timeUseList = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tmp.put("timeUseList",timeUseList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 导出项目计划周报月报用时情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param user 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 1周报2月报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param date 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void getProjectItemReport(HttpServletResponse response, String user, Integer type, String date) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //判断导出人权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select * from base_doctor_role where doctor_code='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean adminFlag = false;//true 为总管理员 false为部门管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String startTime = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String endTime = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (userRoles.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String role_code = userRoles.get(0).get("role_code").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ("admin".equals(role_code)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                adminFlag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if ("deptAdmin".equals(role_code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                adminFlag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(1==type){//周报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           //获取日期对应月、周范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startTime =  DateUtil.getMondayOfThisWeek(DateUtil.strToDate(date))+" 00:00:00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endTime =  DateUtil.getSundayOfThisWeek(DateUtil.strToDate(date))+" 23:59:59"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (2==type){//月报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startTime =  DateUtil.getFristDayOfMonthThisDate(new Date())+" 00:00:00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endTime =  DateUtil.getLastDayOfMonthThisDate(new Date())+" 23:59:59"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("导出失败,请检查传入参数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //项目耗时情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql = " select CONCAT(it.title,'(',i.dept_name,')') title,it.content,sum(IFNULL(pd.actual_completion_hour,IFNULL(pd.completion_hour,0))) 'completion_hour' ," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CASE it.state WHEN 1 THEN '已完成' ELSE '未完成' END as 'state',DATE_FORMAT(it.create_time,'%Y-%m-%d %H:%i:%S') create_time,it.create_user_name " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "from base_daily_report_item it LEFT JOIN base_daily_report_detail pd  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "on it.id = pd.report_item_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " and it.del=1 and it.state>=0 and pd.create_time>='"+startTime+"' and pd.create_time<='"+endTime+"'  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " where (it.completion_time is null or it.completion_time>='"+startTime+"') " ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!adminFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and it.create_user='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql +=  "GROUP BY it.id ORDER BY it.title,it.create_time desc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> projectlist = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql = " select up.doctor_id,up.doctor_name,doc.job_title_name,dh.dept_name,up.week_name,up.report_date, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "CASE up.leave_state WHEN 1 THEN '请假' else '未请假' END as 'leave_state',IFNULL(up.leave_hour,0) leave_hour, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "it.title,it.content,rd.sort,rd.report_content,IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) 'completion_hour', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "DATE_FORMAT(rd.create_time,'%Y-%m-%d %H:%i:%S') create_time,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CASE rd.state WHEN 1 THEN '已核实' ELSE '未核实' END as 'verification_state',rd.verification_user_name,CASE rd.doubt WHEN 1 THEN '存疑' ELSE '无存疑' END as 'doubt', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CASE rd.doubt WHEN 1 THEN '不饱和存疑' WHEN 2 THEN '效率存疑' ELSE null END as 'doubtType', rd.remark " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 LEFT JOIN  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "base_daily_report_detail rd on up.id = rd.report_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "LEFT JOIN base_daily_report_item it on rd.report_item_id = it.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "where 1=1 and rd.create_time>='"+startTime+"' and rd.create_time<='"+endTime+"' " ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!adminFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and up.doctor_id in ( select distinct dh2.doctor_code from base_doctor_hospital dh " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "INNER JOIN base_doctor_hospital dh2 on dh.dept_code = dh2.dept_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "INNER JOIN base_doctor doc on dh2.doctor_code = doc.id   " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where dh.doctor_code='"+user+"' and dh.del=1 and dh2.del=1 and doc.del=1 ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += "ORDER BY up.doctor_id, report_date,rd.sort asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userCompleteList = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //项目对应员工完成情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        projectItemReportToOutStream(response,type,projectlist,userCompleteList,DateUtil.dateToStrFormatShort(DateUtil.strToDate(startTime)),DateUtil.dateToStrFormatShort(DateUtil.strToDate(endTime))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 导出员工周报月报提交情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param user 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 1周报2月报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param date 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void getUserReportList(HttpServletResponse response,String user,Integer type,String date) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //判断导出人权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = " select * from base_doctor_role where doctor_code='"+user+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean adminFlag = false;//true 为总管理员 false为部门管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String startTime = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String endTime = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (userRoles.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String role_code = userRoles.get(0).get("role_code").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ("admin".equals(role_code)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                adminFlag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if ("deptAdmin".equals(role_code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                adminFlag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("您无权限操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(1==type){//周报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取日期对应月、周范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startTime =  DateUtil.getMondayOfThisWeek(DateUtil.strToDate(date))+" 00:00:00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endTime =  DateUtil.getSundayOfThisWeek(DateUtil.strToDate(date))+" 23:59:59"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (2==type){//月报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startTime =  DateUtil.getFristDayOfMonthThisDate(new Date())+" 00:00:00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endTime =  DateUtil.getLastDayOfMonthThisDate(new Date())+" 23:59:59"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("导出失败,请检查传入参数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql = " select up.doctor_id,up.doctor_name,doc.job_title_name,dh.dept_name,up.week_name,up.report_date, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "CASE up.leave_state WHEN 1 THEN '请假' else '未请假' END as 'leave_state',IFNULL(up.leave_hour,0) leave_hour, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "it.title,it.content,rd.sort,rd.report_content,IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) 'completion_hour', " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "DATE_FORMAT(rd.create_time,'%Y-%m-%d %H:%i:%S') create_time,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CASE rd.state WHEN 1 THEN '已核实' ELSE '未核实' END as 'verification_state',rd.verification_user_name,CASE rd.doubt WHEN 1 THEN '存疑' ELSE '无存疑' END as 'doubt'," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " CASE rd.doubt WHEN 1 THEN '不饱和存疑' WHEN 2 THEN '效率存疑' ELSE null END as 'doubtType', rd.remark " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 LEFT JOIN  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "base_daily_report_detail rd on up.id = rd.report_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "LEFT JOIN base_daily_report_item it on rd.report_item_id = it.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "where 1=1 and rd.create_time>='"+startTime+"' and rd.create_time<='"+endTime+"' " ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!adminFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and up.doctor_id in ( select distinct dh2.doctor_code from base_doctor_hospital dh " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "INNER JOIN base_doctor_hospital dh2 on dh.dept_code = dh2.dept_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "INNER JOIN base_doctor doc on dh2.doctor_code = doc.id   " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "where dh.doctor_code='"+user+"' and dh.del=1 and dh2.del=1 and doc.del=1 ) "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += "ORDER BY up.doctor_id, report_date,rd.sort asc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> userCompleteList = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String typeName = 1==type?"周报":"月报"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        OutputStream os = response.getOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        response.setContentType("octets/stream"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        response.setHeader("Content-Disposition", "attachment; filename=" + new String(URLEncoder.encode(typeName+"员工完成情况")+".xls")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        UserReportListExcel(userCompleteList,os,DateUtil.dateToStrFormatShort(DateUtil.strToDate(startTime)),DateUtil.dateToStrFormatShort(DateUtil.strToDate(endTime))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   public void projectItemReportToOutStream(HttpServletResponse response,Integer type,List<Map<String,Object>> projectList,List<Map<String,Object>> userCompleteList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            String startDate,String endDate) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       Map<String,List<Map<String,Object>>> projectMap = projectList.stream().collect(Collectors.groupingBy(e -> e.get("title").toString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       String typeName = 1==type?"周报":"月报"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       String zipFileName = "项目"+typeName+"完成情况"+startDate+"至"+endDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       long time = System.currentTimeMillis(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       String exportConclusionList = time+"exportList"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       String path = this.getClass().getResource("/").getPath() + exportConclusionList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       File file = new File(path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // 删除文件夹、文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       System.out.println("创建文件夹时间:"+sdf.format(new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (file.exists()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (file != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               FileUtil.deleteFolder(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               file.mkdir(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               file.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               file.mkdir(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           file.mkdir(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        * 开始创建周报/月报耗时情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           String fileName = typeName+"完成情况"+".xls";; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           OutputStream os = new FileOutputStream(path+"/"+fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           WritableWorkbook wwb = jxl.Workbook.createWorkbook(os); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           WritableSheet sheet = wwb.createSheet("sheet", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           String header[] = {typeName+"完成情况("+startDate+"至"+endDate+")", "", "","", "", ""}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           int i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           for (String h : header) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet, 0, i, h); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            * mergeCells(a,b,c,d) 单元格合并函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            * a 单元格的列号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            * b 单元格的行号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            * c 从单元格[a,b]起,向“右”合并的列数 注意c不是合并列的数量,而是列的下标数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            * d 从单元格[a,b]起,向下合并到d行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           sheet.mergeCells(0, 0, header.length-1, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           header = new String[]{"项目", "内容", "用时", "是否完成", "创建人", "创建时间"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           for (String h : header) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,1 , i, h); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           i=2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           //记录所需要合并的信息(项目) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           int a=0,b=0,c=0,d=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           String titleMerge = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           for (Map<String,Object> projectTmp:projectList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               String title = null==projectTmp.get("title")?"":projectTmp.get("title").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               if (null==titleMerge){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   titleMerge = title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   a = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   b=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   d=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               if (title.equals(titleMerge)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   d=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   titleMerge = title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   sheet.mergeCells(a, b, c, d); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   a = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   b=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   d=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,i , 0,null==projectTmp.get("title")?"":projectTmp.get("title").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,i , 1,null==projectTmp.get("content")?"":projectTmp.get("content").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,i , 2,null==projectTmp.get("completion_hour")?"":projectTmp.get("completion_hour").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,i , 3,null==projectTmp.get("state")?"":projectTmp.get("state").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,i , 4,null==projectTmp.get("create_user_name")?"":projectTmp.get("create_user_name").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               addCell(sheet,i , 5,null==projectTmp.get("create_time")?"":projectTmp.get("create_time").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           sheet.mergeCells(a, b, c, d); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           wwb.write(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           wwb.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           File zipFile = new File(path.replace(exportConclusionList, "") + zipFileName + ".zip"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (zipFile.exists()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               zipFile.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        * 开始创建员工用时情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           String fileName = typeName+"员工完成情况"+".xls";; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           OutputStream os = new FileOutputStream(path+"/"+fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           UserReportListExcel(userCompleteList,os,startDate,endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           File zipFile = new File(path.replace(exportConclusionList, "") + zipFileName + ".zip"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (zipFile.exists()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               zipFile.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // 打包文件夹 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (FileUtil.fileToZip(path, path.replace(exportConclusionList, ""), zipFileName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           file =  new File(path.replace(exportConclusionList, "") + zipFileName + ".zip"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           file = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (file != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           response.setCharacterEncoding("utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           response.setContentType("multipart/form-data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           response.setHeader("Content-Disposition", "attachment; filename=" + new String(URLEncoder.encode(zipFileName)+".zip")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           InputStream inputStream = new FileInputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           OutputStream outputStream = response.getOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           byte[] b = new byte[2048]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           int length = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           while ((length = inputStream.read(b)) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               outputStream.write(b, 0, length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           outputStream.flush(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           outputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           inputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            response.setStatus(500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       file.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 员工耗时表格操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param userCompleteList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param os 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws IOException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws WriteException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void UserReportListExcel(List<Map<String,Object>> userCompleteList,OutputStream os,String startDate,String endDate) throws IOException, WriteException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WritableWorkbook wwb = jxl.Workbook.createWorkbook(os); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WritableSheet sheet = wwb.createSheet("sheet", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String[] header = {"员工完成情况("+startDate+"至"+endDate+")","","","","","","","","","","","","","","","","","",""};// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int k = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String h : header) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet, 0, k, h);//表名,行,列,header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            k++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(0, 0, header.length-1, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        header = new String[]{"人员", "部门","岗位","日期", "上报日期", "请假状态", "请假时长","关联项目","关联项目内容","事项序号", "事项内容", "用时", "创建时间", "上级核实","核实人员","核实时间","是否存疑","存疑类型","备注"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String h : header) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet, 1, i, h); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        i=2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //记录所需要合并的信息 (人员、日期、上报日期) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int a1=0,b1=0,c1=0,d1=0;//医生姓名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int a3=4,b3=0,c3=0,d3=0;//上报日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String doctorIdMerge =null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String reportDateMerge = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (Map<String,Object> completeTmp:userCompleteList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String reportDate = null==completeTmp.get("report_date")?"":completeTmp.get("report_date").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String doctorId = null==completeTmp.get("doctor_id")?"":completeTmp.get("doctor_id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null==doctorIdMerge){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorIdMerge = doctorId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                b1=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                d1=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!doctorId.equals(doctorIdMerge)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a1, b1, c1, d1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a1+1, b1, c1, d1);//部门 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a1+2, b1, c1, d1);//岗位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a3-1, b3, c3, d3);//weekName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a3,b3, c3, d3);//上报日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a3+1, b3, c3, d3);//请假 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sheet.mergeCells(a3+2, b3, c3, d3);//请假时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorIdMerge = doctorId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                reportDateMerge = reportDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                b1=i;d1=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                b3=i;d3=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else {//同一个医生。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                d1=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (null==reportDateMerge){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    reportDateMerge = reportDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    b3=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    d3=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (reportDate.equals(reportDateMerge)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    d3=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    reportDateMerge = reportDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sheet.mergeCells(a3-1, b3, c3, d3);//weekName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sheet.mergeCells(a3, b3, c3, d3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sheet.mergeCells(a3+1, b3, c3, d3);//请假 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sheet.mergeCells(a3+2, b3, c3, d3);//请假时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    b3=i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    d3=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 0,null==completeTmp.get("doctor_name")?"":completeTmp.get("doctor_name").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 1,null==completeTmp.get("dept_name")?"":completeTmp.get("dept_name").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 2,null==completeTmp.get("job_title_name")?"":completeTmp.get("job_title_name").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 3,null==completeTmp.get("week_name")?"":completeTmp.get("week_name").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 4,null==completeTmp.get("report_date")?"":completeTmp.get("report_date").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 5,null==completeTmp.get("leave_state")?"":completeTmp.get("leave_state").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 6,null==completeTmp.get("leave_hour")?"":completeTmp.get("leave_hour").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i ,7,null==completeTmp.get("title")?"":completeTmp.get("title").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 8,null==completeTmp.get("content")?"":completeTmp.get("content").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 9,null==completeTmp.get("sort")?"":completeTmp.get("sort").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i, 10,null==completeTmp.get("report_content")?"":completeTmp.get("report_content").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 11,null==completeTmp.get("completion_hour")?"":completeTmp.get("completion_hour").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 12,null==completeTmp.get("create_time")?"":completeTmp.get("create_time").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 13,null==completeTmp.get("verification_state")?"":completeTmp.get("verification_state").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 14,null==completeTmp.get("verification_user_name")?"":completeTmp.get("verification_user_name").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 15,null==completeTmp.get("verification_time")?"":completeTmp.get("verification_time").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 16,null==completeTmp.get("doubt")?"":completeTmp.get("doubt").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 17,null==completeTmp.get("doubtType")?"":completeTmp.get("doubtType").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addCell(sheet,i , 18,null==completeTmp.get("remark")?"":completeTmp.get("remark").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a1, b1, c1, d1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a1+1, b1, c1, d1);//部门 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a1+2, b1, c1, d1);//岗位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a3-1, b3, c3, d3);//weekName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a3,b3, c3, d3);//上报日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a3+1, b3, c3, d3);//请假 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sheet.mergeCells(a3+2, b3, c3, d3);//请假时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        wwb.write(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        wwb.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void addCell(WritableSheet ws, int row, int column, String data) throws WriteException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Label label = new Label(column, row, data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WritableCellFormat cellFormat = new WritableCellFormat(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cellFormat.setAlignment(jxl.format.Alignment.CENTRE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        label.setCellFormat(cellFormat); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ws.addCell(label); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |