|
@ -2,9 +2,8 @@ package com.yihu.jw.dailyReport.service;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yihu.jw.dailyReport.dao.BaseDailyReportDetailDao;
|
|
|
import com.yihu.jw.dailyReport.dao.BaseDailyReportLogDao;
|
|
|
import com.yihu.jw.dailyReport.dao.BaseDailyReportUploadDao;
|
|
|
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
|
|
|
import com.yihu.jw.dailyReport.dao.*;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
|
|
@ -14,14 +13,13 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxPushLogDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
|
|
|
import com.yihu.jw.entity.dailyReport.BaseDailyReportDetailDO;
|
|
|
import com.yihu.jw.entity.dailyReport.BaseDailyReportLogDO;
|
|
|
import com.yihu.jw.entity.dailyReport.BaseDailyReportUploadDO;
|
|
|
import com.yihu.jw.entity.dailyReport.*;
|
|
|
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
|
|
|
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
|
|
|
import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseUserDO;
|
|
|
import com.yihu.jw.healthUpload.dao.BaseDoctorMemberDao;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.restmodel.web.PageEnvelop;
|
|
|
import com.yihu.jw.util.common.PwdUtil;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.util.idcard.IdCardUtil;
|
|
@ -41,11 +39,13 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.OutputStream;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@ -86,6 +86,10 @@ public class DailyReportUploadService {
|
|
|
private String wechatId;
|
|
|
@Autowired
|
|
|
private EnterpriseService enterpriseService;
|
|
|
@Autowired
|
|
|
private BaseDailyReportItemDao reportItemDao;
|
|
|
@Autowired
|
|
|
private BaseDailyReportItemMembersDao reportItemMembersDao;
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(DailyReportUploadService.class);
|
|
|
|
|
@ -329,7 +333,7 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
if (1==leaveState){
|
|
|
if (StringUtils.isNotBlank(leaveHour)){
|
|
|
if (Integer.parseInt(leaveHour)<8&&detailDOList.size()==0){
|
|
|
if (Double.parseDouble(leaveHour)<8&&detailDOList.size()==0){
|
|
|
throw new Exception("上传失败,请假未满8小时需要提交完成内容");
|
|
|
}
|
|
|
}
|
|
@ -444,6 +448,8 @@ public class DailyReportUploadService {
|
|
|
doubt = true;
|
|
|
}
|
|
|
tmp.setVerificationTime(new Date());
|
|
|
tmp.setVerificationUser(doctorId);
|
|
|
tmp.setVerificationUserName(doctorDO.getName());
|
|
|
}
|
|
|
reportDetailDao.save(detailDOList);
|
|
|
List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(dailyReportUploadDO.getId());
|
|
@ -1585,4 +1591,431 @@ public class DailyReportUploadService {
|
|
|
return object;
|
|
|
}
|
|
|
|
|
|
/*************************************日报项目相关******************************************/
|
|
|
|
|
|
/**
|
|
|
* 新增日报项目
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public BaseDailyReportItemDO newReportItem(String user,String title,String content,String begin_time,String end_time,Integer member_type,String members) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findById(user);
|
|
|
if (null==doctorDO){
|
|
|
throw new Exception("用户不存在无权操作");
|
|
|
}
|
|
|
BaseDailyReportItemDO reportItemDO = new BaseDailyReportItemDO();
|
|
|
reportItemDO.setState(0);
|
|
|
reportItemDO.setDel(1);
|
|
|
reportItemDO.setTitle(title);
|
|
|
reportItemDO.setContent(content);
|
|
|
reportItemDO.setBeginTime(begin_time);
|
|
|
reportItemDO.setEndTime(end_time);
|
|
|
reportItemDO.setCreateTime(new Date());
|
|
|
reportItemDO.setCreateUser(user);
|
|
|
reportItemDO.setCreateUserName(doctorDO.getName());
|
|
|
reportItemDO = reportItemDao.save(reportItemDO);
|
|
|
List<BaseDailyReportItemMembersDO> membersDOS = new ArrayList<>();
|
|
|
if (1==member_type){//指定成员
|
|
|
List<String> membersList = Arrays.asList(members.split(","));
|
|
|
for (String tmp:membersList){
|
|
|
BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
|
|
|
membersDOTmp.setReportItemId(reportItemDO.getId());
|
|
|
membersDOTmp.setUserId(tmp);
|
|
|
membersDOTmp.setDel(1);
|
|
|
membersDOS.add(membersDOTmp);
|
|
|
}
|
|
|
}else if (2==member_type){
|
|
|
List<String> depts = Arrays.asList(members.split(","));
|
|
|
for (String dept:depts){
|
|
|
sql = " select distinct doc.id from base_doctor doc inner join base_doctor_hospital dh " +
|
|
|
"on doc.id = dh.doctor_code and doc.del=1 and dh.del=1 " +
|
|
|
"where dh.dept_code='"+dept+"' ";
|
|
|
List<String> membersList = jdbcTemplate.queryForList(sql,String.class);
|
|
|
for (String tmp:membersList){
|
|
|
BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
|
|
|
membersDOTmp.setReportItemId(reportItemDO.getId());
|
|
|
membersDOTmp.setUserId(tmp);
|
|
|
membersDOTmp.setDel(1);
|
|
|
membersDOS.add(membersDOTmp);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
throw new Exception("系统异常,请稍后重试");
|
|
|
}
|
|
|
if (membersDOS.size()>0){
|
|
|
reportItemMembersDao.save(membersDOS);
|
|
|
}
|
|
|
reportItemDO.setItemMembersDOList(membersDOS);
|
|
|
return reportItemDO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 编辑日报项目
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public BaseDailyReportItemDO modifyReportItem(String user,String item_id,String title,String content,Integer state,String begin_time,String end_time,String members) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findById(user);
|
|
|
if (null==doctorDO){
|
|
|
throw new Exception("用户不存在无权操作");
|
|
|
}
|
|
|
BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id);
|
|
|
if (null==reportItemDO){
|
|
|
throw new Exception("日报项目不存在");
|
|
|
}
|
|
|
if (1==reportItemDO.getState()){
|
|
|
throw new Exception("日报项目已完成无法修改");
|
|
|
}
|
|
|
reportItemDO.setState(state);
|
|
|
reportItemDO.setDel(1);
|
|
|
reportItemDO.setTitle(title);
|
|
|
reportItemDO.setContent(content);
|
|
|
reportItemDO.setBeginTime(begin_time);
|
|
|
reportItemDO.setEndTime(end_time);
|
|
|
reportItemDO.setUpdateTime(new Date());
|
|
|
reportItemDO.setUpdateUser(user);
|
|
|
reportItemDO.setUpdateUserName(doctorDO.getName());
|
|
|
reportItemDao.save(reportItemDO);
|
|
|
List<BaseDailyReportItemMembersDO> membersDOS = new ArrayList<>();
|
|
|
reportItemMembersDao.deleteAllByReportItemId(reportItemDO.getId());
|
|
|
List<String> membersList = Arrays.asList(members.split(","));
|
|
|
for (String tmp:membersList){
|
|
|
BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
|
|
|
membersDOTmp.setReportItemId(reportItemDO.getId());
|
|
|
membersDOTmp.setUserId(tmp);
|
|
|
membersDOTmp.setDel(1);
|
|
|
membersDOS.add(membersDOTmp);
|
|
|
}
|
|
|
if (membersDOS.size()>0){
|
|
|
reportItemMembersDao.save(membersDOS);
|
|
|
}
|
|
|
reportItemDO.setItemMembersDOList(membersDOS);
|
|
|
return reportItemDO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*管理员完成日报项目
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public BaseDailyReportItemDO completeReportItem(String user,String item_id,String completionUser,String completionHour,String completionTime) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findById(user);
|
|
|
if (null==doctorDO){
|
|
|
throw new Exception("用户不存在无权操作");
|
|
|
}
|
|
|
BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id);
|
|
|
if (null==reportItemDO){
|
|
|
throw new Exception("日报项目不存在");
|
|
|
}
|
|
|
reportItemDO.setState(1);
|
|
|
if (StringUtils.isNoneBlank(completionUser)){
|
|
|
reportItemDO.setCompletionUser(completionUser);
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(completionHour)){
|
|
|
reportItemDO.setCompletionHour(completionHour);
|
|
|
}else {
|
|
|
//查询出关联的日报详情,计算完成时间
|
|
|
sql = " select IFNULL(sum(actual_completion_hour),'0') from base_daily_report_detail " +
|
|
|
" where report_item_id='"+item_id+"' ";
|
|
|
String completionHoursql = jdbcTemplate.queryForObject(sql,String.class);
|
|
|
reportItemDO.setCompletionHour(completionHoursql);
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(completionTime)){
|
|
|
reportItemDO.setCompletionTime(DateUtil.strToDate(completionTime));
|
|
|
}
|
|
|
reportItemDO.setUpdateUser(user);
|
|
|
reportItemDO.setUpdateUserName(doctorDO.getName());
|
|
|
reportItemDO.setUpdateTime(new Date());
|
|
|
reportItemDao.save(reportItemDO);
|
|
|
List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(reportItemDO.getId());
|
|
|
reportItemDO.setItemMembersDOList(membersDOS);
|
|
|
return reportItemDO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 管理员删除日报项目
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean delReportItem(String user,String item_id) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findById(user);
|
|
|
if (null==doctorDO){
|
|
|
throw new Exception("用户不存在无权操作");
|
|
|
}
|
|
|
BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id);
|
|
|
if (null==reportItemDO){
|
|
|
throw new Exception("日报项目不存在");
|
|
|
}
|
|
|
reportItemDO.setDel(0);
|
|
|
reportItemDO.setUpdateUser(user);
|
|
|
reportItemDO.setUpdateUserName(doctorDO.getName());
|
|
|
reportItemDO.setUpdateTime(new Date());
|
|
|
reportItemDao.save(reportItemDO);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询日报项目详情
|
|
|
*/
|
|
|
public BaseDailyReportItemDO findReportItemById(String item_id) throws Exception {
|
|
|
BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id);
|
|
|
if (null==reportItemDO){
|
|
|
throw new Exception("日报项目不存在");
|
|
|
}
|
|
|
List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(reportItemDO.getId());
|
|
|
reportItemDO.setItemMembersDOList(membersDOS);
|
|
|
return reportItemDO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 管理员获取所有日报项目
|
|
|
*/
|
|
|
public List<BaseDailyReportItemDO> findReportItemListAdmin(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
List<BaseDailyReportItemDO> itemDOS = new ArrayList<>();
|
|
|
sql = " select i.* from base_daily_report_item i where 1=1 ";
|
|
|
if (StringUtils.isNotBlank(title)){
|
|
|
sql +=" and i.title like '%"+title+"%' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(content)){
|
|
|
sql +=" and i.content like '%"+content+"%' ";
|
|
|
}
|
|
|
if (null!=state){
|
|
|
sql += " and i.state='"+state+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(begin_time)){
|
|
|
sql += " and i.begin_time>='"+begin_time+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(end_time)){
|
|
|
sql += " and i.end_time<='"+end_time+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUser)){
|
|
|
sql += " and i.create_user = '"+createUser+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUserName)){
|
|
|
sql += " and i.create_user_name like '%"+createUserName+"%' ";
|
|
|
}
|
|
|
itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
|
|
|
for (BaseDailyReportItemDO tmp:itemDOS){
|
|
|
List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId());
|
|
|
tmp.setItemMembersDOList(membersDOS);
|
|
|
}
|
|
|
return itemDOS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 员工获取所有日报项目
|
|
|
*/
|
|
|
public List<BaseDailyReportItemDO> findReportItemList(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception {
|
|
|
String sql = "select i.* from base_daily_report_item i INNER JOIN base_daily_report_item_members mem on i.id = mem.report_item_id " +
|
|
|
"where i.del=1 and mem.del=1 and mem.user_id='"+user+"' " ;
|
|
|
|
|
|
if (StringUtils.isNotBlank(title)){
|
|
|
sql +=" and i.title like '%"+title+"%' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(content)){
|
|
|
sql +=" and i.content like '%"+content+"%' ";
|
|
|
}
|
|
|
if (null!=state){
|
|
|
sql += " and i.state='"+state+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(begin_time)){
|
|
|
sql += " and i.begin_time>='"+begin_time+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(end_time)){
|
|
|
sql += " and i.end_time<='"+end_time+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUser)){
|
|
|
sql += " and i.create_user = '"+createUser+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUserName)){
|
|
|
sql += " and i.create_user_name like '%"+createUserName+"%' ";
|
|
|
}
|
|
|
sql += " GROUP BY i.id ";
|
|
|
List<BaseDailyReportItemDO> itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
|
|
|
for (BaseDailyReportItemDO tmp:itemDOS){
|
|
|
List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId());
|
|
|
tmp.setItemMembersDOList(membersDOS);
|
|
|
}
|
|
|
return itemDOS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 管理员日报项目统计
|
|
|
*/
|
|
|
public PageEnvelop statisticReportItemList(String user, String title, String content, Integer state,
|
|
|
String begin_time, String end_time, String createUser,String createUserName, Integer page, Integer size) throws Exception {
|
|
|
page = page>0?page-1:0;
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
List<BaseDailyReportItemDO> itemDOS = new ArrayList<>();
|
|
|
String sqlCondition = " ";
|
|
|
String sqlList = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName," +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour " +
|
|
|
" from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" where i.del=1 ";
|
|
|
String sqlCount = " select count(distinct i.id) from base_daily_report_item i where i.del=1 ";
|
|
|
if (StringUtils.isNotBlank(title)){
|
|
|
sqlCondition +=" and i.title like '%"+title+"%' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(content)){
|
|
|
sqlCondition +=" and i.content like '%"+content+"%' ";
|
|
|
}
|
|
|
if (null!=state){
|
|
|
sqlCondition += " and i.state='"+state+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(begin_time)){
|
|
|
sqlCondition += " and i.begin_time>='"+begin_time+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(end_time)){
|
|
|
sqlCondition += " and i.end_time<='"+end_time+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUser)){
|
|
|
sqlCondition += " and i.create_user = '"+createUser+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUserName)){
|
|
|
sqlCondition += " and i.create_user_name like '%"+createUserName+"%' ";
|
|
|
}
|
|
|
sqlList +=sqlCondition+ " group by i.id order by i.create_time,i.id desc limit "+page*size+","+size;
|
|
|
itemDOS = jdbcTemplate.query(sqlList,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
|
|
|
Long count = jdbcTemplate.queryForObject(sqlCount+sqlCondition,Long.class);
|
|
|
return PageEnvelop.getSuccessListWithPage("查询成功",itemDOS,page,size,count);
|
|
|
}
|
|
|
|
|
|
public List<Map<String,Object>> statisticReportItemById(String user,String item_id,Integer type) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
if(1==type){//天
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,DATE_FORMAT(de.create_time,'%Y-%m-%d') order by time asc ";
|
|
|
}else if (2==type){//按周
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,DATE_FORMAT(de.create_time,'%Y%v') order by time asc ";
|
|
|
}else if (3==type){//月
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,DATE_FORMAT(de.create_time,'%Y-%m') order by time asc ";
|
|
|
}else {
|
|
|
throw new Exception("查询失败,请检查传入参数");
|
|
|
}
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
|
//计算平均值和占比
|
|
|
if (list.size()>0){
|
|
|
OptionalDouble avg = list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).average();
|
|
|
Double totalHour = list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).sum();
|
|
|
Double avgValue = avg.getAsDouble();
|
|
|
for (Map<String,Object>tmp :list){
|
|
|
tmp.put("avgValue",avgValue);
|
|
|
Double completionHour = Double.valueOf(tmp.get("completionHour").toString());
|
|
|
tmp.put("timeRange",getRangeDouble(completionHour,totalHour));
|
|
|
}
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
public List<Map<String,Object>> statisticReportItemMembersById(String user,String item_id,Integer type) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
if(0==type){
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,up.doctor_id order by completionHour desc ";
|
|
|
}
|
|
|
if(1==type){//天
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y-%m-%d') order by time asc ";
|
|
|
}else if (2==type){//按周
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y%v') order by time asc ";
|
|
|
}else if (3==type){//月
|
|
|
sql = " select i.id,i.title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName,up.doctor_name doctorName, " +
|
|
|
" CAST(IFNULL(sum(de.actual_completion_hour),'0') as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,up.doctor_id,DATE_FORMAT(de.create_time,'%Y-%m') order by time asc ";
|
|
|
}else {
|
|
|
throw new Exception("查询失败,请检查传入参数");
|
|
|
}
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
|
//计算平均值和占比
|
|
|
if (list.size()>0){
|
|
|
OptionalDouble avg = list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).average();
|
|
|
Double totalHour = list.stream().mapToDouble(t -> t.get("completionHour") == null ? 0.0 :Double.parseDouble(t.get("completionHour").toString())).sum();
|
|
|
Double avgValue = avg.getAsDouble();
|
|
|
for (Map<String,Object>tmp :list){
|
|
|
tmp.put("avgValue",avgValue);
|
|
|
Double completionHour = Double.valueOf(tmp.get("completionHour").toString());
|
|
|
tmp.put("timeRange",getRangeDouble(completionHour,totalHour));
|
|
|
}
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
public double getRangeDouble(Double first, Double second) {
|
|
|
if (second == 0 && first > 0) {
|
|
|
//如果分母为0 分子不为0 返回100%
|
|
|
return 100;
|
|
|
} else if (second == 0 && first == 0) {
|
|
|
//如果分母为0 分子为0 返回0%
|
|
|
return 0;
|
|
|
}
|
|
|
double result = (first * 100.0) / second;
|
|
|
DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
|
|
|
String filesize = df.format(result);
|
|
|
return Double.parseDouble(filesize);
|
|
|
}
|
|
|
}
|