|
@ -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 " +
|