瀏覽代碼

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

LAPTOP-KB9HII50\70708 2 年之前
父節點
當前提交
f2acd79f24
共有 61 個文件被更改,包括 2847 次插入179 次删除
  1. 9 0
      business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportItemDao.java
  2. 19 0
      business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportItemMembersDao.java
  3. 19 0
      business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportLogDao.java
  4. 4 1
      business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportUploadDao.java
  5. 1233 77
      business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java
  6. 10 0
      business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java
  7. 7 3
      business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java
  8. 57 3
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  9. 13 5
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  10. 4 3
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java
  11. 12 10
      business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java
  12. 4 0
      business/base-service/src/main/java/com/yihu/jw/order/pay/ylz/YlzPayService.java
  13. 1 1
      business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java
  14. 36 0
      common/common-entity/sql记录
  15. 20 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java
  16. 58 0
      common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportDetailDO.java
  17. 186 0
      common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportItemDO.java
  18. 85 0
      common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportItemMembersDO.java
  19. 73 0
      common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportLogDO.java
  20. 22 0
      common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportUploadDO.java
  21. 8 0
      common/common-entity/src/main/java/com/yihu/jw/entity/ylzinfo/OauthYlzConfigDO.java
  22. 33 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  23. 56 0
      common/common-util/src/main/java/com/yihu/jw/util/file/FileUtil.java
  24. 1 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  25. 1 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/PostFilter.java
  26. 17 5
      gateway/ag-basic/src/main/resources/application.yml
  27. 7 0
      gateway/ag-basic/src/main/resources/bootstrap.yml
  28. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/dao/doctor/BaseDoctorDao.java
  29. 34 4
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  30. 37 2
      server/svr-authentication/src/main/resources/application.yml
  31. 8 0
      server/svr-authentication/src/main/resources/bootstrap.yml
  32. 14 0
      server/svr-configuration/src/main/resources/bootstrap.yml
  33. 49 2
      svr/svr-base/src/main/resources/application.yml
  34. 8 0
      svr/svr-base/src/main/resources/bootstrap.yml
  35. 11 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/CommonEndpoint.java
  36. 4 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorBirthdayWishesEndpoint.java
  37. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java
  38. 48 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/PatientPushOnOffUtil.java
  39. 2 3
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java
  40. 8 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java
  41. 92 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java
  42. 35 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/pushRecord/DelPushWeatherForecastJob.java
  43. 1 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/pushRecord/PushWeatherForecastJob.java
  44. 1 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/InitializeDataJobService.java
  45. 1 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  46. 9 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/message/PushTimeIntegerPointService.java
  47. 10 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/message/PushWeatherForecastService.java
  48. 2 4
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java
  49. 3 1
      svr/svr-cloud-job/src/main/resources/system.properties
  50. 3 1
      svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/MqSdkController.java
  51. 2 2
      svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/DailyReportService.java
  52. 2 2
      svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/RemindDoctorService.java
  53. 39 0
      svr/svr-internet-hospital-job/src/main/resources/application.yml
  54. 9 0
      svr/svr-internet-hospital-job/src/main/resources/bootstrap.yml
  55. 303 31
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/dailyReport/DailyReportUploadPoint.java
  56. 6 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java
  57. 5 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/consult/QrcodeService.java
  58. 89 0
      svr/svr-internet-hospital/src/main/resources/application.yml
  59. 9 1
      svr/svr-internet-hospital/src/main/resources/bootstrap.yml
  60. 1 1
      svr/svr-iot-job/src/main/resources/application.yml
  61. 5 5
      svr/svr-iot/src/main/resources/application.yml

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

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

@ -0,0 +1,19 @@
package com.yihu.jw.dailyReport.dao;
import com.yihu.jw.entity.dailyReport.BaseDailyReportDetailDO;
import com.yihu.jw.entity.dailyReport.BaseDailyReportLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Bing on 2022/7/25.
 */
public interface BaseDailyReportLogDao extends PagingAndSortingRepository<BaseDailyReportLogDO,String>,
        JpaSpecificationExecutor<BaseDailyReportLogDO> {
    @Query("select b from BaseDailyReportLogDO b where b.reportId=?1 order by b.createTime desc")
    List<BaseDailyReportLogDO> findByReportId(String reportId);
}

+ 4 - 1
business/base-service/src/main/java/com/yihu/jw/dailyReport/dao/BaseDailyReportUploadDao.java

@ -32,5 +32,8 @@ public interface BaseDailyReportUploadDao extends PagingAndSortingRepository<Bas
    List<BaseDailyReportUploadDO> selectDailyReportByDoctorAndDate(String doctor, String startDate, String endDate);
    @Query("select a from BaseDailyReportUploadDO a where a.doctorId=?1 order by a.reportDate desc")
    Page<BaseDailyReportUploadDO> selectDailyReportByDoctor(String doctor, Pageable pageRequest);
    Page<BaseDailyReportUploadDO> selectDailyReportByDoctorAndPage(String doctor, Pageable pageRequest);
    @Query("select a from BaseDailyReportUploadDO a where a.doctorId=?1 order by a.reportDate desc")
    List<BaseDailyReportUploadDO> selectDailyReportByDoctor(String doctor);
}

+ 1233 - 77
business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java

@ -2,8 +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.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;
@ -13,15 +13,16 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxPushLogDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.entity.dailyReport.BaseDailyReportDetailDO;
import com.yihu.jw.entity.dailyReport.BaseDailyReportUploadDO;
import com.yihu.jw.entity.dailyReport.*;
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseUserDO;
import com.yihu.jw.healthUpload.dao.BaseDoctorMemberDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.PwdUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.file.FileUtil;
import com.yihu.jw.util.idcard.IdCardUtil;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.utils.StringUtil;
@ -30,8 +31,13 @@ import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
import com.yihu.jw.wechat.enterprise.EnterpriseService;
import com.yihu.jw.wechat.enterprise.dao.WxEnterpriseUserDao;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import jxl.Workbook;
import jxl.write.*;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.util.WorkbookUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@ -39,12 +45,18 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Created by Bing on 2022/7/25.
@ -55,6 +67,8 @@ public class DailyReportUploadService {
    @Autowired
    private BaseDailyReportUploadDao dailyReportUploadDao;
    @Autowired
    private BaseDailyReportLogDao dailyReportLogDao;
    @Autowired
    private BaseDailyReportDetailDao reportDetailDao;
    @Autowired
    private BaseDoctorMemberDao doctorMemberDao;
@ -82,6 +96,10 @@ public class DailyReportUploadService {
    private String wechatId;
    @Autowired
    private EnterpriseService enterpriseService;
    @Autowired
    private BaseDailyReportItemDao reportItemDao;
    @Autowired
    private BaseDailyReportItemMembersDao reportItemMembersDao;
    private static Logger logger = LoggerFactory.getLogger(DailyReportUploadService.class);
@ -317,7 +335,7 @@ public class DailyReportUploadService {
     * @throws Exception
     */
    @Transactional(rollbackFor = Exception.class)
    public BaseDailyReportUploadDO createDailyReport(String doctorId,String report_date,Integer leaveState,String leaveHour,String week_name, List<BaseDailyReportDetailDO> detailDOList) throws Exception {
    public BaseDailyReportUploadDO createDailyReport(String doctorId,String report_date,Integer leaveState,String leaveHour,String week_name,String totalHour, List<BaseDailyReportDetailDO> detailDOList) throws Exception {
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctorId);
        List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(doctorId);
        if (null==doctorDO){
@ -325,7 +343,7 @@ public class DailyReportUploadService {
        }
        if (1==leaveState){
            if (StringUtils.isNotBlank(leaveHour)){
                if (Integer.parseInt(leaveHour)<8&&detailDOList.size()==0){
                if (Double.parseDouble(leaveHour)<8&&detailDOList.size()==0){
                    throw new Exception("上传失败,请假未满8小时需要提交完成内容");
                }
            }
@ -348,9 +366,33 @@ public class DailyReportUploadService {
        dailyReportUploadDO.setWeekName(week_name);
        dailyReportUploadDO.setLeaveState(leaveState);
        dailyReportUploadDO.setLeaveHour(leaveHour);
        dailyReportUploadDO.setTotalHour(totalHour);
        dailyReportUploadDO = dailyReportUploadDao.save(dailyReportUploadDO);
        for (BaseDailyReportDetailDO tmp :detailDOList){
            tmp.setReportId(dailyReportUploadDO.getId());
            if (tmp.getReportItemFlag()==true){//新则自建关联项目
                String title = tmp.getReportItemTitle();
                BaseDailyReportItemDO reportItemDO = new BaseDailyReportItemDO();
                reportItemDO.setState(0);
                reportItemDO.setDel(1);
                reportItemDO.setTitle(title);
                reportItemDO.setContent(tmp.getReportContent());
                reportItemDO.setBeginTime(null);
                reportItemDO.setEndTime(null);
                reportItemDO.setCreateTime(new Date());
                reportItemDO.setCreateUser(doctorId);
                reportItemDO.setCreateUserName(doctorDO.getName());
                reportItemDO = reportItemDao.save(reportItemDO);
                BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
                membersDOTmp.setReportItemId(reportItemDO.getId());
                membersDOTmp.setUserId(doctorId);
                membersDOTmp.setUserName(doctorDO.getName());
                membersDOTmp.setDel(1);
                reportItemMembersDao.save(membersDOTmp);
                tmp.setReportItemId(reportItemDO.getId());
                tmp.setReportItemName(title);
            }
        }
        if (detailDOList.size()>0){
            reportDetailDao.save(detailDOList);
@ -405,7 +447,15 @@ public class DailyReportUploadService {
        }
        dailyReportUploadDao.save(dailyReportUploadDO);
        dailyReportUploadDO.setDetailDOList(detailDOS);
        BaseDailyReportLogDO baseDailyReportLogDO = new BaseDailyReportLogDO();
        baseDailyReportLogDO.setCreateTime(new Date());
        baseDailyReportLogDO.setReportId(dailyReportUploadDO.getId());
        baseDailyReportLogDO.setContent("日报提交");
        baseDailyReportLogDO.setOperateUser(dailyReportUploadDO.getDoctorId());
        baseDailyReportLogDO.setOperateUserName(dailyReportUploadDO.getDoctorName());
        baseDailyReportLogDO.setType(1);
        baseDailyReportLogDO.setTypeName("日报提交");
        dailyReportLogDao.save(baseDailyReportLogDO);
        return dailyReportUploadDO;
    }
@ -431,6 +481,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());
@ -439,7 +491,15 @@ public class DailyReportUploadService {
                dailyReportUploadDO.setState(1);
                dailyReportUploadDao.save(dailyReportUploadDO);
            }
            BaseDailyReportLogDO baseDailyReportLogDO = new BaseDailyReportLogDO();
            baseDailyReportLogDO.setCreateTime(new Date());
            baseDailyReportLogDO.setReportId(dailyReportUploadDO.getId());
            baseDailyReportLogDO.setOperateUser(doctorDO.getId());
            baseDailyReportLogDO.setOperateUserName(doctorDO.getName());
            if (doubt==true){//有疑惑,推送给总经办"0592181"和老板"0592008";//老板id
                baseDailyReportLogDO.setType(3);
                baseDailyReportLogDO.setTypeName("上级核实存疑");
                baseDailyReportLogDO.setContent("上级核实存疑");
                String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='MRRB_DOUBT_SENDER'  ";
                List<String> doubtSendUser = jdbcTemplate.queryForList(sql,String.class);
                for (String senderUser:doubtSendUser){
@ -464,7 +524,12 @@ public class DailyReportUploadService {
                        e.printStackTrace();
                    }
                }
            }else {
                baseDailyReportLogDO.setType(2);
                baseDailyReportLogDO.setTypeName("上级核实未存疑");
                baseDailyReportLogDO.setContent("上级核实未存疑");
            }
            dailyReportLogDao.save(baseDailyReportLogDO);
        }else {
            dailyReportUploadDO.setState(1);
@ -496,6 +561,36 @@ public class DailyReportUploadService {
            }
            reportDetailDao.save(detailDOList);
        }
        try {
            BaseDoctorDO remindDoctorDO = 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();
        }
        BaseDailyReportLogDO baseDailyReportLogDO = new BaseDailyReportLogDO();
        baseDailyReportLogDO.setCreateTime(new Date());
        baseDailyReportLogDO.setReportId(dailyReportUploadDO.getId());
        baseDailyReportLogDO.setOperateUser(doctorDO.getId());
        baseDailyReportLogDO.setOperateUserName(doctorDO.getName());
        baseDailyReportLogDO.setType(4);
        baseDailyReportLogDO.setTypeName("存疑核实");
        baseDailyReportLogDO.setContent("存疑核实");
        dailyReportLogDao.save(baseDailyReportLogDO);
        return dailyReportUploadDO;
    }
@ -512,6 +607,8 @@ public class DailyReportUploadService {
        }else{
            List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(dailyReportUploadDO.getId());
            dailyReportUploadDO.setDetailDOList(detailDOS);
            List<BaseDailyReportLogDO> dailyReportLogDOList = dailyReportLogDao.findByReportId(dailyReportUploadDO.getId());
            dailyReportUploadDO.setDailyReportLogDOList(dailyReportLogDOList);
        }
        return dailyReportUploadDO;
    }
@ -519,25 +616,38 @@ public class DailyReportUploadService {
    /**
     * 查询成员的日报上传记录
     * @param doctorId
     * @param startDate
     * @param endDate
     * @param page
     * @param pageSize
     * @param startDateStr
     * @param endDateStr
     * @return
     */
    public Page<BaseDailyReportUploadDO> selectReportByDoctorId(String doctorId,String startDate,String endDate,Integer page,Integer pageSize){
        PageRequest pageRequest = new PageRequest(page - 1, pageSize);
        Page<BaseDailyReportUploadDO> list = null;
        if (StringUtils.isNoneBlank(startDate)) {
            list = dailyReportUploadDao.selectDailyReportByDoctorAndDateAndPage(doctorId, startDate, endDate, pageRequest);
        }else {
            list = dailyReportUploadDao.selectDailyReportByDoctor(doctorId, pageRequest);
        }
    public List<Map<String,List<BaseDailyReportUploadDO>>> selectReportByDoctorId(String doctorId,String startDateStr,String endDateStr){
        List<BaseDailyReportUploadDO> list = null;
        list = dailyReportUploadDao.selectDailyReportByDoctorAndDate(doctorId, startDateStr, endDateStr);
        for (BaseDailyReportUploadDO tmp:list){
            List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(tmp.getId());
            tmp.setDetailDOList(detailDOS);
            List<BaseDailyReportLogDO> dailyReportLogDOList = dailyReportLogDao.findByReportId(tmp.getId());
            tmp.setDailyReportLogDOList(dailyReportLogDOList);
        }
        Map<String,List<BaseDailyReportUploadDO>> reportList = list.stream().collect(Collectors.groupingBy(BaseDailyReportUploadDO::getReportDate));
        Date endDate =DateUtil.strToDate(endDateStr);
        Date startDate =DateUtil.strToDate(startDateStr);
        List<Map<String,List<BaseDailyReportUploadDO>>> result = new ArrayList<>();
        for (;;){
            Map<String,List<BaseDailyReportUploadDO>> tmp = new HashMap<>();
            String timeStr = DateUtil.dateToStrShort(endDate);
            if (reportList.get(timeStr)!=null){
                tmp.put(timeStr,reportList.get(timeStr));
            }else {
                tmp.put(timeStr,new ArrayList<>());
            }
            result.add(tmp);
            if (!startDate.before(endDate)){
                break;
            }
            endDate = DateUtil.getPreDays(endDate,-1);
        }
        return list;
        return result;
    }
    /**
@ -553,6 +663,8 @@ public class DailyReportUploadService {
        }else {
            List<BaseDailyReportDetailDO> detailDOS = reportDetailDao.findByReportId(reportUploadDO.getId());
            reportUploadDO.setDetailDOList(detailDOS);
            List<BaseDailyReportLogDO> dailyReportLogDOList = dailyReportLogDao.findByReportId(reportUploadDO.getId());
            reportUploadDO.setDailyReportLogDOList(dailyReportLogDOList);
        }
        return reportUploadDO;
    }
@ -661,7 +773,7 @@ public class DailyReportUploadService {
            reportCondition += " and up.state ='"+state+"' ";
        }
        String doctorSqlCondition = "";//医生过滤条件
        String doctorSqlCondition = "  and d.identity=0  ";//医生过滤条件
        if (StringUtils.isNoneBlank(idType)) {
            doctorSqlCondition += " and d.id_type = '" + idType + "' ";
        }
@ -676,16 +788,16 @@ public class DailyReportUploadService {
                "WHERE d.del = 1 AND dh.del = 1 "+doctorSqlCondition+" GROUP BY dh.dept_code)dh1 ON hd.CODE = dh1.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(up.id) 'yishangbaoTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 "+doctorSqlCondition+reportCondition+")dh2 ON hd.CODE = dh2.dept_code " +
                "where 1=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code)dh2 ON hd.CODE = dh2.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(distinct up.id) 'verified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
                "INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 and de.state=1 "+doctorSqlCondition+reportCondition+" )dh3 ON hd.CODE = dh3.dept_code " +
                "where 1=1 and de.state=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code)dh3 ON hd.CODE = dh3.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(distinct up.id) 'notVerified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
                "INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 and de.state=0 "+doctorSqlCondition+reportCondition+")dh4 ON hd.CODE = dh4.dept_code " +
                "where 1=1 and de.state=0 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code)dh4 ON hd.CODE = dh4.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(up.id) 'shangchuanTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 "+reportCondition+")dh5 ON hd.CODE = dh2.dept_code  " +
                "where 1=1 "+doctorSqlCondition+reportCondition+")dh5 ON hd.CODE = dh5.dept_code  " +
                " WHERE hd.consult_dept_flag = 1 ";
        if (StringUtils.isNoneBlank(name)) {
            deptSql += " and hd.code IN(SELECT dha.dept_code FROM base_doctor_hospital dha LEFT JOIN base_doctor da ON da.id=dha.doctor_code where da.name LIKE '%" + name + "%') ";
@ -737,6 +849,131 @@ public class DailyReportUploadService {
        return mapList;
    }
    /**
     * 首页按照科室列表统计核实
     *
     * @param dept
     * @param idType
     * @param state     核实状态
     * @param startDate
     * @param endDate
     * @return
     */
    public List<Map<String, Object>> selectHeaderListHeshi(String doctor,String dept, String idType, String state, String startDate, String endDate, String name) {
        String reportCondition = "";
        if (StringUtils.isNoneBlank(startDate)) {//上传过滤条件
            reportCondition += " and up.report_date >='" + startDate + "' and up.report_date<='" + endDate + "' ";
        }
        if (StringUtils.isNotBlank(state)){
            reportCondition += " and up.state ='"+state+"' ";
        }
        String doctorSqlCondition = " and d.identity=0 ";//医生过滤条件
        if (StringUtils.isNoneBlank(idType)) {
            doctorSqlCondition += " and d.id_type = '" + idType + "' ";
        }
        if (StringUtils.isNoneBlank(name)) {
            doctorSqlCondition += " and d.name like '%" + name + "%' ";
        }
        if (StringUtils.isNoneBlank(doctor)){
            WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("dailyHeshiConfig");
            String buffer = "";
            if (hospitalSysDictDO!=null){
                JSONArray array = JSONArray.parseArray(hospitalSysDictDO.getDictValue());
                for (int i=0;i<array.size();i++){
                    JSONObject object = array.getJSONObject(i);
                    String header = object.getString("header");
                    if (header.equalsIgnoreCase(doctor)){
                        JSONArray jsonArray = object.getJSONArray("data");
                        for (int j=0;j<jsonArray.size();j++){
                            String str = jsonArray.getString(j);
                            buffer +="'"+str+"',";
                        }
                        buffer =buffer.substring(0,buffer.length()-1);
                    }
                }
            }
            if (StringUtils.isNoneBlank(buffer)){
                doctorSqlCondition += " and d.id IN ("+buffer+")";
            }
        }
        //填报人数、未填报人数、上级已核实、未核实
        String deptSql = " select code,name,dh1.doctorTotal,dh2.yishangbaoTotal,dh3.verified,dh4.notVerified,dh5.shangchuanTotal  from dict_hospital_dept hd  " +
                "LEFT JOIN (select count(1) as 'doctorTotal',dh.dept_code from base_doctor d LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "WHERE d.del = 1 AND dh.del = 1 "+doctorSqlCondition+" GROUP BY dh.dept_code)dh1 ON hd.CODE = dh1.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(up.id) 'yishangbaoTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh2 ON hd.CODE = dh2.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(distinct up.id) 'verified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
                "INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 and de.state=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh3 ON hd.CODE = dh3.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(distinct up.id) 'notVerified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
                "INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 and de.state=0 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh4 ON hd.CODE = dh4.dept_code " +
                "LEFT JOIN(select dh.dept_code,count(up.id) 'shangchuanTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
                "where 1=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh5 ON hd.CODE = dh5.dept_code  " +
                " WHERE hd.consult_dept_flag = 1 ";
        if (StringUtils.isNoneBlank(name)) {
            deptSql += " and hd.code IN(SELECT dha.dept_code FROM base_doctor_hospital dha LEFT JOIN base_doctor da ON da.id=dha.doctor_code where da.name LIKE '%" + name + "%') ";
        }
        if (!StringUtils.isNoneBlank(doctor)){
            if (StringUtils.isNoneBlank(dept)) {
                deptSql += " and hd.code = '" + dept + "' ";
            }
        }
        logger.info("deptSql=="+deptSql);
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(deptSql);
        for (Map<String,Object> deptMap:mapList){
            String day = DateUtil.getTwoDay(endDate, startDate);
            Integer doctorTotal = 0;
            Integer total=0;
            Integer yishangbaoTotal=0;
            Integer weishangbaoTotal=0;
            Integer notVerified=0;
            Integer verified=0;
            Integer shangchuanTotal=0;
            if (deptMap.get("doctorTotal")!=null){
                doctorTotal = Integer.parseInt(deptMap.get("doctorTotal").toString());
                //总人次
                if (!day.equalsIgnoreCase("0")) {
                    total = doctorTotal * (Integer.parseInt(day)+1);
                } else {
                    total = doctorTotal;
                }
            }
            if (deptMap.get("yishangbaoTotal")!=null) {
                yishangbaoTotal = Integer.parseInt(deptMap.get("yishangbaoTotal").toString());
            }
            weishangbaoTotal = total-yishangbaoTotal;
            if (deptMap.get("notVerified")!=null) {
                notVerified = Integer.parseInt(deptMap.get("notVerified").toString());
            }
            if (deptMap.get("verified")!=null) {
                verified = Integer.parseInt(deptMap.get("verified").toString());
            }
            if (deptMap.get("shangchuanTotal")!=null) {
                shangchuanTotal = Integer.parseInt(deptMap.get("shangchuanTotal").toString());
            }
            deptMap.put("total", total);//总人次
            deptMap.put("yishangbaoTotal", yishangbaoTotal);//已上报
            deptMap.put("weishangbaoTotal", weishangbaoTotal);//未上报
            deptMap.put("notVerified", notVerified);//未核实数量
            deptMap.put("verified", verified);//已核实数量
            deptMap.put("shangchuanTotal", shangchuanTotal);//上传总次数
        }
        return mapList;
    }
    /**
     * 具体每一个统计时间列表
     *
@ -762,7 +999,7 @@ public class DailyReportUploadService {
        JSONArray array = new JSONArray();
        for ( i = 0; i < list.size(); i++) {
            String date = list.get(i);
            String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 ";
            String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and d.identity=0  ";
            String deptCondition = "";
            if (StringUtils.isNoneBlank(dept)) {
                deptCondition += " (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
@ -831,7 +1068,7 @@ public class DailyReportUploadService {
        JSONArray array = new JSONArray();
        for (i = 0; i < list.size(); i++) {
            String date = list.get(i);
            String doctorSql = " select d.name,d.id,d.job_title_name as jobTitleName,d.photo from base_doctor d where d.del=1 ";
            String doctorSql = " select d.name,d.id,d.job_title_name as jobTitleName,d.photo from base_doctor d where d.del=1 and d.identity=0  ";
            String deptCondition = "";
            if (StringUtils.isNoneBlank(dept)) {
                deptCondition += " (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
@ -869,7 +1106,7 @@ public class DailyReportUploadService {
                    stateCondition += " and d1.state='"+state+"' ";
                }
                String sql = " select d1.id,d1.state from base_doctor_daily_report_upload d1 where d1.doctor_id='"+id+"' and d1.report_date>='"+date+"' and d1.report_date<='"+date+"' ORDER BY report_date desc ";
                String sql = " select d1.id,d1.state,total_hour from base_doctor_daily_report_upload d1 where d1.doctor_id='"+id+"' and d1.report_date>='"+date+"' and d1.report_date<='"+date+"' ORDER BY report_date desc ";
                List<Map<String, Object>> mapList1 = jdbcTemplate.queryForList(sql);
                if (mapList1 != null && mapList1.size() != 0) {
                    for (Map<String, Object> map1 : mapList1) {
@ -881,6 +1118,8 @@ public class DailyReportUploadService {
                        }
                        map.put("uploadState", "已上报");
                        map.put("uploadId", map1.get("id").toString());
                        map.put("totalHour", map1.get("total_hour"));
                    }
                    map.put("recordList", mapList1);
                } else {
@ -899,50 +1138,6 @@ public class DailyReportUploadService {
        return array;
    }
//    /**
//     * 报表导出
//     *
//     * @param startDate
//     * @param endDate
//     * @return
//     */
//    public JSONArray pushListWriteDailyReport(OutputStream os, String startDate, String endDate, String dept) throws Exception {
//        List<String> list = new ArrayList<>();
//        Date startTime = DateUtil.strToDateShort(startDate);
//        Date endDateTime = DateUtil.strToDateShort(endDate);
//        int i=0;
//        do{
//            startTime = DateUtil.getPreDays(startTime, i);
//            String str = DateUtil.dateToStrShort(startTime);
//            list.add(str);
//            i++;
//        }while (startTime.before(endDateTime));
//        JSONArray array = new JSONArray();
//        for (i = 0; i < list.size(); i++) {
//            String date = list.get(i);
//            String doctorSql = " select id,name,job_title_name from base_doctor d where d.del=1 ";
//            if (StringUtils.isNoneBlank(dept)) {
//                doctorSql += " and d.id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
//            }
//            List<Map<String, Object>> mapList = jdbcTemplate.queryForList(doctorSql);
//
//            for (Map<String, Object> map : mapList) {
//                String id = map.get("id").toString();
//                List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(id);
//                if (baseDoctorHospitalDOS != null && baseDoctorHospitalDOS.size() != 0) {
//                    map.put("deptName", baseDoctorHospitalDOS.get(0).getDeptName());
//                }
//            }
//            JSONObject object = new JSONObject();
//            object.put("time", date);
//            object.put("list", mapList);
//            array.add(object);
//        }
//        pushListWritePriceTotal(os, array, startDate, endDate);
//        return array;
//    }
    /**
     * 查下上报最新一次记录
     * @param doctor
@ -996,7 +1191,7 @@ public class DailyReportUploadService {
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
                " left join base_org t on t.id = h.org_code" +
                " WHERE  " +
                " 1=1 and d.del=1 ";
                " 1=1 and d.del=1 and d.identity=0 ";
        if (StringUtils.isNotBlank(dept)) {
            sql += " AND h.dept_code = '" + dept + "'";
        }
@ -1014,6 +1209,111 @@ public class DailyReportUploadService {
            if (dailyReportUploadDOS!=null&&dailyReportUploadDOS.size()!=0){
                BaseDailyReportUploadDO dailyReportUploadDO = dailyReportUploadDOS.get(0);
                List<BaseDailyReportDetailDO> detailDOList = reportDetailDao.findByReportId(dailyReportUploadDO.getId());
                List<BaseDailyReportLogDO> reportLogDOS = dailyReportLogDao.findByReportId(dailyReportUploadDO.getId());
                dailyReportUploadDO.setDailyReportLogDOList(reportLogDOS);
                dailyReportUploadDO.setDetailDOList(detailDOList);
                String verifiedName = "";
                if ("1".equals(dailyReportUploadDO.getState())) {
                    verifiedName = "已核实";
                } else {
                    verifiedName = "未核实";
                }
                map.put("verifiedName",verifiedName);
                map.put("reportUploadDO",dailyReportUploadDO);
            }else {
                map.put("reportUploadDO",null);
            }
        }
        if (list != null && list.size() > 0 && StringUtils.isNotBlank(doctorCode)) {
            //排序
            for (int i = 0; i < list.size(); i++) {
                String id = (String) list.get(i).get("id");
                if (doctorCode.equals(id)) {
                    Collections.swap(list, 0, i);
                }
            }
        }
        return list;
    }
    /**
     *
     * @param orgCode
     * @param dept
     * @param doctorCode
     * @param key
     * @param flag 是否核实1是0否
     * @return
     */
    public List<Map<String, Object>> findDoctorByHospitalAndDeptHeshi(String doctor,String orgCode, String dept, String doctorCode,String key, Integer flag) {
        String sql = "SELECT " +
                " d.id AS \"id\", " +
                " d.photo AS \"photo\", " +
                " d.name AS \"name\", " +
                " d.expertise AS \"expertise\"," +
                " d.introduce AS \"introduce\"," +
                " d.job_title_code AS \"jobTitleCode\", " +
                " d.job_title_name AS \"jobTitleName\"," +
                " d.charge_type AS \"chargeType\"," +
                " d.outpatient_type AS \"outpatientType\"," +
                " d.consult_status AS \"consultStatus\"," +
                " h.dept_code AS \"deptCode\","+
                " h.dept_name AS \"deptName\","+
                " h.org_code AS \"orgCode\","+
                " h.org_name AS \"orgName\","+
                " t.photo AS \"hosptialphoto\","+
                " d.id_type AS \"idType\","+
                " d.id_card_type AS \"idCardType\" "+
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
                " left join base_org t on t.id = h.org_code" +
                " WHERE  " +
                " 1=1 and d.del=1 and d.identity=0 ";
        if (StringUtils.isNotBlank(dept)) {
            sql += " AND h.dept_code = '" + dept + "'";
        }
        if (StringUtils.isNoneBlank(doctor)){
            WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("dailyHeshiConfig");
            String buffer = "";
            if (hospitalSysDictDO!=null){
                JSONArray array = JSONArray.parseArray(hospitalSysDictDO.getDictValue());
                for (int i=0;i<array.size();i++){
                    JSONObject object = array.getJSONObject(i);
                    String header = object.getString("header");
                    if (header.equalsIgnoreCase(doctor)){
                        JSONArray jsonArray = object.getJSONArray("data");
                        for (int j=0;j<jsonArray.size();j++){
                            String str = jsonArray.getString(j);
                            buffer +="'"+str+"',";
                        }
                        buffer =buffer.substring(0,buffer.length()-1);
                    }
                }
            }
            if (StringUtils.isNoneBlank(buffer)){
                sql += " and d.id IN ("+buffer+")";
            }
        }
        if (StringUtils.isNotBlank(orgCode)) {
            sql += " AND h.org_code = '" + orgCode + "'";
        }
        if (StringUtils.isNotBlank(key)) {
            sql += " AND (h.dept_name like '%" + key + "%' OR d.name like '%" + key + "%' OR d.expertise like '%" + key + "%') ";
        }
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            String id = map.get("id").toString();
            List<BaseDailyReportUploadDO> dailyReportUploadDOS = dailyReportUploadDao.selectDailyReportByDoctorAndDate(id,DateUtil.getStringDateShort(),DateUtil.getStringDateShort());
            if (dailyReportUploadDOS!=null&&dailyReportUploadDOS.size()!=0){
                BaseDailyReportUploadDO dailyReportUploadDO = dailyReportUploadDOS.get(0);
                List<BaseDailyReportDetailDO> detailDOList = reportDetailDao.findByReportId(dailyReportUploadDO.getId());
                List<BaseDailyReportLogDO> reportLogDOS = dailyReportLogDao.findByReportId(dailyReportUploadDO.getId());
                dailyReportUploadDO.setDailyReportLogDOList(reportLogDOS);
                dailyReportUploadDO.setDetailDOList(detailDOList);
                String verifiedName = "";
                if ("1".equals(dailyReportUploadDO.getState())) {
@ -1060,7 +1360,7 @@ public class DailyReportUploadService {
            endDate = DateUtil.getLastDayOfMonth();
        }
        String day = DateUtil.getTwoDay(endDate, startDate);
        String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 ";
        String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and d.identity=0  ";
        Integer total = 0;//总人次
        String sqlCondition = "";
        if (level==2){
@ -1174,7 +1474,7 @@ public class DailyReportUploadService {
        JSONObject object = new JSONObject();
        String day = DateUtil.getTwoDay(endDate, startDate);
        String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 ";
        String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 and d.identity=0 ";
        Integer total = 0;//总人次
        String sql = "select COUNT(DISTINCT d.id) as \"total\" from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
                " on d.id = de.report_id where 1=1 ";
@ -1184,7 +1484,7 @@ public class DailyReportUploadService {
        }
        String idTypeCondition = " ";
        if (StringUtils.isNoneBlank(idType)) {
            idTypeCondition += "  (select d1.id from base_doctor d1 where 1=1 and d1.id_type = '" + idType + "')";
            idTypeCondition += "  (select d1.id from base_doctor d1 where 1=1 and  d1.identity=0 and d1.id_type = '" + idType + "')";
        }
        if (StringUtils.isNoneBlank(deptCondition)) {
            doctorSql += " and d.id IN " + deptCondition;
@ -1291,4 +1591,860 @@ 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){
                BaseDoctorDO docMemberTmp = baseDoctorDao.findById(tmp);
                if (null!=docMemberTmp){
                    BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
                    membersDOTmp.setReportItemId(reportItemDO.getId());
                    membersDOTmp.setUserId(tmp);
                    membersDOTmp.setUserName(docMemberTmp.getName());
                    membersDOTmp.setDel(1);
                    membersDOS.add(membersDOTmp);
                }
            }
        }else if (2==member_type){
            List<String> depts = Arrays.asList(members.split(","));
            for (String dept:depts){
                sql =  " select distinct doc.id,doc.name from base_doctor doc inner join base_doctor_hospital dh  " +
                        "on doc.id = dh.doctor_code and doc.del=1 and dh.del=1  " +
                        "where dh.dept_code='"+dept+"' ";
                List<Map<String,Object>> membersList = jdbcTemplate.queryForList(sql);
                for (Map<String,Object> tmp:membersList){
                    String docTmp = tmp.get("id").toString();
                    String docNameTmp = tmp.get("name").toString();
                    BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
                    membersDOTmp.setReportItemId(reportItemDO.getId());
                    membersDOTmp.setUserId(docTmp);
                    membersDOTmp.setUserName(docNameTmp);
                    membersDOTmp.setDel(1);
                    membersDOS.add(membersDOTmp);
                }
            }
        }else {
            throw new Exception("系统异常,请稍后重试");
        }
        if (membersDOS.size()>0){
            reportItemMembersDao.save(membersDOS);
        }
        reportItemDO.setItemMembersDOList(membersDOS);
        return reportItemDO;
    }
    /**
     * 编辑日报项目
     */
    @Transactional(rollbackFor = Exception.class)
    public BaseDailyReportItemDO modifyReportItem(String user,String item_id,String 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){
            BaseDoctorDO docMemberTmp = baseDoctorDao.findById(tmp);
            if (null!=docMemberTmp){
                BaseDailyReportItemMembersDO membersDOTmp = new BaseDailyReportItemMembersDO();
                membersDOTmp.setReportItemId(reportItemDO.getId());
                membersDOTmp.setUserId(tmp);
                membersDOTmp.setUserName(docMemberTmp.getName());
                membersDOTmp.setDel(1);
                membersDOS.add(membersDOTmp);
            }
        }
        if (membersDOS.size()>0){
            reportItemMembersDao.save(membersDOS);
        }
        reportItemDO.setItemMembersDOList(membersDOS);
        return reportItemDO;
    }
    /**
     *管理员完成日报项目
     * @throws Exception
     */
    @Transactional(rollbackFor = Exception.class)
    public BaseDailyReportItemDO completeReportItem(String user,String item_id,String completionUser,String completionHour,String completionTime) throws Exception {
        String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        if (userRoles.size()==0){
            throw new Exception("您无权限操作");
        }
        BaseDoctorDO doctorDO = baseDoctorDao.findById(user);
        if (null==doctorDO){
            throw new Exception("用户不存在无权操作");
        }
        BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(item_id);
        if (null==reportItemDO){
            throw new Exception("日报项目不存在");
        }
        reportItemDO.setState(1);
        if (StringUtils.isNoneBlank(completionUser)){
            BaseDoctorDO completionUserDO = baseDoctorDao.findById(completionUser);
            if (null!=completionUserDO){
                reportItemDO.setCompletionUser(completionUser);
                reportItemDO.setCompletionUserName(completionUserDO.getName());
            }else {
                throw new Exception("完成人不存在");
            }
        }else {
            reportItemDO.setCompletionUser(user);
            reportItemDO.setCompletionUserName(doctorDO.getName());
        }
        if (StringUtils.isNoneBlank(completionHour)){
            reportItemDO.setCompletionHour(completionHour);
        }else {
            //查询出关联的日报详情,计算完成时间
            sql = " select 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("日报项目不存在");
        }
        String sql = " select m.*,IFNULL(A.completion_hour,0) completion_hour,dh.dept_code,dh.dept_name from base_daily_report_item_members m  " +
                "LEFT JOIN ( " +
                "select up.doctor_id,SUM(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) completion_hour " +
                " from base_doctor_daily_report_upload up " +
                "INNER JOIN base_daily_report_detail rd on up.id = rd.report_id and rd.report_item_id='"+item_id+"' )A on m.user_id = A.doctor_id " +
                "INNER JOIN base_doctor_hospital dh on m.user_id = dh.doctor_code and dh.del=1 " +
                " where m.del=1 and m.report_item_id='"+item_id+"' ";
        List<BaseDailyReportItemMembersDO> membersDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemMembersDO.class));
        reportItemDO.setItemMembersDOList(membersDOS);
        return reportItemDO;
    }
    /**
     * 管理员获取所有日报项目
     */
    public List<BaseDailyReportItemDO> findReportItemListAdmin(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception {
        String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        if (userRoles.size()==0){
            throw new Exception("您无权限操作");
        }
        List<BaseDailyReportItemDO> itemDOS = new ArrayList<>();
        sql = " select i.* from base_daily_report_item i where 1=1 and i.del=1 ";
        if (StringUtils.isNotBlank(title)){
            sql +=" and i.title like '%"+title+"%' ";
        }
        if (StringUtils.isNotBlank(content)){
            sql +=" and i.content like '%"+content+"%' ";
        }
        if (null!=state){
            sql += " and i.state='"+state+"' ";
        }
        if (StringUtils.isNotBlank(begin_time)){
            sql += " and i.begin_time>='"+begin_time+"' ";
        }
        if (StringUtils.isNotBlank(end_time)){
            sql += " and i.end_time<='"+end_time+"' ";
        }
        if (StringUtils.isNotBlank(createUser)){
            sql += " and i.create_user = '"+createUser+"' ";
        }
        if (StringUtils.isNotBlank(createUserName)){
            sql += " and i.create_user_name like '%"+createUserName+"%' ";
        }
        itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
        for (BaseDailyReportItemDO tmp:itemDOS){
            List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId());
            tmp.setItemMembersDOList(membersDOS);
        }
        return itemDOS;
    }
    /**
     * 员工获取所有日报项目
     */
    public List<BaseDailyReportItemDO> findReportItemList(String user,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception {
        String sql = "select i.* from base_daily_report_item i INNER JOIN base_daily_report_item_members mem on i.id = mem.report_item_id " +
                "where i.del=1 and mem.del=1 and mem.user_id='"+user+"' " ;
        if (StringUtils.isNotBlank(title)){
            sql +=" and i.title like '%"+title+"%' ";
        }
        if (StringUtils.isNotBlank(content)){
            sql +=" and i.content like '%"+content+"%' ";
        }
        if (null!=state){
            sql += " and i.state='"+state+"' ";
        }
        if (StringUtils.isNotBlank(begin_time)){
            sql += " and i.begin_time>='"+begin_time+"' ";
        }
        if (StringUtils.isNotBlank(end_time)){
            sql += " and i.end_time<='"+end_time+"' ";
        }
        if (StringUtils.isNotBlank(createUser)){
            sql += " and i.create_user = '"+createUser+"' ";
        }
        if (StringUtils.isNotBlank(createUserName)){
            sql += " and i.create_user_name like '%"+createUserName+"%' ";
        }
        sql += " GROUP BY i.id ";
        List<BaseDailyReportItemDO> itemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyReportItemDO.class));
        for (BaseDailyReportItemDO tmp:itemDOS){
            List<BaseDailyReportItemMembersDO> membersDOS = reportItemMembersDao.findMembersByItemId(tmp.getId());
            tmp.setItemMembersDOList(membersDOS);
        }
        return itemDOS;
    }
    /**
     * 管理员日报项目统计
     */
    public 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,String member) throws Exception {
        String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        if (userRoles.size()==0){
            throw new Exception("您无权限操作");
        }
        String memberSql = " ";
        if (StringUtils.isNotBlank(member)){
            memberSql = " and up.doctor_id='"+member+"' ";
        }
        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_id,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+"' " +memberSql+
                    "group by i.id,up.doctor_id order by completionHour desc ";
        }
        else 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_id,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_id,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+"' " +memberSql+
                    "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_id,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+"' " +memberSql+
                    "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;
    }
    /**
     * 导出项目计划周报月报用时情况
     * @param user
     * @param type 1周报2月报
     * @param date
     * @return
     */
    public void getProjectItemReport(HttpServletResponse response, String user, Integer type, String date) throws Exception {
        //判断导出人权限
        String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        boolean adminFlag = false;//true 为总管理员 false为部门管理员
        String startTime = "";
        String endTime = "";
        if (userRoles.size()==0){
            throw new Exception("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
                adminFlag = true;
            } else if ("deptAdmin".equals(role_code)) {
                adminFlag = false;
            }else {
                throw new Exception("您无权限操作");
            }
        }
        if(1==type){//周报
           //获取日期对应月、周范围
            startTime =  DateUtil.getMondayOfThisWeek(DateUtil.strToDate(date))+" 00:00:00";
            endTime =  DateUtil.getSundayOfThisWeek(DateUtil.strToDate(date))+" 23:59:59";
        }else if (2==type){//月报
            startTime =  DateUtil.getFristDayOfMonthThisDate(new Date())+" 00:00:00";
            endTime =  DateUtil.getLastDayOfMonthThisDate(new Date())+" 23:59:59";
        }else {
            throw new Exception("导出失败,请检查传入参数");
        }
        //项目耗时情况
        sql = " select it.title,it.content,sum(IFNULL(pd.actual_completion_hour,IFNULL(pd.completion_hour,0))) 'completion_hour' ," +
                " CASE it.state WHEN 1 THEN '已完成' ELSE '未完成' END as 'state',DATE_FORMAT(it.create_time,'%Y-%m-%d %H:%i:%S') create_time,it.create_user_name " +
                "from base_daily_report_item it LEFT JOIN base_daily_report_detail pd  " +
                "on it.id = pd.report_item_id " +
                " and it.del=1 and it.state>=0 and pd.create_time>='"+startTime+"' and pd.create_time<='"+endTime+"'  " +
                " where (it.completion_time is null or it.completion_time>='"+startTime+"') " ;
        if (!adminFlag){
            sql +=" and i.create_user='"+user+"' ";
        }
        sql +=  "GROUP BY it.id ORDER BY it.title,it.create_time desc ";
        List<Map<String,Object>> projectlist = jdbcTemplate.queryForList(sql);
        sql = " select up.doctor_id,up.doctor_name,doc.job_title_name,dh.dept_name,up.week_name,up.report_date, " +
                "CASE up.leave_state WHEN 1 THEN '请假' else '未请假' END as 'leave_state',IFNULL(up.leave_hour,0) leave_hour, " +
                "it.title,it.content,rd.sort,rd.report_content,IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) 'completion_hour', " +
                "DATE_FORMAT(rd.create_time,'%Y-%m-%d %H:%i:%S') create_time,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time,rd.remark " +
                "from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id  " +
                "INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 LEFT JOIN  " +
                "base_daily_report_detail rd on up.id = rd.report_id " +
                "LEFT JOIN base_daily_report_item it on rd.report_item_id = it.id " +
                "where 1=1 and rd.create_time>='"+startTime+"' and rd.create_time<='"+endTime+"' " ;
        if (!adminFlag){
            sql +=" and up.doctor_id in ( select distinct dh2.doctor_code from base_doctor_hospital dh " +
                    "INNER JOIN base_doctor_hospital dh2 on dh.dept_code = dh2.dept_code " +
                    "INNER JOIN base_doctor doc on dh2.doctor_code = doc.id   " +
                    "where dh.doctor_code='"+user+"' and dh.del=1 and dh2.del=1 and doc.del=1 ) ";
        }
        sql += "ORDER BY up.doctor_id, report_date,rd.sort asc ";
        List<Map<String,Object>> userCompleteList = jdbcTemplate.queryForList(sql);
        //项目对应员工完成情况
        projectItemReportToOutStream(response,type,projectlist,userCompleteList,DateUtil.dateToStrFormatShort(DateUtil.strToDate(startTime)),DateUtil.dateToStrFormatShort(DateUtil.strToDate(endTime)));
    }
    /**
     * 导出员工周报月报提交情况
     * @param user
     * @param type 1周报2月报
     * @param date
     * @return
     */
    public void getUserReportList(HttpServletResponse response,String user,Integer type,String date) throws Exception {
        //判断导出人权限
        String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        boolean adminFlag = false;//true 为总管理员 false为部门管理员
        String startTime = "";
        String endTime = "";
        if (userRoles.size()==0){
            throw new Exception("您无权限操作");
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
                adminFlag = true;
            } else if ("deptAdmin".equals(role_code)) {
                adminFlag = false;
            }else {
                throw new Exception("您无权限操作");
            }
        }
        if(1==type){//周报
            //获取日期对应月、周范围
            startTime =  DateUtil.getMondayOfThisWeek(DateUtil.strToDate(date))+" 00:00:00";
            endTime =  DateUtil.getSundayOfThisWeek(DateUtil.strToDate(date))+" 23:59:59";
        }else if (2==type){//月报
            startTime =  DateUtil.getFristDayOfMonthThisDate(new Date())+" 00:00:00";
            endTime =  DateUtil.getLastDayOfMonthThisDate(new Date())+" 23:59:59";
        }else {
            throw new Exception("导出失败,请检查传入参数");
        }
        sql = " select up.doctor_id,up.doctor_name,doc.job_title_name,dh.dept_name,up.week_name,up.report_date, " +
                "CASE up.leave_state WHEN 1 THEN '请假' else '未请假' END as 'leave_state',IFNULL(up.leave_hour,0) leave_hour, " +
                "it.title,it.content,rd.sort,rd.report_content,IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) 'completion_hour', " +
                "DATE_FORMAT(rd.create_time,'%Y-%m-%d %H:%i:%S') create_time,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time," +
                " rd.remark " +
                "from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id  " +
                "INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 LEFT JOIN  " +
                "base_daily_report_detail rd on up.id = rd.report_id " +
                "LEFT JOIN base_daily_report_item it on rd.report_item_id = it.id " +
                "where 1=1 and rd.create_time>='"+startTime+"' and rd.create_time<='"+endTime+"' " ;
        if (!adminFlag){
            sql +=" and up.doctor_id in ( select distinct dh2.doctor_code from base_doctor_hospital dh " +
                    "INNER JOIN base_doctor_hospital dh2 on dh.dept_code = dh2.dept_code " +
                    "INNER JOIN base_doctor doc on dh2.doctor_code = doc.id   " +
                    "where dh.doctor_code='"+user+"' and dh.del=1 and dh2.del=1 and doc.del=1 ) ";
        }
        sql += "ORDER BY up.doctor_id, report_date,rd.sort asc ";
        List<Map<String,Object>> userCompleteList = jdbcTemplate.queryForList(sql);
        String typeName = 1==type?"周报":"月报";
        OutputStream os = response.getOutputStream();
        response.setContentType("octets/stream");
        response.setHeader("Content-Disposition", "attachment; filename=" + new String(URLEncoder.encode(typeName+"员工完成情况")+".xls"));
        UserReportListExcel(userCompleteList,os,DateUtil.dateToStrFormatShort(DateUtil.strToDate(startTime)),DateUtil.dateToStrFormatShort(DateUtil.strToDate(endTime)));
    }
   public void projectItemReportToOutStream(HttpServletResponse response,Integer type,List<Map<String,Object>> projectList,List<Map<String,Object>> userCompleteList,
                                            String startDate,String endDate) throws Exception {
       Map<String,List<Map<String,Object>>> projectMap = projectList.stream().collect(Collectors.groupingBy(e -> e.get("title").toString()));
       String typeName = 1==type?"周报":"月报";
       String zipFileName = "项目"+typeName+"完成情况"+startDate+"至"+endDate;
       long time = System.currentTimeMillis();
       String exportConclusionList = time+"exportList";
       String path = this.getClass().getResource("/").getPath() + exportConclusionList;
       File file = new File(path);
       // 删除文件夹、文件
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
       System.out.println("创建文件夹时间:"+sdf.format(new Date()));
       if (file.exists()) {
           if (file != null){
               FileUtil.deleteFolder(file);
               file.mkdir();
           }else {
               file.delete();
               file.mkdir();
           }
       }else {
           file.mkdir();
       }
       /**
        * 开始创建周报/月报耗时情况
        */
       try {
           String fileName = typeName+"完成情况"+".xls";;
           OutputStream os = new FileOutputStream(path+"/"+fileName);
           WritableWorkbook wwb = jxl.Workbook.createWorkbook(os);
           WritableSheet sheet = wwb.createSheet("sheet", 1);
           String header[] = {typeName+"完成情况("+startDate+"至"+endDate+")", "", "","", "", ""};
           int i = 0;
           for (String h : header) {
               addCell(sheet, 0, i, h);
               i++;
           }
           /**
            * mergeCells(a,b,c,d) 单元格合并函数
            * a 单元格的列号
            * b 单元格的行号
            * c 从单元格[a,b]起,向“右”合并的列数 注意c不是合并列的数量,而是列的下标数
            * d 从单元格[a,b]起,向下合并到d行
            */
           sheet.mergeCells(0, 0, header.length-1, 0);
           header = new String[]{"项目", "内容", "用时", "是否完成", "创建人", "创建时间"};
           i = 0;
           for (String h : header) {
               addCell(sheet,1 , i, h);
               i++;
           }
           i=2;
           //记录所需要合并的信息(项目)
           int a=0,b=0,c=0,d=0;
           String titleMerge = null;
           for (Map<String,Object> projectTmp:projectList){
               String title = null==projectTmp.get("title")?"":projectTmp.get("title").toString();
               if (null==titleMerge){
                   titleMerge = title;
                   a = 0;
                   b=i;
                   d=0;
               }
               if (title.equals(titleMerge)){
                   d=i;
               }else {
                   titleMerge = title;
                   sheet.mergeCells(a, b, c, d);
                   a = 0;
                   b=i;
                   d=0;
               }
               addCell(sheet,i , 0,null==projectTmp.get("title")?"":projectTmp.get("title").toString());
               addCell(sheet,i , 1,null==projectTmp.get("content")?"":projectTmp.get("content").toString());
               addCell(sheet,i , 2,null==projectTmp.get("completion_hour")?"":projectTmp.get("completion_hour").toString());
               addCell(sheet,i , 3,null==projectTmp.get("state")?"":projectTmp.get("state").toString());
               addCell(sheet,i , 4,null==projectTmp.get("create_user_name")?"":projectTmp.get("create_user_name").toString());
               addCell(sheet,i , 5,null==projectTmp.get("create_time")?"":projectTmp.get("create_time").toString());
               i++;
           }
           sheet.mergeCells(a, b, c, d);
           wwb.write();
           wwb.close();
           File zipFile = new File(path.replace(exportConclusionList, "") + zipFileName + ".zip");
           if (zipFile.exists()) {
               zipFile.delete();
           }
       }catch (Exception e){
           e.printStackTrace();
       }
       /**
        * 开始创建员工用时情况
        */
       try {
           String fileName = typeName+"员工完成情况"+".xls";;
           OutputStream os = new FileOutputStream(path+"/"+fileName);
           UserReportListExcel(userCompleteList,os,startDate,endDate);
           File zipFile = new File(path.replace(exportConclusionList, "") + zipFileName + ".zip");
           if (zipFile.exists()) {
               zipFile.delete();
           }
       }catch (Exception e){
           e.printStackTrace();
       }
       // 打包文件夹
       if (FileUtil.fileToZip(path, path.replace(exportConclusionList, ""), zipFileName)) {
           file =  new File(path.replace(exportConclusionList, "") + zipFileName + ".zip");
       } else {
           file = null;
       }
       if (file != null) {
           response.setCharacterEncoding("utf-8");
           response.setContentType("multipart/form-data");
           response.setHeader("Content-Disposition", "attachment; filename=" + new String(URLEncoder.encode(zipFileName)+".zip"));
           InputStream inputStream = new FileInputStream(file);
           OutputStream outputStream = response.getOutputStream();
           byte[] b = new byte[2048];
           int length = 0;
           while ((length = inputStream.read(b)) > 0) {
               outputStream.write(b, 0, length);
           }
           outputStream.flush();
           outputStream.close();
           inputStream.close();
       } else {
            response.setStatus(500);
       }
       file.delete();
    }
    /**
     * 员工耗时表格操作
     * @param userCompleteList
     * @param os
     * @param startDate
     * @param endDate
     * @throws IOException
     * @throws WriteException
     */
    public void UserReportListExcel(List<Map<String,Object>> userCompleteList,OutputStream os,String startDate,String endDate) throws IOException, WriteException {
        WritableWorkbook wwb = jxl.Workbook.createWorkbook(os);
        WritableSheet sheet = wwb.createSheet("sheet", 1);
        String[] header = {"员工完成情况("+startDate+"至"+endDate+")","","","","","","","","","","","","","","","","",""};//
        int k = 0;
        for (String h : header) {
            addCell(sheet, 0, k, h);//表名,行,列,header
            k++;
        }
        sheet.mergeCells(0, 0, header.length-1, 0);
        header = new String[]{"人员", "部门","岗位","日期", "上报日期", "请假状态", "请假时长","关联项目","关联项目内容","事项序号", "事项内容", "用时", "创建时间", "上级核实","核实人员","核实时间","是否存疑","备注"};
        int i = 0;
        for (String h : header) {
            addCell(sheet, 1, i, h);
            i++;
        }
        i=2;
        //记录所需要合并的信息 (人员、日期、上报日期)
        int a1=0,b1=0,c1=0,d1=0;//姓名
        int a2=3,b2=0,c2=0,d2=0;//weekName
        int a3=4,b3=0,c3=0,d3=0;//上报日期
        String doctorIdMerge =null;
        String doctorNameMerge = null;
        String weekNameMerge = null;
        String reportDateMerge = null;
        for (Map<String,Object> completeTmp:userCompleteList){
            String doctorName = null==completeTmp.get("doctor_name")?"":completeTmp.get("doctor_name").toString();
            String weekName = null==completeTmp.get("week_name")?"":completeTmp.get("week_name").toString();
            String reportDate = null==completeTmp.get("report_date")?"":completeTmp.get("report_date").toString();
            String doctorId = null==completeTmp.get("doctor_id")?"":completeTmp.get("doctor_id").toString();
            if (null==doctorIdMerge){
                doctorIdMerge = doctorId;
            }
            if (!doctorId.equals(doctorIdMerge)){
                sheet.mergeCells(a1, b1, c1, d1);
                sheet.mergeCells(a1+1, b1, c1, d1);//部门
                sheet.mergeCells(a1+2, b1, c1, d1);//岗位
                sheet.mergeCells(a2, b2, c2, d2);
                sheet.mergeCells(a3, b3, c3, d3);
                doctorIdMerge = doctorId;
                b1=i;d1=0;
                b2=i;d2=0;
                b3=i;d3=0;
            }else {
                if (null==doctorNameMerge){
                    doctorNameMerge = doctorName;
                    b1=i;
                    d1=0;
                }
                if (doctorName.equals(doctorNameMerge)){
                    d1=i;
                }else {
                    doctorNameMerge = doctorName;
                    sheet.mergeCells(a1, b1, c1, d1);
                    sheet.mergeCells(a1+1, b1, c1, d1);//部门
                    sheet.mergeCells(a1+2, b1, c1, d1);//岗位
                    b1=i;
                    d1=0;
                }
                if (null==weekNameMerge){
                    weekNameMerge = weekName;
                    b2=i;
                    d2=0;
                }
                if (weekName.equals(weekNameMerge)){
                    d2=i;
                }else {
                    weekNameMerge = weekName;
                    sheet.mergeCells(a2, b2, c2, d2);
                    b2=i;
                    d2=0;
                }
                if (null==reportDateMerge){
                    reportDateMerge = reportDate;
                    b3=i;
                    d3=0;
                }
                if (reportDate.equals(reportDateMerge)){
                    d3=i;
                }else {
                    reportDateMerge = reportDate;
                    sheet.mergeCells(a3, b3, c3, d3);
                    b3=i;
                    d3=0;
                }
            }
            addCell(sheet,i, 0,null==completeTmp.get("doctor_name")?"":completeTmp.get("doctor_name").toString());
            addCell(sheet,i, 1,null==completeTmp.get("dept_name")?"":completeTmp.get("dept_name").toString());
            addCell(sheet,i, 2,null==completeTmp.get("job_title_name")?"":completeTmp.get("job_title_name").toString());
            addCell(sheet,i, 3,null==completeTmp.get("week_name")?"":completeTmp.get("week_name").toString());
            addCell(sheet,i, 4,null==completeTmp.get("report_date")?"":completeTmp.get("report_date").toString());
            addCell(sheet,i, 5,null==completeTmp.get("leave_state")?"":completeTmp.get("leave_state").toString());
            addCell(sheet,i, 6,null==completeTmp.get("leave_hour")?"":completeTmp.get("leave_hour").toString());
            addCell(sheet,i ,7,null==completeTmp.get("title")?"":completeTmp.get("title").toString());
            addCell(sheet,i, 8,null==completeTmp.get("content")?"":completeTmp.get("content").toString());
            addCell(sheet,i, 9,null==completeTmp.get("sort")?"":completeTmp.get("sort").toString());
            addCell(sheet,i, 10,null==completeTmp.get("report_content")?"":completeTmp.get("report_content").toString());
            addCell(sheet,i , 11,null==completeTmp.get("completion_hour")?"":completeTmp.get("completion_hour").toString());
            addCell(sheet,i , 12,null==completeTmp.get("create_time")?"":completeTmp.get("create_time").toString());
            addCell(sheet,i , 13,null==completeTmp.get("verification_state")?"":completeTmp.get("verification_state").toString());
            addCell(sheet,i , 14,null==completeTmp.get("verification_user_name")?"":completeTmp.get("verification_user_name").toString());
            addCell(sheet,i , 15,null==completeTmp.get("verification_time")?"":completeTmp.get("verification_time").toString());
            addCell(sheet,i , 16,null==completeTmp.get("doubt")?"":completeTmp.get("doubt").toString());
            addCell(sheet,i , 17,null==completeTmp.get("remark")?"":completeTmp.get("remark").toString());
            i++;
        }
        sheet.mergeCells(a1, b1, c1, d1);
        sheet.mergeCells(a1+1, b1, c1, d1);//部门
        sheet.mergeCells(a1+2, b1, c1, d1);//岗位
        sheet.mergeCells(a2, b2, c2, d2);
        sheet.mergeCells(a3, b3, c3, d3);
        wwb.write();
        wwb.close();
    }
    public double getRangeDouble(Double first, Double second) {
        if (second == 0 && first > 0) {
            //如果分母为0 分子不为0 返回100%
            return 100;
        } else if (second == 0 && first == 0) {
            //如果分母为0 分子为0 返回0%
            return 0;
        }
        double result =  (first * 100.0) / second;
        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
        String filesize = df.format(result);
        return Double.parseDouble(filesize);
    }
    private void addCell(WritableSheet ws, int row, int column, String data) throws WriteException {
        Label label = new Label(column, row, data);
        WritableCellFormat cellFormat = new WritableCellFormat();
        cellFormat.setAlignment(jxl.format.Alignment.CENTRE);
        cellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        label.setCellFormat(cellFormat);
        ws.addCell(label);
    }
}

+ 10 - 0
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -1191,6 +1191,14 @@ public class HealthCareService {
        data.put("trauma_sign",ylzMedicalRelationDO.getTraumaSign());//外伤标志0 否,1 是
        data.put("date", DateUtil.dateToStrFormatLong(ylzMedicalRelationDO.getDate()));//实际门诊/入院日期 若为空,默认取系统时间
        data.put("data_source",ylzMedicalRelationDO.getDataSource());//数据来源
        WlyyOutpatientDO outpatientDO = outpatientDao.findById(outpatientId);
        if (outpatientDO!=null){
            BaseDoctorDO doctorDO = doctorDao.findById(outpatientDO.getDoctor());
            if (doctorDO!=null){
                data.put("atddr_no",doctorDO.getAtddrNo());
                data.put("dr_name",doctorDO.getName());
            }
        }
        String result = requestYlz(data,funid,"医保挂号");
        if (result==null){
            throw new Exception("上传医保挂号失败!");
@ -1535,9 +1543,11 @@ public class HealthCareService {
                ylzMedicalRelationDO.setJtgjPay(jsonObject.getString("jtgj_pay"));
                ylzMedicalRelationDO.setCollector(jsonObject.getString("collector"));
                Double price= Double.parseDouble(ylzMedicalRelationDO.getTcjjPay())+Double.parseDouble(ylzMedicalRelationDO.getSbjjPay())+
                        Double.parseDouble(ylzMedicalRelationDO.getGwyPay())+
                        Double.parseDouble(ylzMedicalRelationDO.getJzfpPay())+Double.parseDouble(ylzMedicalRelationDO.getYljzPay())+
                        Double.parseDouble(ylzMedicalRelationDO.getOtherPay())+Double.parseDouble(ylzMedicalRelationDO.getEnterpriseSupplement());
                ylzMedicalRelationDO.setMedicalPrice(price+"");
                logger.info("meidicalPrice====="+price);
                ylzMedicalRelationDO = ylzMedicailRelationDao.save(ylzMedicalRelationDO);
                JSONArray jsonArray = jsonObject.getJSONArray("fplist");
                for (int i=0;i<jsonArray.size();i++){

+ 7 - 3
business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java

@ -1,15 +1,12 @@
package com.yihu.jw.hospital.message.dao;
import com.yihu.jw.entity.care.device.BaseSleepPlanDetail;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import org.hibernate.annotations.SQLUpdate;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
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 org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@ -25,6 +22,13 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Query("from SystemMessageDO p where p.id = ?1")
    SystemMessageDO queryById(String id);
    @Modifying
    @Query("delete from SystemMessageDO a where a.type = '996'")
    int delPushTimeIntegerPoint();
    @Query("delete from SystemMessageDO a where  a.type = '995' and a.createTime<=?1 ")
    int delWeatherForecast(String date);
    @Modifying
    @Query("delete from SystemMessageDO a   where a.receiver = ?1 and a.relationCode = ?2 and a.type ='407'")
    int orderMessageDel(String doctor, String orderId);

+ 57 - 3
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -23,6 +23,7 @@ import com.yihu.jw.entity.base.area.BaseDrugStoreDO;
import com.yihu.jw.entity.base.dict.BaseJobCategoryDO;
import com.yihu.jw.entity.base.dict.DictDeptDescDO;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.dict.DictIcd10DO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
@ -94,6 +95,7 @@ import com.yihu.jw.restmodel.web.*;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.rm.iot.IotRequestMapping;
import com.yihu.jw.sms.dao.BaseSmsTemplateDao;
import com.yihu.jw.sms.service.ZhongShanSMSService;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.date.DateUtil;
@ -336,6 +338,10 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private HcyyEntranceService hcyyEntranceService;
    @Autowired
    private BasePatientMedicareCardDao patientMedicareCardDao;
    @Autowired
    private ZhongShanSMSService zhongShanSMSService;
    @Autowired
    private BaseDictIcd10Dao dictIcd10Dao;
    public static String entranceUrl = "http://172.16.100.240:10023/xzzx/";
@ -2526,8 +2532,38 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @return
     * @throws Exception
     */
    public JSONArray getICD10(String pyKey) throws Exception {
        return entranceService.MS25001(pyKey, demoFlag);
    public List<Map<String,Object>> getICD10(String pyKey) throws Exception {
        String sql = "select code,name,py_code,d_code from dict_icd10 where 1=1 ";
        if (StringUtils.isNoneBlank(pyKey)){
            sql += " and (py_code like '%"+pyKey+"%' or name like '%"+pyKey+"%') ";
        }
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
        return mapList;
   /*     return entranceService.MS25001(pyKey,demoFlag);*/
    }
    public String synIcd10() throws Exception {
        JSONArray array = entranceService.MS25001(null,demoFlag);
        int j = 0;
        dictIcd10Dao.deleteAll();
        for (int i=0;i<array.size();i++){
            JSONObject object = array.getJSONObject(i);
            String code = object.getString("code");
            String name = object.getString("name");
            String py_code  =object.getString("py_code");
            String d_code = object.getString("d_code");
            DictIcd10DO icd10DO = new DictIcd10DO();
            icd10DO.setCode(code);
            icd10DO.setName(name);
            icd10DO.setPy_code(py_code);
            icd10DO.setD_code(d_code);
            icd10DO.setIs_del("1");
            icd10DO.setStatus("1");
            dictIcd10Dao.save(icd10DO);
            j++;
        }
        return j+"";
    }
    /**
@ -8253,7 +8289,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    sfJsonObject.put("d_provinceName", sfexpress_obj.getProvinceName());
                    sfJsonObject.put("d_cityName", sfexpress_obj.getCityName());
                    sfJsonObject.put("d_townName", sfexpress_obj.getTownName());
                    sfJsonObject.put("d_address", sfexpress_obj.getAddress());
                    sfJsonObject.put("d_address",sfexpress_obj.getStreetName()+sfexpress_obj.getAddress());
                    sfJsonObject.put("d_phone", sfexpress_obj.getMobile());
                    sfJsonObject.put("express_type", 11);
                    sfJsonObject.put("pay_method", 2);
@ -8644,6 +8680,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                        saveInquirySystemMessage(outpatient,null);
                    }
                    msg="图文咨询";
                } else if("3".equals(outpatient.getType())){
                    systemMessageDO.setTitle("家医咨询");
                    systemMessageDO.setType("15");
@ -8690,6 +8727,23 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                        saveInquirySystemMessage(outpatient,null);
                    }
                    msg="图文复诊";
                    if (wechatId.equalsIgnoreCase("xm_zsyy_wx")){
                        BaseDoctorDO doctorDO = baseDoctorDao.findById(outpatient.getDoctor());
                        if (doctorDO!=null){
                            if (StringUtils.isNoneBlank(doctorDO.getMobile())){
                                String content = doctorDO.getName()+"医生,患者"+outpatient.getPatientName()+"向您发起了图文问诊,请您及时打开企业微信,进入在线诊疗查看!";
                                int i= zhongShanSMSService.ZhongShangSendSMS(doctorDO.getMobile(),content);
                                WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
                                wlyyHttpLogDO.setDoctor(outpatient.getDoctor());
                                wlyyHttpLogDO.setRequest("");
                                wlyyHttpLogDO.setName(content);
                                wlyyHttpLogDO.setCode(outpatient.getId());
                                wlyyHttpLogDO.setCreateTime(new Date());
                                wlyyHttpLogDO.setResponse(i+"");
                                wlyyHttpLogDao.save(wlyyHttpLogDO);
                            }
                        }
                    }
                } else {
                    systemMessageDO.setTitle("视频复诊预约成功");
                    systemMessageDO.setType("2");

+ 13 - 5
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java

@ -822,6 +822,14 @@ public class EntranceService {
            if (StringUtils.isNotBlank(win_no)) {
                sbs.append("<query compy=\"=\" item=\"win_no\" splice=\"and\" value=\"'" + win_no + "'\"/>");
            }
          /*  if (StringUtils.isNotBlank(drugname)) {
                //用默认字符编码解码字符串。
                byte[] bs = drugname.getBytes();
                //用新的字符编码生成字符串
                drugname = new String(bs, "iso-8859-1");
                logger.info("drugname=" + drugname);
                sbs.append("<query compy=\"=\" item=\"drugname\" splice=\"and\" value=\"'" + drugname + "'\"/>");
            }*/
            if (StringUtils.isNotBlank(groupNo)) {
                String groups[] = groupNo.split(",");
                String inSql = "";
@ -1417,7 +1425,7 @@ public class EntranceService {
     * @return
     * @throws Exception
     */
    public JSONArray MS25001(String py_code, boolean demoFlag) throws Exception {
    public JSONArray MS25001(String py_code,boolean demoFlag) throws Exception {
        String fid = "MS25001";
        String resp = "";
        if (demoFlag) {
@ -3264,7 +3272,7 @@ public class EntranceService {
                                ylzMedicalMxDO.setHisDeptCode(resultJSON.getString("ksbm00"));
                                ylzMedicalMxDO.setHisDeptName(resultJSON.getString("ghksmc"));
                                ylzMedicalMxDO.setMedicalPerName(resultJSON.getString("ysxm00"));
                                ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getIdcard());
                                ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getAtddrNo());
                                ylzMedicalMxDO.setLimitType(mxObject.getString("sfybxm"));
                                ylzMedicalMxDO.setActgDate(DateUtil.strToYmdDateLong(mxObject.getString("xmrq00")+" "+mxObject.getString("xmsj00")));
                                ylzMedicalMxDO.setHisItemName(mxObject.getString("xmmc00"));
@ -3302,7 +3310,7 @@ public class EntranceService {
                                    ylzMedicalMxDO.setHisDeptCode(resultJSON.getString("ksbm00"));
                                    ylzMedicalMxDO.setHisDeptName(resultJSON.getString("ghksmc"));
                                    ylzMedicalMxDO.setMedicalPerName(resultJSON.getString("ysxm00"));
                                    ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getIdcard());
                                    ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getAtddrNo());
                                    ylzMedicalMxDO.setLimitType(mxObject.getString("sfybxm"));
                                    ylzMedicalMxDO.setActgDate(DateUtil.strToYmdDateLong(mxObject.getString("xmrq00")+" "+mxObject.getString("xmsj00")));
                                    ylzMedicalMxDO.setHisItemName(mxObject.getString("xmmc00"));
@ -3430,7 +3438,7 @@ public class EntranceService {
                                ylzMedicalMxDO.setHisDeptCode(resultJSON.getString("ksbm00"));
                                ylzMedicalMxDO.setHisDeptName(resultJSON.getString("ghksmc"));
                                ylzMedicalMxDO.setMedicalPerName(resultJSON.getString("ysxm00"));
                                ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getIdcard());
                                ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getAtddrNo());
                                ylzMedicalMxDO.setLimitType(mxObject.getString("sfybxm"));
                                ylzMedicalMxDO.setActgDate(DateUtil.strToYmdDateLong(mxObject.getString("xmrq00")+" "+mxObject.getString("xmsj00")));
                                ylzMedicalMxDO.setHisItemName(mxObject.getString("xmmc00"));
@ -3468,7 +3476,7 @@ public class EntranceService {
                                    ylzMedicalMxDO.setHisDeptCode(resultJSON.getString("ksbm00"));
                                    ylzMedicalMxDO.setHisDeptName(resultJSON.getString("ghksmc"));
                                    ylzMedicalMxDO.setMedicalPerName(resultJSON.getString("ysxm00"));
                                    ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getIdcard());
                                    ylzMedicalMxDO.setMedicalPerId(baseDoctorDO.getAtddrNo());
                                    if (mxObject.getString("xmbh00").equalsIgnoreCase("XA11GAW043A001010202251")){
                                        ylzMedicalMxDO.setLimitType("N");
                                    }else {

+ 4 - 3
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java

@ -69,6 +69,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigDecimal;
import java.net.URL;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@ -2745,7 +2747,6 @@ public class XzzxEntranceService{
    /**
     * 2.1.1获取患者结算信息
     * @param icCardNo 社会保障卡号
     * @param his_serial HIS挂号号
     * @param org_code 医院编码
     * @return
     */
@ -3632,7 +3633,7 @@ public class XzzxEntranceService{
     */
    public JSONArray selectIcd10Dict(String spellCode) throws Exception {
        String response="";
        String url = entranceUrl+"getICD10Dict?spellCode="+spellCode;
        String url = entranceUrl+"getICD10Dict?spellCode="+ URLEncoder.encode(spellCode);
        response = httpClientUtil.get(url,"GBK");
        JSONObject object = JSONObject.parseObject(response);
        JSONArray jsonArray = new JSONArray();
@ -3665,7 +3666,7 @@ public class XzzxEntranceService{
     */
    public JSONArray selectDrugDict(String spellCode,String drugNo) throws Exception {
        String response="";
        String url = entranceUrl+"getDrugDict?spellCode="+spellCode+"&drugNo="+drugNo;
        String url = entranceUrl+"getDrugDict?spellCode="+URLEncoder.encode(spellCode)+"&drugNo="+drugNo;
        response = httpClientUtil.get(url,"GBK");
        JSONObject object = JSONObject.parseObject(response);
        JSONArray jsonArray = new JSONArray();

+ 12 - 10
business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java

@ -1574,7 +1574,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                       if (outpatientDO.getType().equalsIgnoreCase("1")){
                           title = "图文复诊";
                           type="9";
                           msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                           msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,请您及时接诊!";
                       }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                           title = "视频复诊";
                           type="16";
@ -1813,7 +1813,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
            if (StringUtils.isNoneBlank(businessOrderDO.getDoctor())){
                BaseDoctorDO doctorDO = doctorDao.findById(businessOrderDO.getDoctor());
                String fee = null;
                if (wechatId.equalsIgnoreCase("xm_zsyy_wx")||wechatId.equalsIgnoreCase("xm_xzzx_wx")){
                if (wechatId.equalsIgnoreCase("xm_zsyy_wx")||wechatId.equalsIgnoreCase("xm_xzzx_wx")||wechatId.equalsIgnoreCase("xm_hcyy_wx")){
                    if (wlyyOutpatientDO!=null){
                        if ("1".equalsIgnoreCase(wlyyOutpatientDO.getOutpatientType())&&"1".equalsIgnoreCase(wlyyOutpatientDO.getType())){
                            WlyyChargeDictDO chargeDictDO = chargeDictDao.findByChargeTypeAndDeptTypeCode(doctorDO.getTwfzChargeType(),"6");
@ -2194,9 +2194,9 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        if (StringUtils.isNoneBlank(startTime)){
            if("xm_ykyy_wx".equals(wechatId)){
                if (flag){
                    sql+=" and t.create_time > '" + startTime + "'";
                    sql+=" and t.update_time > '" + startTime + "'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                    sql+=" and t.update_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '" + startTime + "'";
@ -2205,9 +2205,9 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        if (StringUtils.isNoneBlank(endTime)){
            if("xm_ykyy_wx".equals(wechatId)){
                if (flag){
                    sql+=" and t.create_time <= '" + endTime + "'";
                    sql+=" and t.update_time <= '" + endTime + "'";
                }else {
                    sql+=" and t.create_time <= to_date('" + endTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                    sql+=" and t.update_time <= to_date('" + endTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time <= '" + endTime + "'";
@ -2258,11 +2258,13 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                    WlyyOutpatientDO outpatientDO = outpatientDao.findById(relationCode);
                    map.put("doctorName",outpatientDO.getDoctorName());
                    map.put("consumerName",outpatientDO.getConsumerName());
                    map.put("patientName",outpatientDO.getPatientName());
                }else if (orderCategoryFlag.equalsIgnoreCase("4")){
                    WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(relationCode);
                    WlyyOutpatientDO outpatientDO = outpatientDao.findById(prescriptionDO.getOutpatientId());
                    map.put("doctorName",outpatientDO.getDoctorName());
                    map.put("consumerName",outpatientDO.getConsumerName());
                    map.put("patientName",outpatientDO.getPatientName());
                }
            }
        }
@ -2314,9 +2316,9 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        if (StringUtils.isNoneBlank(startTime)){
            if("xm_ykyy_wx".equals(wechatId)){
                if (flag){
                    sql+=" and t.create_time > '" + startTime + "'";
                    sql+=" and t.update_time > '" + startTime + "'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                    sql+=" and t.update_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '" + startTime + "'";
@ -2325,9 +2327,9 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        if (StringUtils.isNoneBlank(endTime)){
            if("xm_ykyy_wx".equals(wechatId)){
                if (flag){
                    sql+=" and t.create_time <= '" + endTime + "'";
                    sql+=" and t.update_time <= '" + endTime + "'";
                }else {
                    sql+=" and t.create_time <= to_date('" + endTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                    sql+=" and t.update_time <= to_date('" + endTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time <= '" + endTime + "'";

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/order/pay/ylz/YlzPayService.java

@ -409,6 +409,7 @@ public class YlzPayService {
            String onepayUrl = oauthYlzConfigDO.getUrl();
            String signType=oauthYlzConfigDO.getSignType();
            String encryptType = oauthYlzConfigDO.getEncType();
            String wxMinId = oauthYlzConfigDO.getWxMinId();
            HisOnepayClient onepayClient = new HisOnepayClient(onepayUrl, appId, appSecret, signType, encryptType);
            param.setOperatorId(operatorId);
            param.setOperatorName(operatorName);
@ -424,6 +425,9 @@ public class YlzPayService {
            if(StringUtils.isNoneBlank(openId)){
                extra.put("openId",openId);
            }
            if (depositType.equalsIgnoreCase("WX_MIN")){
                extra.put("wxMinId",wxMinId);
            }
		/*	String value = systemDictDao.findByDictNameAndCode("RETURN_URL","RETURN_URL");

+ 1 - 1
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -4077,7 +4077,7 @@ public class ImService {
                "op.source as \"source\"  ," +
                "op.card_no as \"cardNo\"  ," +
                "op.medical_state as \"medicalState\"  ," +
                "bop.status as \"payStatus\" ," +
                "bop.status as \"payStatus1\" ," +
                "op.patient_cancel_value as \"patientCancelValue\" ," +
                "op.patient_cancel_remark as \"patient_cancel_remark\"  " +
                "FROM wlyy_outpatient op LEFT JOIN wlyy_consult a  ON a.relation_code = op.id \n" +

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

@ -2081,5 +2081,41 @@ 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'核实人姓名'
alter table base_daily_report_item add column `completion_user_name` varchar(50) DEFAULT NULL COMMENT '完成人';
alter table base_daily_report_item_members add column `user_name` varchar(50) DEFAULT NULL COMMENT '成员成员姓名';

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java

@ -306,6 +306,26 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
    private Integer mark;//数据导出权限   1是 0否
    private String atddrNo;//国码
    private String identity;//身份1是总经理,0是员工
    public String getIdentity() {
        return identity;
    }
    public void setIdentity(String identity) {
        this.identity = identity;
    }
    public String getAtddrNo() {
        return atddrNo;
    }
    public void setAtddrNo(String atddrNo) {
        this.atddrNo = atddrNo;
    }
    public Integer getMark() {
        return mark;
    }

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

@ -5,6 +5,7 @@ import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
@ -22,11 +23,18 @@ 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;//日报项目名称
    private boolean reportItemFlag;
    private String reportItemTitle;
    public String getReportId() {
        return reportId;
@ -85,6 +93,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 +148,38 @@ 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;
    }
    @Transient
    public boolean getReportItemFlag() {
        return reportItemFlag;
    }
    public void setReportItemFlag(boolean reportItemFlag) {
        this.reportItemFlag = reportItemFlag;
    }
    @Transient
    public String getReportItemTitle() {
        return reportItemTitle;
    }
    public void setReportItemTitle(String reportItemTitle) {
        this.reportItemTitle = reportItemTitle;
    }
}

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

@ -0,0 +1,186 @@
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 String completionUserName;
    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;
    }
    public String getCompletionUserName() {
        return completionUserName;
    }
    public void setCompletionUserName(String completionUserName) {
        this.completionUserName = completionUserName;
    }
}

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

@ -0,0 +1,85 @@
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;
import javax.persistence.Transient;
/**
 * 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 String userName;//项目内容
    private Integer del;//0无效1有效
    private String completionHour;//用时
    private String deptCode;//部门code
    private String deptName;//部门名称
    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;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    @Transient
    public String getCompletionHour() {
        return completionHour;
    }
    public void setCompletionHour(String completionHour) {
        this.completionHour = completionHour;
    }
    @Transient
    public String getDeptCode() {
        return deptCode;
    }
    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }
    @Transient
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
}

+ 73 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportLogDO.java

@ -0,0 +1,73 @@
package com.yihu.jw.entity.dailyReport;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Bing on 2022/7/25.
 * 日报操作日志
 */
@Entity
@Table(name="base_daily_report_log")
public class BaseDailyReportLogDO extends UuidIdentityEntityWithOperator {
    private String reportId;//每日日报id
    private String operateUser;//操作人
    private String operateUserName;//操作人名字
    private Integer type;//类型
    private String typeName;//1日报提交2上级核实未存疑3上级核实存疑4存疑核实
    private String content;//操作内容
    public String getReportId() {
        return reportId;
    }
    public void setReportId(String reportId) {
        this.reportId = reportId;
    }
    public String getOperateUser() {
        return operateUser;
    }
    public void setOperateUser(String operateUser) {
        this.operateUser = operateUser;
    }
    public String getOperateUserName() {
        return operateUserName;
    }
    public void setOperateUserName(String operateUserName) {
        this.operateUserName = operateUserName;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}

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

@ -22,9 +22,30 @@ public class BaseDailyReportUploadDO extends UuidIdentityEntityWithOperator {
    private Integer leaveState;//请假状态0未请假1请假
    private String leaveHour;//请假时长
    private String reportDate; //上报日期
    private String totalHour;//上报时长
    public String getTotalHour() {
        return totalHour;
    }
    public void setTotalHour(String totalHour) {
        this.totalHour = totalHour;
    }
    private List<BaseDailyReportDetailDO> detailDOList;
    private List<BaseDailyReportLogDO> dailyReportLogDOList;
    @Transient
    public List<BaseDailyReportLogDO> getDailyReportLogDOList() {
        return dailyReportLogDOList;
    }
    public void setDailyReportLogDOList(List<BaseDailyReportLogDO> dailyReportLogDOList) {
        this.dailyReportLogDOList = dailyReportLogDOList;
    }
    public String getDoctorId() {
        return doctorId;
    }
@ -89,4 +110,5 @@ public class BaseDailyReportUploadDO extends UuidIdentityEntityWithOperator {
    public void setLeaveHour(String leaveHour) {
        this.leaveHour = leaveHour;
    }
}

+ 8 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/ylzinfo/OauthYlzConfigDO.java

@ -24,7 +24,15 @@ public class OauthYlzConfigDO extends UuidIdentityEntity {
    private String privateKey;
//    @Column(name = "ehc_public_key")
    private String ehcPublicKey;
    private String wxMinId;
    public String getWxMinId() {
        return wxMinId;
    }
    public void setWxMinId(String wxMinId) {
        this.wxMinId = wxMinId;
    }
    public String getAppId() {
        return appId;

+ 33 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -1019,6 +1019,22 @@ public class DateUtil {
        return df2.format(c.getTime());
    }
    /**
     * 获取某个时间的周一
     * @returnc
     */
    public static String getMondayOfThisWeek(Date date) {
        SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
        if (day_of_week == 0){
            day_of_week = 7;
        }
        c.add(Calendar.DATE, -day_of_week + 1);
        return df2.format(c.getTime());
    }
    /**
     * 得到本周周日
     *
@ -1035,6 +1051,23 @@ public class DateUtil {
        return df2.format(c.getTime());
    }
    /**
     * 获取某个时间的周末
     *
     * @return yyyy-MM-dd
     */
    public static String getSundayOfThisWeek(Date date) {
        SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
        if (day_of_week == 0){
            day_of_week = 7;
        }
        c.add(Calendar.DATE, -day_of_week + 7);
        return df2.format(c.getTime());
    }
    /**
     * 获取当月第一天
     * @return

+ 56 - 0
common/common-util/src/main/java/com/yihu/jw/util/file/FileUtil.java

@ -0,0 +1,56 @@
package com.yihu.jw.util.file;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
 * Created by Bing on 2022/2/25.
 */
public class FileUtil {
    public static boolean fileToZip(String sourcePath, String zipPath, String zipName) throws Exception {
        File sourceFile = new File(sourcePath);
        File zipFile = new File(zipPath + File.separator + zipName + ".zip");
        File[] files = sourceFile.listFiles();
        FileOutputStream fos = new FileOutputStream(zipFile);
        ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
        if (files != null) {
            byte[] bufs = new byte[1024 * 10];
            for (int i = 0; i < files.length; i++) {
                // 创建ZIP实体,并添加进压缩包
                ZipEntry zipEntry = new ZipEntry(files[i].getName());
                zos.putNextEntry(zipEntry);
                // 读取待压缩的文件并写进压缩包里
                FileInputStream fis = new FileInputStream(files[i]);
                BufferedInputStream bis = new BufferedInputStream(fis, 1024 * 10);
                int read = 0;
                while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
                    zos.write(bufs, 0, read);
                }
                bis.close();
                fis.close();
            }
            deleteFolder(sourceFile);
        }
        zos.close();
        fos.close();
        return true;
    }
    public static void deleteFolder(File folder){
        File[] files  = folder.listFiles();
        if (files != null){
            for(File f: files){
                if (f.isDirectory()){
                    deleteFolder(f);
                }else {
                    f.delete();
                }
            }
        }
        folder.delete();
    }
}

+ 1 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -131,6 +131,7 @@ public class BasicZuulFilter extends ZuulFilter {
        //内部微服务有不需要认证的地址请在URL上追加/open/来进行过滤,如/api/v1.0/open/**,不要在此继续追加!!!
        if (url.contains("/auth/")//验证服务
                || url.contains("/authgw/")//验证服务
                || url.contains("/authygTest/")//验证服务
                || url.contains("/base/wechat")//微信
                || url.contains("/patient/wxBase/")//微信
                || url.contains("/patient/wx/")//微信页面不拦截

+ 1 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/PostFilter.java

@ -144,6 +144,7 @@ public class PostFilter extends ZuulFilter {
                url.contains("/prescription/pushListDrug")||
                url.contains("/open/noLogin/pushYkCardCharge")||
                url.contains("/open/noLogin/pushListWriteHealthInfo")||
                url.contains("/excelControl")||
                url.contains("/prescription/searchRecordWrite")||
                url.contains("/Funds/reconciliationExcel")||
                url.contains("/Funds/deviceInfoExcel")||url.contains("/open/noEntry"))){

+ 17 - 5
gateway/ag-basic/src/main/resources/application.yml

@ -235,8 +235,8 @@ spring:
  profiles: iotprod
  datasource:
     url: jdbc:mysql://10.90.32.3:20002/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
     username: wlyy
     password: jkzlehr@123
     username: wlyy_new
     password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  redis:
     host: 59.61.92.90 # Redis server host.
     port: 9054  # Redis server port.
@ -246,8 +246,8 @@ spring:
  profiles: iotprodIn
  datasource:
    url: jdbc:mysql://10.95.22.143:3306/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: wlyy
    password: jkzlehr@123
    username: wlyy_new
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  redis:
    host: 10.95.22.142 # Redis server host.
    port: 6380  # Redis server port.
@ -369,4 +369,16 @@ spring:
  redis:
     host: 10.95.22.142
     port: 6380
     password: jkzlehr
     password: jkzlehr
---
spring:
  profiles: mlwProd
  datasource:
     url: jdbc:mysql://10.172.0.61:3306/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
     username: root
     password: 4D^tK%!4
  redis:
     host: 10.172.0.61
     port: 6379
     password: Kb6wKDQP1W4

+ 7 - 0
gateway/ag-basic/src/main/resources/bootstrap.yml

@ -193,6 +193,13 @@ spring:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: mlwProd
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/doctor/BaseDoctorDao.java

@ -24,7 +24,7 @@ import java.util.List;
public interface BaseDoctorDao extends PagingAndSortingRepository<BaseDoctorDO, String>, JpaSpecificationExecutor<BaseDoctorDO>  {
    @Modifying
    @Query("UPDATE BaseDoctorDO SET idcard = CONCAT(idcard,'-'),password = CONCAT(password,'-'), mobile = CONCAT(mobile,'-')   WHERE id = ?1")
    @Query("UPDATE BaseDoctorDO SET idcard = CONCAT(idcard,'-'),password = CONCAT(password,'-'), mobile = CONCAT(mobile,'-'),id = concat(id,'-')   WHERE id = ?1")
    void logOff(String id);
    BaseDoctorDO findById(String id);

+ 34 - 4
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -55,6 +55,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.*;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
@ -178,6 +180,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    private HcyyService hcyyService;
    @Autowired
    private BaseSmsDao baseSmsDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @PostConstruct
    private void init() {
@ -255,13 +259,17 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    }
    @PostMapping(value = "/doctor/logOff")
    @PostMapping(value = "/oauth/doctor/logOff")
    public JSONObject doctorLogOff(HttpServletRequest request){
        JSONObject jsonObject = new JSONObject();
        try {
            String userAgent = request.getHeader("userAgent");
            org.json.JSONObject json = new org.json.JSONObject(userAgent);
            userDetailsService.logOff(json.getString("uid"));
            BaseLoginLogDO loginLogDO = getLoginLog();
            if(loginLogDO == null){
                jsonObject.put("msg","该操作没有权限");
                jsonObject.put("status",200);
                return jsonObject;
            }
            userDetailsService.logOff(loginLogDO.getUserId());
            jsonObject.put("msg","注销成功");
            jsonObject.put("status",200);
            return jsonObject;
@ -273,6 +281,28 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        }
    }
    public HttpServletRequest getRequest(){
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }
    private BaseLoginLogDO getLoginLog(){
        String accessToken = this.extractToken(getRequest());
        String sql  = "SELECT a.* from base_login_log a WHERE a.token='"+accessToken+"' ORDER BY a.create_time desc LIMIT 1";
        List<BaseLoginLogDO> baseLoginLogDOList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(BaseLoginLogDO.class));
        //BaseLoginLogDO loginLogDO = baseLoginLogDao.findByToken(accessToken);
        return baseLoginLogDOList.size()>0?baseLoginLogDOList.get(0):null;
    }
    private String extractToken(HttpServletRequest request) {
        String accessToken = request.getHeader("token");
        if (null == accessToken) {
            accessToken = request.getParameter("token");
        }
        return accessToken;
    }
    /**
     * 登陆
     *

+ 37 - 2
server/svr-authentication/src/main/resources/application.yml

@ -334,7 +334,7 @@ spring:
  datasource:
    url: jdbc:mysql://59.61.92.90:20002/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  redis:
    host: 59.61.92.90 # Redis server host.
    port: 9054  # Redis server port.
@ -365,7 +365,7 @@ spring:
  datasource:
    url: jdbc:mysql://10.95.22.143:3306/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  redis:
    host: 10.95.22.142 # Redis server host.
    port: 6380  # Redis server port.
@ -718,6 +718,41 @@ testPattern:
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
  ##互踢 1开通 0关闭
  eachOther: 0
---
spring:
  profiles: mlwProd
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: root
    password: 4D^tK%!4
  redis:
    host: 127.0.0.1 # Redis server host.
    port: 6379 # Redis server port.
    password: Kb6wKDQP1W4
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.26.0.110:8888/
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_mlwyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:

+ 8 - 0
server/svr-authentication/src/main/resources/bootstrap.yml

@ -190,6 +190,14 @@ spring:
---
spring:
  profiles: ZjxlProd
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: mlwProd
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}

+ 14 - 0
server/svr-configuration/src/main/resources/bootstrap.yml

@ -267,3 +267,17 @@ spring:
        native:
          search-locations: /usr/local/wlyy2.0.config
---
spring:
  profiles: mlwProd
##git配置
  cloud:
    config:
      failFast: true #启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: ${wlyy.spring.config.git.uri:http://127.0.0.1:3001/jkzl/wlyy2.0.config.git}
          basedir: /usr/local/wlyy2.0-config
          username: jkzl
          password: jkzl
        default-label: ${wlyy.spring.config.git.label:master}

+ 49 - 2
svr/svr-base/src/main/resources/application.yml

@ -434,7 +434,7 @@ spring:
  datasource:
    url: jdbc:mysql://10.90.32.3:20002/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  #    url: jdbc:mysql://172.19.103.77/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
  #    username: root
  #    password: 123456
@ -487,7 +487,7 @@ spring:
  datasource:
    url: jdbc:mysql://10.95.22.143:3306/iot-base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  #    url: jdbc:mysql://172.19.103.77/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
  #    username: root
  #    password: 123456
@ -944,3 +944,50 @@ testPattern:
im:
  im_list_get: http://172.26.0.105:3000/
---
spring:
  profiles: mlwProd
  datasource:
    url: jdbc:mysql://10.172.0.61:3306/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: root
    password: 4D^tK%!4
  elasticsearch:
    cluster-name: jkzl #集群名 默认elasticsearch
    cluster-nodes: 172.19.103.45:9300,172.19.103.68:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
    client-transport-sniff: false
    jest:
      uris: http://172.19.103.45:9200,http://172.19.103.68:9200
      connection-timeout: 60000 # Connection timeout in milliseconds.
      multi-threaded: true # Enable connection requests from multiple execution threads.
  activemq:
    broker-url: tcp://172.19.103.87:61616
    user: admin
    password: admin
  redis:
    host: 10.172.0.61 # Redis server host.
    port: 6379
    password: Kb6wKDQP1W4 # Redis server port.
fastDFS:
  fastdfs_file_url: http://10.172.0.61:80/
demo:
  flag: true
hospital:
  url: https://wx.xmzsh.com
  mqUser: JKZL
  mqPwd: 123456
  SourceSysCode: S60
  TargetSysCode: S01
wlyy:
  url: http://ehr.yihu.com/wlyy/
wechat:
  id: hz_yyyzh_wx
  url: https://zhyzh.gongshu.gov.cn/
  flag: false
pay:
  flag: false
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
im:
  im_list_get: http://172.26.0.105:3000/

+ 8 - 0
svr/svr-base/src/main/resources/bootstrap.yml

@ -156,4 +156,12 @@ spring:
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: mlwProd
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}

+ 11 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/CommonEndpoint.java

@ -92,7 +92,6 @@ public class CommonEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "open/patienPushOnOff")
    @ApiOperation(value = "初始化居民消息订阅开关")
    public Envelop patienPushOnOff(){
        try {
            patientPushOnOffUtil.patientPushOnOff();
            return success("初始化成功!");
@ -100,7 +99,18 @@ public class CommonEndpoint extends EnvelopRestEndpoint {
            e.printStackTrace();
            return failedException2(e);
        }
    }
    @GetMapping(value = "open/newSignPatienPushOnOff")
    @ApiOperation(value = "初始化新签约居民消息订阅开关")
    public Envelop newSignPatienPushOnOff(){
        try {
            patientPushOnOffUtil.patientPushOnOffInitialize();
            return success("初始化成功!");
        } catch (Exception e) {
            e.printStackTrace();
            return failedException2(e);
        }
    }

+ 4 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorBirthdayWishesEndpoint.java

@ -23,7 +23,6 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
@ -289,10 +288,11 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
            String patient = one.getPatientCode();
            //判断居民是否开启开关
            String patientOnOffSql = "select on_off from base_patient_pad_pushonoff where patient = '" + patient + "' and type = 7";
            Integer integer = jdbcTemplate.queryForObject(patientOnOffSql, new BeanPropertyRowMapper<>(Integer.class));
            if (!(integer==0?false:true)){
            Integer integer = jdbcTemplate.queryForObject(patientOnOffSql,Integer.class);
            if (integer==0?true:false){
                return;
            }
            System.out.println("生日祝福发送");
            if (StringUtils.isNotBlank(patient)){
                String sql = " select p.id as patient,p.name,we.openid from base_patient p Left join  base_patient_wechat we on p.id = we.patient_id " +
                        "where p.id = '"+patient+"' " +
@ -336,7 +336,7 @@ public class DoctorBirthdayWishesEndpoint extends BaseController {
                        messageDO.setData(one.getContent());
                        messageDO.setDel("1");
                        messageDO.setCreateTime(new Date());
                        String url = speechTtsUtil.wordToVoice(one.getContent());
                        String url = speechTtsUtil.wordToVoice(one.getContent().replace("<br>",""));
                        messageDO.setAudioUrl(url);
                        systemMessageDao.save(messageDO);
                        //推送socket

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java

@ -155,7 +155,7 @@ public class PatientMessageService {
        if (!StringUtils.isNotBlank(type)) {
            type = "41,42,991,992,993,994,995,996,999";
        }
        String sql = "SELECT id,type,title,sender_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,is_read,data,content,audio_url " +
        String sql = "SELECT id,type,title,sender_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,is_read,data,content,audio_url as audioUrl " +
                " FROM base_system_message WHERE type IN ("+type+") and receiver = '"+patient+"'" +
                " AND del = 1  ORDER BY create_time DESC ";
        return  jdbcTemplate.queryForList(sql);

+ 48 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/PatientPushOnOffUtil.java

@ -76,4 +76,52 @@ public class PatientPushOnOffUtil {
    }
    //初始化新签约居民开关
    @Transactional(rollbackFor = Exception.class)
    public void patientPushOnOffInitialize(){
        JSONObject jsonObject = new JSONObject();
        JSONArray jsonArray = new JSONArray();
        jsonObject.put("1","时间整点报时");
        jsonArray.add(jsonObject);
        jsonObject.put("2","智能安居设备状态播报(必选)");
        jsonArray.add(jsonObject);
        jsonObject.put("3","体征测量消息");
        jsonArray.add(jsonObject);
        jsonObject.put("4","用药提醒");
        jsonArray.add(jsonObject);
        jsonObject.put("5","天气预报");
        jsonArray.add(jsonObject);
        jsonObject.put("6","服务预约提醒");
        jsonArray.add(jsonObject);
        jsonObject.put("7","生日祝福提醒");
        jsonArray.add(jsonObject);
        jsonObject.put("8","热点新闻播报");
        jsonArray.add(jsonObject);
        String sql = "SELECT p.id FROM  base_patient p  WHERE  p.sign_status = 1 AND p.del = 1 and p.id not in(SELECT patient FROM  base_patient_pad_pushonoff GROUP BY patient)";
        List<String> patientList = jdbcTemplate.queryForList(sql, String.class);
        List<BasePatientPadPushOnOffEntity> onOffEntityList = new ArrayList<>();
        patientList.forEach(patientId -> {
            for (int i = 1; i <= jsonArray.size(); i++) {
                BasePatientPadPushOnOffEntity onOffEntity = new BasePatientPadPushOnOffEntity();
                onOffEntity.setPatient(patientId);
                onOffEntity.setType(i);
                onOffEntity.setTypeName(jsonArray.getJSONObject(0).getString(i+""));
                if (jsonArray.getJSONObject(0).getString(i+"").equals("智能安居设备状态播报(必选)")){
                    onOffEntity.setOnOff(1);
                }else {
                    onOffEntity.setOnOff(0);
                }
                onOffEntity.setCreateTime(new Date());
                onOffEntityList.add(onOffEntity);
            }
        });
        basePatientPadPushOnOffDao.save(onOffEntityList);
    }
}

+ 2 - 3
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java

@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@ -172,7 +171,7 @@ public class DeviceUploadService {
                    String onOff= jdbcTemplate.queryForObject(adminSql,String.class);
                    Boolean kg = Boolean.parseBoolean(onOff);
                    String patientOnOffSql = "select on_off from base_patient_pad_pushonoff where patient = '" + patientDO.getId() + "' and type = 3";
                    Integer integer = jdbcTemplate.queryForObject(patientOnOffSql, new BeanPropertyRowMapper<>(Integer.class));
                    Integer integer = jdbcTemplate.queryForObject(patientOnOffSql,Integer.class);
                    if (kg&&integer==0?false:true) {
                        messageDO.setTitle(typeName);
                        messageDO.setType("42");//42体征设备测量
@ -199,7 +198,7 @@ public class DeviceUploadService {
                        messageDO.setCreateTime(new Date());
                        //推送socket
                        com.alibaba.fastjson.JSONObject message = new com.alibaba.fastjson.JSONObject();
                        message.put("title", typeName2);
                        message.put("title", typeName);
                        message.put("code", messageDO.getCode());
                        message.put("content", messageDO.getData());
                        message.put("relation_code", messageDO.getRelationCode());

+ 8 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java

@ -273,6 +273,14 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            }else {
                logger.info("PUSH_MESSAGE_WEATHER_FORECAST_JOB success");
            }
            //删除天气预报:每天晚上12点删除
            if (!quartzHelper.isExistJob("DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB")){
                String trigger =  SystemConf.getInstance().getSystemProperties().getProperty("DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB");
                quartzHelper.addJob(PushWeatherForecastJob.class,trigger,"DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB",new HashMap<String,Object>());
                logger.info("DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB success");
            }else {
                logger.info("DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB success");
            }
        } catch (Exception e) {
            logger.info(" job start failed");

+ 92 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java

@ -4,12 +4,14 @@ import com.yihu.jw.care.util.DateUtil;
import com.yihu.jw.care.zhylyjkglxt.dao.*;
import com.yihu.jw.care.zhylyjkglxt.entity.*;
import com.yihu.jw.util.common.IdCardUtil;
import lombok.SneakyThrows;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -72,6 +74,7 @@ public class SaveDataPushJob implements Job {
    @SneakyThrows
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("SaveDataPushJob:start");
@ -116,23 +119,51 @@ public class SaveDataPushJob implements Job {
        //System.out.println(date);
        saveSecurityMonitoringOrder(date,signOlderMap);
        //间隔两秒 以防请求频繁被拦截
        Thread.sleep(2000);
        saveEmergencyAssistanceOrder(date,signOlderMap);
        Thread.sleep(2000);
        saveDoorCoachOrder(date,jkzlUserMap);
        Thread.sleep(2000);
        saveDoorCoachFeeDetail(date);
        Thread.sleep(2000);
        saveLifeCareOrder(date,signOlderMap);
        Thread.sleep(2000);
        saveLifeCareFeeDetail(date);
        Thread.sleep(2000);
        saveOlderInfo(date,signOlderMap);
        Thread.sleep(2000);
        saveInfantInfo(date);
        Thread.sleep(2000);
        saveServicePackageItem(date);
        Thread.sleep(2000);
        savePatientDevice(date,signOlderMap);
        Thread.sleep(2000);
        saveWlyyDevice(date);
        saveDevicePushLog(date); //"2022-01-07"
        Thread.sleep(2000);
        //saveDevicePushLog(date); //"2022-01-07"
        devicePushLog(date);
        Thread.sleep(2000);
        deviceHealthIndex(date);
        Thread.sleep(2000);
        yxIndex(date);
        Thread.sleep(200);
        sleep(date);
        Thread.sleep(2000);
        sleepX1(date);
        Thread.sleep(2000);
        saveSignOlderInfo(date);
        Thread.sleep(2000);
        saveHospitalOrg(date,jkzlOrgMap);
        Thread.sleep(2000);
        saveOldOrg(date,jkzlOrgMap);
        Thread.sleep(2000);
        saveInfantOrg(date,jkzlOrgMap);
        Thread.sleep(2000);
        saveTeacherInfo(date);
        Thread.sleep(2000);
        saveActivity(date);
        Thread.sleep(2000);
        saveVisit(date);
        logger.info("SaveDataPushJob:end");
    }
@ -401,6 +432,66 @@ public class SaveDataPushJob implements Job {
        }
    }
    public void devicePushLog(String date){
        try {
            //设备采集信息总表
            String devicePushLogSql = "SELECT * FROM device_data_push_log WHERE create_time >= '"+date+"' ";
            List<ZhDeviceDataPushLogDO> devicePushLogList = jdbcTemplate.query(devicePushLogSql, new BeanPropertyRowMapper<>(ZhDeviceDataPushLogDO.class));
            zhDeviceDataPushLogDao.save(devicePushLogList);
            devicePushLogList = null;
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }
    public void  deviceHealthIndex(String date){
        try {
            //烟感气感实时数据
            String deviceHealthIndexSql ="SELECT * FROM base_device_health_index WHERE create_time >= '"+date+"'";
            List<ZhBaseDeviceHealthIndexDO> deviceHealthIndexList = jdbcTemplate.query(deviceHealthIndexSql, new BeanPropertyRowMapper<>(ZhBaseDeviceHealthIndexDO.class));
            zhBaseDeviceHealthIndexDao.save(deviceHealthIndexList);
            deviceHealthIndexList = null;
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }
    public void  yxIndex(String date){
        try {
            //拐杖
            String yxIndexSql = "SELECT * FROM base_yxdevice_index WHERE create_time >= '"+date+"'";
            List<ZhBaseYxdeviceIndexDO> yxIndexList = jdbcTemplate.query(yxIndexSql, new BeanPropertyRowMapper<>(ZhBaseYxdeviceIndexDO.class));
            zhBaseYxdeviceIndexDao.save(yxIndexList);
            yxIndexList = null;
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }
    public void  sleep(String date){
        try {
            //睡眠带
            String sleepSql = "SELECT * FROM base_sleep_device where create_time >= '"+date +"'";
            List<ZhBaseSleepDeviceDO> sleepList = jdbcTemplate.query(sleepSql, new BeanPropertyRowMapper<>(ZhBaseSleepDeviceDO.class));
            zhBaseSleepDeviceDao.save(sleepList);
            sleepList = null;
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }
    public void  sleepX1(String date){
        //手表
        try {
            String sleepX1Sql ="SELECT * FROM base_sleep_x1device WHERE create_time >= '"+date+"'";
            List<ZhBaseSleepX1deviceDO> sleepX1List = jdbcTemplate.query(sleepX1Sql, new BeanPropertyRowMapper<>(ZhBaseSleepX1deviceDO.class));
            zhBaseSleepX1deviceDao.save(sleepX1List);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }
    //设备表
    public void saveWlyyDevice(String date){
        try {

+ 35 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/pushRecord/DelPushWeatherForecastJob.java

@ -0,0 +1,35 @@
package com.yihu.jw.care.job.pushRecord;
import com.yihu.jw.care.service.message.PushWeatherForecastService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * Created by wsl on 2022/8/5
 */
public class DelPushWeatherForecastJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(DelPushWeatherForecastJob.class);
    @Autowired
    private PushWeatherForecastService pushWeatherForecastService;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        try {
                System.out.println("====================删除系统推送天气预报start==================");
                logger.info("DelPushWeatherForecastJob start");
                pushWeatherForecastService.delWeatherForecast();
                logger.info("DelPushWeatherForecastJob end");
                System.out.println("====================删除系统推送天气预报end==================");
        } catch (Exception e) {
            logger.info("DelPushWeatherForecastJob --ERROR MSG:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

+ 1 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/pushRecord/PushWeatherForecastJob.java

@ -28,7 +28,7 @@ public class PushWeatherForecastJob implements Job {
            if (deviceLostMessageUtil.messageOnOff(7)) {
                System.out.println("====================系统推送天气预报start==================");
                logger.info("PushWeatherForecastJob start");
                pushWeatherForecastService.weatherForecastS();
                pushWeatherForecastService.weatherForecast();
                logger.info("PushWeatherForecastJob end");
                System.out.println("====================系统推送天气预报end==================");
            }

+ 1 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/InitializeDataJobService.java

@ -107,7 +107,7 @@ public class InitializeDataJobService {
                break;
            case "7":
                //居民设备采集信息
                saveDataPushJob.saveDevicePushLog(date); //"2022-01-07"
                saveDataPushJob.sleepX1(date); //"2022-01-07"
                break;
            case "8":
                //机构

+ 1 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java

@ -325,6 +325,7 @@ public class PatientDeviceService {
                    patients.put("patient",map.get("id"));
                    patients.put("name",map.get("name"));
                    patients.put("sex",map.get("sex"));
                    patients.put("device_sn",map.get("device_sn").toString());
                    rslist.add(patients);
                }
                Thread.sleep(1000);

+ 9 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/message/PushTimeIntegerPointService.java

@ -6,7 +6,9 @@ import com.yihu.jw.care.util.SystemPushMessageUtil;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
@ -26,10 +28,17 @@ public class PushTimeIntegerPointService {
    private DeviceLostMessageUtil deviceLostMessageUtil;
    @Autowired
    private SystemMessageDao systemMessageDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    private static String message = "现在是北京时间{Time}点整!";
    @Transactional(rollbackFor = Exception.class)
    public void pushTimeIntegerPoint() {
        String sql = "delete from base_system_message  where type = '996'";
        jdbcTemplate.update(sql);
        //systemMessageDao.delPushTimeIntegerPoint();
        int i = DateUtil.integerTime();
        String content = message.replace("{Time}", i + "");
        List<SystemMessageDO> systemMessageDOList = new ArrayList<>();

+ 10 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/message/PushWeatherForecastService.java

@ -1,5 +1,6 @@
package com.yihu.jw.care.service.message;
import com.yihu.jw.care.util.DateUtil;
import com.yihu.jw.care.util.DeviceLostMessageUtil;
import com.yihu.jw.care.util.SystemPushMessageUtil;
import com.yihu.jw.care.util.WeatherUtil;
@ -9,6 +10,7 @@ import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
@ -39,7 +41,7 @@ public class PushWeatherForecastService {
    // ,"tem_night":"28","win":"东风","win_speed":"2级","win_meter":"7km\/h","air":"118","pressure":"999","humidity":"50%"}
    public void weatherForecastS(){
    public void weatherForecast(){
        List<SystemMessageDO> messageDOList = new ArrayList<>();
        String sql = "SELECT p.id,p.`name`,p.photo FROM  base_patient p " +
@ -68,5 +70,12 @@ public class PushWeatherForecastService {
    }
    @Transactional(rollbackFor = Exception.class)
    public void delWeatherForecast(){
        //systemMessageDao.delWeatherForecast();
        String sql = "delete from base_system_message  where type = '995' and create_time<='"+DateUtil.getStringDate()+"'";
        jdbcTemplate.update(sql);
    }
}

+ 2 - 4
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java

@ -174,12 +174,10 @@ public class DeviceLostMessageUtil {
        List<Map<String,Object>> patientList = jdbcTemplate.queryForList(sql);
        System.out.println(devices);
        //所有居民的设备
        for (Map<String, Object> patient : patientList) {
            String deviceSns = patient.get("deviceSn").toString();
            String[] deviceSplit = deviceSns.split(",");
            System.out.println(patient.get("id"));
            String deivceName = "";
            String deviceSnS = "";
            for (String deviceSn : deviceSplit) {
@ -191,7 +189,6 @@ public class DeviceLostMessageUtil {
                            systemMessageDao.delete(sendMessageBefore);
                        }
                        String deviceInfoSql = "SELECT device_sn,device_name,category_code FROM wlyy_patient_device WHERE device_sn = '"+offLineDeviceSn+"'";
                        System.out.println("SN吗 "+offLineDeviceSn);
                        List<DevicePatientDevice> query = jdbcTemplate.query(deviceInfoSql, new BeanPropertyRowMapper<>(DevicePatientDevice.class));
                        if (StringUtils.isNotBlank(deivceName)){
                            deivceName+=","+query.get(0).getDeviceName();
@ -286,7 +283,8 @@ public class DeviceLostMessageUtil {
            message.put("type","991");
            message.put("content",contentTwo);
            message.put("audioUrl",s);
            message.put("content_type",999);
            message.put("deviceSn",jsonObject.getString("device_sn"));
            message.put("content_type",991);
            imUtil.sendPatientSystemMessage(jsonObject.getString("patient"), JSON.toJSONString(message, SerializerFeature.WriteMapNullValue));
        }
        if (messageDOS.size() > 0) {

+ 3 - 1
svr/svr-cloud-job/src/main/resources/system.properties

@ -49,4 +49,6 @@ DEVICE_WATCH_REMAINING_POWER_JOB= 0 0 8,14,21 * * ?
#\u65F6\u95F4\u6574\u70B9\u62A5\u65F6\uFF1A\u65E9\u4E0A10\u70B9\u5230\u4E0B\u534818\u70B9\u8FDB\u884C\u51C6\u70B9\u64AD\u62A5
PUSH_MASSAGE_TIME_INTEGER_POINT_JOB= 0 0 10,11,12,13,14,15,16,17,18 * * ?
#\u5929\u6C14\u9884\u62A5\uFF1A\u6BCF\u5929\u65E9\u4E0A11\u70B9\u64AD\u62A5
PUSH_MESSAGE_WEATHER_FORECAST_JOB= 0 0 11 * * ?
PUSH_MESSAGE_WEATHER_FORECAST_JOB= 0 0 11 * * ?
#\u665A\u4E0A12\u70B9\u5220\u9664\u4E4B\u524D\u7684\u5929\u6C14\u9884\u62A5
DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB = 0 5 0 * * ?

+ 3 - 1
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/MqSdkController.java

@ -236,9 +236,11 @@ public class MqSdkController extends EnvelopRestEndpoint {
    @ApiOperation(value = "Icd10诊断编码")
    public ListEnvelop MS25001( @ApiParam(name = "pyCode", value = "拼音码")
                           @RequestParam(value = "pyCode", required = false) String pyCode,
                                @ApiParam(name = "name", value = "诊断名称")
                                @RequestParam(value = "name", required = false) String name,
                                @ApiParam(name = "flag", value = "1为旧的ICD10 3为ICD9 4为2012-8月份ICD10")
                                @RequestParam(value = "flag", required = false) String flag)throws Exception {
        JSONArray obj = entranceService.MS25001(pyCode,demoFlag);
        JSONArray obj = entranceService.MS25001(pyCode,name,demoFlag);
        return success(obj);
    }

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

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

@ -81,7 +81,7 @@ public class RemindDoctorService {
                            systemMessageDO.setTitle("图文咨询接诊消息提醒");
                            systemMessageDO.setType("68");
                            title = "图文咨询消息提醒";
                            msg = wlyyOutpatientDO.getPatientName()+"("+sex+" "+age+"岁)向您发起了图文咨询,已等待"+minusts+"分钟。点击接诊";
                            msg = wlyyOutpatientDO.getPatientName()+"("+sex+" "+age+"岁)向您发起了图文咨询,已等待"+minusts+"分钟。请您及时点击接诊";
                        } else if ("3".equals(wlyyOutpatientDO.getType())) {
                            systemMessageDO.setTitle("家医咨询接诊消息提醒");
                            systemMessageDO.setType("65");
@ -98,7 +98,7 @@ public class RemindDoctorService {
                            systemMessageDO.setTitle("图文复诊接诊消息提醒");
                            systemMessageDO.setType("61");
                            title = "图文复诊接诊消息提醒";
                            msg = wlyyOutpatientDO.getPatientName()+"("+sex+" "+age+"岁)向您发起了图文复诊,已等待"+minusts+"分钟。点击接诊";
                            msg = wlyyOutpatientDO.getPatientName()+"("+sex+" "+age+"岁)向您发起了图文复诊,已等待"+minusts+"分钟。请您及时点击接诊";
                        } else {
                            systemMessageDO.setTitle("视频复诊接诊消息提醒");
                            systemMessageDO.setType("62");

+ 39 - 0
svr/svr-internet-hospital-job/src/main/resources/application.yml

@ -466,5 +466,44 @@ express:
  sf_url: http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService
  sf_code: JKZL
  sf_check_word: QkeIfIvQdheqIv2cVSgAUnBU29lfNbVk
jobs:
  schedule: 0 */1 * * * ?
---
spring:
  profiles: mlwProd
  datasource:
    url: jdbc:mysql://10.172.0.61:3306/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 4D^tK%!4
hlwyyEntrance:
  url: http://localhost:10023
demo:
  flag: true
pay:
  flag: true
hospital:
  url: https://wx.xmzsh.com
  mqUser: JKZL
  mqPwd: 123456
  SourceSysCode: S60
  TargetSysCode: S01
im:
  im_list_get: http://172.26.0.105:3000/
  data_base_name: im_internet_hospital
fastDFS:
  fastdfs_file_url: http://10.172.0.61:8888/
wlyy:
  url: http://www.xmtyw.cn/wlyytest/
wechat:
  id: xm_zjxl_wx  # base库中,wx_wechat 的id字段
  flag: false #演示环境  true走Mysql数据库  false走Oracle
  ids: xm_zjxl_wx
  url: http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage
express:
  sf_url: http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService
  sf_code: JKZL
  sf_check_word: QkeIfIvQdheqIv2cVSgAUnBU29lfNbVk
jobs:
  schedule: 0 */1 * * * ?

+ 9 - 0
svr/svr-internet-hospital-job/src/main/resources/bootstrap.yml

@ -75,3 +75,12 @@ spring:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: mlwProd
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}

+ 303 - 31
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;
@ -27,6 +29,7 @@ import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2022/7/25.
@ -114,6 +117,8 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
                                        @RequestParam(value = "leaveHour", required = false,defaultValue = "0") String leaveHour,
                                        @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,
                                        @ApiParam(name = "jsonData", value = "事项信息实体")
                                        @RequestParam(value = "jsonData", required = true) String jsonData) {
        try {
@ -121,7 +126,7 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
            if (StringUtils.isNoneBlank(jsonData)){
                healthUploadDOs = JSONArray.parseArray(jsonData,BaseDailyReportDetailDO.class);
            }
            BaseDailyReportUploadDO dailyReport = dailyReportUploadService.createDailyReport(doctorId,report_date,leaveState,leaveHour,week_name,healthUploadDOs);
            BaseDailyReportUploadDO dailyReport = dailyReportUploadService.createDailyReport(doctorId,report_date,leaveState,leaveHour,week_name,totalHour,healthUploadDOs);
            return success(dailyReport);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
@ -182,17 +187,13 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
    @GetMapping(value = "selectReportByDoctorId")
    @ApiOperation(value = "查询成员的日报上传记录")
    public ObjEnvelop selectReportByDoctorId(@ApiParam(name = "doctorId", value = "医生id")
                                                 @RequestParam(value = "doctorId", required = true) String doctorId,
                                              @ApiParam(name = "startDate", value = "开始日期yyyy-MM-dd")
                                                  @RequestParam(value = "startDate", required = false) String startDate,
                                              @ApiParam(name = "endDate", value = "结束日期")
                                                  @RequestParam(value = "endDate", required = false) String endDate,
                                              @ApiParam(name = "page", value = "页码")
                                                  @RequestParam(value = "page", required = false) Integer page,
                                              @ApiParam(name = "pageSize", value = "大小")
                                                  @RequestParam(value = "pageSize", required = false) Integer pageSize) {
        try {
            Page<BaseDailyReportUploadDO> list = dailyReportUploadService.selectReportByDoctorId(doctorId,startDate,endDate,page,pageSize);
                                             @RequestParam(value = "doctorId", required = true) String doctorId,
                                             @ApiParam(name = "startDate", value = "开始日期yyyy-MM-dd")
                                             @RequestParam(value = "startDate", required = true) String startDate,
                                             @ApiParam(name = "endDate", value = "结束日期")
                                             @RequestParam(value = "endDate", required = true) String endDate) {
        try {
            List<Map<String,List<BaseDailyReportUploadDO>>> list = dailyReportUploadService.selectReportByDoctorId(doctorId,startDate,endDate);
            return ObjEnvelop.getSuccess("success",list);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
@ -287,6 +288,29 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "selectHeaderListHeshi")
    @ApiOperation(value = "首页按照科室统计")
    public ListEnvelop selectHeaderListHeshi(@ApiParam(name = "dept", value = "科室code")
                                        @RequestParam(value = "dept", required = false) String dept,
                                             @ApiParam(name = "doctor", value = "当前用户")
                                             @RequestParam(value = "doctor", required = false) String doctor,
                                        @ApiParam(name = "idType", value = "身份类别")
                                        @RequestParam(value = "idType", required = false) String idType,
                                        @ApiParam(name = "state", value = "核实状态0未核实1已核实")
                                        @RequestParam(value = "state", required = false) String state,
                                        @ApiParam(name = "startDate", value = "开始时间")
                                        @RequestParam(value = "startDate", required = false) String startDate,
                                        @ApiParam(name = "endDate", value = "结束时间")
                                        @RequestParam(value = "endDate", required = false) String endDate,
                                        @ApiParam(name = "name", value = "姓名")
                                        @RequestParam(value = "name", required = false) String name) {
        try {
            return success(dailyReportUploadService.selectHeaderListHeshi(doctor,dept,idType,state,startDate,endDate,name));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectListByTotal")
    @ApiOperation(value = "获取列表的时间及数量")
    public ListEnvelop selectListByTotal(@ApiParam(name = "dept", value = "科室code")
@ -335,25 +359,6 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
//    @GetMapping(value = "open/pushListWriteDailyReport")
//    @ApiOperation(value = "健康上报数据导出", notes = "健康上报数据导出")
//    public Envelop pushListWriteDailyReport(@ApiParam(name = "startDate", value = "开始时间")
//                                 @RequestParam(value = "startDate", required = false) String startDate,
//                                 @ApiParam(name = "endDate", value = "结束时间")
//                                 @RequestParam(value = "endDate", required = false) String endDate,
//                                 @ApiParam(name = "dept", value = "科室id")
//                                 @RequestParam(value = "dept", required = false) String dept,
//                                 HttpServletResponse response) throws Exception {
//        try{
//            response.setContentType("octets/stream");
//            response.setHeader("Content-Disposition", "attachment; filename=" + new String(URLEncoder.encode("健康上报报表")+".xls"));
//            OutputStream os = response.getOutputStream();
//            return success(dailyReportUploadService.pushListWriteDailyReport(os, startDate,endDate,dept));
//        }catch (Exception e) {
//            return failedMixEnvelopException(e);
//        }
//    }
    @GetMapping(value = "selectRecordByDoctorIdAndConsumer")
    @ApiOperation(value = "查下上报最新一次记录", notes = "查下上报最新一次记录")
    public Envelop selectRecordByDoctorIdAndConsumer(@ApiParam(name = "doctorId", value = "医生id")
@ -384,6 +389,27 @@ public class DailyReportUploadPoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "findDoctorByHospitalAndDeptHeshi")
    @ApiOperation(value = "查询部门下医生", notes = "查询部门下医生")
    public ListEnvelop findDoctorByHospitalAndDeptHeshi(@ApiParam(name = "orgCode", value = "机构code")
                                                   @RequestParam(value = "orgCode", required = false) String orgCode,
                                                   @ApiParam(name = "doctor", value = "当前账户")
                                                   @RequestParam(value = "doctor", required = false) String doctor,
                                                   @ApiParam(name = "dept", value = "部门code")
                                                   @RequestParam(value = "dept", required = false) String dept,
                                                   @ApiParam(name = "doctorCode", value = "需要置顶医生")
                                                   @RequestParam(value = "doctorCode", required = false) String doctorCode,
                                                   @ApiParam(name = "key", value = "关键字搜索,医生名字/科室名称/专长")
                                                   @RequestParam(value = "key", required = false) String key,
                                                   @ApiParam(name = "flag", value = "是否核实0未核实1已核实")
                                                   @RequestParam(value = "flag", required = false) Integer flag) {
        try {
            return success(dailyReportUploadService.findDoctorByHospitalAndDeptHeshi(doctor,orgCode, dept, doctorCode, key, flag));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexTotalCircle")
    @ApiOperation(value = "首页上报分析", notes = "首页上报分析")
    public Envelop selectIndexTotalCircle(@ApiParam(name = "flag", value = "1周2月")
@ -422,4 +448,250 @@ 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,
                                               @ApiParam(name = "member", value = "指定查看某个成员的用时")
                                               @RequestParam(value = "member", required = false) String member) {
        try {
            return ListEnvelop.getSuccess("success",dailyReportUploadService.statisticReportItemMembersById(user,item_id,type,member));
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @RequestMapping(value = "excelControl/getProjectItemReport", method = RequestMethod.GET)
    @ApiOperation("导出项目计划周报月报用时情况")
    public Envelop getProjectItemReport(@ApiParam(name = "user", value = "user")
                                     @RequestParam(value = "user",defaultValue = "1", required = true) String user,
                                     @ApiParam(name = "type", value = "1周报2月报")
                                     @RequestParam(value = "type",defaultValue = "1", required = true) Integer type,
                                     @ApiParam(name = "date", value = "日期yyyy-MM-dd,周报")
                                     @RequestParam(value = "date", required = true) String date,
            HttpServletResponse response) {
        try {
            dailyReportUploadService.getProjectItemReport(response,user,type,date);
            return success("success");
        } catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @RequestMapping(value = "excelControl/getUserReportList", method = RequestMethod.GET)
    @ApiOperation("导出员工周报月报提交情况")
    @ResponseBody
    public Envelop getUserReportList(@ApiParam(name = "user", value = "user")
                                  @RequestParam(value = "user",defaultValue = "1", required = true) String user,
                                  @ApiParam(name = "type", value = "1周报2月报")
                                  @RequestParam(value = "type",defaultValue = "1", required = true) Integer type,
                                  @ApiParam(name = "date", value = "日期yyyy-MM-dd,周报")
                                  @RequestParam(value = "date",defaultValue = "1", required = true) String date,
                                  HttpServletResponse response) {
        try {
            dailyReportUploadService.getUserReportList(response,user,type,date);
            return success("success");
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
}

+ 6 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

@ -641,6 +641,12 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "synIcd10")
    @ApiOperation(value = "同步icd10", notes = "同步icd10")
    public Envelop synIcd10() throws Exception {
        return success(prescriptionService.synIcd10());
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.getDrugDictionary)
    @ApiOperation(value = "获取药品字典", notes = "获取药品字典")
    public ListEnvelop getDrugDictionary(@ApiParam(name = "drugNo", value = "药品编码")

+ 5 - 1
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/consult/QrcodeService.java

@ -451,7 +451,11 @@ public class QrcodeService {
                }
            }else if("xm_xzzx_wx".equals(wxId)){
                token = xzzxEntranceService.getXzToken();
                objEnvelop.setStatus(200);
                com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
                jsonObject.put("nickname","nickname");
                objEnvelop.setMessage(jsonObject.toString());
                return objEnvelop;
            }else{
                token = wxAccessTokenService.getWxAccessTokenById(wxId).getAccessToken();
            }

+ 89 - 0
svr/svr-internet-hospital/src/main/resources/application.yml

@ -1297,3 +1297,92 @@ express:
  sf_code: HD000001
  sf_check_word: AAAABBBBCCCCDDDD
---
spring:
  profiles: mlwProd
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: root
    password: 4D^tK%!4
  #  elasticsearch:
  #    cluster-name: jkzl #集群名 默认elasticsearch
  #    cluster-nodes: 172.26.0.115:9300,172.26.0.115:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
  #    client-transport-sniff: false
  #    jest:
  #      uris: http://172.26.0.112:9200,http://172.26.0.112:9200
  #      connection-timeout: 60000 # Connection timeout in milliseconds.
  #      multi-threaded: true # Enable connection requests from multiple execution threads.
  activemq:
    broker-url: tcp://172.26.0.116:61616
    user: admin
    password: admin
  redis:
    host: 127.0.0.1 # Redis server host.
    port: 6379 # Redis server port.
    password: Kb6wKDQP1W4
fastDFS:
  fastdfs_file_url: http://127.0.0.1:8888/
fast-dfs:
  tracker-server: 127.0.0.1:22122 #服务器地址
wechat:
  id: xm_zjxl_wx  # base库中,wx_wechat 的id字段
  flag: false #演示环境  true走Mysql数据库  false走Oracle
  url: http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage
# 短信验证码发送的客户端标识,居民端
sms:
  clientId: EwC0iRSrcP
myFamily:
  qrCodeFailurTime: 2
# mq 是否获取his数据,flag代表获取演示数据,false代表获取his真实数据
demo:
  flag: true
#支付支付
pay:
  flag: true
hospital:
  url: https://wx.xmzsh.com
  mqUser: JKZL
  mqPwd: 123456
  SourceSysCode: S60
  TargetSysCode: S01
im:
  im_list_get: http://172.26.0.105:3000/
  data_base_name: im_internet_hospital
es:
  pwflag: 1 # 1需要密码,2不需要密码
  index:
    Statistics: hlw_quota_test
  type:
    Statistics: hlw_quota_test
  host:  http://172.26.0.55:9000
  tHost: 172.26.0.55:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr
  user: lion
  password: jkzlehr
# 上传文件临时路径配置
FileTempPath:
  upload_temp_path : /var/local/temp
  image_path : /var/local/upload/images
  voice_path : /var/local/upload/voice
  chat_file_path : /var/local/upload/chat
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wlyy:
  url: http://ehr.yihu.com/wlyy/
qywx:
  url: 2
  id: 1
express:
  sf_url: http://mrds-admin-ci.sit.sf-express.com:45478
  sf_code: HD000001
  sf_check_word: AAAABBBBCCCCDDDD

+ 9 - 1
svr/svr-internet-hospital/src/main/resources/bootstrap.yml

@ -1,6 +1,6 @@
spring:
  application:
    name:  svr-internet-hospital-wangzhinan
    name:  svr-internet-hospital
  cloud:
    config:
      failFast: true
@ -125,6 +125,14 @@ spring:
---
spring:
  profiles: ZjxlProd
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: mlwProd
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}

+ 1 - 1
svr/svr-iot-job/src/main/resources/application.yml

@ -155,7 +155,7 @@ spring:
  datasource:
    url: jdbc:mysql://10.90.32.3:20002/xmiot?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
wlyy:
  url: http://www.xmtyw.cn/wlyy/

+ 5 - 5
svr/svr-iot/src/main/resources/application.yml

@ -307,7 +307,7 @@ spring:
  datasource:
    url: jdbc:mysql://10.90.32.3:20002/xmiot?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
#  elasticsearch:
#    cluster-name: jkzl #默认即为elasticsearch  集群名
#    cluster-nodes: 10.90.32.3:20011,10.90.32.3:20011 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
@ -321,7 +321,7 @@ spring:
#  baseUrl: https://zb.xmtyw.cn/medicine/cityihealth/base
es:
  pwflag: 1 # 1需要密码,2不需要密码
  host:  http://10.90.32.3:20011
  host: http://10.90.32.3:20011
  tHost: 10.90.32.3:20012
  clusterName: jkzl
  securityUser: zjxl:6Dbq&fHg
@ -340,7 +340,7 @@ spring:
  datasource:
    url: jdbc:mysql://10.95.22.143:3306/xmiot?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: wlyy_new
    password: J4&y9sk#1G
    password: '@TaVAj%LEK@vB2J4&y9sk@TaVAj%LEK'
  #  elasticsearch:
  #    cluster-name: jkzl #默认即为elasticsearch  集群名
  #    cluster-nodes: 10.90.32.3:20011,10.90.32.3:20011 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
@ -354,8 +354,8 @@ spring:
#  baseUrl: https://zb.xmtyw.cn/medicine/cityihealth/base
es:
  pwflag: 1 # 1需要密码,2不需要密码
  host:  http://10.95.91.4:9200
  tHost: 10.95.91.5:9300
  host: http://10.95.91.4:9200
  tHost: 10.95.91.4:9300
  clusterName: jkzl
  securityUser: zjxl:6Dbq&fHg
  user: zjxl