Prechádzať zdrojové kódy

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

wsl 2 rokov pred
rodič
commit
cc9b025e62

+ 914 - 87
business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java

@ -340,10 +340,9 @@ public class DailyReportUploadService {
            }
        }
        if (StringUtil.isBlank(report_date)){
            report_date = DateUtil.getStringDateShort();
            week_name = DateUtil.getWeekStr(report_date);
        }
        report_date = DateUtil.getStringDateShort();
        week_name = DateUtil.getWeekStr(report_date);
        BaseDailyReportUploadDO dailyReportUploadDO = dailyReportUploadDao.findByDoctorIdAndReportDate(doctorId,report_date);
        if (null==dailyReportUploadDO){
            dailyReportUploadDO = new BaseDailyReportUploadDO();
@ -369,22 +368,14 @@ public class DailyReportUploadService {
        for (BaseDailyReportDetailDO tmp :detailDOList){
            tmp.setReportId(dailyReportUploadDO.getId());
            if (tmp.isReportItemFlag()==true){//新则自建关联项目
                List<BaseDailyReportItemMembersDO> membersDOS = new ArrayList<>();
                if (!createItemUser.contains(doctorId)){
                    throw new Exception("您无权创建自定义项目,请联系管理员");
                }
                String title = tmp.getReportItemTitle();
                BaseDailyReportItemDO reportItemDO = reportItemDao.findByTitleAndDeptAndProjectCode(title,doctorHospitalDOS.get(0).getDeptCode(),tmp.getProjectCode());
                if (null!=reportItemDO){
                    BaseDailyReportItemMembersDO membersDOTmp = reportItemMembersDao.findMembers(reportItemDO.getId(),doctorId);
                    if (null==membersDOTmp){
                        membersDOTmp = new BaseDailyReportItemMembersDO();
                        membersDOTmp.setReportItemId(reportItemDO.getId());
                        membersDOTmp.setUserId(doctorId);
                        membersDOTmp.setUserName(doctorDO.getName());
                        membersDOTmp.setDel(1);
                        reportItemMembersDao.save(membersDOTmp);
                    }
                }else {
                if (null==reportItemDO){
                    reportItemDO = new BaseDailyReportItemDO();
                    reportItemDO.setState(0);
                    reportItemDO.setDel(1);
@ -403,12 +394,27 @@ public class DailyReportUploadService {
                        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);
                }
                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='"+doctorHospitalDOS.get(0).getDeptCode()+"' ";
                List<Map<String,Object>> membersList = jdbcTemplate.queryForList(sql);
                for (Map<String,Object> member:membersList){
                    String docTmp = member.get("id").toString();
                    String docNameTmp = member.get("name").toString();
                    String reportItemId = reportItemDO.getId();
                    BaseDailyReportItemMembersDO membersDOTmp = reportItemMembersDao.findMembers(reportItemId,docTmp);
                    if (null==membersDOTmp){
                        membersDOTmp = new BaseDailyReportItemMembersDO();
                        membersDOTmp.setReportItemId(reportItemId);
                        membersDOTmp.setUserId(docTmp);
                        membersDOTmp.setUserName(docNameTmp);
                        membersDOTmp.setDel(1);
                        membersDOS.add(membersDOTmp);
                    }
                }
                if(membersDOS.size()>0){
                    reportItemMembersDao.save(membersDOS);
                }
                tmp.setReportItemId(reportItemDO.getId());
                tmp.setReportItemName(title);
@ -536,6 +542,7 @@ public class DailyReportUploadService {
            for (BaseDailyReportDetailDO tmp:detailDOList){
                if (1==tmp.getDoubt()&&(null==tmp.getDoubtState()||0==tmp.getDoubtState())){
                    doubt = true;
                    tmp.setDoubtRead(0);
                    if(0!=tmp.getDoubtType()&&doubtTypeObj.containsKey(tmp.getDoubtType()+"")){
                        doubtTypeName.add(doubtTypeObj.getString(tmp.getDoubtType()+""));
                    }
@ -622,6 +629,45 @@ public class DailyReportUploadService {
        return dailyReportUploadDO;
    }
    /**
     * 点赞项目
     * @param id
     * @param niceWorkType
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public boolean thumbsUpDailyReport(String id,Integer niceWorkType) throws Exception {
        BaseDailyReportUploadDO dailyReportUploadDO = dailyReportUploadDao.findOne(id);
        if (null == dailyReportUploadDO) {
            throw new Exception("日报记录未查询到");
        }
        dailyReportUploadDO.setNiceWorkType(niceWorkType);
        try {
            BaseDoctorDO remindDoctorDO = baseDoctorDao.findById(dailyReportUploadDO.getDoctorId());
            BaseDoctorDO doctorDO = baseDoctorDao.findById(dailyReportUploadDO.getDoctorId());
            if (remindDoctorDO != null) {
                try {
                    WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,remindDoctorDO.getMobile());
                    if(enterpriseUserDO==null){
                        logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId);
                    }else{
                        String title = "日报反馈";
                        String des = "您好,鉴于您今日的工作表现,上级给予了肯定,点击查看详情。";
                        String url = "https://ehr.yihu.com/hlwyy/zjxl/dailyReport/#/workSummary/commit?id="+dailyReportUploadDO.getId();
                        String res = enterpriseService.sendTWMesByDoctor(wechatId,remindDoctorDO.getId(),title,des,url);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return true;
    }
    /**
     *核实每日报表疑惑
     */
@ -739,27 +785,60 @@ public class DailyReportUploadService {
        return  urgingRecordDOS;
    }
    public List<BaseDailyUrgingRecordDO> getUrgingList(String code,String doctor,String reportId,String createUser,String startTime,String endTime){
        String sql = " select ur.* from base_daily_urging_record ur where 1=1 ";
    public List<BaseDailyUrgingRecordDO> getUrgingList(String user,String dept,String code,String doctor,String reportId,String createUser,String startTime,String endTime){
        String condition = "";
        if (StringUtils.isNoneBlank(user)){
            List<BaseDoctorRoleDO> baseDoctorRoleDOS= doctorRoleDao.findByDoctorCode(user);
            boolean flag = true;
            for (BaseDoctorRoleDO roleDO:baseDoctorRoleDOS){
                if (roleDO.getRoleCode().equalsIgnoreCase("admin")||roleDO.getRoleCode().equalsIgnoreCase("deptAdmin")){
                    flag = false;
                    break;
                }
            }
            if (flag){
                condition = " and ur.receive_doctor='"+user+"' ";
            }
        }
        String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='BOOS_ADMIN_SENDER'  ";
        String sqlCondition = " ";
        String boosID = "";
        List<String> boosSenderIds = jdbcTemplate.queryForList(sql, String.class);
        if (boosSenderIds.size() > 0) {
            boosID = boosSenderIds.get(0);
        }
        if (StringUtils.isNotBlank(code)){
            sql +=" and ur.code='"+code+"' ";
            sqlCondition +=" and ur.code='"+code+"' ";
        }
        if (StringUtils.isNotBlank(dept)){
            sqlCondition += " and dept ='"+dept+"' ";
        }
        if (StringUtils.isNotBlank(doctor)){
            sql +=" and ur.receive_doctor='"+doctor+"' ";
            sqlCondition +=" and ur.receive_doctor='"+doctor+"' ";
        }
        if (StringUtils.isNotBlank(reportId)){
            sql +=" and ur.report_id='"+reportId+"' ";
            sqlCondition +=" and ur.report_id='"+reportId+"' ";
        }
        if (StringUtils.isNotBlank(createUser)){
            sql +=" and ur.create_user='"+createUser+"' ";
            sqlCondition +=" and ur.create_user='"+createUser+"' ";
        }
        if (StringUtils.isNotBlank(startTime)){
            sql +=" and ur.create_time>='"+startTime+"' ";
            sqlCondition +=" and ur.create_time>='"+startTime+"' ";
        }
        if (StringUtils.isNotBlank(endTime)){
            sql +=" and ur.create_time<='"+endTime+"' ";
            sqlCondition +=" and ur.create_time<='"+endTime+"' ";
        }
        sql = " select ur.* from base_daily_urging_record ur where 1=1 "+condition+sqlCondition+"";
        if (StringUtils.isNotBlank(user)){
            if (StringUtils.isNotBlank(user)&&!boosID.equals(user)){
                sql +="UNION " +
                        " select ur.* from base_daily_urging_record ur where  ur.receive_doctor='"+user+"' "+sqlCondition+" ";
            }
        }
        sql +=" group by ur.code order by ur.create_time desc ";
        sql +="  order by create_time desc ";
        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyUrgingRecordDO.class));
    }
@ -837,9 +916,13 @@ public class DailyReportUploadService {
     * @return
     * @throws Exception
     */
    public BaseDailyReportUploadDO selectReportById(String reportId) throws Exception {
    public BaseDailyReportUploadDO selectReportById(String doctor,String reportId) throws Exception {
        String nowDate = DateUtil.getStringDateShort();
        BaseDailyReportUploadDO reportUploadDO = dailyReportUploadDao.findOne(reportId);
        if(reportUploadDO.getDoctorId().equals(doctor)){
            String sql = " update base_daily_report_detail set doubt_read=1 where id='"+reportId+"' ";
            jdbcTemplate.execute(sql);
        }
        if (null==reportUploadDO){
            throw new Exception("未找到日报记录");
        }else {
@ -897,7 +980,7 @@ public class DailyReportUploadService {
        String notVerifiedSql = "";
        if (level == 1) {
            //总人数
            doctorTotalSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 ";
            doctorTotalSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and d.identity=0  ";
            //今日上报人数
            sqlTotalSql = " select count(up.id) from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1" +
                    "  where  up.report_date>='"+nowDate+"' and up.report_date<='"+nowDate+"' ";
@ -928,7 +1011,23 @@ public class DailyReportUploadService {
                    " where   de.state=0 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' " +
                    " and up.doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        if (1==level||2==level){
            Integer doctorTotal =  jdbcTemplate.queryForObject(doctorTotalSql,Integer.class);
            Integer sqlTotal =  jdbcTemplate.queryForObject(sqlTotalSql,Integer.class);
            Integer verified =  jdbcTemplate.queryForObject(verifiedSql,Integer.class);
            Integer notVerified =  jdbcTemplate.queryForObject(notVerifiedSql,Integer.class);
            result.put("doctorTotal", doctorTotal);//科室总人次
            result.put("sqlTotal", sqlTotal);//科室今日上报人数
            result.put("notUploadTotal", doctorTotal - sqlTotal);//今日未上报人数
            result.put("verified",verified);//科室未核实
            result.put("notVerified",notVerified);//科室已核实
        }else {
            result.put("doctorTotal", 0);//科室总人次
            result.put("sqlTotal", 0);//科室今日上报人数
            result.put("notUploadTotal", 0);//今日未上报人数
            result.put("verified",0);//科室未核实
            result.put("notVerified",0);//科室已核实
        }
        Integer benrenTotal =  jdbcTemplate.queryForObject(benrenTotalSql,Integer.class);
        Integer benrenshangbaoTotal = jdbcTemplate.queryForObject(benrenshangbaoTotalSql,Integer.class);
@ -939,15 +1038,10 @@ public class DailyReportUploadService {
        result.put("benrenVerified",benrenVerified);//本人上级未核实
        result.put("benrenNotVerified",benrenNotVerified);//本人上级已核实
        Integer doctorTotal =  jdbcTemplate.queryForObject(doctorTotalSql,Integer.class);
        Integer sqlTotal =  jdbcTemplate.queryForObject(sqlTotalSql,Integer.class);
        Integer verified =  jdbcTemplate.queryForObject(verifiedSql,Integer.class);
        Integer notVerified =  jdbcTemplate.queryForObject(notVerifiedSql,Integer.class);
        result.put("doctorTotal", doctorTotal);//科室总人次
        result.put("sqlTotal", sqlTotal);//科室今日上报人数
        result.put("notUploadTotal", doctorTotal - sqlTotal);//今日未上报人数
        result.put("verified",verified);//科室未核实
        result.put("notVerified",notVerified);//科室已核实
        result.put("notVerifiedTotal",selectListInfoByTotal2(doctorId,dept,"0",DateUtil.getStringDateShort(),DateUtil.getStringDateShort(),null,null,null,null).size());//未核实数量(本人+管辖部门)
        result.put("doubtTotal",selectListInfoByTotal2(doctorId,dept,null,DateUtil.getStringDateShort(),DateUtil.getStringDateShort(),null,1,null,null).size());//效能异常(本人+管辖部门)
        result.put("urgingTotal",getUrgingList(doctorId,dept,null,null,null,null,DateUtil.getStringDateShort()+" 00:00:00",DateUtil.getStringDateShort()+" 23:59:59").size());//催促数量(本人+管辖部门)
        result.put("reportUploadDO",reportUploadDO);
        return result;
    }
@ -1374,6 +1468,99 @@ public class DailyReportUploadService {
        return array;
    }
    /**
     *
     * @param user
     * @param dept
     * @param state 0未核实 1已核实
     * @param startDate
     * @param endDate
     * @param name
     * @param doubtState 存疑0无存疑1存疑
     * @return
     */
    public List<Map<String,Object>> selectListInfoByTotal2(String user,String dept,String state,String startDate,String endDate,String name,Integer doubtState,Integer readState,String filterOthers) {
        String sqlCondition = " ";
        String boosID = "";
        String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='BOOS_ADMIN_SENDER'  ";
        List<String> boosSenderIds = jdbcTemplate.queryForList(sql, String.class);
        if (boosSenderIds.size() > 0) {
            boosID = boosSenderIds.get(0);
        }
        if (StringUtils.isNotBlank(dept)){
            sqlCondition += " and dh.dept_code='"+dept+"'   ";
        }
        if (StringUtils.isNotBlank(state)){
            sqlCondition += " and d1.state='"+state+"' ";
        }
        if (StringUtils.isNotBlank(startDate)){
            sqlCondition +=" and d1.report_date>='"+startDate+"' ";
        }
        if (StringUtils.isNotBlank(endDate)){
            sqlCondition += " and d1.report_date<='"+endDate+"' ";
        }
        if (StringUtils.isNotBlank(name)){
            sqlCondition += " and doc.name like '%"+name+"%'";
        }
        if (null!=doubtState){
            if (0==doubtState){
                sqlCondition +=" and de.doubt=0  ";
            }if (1==doubtState){
                sqlCondition +=" and de.doubt=1 ";
            }
        }
        if (null!=readState){
            sqlCondition += " and de.doubt_read='"+readState+"' ";
        }
        String condition = "";
        if (StringUtils.isNoneBlank(user)){
            List<BaseDoctorRoleDO> baseDoctorRoleDOS= doctorRoleDao.findByDoctorCode(user);
            boolean flag = true;
            for (BaseDoctorRoleDO roleDO:baseDoctorRoleDOS){
                if (roleDO.getRoleCode().equalsIgnoreCase("admin")||roleDO.getRoleCode().equalsIgnoreCase("deptAdmin")){
                    flag = false;
                    if (StringUtils.isNotBlank(filterOthers)){//只返回自己应核实的数据
                        if("1".equals(filterOthers)){
                            List<String> myDoctors = getDoctorByRole(user);
                            String doctorsIn = myDoctors.stream().map(String::valueOf).collect(Collectors.joining("','"));
                            condition += " and doc.id in ('"+doctorsIn+"') ";
                        }
                    }
                    break;
                }
            }
            if (flag){
                condition += " and doc.id='"+user+"' ";
            }
        }
        sql = " select doc.name,dh.dept_code,dh.dept_name,d1.id,doc.job_title_name as jobTitleName,doc.photo,report_date reportDate,d1.state,total_hour," +
                "\tdoubt_type AS doubtType,\n" +
                "\tdoubt_state AS doubtState,\n" +
                "\tdoubt_remark AS doubtRemark,\n" +
                "\tremark,completion_schedule as completionSchedule,actual_completion_hour as actualCompletionHour,IF(SUM(de.doubt)>0,1,0) as doubt,de.doubt_read " +
                "from base_doctor_daily_report_upload d1 INNER JOIN base_doctor doc on d1.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 de on d1.id = de.report_id " +
                "where doc.del=1 and doc.identity=0 "+sqlCondition+condition+" GROUP BY d1.id ";
        if (StringUtils.isNotBlank(user)&&!boosID.equals(user)){
            sql +=" UNION " +
                    "select doc.name,dh.dept_code,dh.dept_name,d1.id,doc.job_title_name as jobTitleName,doc.photo,report_date reportDate,d1.state,total_hour," +
                    "\tdoubt_type AS doubtType,\n" +
                    "\tdoubt_state AS doubtState,\n" +
                    "\tdoubt_remark AS doubtRemark,\n" +
                    "\tremark,completion_schedule as completionSchedule,actual_completion_hour as actualCompletionHour,IF(SUM(de.doubt)>0,1,0) as doubt,de.doubt_read " +
                    "from base_doctor_daily_report_upload d1 INNER JOIN base_doctor doc on d1.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 de on d1.id = de.report_id " +
                    "where doc.del=1 and doc.identity=0 and doc.id='"+user+"' " +sqlCondition +" GROUP BY d1.id  ";
        }
        sql += " order by reportDate desc ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 获取存疑列表列表的时间及数量
     * @param dept
@ -1772,6 +1959,7 @@ public class DailyReportUploadService {
        Integer weishangbaoTotal = 0;
        Integer verifiedTotal = 0;
        Integer notVerifiedTotal = 0;
        Long urgingTotal = 0l;
        //已上传
        Map<String, Object> yishangchaungMap = jdbcTemplate.queryForMap(sql);
        if (yishangchaungMap != null) {
@ -1878,6 +2066,15 @@ public class DailyReportUploadService {
        }
        doubtDoubtList.sort(Comparator.comparing(e->e.get("doubt_type").toString()));
        Long  doubtTotal = jdbcTemplate.queryForObject(doubtTotalSql,Long.class);
        //项目催出
        //项目催出数量
        String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+endDate+"' ";
        if (StringUtils.isNotBlank(dept)){
            urgingSql +=" and dept='"+dept+"' ";
        }
        urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
        object.put("total", total);//总人次
        object.put("yishangbaoTotal", yishangbaoTotal);//已上报
        object.put("weishangbaoTotal", weishangbaoTotal);//未上报
@ -1886,6 +2083,7 @@ public class DailyReportUploadService {
        object.put("shangchuanTotal", shangchuanTotal);//上传总次数
        object.put("doubtList", doubtDoubtList);//各存疑次数
        object.put("doubtTotal", doubtTotal);//存疑总数
        object.put("urgingTotal", urgingTotal);//项目催出
        return object;
    }
@ -1935,6 +2133,7 @@ public class DailyReportUploadService {
        Integer notVerified=0;//未核实
        Integer verified=0;//已核实
        Integer shangchuanTotal=0;//上传总次数
        Long urgingTotal=0l;//项目催促
        if (StringUtils.isNoneBlank(startDate)) {
            sql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
@ -2052,6 +2251,17 @@ public class DailyReportUploadService {
        //上传总次数
        shangchuanTotal = jdbcTemplate.queryForObject(shangchuanTotalSql,Integer.class);
        //项目催出数量
        String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+endDate+"' ";
        if (StringUtils.isNotBlank(dept)){
            urgingSql +=" and dept='"+dept+"' ";
        }
        if (StringUtils.isNotBlank(name)){
            urgingSql += " and doctor_name like '%"+name+"%' ";
        }
        urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
        object.put("total", total);//总人次
        object.put("yishangbaoTotal", yishangbaoTotal);//已上报
        object.put("weishangbaoTotal", weishangbaoTotal);//未上报
@ -2060,6 +2270,7 @@ public class DailyReportUploadService {
        object.put("shangchuanTotal", shangchuanTotal);//上传总次数
        object.put("doubtList", doubtDoubtList);//各存疑次数
        object.put("doubtTotal", doubtTotal);//存疑总数
        object.put("urgingTotal", urgingTotal);//项目催出
        return object;
    }
@ -2257,7 +2468,7 @@ public class DailyReportUploadService {
            reportItemDO.setCompletionHour(completionHour);
        }else {
            //查询出关联的日报详情,计算完成时间
            sql = " select sum(IFNULL(actual_completion_hour,IFNULL(completion_hour,'0'))) from base_daily_report_detail " +
            sql = " select sum(cast(IFNULL(actual_completion_hour,IFNULL(completion_hour,0)) as decimal(18,2))) from base_daily_report_detail " +
                    " where report_item_id='"+item_id+"' ";
            String completionHoursql = jdbcTemplate.queryForObject(sql,String.class);
            reportItemDO.setCompletionHour(completionHoursql);
@ -2312,7 +2523,7 @@ public class DailyReportUploadService {
        String sql = " select m.*,IFNULL(A.completion_hour,0) completion_hour,dh.dept_code,dh.dept_name from base_daily_report_item_members m " +
                " INNER JOIN base_doctor doc on m.user_id = doc.id and doc.del=1  " +
                "LEFT JOIN ( " +
                "select up.doctor_id,SUM(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) completion_hour " +
                "select up.doctor_id,sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 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 " +
@ -2332,7 +2543,10 @@ public class DailyReportUploadService {
            throw new Exception("您无权限操作");
        }
        List<BaseDailyReportItemDO> itemDOS = new ArrayList<>();
        sql = " select i.* from base_daily_report_item i where 1=1 and i.del=1 ";
        sql = " select i.* from base_daily_report_item i inner join wlyy_hospital_sys_dict dict on i.project_code = dict.dict_code and dict.dict_name='daily_report_project' " +
                " INNER JOIN ( select dict_code,dict_value,sort from wlyy_hospital_sys_dict where dict_name='daily_report_category' )B on dict.saas_id = B.dict_code  " +
                "  INNER JOIN ( select dict_code,dict_value,sort from wlyy_hospital_sys_dict where dict_name='daily_report_level' )C on dict.py_code = C.dict_code " +
                " where 1=1 and i.del=1 ";
        if(StringUtils.isNotBlank(projectCode)){
            sql += " and i.project_code='"+projectCode+"' ";
        }
@ -2360,6 +2574,7 @@ public class DailyReportUploadService {
        if (StringUtils.isNotBlank(dept)){
            sql += " and i.dept='"+dept+"' ";
        }
        sql += " order by B.sort asc, c.sort asc,dict.sort asc  ";
        itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
        for (BaseDailyReportItemDO tmp:itemDOS){
            List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId());
@ -2372,7 +2587,10 @@ public class DailyReportUploadService {
     * 员工获取所有日报项目
     */
    public List<BaseDailyReportItemDO> findReportItemList(String user,String projectCode,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 " +
        String sql = "select distinct i.* from base_daily_report_item i inner join wlyy_hospital_sys_dict dict on i.project_code = dict.dict_code and dict.dict_name='daily_report_project' " +
                " INNER JOIN ( select dict_code,dict_value,sort from wlyy_hospital_sys_dict where dict_name='daily_report_category' )B on dict.saas_id = B.dict_code  " +
                "  INNER JOIN ( select dict_code,dict_value,sort from wlyy_hospital_sys_dict where dict_name='daily_report_level' )C on dict.py_code = C.dict_code " +
                " INNER JOIN base_daily_report_item_members mem on i.id = mem.report_item_id " +
                "INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
                "where i.del=1 and mem.del=1 and mem.user_id='"+user+"' " ;
@ -2400,7 +2618,7 @@ public class DailyReportUploadService {
        if (StringUtils.isNotBlank(createUserName)){
            sql += " and i.create_user_name like '%"+createUserName+"%' ";
        }
        sql += " GROUP BY i.id ";
        sql += " order by B.sort asc, c.sort asc,dict.sort asc  ";
        List<BaseDailyReportItemDO> itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
        for (BaseDailyReportItemDO tmp:itemDOS){
            List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId());
@ -2417,7 +2635,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -2458,7 +2675,7 @@ public class DailyReportUploadService {
        String sqlList = "  select dict.dict_code project_code,dict.dict_value projectName,IFNULL( A.completionHour,0) 'completionHour', " +
                " IFNULL(A.doctorTotal,0) 'doctorTotal',B.dict_code 'categoryCode',B.dict_value 'categoryName',C.dict_code 'levelCode' ,C.dict_value 'levelName' 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, " +
                " select i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1  where i.del=1 "+sqlCondition+" GROUP BY i.project_code )A " +
@ -2518,7 +2735,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -2556,7 +2772,7 @@ public class DailyReportUploadService {
        if (StringUtils.isNotBlank(member)){//查询指定员工
            sqlCondition += " and up.doctor_id='"+member+"' ";
        }
        String sqlList = " select i.dept,i.dept_name deptName,i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
        String sqlList = " select i.dept,i.dept_name deptName,i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1  where i.del=1 "+sqlCondition+" GROUP BY i.project_code,i.dept  ";
@ -2577,7 +2793,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -2620,7 +2835,7 @@ public class DailyReportUploadService {
        String sqlCount = " select count(distinct i.id)  ";
        String sqlCondition = " from base_daily_report_item i  LEFT JOIN( " +
                " select de.report_item_id,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
                " select de.report_item_id,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour, " +
                " count(distinct up.doctor_id) as doctorTotal " +
                "  from base_daily_report_detail de Inner JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +updateTimeSql+
@ -2663,7 +2878,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -2700,7 +2914,7 @@ public class DailyReportUploadService {
        }
        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', " +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +updateTimeSql+
@ -2708,7 +2922,7 @@ public class DailyReportUploadService {
                    "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', " +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +updateTimeSql+
@ -2716,7 +2930,7 @@ public class DailyReportUploadService {
                    "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', " +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +updateTimeSql+
@ -2786,7 +3000,6 @@ public class DailyReportUploadService {
        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 = " ";
@ -2805,7 +3018,7 @@ public class DailyReportUploadService {
        String uploadTimeFormat = "";
        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'," +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
@ -2816,7 +3029,7 @@ public class DailyReportUploadService {
        }
        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', " +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
@ -2826,7 +3039,7 @@ public class DailyReportUploadService {
            uploadTimeFormat=" DATE_FORMAT(up.report_date,'%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', " +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
@ -2836,7 +3049,7 @@ public class DailyReportUploadService {
            uploadTimeFormat=" DATE_FORMAT(up.report_date,'%Y-%m-%d') ";
        }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', " +
                    " CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
@ -2880,7 +3093,7 @@ public class DailyReportUploadService {
                Double completionHour = Double.valueOf(tmp.get("completionHour").toString());
                tmp.put("timeRange",getRangeDouble(completionHour,totalHour));
                String doctorId = tmp.get("doctor_id").toString();
                sql = " select up.doctor_name,"+uploadTimeFormat+" as report_date ,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour " +
                sql = " select up.doctor_name,"+uploadTimeFormat+" as report_date ,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour " +
                        " from base_daily_report_detail de  INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1  " +updateTimeSql+
                        "where  de.report_item_id='"+item_id+"' and up.doctor_id='"+doctorId+"' " +
                        "GROUP BY "+searchTimeFormat+" ORDER BY report_date asc ";
@ -2905,7 +3118,7 @@ public class DailyReportUploadService {
                        }
                    }
                }
                timeUseList.sort(Comparator.comparing(obj -> obj.get("report_date").toString()));
                timeUseList.sort(Comparator.comparing(obj ->((Map<String,Object>)obj).get("report_date").toString()).reversed());
                tmp.put("timeUseList",timeUseList);
            }
@ -2923,7 +3136,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -2988,7 +3200,7 @@ public class DailyReportUploadService {
        List<Map<String,Object>> deptProjectList = jdbcTemplate.queryForList(projectSql);
        String sqlList = "  select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,  " +
        String sqlList = "  select i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour,  " +
                " count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
                " from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id  " +
                " INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1  " +
@ -3031,7 +3243,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -3096,7 +3307,7 @@ public class DailyReportUploadService {
                " GROUP BY i.id ";
        List<Map<String,Object>> deptProjectItemList = jdbcTemplate.queryForList(projectSql);
        String sqlList = "  select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,  " +
        String sqlList = "  select i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour,  " +
                " count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
                " from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id  " +
                " INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1  " +
@ -3183,7 +3394,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -3238,7 +3448,7 @@ public class DailyReportUploadService {
                " where dict.dict_name='daily_report_project' and dh.dept_code='"+dept+"'  and mem.user_id='"+memberId+"' and mem.del=1 " +
                " GROUP BY dict.dict_code; ";
        List<Map<String,Object>> deptProjectList = jdbcTemplate.queryForList(projectSql);
        String sqlList = "  select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,  " +
        String sqlList = "  select i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour,  " +
                " count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
                " from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id  " +
                " INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
@ -3280,7 +3490,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -3334,7 +3543,7 @@ public class DailyReportUploadService {
                " where  i.project_code='"+projectCode+"' and mem.user_id='"+memberId+"' and mem.del=1 and  dh.dept_code='"+dept+"' " +
                "  GROUP BY i.id ";
        List<Map<String,Object>> deptProjectItemList = jdbcTemplate.queryForList(projectSql);
        String sqlList = "  select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,  " +
        String sqlList = "  select i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour,  " +
                " count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
                " from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id  " +
                " INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id " +
@ -3387,7 +3596,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -3505,7 +3713,7 @@ public class DailyReportUploadService {
        Long needWorkHours = workDays*members*8;
        Long urgingTotal=0l;
        String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='endDate' ";
        String urgingSql = " select count(distinct code) from base_daily_urging_record where create_time>='"+startDate+"' ";
        if (StringUtils.isNotBlank(projectCode)){
            urgingSql += "  and project_code='"+projectCode+"' ";
        }
@ -3520,7 +3728,7 @@ public class DailyReportUploadService {
        }
        urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
        String acWorkHoursSql = " select sum(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) 'completion_hour' " +
        String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour' " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "Inner JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
@ -3560,11 +3768,11 @@ public class DailyReportUploadService {
        //员工离职or中途加入到项目中的会导致统计出来的数据发生变化
        result.put("weishangbao",((workDays*members-shangchuanTotal))<0?0:(workDays*members-shangchuanTotal));//未上报 工作日次数-总上报次数
        result.put("doubtList",doubtTypeList);
        result.put("urgingTotal",urgingTotal);//启动催出
        result.put("urgingTotal",urgingTotal);//项目催促
        result.put("acWorkHours",acWorkHours);//实际工作时长
        result.put("needWorkHours",needWorkHours);//应工作时长
        String doctorTypeSql = " select sum(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) 'completion_hour',count(distinct doc.id) as doctorTotal,IFNULL(dh.doctor_duty_name,'其他') as 'doctor_duty_name' " +
        String doctorTypeSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour',count(distinct doc.id) as doctorTotal,IFNULL(dh.doctor_duty_name,'其他') as 'doctor_duty_name' " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "Inner JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
@ -3574,9 +3782,6 @@ public class DailyReportUploadService {
        List<Map<String,Object>> doctorTypeHourList = jdbcTemplate.queryForList(doctorTypeSql);
        result.put("doctorTypeHourList",doctorTypeHourList);//按人员统计总用时与参与人数
        return result;
    }
@ -3586,7 +3791,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -3626,7 +3830,7 @@ public class DailyReportUploadService {
        if (StringUtils.isNotBlank(endDate)){
            sqlWhere +=" and up.report_date<='"+endDate+"' ";
        }
        sql = " select sum(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) 'completion_hour',rd.work_type_name " +
        sql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour',rd.work_type_name " +
                " from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "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  where 1=1  " +
@ -3650,7 +3854,6 @@ public class DailyReportUploadService {
        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("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
@ -3751,6 +3954,631 @@ public class DailyReportUploadService {
        return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,count);
    }
    /**
     * 周效能头部信息
     * @param user
     * @param projectCode
     * @param item_id
     * @param dept
     * @param memberId
     * @param startDate
     * @param endDate
     * @return
     */
    public JSONObject weekReportHeaderInfo(String user,String projectCode,String item_id,String dept,String memberId,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){
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
            } else if ("deptAdmin".equals(role_code)) {//查询出管理员所在部门
                if(StringUtils.isBlank(dept)){
                    sql = " select dh.dept_code 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 doc.id='"+user+"' ";
                    List<String> userDept = jdbcTemplate.queryForList(sql,String.class);
                    if (userDept.size()>0){
                        dept = userDept.get(0);
                    }else {
                        throw new Exception("您无权限操作");
                    }
                }
            }else {
                throw new Exception("您无权限操作");
            }
        }
        sql = " select dict_value from  wlyy_hospital_sys_dict where dict_name='healthUpload' and dict_code='healthUpload' ";
        List<String> dictValues = jdbcTemplate.queryForList(sql,String.class);
        JSONObject doubtTypeObj = new JSONObject();
        if (dictValues.size()>0){
            JSONObject tmp = JSONObject.parseObject(dictValues.get(0));
            doubtTypeObj = tmp.getJSONObject("dailyReportDoubtTypeName");
        }
        JSONObject result = new JSONObject();
        if (StringUtils.isBlank(endDate)){
            endDate = DateUtil.dateToStrLong(DateUtil.getDateEnd());
        }
        String sqlWhere = "  ";
        if (StringUtils.isNotBlank(projectCode)){
            sqlWhere += "  and rd.project_code='"+projectCode+"' ";
        }
        if (StringUtils.isNotBlank(item_id)){
            sqlWhere += "  and rd.report_item_id='"+item_id+"' ";
        }
        if (StringUtils.isNotBlank(dept)){
            sqlWhere +=" and dh.dept_code='"+dept+"' ";
        }
        if (StringUtils.isNotBlank(memberId)){
            sqlWhere +=" and up.doctor_id='"+memberId+"' ";
        }
        Long members = 0l;
        String memberSql = " select count(distinct mem.user_id) from base_daily_report_item it  " +
                "inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 " +
                "INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
                "INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
                "LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
                "LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id and rd.report_item_id = it.id where 1=1 "+sqlWhere;
        members = jdbcTemplate.queryForObject(memberSql,Long.class);
        if (StringUtils.isNotBlank(startDate)) {
            sqlWhere += " and up.report_date>='"+DateUtil.strToStrShort(startDate) +"' ";
        }if (StringUtils.isNotBlank(endDate)){
            sqlWhere += "  and up.report_date<='"+DateUtil.strToStrShort(endDate)+"' ";
        }
        Long workDays=0l;
        if (StringUtils.isNotBlank(startDate)&&StringUtils.isNotBlank(endDate)) {
            workDays = DateUtil.getWorkDays(startDate, endDate);
        }
       /* String shangchuanSql = " select distinct up.report_date from base_doctor_daily_report_upload up " +
                " INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "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 i on i.id = rd.report_item_id and i.del=1 where 1=1 " +
                " "+sqlWhere;
        //只计算出工作日上传的数量去求未上传
        List<String> upLoadTimes = jdbcTemplate.queryForList(shangchuanSql,String.class);
        Long shangchuanTotal = 0l;
        for (String tmp:upLoadTimes){
            if (!DateUtil.isHoliday(DateUtil.strToDate(tmp))){
                shangchuanTotal++;
            }
        }*/
        String shangchuanSql = " select COUNT(DISTINCT up.id) as total from base_doctor_daily_report_upload up " +
                " INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "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 i on i.id = rd.report_item_id and i.del=1 where 1=1 " +
                " "+sqlWhere;
        //只计算出工作日上传的数量去求未上传
        Map<String,Object> map= jdbcTemplate.queryForMap(shangchuanSql);
        Long shangchuanTotal = 0l;
        if (map!=null){
            String total = map.get("total").toString();
            shangchuanTotal = Long.parseLong(total);
        }
        Double acWorkHours = 0d;
        Long needWorkHours = workDays*members*8;
        Long urgingTotal=0l;
        String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+startDate+"'  ";
        if (StringUtils.isNotBlank(projectCode)){
            urgingSql += "  and project_code='"+projectCode+"' ";
        }
        if (StringUtils.isNotBlank(item_id)){
            urgingSql += "  and report_item_id='"+item_id+"' ";
        }
        if (StringUtils.isNotBlank(dept)){
            urgingSql +=" and dept='"+dept+"' ";
        }
        if (StringUtils.isNotBlank(memberId)){
            urgingSql +=" and receive_doctor='"+memberId+"' ";
        }
        urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
        String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour' " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "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 i on i.id = rd.report_item_id and i.del=1  where 1=1 " +
                " "+sqlWhere;
        acWorkHours = jdbcTemplate.queryForObject(acWorkHoursSql,Double.class);
        String doubtTypeSql = " select count(distinct up.id) as total,rd.doubt_type " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "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 i on i.id = rd.report_item_id and i.del=1 and up.state=1 where 1=1 " +
                " "+sqlWhere+"  group by rd.doubt_type";
        List<Map<String,Object>> doubtTypeList = jdbcTemplate.queryForList(doubtTypeSql);
        String count = "";
        List<Map<String,Object>> doubtTypeList1 = new ArrayList<>();
        for (Map<String,Object>tmp:doubtTypeList){
            if (tmp.get("doubt_type")==null){
                count = tmp.get("total").toString();
            }else {
                String doubtType = tmp.get("doubt_type").toString();
                if(doubtTypeObj.containsKey(doubtType)){
                    tmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                }else {
                    tmp.put("doubtTypeName","其他");
                }
                doubtTypeList1.add(tmp);
            }
        }
        if (StringUtils.isNoneBlank(count)){
            for (Map<String,Object>tmp:doubtTypeList1){
                if (tmp.get("doubt_type")!=null){
                    String doubtType = tmp.get("doubt_type").toString();
                    if (doubtType.equalsIgnoreCase("0")){
                        Integer count1 = Integer.parseInt(tmp.get("total").toString());
                        Integer count2 = Integer.parseInt(count);
                        tmp.put("total",count2+count1);
                        if(doubtTypeObj.containsKey(doubtType)){
                            tmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                        }else {
                            tmp.put("doubtTypeName","其他");
                        }
                    }
                }
            }
        }
        List<String> doubtListStr = doubtTypeList1.stream().map(e -> e.get("doubt_type").toString()).collect(Collectors.toList());
        for (String key:doubtTypeObj.keySet()){
            if (!doubtListStr.contains(key)){
                Map<String,Object>tmp = new HashMap<>();
                tmp.put("doubt_type",key);
                tmp.put("doubtTypeName",doubtTypeObj.get(key));
                tmp.put("total",0);
                doubtTypeList1.add(tmp);
            }
        }
        doubtTypeList1.sort(Comparator.comparing(e->e.get("doubt_type").toString()));
        //员工离职or中途加入到项目中的会导致统计出来的数据发生变化
        result.put("weishangbao",((workDays*members-shangchuanTotal))<0?0:(workDays*members-shangchuanTotal));//未上报 工作日次数-总上报次数
        result.put("doubtList",doubtTypeList1);
        result.put("urgingTotal",urgingTotal);//项目催促
        result.put("acWorkHours",acWorkHours);//实际工作时长
        result.put("needWorkHours",needWorkHours);//应工作时长
        //项目启动、完成、启动超时、完成超时、催促数量
        String projectItemSql = " select count(id) from base_daily_report_item where del=1 ";
        if (StringUtils.isNotBlank(dept)){
            projectItemSql += " and dept='"+dept+"' ";
        }
        //项目启动
        String projectItemSqlCondition = " and ac_begin_time>='"+startDate+" 00:00:00' and ac_begin_time<='"+endDate+" 23:59:59' ";
        result.put("projectItemStart",jdbcTemplate.queryForObject(projectItemSql+projectItemSqlCondition,Integer.class));
        //项目完成
        projectItemSqlCondition = " and state=1 and completion_time>='"+startDate+" 00:00:00' and completion_time<='"+endDate+" 23:59:59' ";
        result.put("projectItemComplete",jdbcTemplate.queryForObject(projectItemSql+projectItemSqlCondition,Integer.class));
        //启动超时
        projectItemSqlCondition = "  and begin_time>='"+startDate+" 00:00:00' and begin_time<='"+endDate+" 23:59:59'  and (ac_begin_time is null or DATE_FORMAT(ac_begin_time,'%Y-%m-%d')>begin_time )  ";
        result.put("projectItemStartOverTime",jdbcTemplate.queryForObject(projectItemSql+projectItemSqlCondition,Integer.class));
        //完成超时
        projectItemSqlCondition = " and (state=1 and completion_time>='"+startDate+" 00:00:00' and completion_time<='"+endDate+" 23:59:59'  and DATE_FORMAT(end_time,'%Y-%m-%d')>end_time )" +
                " or  ( state =0 and end_time<'"+endDate+" 23:59:59' )  ";
        result.put("projectItemCompleteOverTime",jdbcTemplate.queryForObject(projectItemSql+projectItemSqlCondition,Integer.class));
        //催促数量
        urgingSql = " select count(distinct project_code) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+startDate+"'  ";
        result.put("projectUrgingTotal",jdbcTemplate.queryForObject(urgingSql,Integer.class));
        String doctorTypeSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour',count(distinct doc.id) as doctorTotal,IFNULL(dh.doctor_duty_name,'其他') as 'doctor_duty_name' " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "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 i on i.id = rd.report_item_id and i.del=1 where 1=1 " +
                " "+sqlWhere+" group by doctor_duty_code ";
        List<Map<String,Object>> doctorTypeHourList = jdbcTemplate.queryForList(doctorTypeSql);
        result.put("doctorTypeHourList",doctorTypeHourList);//按人员统计总用时与参与人数
        return result;
    }
    /**
     * 周效能列表信息
     * @param user
     * @param projectCode
     * @param item_id
     * @param dept
     * @param memberId
     * @param startDate
     * @param endDate
     * @return
     */
    public Map<String,Object> weekReportListInfo(String user,String projectCode,String item_id,String dept,String memberId,String startDate,String endDate) throws Exception {
        Map<String,Object> result = new HashMap<>();
        String  sql = " select dict_value from  wlyy_hospital_sys_dict where dict_name='healthUpload' and dict_code='healthUpload' ";
        List<String> dictValues = jdbcTemplate.queryForList(sql,String.class);
        JSONObject doubtTypeObj = new JSONObject();
        if (dictValues.size()>0){
            JSONObject tmp = JSONObject.parseObject(dictValues.get(0));
            doubtTypeObj = tmp.getJSONObject("dailyReportDoubtTypeName");
        }
        //判断导出人权限
        sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        if (userRoles.size()==0){
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
            } else if ("deptAdmin".equals(role_code)) {//查询出管理员所在部门
                if(StringUtils.isBlank(dept)){
                    sql = " select dh.dept_code 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 doc.id='"+user+"' ";
                    List<String> userDept = jdbcTemplate.queryForList(sql,String.class);
                    if (userDept.size()>0){
                        dept = userDept.get(0);
                    }else {
                        throw new Exception("您无权限操作");
                    }
                }
            }else {
                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+"' ";
        }
        if (StringUtils.isNotBlank(dept)){//查询指定部门
            sqlCondition += "  and dh.dept_code='"+dept+"' ";
        }
        //部门效能
        String deptListSql = " select distinct code,name from dict_hospital_dept where 1=1 ";
        if (StringUtils.isNotBlank(dept)){
            deptListSql+=" and code='"+dept+"' ";
        }
        deptListSql += " order by code asc";
        List<Map<String,Object>> deptList = jdbcTemplate.queryForList(deptListSql);
        for (Map<String,Object>deptTmp:deptList){
            String deptCodeTmp = deptTmp.get("code").toString();
            String sqlWhere =" and dh.dept_code='"+deptCodeTmp+"' ";
            Long members = 0l;
            String memberSql = " select count(distinct mem.user_id) from base_daily_report_item it  " +
                    "inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 " +
                    "INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
                    "INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
                    "LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
                    "LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id and rd.report_item_id = it.id where 1=1 "+sqlWhere;
            members = jdbcTemplate.queryForObject(memberSql,Long.class);
            if (StringUtils.isNotBlank(startDate)) {
                sqlWhere += " and up.report_date>='"+DateUtil.strToStrShort(startDate) +"' ";
            }if (StringUtils.isNotBlank(endDate)){
                sqlWhere += "  and up.report_date<='"+DateUtil.strToStrShort(endDate)+"' ";
            }
            Long workDays=0l;
            if (StringUtils.isNotBlank(startDate)&&StringUtils.isNotBlank(endDate)) {
                workDays = DateUtil.getWorkDays(startDate, endDate);
            }
            /*String shangchuanSql = " select distinct up.report_date from base_doctor_daily_report_upload up " +
                    " INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "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 i on i.id = rd.report_item_id and i.del=1 where 1=1 " +
                    " "+sqlWhere;
            //只计算出工作日上传的数量去求未上传
            List<String> upLoadTimes = jdbcTemplate.queryForList(shangchuanSql,String.class);
            Long shangchuanTotal = 0l;
            for (String tmp:upLoadTimes){
                if (!DateUtil.isHoliday(DateUtil.strToDate(tmp))){
                    shangchuanTotal++;
                }
            }*/
            String shangchuanSql = " select COUNT(DISTINCT up.id) as total from base_doctor_daily_report_upload up " +
                    " INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "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 i on i.id = rd.report_item_id and i.del=1 where 1=1 " +
                    " "+sqlWhere;
            //只计算出工作日上传的数量去求未上传
            Map<String,Object> map= jdbcTemplate.queryForMap(shangchuanSql);
            Long shangchuanTotal = 0l;
            if (map!=null){
                String total = map.get("total").toString();
                shangchuanTotal = Long.parseLong(total);
            }
            Double acWorkHours = 0d;
            Long needWorkHours = workDays*members*8;
            Long urgingTotal=0l;
            String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+startDate+"'  ";
            if (StringUtils.isNotBlank(projectCode)){
                urgingSql += "  and project_code='"+projectCode+"' ";
            }
            if (StringUtils.isNotBlank(item_id)){
                urgingSql += "  and report_item_id='"+item_id+"' ";
            }
            if (StringUtils.isNotBlank(dept)){
                urgingSql +=" and dept='"+dept+"' ";
            }
            if (StringUtils.isNotBlank(memberId)){
                urgingSql +=" and receive_doctor='"+memberId+"' ";
            }
            urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
            String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour' " +
                    " from base_doctor_daily_report_upload up  " +
                    "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "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 i on i.id = rd.report_item_id and i.del=1  where 1=1 " +
                    " "+sqlWhere;
            acWorkHours = jdbcTemplate.queryForObject(acWorkHoursSql,Double.class);
            String doubtTypeSql = " select count(distinct up.id) as total,rd.doubt_type " +
                    " from base_doctor_daily_report_upload up  " +
                    "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "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 i on i.id = rd.report_item_id and i.del=1 AND up.state = 1 where 1=1 " +
                    " "+sqlWhere+"  group by rd.doubt_type";
            List<Map<String,Object>> doubtTypeList = jdbcTemplate.queryForList(doubtTypeSql);
            String count = "";
            List<Map<String,Object>> doubtTypeList1 = new ArrayList<>();
            for (Map<String,Object> doubtTmp:doubtTypeList){
                if (doubtTmp.get("doubt_type")==null){
                    count = doubtTmp.get("total").toString();
                }else {
                    String doubtType = doubtTmp.get("doubt_type").toString();
                    if(doubtTypeObj.containsKey(doubtType)){
                        doubtTmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                    }else {
                        doubtTmp.put("doubtTypeName","其他");
                    }
                    doubtTypeList1.add(doubtTmp);
                }
            }
            if (StringUtils.isNoneBlank(count)){
                for (Map<String,Object>doubtTmp:doubtTypeList1){
                    if (doubtTmp.get("doubt_type")!=null){
                        String doubtType = doubtTmp.get("doubt_type").toString();
                        if (doubtType.equalsIgnoreCase("0")){
                            Integer count1 = Integer.parseInt(doubtTmp.get("total").toString());
                            Integer count2 = Integer.parseInt(count);
                            doubtTmp.put("total",count2+count1);
                            if(doubtTypeObj.containsKey(doubtType)){
                                doubtTmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                            }else {
                                doubtTmp.put("doubtTypeName","其他");
                            }
                        }
                    }
                }
            }
            List<String> doubtListStr = doubtTypeList1.stream().map(e -> e.get("doubt_type").toString()).collect(Collectors.toList());
            for (String key:doubtTypeObj.keySet()){
                if (!doubtListStr.contains(key)){
                    Map<String,Object>tmp = new HashMap<>();
                    tmp.put("doubt_type",key);
                    tmp.put("doubtTypeName",doubtTypeObj.get(key));
                    tmp.put("total",0);
                    doubtTypeList1.add(tmp);
                }
            }
            doubtTypeList1.sort(Comparator.comparing(e->e.get("doubt_type").toString()));
            //员工离职or中途加入到项目中的会导致统计出来的数据发生变化
            deptTmp.put("weishangbao",((workDays*members-shangchuanTotal))<0?0:(workDays*members-shangchuanTotal));//未上报 工作日次数-总上报次数
            deptTmp.put("doubtList",doubtTypeList1);
            deptTmp.put("urgingTotal",urgingTotal);//项目催促
            result.put("acWorkHours",acWorkHours);//实际工作时长
            result.put("needWorkHours",needWorkHours);//应工作时长
        }
        result.put("deptList",deptList);
        //项目效能
        String sqlList = "  select dict.dict_code project_code,dict.dict_value projectName,IFNULL( A.completionHour,0) 'completionHour', " +
                " IFNULL(A.doctorTotal,0) 'doctorTotal',B.dict_code 'categoryCode',B.dict_value 'categoryName',C.dict_code 'levelCode' ,C.dict_value 'levelName' from wlyy_hospital_sys_dict dict " +
                " Left JOIN (" +
                " select i.project_code,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) 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 INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1  where i.del=1 "+sqlCondition+" GROUP BY i.project_code )A " +
                "on A.project_code = dict.dict_code " +
                " INNER JOIN ( select dict_code,dict_value,sort from wlyy_hospital_sys_dict where dict_name='daily_report_category' )B on dict.saas_id = B.dict_code  " +
                " INNER JOIN ( select dict_code,dict_value,sort from wlyy_hospital_sys_dict where dict_name='daily_report_level' )C on dict.py_code = C.dict_code " +
                " where dict.dict_name='daily_report_project' ";
        if (StringUtils.isNotBlank(projectCode)){
            sqlList +=" and dict.dict_code='"+projectCode+"' ";
        }
        sqlList += "  order by B.sort asc, c.sort asc,completionHour desc ";
        List<Map<String,Object>> projectList = jdbcTemplate.queryForList(sqlList);//一级项目列表
        for (Map<String,Object> tmp:projectList){
            String projectCodeTmp = tmp.get("project_code").toString();//一级项目Code
            String projectTmpSqlCondition = " ";
            if (StringUtils.isNotBlank(startDate)){
                projectTmpSqlCondition += " and up.report_date>='"+startDate+"' ";
            }
            if (StringUtils.isNotBlank(endDate)){
                projectTmpSqlCondition += " and up.report_date<='"+endDate+"' ";
            }
            if (StringUtils.isNotBlank(dept)){//查询指定部门
                projectTmpSqlCondition += "  and dh.dept_code='"+dept+"' ";
            }
            String projectItemSql = " select i.id,i.dept,i.dept_name deptName,i.project_code,i.project_name,CAST((sum(cast(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')) as decimal(18,2)))) as char ) as completionHour, " +
                    " count(distinct up.doctor_id) as doctorTotal,i.begin_time,i.end_time,i.ac_begin_time, DATE_FORMAT(i.completion_time,'%Y-%m-%d %H:%i:%S') completion_time from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
                    " INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "  INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1  where i.del=1 and i.project_code='"+projectCodeTmp+"'  "+projectTmpSqlCondition+" GROUP BY i.id  ";
            projectItemSql += "  order by  completionHour desc ";
            List<Map<String,Object>> projectItemList = jdbcTemplate.queryForList(projectItemSql);//二级项目列表
            for (Map<String,Object>itemTmp:projectItemList){//未饱和、效率、效能、项目催出情况
                String projectItemCode = itemTmp.get("id").toString();//二级项目code
                String itemTmpSqlCondition = " ";
                if (StringUtils.isNotBlank(startDate)){
                    itemTmpSqlCondition += " and up.report_date>='"+startDate+"' ";
                }
                if (StringUtils.isNotBlank(endDate)){
                    itemTmpSqlCondition += " and up.report_date<='"+endDate+"' ";
                }
                if (StringUtils.isNotBlank(dept)){//查询指定部门
                    itemTmpSqlCondition += "  and dh.dept_code='"+dept+"' ";
                }
                String doubtTypeSql = " select count(distinct up.id) as total,rd.doubt_type " +
                        " from base_doctor_daily_report_upload up  " +
                        "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                        "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 i on i.id = rd.report_item_id and i.del=1 AND up.state = 1 where i.id='"+projectItemCode+"' " +
                        " "+itemTmpSqlCondition+"  group by rd.doubt_type";
                List<Map<String,Object>> doubtTypeList = jdbcTemplate.queryForList(doubtTypeSql);
                /*for (Map<String,Object>doubtTmp:doubtTypeList){
                    String doubtType = doubtTmp.get("doubt_type").toString();
                    if(doubtTypeObj.containsKey(doubtType)){
                        doubtTmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                    }else {
                        doubtTmp.put("doubtTypeName","其他");
                    }
                }*/
                String count = "";
                List<Map<String,Object>> doubtTypeList1 = new ArrayList<>();
                for (Map<String,Object> doubtTmp:doubtTypeList){
                    if (doubtTmp.get("doubt_type")==null){
                        count = doubtTmp.get("total").toString();
                    }else {
                        String doubtType = doubtTmp.get("doubt_type").toString();
                        if(doubtTypeObj.containsKey(doubtType)){
                            doubtTmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                        }else {
                            doubtTmp.put("doubtTypeName","其他");
                        }
                        doubtTypeList1.add(doubtTmp);
                    }
                }
                if (StringUtils.isNoneBlank(count)){
                    for (Map<String,Object>doubtTmp:doubtTypeList1){
                        if (doubtTmp.get("doubt_type")!=null){
                            String doubtType = doubtTmp.get("doubt_type").toString();
                            if (doubtType.equalsIgnoreCase("0")){
                                Integer count1 = Integer.parseInt(doubtTmp.get("total").toString());
                                Integer count2 = Integer.parseInt(count);
                                doubtTmp.put("total",count2+count1);
                                if(doubtTypeObj.containsKey(doubtType)){
                                    doubtTmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
                                }else {
                                    doubtTmp.put("doubtTypeName","其他");
                                }
                            }
                        }
                    }
                }
                String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+startDate+"' " +
                        " and project_code='"+projectCodeTmp+"' and report_item_id='"+projectItemCode+"' ";
                if (StringUtils.isNotBlank(dept)){
                    urgingSql +=" and dept='"+dept+"' ";
                }
                Long urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
                itemTmp.put("doubtList",doubtTypeList1);//各存疑类型
                itemTmp.put("urgingTotal",urgingTotal);//项目催促
            }
            tmp.put("projectItemList",projectItemList);
        }
        result.put("projectList",projectList);
        return result;
    }
    /**
     * 获取管理员直系下属,
     * @param user
     * @return
     */
    public List<String> getDoctorByRole(String user){
        List<String> doctors = new ArrayList<>();
        String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='BOOS_ADMIN_SENDER'  ";
        List<String> boosSenderIds = jdbcTemplate.queryForList(sql, String.class);
        String boosID = " ";
        if (boosSenderIds.size() > 0) {
            boosID = boosSenderIds.get(0);
        }
        sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        if (userRoles.size()==0){
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
                sql =  " select DISTINCT doctor_code from base_doctor_role where doctor_code<>'"+boosID+"'" +
                        " UNION " +
                        "SELECT DISTINCT doc.id from base_doctor doc INNER JOIN base_doctor_hospital dh  " +
                        "on doc.id = dh.doctor_code and doc.del=1 and dh.del=1 and doc.identity=0  " +
                        "LEFT JOIN (select role.doctor_code,dh.dept_code from base_doctor_role role INNER JOIN base_doctor doc on role.doctor_code = doc.id and doc.del=1 " +
                        " INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1  )RU on dh.dept_code = RU.dept_code " +
                        " where RU.dept_code is null  ";
                doctors = jdbcTemplate.queryForList(sql,String.class);
            } else if ("deptAdmin".equals(role_code)) {//查询出管理员所在部门
                sql =" 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 doc.identity=0 and dh2.del=1 and doc.del=1  ";
                doctors = jdbcTemplate.queryForList(sql,String.class);
            }
        }
        return doctors;
    }
    /**
     * 初始化项目成员
     * @return
     */
    public String initItemMembers(){
        String sql = " select id,dept  from base_daily_report_item where del=1 ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        List<BaseDailyReportItemMembersDO> membersDOS = new ArrayList<>();
        for (Map<String,Object> tmp:list){
            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='"+tmp.get("dept").toString()+"' ";
            List<Map<String,Object>> membersList = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> member:membersList){
                String docTmp = member.get("id").toString();
                String docNameTmp = member.get("name").toString();
                String reportItemId = tmp.get("id").toString();
                BaseDailyReportItemMembersDO membersDOTmp = reportItemMembersDao.findMembers(reportItemId,docTmp);
                if (null==membersDOTmp){
                    membersDOTmp = new BaseDailyReportItemMembersDO();
                    membersDOTmp.setReportItemId(reportItemId);
                    membersDOTmp.setUserId(docTmp);
                    membersDOTmp.setUserName(docNameTmp);
                    membersDOTmp.setDel(1);
                    membersDOS.add(membersDOTmp);
                }
            }
        }
        if(membersDOS.size()>0){
            reportItemMembersDao.save(membersDOS);
        }
        return "success";
    }
    /**
     * 导出项目计划周报月报用时情况
     * @param user
@ -3766,7 +4594,6 @@ public class DailyReportUploadService {
        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)){
@ -3788,7 +4615,7 @@ public class DailyReportUploadService {
            throw new Exception("导出失败,请检查传入参数");
        }
        //项目耗时情况
        sql = " select CONCAT(it.title,'(',it.dept_name,')') title,it.content,sum(IFNULL(pd.actual_completion_hour,IFNULL(pd.completion_hour,0))) 'completion_hour' ," +
        sql = " select CONCAT(it.title,'(',it.dept_name,')') title,it.content,sum(cast(IFNULL(pd.actual_completion_hour,IFNULL(pd.completion_hour,0)) as decimal(18,2))) '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 " +
@ -3802,7 +4629,7 @@ public class DailyReportUploadService {
        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," +
                "DATE_FORMAT(up.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', " +
                " rd.doubt_type doubtType, rd.remark " +
                "from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id " +
@ -3861,7 +4688,7 @@ public class DailyReportUploadService {
        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," +
                "DATE_FORMAT(up.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'," +
                " rd.doubt_type doubtType, rd.remark " +
                "from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id " +

+ 22 - 6
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -39,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -1543,10 +1544,19 @@ public class HealthCareService {
                ylzMedicalRelationDO.setEnterpriseSupplement(jsonObject.getString("enterprise_supplement"));
                ylzMedicalRelationDO.setJtgjPay(jsonObject.getString("jtgj_pay"));
                ylzMedicalRelationDO.setCollector(jsonObject.getString("collector"));
                Double price= Double.parseDouble(ylzMedicalRelationDO.getTcjjPay())+Double.parseDouble(ylzMedicalRelationDO.getSbjjPay())+
                BigDecimal b1 = new BigDecimal(ylzMedicalRelationDO.getTcjjPay());
                BigDecimal b2 = new BigDecimal(ylzMedicalRelationDO.getSbjjPay());
                BigDecimal b3 = new BigDecimal(ylzMedicalRelationDO.getGwyPay());
                BigDecimal b4 = new BigDecimal(ylzMedicalRelationDO.getJzfpPay());
                BigDecimal b5 = new BigDecimal(ylzMedicalRelationDO.getYljzPay());
                BigDecimal b6 = new BigDecimal(ylzMedicalRelationDO.getOtherPay());
                BigDecimal b7 = new BigDecimal(ylzMedicalRelationDO.getEnterpriseSupplement());
                Double price = b1.add(b2).add(b3).add(b4).add(b5).add(b6).add(b7).doubleValue();
                /*Double price= Double.parseDouble(ylzMedicalRelationDO.getTcjjPay())+Double.parseDouble(ylzMedicalRelationDO.getSbjjPay())+
                        Double.parseDouble(ylzMedicalRelationDO.getGwyPay())+
                        Double.parseDouble(ylzMedicalRelationDO.getJzfpPay())+Double.parseDouble(ylzMedicalRelationDO.getYljzPay())+
                        Double.parseDouble(ylzMedicalRelationDO.getOtherPay())+Double.parseDouble(ylzMedicalRelationDO.getEnterpriseSupplement());
                        Double.parseDouble(ylzMedicalRelationDO.getOtherPay())+Double.parseDouble(ylzMedicalRelationDO.getEnterpriseSupplement());*/
                ylzMedicalRelationDO.setMedicalPrice(price+"");
                logger.info("meidicalPrice====="+price);
                ylzMedicalRelationDO = ylzMedicailRelationDao.save(ylzMedicalRelationDO);
@ -1747,6 +1757,7 @@ public class HealthCareService {
        data.put("his_serial",ylzMedicalRelationDO.getHisSerial());//his流水号
        data.put("doctor_level",ylzMedicalRelationDO.getDoctorLevel());//医师诊查费等级
        data.put("redirect_url",wlyyHospitalSysDictDO.getDictValue());//回调地址
        data.put("disease_code",ylzMedicalRelationDO.getDiseaseCode());//病种编码
        JSONArray array = new JSONArray();
        JSONObject object = new JSONObject();
        object.put("detail_serial",ylzMedicalRelationDO.getDetailSerial());
@ -1888,12 +1899,17 @@ public class HealthCareService {
            JSONObject jsonObject = object.getJSONObject("encrypt_data");
            String insuranceSerial = jsonObject.getString("insurance_serial");
            String billSerial = jsonObject.getString("bill_serial");
            String personCash = jsonObject.getString("person_cash");
            YlzMedicalRelationDO ylzMedicalRelationDO = ylzMedicailRelationDao.findByInsuranceSerial(insuranceSerial);
            if (ylzMedicalRelationDO!=null){
                ylzMedicalRelationDO.setStatus(1);
                ylzMedicalRelationDO.setBillSerial(billSerial);
                ylzMedicalRelationDO.setPayDate(DateUtil.strToDate(jsonObject.getString("pay_date")+jsonObject.getString("pay_time")));
                ylzMedicailRelationDao.save(ylzMedicalRelationDO);
                if (!ylzMedicalRelationDO.getPersonCash().equalsIgnoreCase(personCash)){
                    throw new Exception("医保结算金额不一致!");
                }else {
                    ylzMedicalRelationDO.setStatus(1);
                    ylzMedicalRelationDO.setBillSerial(billSerial);
                    ylzMedicalRelationDO.setPayDate(DateUtil.strToDate(jsonObject.getString("pay_date")+jsonObject.getString("pay_time")));
                    ylzMedicailRelationDao.save(ylzMedicalRelationDO);
                }
            }
        }
        return result;

+ 4 - 2
business/base-service/src/main/java/com/yihu/jw/internet/service/InternetCommonService.java

@ -1230,8 +1230,10 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                jb.put("pres_doc_name", info.get("doctor_name")== null?"0":info.get("doctor_name"));
                jb.put("pres_doc_id_no", info.get("docIdcard")== null?"0":info.get("docIdcard"));
                jb.put("trial_doc_code", trialDocCode);
                jb.put("trial_doc_name", "乐女金");
                jb.put("trial_doc_id_no","362531198407290348");
                jb.put("trial_doc_name", "陈丽玲");
                jb.put("trial_doc_id_no","350524198906247742");
        /*        jb.put("trial_doc_name", "乐女金");
                jb.put("trial_doc_id_no","362531198407290348");*/
                jb.put("diag_code", info.get("icd10"));
                jb.put("diag_name", info.get("icd10_name"));
                jb.put("diseases_type", "0");

+ 4 - 0
common/common-entity/sql记录

@ -2214,3 +2214,7 @@ INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_
INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('opinionFeedbackUser2', NULL, 'opinionFeedbackUser', '2', '社工', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('opinionFeedbackUser3', NULL, 'opinionFeedbackUser', '3', '教师', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `base`.`wlyy_hospital_sys_dict`(`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('opinionFeedbackUser4', NULL, 'opinionFeedbackUser', '4', '助老员', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 20220926 lb
alter table base_daily_report_detail add column doubt_read tinyint(2) default null comment '异常效率是否已读0未读1已读';
alter table base_doctor_daily_report_upload add column nice_work_type tinyint(2) default null comment '点赞类型 字典nice_work_type';

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportDetailDO.java

@ -39,6 +39,7 @@ public class BaseDailyReportDetailDO extends UuidIdentityEntityWithOperator {
    private String workTypeName;//工作分类名称 字典healthUpload下的dailyWorkType
    private String progressType;//工作进展情况 字典healthUpload下的progressType
    private String progressTypeName;//工作进展
    private Integer doubtRead;//效率异常是否已读0未读1已读
    /**
     * 非数据库字段
@ -248,4 +249,12 @@ public class BaseDailyReportDetailDO extends UuidIdentityEntityWithOperator {
    public void setProgressTypeName(String progressTypeName) {
        this.progressTypeName = progressTypeName;
    }
    public Integer getDoubtRead() {
        return doubtRead;
    }
    public void setDoubtRead(Integer doubtRead) {
        this.doubtRead = doubtRead;
    }
}

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportUploadDO.java

@ -23,6 +23,7 @@ public class BaseDailyReportUploadDO extends UuidIdentityEntityWithOperator {
    private String leaveHour;//请假时长
    private String reportDate; //上报日期
    private String totalHour;//上报时长
    private Integer niceWorkType;//点赞类型
    /**
     * 非数据库字段
@ -130,4 +131,12 @@ public class BaseDailyReportUploadDO extends UuidIdentityEntityWithOperator {
    public void setDoubt(boolean doubt) {
        this.doubt = doubt;
    }
    public Integer getNiceWorkType() {
        return niceWorkType;
    }
    public void setNiceWorkType(Integer niceWorkType) {
        this.niceWorkType = niceWorkType;
    }
}

+ 4 - 0
gateway/ag-basic/src/main/resources/application.yml

@ -69,6 +69,10 @@ zuul:
    svr-base-yg:
      path: /cityihealth/baseygTest/**
      serviceId: svr-base-yg
#药柜设备备用地址2
    svr-base-prod:
      path: /cityihealth/baseProd/**
      serviceId: svr-base-prod
#药柜后台预发布
    svr-authentication-yg:
      path: /cityihealth/authygTest/**

+ 3 - 3
svr/svr-cloud-care/src/main/resources/application.yml

@ -477,9 +477,9 @@ es:
  host:  http://10.18.43.40:9200
  tHost: 10.18.43.40:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr
  user: lion
  password: jkzlehr
  securityUser: zjxl:6Dbq&fHg
  user: zjxl
  password: 6Dbq&fHg
# 上传文件临时路径配置
FileTempPath:

+ 3 - 3
svr/svr-cloud-device/src/main/resources/application.yml

@ -340,9 +340,9 @@ es:
  host:  http://10.18.43.40:9000
  tHost: 10.18.43.40:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr
  user: lion
  password: jkzlehr
  securityUser: zjxl:6Dbq&fHg
  user: zjxl
  password: 6Dbq&fHg
# 上传文件临时路径配置
FileTempPath:

+ 120 - 9
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/dailyReport/DailyReportUploadPoint.java

@ -15,6 +15,7 @@ import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.date.DateUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -118,6 +120,11 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
                                        @ApiParam(name = "jsonData", value = "事项信息实体")
                                        @RequestParam(value = "jsonData", required = true) String jsonData) {
        try {
            Date date = new Date();
            Date date2 = DateUtil.strToDate(DateUtil.getStringDateShort()+" 22:00:00");
            if (date.after(date2)){
                return ObjEnvelop.getError("您已错过提交时间,无法提交!日报提交和修改时间为当天晚上十点之前。");
            }
            List<BaseDailyReportDetailDO> healthUploadDOs = new ArrayList<>();
            if (StringUtils.isNoneBlank(jsonData)){
                healthUploadDOs = JSONArray.parseArray(jsonData,BaseDailyReportDetailDO.class);
@ -149,6 +156,19 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @PostMapping(value = "thumbsUpDailyReport")
    @ApiOperation(value = "点赞员工日报")
    public ObjEnvelop thumbsUpDailyReport(@ApiParam(name = "id", value = "日报id")
                                         @RequestParam(value = "id", required = true) String id,
                                         @ApiParam(name = "niceWorkType", value = "点赞类型 取自字典")
                                         @RequestParam(value = "niceWorkType", required = true) Integer niceWorkType) {
        try {
            return success(dailyReportUploadService.thumbsUpDailyReport(id,niceWorkType));
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "verifiedDoubtItem")
    @ApiOperation(value = "核实每日报表疑虑")
    public ObjEnvelop verifiedDoubtItem(@ApiParam(name = "doctorId", value = "doctorId")
@ -188,8 +208,12 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "getUrgingList")
    @ApiOperation(value = "查询催促记录列表")
    public ListEnvelop<BaseDailyUrgingRecordDO> getUrgingList(@ApiParam(name = "code", value = "催促记录code")
    @ApiOperation(value = "查询催促记录列表(本人+管辖人员)")
    public ListEnvelop<BaseDailyUrgingRecordDO> getUrgingList(@ApiParam(name = "user", value = "当前用户")
                                                              @RequestParam(value = "user", required = false) String user,
                                                              @ApiParam(name = "dept", value = "dept")
                                                              @RequestParam(value = "dept", required = false) String dept,
                                                              @ApiParam(name = "code", value = "催促记录code")
                                                              @RequestParam(value = "code", required = false) String code,
                                                              @ApiParam(name = "doctor", value = "催促对象")
                                                              @RequestParam(value = "doctor", required = false) String doctor,
@ -202,14 +226,14 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
                                                              @ApiParam(name = "endTime", value = "endTime")
                                                              @RequestParam(value = "endTime", required = false) String endTime) {
        try {
            return ListEnvelop.getSuccess("success",dailyReportUploadService.getUrgingList(code,doctor,reportId,createUser,startTime,endTime));
            return ListEnvelop.getSuccess("success",dailyReportUploadService.getUrgingList(user,dept,code,doctor,reportId,createUser,startTime,endTime));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "getUrgingDetail")
    @ApiOperation(value = "查询催促记录列表")
    @ApiOperation(value = "查询催促记录详情")
    public ListEnvelop<BaseDailyUrgingRecordDO> getUrgingDetail(@ApiParam(name = "code", value = "催促记录code")
                                                              @RequestParam(value = "code", required = false) String code) {
        try {
@ -252,9 +276,11 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
    @GetMapping(value = "selectReportById")
    @ApiOperation(value = "根据id查看日报记录")
    public ObjEnvelop selectReportById(@ApiParam(name = "id", value = "日报id")
                                       @RequestParam(value = "id", required = true) String id) {
                                       @RequestParam(value = "id", required = true) String id,
                                        @ApiParam(name = "doctor", value = "doctor")
                                        @RequestParam(value = "id", required = false) String doctor) {
        try {
            BaseDailyReportUploadDO reportUploadDO = dailyReportUploadService.selectReportById(id);
            BaseDailyReportUploadDO reportUploadDO = dailyReportUploadService.selectReportById(doctor,id);
            return ObjEnvelop.getSuccess("success",reportUploadDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
@ -304,7 +330,7 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "医生首页")
    public ObjEnvelop selectDailyReportByRole(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                        @RequestParam(value = "dept", required = false) String dept,
                                        @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                        @ApiParam(name = "level", value = "1院级管理员,2科室管理员3员工")
                                        @RequestParam(value = "level", required = false) Integer level,
                                        @ApiParam(name = "doctorId", value = "医生id")
                                        @RequestParam(value = "doctorId", required = false) String doctorId) {
@ -316,6 +342,8 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "selectHeaderList")
    @ApiOperation(value = "首页按照科室统计")
    public ListEnvelop selectHeaderList(@ApiParam(name = "dept", value = "科室code")
@ -390,8 +418,8 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
    @GetMapping(value = "selectListInfoByTotal")
    @ApiOperation(value = "获取列表的具体人员信息")
    public ListEnvelop selectListInfoByTotal(@ApiParam(name = "登录用户", value = "登录用户")
                                             @RequestParam(value = "登录用户", required = false) String user,
    public ListEnvelop selectListInfoByTotal(@ApiParam(name = "user", value = "登录用户")
                                             @RequestParam(value = "user", required = false) String user,
                                             @ApiParam(name = "dept", value = "科室code")
                                             @RequestParam(value = "dept", required = false) String dept,
                                             @ApiParam(name = "idType", value = "身份类别")
@ -416,6 +444,33 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "selectListInfoByTotal2")
    @ApiOperation(value = "工作核实、效能异常列表")
    public ListEnvelop selectListInfoByTotal2(@ApiParam(name = "user", value = "登录用户")
                                             @RequestParam(value = "user", required = false) String user,
                                             @ApiParam(name = "dept", value = "科室code")
                                             @RequestParam(value = "dept", required = false) String dept,
                                             @ApiParam(name = "state", value = "核实状态 0未核实 1已核实")
                                             @RequestParam(value = "state", required = false) String state,
                                             @ApiParam(name = "doubtState", value = "存疑0无存疑1存疑")
                                             @RequestParam(value = "doubtState", required = false) Integer doubtState,
                                             @ApiParam(name = "readState", value = "是否已读0未读1已读")
                                             @RequestParam(value = "readState", required = false) Integer readState,
                                             @ApiParam(name = "startDate", value = "开始时间")
                                             @RequestParam(value = "startDate", required = false) String startDate,
                                             @ApiParam(name = "endDate", value = "结束时间")
                                             @RequestParam(value = "endDate", required = false) String endDate,
                                             @ApiParam(name = "name", value = "具体医生姓名")
                                             @RequestParam(value = "name", required = false) String name,
                                             @ApiParam(name = "filterOthers", value = "过滤不属于自己核实的数据1过滤 0不过滤")
                                             @RequestParam(value = "filterOthers", required = false) String filterOthers) {
        try {
            return ListEnvelop.getSuccess("success",dailyReportUploadService.selectListInfoByTotal2(user,dept,state,startDate,endDate,name,doubtState,readState,filterOthers));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectListByTotalDoubt")
    @ApiOperation(value = "获取存疑列表的时间及数量")
    public ListEnvelop selectListByTotalDoubt(@ApiParam(name = "dept", value = "科室code")
@ -838,6 +893,16 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @PostMapping(value = "initItemMembers")
    @ApiOperation(value = "初始化项目成员员工")
    public Envelop initItemMembers() {
        try {
            return Envelop.getSuccess(dailyReportUploadService.initItemMembers());
        } catch (Exception e) {
            return failedException(e);
        }
    }
    @RequestMapping(value = "excelControl/getProjectItemReport", method = RequestMethod.GET)
    @ApiOperation("导出项目计划周报月报用时情况")
    public Envelop getProjectItemReport(@ApiParam(name = "user", value = "user")
@ -1036,4 +1101,50 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "weekReportHeaderInfo")
    @ApiOperation(value = "周效能头部信息")
    public ObjEnvelop weekReportHeaderInfo(@ApiParam(name = "user", value = "user")
                                                @RequestParam(value = "user", required = true) String user,
                                                @ApiParam(name = "projectCode", value = "一级项目Code")
                                                @RequestParam(value = "projectCode", required = false) String projectCode,
                                                @ApiParam(name = "item_id", value = "二级项目id")
                                                @RequestParam(value = "item_id", required = false) String item_id,
                                                @ApiParam(name = "dept", value = "dept")
                                                @RequestParam(value = "dept", required = false) String dept,
                                                @ApiParam(name = "memberId", value = "memberId")
                                                @RequestParam(value = "memberId", required = false) String memberId,
                                                @ApiParam(name = "startDate", value = "startDate")
                                                @RequestParam(value = "startDate", required = false) String startDate,
                                                @ApiParam(name = "endDate", value = "endDate")
                                                @RequestParam(value = "endDate", required = false) String endDate) {
        try {
            return ObjEnvelop.getSuccess("success",dailyReportUploadService.weekReportHeaderInfo(user,projectCode,item_id,dept,memberId,startDate,endDate));
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "weekReportListInfo")
    @ApiOperation(value = "周效能列表信息")
    public ObjEnvelop weekReportListInfo(@ApiParam(name = "user", value = "user")
                                           @RequestParam(value = "user", required = true) String user,
                                           @ApiParam(name = "projectCode", value = "一级项目Code")
                                           @RequestParam(value = "projectCode", required = false) String projectCode,
                                           @ApiParam(name = "item_id", value = "二级项目id")
                                           @RequestParam(value = "item_id", required = false) String item_id,
                                           @ApiParam(name = "dept", value = "dept")
                                           @RequestParam(value = "dept", required = false) String dept,
                                           @ApiParam(name = "memberId", value = "memberId")
                                           @RequestParam(value = "memberId", required = false) String memberId,
                                           @ApiParam(name = "startDate", value = "startDate")
                                           @RequestParam(value = "startDate", required = false) String startDate,
                                           @ApiParam(name = "endDate", value = "endDate")
                                           @RequestParam(value = "endDate", required = false) String endDate) {
        try {
            return ObjEnvelop.getSuccess("success",dailyReportUploadService.weekReportListInfo(user,projectCode,item_id,dept,memberId,startDate,endDate));
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
}

+ 6 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/consult/SysDictService.java

@ -7,6 +7,7 @@ import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@ -19,6 +20,8 @@ public class SysDictService {
    private SysDictDao sysDictDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Value("${spring.profiles}")
    private String profiles;
    /**
     * 新增&更新社区医生邀请专家配置
@ -107,6 +110,9 @@ public class SysDictService {
            sql+=" AND a.dict_name =:dictName";
            params.put("dictName",dictName);
        }
        if ("ZjxlProd".equals(profiles)){//日报字典排序
            sql +=" order by a.saas_id asc, a.py_code asc,a.sort asc ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, params);
        return  list;
    }

+ 3 - 3
svr/svr-statistics-es/src/main/resources/application-hzprod.yml

@ -35,9 +35,9 @@ es:
  host:  http://10.18.43.40:9200
  tHost: 10.18.43.40:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr
  user: lion
  password: jkzlehr
  securityUser: zjxl:6Dbq&fHg
  user: zjxl
  password: 6Dbq&fHg
wlyy:

+ 1 - 1
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationManageService.java

@ -476,7 +476,7 @@ public class RehabilitationManageService {
        for (int i=1;i<planIdlist.length;i++){
            planCondition .append(",'"+planIdlist[i]+"'");
        }
        String sql = " select d.*,DATE_FORMAT(d.execute_time,'%Y/%m/%d %H:%i') as executeTime ,i.code,IF(d.followup_detail_type=1,'康复随访(社区)',i.name) name,1 as flag from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
        String sql = " select d.*,DATE_FORMAT(d.execute_time,'%Y/%m/%d %H:%i') as executeTime ,i.code,IF(d.followup_detail_type=1,'社区随访(厦心)',i.name) name,1 as flag from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
                " LEFT JOIN wlyy_rehabilitation_service_item i on i.code = d.hospital_service_item_id  " +
                " where  d.plan_id in ("+planCondition+" )AND  d.execute_time IS NOT NULL  and d.execute_time <>'' " ;
        if(searchTask!=null){