Procházet zdrojové kódy

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

wsl před 2 roky
rodič
revize
6eb9c794dc

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportItemDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.dailyReport.dao;
import com.yihu.jw.entity.dailyReport.BaseDailyReportItemDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseDailyReportItemDao extends PagingAndSortingRepository<BaseDailyReportItemDO,String>,
        JpaSpecificationExecutor<BaseDailyReportItemDO> {
}

+ 19 - 0
business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportItemMembersDao.java

@ -0,0 +1,19 @@
package com.yihu.jw.dailyReport.dao;
import com.yihu.jw.entity.dailyReport.BaseDailyReportItemMembersDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseDailyReportItemMembersDao extends PagingAndSortingRepository<BaseDailyReportItemMembersDO,String>,
        JpaSpecificationExecutor<BaseDailyReportItemMembersDO> {
    @Query("select m from BaseDailyReportItemMembersDO m where m.del=1 and m.reportItemId=?1 ")
    List<BaseDailyReportItemMembersDO> findMembersByItemId(String itemId);
    @Modifying
    void deleteAllByReportItemId(String reportItemId);
}

+ 440 - 7
business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java

@ -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);
    }
}

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

@ -2081,5 +2081,38 @@ CREATE TABLE `base_weather_week` (
  UNIQUE KEY `index_1` (`update_date`,`date`,`cityid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='7天天气记录表';
-- 20220804
CREATE TABLE `base_daily_report_item` (
  `id` varchar(50) NOT NULL,
  `title` varchar(50) DEFAULT NULL COMMENT '项目标题',
  `content` varchar(2500) DEFAULT NULL COMMENT '项目内容',
  `state` tinyint(4) DEFAULT NULL COMMENT '完成状态 -1取消,0待办,1已完成',
  `begin_time` varchar(50) DEFAULT NULL COMMENT '项目开始时间',
  `end_time` varchar(50) DEFAULT NULL COMMENT '项目结束时间',
  `completion_hour` varchar(50) DEFAULT NULL COMMENT '完成时长',
  `completion_user` varchar(50) DEFAULT NULL COMMENT '完成人',
  `completion_time` timestamp NULL DEFAULT NULL COMMENT '完成时间',
  `del` tinyint(2) DEFAULT NULL COMMENT '1有效0无效',
  `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作日期',
  `update_user` varchar(50) DEFAULT NULL,
  `update_user_name` varchar(50) DEFAULT NULL,
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `create_user` varchar(50) DEFAULT NULL,
  `create_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `base_daily_report_item_members` (
  `id` varchar(50) NOT NULL,
  `report_item_id` varchar(50) DEFAULT NULL COMMENT '日报项目id',
  `user_id` varchar(50) DEFAULT NULL COMMENT '成员id',
  `del` TINYINT(2) DEFAULT NULL COMMENT '1有效0无效',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
alter table base_daily_report_detail add column report_item_id VARCHAR(50) DEFAULT null COMMENT'日报项目id';
alter table base_daily_report_detail add column report_item_name VARCHAR(50) DEFAULT null COMMENT'日报项目名称'
alter table base_daily_report_detail add column verification_user VARCHAR(50) DEFAULT null COMMENT'核实人'
alter table base_daily_report_detail add column verification_user_name VARCHAR(50) DEFAULT null COMMENT'核实人姓名'

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

@ -22,11 +22,15 @@ public class BaseDailyReportDetailDO extends UuidIdentityEntityWithOperator {
    private String completionHour;//完成时长
    private Integer state;//是否核实 0未核实1已核实
    private Date verificationTime;//核实时间
    private String verificationUser;//核实人
    private String verificationUserName;//核实人姓名
    private String remark; //备注内容
    private Integer doubt; //疑惑0无疑惑1存疑
    private Integer doubtState; //疑惑核实状态0未核实1已核实
    private String doubtRemark; //疑惑核实备注
    private String actualCompletionHour; //实际完成时长
    private String reportItemId;//日报项目id
    private String reportItemName;//日报项目名称
    public String getReportId() {
        return reportId;
@ -85,6 +89,22 @@ public class BaseDailyReportDetailDO extends UuidIdentityEntityWithOperator {
        this.verificationTime = verificationTime;
    }
    public String getVerificationUser() {
        return verificationUser;
    }
    public void setVerificationUser(String verificationUser) {
        this.verificationUser = verificationUser;
    }
    public String getVerificationUserName() {
        return verificationUserName;
    }
    public void setVerificationUserName(String verificationUserName) {
        this.verificationUserName = verificationUserName;
    }
    public String getRemark() {
        return remark;
    }
@ -124,4 +144,20 @@ public class BaseDailyReportDetailDO extends UuidIdentityEntityWithOperator {
    public void setActualCompletionHour(String actualCompletionHour) {
        this.actualCompletionHour = actualCompletionHour;
    }
    public String getReportItemId() {
        return reportItemId;
    }
    public void setReportItemId(String reportItemId) {
        this.reportItemId = reportItemId;
    }
    public String getReportItemName() {
        return reportItemName;
    }
    public void setReportItemName(String reportItemName) {
        this.reportItemName = reportItemName;
    }
}

+ 177 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportItemDO.java

@ -0,0 +1,177 @@
package com.yihu.jw.entity.dailyReport;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
/**
 * Created by Bing on 2022/7/25.
 * 每日日报项目
 */
@Entity
@Table(name="base_daily_report_item")
public class BaseDailyReportItemDO extends UuidIdentityEntity {
    private String title;//项目标题
    private String content;//项目内容
    private Integer state;//完成状态 -1取消,0待办,1已完成
    private String beginTime;//项目开始时间
    private String endTime;//项目结束时间
    private String completionHour;//完成时长
    private String completionUser;//完成人
    private Date completionTime;//完成时间
    private Integer del;//1有效0无效
    protected Date createTime;
    protected String createUser;
    protected String createUserName;
    protected Date updateTime;
    protected String updateUser;
    protected String updateUserName;
    private List<BaseDailyReportItemMembersDO> itemMembersDOList;
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    public String getBeginTime() {
        return beginTime;
    }
    public void setBeginTime(String beginTime) {
        this.beginTime = beginTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getCompletionHour() {
        return completionHour;
    }
    public void setCompletionHour(String completionHour) {
        this.completionHour = completionHour;
    }
    public String getCompletionUser() {
        return completionUser;
    }
    public void setCompletionUser(String completionUser) {
        this.completionUser = completionUser;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCompletionTime() {
        return completionTime;
    }
    public void setCompletionTime(Date completionTime) {
        this.completionTime = completionTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    @Transient
    public List<BaseDailyReportItemMembersDO> getItemMembersDOList() {
        return itemMembersDOList;
    }
    public void setItemMembersDOList(List<BaseDailyReportItemMembersDO> itemMembersDOList) {
        this.itemMembersDOList = itemMembersDOList;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "create_user",updatable = false)
    public String getCreateUser() {
        return createUser;
    }
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    @Column(name = "create_user_name",updatable = false)
    public String getCreateUserName() {
        return createUserName;
    }
    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getUpdateUser() {
        return updateUser;
    }
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    public String getUpdateUserName() {
        return updateUserName;
    }
    public void setUpdateUserName(String updateUserName) {
        this.updateUserName = updateUserName;
    }
}

+ 44 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportItemMembersDO.java

@ -0,0 +1,44 @@
package com.yihu.jw.entity.dailyReport;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Bing on 2022/7/25.
 * 每日日报项目管理人员
 */
@Entity
@Table(name="base_daily_report_item_members")
public class BaseDailyReportItemMembersDO extends UuidIdentityEntity {
    private String reportItemId;//日报项目id
    private String userId;//项目内容
    private Integer del;//0无效1有效
    public String getReportItemId() {
        return reportItemId;
    }
    public void setReportItemId(String reportItemId) {
        this.reportItemId = reportItemId;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

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

@ -24,6 +24,7 @@ public class BaseDailyReportUploadDO extends UuidIdentityEntityWithOperator {
    private String reportDate; //上报日期
    private String totalHour;//上报时长
    public String getTotalHour() {
        return totalHour;
    }
@ -109,4 +110,5 @@ public class BaseDailyReportUploadDO extends UuidIdentityEntityWithOperator {
    public void setLeaveHour(String leaveHour) {
        this.leaveHour = leaveHour;
    }
}

+ 2 - 2
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/DailyReportService.java

@ -128,7 +128,7 @@ public class DailyReportService {
                    Integer sqlTotal = jdbcTemplate.queryForObject(uploadSql, Integer.class);
                    Integer weishangbaoTotal = doctorTotal - sqlTotal;
                    String title = "每日日报未上报汇总";
                    String des = "今日还有" + weishangbaoTotal + "人未提交健康信息,点击查看。";
                    String des = "今日还有" + weishangbaoTotal + "人未提交日报,点击查看。";
                    String url = "https://ehr.yihu.com/hlwyy/zjxl/dailyReport/#/home/index";
                    String res = enterpriseService.sendTWMesByDoctor(wechatId, doctorDO.getId(), title, des, url);
                }
@ -152,7 +152,7 @@ public class DailyReportService {
                    Integer sqlTotal = jdbcTemplate.queryForObject(uploadSql, Integer.class);
                    Integer weishangbaoTotal = doctorTotal - sqlTotal;
                    String title = "每日日报未上报汇总";
                    String des = "今日还有" + weishangbaoTotal + "人未提交健康信息,点击查看。";
                    String des = "今日还有" + weishangbaoTotal + "人未提交日报,点击查看。";
                    String url = "https://ehr.yihu.com/hlwyy/zjxl/dailyReport/#/home/index";
                    String res = enterpriseService.sendTWMesByDoctor(wechatId, doctorDO.getId(), title, des, url);
                }

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

@ -6,11 +6,13 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dailyReport.service.DailyReportUploadService;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.dailyReport.BaseDailyReportDetailDO;
import com.yihu.jw.entity.dailyReport.BaseDailyReportItemDO;
import com.yihu.jw.entity.dailyReport.BaseDailyReportUploadDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.utils.StringUtil;
@ -115,7 +117,7 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
                                        @ApiParam(name = "week_name", value = "星期一...")
                                        @RequestParam(value = "week_name", required = true) String week_name,
                                        @ApiParam(name = "totalHour", value = "上报时长")
                                            @RequestParam(value = "totalHour", required = false) String totalHour,
                                        @RequestParam(value = "totalHour", required = false) String totalHour,
                                        @ApiParam(name = "jsonData", value = "事项信息实体")
                                        @RequestParam(value = "jsonData", required = true) String jsonData) {
        try {
@ -468,4 +470,213 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
            return failedObjEnvelopException(e);
        }
    }
    /*************************************日报项目相关******************************************/
    @PostMapping(value = "newReportItem")
    @ApiOperation(value = "管理员新增日报项目")
    public ObjEnvelop newReportItem(@ApiParam(name = "user", value = "user")
                                    @RequestParam(value = "user", required = true) String user,
                                    @ApiParam(name = "title", value = "项目标题")
                                    @RequestParam(value = "title", required = true) String title,
                                    @ApiParam(name = "content", value = "项目内容")
                                    @RequestParam(value = "content", required = true) String content,
                                    @ApiParam(name = "begin_time", value = "begin_time")
                                    @RequestParam(value = "begin_time", required = true) String begin_time,
                                    @ApiParam(name = "end_time", value = "end_time")
                                    @RequestParam(value = "end_time", required = true) String end_time,
                                    @ApiParam(name = "member_type", value = "成员类型,1指定成员,2某部门")
                                    @RequestParam(value = "member_type", required = true) Integer member_type,
                                    @ApiParam(name = "members", value = "成员or部门编码,多个逗号隔开")
                                    @RequestParam(value = "members", required = true) String members) {
        try {
            BaseDailyReportItemDO itemDO = dailyReportUploadService.newReportItem(user,title,content,begin_time,end_time,member_type,members);
            return success(itemDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "completeReportItem")
    @ApiOperation(value = "管理员完成日报项目")
    public ObjEnvelop completeReportItem(@ApiParam(name = "user", value = "user")
                                     @RequestParam(value = "user", required = true) String user,
                                     @ApiParam(name = "item_id", value = "item_id")
                                     @RequestParam(value = "item_id", required = true) String item_id,
                                     @ApiParam(name = "completionUser", value = "完成人")
                                     @RequestParam(value = "completionUser", required = false) String completionUser,
                                     @ApiParam(name = "completionHour", value = "耗时")
                                     @RequestParam(value = "completionHour", required = false) String completionHour,
                                     @ApiParam(name = "completionTime", value = "完成时间yyyy-MM-dd HH:mm:ss")
                                     @RequestParam(value = "completionTime", required = false) String completionTime) {
        try {
            BaseDailyReportItemDO itemDO =  dailyReportUploadService.completeReportItem(user,item_id,completionUser,completionHour,completionTime);
            return success(itemDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "modifyReportItem")
    @ApiOperation(value = "管理员修改日报项目")
    public ObjEnvelop modifyReportItem(@ApiParam(name = "user", value = "user")
                                    @RequestParam(value = "user", required = true) String user,
                                    @ApiParam(name = "item_id", value = "item_id")
                                    @RequestParam(value = "item_id", required = true) String item_id,
                                    @ApiParam(name = "title", value = "项目标题")
                                    @RequestParam(value = "title", required = true) String title,
                                    @ApiParam(name = "content", value = "项目内容")
                                    @RequestParam(value = "content", required = true) String content,
                                    @ApiParam(name = "state", value = "-1取消,0待办,1已完成")
                                    @RequestParam(value = "state", required = true) Integer state,
                                    @ApiParam(name = "begin_time", value = "begin_time")
                                    @RequestParam(value = "begin_time", required = true) String begin_time,
                                    @ApiParam(name = "end_time", value = "end_time")
                                    @RequestParam(value = "end_time", required = true) String end_time,
                                    @ApiParam(name = "members", value = "成员编码,多个逗号隔开")
                                    @RequestParam(value = "members", required = true) String members) {
        try {
            BaseDailyReportItemDO itemDO = dailyReportUploadService.modifyReportItem(user,item_id,title,content,state,begin_time,end_time,members);
            return success(itemDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "delReportItem")
    @ApiOperation(value = "管理员删除日报项目")
    public Envelop delReportItem(@ApiParam(name = "user", value = "user")
                                    @RequestParam(value = "user", required = true) String user,
                                    @ApiParam(name = "item_id", value = "item_id")
                                    @RequestParam(value = "item_id", required = true) String item_id) {
        try {
            dailyReportUploadService.delReportItem(user,item_id);
            return success();
        } catch (Exception e) {
            return failedException(e);
        }
    }
    @PostMapping(value = "findReportItemById")
    @ApiOperation(value = "查询单条日报项目详情")
    public ObjEnvelop findReportItemById(@ApiParam(name = "item_id", value = "item_id")
                                       @RequestParam(value = "item_id", required = true) String item_id) {
        try {
            BaseDailyReportItemDO itemDO = dailyReportUploadService.findReportItemById(item_id);
            return success(itemDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "findReportItemListAdmin")
    @ApiOperation(value = "管理员获取所有日报项目")
    public ListEnvelop findReportItemListAdmin(@ApiParam(name = "user", value = "user")
                                      @RequestParam(value = "user", required = true) String user,
                                      @ApiParam(name = "title", value = "事项标题")
                                      @RequestParam(value = "title", required = false) String title,
                                      @ApiParam(name = "content", value = "项目内容")
                                      @RequestParam(value = "content", required = false) String content,
                                      @ApiParam(name = "state", value = "-1取消,0待办,1已完成")
                                      @RequestParam(value = "state", required = false) Integer state,
                                      @ApiParam(name = "begin_time", value = "begin_time")
                                      @RequestParam(value = "begin_time", required = false) String begin_time,
                                      @ApiParam(name = "end_time", value = "end_time")
                                      @RequestParam(value = "end_time", required = false) String end_time,
                                      @ApiParam(name = "createUser", value = "createUser")
                                      @RequestParam(value = "createUser", required = false) String createUser,
                                      @ApiParam(name = "createUserName", value = "createUserName")
                                      @RequestParam(value = "createUserName", required = false) String createUserName) {
        try {
            List<BaseDailyReportItemDO> list = dailyReportUploadService.findReportItemListAdmin(user,title,content,state,begin_time,end_time,createUser,createUserName);
            return ListEnvelop.getSuccess("success",list);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "findReportItemList")
    @ApiOperation(value = "员工获取所有日报项目")
    public ListEnvelop findReportItemList(@ApiParam(name = "user", value = "user")
                                      @RequestParam(value = "user", required = true) String user,
                                      @ApiParam(name = "title", value = "事项标题")
                                      @RequestParam(value = "title", required = false) String title,
                                      @ApiParam(name = "content", value = "项目内容")
                                      @RequestParam(value = "content", required = false) String content,
                                      @ApiParam(name = "state", value = "-1取消,0待办,1已完成")
                                      @RequestParam(value = "state", required = false) Integer state,
                                      @ApiParam(name = "begin_time", value = "begin_time")
                                      @RequestParam(value = "begin_time", required = false) String begin_time,
                                      @ApiParam(name = "end_time", value = "end_time")
                                      @RequestParam(value = "end_time", required = false) String end_time,
                                      @ApiParam(name = "createUser", value = "createUser")
                                      @RequestParam(value = "createUser", required = false) String createUser,
                                      @ApiParam(name = "createUserName", value = "createUserName")
                                      @RequestParam(value = "createUserName", required = false) String createUserName) {
        try {
            List<BaseDailyReportItemDO> list =  dailyReportUploadService.findReportItemList(user,title,content,state,begin_time,end_time,createUser,createUserName);
            return ListEnvelop.getSuccess("success",list);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "statisticReportItemList")
    @ApiOperation(value = "管理员日报项目统计列表")
    public PageEnvelop statisticReportItemList(@ApiParam(name = "user", value = "user")
                                               @RequestParam(value = "user", required = true) String user,
                                               @ApiParam(name = "title", value = "事项标题")
                                               @RequestParam(value = "title", required = false) String title,
                                               @ApiParam(name = "content", value = "项目内容")
                                               @RequestParam(value = "content", required = false) String content,
                                               @ApiParam(name = "state", value = "-1取消,0待办,1已完成")
                                               @RequestParam(value = "state", required = false) Integer state,
                                               @ApiParam(name = "begin_time", value = "begin_time")
                                               @RequestParam(value = "begin_time", required = false) String begin_time,
                                               @ApiParam(name = "end_time", value = "end_time")
                                               @RequestParam(value = "end_time", required = false) String end_time,
                                               @ApiParam(name = "createUser", value = "createUser")
                                               @RequestParam(value = "createUser", required = false) String createUser,
                                               @ApiParam(name = "createUserName", value = "createUserName")
                                               @RequestParam(value = "createUserName", required = false) String createUserName,
                                               @ApiParam(name = "page", value = "page")
                                               @RequestParam(value = "page", required = true)Integer page,
                                               @ApiParam(name = "size", value = "size")
                                               @RequestParam(value = "size", required = true)Integer size) {
        try {
            return dailyReportUploadService.statisticReportItemList(user,title,content,state,begin_time,end_time,createUser,createUserName,page,size);
        } catch (Exception e) {
            return failedPageEnvelopException(e);
        }
    }
    @GetMapping(value = "statisticReportItemById")
    @ApiOperation(value = "管理某项目统计情况")
    public ListEnvelop statisticReportItemById(@ApiParam(name = "user", value = "user")
                                               @RequestParam(value = "user", required = true) String user,
                                               @ApiParam(name = "item_id", value = "item_id")
                                               @RequestParam(value = "item_id", required = true) String item_id,
                                               @ApiParam(name = "type", value = "1天、2周、3月")
                                               @RequestParam(value = "type",defaultValue = "1", required = false) Integer type) {
        try {
            return ListEnvelop.getSuccess("success",dailyReportUploadService.statisticReportItemById(user,item_id,type));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "statisticReportItemMembersById")
    @ApiOperation(value = "管理某项目员工耗时统计情况")
    public ListEnvelop statisticReportItemMembersById(@ApiParam(name = "user", value = "user")
                                               @RequestParam(value = "user", required = true) String user,
                                               @ApiParam(name = "item_id", value = "item_id")
                                               @RequestParam(value = "item_id", required = true) String item_id,
                                               @ApiParam(name = "type", value = "0全部不按日期进行统计,1天、2周、3月")
                                               @RequestParam(value = "type",defaultValue = "1", required = false) Integer type) {
        try {
            return ListEnvelop.getSuccess("success",dailyReportUploadService.statisticReportItemMembersById(user,item_id,type));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
}