فهرست منبع

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

 Conflicts:
	business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java
wangzhinan 2 سال پیش
والد
کامیت
939e61d7d0
63فایلهای تغییر یافته به همراه3492 افزوده شده و 442 حذف شده
  1. 133 33
      business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java
  2. 4 0
      business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java
  3. 0 0
      common/common-entity/sql/2023.sql
  4. 84 1
      common/common-entity/sql记录
  5. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/assistance/EmergencyAssistanceDO.java
  6. 37 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/message/UrgeReminderRecordDO.java
  7. 88 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/article/BaseNewsArticleDO.java
  8. 9 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/article/KnowledgeArticleDictDO.java
  9. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java
  10. 71 0
      common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyEmeEntity.java
  11. 78 107
      common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyEntity.java
  12. 158 0
      common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailySleepEntity.java
  13. 88 0
      common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyVideoEntity.java
  14. 130 0
      common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyWatchEntity.java
  15. 14 1
      common/common-util/src/main/java/com/yihu/jw/util/common/IdCardUtil.java
  16. 31 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  17. 5 1
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/config/MultipartConfig.java
  18. 1 1
      gateway/ag-basic/src/main/resources/application.yml
  19. 4 3
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  20. 6 1
      svr/svr-base/src/main/java/com/yihu/jw/base/config/MultipartConfig.java
  21. 13 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/article/BaseNewsArticleDao.java
  22. 60 3
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/article/ArticleEndpoint.java
  23. 26 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/menu/BaseMenuNoLoginEndpoint.java
  24. 90 5
      svr/svr-base/src/main/java/com/yihu/jw/base/service/article/KnowledgeArticleService.java
  25. 1 1
      svr/svr-base/src/main/resources/application.yml
  26. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/YsConfig.java
  27. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/UrgeReminderRecordDao.java
  28. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyDao.java
  29. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyEmeDao.java
  30. 16 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailySleepDao.java
  31. 17 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyVideoDao.java
  32. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyWatchDao.java
  33. 77 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/AdminManageEndpoint.java
  34. 67 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/common/CommonController.java
  35. 2 28
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/PatientConsultEndpoint.java
  36. 15 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/DoctorMessageEndpoint.java
  37. 27 6
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/PatientMessageEndpoint.java
  38. 421 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/admin/AdminManageService.java
  39. 10 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  40. 44 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java
  41. 184 106
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java
  42. 5 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  43. 35 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageDigestUtil.java
  44. 29 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java
  45. 39 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/vo/OrgVo.java
  46. 92 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/vo/UserVo.java
  47. 7 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/config/AqgConfig.java
  48. 61 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/config/jpa/ZhDeviceSyncJpa.java
  49. 11 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailyEmeDao.java
  50. 11 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailySleepDao.java
  51. 11 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailyVideoDao.java
  52. 11 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailyWatchDao.java
  53. 10 6
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java
  54. 33 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/DeviceSyncJob.java
  55. 149 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/DeviceSyncService.java
  56. 12 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  57. 270 127
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/message/ZhaohuiDailyService.java
  58. 11 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhDevice/dao/ZhDeviceSyncDao.java
  59. 574 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhDevice/entity/ZhDeviceSyncDO.java
  60. 45 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/sql记录.sql
  61. 4 0
      svr/svr-cloud-job/src/main/resources/application.yml
  62. 3 1
      svr/svr-cloud-job/src/main/resources/system.properties
  63. 1 1
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationManageService.java

+ 133 - 33
business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java

@ -3693,8 +3693,10 @@ public class DailyReportUploadService {
        }
        Long workDays=0l;
        Long acWorkDays=0l;//用于计算实际工作时长(不包含最后一天)
        if (StringUtils.isNotBlank(startDate)&&StringUtils.isNotBlank(endDate)) {
            workDays = DateUtil.getWorkDays(startDate, endDate);
            acWorkDays = DateUtil.getWorkDaysNotendDay(startDate, endDate);
        }
        String shangchuanSql = " select distinct up.report_date from base_doctor_daily_report_upload up " +
@ -3713,7 +3715,7 @@ public class DailyReportUploadService {
        }
        Double acWorkHours = 0d;
        Long needWorkHours = workDays*members*8;
        Long needWorkHours = acWorkDays*members*8;
        Long urgingTotal=0l;
        String urgingSql = " select count(distinct code) from base_daily_urging_record where create_time>='"+startDate+"' ";
@ -3731,7 +3733,7 @@ public class DailyReportUploadService {
        }
        urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
        String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour' " +
        String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2)))+SUM(CAST(up.leave_hour as decimal(18,2))) 'completion_hour' " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "Inner JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
@ -3785,6 +3787,11 @@ public class DailyReportUploadService {
        List<Map<String,Object>> doctorTypeHourList = jdbcTemplate.queryForList(doctorTypeSql);
        result.put("doctorTypeHourList",doctorTypeHourList);//按人员统计总用时与参与人数
        //BUG数量统计
        if(StringUtils.isNoneBlank(memberId)||StringUtils.isNoneBlank(dept)){
            JSONObject bugObj = selectBugTotal(memberId,startDate,endDate,dept,false);
            result.putAll(bugObj);
        }
        return result;
    }
@ -3973,11 +3980,12 @@ public class DailyReportUploadService {
        //判断导出人权限
        String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
        List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
        boolean adminFlag = false;
        if (userRoles.size()==0){
        }else {
            String role_code = userRoles.get(0).get("role_code").toString();
            if ("admin".equals(role_code)){
                adminFlag = true;
            } else if ("deptAdmin".equals(role_code)) {//查询出管理员所在部门
                if(StringUtils.isBlank(dept)){
                    sql = " select dh.dept_code from base_doctor doc INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code " +
@ -4037,8 +4045,10 @@ public class DailyReportUploadService {
        }
        Long workDays=0l;
        Long acWorkDays=0l;
        if (StringUtils.isNotBlank(startDate)&&StringUtils.isNotBlank(endDate)) {
            workDays = DateUtil.getWorkDays(startDate, endDate);
            acWorkDays = DateUtil.getWorkDaysNotendDay(startDate, endDate);
        }
       /* String shangchuanSql = " select distinct up.report_date from base_doctor_daily_report_upload up " +
@ -4071,7 +4081,7 @@ public class DailyReportUploadService {
        }
        Double acWorkHours = 0d;
        Long needWorkHours = workDays*members*8;
        Long needWorkHours = acWorkDays*members*8;
        Long urgingTotal=0l;
        String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+startDate+"'  ";
@ -4089,7 +4099,7 @@ public class DailyReportUploadService {
        }
        urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
        String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour' " +
        String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2)))+SUM(CAST(up.leave_hour as decimal(18,2))) 'completion_hour' " +
                " from base_doctor_daily_report_upload up  " +
                "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                "Inner JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
@ -4189,6 +4199,11 @@ public class DailyReportUploadService {
        List<Map<String,Object>> doctorTypeHourList = jdbcTemplate.queryForList(doctorTypeSql);
        result.put("doctorTypeHourList",doctorTypeHourList);//按人员统计总用时与参与人数
        //BUG数量统计
        if(StringUtils.isNoneBlank(memberId)||StringUtils.isNoneBlank(dept)||adminFlag){
            JSONObject bugObj = selectBugTotal(memberId,startDate,endDate,dept,adminFlag);
            result.putAll(bugObj);
        }
        return result;
    }
@ -4277,8 +4292,10 @@ public class DailyReportUploadService {
            }
            Long workDays=0l;
            Long acWorkDays=0l;//用于计算实际工作时长
            if (StringUtils.isNotBlank(startDate)&&StringUtils.isNotBlank(endDate)) {
                workDays = DateUtil.getWorkDays(startDate, endDate);
                acWorkDays = DateUtil.getWorkDaysNotendDay(startDate, endDate);
            }
            /*String shangchuanSql = " select distinct up.report_date from base_doctor_daily_report_upload up " +
@ -4310,7 +4327,7 @@ public class DailyReportUploadService {
            }
            Double acWorkHours = 0d;
            Long needWorkHours = workDays*members*8;
            Long needWorkHours = acWorkDays*members*8;
            Long urgingTotal=0l;
            String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='"+startDate+"'  ";
@ -4328,7 +4345,7 @@ public class DailyReportUploadService {
            }
            urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
            String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2))) 'completion_hour' " +
            String acWorkHoursSql = " select sum(cast(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) as decimal(18,2)))+SUM(CAST(up.leave_hour as decimal(18,2))) 'completion_hour' " +
                    " from base_doctor_daily_report_upload up  " +
                    "INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
                    "Inner JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 " +
@ -5056,42 +5073,125 @@ public class DailyReportUploadService {
    }
   /* public JSONObject select(String doctorId,String startDate,String endDate,String dept) throws Exception {
    public JSONObject selectBugTotal(String doctorId, String startDate, String endDate, String dept,boolean adminFlag) throws Exception {
        String sqlCondition = "";
        JSONObject result = new JSONObject();
        result.put("bugtotal",0); //BUG总数
        result.put("resolveBugTotal",0); //已解决BUG数
        result.put("unresolvedBugTotal",0); //为解决BUG数
        result.put("taskTotal",0); //任务总数
        result.put("unresolvedTaskTotal",0); // 待完成任务数
        result.put("resolveTaskTotal",0); //已完成任务数
        if (adminFlag){
            sqlCondition = " SELECT d.zt_id as ztId FROM base_doctor d LEFT JOIN base_doctor_hospital dh ON d.id=dh.doctor_code where d.del=1 and dh.del=1 and d.zt_id is not null ";
        }
        if (StringUtils.isNoneBlank(dept)){
            sqlCondition = " SELECT d.zt_id as ztId FROM base_doctor d LEFT JOIN base_doctor_hospital dh ON d.id=dh.doctor_code where dh.dept_code='"+dept+"' ";
            sqlCondition = " SELECT d.zt_id as ztId FROM base_doctor d LEFT JOIN base_doctor_hospital dh ON d.id=dh.doctor_code where d.del=1 and dh.del=1 and dh.dept_code='"+dept+"' and d.zt_id is not null ";
        }
        if (!StringUtils.isNoneBlank(dept)&&StringUtils.isNoneBlank(doctorId)){
            sqlCondition = " SELECT d.zt_id as ztId FROM base_doctor d where d.id = '"+doctorId+"' ";
        if (StringUtils.isNoneBlank(doctorId)){
            sqlCondition = " SELECT d.zt_id as ztId FROM base_doctor d where d.id = '"+doctorId+"' and d.zt_id is not null ";
        }
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sqlCondition);
        String str = "";
        if (mapList!=null&&mapList.size()!=0){
            for (Map<String,Object> map:mapList){
                str = "'"+map.get("ztId")+"',";
                str += "'"+map.get("ztId")+"',";
            }
        }
        str = str.substring(0,str.length()-1);
        String sql = "SELECT count(1) as total FROM zt_bug  where resolvedBy in ("+str+") ";
        String url = "http://172.19.103.134:10023/ykyy/jdbcSQLQuery";
        Map<String,Object> params = new HashedMap();
        params.put("sql",sql);
        HttpResponse response = HttpUtils.doGet(url,params);
        String content = response.getContent();
        logger.info("response:"+content);
        JSONObject rs = JSON.parseObject(content);
        String total = "0";//总bug数;
        Integer status = rs.getInteger("status");
        if(status!=null&&status == 200){
            JSONArray array = rs.getJSONArray("detailModelList");
            if (array!=null&&array.size()!=0){
                JSONObject jsonObject = array.getJSONObject(0);
                total = jsonObject.getString("total");
        if (StringUtils.isNoneBlank(str)){
            str = str.substring(0,str.length()-1);
            sqlCondition = " ";
            String  sqlCondition2 = " ";
            if (StringUtils.isNotBlank(startDate)){
                startDate = DateUtil.strToStrShort(startDate)+" 00:00:00";
                sqlCondition += " and lastEditedDate>='"+startDate+"' ";
                sqlCondition2 += " and assignedDate>='"+startDate+"' ";
            }
            if (StringUtils.isNotBlank(endDate)){
                endDate = DateUtil.strToStrShort(endDate)+" 23:59:59";
                sqlCondition += " and lastEditedDate<='"+endDate+"' ";
                sqlCondition2 += " and assignedDate<='"+endDate+"' ";
            }
            String sql = "  select * from ( " +
                    " select count(distinct id) total,'resolve' `status` from zt_bug " +
                    " where  ((resolvedBy in ("+str+")) or  " +
                    " (assignedTo in ("+str+") and `status` in ('closed')) or " +
                    " (closedBy in ("+str+")and `status` in ('closed'))) " +
                    "  and deleted='0' " +sqlCondition+
                    " union ALL " +
                    " select count(distinct id) total,'unresolved' `status` from zt_bug " +
                    " where assignedTo in ("+str+") " +
                    " and ( (`status` ='active' "+sqlCondition2+") or (`status` ='resolved' "+sqlCondition+" ) )  "+
                    " and deleted='0' "+
                    " )A ";
            String url = "http://172.19.103.134:10023/ykyy/jdbcSQLQuery";
            Map<String,Object> params = new HashedMap();
            params.put("sql",sql);
            HttpResponse response = HttpUtils.doGet(url,params);
            String content = response.getContent();
            logger.info("response:"+content);
            JSONObject rs = JSON.parseObject(content);
            Long total = 0l;//总bug数;
            Long resolveBugTotal=0l;//已解决BUG数
            Long unresolvedBugTotal=0l;//待解决BUG数
            Integer status = rs.getInteger("status");
            if(status!=null&&status == 200){
                JSONArray array = rs.getJSONArray("detailModelList");
                if (array!=null&&array.size()!=0){
                    total = array.stream().mapToLong(t ->((JSONObject)t).get("total") == null ? 0 :Long.parseLong(((JSONObject)t).getString("total"))).sum();
                    for (int i=0;i<array.size();i++){
                        JSONObject tmp = array.getJSONObject(i);
                        String bugStatus = tmp.getString("status");
                        Long statusTotal  =Long.parseLong(tmp.getString("total"));
                        if("resolve".equals(bugStatus)){
                            resolveBugTotal = statusTotal;
                        }else {
                            unresolvedBugTotal = statusTotal;
                        }
                    }
                }
            }
            result.put("bugtotal",total);
            result.put("resolveBugTotal",resolveBugTotal);
            result.put("unresolvedBugTotal",unresolvedBugTotal);
            sql = " select count(id) 'total','resolve' as 'status' from zt_task " +
                    " where deleted='0' and finishedBy in ("+str+")  " +sqlCondition+
                    " UNION ALL " +
                    " select count(id) 'total','unresolved' as 'status' from zt_task " +
                    " where deleted='0' and assignedTo in ("+str+") AND `status` in ('wait','doing','pause') "+sqlCondition2;
            params = new HashedMap();
            params.put("sql",sql);
            response = HttpUtils.doGet(url,params);
            content = response.getContent();
            logger.info("response:"+content);
            rs = JSON.parseObject(content);
            Long taskTotal = 0l;//任务总数;
            Long resolvetaskTotal=0l;//完成任务总数
            Long unresolvedTaskTotal=0l;//待任务总数
            status = rs.getInteger("status");
            if(status!=null&&status == 200){
                JSONArray array = rs.getJSONArray("detailModelList");
                if (array!=null&&array.size()!=0){
                    taskTotal = array.stream().mapToLong(t ->((JSONObject)t).get("total") == null ? 0 :Long.parseLong(((JSONObject)t).getString("total"))).sum();
                    for (int i=0;i<array.size();i++){
                        JSONObject tmp = array.getJSONObject(i);
                        String taskStatus = tmp.getString("status");
                        Long statusTotal  =Long.parseLong(tmp.getString("total"));
                        if("resolve".equals(taskStatus)){
                            resolvetaskTotal = statusTotal;
                        }else {
                            unresolvedTaskTotal = statusTotal;
                        }
                    }
                }
            }
            result.put("taskTotal",taskTotal); //任务总数
            result.put("unresolvedTaskTotal",unresolvedTaskTotal); // 待完成任务数
            result.put("resolveTaskTotal",resolvetaskTotal); //已完成任务数
        }
        String yijiejueSql = "SELECT count(1) as total FROM zt_bug  where resolvedBy in ("+str+") ";
    }*/
        return result;
    }
}

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

@ -76,4 +76,8 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Modifying
    @Query("update SystemMessageDO m set m.isRead=1 ,m.over=0,m.data=?3 where m.type=?1 and m.relationCode=?2 ")
    void readByTypeAndRelationCode(String type,String relationCode,String data);
    @Modifying
    @Query("update SystemMessageDO s set s.del=0 where s.type=?1 and s.relationCode=?2 ")
    void delMessageByTypeAndRelationCode(String type,String relationCode);
}

+ 0 - 0
common/common-entity/sql/2023.sql


+ 84 - 1
common/common-entity/sql记录

@ -2285,4 +2285,87 @@ CREATE TABLE `base_patient_family_pushonoff` (
-- 2022-10-31 ysj
alter table base_patient_wechat add column xopenid varchar(50) default null comment '微信小程序openid';
alter table base_patient_wechat add column xopenid varchar(50) default null comment '微信小程序openid';
-- 2022-11-16 ysj
CREATE TABLE `base_urge_reminder_record` (
  `id` varchar(50) NOT NULL,
  `type` varchar(2) DEFAULT NULL,
  `order_id` varchar(50) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  KEY `index1` (`type`,`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单催促提醒记录';
-- 2022-11-14 wsl
CREATE TABLE `base_zhaohui_daily` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `patient` varchar(50) DEFAULT NULL COMMENT '老人code',
  `patientName` varchar(50) DEFAULT NULL COMMENT '老人',
  `photo` varchar(50) DEFAULT NULL COMMENT '头像',
  `message` varchar(200) DEFAULT NULL COMMENT '总结消息',
  `service` int(2) DEFAULT NULL COMMENT '服务次数',
  `service_time` varchar(20) DEFAULT NULL COMMENT '最近服务时间',
  `service_name` varchar(20) DEFAULT NULL COMMENT '最近服务类型',
  `pad_time` varchar(20) DEFAULT NULL COMMENT 'pad使用时长',
  `pad_last_time` varchar(20) DEFAULT NULL COMMENT 'pad上一次时间',
  `pad_last_total_time` varchar(20) DEFAULT NULL COMMENT 'pad上一次时长',
  `create_time` datetime DEFAULT NULL COMMENT '统计时间',
  `family_code` varchar(50) DEFAULT NULL COMMENT '家属code',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COMMENT='朝晖日报';
CREATE TABLE `base_zhaohui_daily_watch` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `daily_id` varchar(50) NOT NULL COMMENT '朝晖日报id',
  `wear` INT(2) DEFAULT NULL COMMENT '是否佩戴 1 未佩戴 0 佩戴',
  `power` VARCHAR(20) DEFAULT NULL COMMENT '电量',
  `online` INT(2) DEFAULT NULL COMMENT '在线状态0 不在线 1在线',
  `heart` varchar(20) DEFAULT NULL COMMENT '心率',
  `hearts` varchar(500) DEFAULT NULL COMMENT '心率图',
  `steps` varchar(20) DEFAULT NULL COMMENT '步数',
  `serve_desc` varchar(20) DEFAULT NULL COMMENT '检测异常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COMMENT='朝晖日报-防走失检测';
CREATE TABLE `base_zhaohui_daily_video` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `daily_id` varchar(50) NOT NULL COMMENT '朝晖日报id',
  `status` varchar(2) DEFAULT NULL COMMENT '状态',
  `device_sn` varchar(20) DEFAULT NULL COMMENT '设备SN码',
  `time` varchar(50) DEFAULT NULL COMMENT '时间',
  `serve_desc` varchar(20) DEFAULT NULL COMMENT '检测异常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COMMENT='朝晖日报-防跌倒监测';
CREATE TABLE `base_zhaohui_daily_sleep` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `daily_id` varchar(50) NOT NULL COMMENT '朝晖日报id',
  `status` varchar(2) DEFAULT NULL COMMENT '是否离线',
  `get_up_time` varchar(20) DEFAULT NULL COMMENT '起床时间',
  `yest_get_up_time` varchar(50) DEFAULT NULL COMMENT '昨日睡眠时间',
  `get_up_num` varchar(10) DEFAULT NULL COMMENT '起夜次数',
  `breathe` varchar(50) DEFAULT NULL COMMENT '呼吸频率',
  `heart` varchar(50) DEFAULT NULL COMMENT '平均心率',
  `breathe_curve` varchar(500) DEFAULT NULL COMMENT '呼吸曲线',
  `heart_curve` varchar(500) DEFAULT NULL COMMENT '心率曲线',
  `serve_desc` varchar(20) DEFAULT NULL COMMENT '检测异常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COMMENT='朝晖日报-睡眠监测';
CREATE TABLE `base_zhaohui_daily_eme` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `daily_id` varchar(50) NOT NULL COMMENT '朝晖日报id',
  `message` varchar(20) DEFAULT NULL COMMENT '消息',
  `online` int(2) DEFAULT NULL COMMENT '在线状态0 不在线 1在线',
  `order_id` varchar(20) DEFAULT NULL COMMENT '工单id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8mb4 COMMENT='朝晖日报-紧急呼叫';

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/assistance/EmergencyAssistanceDO.java

@ -23,7 +23,7 @@ public class EmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
        ErrorWarning(-2, "已响应"),//误报警
        cancel(-1, "已取消"),
        complete(0, "已完成"),
        apply(1, "申请中");
        apply(1, "预警中");
        private Integer type;
        private String desc;

+ 37 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/message/UrgeReminderRecordDO.java

@ -0,0 +1,37 @@
package com.yihu.jw.entity.care.message;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 工单催促提醒记录
 * Created by yeshijie on 2022/11/15.
 */
@Entity
@Table(name="base_urge_reminder_record")
public class UrgeReminderRecordDO extends UuidIdentityEntityWithCreateTime {
    private String type;//20紧急呼叫22安防工单
    private String orderId;//工单id
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "order_id")
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
}

+ 88 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/article/BaseNewsArticleDO.java

@ -0,0 +1,88 @@
package com.yihu.jw.entity.hospital.article;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
 * 新闻动态
 * Created by yeshijie on 2022/11/7.
 */
@Entity
@Table(name = "base_news_article")
public class BaseNewsArticleDO extends UuidIdentityEntityWithCreateTime {
    private String articleId;//文章id
    private Integer sort;//排序
    private String status;//状态(1生效 0失效)
    private String statusName;//状态(1生效 0失效)
    private String articleName;//文章名称
    private String image;//文章封面
    private String url;//外链地址
    @Column(name = "article_id")
    public String getArticleId() {
        return articleId;
    }
    public void setArticleId(String articleId) {
        this.articleId = articleId;
    }
    @Column(name = "sort")
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Transient
    public String getStatusName() {
        return statusName;
    }
    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }
    @Transient
    public String getArticleName() {
        return articleName;
    }
    public void setArticleName(String articleName) {
        this.articleName = articleName;
    }
    @Transient
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }
    @Transient
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/article/KnowledgeArticleDictDO.java

@ -30,6 +30,7 @@ public class KnowledgeArticleDictDO extends UuidIdentityEntity {
	private String content; // 文章内容
	private String source;  // 文章来源--客服
	private String image;   // 封面图片
	private String url;   // 外链地址
	private String vedioUrl;//视频url
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date createTime;  // 添加时间
@ -316,4 +317,12 @@ public class KnowledgeArticleDictDO extends UuidIdentityEntity {
	public void setVedioUrl(String vedioUrl) {
		this.vedioUrl = vedioUrl;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
}

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java

@ -23,7 +23,8 @@ public class SystemMessageDO extends UuidIdentityEntity {
     * 体征设备测量系统消息 42
     * 设备离线系统消息 43   推送给家属 社工  助老员
     * 监护确认消息 44
     * 家属紧急预警系统消息 50
     * 工作提醒 45 (对应code 20紧急救助 22安防监护)
     * 家属紧急预警系统消息 50(对应code 20紧急救助 22安防监护)
     * 新生儿在线咨询 850
     * 老人在线咨询 851
     * 老人健康咨询 852

+ 71 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyEmeEntity.java

@ -0,0 +1,71 @@
package com.yihu.jw.entity.log;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsl on 2022/11/15
 */
@Entity
@Table(name = "base_zhaohui_daily_eme")
public class ZhaohuiDailyEmeEntity extends IdEntity {
    /**
     * 朝晖日报id
     */
    private String dailyId;
    /**
     * 消息
     */
    private String message;
    /**
     * 在线状态0 不在线 1在线
     */
    private Integer online;
    /**
     * 工单id
     */
    private String orderId;
    @Column(name = "daily_id")
    public String getDailyId() {
        return dailyId;
    }
    public void setDailyId(String dailyId) {
        this.dailyId = dailyId;
    }
    @Column(name = "message")
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    @Column(name = "online")
    public Integer getOnline() {
        return online;
    }
    public void setOnline(Integer online) {
        this.online = online;
    }
    @Column(name = "order_id")
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
}

+ 78 - 107
common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyEntity.java

@ -1,6 +1,5 @@
package com.yihu.jw.entity.log;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
@ -16,99 +15,82 @@ import java.util.Date;
@Table(name = "base_zhaohui_daily")
public class ZhaohuiDailyEntity extends IdEntity {
    /**
     * name
     */
    private String name;
    /**
     * patient
     */
    private String patient;
    /**
     * 老人
     */
    private String oldName;
    private String patientName;
    /**
     * 老人code
     * 头像
     */
    private String oldPatient;
    private String photo;
    /**
     * 烟感
     * 总结消息
     */
    private String ygTotal;
    private String message;
    /**
     * 气感
     * 服务次数
     */
    private String qgTotal;
    private Integer service;
    /**
     * 手表
     * 最近服务时间
     */
    private String sbTotal;
    private String serviceTime;
    /**
     * 拐杖
     * 最近服务类型
     */
    private String gzTotal;
    private String serviceName;
    /**
     * 睡眠带
     * pad使用时长
     */
    private String smdTotal;
    private String padTime;
    /**
     * 紧急
     *  预警次数
     */
    private String emeTotal;
    private Integer emeNum;
    /**
     * 安防
     * pad上一次时间
     */
    private String secTotal;
    private String padLastTime;
    /**
     * 生活
     * pad上一次时长
     */
    private String liftTotal;
    private String padLastTotalTime;
    /**
     * 统计时间
     */
    private Date createTime;
    private String familyCode;
    private String deviceCode;
    private String total;
    @Column(name = "total")
    public String getTotal() {
        return total;
    @Column(name = "eme_num")
    public Integer getEmeNum() {
        return emeNum;
    }
    public void setTotal(String total) {
        this.total = total;
    public void setEmeNum(Integer emeNum) {
        this.emeNum = emeNum;
    }
    @Column(name = "device_code")
    public String getDeviceCode() {
        return deviceCode;
    @Column(name = "family_code")
    public String getFamilyCode() {
        return familyCode;
    }
    public void setDeviceCode(String deviceCode) {
        this.deviceCode = deviceCode;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    public void setFamilyCode(String familyCode) {
        this.familyCode = familyCode;
    }
    @Column(name = "patient")
@ -120,98 +102,87 @@ public class ZhaohuiDailyEntity extends IdEntity {
        this.patient = patient;
    }
    @Column(name = "old_name")
    public String getOldName() {
        return oldName;
    @Column(name = "patient_name")
    public String getPatientName() {
        return patientName;
    }
    public void setOldName(String oldName) {
        this.oldName = oldName;
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    @Column(name = "old_patient")
    public String getOldPatient() {
        return oldPatient;
    @Column(name = "photo")
    public String getPhoto() {
        return photo;
    }
    public void setOldPatient(String oldPatient) {
        this.oldPatient = oldPatient;
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    @Column(name = "yg_total")
    public String getYgTotal() {
        return ygTotal;
    }
    public void setYgTotal(String ygTotal) {
        this.ygTotal = ygTotal;
    }
    @Column(name = "qg_total")
    public String getQgTotal() {
        return qgTotal;
    @Column(name = "message")
    public String getMessage() {
        return message;
    }
    public void setQgTotal(String qgTotal) {
        this.qgTotal = qgTotal;
    public void setMessage(String message) {
        this.message = message;
    }
    @Column(name = "sb_total")
    public String getSbTotal() {
        return sbTotal;
    @Column(name = "service")
    public Integer getService() {
        return service;
    }
    public void setSbTotal(String sbTotal) {
        this.sbTotal = sbTotal;
    public void setService(Integer service) {
        this.service = service;
    }
    @Column(name = "gz_total")
    public String getGzTotal() {
        return gzTotal;
    @Column(name = "service_time")
    public String getServiceTime() {
        return serviceTime;
    }
    public void setGzTotal(String gzTotal) {
        this.gzTotal = gzTotal;
    public void setServiceTime(String serviceTime) {
        this.serviceTime = serviceTime;
    }
    @Column(name = "smd_total")
    public String getSmdTotal() {
        return smdTotal;
    @Column(name = "service_name")
    public String getServiceName() {
        return serviceName;
    }
    public void setSmdTotal(String smdTotal) {
        this.smdTotal = smdTotal;
    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }
    @Column(name = "eme_total")
    public String getEmeTotal() {
        return emeTotal;
    @Column(name = "pad_time")
    public String getPadTime() {
        return padTime;
    }
    public void setEmeTotal(String emeTotal) {
        this.emeTotal = emeTotal;
    public void setPadTime(String padTime) {
        this.padTime = padTime;
    }
    @Column(name = "sec_total")
    public String getSecTotal() {
        return secTotal;
    @Column(name = "pad_last_time")
    public String getPadLastTime() {
        return padLastTime;
    }
    public void setSecTotal(String secTotal) {
        this.secTotal = secTotal;
    public void setPadLastTime(String padLastTime) {
        this.padLastTime = padLastTime;
    }
    @Column(name = "lift_total")
    public String getLiftTotal() {
        return liftTotal;
    @Column(name = "pad_last_total_time")
    public String getPadLastTotalTime() {
        return padLastTotalTime;
    }
    public void setLiftTotal(String liftTotal) {
        this.liftTotal = liftTotal;
    public void setPadLastTotalTime(String padLastTotalTime) {
        this.padLastTotalTime = padLastTotalTime;
    }
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;

+ 158 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailySleepEntity.java

@ -0,0 +1,158 @@
package com.yihu.jw.entity.log;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsl on 2022/11/15
 */
@Entity
@Table(name = "base_zhaohui_daily_sleep")
public class ZhaohuiDailySleepEntity extends IdEntity {
    /**
     * 朝晖日报id
     */
    private String dailyId;
    /**
     * 是否离线
     */
    private String status;
    /**
     * 起床时间
     */
    private String getUpTime;
    /**
     * 昨日睡眠时间
     */
    private String yestGetUpTime;
    /**
     * 起夜次数
     */
    private String getUpNum;
    /**
     * 呼吸频率
     */
    private String breathe;
    /**
     * 平均心率
     */
    private String heart;
    /**
     * 呼吸曲线
     */
    private String breatheCurve;
    /**
     * 心率曲线
     */
    private String heartCurve;
    /**
     * 检测异常
     */
    private String serveDesc;
    @Column(name = "daily_id")
    public String getDailyId() {
        return dailyId;
    }
    public void setDailyId(String dailyId) {
        this.dailyId = dailyId;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "get_up_time")
    public String getGetUpTime() {
        return getUpTime;
    }
    public void setGetUpTime(String getUpTime) {
        this.getUpTime = getUpTime;
    }
    @Column(name = "yest_get_up_time")
    public String getYestGetUpTime() {
        return yestGetUpTime;
    }
    public void setYestGetUpTime(String yestGetUpTime) {
        this.yestGetUpTime = yestGetUpTime;
    }
    @Column(name = "get_up_num")
    public String getGetUpNum() {
        return getUpNum;
    }
    public void setGetUpNum(String getUpNum) {
        this.getUpNum = getUpNum;
    }
    @Column(name = "breathe")
    public String getBreathe() {
        return breathe;
    }
    public void setBreathe(String breathe) {
        this.breathe = breathe;
    }
    @Column(name = "heart")
    public String getHeart() {
        return heart;
    }
    public void setHeart(String heart) {
        this.heart = heart;
    }
    @Column(name = "breathe_curve")
    public String getBreatheCurve() {
        return breatheCurve;
    }
    public void setBreatheCurve(String breatheCurve) {
        this.breatheCurve = breatheCurve;
    }
    @Column(name = "heart_curve")
    public String getHeartCurve() {
        return heartCurve;
    }
    public void setHeartCurve(String heartCurve) {
        this.heartCurve = heartCurve;
    }
    @Column(name = "serve_desc")
    public String getServeDesc() {
        return serveDesc;
    }
    public void setServeDesc(String serveDesc) {
        this.serveDesc = serveDesc;
    }
}

+ 88 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyVideoEntity.java

@ -0,0 +1,88 @@
package com.yihu.jw.entity.log;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsl on 2022/11/14
 */
@Entity
@Table(name = "base_zhaohui_daily_video")
public class ZhaohuiDailyVideoEntity extends IdEntity {
    /**
     * 朝晖日报id
     */
    private String dailyId;
    /**
     * 状态
     */
    private String status;
    /**
     * 设备sn码
     */
    private String deviceSn;
    /**
     * 时间
     */
    private String time;
    /**
     * 检测异常
     */
    private String serveDesc;
    @Column(name = "daily_id")
    public String getDailyId() {
        return dailyId;
    }
    public void setDailyId(String dailyId) {
        this.dailyId = dailyId;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "time")
    public String getTime() {
        return time;
    }
    public void setTime(String time) {
        this.time = time;
    }
    @Column(name = "serve_desc")
    public String getServeDesc() {
        return serveDesc;
    }
    public void setServeDesc(String serveDesc) {
        this.serveDesc = serveDesc;
    }
}

+ 130 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/log/ZhaohuiDailyWatchEntity.java

@ -0,0 +1,130 @@
package com.yihu.jw.entity.log;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsl on 2022/11/14
 */
@Entity
@Table(name = "base_zhaohui_daily_watch")
public class ZhaohuiDailyWatchEntity extends IdEntity {
    /**
     * 朝晖日报id
     */
    private String dailyId;
    /**
     * 是否佩戴 1 未佩戴 0 佩戴
     */
    private Integer wear;
    /**
     * 电量
     */
    private String power;
    /**
     * 在线状态0 不在线 1在线
     */
    private Integer online;
    /**
     * 心率
     */
    private String heart;
    /**
     * 心率图
     */
    private String hearts;
    /**
     * 步数
     */
    private String steps;
    /**
     * 检测异常
     */
    private String serveDesc;
    @Column(name = "daily_id")
    public String getDailyId() {
        return dailyId;
    }
    public void setDailyId(String dailyId) {
        this.dailyId = dailyId;
    }
    @Column(name = "wear")
    public Integer getWear() {
        return wear;
    }
    public void setWear(Integer wear) {
        this.wear = wear;
    }
    @Column(name = "power")
    public String getPower() {
        return power;
    }
    public void setPower(String power) {
        this.power = power;
    }
    @Column(name = "online")
    public Integer getOnline() {
        return online;
    }
    public void setOnline(Integer online) {
        this.online = online;
    }
    @Column(name = "heart")
    public String getHeart() {
        return heart;
    }
    public void setHeart(String heart) {
        this.heart = heart;
    }
    @Column(name = "hearts")
    public String getHearts() {
        return hearts;
    }
    public void setHearts(String hearts) {
        this.hearts = hearts;
    }
    @Column(name = "steps")
    public String getSteps() {
        return steps;
    }
    public void setSteps(String steps) {
        this.steps = steps;
    }
    @Column(name = "serve_desc")
    public String getServeDesc() {
        return serveDesc;
    }
    public void setServeDesc(String serveDesc) {
        this.serveDesc = serveDesc;
    }
}

+ 14 - 1
common/common-util/src/main/java/com/yihu/jw/util/common/IdCardUtil.java

@ -239,6 +239,20 @@ public class IdCardUtil {
    public static int getAgeByIdcardOrBirthday(String idcard,Date birthday){
        int age = getAgeForIdcard(idcard);
        if(age<=0&&birthday!=null){
            return getAgeByBirthday(birthday);
        }
        return age;
    }
    public static int getAgeByBirthdayOrIdcard(String idcard,Date birthday){
        int age = getAgeByBirthday(birthday);
        if(age<=0){
            return getAgeForIdcard(idcard);
        }
        return age;
    }
    public static int getAgeByBirthday(Date birthday){
        int age = 0;
        if(birthday!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(birthday);
            int year = calendar.get(Calendar.YEAR);
@ -250,7 +264,6 @@ public class IdCardUtil {
            if (cal.get(Calendar.MONTH) < (month - 1) || (cal.get(Calendar.MONTH) == (month - 1) && cal.get(Calendar.DATE) < day)) {
                age--;
            }
            return age;
        }
        return age;
    }

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

@ -1118,6 +1118,37 @@ public class DateUtil {
    }
    /**
     * 获取某一时间端内的工作天数(不包含最后一天)
     * @param start
     * @param end
     * @return
     */
    public static long getWorkDaysNotendDay(String start, String end){
        SimpleDateFormat myFormatter = new SimpleDateFormat(YYYY_MM_DD);
        long day = 0;
        Calendar startCal = Calendar.getInstance();
        Calendar endCal = Calendar.getInstance();
        try {
            startCal.setTime(myFormatter.parse(start));
            endCal.setTime(myFormatter.parse(end));
        } catch (ParseException e) {
            System.out.println("日期格式非法");
            e.printStackTrace();
            return day;
        }
        while (startCal.compareTo(endCal) <0) {
            //工作日+1
            if (!Holiday.isHoliday((startCal.getTime()))){
                day++;
            }
            startCal.add(Calendar.DAY_OF_MONTH, 1);
        }
        return day;
    }
    /**
     * 判断一天是不是工作日
     *

+ 5 - 1
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/config/MultipartConfig.java

@ -2,6 +2,7 @@ package com.yihu.jw.gateway.config;
import com.yihu.jw.gateway.filter.CsrfFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
@ -19,10 +20,13 @@ public class MultipartConfig {
    @Autowired
    CsrfFilter csrfFilter;
    @Value("${server.tomcat.basedir}")
    String tomcatLocation;
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        String location = "/data/apps/temp";
        String location = tomcatLocation;
        File tmpFile = new File(location);
        if (!tmpFile.exists()) {
            tmpFile.mkdirs();

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

@ -1,7 +1,7 @@
server:
  port: ${server.ag-basic-port}
  tomcat:
    basedir: /data/apps/temp
    basedir: /data1/apps/temp1
    max-http-form-post-size: -1
  max-http-header-size: 102400

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

@ -428,9 +428,10 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
            }
        boolean past = testPwd(parameters.get("password"));
        if (!"family".equals(flag)) {
            if (!past) {
            //账户密码登录的才验证密码强度
        String grant_type = parameters.get("grant_type");
        if ("password".equals(grant_type)) {
            if (!testPwd(parameters.get("password"))) {
                throw new PwdException("密码强度低,请用验证码登录,或者修改密码后在从新登录!");
            }
        }

+ 6 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/config/MultipartConfig.java

@ -1,5 +1,6 @@
package com.yihu.jw.base.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -12,10 +13,14 @@ import java.io.*;
@Configuration
public class MultipartConfig {
    @Value("${server.tomcat.basedir}")
    String tomcatLocation;
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        String location = "/data/apps/temp2";
        String location = tomcatLocation;
        File tmpFile = new File(location);
        if (!tmpFile.exists()) {
            tmpFile.mkdirs();

+ 13 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/article/BaseNewsArticleDao.java

@ -0,0 +1,13 @@
package com.yihu.jw.base.dao.article;
import com.yihu.jw.entity.hospital.article.BaseNewsArticleDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2022/11/7.
 */
public interface BaseNewsArticleDao extends PagingAndSortingRepository<BaseNewsArticleDO, String>, JpaSpecificationExecutor<BaseNewsArticleDO> {
}

+ 60 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/article/ArticleEndpoint.java

@ -10,13 +10,10 @@ import com.yihu.jw.base.service.article.KnowledgeArticleService;
import com.yihu.jw.base.service.article.KnowledgeArticleUserService;
import com.yihu.jw.base.service.article.KnowledgeCategoryService;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.patient.BasePatientBusinessDO;
import com.yihu.jw.entity.base.role.RoleDO;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDictDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleUserDO;
import com.yihu.jw.entity.hospital.article.KnowledgeCategoryDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
@ -61,6 +58,66 @@ public class ArticleEndpoint extends EnvelopRestEndpoint {
	private UserDao userdao;
	@Autowired
	private RoleDao roleDao;
	@GetMapping(value = "findPageByArticleName")
	@ApiOperation(value = "获取新闻动态列表")
	public Envelop findPageByArticleName(
			@ApiParam(name = "articleName", value = "文章标题")
			@RequestParam(value = "articleName", required = false) String articleName,
			@ApiParam(name = "page", value = "第几页,从1开始", required = true, defaultValue = "1")
			@RequestParam(value = "page", required = true,defaultValue = "1")Integer page,
			@ApiParam(name = "pageSize", value = "每页分页大小", required = true, defaultValue = "10")
			@RequestParam(value = "pageSize", required = true,defaultValue = "10")Integer pageSize){
		try {
			return knowledgeArticleService.findPageByArticleName(articleName, page, pageSize);
		}catch (Exception e){
			return failedException(e);
		}
	}
	@GetMapping(value = "findNewsArticle")
	@ApiOperation(value = "按id获取新闻动态")
	public Envelop findNewsArticle(
			@ApiParam(name = "id", value = "id",required = true)
			@RequestParam(value = "id", required = true) String id){
		try {
			return success("获取成功",knowledgeArticleService.findNewsArticle(id));
		}catch (Exception e){
			return failedException(e);
		}
	}
	@PostMapping(value = "delNewsArticle")
	@ApiOperation(value = "获取新闻动态列表")
	public Envelop delNewsArticle(
			@ApiParam(name = "id", value = "id",required = true)
			@RequestParam(value = "id", required = true) String id){
		try {
			knowledgeArticleService.delNewsArticle(id);
			return success("删除成功");
		}catch (Exception e){
			return failedException(e);
		}
	}
	@PostMapping(value = "addNewArticle")
	@ApiOperation(value = "新增或修改新闻动态列表")
	public Envelop addNewArticle(
			@ApiParam(name = "id", value = "id",required = false)
			@RequestParam(value = "id", required = false) String id,
			@ApiParam(name = "articleId", value = "文章id")
			@RequestParam(value = "articleId", required = true) String articleId,
			@ApiParam(name = "sort", value = "排序", required = true)
			@RequestParam(value = "sort", required = true)Integer sort,
			@ApiParam(name = "status", value = "状态", required = true)
			@RequestParam(value = "status", required = true)String status){
		try {
			return success("操作成功",knowledgeArticleService.addNewArticle(id,articleId,sort,status));
		}catch (Exception e){
			return failedException(e);
		}
	}
	
	@GetMapping(value = BaseHospitalRequestMapping.KnowledgeArticle.searchKnowledgePageList)
	@ApiOperation(value = "获取文章列表")

+ 26 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/menu/BaseMenuNoLoginEndpoint.java

@ -6,7 +6,6 @@ import com.yihu.jw.entity.hospital.article.KnowledgeArticleDictDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -79,4 +78,30 @@ public class BaseMenuNoLoginEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "findPageByArticleName")
    @ApiOperation(value = "获取新闻动态列表")
    public Envelop findPageByArticleName(
            @ApiParam(name = "page", value = "第几页,从1开始", required = true, defaultValue = "1")
            @RequestParam(value = "page", required = true,defaultValue = "1")Integer page,
            @ApiParam(name = "pageSize", value = "每页分页大小", required = true, defaultValue = "10")
            @RequestParam(value = "pageSize", required = true,defaultValue = "10")Integer pageSize){
        try {
            return knowledgeArticleService.findPageByArticleName(null, page, pageSize);
        }catch (Exception e){
            return failedException(e);
        }
    }
    @GetMapping(value = "findNewsArticle")
    @ApiOperation(value = "按id获取新闻动态")
    public Envelop findNewsArticle(
            @ApiParam(name = "id", value = "id",required = true)
            @RequestParam(value = "id", required = true) String id){
        try {
            return success("获取成功",knowledgeArticleService.findNewsArticle(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 90 - 5
svr/svr-base/src/main/java/com/yihu/jw/base/service/article/KnowledgeArticleService.java

@ -2,9 +2,9 @@ package com.yihu.jw.base.service.article;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.dao.article.KnowledgeArticleDictDao;
import com.yihu.jw.base.dao.article.BaseNewsArticleDao;
import com.yihu.jw.base.dao.article.KnowledgeArticleDeptDao;
import com.yihu.jw.base.dao.article.KnowledgeArticleMenuDao;
import com.yihu.jw.base.dao.article.KnowledgeArticleDictDao;
import com.yihu.jw.base.dao.article.KnowledgeArticleUserDao;
import com.yihu.jw.base.dao.menu.BaseMenuDictDao;
import com.yihu.jw.base.dao.user.UserDao;
@ -15,19 +15,19 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.menu.BaseMenuDictDO;
import com.yihu.jw.entity.base.patient.BasePatientBusinessDO;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDO;
import com.yihu.jw.entity.hospital.article.BaseNewsArticleDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDeptDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDictDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleUserDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.survey.WlyySurveyTemplateDO;
import com.yihu.jw.entity.hospital.survey.WlyySurveyUserDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.survey.dao.SurveyTemplateDao;
import com.yihu.jw.hospital.survey.dao.SurveyUserDao;
import com.yihu.jw.patient.dao.BasePatientBusinessDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.utils.EntityUtils;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
@ -73,6 +73,90 @@ public class KnowledgeArticleService extends BaseJpaService<KnowledgeArticleDict
    private HibenateUtils hibenateUtils;
	@Autowired
	private UserDao userDao;
	@Autowired
	private BaseNewsArticleDao baseNewsArticleDao;
	/**
	 * 新闻动态分页
	 * @return
	 */
	public PageEnvelop<List<Map<String,Object>>> findPageByArticleName(String articleName, Integer page, Integer size){
		String sql = "SELECT a.id,a.sort,cast(a.status as char) status,a.article_id articleId,LEFT(a.create_time,19) createTime,IF(a.status=1,'生效','失效') statusName" +
				",d.title articleName,d.image,d.url from base_news_article a,wlyy_knowledge_article_dict d " +
				"WHERE a.article_id = d.id " ;
		String sqlCount = "SELECT count(a.id) from base_news_article a,wlyy_knowledge_article_dict d  " +
				" WHERE a.article_id = d.id ";
		String filter = " ";
		String limit = " order by a.sort desc limit "+(page-1)*size+","+size;
		if (StringUtils.isNotBlank(articleName)){
			filter +="and d.title like '%"+articleName+"%'";
		}
		List<Map<String, Object>> list = jdbcTemplate.queryForList(sql + filter+limit);
		for (Map<String,Object> map:list){
		}
		Long count = jdbcTemplate.queryForObject(sqlCount+filter,Long.class);
		return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
	}
	/**
	 * 删除新闻动态
	 */
	public void delNewsArticle(String id){
		if(baseNewsArticleDao.exists(id)){
			baseNewsArticleDao.delete(id);
		}
	}
	/**
	 * 按id查找
	 * @param id
	 * @return
	 */
	public BaseNewsArticleDO findNewsArticle(String id){
		BaseNewsArticleDO baseNewsArticleDO = baseNewsArticleDao.findOne(id);
		if(baseNewsArticleDO!=null){
			if(StringUtils.isNotBlank(baseNewsArticleDO.getArticleId())){
				KnowledgeArticleDictDO dictDO = knowledgeArticleDictDao.findByIdAndDel(baseNewsArticleDO.getArticleId());
				if(dictDO!=null){
					baseNewsArticleDO.setArticleName(dictDO.getTitle());
					baseNewsArticleDO.setImage(dictDO.getImage());
					baseNewsArticleDO.setUrl(dictDO.getUrl());
				}
			}
			baseNewsArticleDO.setStatusName("1".equals(baseNewsArticleDO.getStatus())?"生效":"失效");
		}
		return baseNewsArticleDO;
	}
	/**
	 * 新增或修改新闻动态
	 * @return
	 */
	public BaseNewsArticleDO addNewArticle(String id,String articleId,Integer sort,String status){
		if(StringUtils.isNotBlank(id)){
			BaseNewsArticleDO baseNewsArticleDO = baseNewsArticleDao.findOne(id);
			baseNewsArticleDO.setArticleId(articleId);
			baseNewsArticleDO.setSort(sort);
			baseNewsArticleDO.setStatus(status);
			baseNewsArticleDao.save(baseNewsArticleDO);
			return baseNewsArticleDO;
		}else {
			BaseNewsArticleDO baseNewsArticleDO = new BaseNewsArticleDO();
			baseNewsArticleDO.setArticleId(articleId);
			baseNewsArticleDO.setSort(sort);
			baseNewsArticleDO.setStatus(status);
			baseNewsArticleDO.setCreateTime(new Date());
			baseNewsArticleDao.save(baseNewsArticleDO);
			return baseNewsArticleDO;
		}
	}
	//查询文章列表
	public List<Map<String,Object>> findArticleList(String first,String second ,String key,Integer page ,Integer pageSize){
		String sql ="select b.id as \"id\", " +
@ -165,7 +249,7 @@ public class KnowledgeArticleService extends BaseJpaService<KnowledgeArticleDict
				articleNeedCheck=false;
			}
		}
		if (!StringUtils.isNotBlank(knowledgeArticleDO.getId()) ) {
		if (StringUtils.isBlank(knowledgeArticleDO.getId()) ) {
			// 新增
			knowledgeArticleDO.setId(UUID.randomUUID().toString().replace("-", ""));
			knowledgeArticleDO.setCreateTime(new Date());
@ -189,6 +273,7 @@ public class KnowledgeArticleService extends BaseJpaService<KnowledgeArticleDict
			one.setImage(knowledgeArticleDO.getImage());
			one.setIntro(knowledgeArticleDO.getIntro());
			one.setUpdateTime(new Date());
			one.setUrl(knowledgeArticleDO.getUrl());
			one.setCategoryFirst(knowledgeArticleDO.getCategoryFirst());
			one.setCategoryFirstName(knowledgeArticleDO.getCategoryFirstName());
			one.setCategorySecond(knowledgeArticleDO.getCategorySecond());

+ 1 - 1
svr/svr-base/src/main/resources/application.yml

@ -2,7 +2,7 @@
server:
  port: ${server.svr-base-port}
  tomcat:
    basedir: /data/apps/temp2
    basedir: /data1/apps/temp2
express:
  sf_url: http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService
  sf_code: JKZL

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/YsConfig.java

@ -15,7 +15,7 @@ public class YsConfig {
    /**
     * 监控账号说明:
     * 目前为多个账号 监控设备与账号绑定关系表ys_device、dm_ys_config
     * mobile:13559485270 pwd:zjxl123456*
     * mobile:13559485270 pwd:zjxl@2021
     * mobile:15659713528 pwd:woaini123a*
     * mobile:18770887864 pwd:123456a.
     * pc端 https://es.ys7.com/ys/login

+ 13 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/UrgeReminderRecordDao.java

@ -0,0 +1,13 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.care.message.UrgeReminderRecordDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * Created by yeshijie on 2022/11/15.
 */
public interface UrgeReminderRecordDao extends JpaRepository<UrgeReminderRecordDO, String>, JpaSpecificationExecutor<UrgeReminderRecordDO> {
    UrgeReminderRecordDO findByTypeAndOrderId(String type, String orderId);
}

+ 13 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyDao.java

@ -0,0 +1,13 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.log.ZhaohuiDailyEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/10/25
 */
public interface ZhaohuiDailyDao extends PagingAndSortingRepository<ZhaohuiDailyEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyEntity> {
    ZhaohuiDailyEntity findById(Long id);
}

+ 14 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyEmeDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.log.ZhaohuiDailyEmeEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/15
 */
public interface ZhaohuiDailyEmeDao extends PagingAndSortingRepository<ZhaohuiDailyEmeEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyEmeEntity> {
    ZhaohuiDailyEmeEntity findByDailyId(String dailyId);
}

+ 16 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailySleepDao.java

@ -0,0 +1,16 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.log.ZhaohuiDailySleepEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/15
 */
public interface ZhaohuiDailySleepDao extends PagingAndSortingRepository<ZhaohuiDailySleepEntity, String>, JpaSpecificationExecutor<ZhaohuiDailySleepEntity> {
    ZhaohuiDailySleepEntity findByDailyId(String dailyid);
}

+ 17 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyVideoDao.java

@ -0,0 +1,17 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.log.ZhaohuiDailyVideoEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by wsl on 2022/11/14
 */
public interface ZhaohuiDailyVideoDao extends PagingAndSortingRepository<ZhaohuiDailyVideoEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyVideoEntity> {
    List<ZhaohuiDailyVideoEntity> findByDailyId(String dailyId);
}

+ 13 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/ZhaohuiDailyWatchDao.java

@ -0,0 +1,13 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.log.ZhaohuiDailyWatchEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/14
 */
public interface ZhaohuiDailyWatchDao extends PagingAndSortingRepository<ZhaohuiDailyWatchEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyWatchEntity> {
    ZhaohuiDailyWatchEntity findByDailyId(String dailyId);
}

+ 77 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/AdminManageEndpoint.java

@ -0,0 +1,77 @@
package com.yihu.jw.care.endpoint.admin;
import com.yihu.jw.care.service.admin.AdminManageService;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 *
 * Created by yeshijie on 2022/11/15.
 */
@RestController
@RequestMapping(value = "adminManage")
@Api(value = "管理员-管理端",  tags = {"管理员-管理端"})
public class AdminManageEndpoint extends EnvelopRestEndpoint {
    @Resource
    private AdminManageService adminManageService;
    @GetMapping(value = "getEmergencyAssistanceNum")
    @ApiOperation(value = "获取紧急救助预警中的工单数")
    public ObjEnvelop getEmergencyAssistanceNum(){
        try {
            return ObjEnvelop.getSuccess("查询成功",adminManageService.getEmergencyAssistanceNum());
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "getOrgList")
    @ApiOperation(value = "获取机构列表")
    public ListEnvelop getOrgList(@ApiParam(name = "type",value = "类型type 2社工 3助老员 4教师") @RequestParam String type){
        try {
            return ListEnvelop.getSuccess("查询成功",adminManageService.getOrgList(type));
        }catch (Exception e){
            e.printStackTrace();
            return ListEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "getUserList")
    @ApiOperation(value = "获取人员列表")
    public PageEnvelop getUserList(@ApiParam(name = "type",value = "类型type 1照护老人 2社工 3助老员 4教师 5幼儿") @RequestParam String type,
                                         @ApiParam(name = "page",value = "页码") @RequestParam Integer page,
                                         @ApiParam(name = "size",value = "每页大小") @RequestParam Integer size,
                                         @ApiParam(name = "name",value = "模糊搜索名字") @RequestParam(name = "name",required = false)String name,
                                   @ApiParam(name = "orgCode",value = "机构id") @RequestParam(name = "orgCode",required = false)String orgCode){
        try {
            return adminManageService.getUserList(type,orgCode,name, page, size);
        }catch (Exception e){
            e.printStackTrace();
            return failedPageEnvelopException2(e);
        }
    }
    @PostMapping(value = "orderUrgeReminder")
    @ApiOperation(value = "工单催促提醒")
    public Envelop orderUrgeReminder(@ApiParam(name = "orderType",value = "类型 20紧急呼叫22安防工单") @RequestParam String orderType,
                                     @ApiParam(name = "id",value = "工单id") @RequestParam String id){
        try {
            adminManageService.orderUrgeReminder(id,orderType);
            return success("提醒成功");
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("提醒失败");
        }
    }
}

+ 67 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/common/CommonController.java

@ -1,18 +1,27 @@
package com.yihu.jw.care.endpoint.common;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.message.PatientMessageService;
import com.yihu.jw.care.util.MessageDigestUtil;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.care.util.WeatherUtil;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.entity.care.weather.BaseWeatherDayDO;
import com.yihu.jw.entity.care.weather.BaseWeatherWeekDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
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.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.patient.PatientRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.service.WechatInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -20,7 +29,11 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
 * Created by yeshijie on 2022/7/28.
@ -36,7 +49,61 @@ public class CommonController extends EnvelopRestEndpoint {
    private WeatherUtil weatherUtil;
    @Autowired
    private PatientMessageService patientMessageService;
    @Resource
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Resource
    private WechatInfoService wechatInfoService;
    @Resource
    private WechatDao wechatDao;
    @PostMapping(value = "open/getSign")
    @ApiOperation(value = "获取微信签名", notes = "获取微信签名")
    @ObserverRequired
    public Envelop getSign(@ApiParam(name = "pageUrl", value = "授权页面")
                           @RequestParam(value = "pageUrl", required = true)String pageUrl,
                           @ApiParam(name = "wxId", value = "微信id")
                           @RequestParam(value = "wxId", required = true)String wxId){
        try{
            logger.info("pageUrl="+pageUrl);
            logger.info("wxId="+wxId);
            String ticket = wechatInfoService.getJsapi_ticketByToken(wxId);
            WxWechatDO wxWechatDO = wechatDao.findById(wxId);
            Map<Object, Object> map = new HashMap<Object, Object>();
            if (ticket != null) {
                String noncestr = UUID.randomUUID().toString();
                long timestamp = System.currentTimeMillis() / 1000;
                String url = pageUrl;
                logger.info("getSign.url="+url);
                String str = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url;
                logger.info("getSign.str="+str);
                // sha1加密
                String signature = MessageDigestUtil.SHA1(str);
                map.put("noncestr", noncestr);
                map.put("timestamp", timestamp);
                map.put("signature", signature);
                map.put("appid", wxWechatDO.getAppId());
                return success(PatientRequestMapping.Wechat.api_success,map);
            }
            return failed(PatientRequestMapping.Wechat.api_error);
        }catch (Exception e){
            return failedException2(e);
        }
    }
    @GetMapping(value = "open/getCloudCareUrl")
    @ApiOperation(value = "获取云照护url")
    public ObjEnvelop getCloudCareUrl() {
        try {
            String url = "";
            WlyyHospitalSysDictDO dictDO = wlyyHospitalSysDictDao.findById("getCloudCareUrl");
            if(dictDO!=null){
                url = dictDO.getDictValue();
            }
            return ObjEnvelop.getSuccess("获取成功",url);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "weather")
    @ApiOperation(value = "获取天气数据")

+ 2 - 28
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/PatientConsultEndpoint.java

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.consult.ConsultService;
import com.yihu.jw.care.service.message.BaseServiceNewsService;
import com.yihu.jw.care.util.MessageDigestUtil;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
@ -45,7 +46,6 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.*;
/**
@ -516,7 +516,7 @@ public class PatientConsultEndpoint extends EnvelopRestEndpoint {
				String str = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url;
				logger.info("getSign.str="+str);
				// sha1加密
				String signature = SHA1(str);
				String signature = MessageDigestUtil.SHA1(str);
				map.put("noncestr", noncestr);
				map.put("timestamp", timestamp);
				map.put("signature", signature);
@ -528,32 +528,6 @@ public class PatientConsultEndpoint extends EnvelopRestEndpoint {
			return failedException2(e);
		}
	}
	
	/**
	 * @description: SHA、SHA1加密 @parameter: str:待加密字符串 @return: 加密串
	 **/
	public String SHA1(String str) throws Exception {
		try {
			MessageDigest digest = MessageDigest.getInstance("SHA-1"); // 如果是SHA加密只需要将"SHA-1"改成"SHA"即可
			digest.update(str.getBytes());
			byte messageDigest[] = digest.digest();
			// Create Hex String
			StringBuffer hexStr = new StringBuffer();
			// 字节数组转换为 十六进制 数
			for (int i = 0; i < messageDigest.length; i++) {
				String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
				if (shaHex.length() < 2) {
					hexStr.append(0);
				}
				hexStr.append(shaHex);
			}
			return hexStr.toString();
			
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
	}
	
	@PostMapping(value = BaseHospitalRequestMapping.PatientIM.updateConsultParticipant)
	@ApiOperation(value = "更新会话成员(新增或删除)", notes = "更新会话成员(新增或删除)")

+ 15 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/DoctorMessageEndpoint.java

@ -32,7 +32,8 @@ public class DoctorMessageEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "messages")
    @ApiOperation("应用消息")
    public ObjEnvelop messages(@ApiParam(name = "type", value = "消息类型 10床位申请,11安全监护,12紧急救助,13体征异常消息,14设备离线通知")
    public ObjEnvelop messages(@ApiParam(name = "type", value = "消息类型 10床位申请,11安全监护,12紧急救助," +
            "13体征异常消息,14设备离线通知,15工作提醒")
                               @RequestParam(value = "type", required = false) String type,
                               @ApiParam(name = "doctor", value = "doctor")
                               @RequestParam(value = "doctor", required = false) String doctor){
@ -127,6 +128,19 @@ public class DoctorMessageEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "/getToDoWorkReminder")
    @ApiOperation("获取待办工作提醒")
    public PageEnvelop getToDoWorkReminder(@ApiParam(name="doctor",value = "医生ID,当前查看列表医生",required = true)
                                          @RequestParam(value = "doctor")String doctor,
                                          @RequestParam(value = "page")Integer page,
                                          @RequestParam(value = "pageSize")Integer pageSize){
        try {
            return doctorMessageService.getToDoWorkReminder(doctor,page,pageSize);
        }catch (Exception e){
            return failedPageEnvelopException(e);
        }
    }
    @PostMapping(value = "/updateMessageRead")
    @ApiOperation("已读消息")
    @ObserverRequired

+ 27 - 6
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/PatientMessageEndpoint.java

@ -238,18 +238,39 @@ public class PatientMessageEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "/getZHaohuiRiBaoInfo")
    @ApiOperation(value = "获取朝晖日报")
    public ObjEnvelop getZHaohuiRiBaoInfo(
            @ApiParam(name = "dailyId", required = false)
            @RequestParam(value = "dailyId", required = false) String dailyId,
            @ApiParam(name = "patient", required = true)
            @RequestParam(value = "patient") String patient
    ) {
        try {
            JSONObject zHaohuiRiBaoInfo = patientMessageService.getZHaohuiRiBaoInfo(patient, dailyId);
            System.out.println(zHaohuiRiBaoInfo.toString());
            return ObjEnvelop.getSuccess("获取成功", zHaohuiRiBaoInfo);
        } catch (Exception e) {
            e.printStackTrace();
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "/getZhaoHuiRiBaoList")
    @ApiOperation(value = "获取朝晖日报")
    public ListEnvelop getZhaoHuiRiBaoList(@ApiParam(name = "startTime", required = false)
                                           @RequestParam(value = "startTime") String startTime,
                                           @ApiParam(name = "endTime", required = false)
                                           @RequestParam(value = "endTime") String endTime,
                                           @ApiParam(name = "patient", required = true)
                                           @RequestParam(value = "patient") String patient
                                          @RequestParam(value = "startTime",required = false) String startTime,
                                          @ApiParam(name = "endTime", required = false)
                                          @RequestParam(value = "endTime",required = false) String endTime,
                                          @ApiParam(name = "patient", required = true)
                                          @RequestParam(value = "patient") String patient,
                                          @ApiParam(name = "dailyId", required = false)
                                          @RequestParam(value = "dailyId",required = false) String dailyId
    ) {
        try {
            return success("获取成功",200,patientMessageService.getZhaoHuiRiBaoList(startTime, endTime, patient));
            return success("获取成功", 200, patientMessageService.getZhaoHuiRiBaoList(startTime, endTime, patient));
        } catch (Exception e) {
            e.printStackTrace();
            return failedListEnvelopException2(e);

+ 421 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/admin/AdminManageService.java

@ -0,0 +1,421 @@
package com.yihu.jw.care.service.admin;
import com.yihu.jw.care.dao.assistance.EmergencyAssistanceDao;
import com.yihu.jw.care.dao.message.UrgeReminderRecordDao;
import com.yihu.jw.care.dao.security.SecurityMonitoringOrderDao;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.care.vo.OrgVo;
import com.yihu.jw.care.vo.UserVo;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.message.UrgeReminderRecordDO;
import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * Created by yeshijie on 2022/11/15.
 */
@Service
public class AdminManageService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Resource
    private MessageUtil messageUtil;
    @Resource
    private EmergencyAssistanceDao emergencyAssistanceDao;
    @Resource
    private SecurityMonitoringOrderDao securityMonitoringOrderDao;
    @Resource
    private BaseTeamMemberDao baseTeamMemberDao;
    @Resource
    private PermissionService permissionService;
    @Resource
    private BaseDoctorDao doctorDao;
    @Resource
    private UrgeReminderRecordDao urgeReminderRecordDao;
    /**
     * 获取紧急救助预警中的工单数
     */
    public Integer getEmergencyAssistanceNum(){
        String sql = "select count(id) from base_emergency_assistance_order where status =1";
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }
    /**
     * 工单催促提醒
     * 20紧急呼叫22安防工单
     */
    public void orderUrgeReminder(String id,String orderType){
        synchronized (id.intern()){
            UrgeReminderRecordDO recordDO = urgeReminderRecordDao.findByTypeAndOrderId(orderType,id);
            if(recordDO==null){
                recordDO = new UrgeReminderRecordDO();
                recordDO.setOrderId(id);
                recordDO.setType(orderType);
                urgeReminderRecordDao.save(recordDO);
                String sender = permissionService.getUID();
                BaseDoctorDO baseDoctorDO = doctorDao.findById(sender);
                String patient;
                String name;
                String teamCode;
                if("20".equals(orderType)){
                    EmergencyAssistanceDO orderDO = emergencyAssistanceDao.findOne(id);
                    patient = orderDO.getPatient();
                    name = orderDO.getPatientName();
                    teamCode = orderDO.getTeamCode();
                }else {
                    SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(id);
                    patient = orderDO.getPatient();
                    name = orderDO.getPatientName();
                    teamCode = orderDO.getTeamCode();
                }
                List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(teamCode,2);
                for (BaseDoctorDO doctorDO:doctorDOS){
                    String dingDingBody = doctorDO.getName()+"社工您好,"+name+"老人的紧急预警还未处理,管理员提醒您及时处理,请进入朝晖云照护应用查看。";
                    messageUtil.sendDoctorDingdingMessage(doctorDO,null,"text","2",dingDingBody,null,null);
                    messageUtil.createToDoWorkReminder(doctorDO.getId(),baseDoctorDO.getId(),baseDoctorDO.getName(),id,orderType);
                }
            }
        }
    }
    //type   2社工 3助老员 4教师
    //2. 社区医院3.  养老机构 4.  托育机构
    public List<Map<String,Object>> getOrgList(String type){
        if("2".equals(type)){
            String sql = "SELECT distinct t.name orgName,t.org_code orgCode" +
                    " from base_team t,base_team_member tm" +
                    "  WHERE  t.id =tm.team_code and t.del=1 and tm.del = '1' ";
            return jdbcTemplate.queryForList(sql);
        }else {
            String filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
            if(listtmp.size()>0){
                String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and a.id not in ('"+orgCodes+"')";
            }
            //2社工, 3教师,4助老员
            String sql = "select code orgCode,name orgName from base_org a where a.del=1 and a.type="+type +filter;
            return jdbcTemplate.queryForList(sql);
        }
    }
    /**
     * 管理端通讯录
     * type 1照护老人 2社工 3助老员 4教师 5幼儿
     */
    public PageEnvelop getUserList(String type,String orgCode, String name, Integer page, Integer size){
        PageEnvelop envelop = new PageEnvelop();
        String limit = " limit "+(page-1)*size+","+size;
        switch (type){
            case "1":
                envelop = getOlderList(name, limit);
                break;
            case "2":
                envelop = getSocialWorkerList(name,orgCode, limit);
                break;
            case "3":
                envelop = getHelperList(name,orgCode, limit);
                break;
            case "4":
                envelop = getTeacherList(name,orgCode, limit);
                break;
            case "5":
                envelop = getChildList(name, limit);
                break;
        }
        envelop.setPageSize(size);
        envelop.setCurrPage(page);
        return envelop;
    }
    public PageEnvelop getOlderList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and a.id not in ('"+orgCodes+"')";
        }
        List<Map<String,Object>> list = findOld(name,null,limit,filter);
        Long count = findOldTotal(name,null,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<Map<String,Object>> findOld(String name,String residentialArea,String limit,String filter1){
        String sql = "SELECT DISTINCT a.id,a.name,a.photo,a.idcard,CAST(IFNULL(a.birthday,'') AS char ) birthday,a.residential_area residentialArea,a.sex " +
                ",a.ykt_id yktId, case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online,IFNULL(sign_status,0) signStatus from base_patient a " +
                " WHERE a.archive_type = 1 and a.del = '1'   ";
        sql+=" and (a.sign_status=1 or (EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0))) ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter1;
        sql += " GROUP BY a.id,a.name,a.photo,a.idcard,a.birthday,a.residential_area,a.sex,a.ykt_id,online,signStatus ";
        sql += " ORDER BY online desc,a.ykt_id desc,signStatus desc";
        sql += limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            String id = map.get("id")+"";
            String familySql = "select t2.id,t2.name,t2.sex,t2.mobile,t2.idcard,if(t2.openid is null,0,1) online,t2.photo,t1.family_relation " +
                    "from base_patient t2 left JOIN base_patient_family_member t1 on t1.family_member = t2.id " +
                    "where t2.archive_type=3 and t2.del=1 and t1.patient='"+id+"'";
            map.put("family",jdbcTemplate.queryForList(familySql));
        }
        return list;
    }
    public Long findOldTotal(String name,String residentialArea,String filter){
        String sql = "SELECT count(DISTINCT a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' ";
        sql+=" and (a.sign_status=1 or (EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0))) ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getSocialWorkerList(String name,String orgCode,String limit){
        String filter = "";
        if(!StringUtil.isBlank(orgCode)){
            filter = " and t.org_code = '"+orgCode+"'";
        }else {
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
            if(listtmp.size()>0){
                String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and t.org_code not in ('"+orgCodes+"')";
            }
        }
        List<OrgVo> list = findSocialWorker(name,limit,filter);
        Long count = findSocialWorkerTotal(name,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<OrgVo> findSocialWorker(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online,a.mobile,t.name orgName,t.org_code orgCode" +
                " from base_doctor a,base_team t,base_team_member tm" +
                "  WHERE a.id=tm.doctor_code and a.doctor_level = 2 and t.id =tm.team_code and t.del=1 and a.del = '1' and tm.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
        sql+=limit;
        List<UserVo> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(UserVo.class));
        Map<String,List<UserVo>> userMap = list.stream().collect(Collectors.groupingBy(UserVo::getOrgCode));
        Map<String,String> orgMap = list.stream().collect(Collectors.toMap(UserVo::getOrgCode, UserVo::getOrgName,(key1 , key2)-> key2 ));
        List<OrgVo> orgVoList = new ArrayList<>();
        for (String key:orgMap.keySet()){
            String orgName = orgMap.get(key);
            OrgVo orgVo = new OrgVo();
            orgVo.setOrgName(orgName);
            orgVo.setOrgCode(key);
            List<UserVo> temList = userMap.get(key);
            orgVo.setUserList(temList);
            orgVoList.add(orgVo);
        }
        return orgVoList;
    }
    public Long findSocialWorkerTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_team t,base_team_member tm " +
                "WHERE a.id=tm.doctor_code and a.doctor_level = 2 and t.id =tm.team_code and t.del=1 and a.del = '1' and tm.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getHelperList(String name,String orgCode,String limit){
        String filter = "";
        if(StringUtil.isBlank(orgCode)){
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
            if(listtmp.size()>0){
                String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and h.org_code not in ('"+orgCodes+"')";
            }
        }else {
            filter = " and h.org_code ='"+orgCode+"' ";
        }
        List<OrgVo> list = findHelper(name,limit,filter);
        Long count = findHelperTotal(name,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<OrgVo> findHelper(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online,a.mobile,h.org_name orgName,h.org_code orgCode from base_doctor a,base_doctor_hospital h" +
                "  WHERE a.id=h.doctor_code and a.doctor_level = 4 and a.del = '1' and h.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
        sql+=limit;
        List<UserVo> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(UserVo.class));
        Map<String,List<UserVo>> userMap = list.stream().collect(Collectors.groupingBy(UserVo::getOrgCode));
        Map<String,String> orgMap = list.stream().collect(Collectors.toMap(UserVo::getOrgCode, UserVo::getOrgName,(key1 , key2)-> key2 ));
        List<OrgVo> orgVoList = new ArrayList<>();
        for (String key:orgMap.keySet()){
            String orgName = orgMap.get(key);
            OrgVo orgVo = new OrgVo();
            orgVo.setOrgName(orgName);
            orgVo.setOrgCode(key);
            List<UserVo> temList = userMap.get(key);
            orgVo.setUserList(temList);
            orgVoList.add(orgVo);
        }
        return orgVoList;
    }
    public Long findHelperTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_doctor_hospital h WHERE  a.id=h.doctor_code and a.doctor_level = 4 and a.del = '1' and h.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getTeacherList(String name,String orgCode,String limit){
        String filter = "";
        if(StringUtil.isBlank(orgCode)){
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
            if(listtmp.size()>0){
                String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and h.org_code not in ('"+orgCodes+"')";
            }
        }else {
            filter = " and h.org_code = '"+orgCode+"' ";
        }
        List<OrgVo> list = findTeacherper(name,limit,filter);
        Long count = findTeacherTotal(name,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<OrgVo> findTeacherper(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online,a.mobile,h.org_name orgName,h.org_code orgCode from base_doctor a,base_doctor_hospital h" +
                "  WHERE a.id=h.doctor_code and a.doctor_level = 3 and a.del = '1' and h.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
        sql+=limit;
        List<UserVo> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(UserVo.class));
        Map<String,List<UserVo>> userMap = list.stream().collect(Collectors.groupingBy(UserVo::getOrgCode));
        Map<String,String> orgMap = list.stream().collect(Collectors.toMap(UserVo::getOrgCode, UserVo::getOrgName,(key1 , key2)-> key2 ));
        List<OrgVo> orgVoList = new ArrayList<>();
        for (String key:orgMap.keySet()){
            String orgName = orgMap.get(key);
            OrgVo orgVo = new OrgVo();
            orgVo.setOrgName(orgName);
            orgVo.setOrgCode(key);
            List<UserVo> temList = userMap.get(key);
            orgVo.setUserList(temList);
            orgVoList.add(orgVo);
        }
        return orgVoList;
    }
    public Long findTeacherTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_doctor_hospital h WHERE  a.id=h.doctor_code and a.doctor_level = 3 and a.del = '1' and h.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getChildList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and id not in ('"+orgCodes+"')";
        }
        List<Map<String,Object>> list = findChild(name,null,limit,filter);
        Long count = findChildTotal(name,null,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<Map<String,Object>> findChild(String name,String residentialArea,String limit,String filter1){
        String sql = "SELECT id,name,photo,mobile,idcard,sex,birthday  from base_patient WHERE archive_type = 2 and del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter1;
        sql += " order by id desc";
        sql+=limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            String paientId = map.get("id").toString();
            String idcardNo = map.get("idcard") + "";
            if(map.get("birthday")!=null){
                Date birthday = DateUtil.strToDate(map.get("birthday").toString());
                Integer age = IdCardUtil.getAgeByIdcardOrBirthday(idcardNo,birthday);
                map.put("age",age);
            }else {
                Integer age = IdCardUtil.getAgeForIdcard(idcardNo);
                map.put("age",age);
            }
        }
        return list;
    }
    public Long findChildTotal(String name,String residentialArea,String filter){
        String sql = "SELECT count(id) from base_patient WHERE archive_type = 2 and del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
}

+ 10 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java

@ -944,6 +944,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        logTypeDO.setContent("已取消");
        logTypeDO.setType(6);
        logDao.save(logTypeDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        return result;
    }
@ -1065,6 +1067,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        emergencyAssistanceDao.save(assistanceDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        return getOrderDetail(orderId,null);
    }
@ -1322,6 +1326,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            return result;
        }
        emergencyAssistanceDao.save(assistanceDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        //工单完成 给pc管理端推送完成信息
        JSONObject message = new JSONObject();
@ -2038,8 +2043,9 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            if (orderTypes.contains("20")){
                sql += "select '20' as OrderType,ord.id,ord.patient,ord.patient_name patientName,ord.doctor,ord.status,ord.doctor_name," +
                        "'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time ,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex," +
                        " TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,ord.session_id sessionId " +
                        "from base_emergency_assistance_order ord  INNER JOIN base_patient p on ord.patient = p.id  " +
                        " TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,ord.session_id sessionId,IF(re.id is null,0,1) isReminder " +
                        "from base_emergency_assistance_order ord  INNER JOIN base_patient p on ord.patient = p.id " +
                        " left join base_urge_reminder_record re on re.type='20' and re.order_id=ord.id" +
                        " where 1=1 "+filter +" "+olderFilter.replace("{patient}","p.id");
            }
            if (orderTypes.contains("20")&&orderTypes.contains("22")){
@ -2048,9 +2054,10 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            if (orderTypes.contains("22")){
                sql += " select  '22' as 'OrderType',ord.id,ord.patient,ord.patient_name patientName,ord.doctor,ord.status,ord.doctor_name," +
                        "ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time ,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex, " +
                        "TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,CONCAT(ord.patient,'_22') sessionId  " +
                        "TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,CONCAT(ord.patient,'_22') sessionId,IF(re.id is null,0,1) isReminder  " +
                        " from base_security_monitoring_order ord " +
                        " INNER JOIN base_patient p on ord.patient = p.id " +
                        " left join base_urge_reminder_record re on re.type='22' and re.order_id=ord.id" +
                        " where 1=1  "+filter +" "+olderFilter.replace("{patient}","p.id");
                if(StringUtils.isNotBlank(svrDesc)){
                    sql += " and ord.serve_desc = '"+svrDesc+"' ";

+ 44 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java

@ -26,6 +26,7 @@ import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.EntityUtils;
import org.apache.commons.lang3.StringUtils;
@ -178,6 +179,13 @@ public class DoctorMessageService {
            tmpObj = jdbcTemplate.queryForMap(sql);
            result.put("deviceLost",tmpObj);
        }
        if (typeNull||type.equals("15")){//工作提醒
            String sql = " select count(1) as 'all',type,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time from base_system_message " +
                    " where type='45' and del=1 and receiver='"+doctor+"' order by create_time desc ";
            Map<String,Object> tmpObj = new HashMap<>();
            tmpObj = jdbcTemplate.queryForMap(sql);
            result.put("toDoWorkReminder",tmpObj);
        }
        return result;
    }
@ -362,6 +370,42 @@ public class DoctorMessageService {
        return maps;
    }
    public PageEnvelop<Map<String,Object>> getToDoWorkReminder(String doctor,Integer page,Integer pageSize){
        page = page>0?page-1:0;
        String sql = " select mess.id,p.id patientCode,p.name,p.idcard,p.birthday,p.sex,p.photo,residential_area,p.mobile,mess.relation_code relationCode, " +
                " '紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`,mess.`code` orderType " +
                "  from base_system_message mess INNER JOIN base_emergency_assistance_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=20 and mess.receiver='"+doctor+"'  " +
                "union ALL " +
                "select mess.id,p.id patientCode,p.name,p.idcard,p.birthday,p.sex,p.photo,residential_area,p.mobile,mess.relation_code relationCode, " +
                "ord.serve_desc as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`, " +
                " mess.`code` orderType  " +
                " from base_system_message mess INNER JOIN base_security_monitoring_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=22 and mess.receiver='"+doctor+"' " +
                "ORDER BY create_time desc,id desc limit "+page*pageSize+","+pageSize;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        String sqlCount = " select count(mess.id) total " +
                "  from base_system_message mess INNER JOIN base_emergency_assistance_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=20 and mess.receiver='"+doctor+"'  " +
                "union ALL " +
                "select count(mess.id) total " +
                " from base_system_message mess INNER JOIN base_security_monitoring_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=22 and mess.receiver='"+doctor+"' " ;
        List<Map<String,Object>> totalList = jdbcTemplate.queryForList(sqlCount);
        Long total = totalList.stream().mapToLong(e->Long.valueOf(e.get("total").toString())).sum();
        for (Map<String,Object>tmp:list){
            String idcard = null==tmp.get("idcard")?"":tmp.get("idcard").toString();
            String birthday = null==tmp.get("birthday")?"":tmp.get("birthday").toString();
            Integer age = IdCardUtil.getAgeByIdcardOrBirthday(idcard,DateUtil.strToDate(birthday));
            tmp.put("age",age);
        }
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,total);
    }
    public Integer todoworkTotal(String doctor){
        Integer total=0;
        BaseDoctorDO  doctorDO = baseDoctorDao.findById(doctor);

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

@ -9,11 +9,11 @@ import com.yihu.jw.care.dao.device.PatientSafeAreaDao;
import com.yihu.jw.care.dao.log.BaseConsultWaresManageDao;
import com.yihu.jw.care.dao.log.BaseFamilyPushOnOffDao;
import com.yihu.jw.care.dao.log.BasePatientPadPushOnOffDao;
import com.yihu.jw.care.dao.message.OrgNoticeDao;
import com.yihu.jw.care.dao.message.UserNoticeDao;
import com.yihu.jw.care.dao.message.*;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.device.YsDeviceService;
import com.yihu.jw.entity.base.notice.UserNoticeDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
@ -22,8 +22,7 @@ import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.child.BaseChildManage;
import com.yihu.jw.entity.child.BaseConsultWaresManageEntity;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.log.BaseFamilyPushOnOffEntity;
import com.yihu.jw.entity.log.ZhaohuiDailyEntity;
import com.yihu.jw.entity.log.*;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
@ -74,38 +73,38 @@ public class PatientMessageService {
    private BaseFamilyPushOnOffDao baseFamilyPushOnOffDao;
    public PageEnvelop getNoticeList(String patient,String beginTime, String endTime, int page, int size){
        page = page>0?page-1:0;
    public PageEnvelop getNoticeList(String patient, String beginTime, String endTime, int page, int size) {
        page = page > 0 ? page - 1 : 0;
        String sqlCount = "select count(t.id) from base_org_notice t INNER JOIN base_user_notice usno on t.id = CONVERT(usno.notice_id USING utf8) and usno.del=1 " +
                "where t.del=1 ";
        String sql = "select t.id,t.title,t.org_code orgCode,t.org_name orgName,DATE_FORMAT(t.notice_time,'%Y-%m-%d %H:%i:%S') noticeTime, " +
                "t.content,t.img,usno.is_read isRead from base_org_notice t INNER JOIN base_user_notice usno on t.id = CONVERT(usno.notice_id USING utf8) " +
                "and usno.del=1 where t.del=1 ";
        String sqlCondition ="";
        if (StringUtils.isNotBlank(patient)){
            sqlCondition += " and usno.user_id = '"+patient+"' ";
        String sqlCondition = "";
        if (StringUtils.isNotBlank(patient)) {
            sqlCondition += " and usno.user_id = '" + patient + "' ";
        }
        if (StringUtils.isNotBlank(beginTime)){
            sqlCondition += " and t.notice_time >= '"+beginTime+"' ";
        if (StringUtils.isNotBlank(beginTime)) {
            sqlCondition += " and t.notice_time >= '" + beginTime + "' ";
        }
        if (StringUtils.isNotBlank(endTime)){
            sqlCondition += " and t.notice_time <= '"+endTime+"' ";
        if (StringUtils.isNotBlank(endTime)) {
            sqlCondition += " and t.notice_time <= '" + endTime + "' ";
        }
        String time = DateUtil.getStringDate();
        sqlCondition += " and t.notice_time <= '"+time+"' ";
        sqlCondition += " and t.notice_time <= '" + time + "' ";
        Long count = jdbcTemplate.queryForObject(sqlCount+sqlCondition,Long.class);
        sqlCondition += " order by t.notice_time desc limit "+page*size+","+size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+sqlCondition);
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,size,count);
        Long count = jdbcTemplate.queryForObject(sqlCount + sqlCondition, Long.class);
        sqlCondition += " order by t.notice_time desc limit " + page * size + "," + size;
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql + sqlCondition);
        return PageEnvelop.getSuccessListWithPage("查询成功", list, page, size, count);
    }
    public OrgNoticeDO orgNoticeDetail(String noticeId,String patient){
        OrgNoticeDO orgNoticeDO =  orgNoticeDao.findOne(noticeId);
        if (orgNoticeDO!=null){
            UserNoticeDO userNoticeDO =  userNoticeDao.findByNoticeIdAndUserIdAndDel(orgNoticeDO.getId(),patient,1);
            if (userNoticeDO!=null){
    public OrgNoticeDO orgNoticeDetail(String noticeId, String patient) {
        OrgNoticeDO orgNoticeDO = orgNoticeDao.findOne(noticeId);
        if (orgNoticeDO != null) {
            UserNoticeDO userNoticeDO = userNoticeDao.findByNoticeIdAndUserIdAndDel(orgNoticeDO.getId(), patient, 1);
            if (userNoticeDO != null) {
                userNoticeDO.setIsRead(1);
                userNoticeDao.save(userNoticeDO);
            }
@ -114,79 +113,75 @@ public class PatientMessageService {
    }
    /**
     *50 紧急预警系统消息
     *
     * 50 紧急预警系统消息
     */
    public List<Map<String,Object>> getSystemMessage(String patient,String agent){
        patient = "'"+patient+"'";
        if (StringUtils.isNotBlank(agent)){
            patient +=",'"+agent+"'";
    public List<Map<String, Object>> getSystemMessage(String patient, String agent) {
        patient = "'" + patient + "'";
        if (StringUtils.isNotBlank(agent)) {
            patient += ",'" + agent + "'";
        }
        String sql = " select A.*,B.notRead from " +
                "(select  count(1) as 'all',type,DATE_FORMAT(MAX(create_time),'%Y-%m-%d %H:%i:%S') create_time " +
                "from base_system_message where receiver in("+patient+") and del=1  GROUP BY type ORDER BY create_time desc)A " +
                "from base_system_message where receiver in(" + patient + ") and del=1  GROUP BY type ORDER BY create_time desc)A " +
                "LEFT JOIN (select count(1) notRead,type " +
                "from base_system_message where receiver in("+patient+") and (is_read=0 or is_read is null ) and del=1  GROUP BY type)B on A.type = B.type " +
                "from base_system_message where receiver in(" + patient + ") and (is_read=0 or is_read is null ) and del=1  GROUP BY type)B on A.type = B.type " +
                "ORDER BY A.create_time desc ";
        return jdbcTemplate.queryForList(sql);
    }
    /**
     *
     * @param patient
     * @param type
     * type=50,code:20紧急救助 22安防监护
     * type=41,code:1 生日祝福
     * type=42,code与体征类型对应 体征设备数据
     *
     * @param type    type=50,code:20紧急救助 22安防监护
     *                type=41,code:1 生日祝福
     *                type=42,code与体征类型对应 体征设备数据
     * @return
     */
    public List<Map<String,Object>> getSystemMessageList(String patient,String type,String isRead,String agent){
        patient = "'"+patient+"'";
        if (StringUtils.isNotBlank(agent)){
            patient +=",'"+agent+"'";
    public List<Map<String, Object>> getSystemMessageList(String patient, String type, String isRead, String agent) {
        patient = "'" + patient + "'";
        if (StringUtils.isNotBlank(agent)) {
            patient += ",'" + agent + "'";
        }
        String typeIn = " '"+type.replace(",","','")+"' ";
        String typeIn = " '" + type.replace(",", "','") + "' ";
        String sql = " select id,title,type,relation_code,sender,content,sender_name,is_read,code,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,data " +
                "from base_system_message where receiver in ("+patient+") and del=1 and type in ("+typeIn+" )  " ;
        if (StringUtils.isNotBlank(isRead)){
            if ("1".equals(isRead)){
                "from base_system_message where receiver in (" + patient + ") and del=1 and type in (" + typeIn + " )  ";
        if (StringUtils.isNotBlank(isRead)) {
            if ("1".equals(isRead)) {
                sql += " and is_read = '1'";
            }else {
            } else {
                sql += " and ( is_read = '0' or is_read is null ) ";
            }
        }
         sql +=  "ORDER BY create_time desc";
        sql += "ORDER BY create_time desc";
        return jdbcTemplate.queryForList(sql);
    }
    //获取天气
    public JSONObject envMessage(){
    public JSONObject envMessage() {
        return emergencyAssistanceService.getBaiduWeather();
    }
    public List<Map<String,Object>> getSystemMessageListPad(String patient,String type){
    public List<Map<String, Object>> getSystemMessageListPad(String patient, String type) {
        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 as audioUrl " +
                " FROM base_system_message WHERE type IN ("+type+") and receiver = '"+patient+"'" +
                " FROM base_system_message WHERE type IN (" + type + ") and receiver = '" + patient + "'" +
                " AND del = 1  ORDER BY create_time DESC ";
        return  jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    public void updateMessageRead(String messageId){
    public void updateMessageRead(String messageId) {
        SystemMessageDO messageDO = systemMessageDao.findOne(messageId);
        messageDO.setIsRead("1");
        messageDO.setOver("1");
        systemMessageDao.save(messageDO);
        if ("50" .equals(messageDO.getType())){
        if ("50".equals(messageDO.getType())) {
            BasePatientDO patientDO = patientDao.findById(messageDO.getReceiver());
            if (null!=patientDO){
            if (null != patientDO) {
                BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
                logDO.setUserCode(patientDO.getId());
                logDO.setUserName(patientDO.getName());
@ -199,46 +194,45 @@ public class PatientMessageService {
        }
    }
    public void delMessageRead(String msgId){
    public void delMessageRead(String msgId) {
        SystemMessageDO systemMessageDO = systemMessageDao.findOne(msgId);
        if (systemMessageDO!=null){
        if (systemMessageDO != null) {
            systemMessageDO.setDel("0");
            systemMessageDao.save(systemMessageDO);
        }
    }
    /**
     *
     * @param msgId
     * @param safe_area
     */
    @Transactional(rollbackFor =Exception.class )
    public JSONObject ConfirmFences(String msgId,String safe_area){
    @Transactional(rollbackFor = Exception.class)
    public JSONObject ConfirmFences(String msgId, String safe_area) {
        JSONObject result = new JSONObject();
        SystemMessageDO systemMessageDO = systemMessageDao.findOne(msgId);
        if ("1".equals(systemMessageDO.getData())){
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"已有家属确认管理,无需再次确认!");
        if ("1".equals(systemMessageDO.getData())) {
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg, "已有家属确认管理,无需再次确认!");
            return result;
        }
        List<PatientSafeAreaDO> patientSafeAreaDOs = patientSafeAreaDao.findByPatient2(systemMessageDO.getRelationCode());
        PatientSafeAreaDO patientSafeAreaDO = null;
        if (patientSafeAreaDOs.size()>0){
        if (patientSafeAreaDOs.size() > 0) {
            patientSafeAreaDO = patientSafeAreaDOs.get(0);
        }else {
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"居民未绑定防走失设备!");
        } else {
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg, "居民未绑定防走失设备!");
            return result;
        }
        if (StringUtils.isNotBlank(safe_area)&&null != patientSafeAreaDO){
        if (StringUtils.isNotBlank(safe_area) && null != patientSafeAreaDO) {
            patientSafeAreaDO.setSafeAreaGz(safe_area);
        }
        //更新围栏
        Integer successFlag = patientDeviceService.updatePatientSafeArea(systemMessageDO.getRelationCode(),patientSafeAreaDO.getSafeAreaGz());
        Integer successFlag = patientDeviceService.updatePatientSafeArea(systemMessageDO.getRelationCode(), patientSafeAreaDO.getSafeAreaGz());
        patientSafeAreaDO.setManageStatus(1);
        patientSafeAreaDO.setSuccessFlag(successFlag);
@ -246,23 +240,23 @@ public class PatientMessageService {
        //修改数据
        patientSafeAreaConfirmDao.manageByPatient(patientSafeAreaDO.getPatient());
        systemMessageDao.readByTypeAndRelationCode("44",patientSafeAreaDO.getPatient(),"1");
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"已确认");
        systemMessageDao.readByTypeAndRelationCode("44", patientSafeAreaDO.getPatient(), "1");
        result.put(ResponseContant.resultFlag, ResponseContant.success);
        result.put(ResponseContant.resultMsg, "已确认");
        return result;
    }
    //pad端 获取居民推送开关
    public List<Map<String, Object>> patientPadPushOnOff(String patient){
        String sql = "select patient,type,type_name,on_off from base_patient_pad_pushonoff where patient ='"+patient+"'";
    public List<Map<String, Object>> patientPadPushOnOff(String patient) {
        String sql = "select patient,type,type_name,on_off from base_patient_pad_pushonoff where patient ='" + patient + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    //家属端 获取家属开关
    public List<Map<String, Object>> familyPushOnOff(String patient){
        String sql = "select patient,type,type_name,on_off from base_patient_family_pushonoff where patient ='"+patient+"'";
    public List<Map<String, Object>> familyPushOnOff(String patient) {
        String sql = "select patient,type,type_name,on_off from base_patient_family_pushonoff where patient ='" + patient + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
@ -275,18 +269,18 @@ public class PatientMessageService {
    @Transactional(rollbackFor = Exception.class)
    public void cshOnOff(){
    public void cshOnOff() {
        JSONObject jsonObject = new JSONObject();
        JSONArray jsonArray = new JSONArray();
        List<BaseFamilyPushOnOffEntity> onOffEntityList = new ArrayList<>();
        jsonObject.put("1","紧急预警");
        jsonObject.put("1", "紧急预警");
        jsonArray.add(jsonObject);
        jsonObject.put("2","设备动态");
        jsonObject.put("2", "设备动态");
        jsonArray.add(jsonObject);
        jsonObject.put("3","体征动态");
        jsonObject.put("3", "体征动态");
        jsonArray.add(jsonObject);
        jsonObject.put("4","平台通知");
        jsonObject.put("4", "平台通知");
        jsonArray.add(jsonObject);
@ -299,7 +293,7 @@ public class PatientMessageService {
                BaseFamilyPushOnOffEntity ent = new BaseFamilyPushOnOffEntity();
                ent.setPatient(basePatientDO.getId());
                ent.setType(i);
                ent.setTypeName(jsonArray.getJSONObject(0).getString(i+""));
                ent.setTypeName(jsonArray.getJSONObject(0).getString(i + ""));
                ent.setOnOff(1);
                ent.setCreateTime(new Date());
                onOffEntityList.add(ent);
@ -319,37 +313,124 @@ public class PatientMessageService {
    }
    public List<ZhaohuiDailyEntity> getZhaoHuiRiBaoList(String start,String end,String patient) {
        StringBuffer sql  =new StringBuffer("select * from base_zhaohui_daily where patient = '"+patient+"'  ") ;
        if (StringUtils.isNotBlank(start)) {
            sql.append(" and create_time >='"+start+"' ");
    @Autowired
    private ZhaohuiDailySleepDao zhaohuiDailySleepDao;
    @Autowired
    private ZhaohuiDailyVideoDao zhaohuiDailyVideoDao;
    @Autowired
    private ZhaohuiDailyWatchDao zhaohuiDailyWatchDao;
    @Autowired
    private ZhaohuiDailyEmeDao zhaohuiDailyEmeDao;
    @Autowired
    private ZhaohuiDailyDao zhaohuiDailyDao;
    @Autowired
    private YsDeviceService ysDeviceService;
    public JSONObject getZHaohuiRiBaoInfo(String patient, String dailyId){
        JSONObject result = new JSONObject();
        //基本信息
        ZhaohuiDailyEntity baseInfo = zhaohuiDailyDao.findById(Long.parseLong(dailyId));
        result.put("baseInfo",baseInfo);
        //睡眠带
        JSONObject sleepObject = new  JSONObject();
        ZhaohuiDailySleepEntity sleepEntity = zhaohuiDailySleepDao.findByDailyId(dailyId);
        if (null != sleepEntity) {
            sleepObject.put("sleepObject",sleepEntity);
            sleepObject.put("status",1);
        }else {
            sleepObject.put("status",0);
        }
        result.put("sleep",sleepObject);
        //监控
        JSONObject videoObject = new JSONObject();
        List<ZhaohuiDailyVideoEntity> videoEntityList = zhaohuiDailyVideoDao.findByDailyId(dailyId);
        if (videoEntityList.size()>0) {
            //取之前时间的监控
            try {
                    videoObject.put("status", 1);
                    String[] time = videoEntityList.get(0).getTime().split(",");
                    JSONObject tmp = ysDeviceService.videoList2(patient, videoEntityList.get(0).getDeviceSn(), 1, null, null, 4, null, time[0], time[1], "2", null, null, null);
                    videoObject.put("monitorInfoStatus", tmp.getIntValue(ResponseContant.resultFlag));
                    if (tmp.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                        videoObject.put("monitorInfo", tmp.getString(ResponseContant.resultMsg));
                    } else {
                        JSONObject js1 = tmp.getJSONObject(ResponseContant.resultMsg);
                        js1.put("hdAddress", js1.getString("url"));
                        videoObject.put("monitorInfo", js1);
                    }
            } catch (Exception e) {
                e.printStackTrace();
                videoObject.put("monitorInfoStatus", 0);
                videoObject.put("monitorInfo", "未获取到当天录像信息");
            }
        }else {
            videoObject.put("status",0);
        }
        result.put("video",videoObject);
        if (StringUtils.isNotBlank(end)) {
            sql.append(" and create_time <= '"+end+"' ");
        //手表
        ZhaohuiDailyWatchEntity watchEntity = zhaohuiDailyWatchDao.findByDailyId(dailyId);
        JSONObject watchObject = new JSONObject();
        if (null!=watchEntity) {
            watchObject.put("watchObject",watchEntity);
            watchObject.put("status",1);
        }else {
            watchObject.put("status",0);
        }
        result.put("watch",watchObject);
        //紧急预警
        ZhaohuiDailyEmeEntity emeEntity = zhaohuiDailyEmeDao.findByDailyId(dailyId);
        JSONObject emeObject = new JSONObject();
        if (null!=emeEntity) {
            emeObject.put("emeObject",emeEntity);
            emeObject.put("status",1);
        }else {
            emeObject.put("status",0);
        }
        result.put("eme",emeObject);
        return result;
    }
    public List<Map<String, Object>> getZhaoHuiRiBaoList(String start, String end, String patient) {
        List<ZhaohuiDailyEntity> zhaohuiDailyEntities = jdbcTemplate.queryForList(sql.toString(), ZhaohuiDailyEntity.class);
        return  zhaohuiDailyEntities;
            StringBuffer sql = new StringBuffer("SELECT  id,eme_num,service,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time,patient_name FROM base_zhaohui_daily WHERE family_code = '" + patient + "' ");
            if (StringUtils.isNotBlank(start)) {
                sql.append(" and create_time >='" + start + "' ");
            }
            if (StringUtils.isNotBlank(end)) {
                sql.append(" and create_time <= '" + end + "' ");
            }
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql.toString());
        return list;
    }
    public List<Map<String, Object>> getFamilySystemMessageList(String type,String patient,String startTime,String endTime){
        StringBuffer sql = new StringBuffer("select id,code,type,title,sender,sender_name,receiver,receiver_name,data,is_read,del,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time ,content,user_type from base_system_message where user_type = 3 and type in ("+type+") and receiver = '"+patient+"' ");
    public List<Map<String, Object>> getFamilySystemMessageList(String type, String patient, String startTime, String endTime) {
        StringBuffer sql = new StringBuffer("select id,code,type,title,sender,sender_name,receiver,receiver_name,data,is_read,del,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time ,content,user_type from base_system_message where user_type = 3 and type in (" + type + ") and receiver = '" + patient + "' ");
        if (StringUtils.isNotBlank(startTime)&&StringUtils.isNotBlank(endTime)){
            startTime = startTime+" 00:00:00";
            endTime = endTime+" 23:59:59";
            sql.append(" and create_time >= '"+startTime+"' and  create_time<='"+endTime+"' ");
        if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
            startTime = startTime + " 00:00:00";
            endTime = endTime + " 23:59:59";
            sql.append(" and create_time >= '" + startTime + "' and  create_time<='" + endTime + "' ");
        }
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql.toString());
        return list;
    }
    //落地页-保存登记信息
    @Transactional(rollbackFor = Exception.class)
    public void saveRegisterInfo(String name,String phone,String type){
    public void saveRegisterInfo(String name, String phone, String type) {
        BaseConsultWaresManageEntity entity = new BaseConsultWaresManageEntity();
        entity.setName(name);
        entity.setMobile(phone);
@ -362,19 +443,19 @@ public class PatientMessageService {
    private BaseChildManageDao baseChildManageDao;
    //落地页-获取商品文章
    public List<Map<String, Object>> getDeviceArticleList(String id){
    public List<Map<String, Object>> getDeviceArticleList(String id) {
        List<Map<String, Object>> list = new ArrayList<>();
        String sql = "";
        if (StringUtils.isNotBlank(id)) {
            sql = "select id,type,org_name,title,url,img,click,sort,del*1 as del,DATE_FORMAT(create_time,'%Y-%m-%d') as create_time from base_child_manage where type = 5 and del = 1 and id='"+id+"' order by sort";
            sql = "select id,type,org_name,title,url,img,click,sort,del*1 as del,DATE_FORMAT(create_time,'%Y-%m-%d') as create_time from base_child_manage where type = 5 and del = 1 and id='" + id + "' order by sort";
            list = jdbcTemplate.queryForList(sql);
            if (list.size()>0) {
            if (list.size() > 0) {
                BaseChildManage baseChildManage = JSONObject.parseObject(JSON.toJSON(list.get(0)).toString(), BaseChildManage.class);
                baseChildManage.setClick(baseChildManage.getClick()+1);
                baseChildManage.setClick(baseChildManage.getClick() + 1);
                baseChildManageDao.save(baseChildManage);
            }
        }else {
        } else {
            sql = "select *  from base_child_manage where type = 5 and del = 1 order by sort";
            list = jdbcTemplate.queryForList(sql);
        }
@ -383,13 +464,10 @@ public class PatientMessageService {
    }
    public List<Map<String, Object>>  getDeviceArticleDict(){
    public List<Map<String, Object>> getDeviceArticleDict() {
        String sql = "select id,dict_name,dict_code,dict_value from wlyy_hospital_sys_dict where dict_name = 'consultService' order by sort  ";
        return jdbcTemplate.queryForList(sql);
    }
}

+ 5 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -653,6 +653,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            return result;
        }
        securityMonitoringOrderDao.save(orderDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
@ -1210,6 +1212,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setCancelReason(reason);
        orderDO.setStatus(SecurityMonitoringOrderDO.Status.cancel.getType());
        this.save(orderDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        if (type == SecurityMonitoringOrderDO.CancelType.patient.getType()) {                   //居民取消,消息列表也应该不显示
            messageUtil.updateSecurityMonitoringOrderMessage(orderDO, new String[]{"602", "603"}, "patientCancel");
@ -1402,6 +1405,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setStatus(SecurityMonitoringOrderDO.Status.complete.getType());//已完成
        one.setConclusionStatus(2);
        securityMonitoringOrderDao.save(one);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        List<BaseEmergencyWarnLogDO> byOrderIdByType = logDao.findByOrderIdByType(orderId);
        if (byOrderIdByType.size()==0){
@ -1496,7 +1500,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setStatus(0);
        one.setUpdateTime(new Date());
        securityMonitoringOrderDao.save(one);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        return getSecurityOrderDetail(orderId, null);
    }

+ 35 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageDigestUtil.java

@ -0,0 +1,35 @@
package com.yihu.jw.care.util;
import java.security.MessageDigest;
/**
 * 加密工具类
 * Created by yeshijie on 2022/11/11.
 */
public class MessageDigestUtil {
    /**
     * @description: SHA、SHA1加密 @parameter: str:待加密字符串 @return: 加密串
     **/
    public static String SHA1(String str) throws Exception {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-1"); // 如果是SHA加密只需要将"SHA-1"改成"SHA"即可
            digest.update(str.getBytes());
            byte messageDigest[] = digest.digest();
            // Create Hex String
            StringBuffer hexStr = new StringBuffer();
            // 字节数组转换为 十六进制 数
            for (int i = 0; i < messageDigest.length; i++) {
                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
                if (shaHex.length() < 2) {
                    hexStr.append(0);
                }
                hexStr.append(shaHex);
            }
            return hexStr.toString();
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
    }
}

+ 29 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java

@ -530,4 +530,33 @@ public class MessageUtil {
        }
    }
    /**
     * 创建医生工作提醒
     * @param doctor
     * @param sender
     * @param senderName
     * @param relationCode 紧急救助/安防工单id
     * @param code 20紧急救助 22安防工单
     */
    public void createToDoWorkReminder(String doctor,String sender,String senderName,String relationCode,String code){
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        if (null!=doctorDO){
            SystemMessageDO messageDO = new SystemMessageDO();
            messageDO.setTitle("医生工作提醒");
            messageDO.setType("45");
            messageDO.setSender(sender);
            messageDO.setSenderName(senderName);
            messageDO.setRelationCode(relationCode);
            messageDO.setReceiver(doctorDO.getId());
            messageDO.setReceiverName(doctorDO.getName());
            messageDO.setOver("");
            messageDO.setData("");
            messageDO.setDel("1");
            messageDO.setCreateTime(new Date());
            messageDO.setCode(code);
            systemMessageDao.save(messageDO);
        }
        //todo 向社工浙政钉发送消息
    }
}

+ 39 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/vo/OrgVo.java

@ -0,0 +1,39 @@
package com.yihu.jw.care.vo;
import java.io.Serializable;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/15.
 */
public class OrgVo implements Serializable {
    private String orgCode;
    private String orgName;
    private List<UserVo> userList;
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public List<UserVo> getUserList() {
        return userList;
    }
    public void setUserList(List<UserVo> userList) {
        this.userList = userList;
    }
}

+ 92 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/vo/UserVo.java

@ -0,0 +1,92 @@
package com.yihu.jw.care.vo;
import java.io.Serializable;
/**
 * Created by yeshijie on 2022/11/15.
 */
public class UserVo implements Serializable {
    private String id;
    private String name;
    private String photo;
    private String sex;
    private String mobile;
    private String idcard;
    private String online;
    private String orgCode;
    private String orgName;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getOnline() {
        return online;
    }
    public void setOnline(String online) {
        this.online = online;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}

+ 7 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/config/AqgConfig.java

@ -39,6 +39,13 @@ public class AqgConfig {
    public static final String X1fence_area = baseUrl +"/api/device/{0}/4g/fences/{1}";
    /**
     * 睡眠带 查询睡眠带信息
     */
    public static final String  sleepDevice_info=baseUrl+"/api/sleepdevice/";
    public static final String username = "13559485270";
    public static final String password = "zjxl@2021";
    public static final String redisKey = "aqgCooker";

+ 61 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/config/jpa/ZhDeviceSyncJpa.java

@ -0,0 +1,61 @@
package com.yihu.jw.care.config.jpa;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
/**
 * Created by wsl on 2022/11/8
 */
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "gsqflEntityManagerFactory",
        transactionManagerRef = "gsqflTransactionManager",
        basePackages = {"com.yihu.jw.care.zhDevice.dao"})
public class ZhDeviceSyncJpa {
    @Autowired
    private HibernateProperties hibernateProperties;
    @Bean(name = "gsqflDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.zhdevicePush")
    public DataSource zhylyjkglxtDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "gsqflEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(
            @Qualifier("gsqflDataSource") DataSource dataSource) {
        LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
        emfb.setDataSource(dataSource);
        emfb.setPackagesToScan("com.yihu.jw.care.zhDevice.entity");
        emfb.setPersistenceUnitName("zhdevicePush");
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        emfb.setJpaVendorAdapter(vendorAdapter);
        emfb.setJpaProperties(hibernateProperties.hibProperties());
        return emfb;
    }
    @Bean(name = "gsqflTransactionManager")
    JpaTransactionManager transactionManagerSecondary(
            @Qualifier("gsqflEntityManagerFactory") EntityManagerFactory builder) {
        return new JpaTransactionManager(builder);
    }
}

+ 11 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailyEmeDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.care.dao.pushLog;
import com.yihu.jw.entity.log.ZhaohuiDailyEmeEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/15
 */
public interface ZhaohuiDailyEmeDao extends PagingAndSortingRepository<ZhaohuiDailyEmeEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyEmeEntity> {
}

+ 11 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailySleepDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.care.dao.pushLog;
import com.yihu.jw.entity.log.ZhaohuiDailySleepEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/15
 */
public interface ZhaohuiDailySleepDao extends PagingAndSortingRepository<ZhaohuiDailySleepEntity, String>, JpaSpecificationExecutor<ZhaohuiDailySleepEntity> {
}

+ 11 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailyVideoDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.care.dao.pushLog;
import com.yihu.jw.entity.log.ZhaohuiDailyVideoEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/14
 */
public interface ZhaohuiDailyVideoDao extends PagingAndSortingRepository<ZhaohuiDailyVideoEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyVideoEntity> {
}

+ 11 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/pushLog/ZhaohuiDailyWatchDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.care.dao.pushLog;
import com.yihu.jw.entity.log.ZhaohuiDailyWatchEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/14
 */
public interface ZhaohuiDailyWatchDao extends PagingAndSortingRepository<ZhaohuiDailyWatchEntity, String>, JpaSpecificationExecutor<ZhaohuiDailyWatchEntity> {
}

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

@ -12,10 +12,7 @@ import com.yihu.jw.care.job.order.CancelPayOrderJob;
import com.yihu.jw.care.job.order.DailyWaterJob;
import com.yihu.jw.care.job.order.EmeWarnOrderDayJob;
import com.yihu.jw.care.job.order.EmeWarnOrderJob;
import com.yihu.jw.care.job.pushRecord.FamilySystemWechatPushJob;
import com.yihu.jw.care.job.pushRecord.PushRecordJob;
import com.yihu.jw.care.job.pushRecord.PushTimeIntegerPointJob;
import com.yihu.jw.care.job.pushRecord.PushWeatherForecastJob;
import com.yihu.jw.care.job.pushRecord.*;
import com.yihu.jw.care.job.sim.GetSimsVoiceFlowDayJob;
import com.yihu.jw.care.job.sim.GetSimsVoiceFlowMonthJob;
import com.yihu.jw.care.job.sim.UpdateSimsJob;
@ -282,14 +279,14 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            }else {
                logger.info("DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB exist");
            }
          /*  //朝晖日报:每天晚上8点发送
            //朝晖日报:每天晚上8点发送
            if (!quartzHelper.isExistJob("PUSH_ZHAO_HUI_RI_BAO_JOB")){
                String trigger =  SystemConf.getInstance().getSystemProperties().getProperty("PUSH_ZHAO_HUI_RI_BAO_JOB");
                quartzHelper.addJob(PushZhaohuiRoundJob.class,trigger,"PUSH_ZHAO_HUI_RI_BAO_JOB",new HashMap<String,Object>());
                logger.info("PUSH_ZHAO_HUI_RI_BAO_JOB success");
            }else {
                logger.info("PUSH_ZHAO_HUI_RI_BAO_JOB exist");
            }*/
            }
            //家属设备微信推送
            if (!quartzHelper.isExistJob("FAMILY_WECHAT_PUSH_DEVICE_JOB")){
                String trigger =  SystemConf.getInstance().getSystemProperties().getProperty("FAMILY_WECHAT_PUSH_DEVICE_JOB");
@ -298,6 +295,13 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            }else {
                logger.info("FAMILY_WECHAT_PUSH_DEVICE_JOB exist");
            }
            if (!quartzHelper.isExistJob("DEVICE_SYNC_JOB")){
                String trigger =  SystemConf.getInstance().getSystemProperties().getProperty("DEVICE_SYNC_JOB");
                quartzHelper.addJob(DeviceSyncJob.class,trigger,"DEVICE_SYNC_JOB",new HashMap<String,Object>());
                logger.info("DEVICE_SYNC_JOB success");
            }else {
                logger.info("DEVICE_SYNC_JOB exist");
            }
        } catch (Exception e) {
            logger.info(" job start failed");

+ 33 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/DeviceSyncJob.java

@ -0,0 +1,33 @@
package com.yihu.jw.care.job.device;
import com.yihu.jw.care.service.device.DeviceSyncService;
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/11/7
 */
public class DeviceSyncJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(DeviceOffLoneJob.class);
    @Autowired
    private DeviceSyncService deviceSyncService;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("DeviceSyncJob start");
        try {
            deviceSyncService.deviceSync();
            logger.info("DeviceSyncJob end");
        } catch (Exception e) {
            logger.info("DeviceSyncJob --ERROR MSG:"+e.getMessage());
            e.printStackTrace();
        }
    }
}

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

@ -0,0 +1,149 @@
package com.yihu.jw.care.service.device;
import com.yihu.jw.care.zhDevice.dao.ZhDeviceSyncDao;
import com.yihu.jw.care.zhDevice.entity.ZhDeviceSyncDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by wsl on 2022/11/7
 */
@Service
public class DeviceSyncService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ZhDeviceSyncDao zhDeviceSyncDao;
    public static void main(String[] args) {
        String abc = "24.48540661,118.09643550";
        String[] split = abc.split(",");
        System.out.println(split[0]);
    }
    public void deviceSync(){
        zhDeviceSyncDao.deleteAll();
        List<ZhDeviceSyncDO> listset = new ArrayList<>();
        String sql = "SELECT d.device_name as deviceName ,d.device_code as deviceSn,d.contact_status ,d.device_model,d.manufacturer,p.address AS patientAddress,p.lat_lon AS latLon,d.category_code FROM base.wlyy_devices d \n" +
                "    INNER JOIN base.wlyy_patient_device pd ON d.device_code = pd.device_sn INNER JOIN base.base_patient p ON p.id = pd.user where  contact_status IS NOT NULL";
        List<Map<String, Object>> deviceList = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> deviceS : deviceList) {
            ZhDeviceSyncDO zhDeviceSyncDO = new ZhDeviceSyncDO();
            String lat = "";
            String lng = "";
            String[] deviceSns = deviceS.get("deviceSn").toString().split(",");
            if (2<=deviceSns.length) {
                lat=deviceSns[0];
                lng=deviceSns[1];
            }
            zhDeviceSyncDO.setDeviceCode(deviceS.get("deviceSn").toString());//sn码
            zhDeviceSyncDO.setDeviceName(deviceS.get("deviceName").toString());//设备名称
            zhDeviceSyncDO.setManufacturer(deviceS.get("manufacturer")+"");//设备制造厂商
            zhDeviceSyncDO.setLinkType(4);//通讯方式  3-2G/3G/4G/5G、 4-WIFI
            zhDeviceSyncDO.setProvinceCode("330000");
            zhDeviceSyncDO.setProvinceName("浙江省");
            zhDeviceSyncDO.setCityCode("330100");
            zhDeviceSyncDO.setCityName("杭州市");
            zhDeviceSyncDO.setDistrictName("拱墅区");
            zhDeviceSyncDO.setAddress(deviceS.get("patientAddress").toString());
            zhDeviceSyncDO.setDistrictCode("330105");
            switch (deviceS.get("category_code").toString()) {
                case "14":  //气感
                    zhDeviceSyncDO.setDeviceTypeName("燃气泄漏监测");
                    zhDeviceSyncDO.setDeviceTypeCode("G1-009");
                    break;
                case "15":  //烟感
                    zhDeviceSyncDO.setDeviceTypeName("烟感检测");
                    zhDeviceSyncDO.setDeviceTypeCode("G6-013");
                    break;
                case "12": //防跌倒
                    zhDeviceSyncDO.setDeviceTypeName("防跌倒视频监测");
                    zhDeviceSyncDO.setDeviceTypeCode("S1-999");
                    break;
                case "2":   //血压
                    zhDeviceSyncDO.setDeviceTypeName("血压监测");
                    zhDeviceSyncDO.setDeviceTypeCode("G7-002");
                    break;
                case "1":   //血糖
                    zhDeviceSyncDO.setDeviceTypeName("血糖监测");
                    zhDeviceSyncDO.setDeviceTypeCode("G3-999");
                    break;
                case "13":  //睡眠带
                    zhDeviceSyncDO.setDeviceTypeName("睡眠带");
                    zhDeviceSyncDO.setDeviceTypeCode("Z2-005");
                    break;
                case "16":
                    zhDeviceSyncDO.setDeviceTypeName("云芯防走失拐杖");
                    zhDeviceSyncDO.setDeviceTypeCode("G99-999");
                    break;
                case "4":
                    zhDeviceSyncDO.setDeviceTypeName("X1防走失拐杖");
                    zhDeviceSyncDO.setDeviceTypeCode("G99-999");
                    break;
                case "7":
                    zhDeviceSyncDO.setDeviceTypeName("SOS紧急呼叫器");
                    zhDeviceSyncDO.setDeviceTypeCode("J1-001");
                    break;
                case "18":
                    zhDeviceSyncDO.setDeviceTypeName("日常用水监测");
                    zhDeviceSyncDO.setDeviceTypeCode("暂无");
                    break;
                case "19":
                    zhDeviceSyncDO.setDeviceTypeName("人脸识别检测");
                    zhDeviceSyncDO.setDeviceTypeCode("M1-002");
                    break;
                case "20":
                    zhDeviceSyncDO.setDeviceTypeName("日常用电监测");
                    zhDeviceSyncDO.setDeviceTypeCode("暂无");
                    break;
                case "21":
                    zhDeviceSyncDO.setDeviceTypeName("天然气使用监测");
                    zhDeviceSyncDO.setDeviceTypeCode("暂无");
                    break;
                default:
                    break;
            }
            zhDeviceSyncDO.setLat(lat);//维
            zhDeviceSyncDO.setLng(lng);//经
            zhDeviceSyncDO.setState(1);  //1-新增/修改,-1-删除
            zhDeviceSyncDO.setStatus(1);//0-离线,1-在线,3-停用(长期离线)
            if (1!=Integer.parseInt(deviceS.get("contact_status").toString())){
                zhDeviceSyncDO.setStatus(0);
                zhDeviceSyncDO.setDisabledType(4);
                zhDeviceSyncDO.setReason("长时间未连接网络获取最新状态!默认判定离线状态");
            }
            zhDeviceSyncDO.setTransmissionIntercal(00000);//传输间隔
            zhDeviceSyncDO.setDept("朝辉街道");
            zhDeviceSyncDO.setScene1("r-0");
            zhDeviceSyncDO.setScene2("r-60");
            zhDeviceSyncDO.setScene3("r-604");
            //zhDeviceSyncDO.setUnifiedAddressCode();//政法委统一地 址库编码
            listset.add(zhDeviceSyncDO);
        }
        zhDeviceSyncDao.save(listset);
    }
}

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

@ -399,6 +399,18 @@ public class PatientDeviceService {
        }
    }
    public com.alibaba.fastjson.JSONObject getSleepDeviceInfo(String deviceSn){
        try {
            MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
            param.add("mac", deviceSn);
            HttpEntity<com.alibaba.fastjson.JSONObject> response = httpClientUtil.aqgCookieHttp(AqgConfig.sleepDevice_info, param, HttpMethod.GET, getCookie());
            return response.getBody();
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

+ 270 - 127
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/message/ZhaohuiDailyService.java

@ -1,16 +1,21 @@
package com.yihu.jw.care.service.message;
import com.yihu.jw.care.dao.pushLog.ZhaohuiDailyDao;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.pushLog.*;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.log.ZhaohuiDailyEntity;
import com.yihu.jw.entity.log.*;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
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.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
@ -35,182 +40,320 @@ public class ZhaohuiDailyService {
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private PatientDeviceService patientDeviceService;
    @Autowired
    private ZhaohuiDailyWatchDao zhaohuiDailyWatchDao;
    @Autowired
    private ZhaohuiDailyVideoDao zhaohuiDailyVideoDao;
    @Autowired
    private ZhaohuiDailySleepDao zhaohuiDailySleepDao;
    @Autowired
    private ZhaohuiDailyEmeDao zhaohuiDailyEmeDao;
    public void allRound() {
        List<Map<String, Object>> familyAll = getFamily();
        familyAll.stream().forEach(family -> {
            String familyId = family.get("id").toString();
            String openid = family.get("openid").toString();
            getFamilyOld(familyId,openid);
        });
        List<BasePatientDO> oldList = olds();
        for (BasePatientDO old : oldList) {
            getOldFamily(old);
        }
    }
    //获取所有家属
    private List<Map<String, Object>> getFamily() {
        StringBuffer stringBuffer = new StringBuffer("select id,openid from base_patient where archive_type = 3 ");
        List<Map<String, Object>> list = jdbcTemplate.queryForList(stringBuffer.toString());
        return list;
    //获取所有老人
    private List<BasePatientDO> olds() {
        String sql = "SELECT * FROM base_patient WHERE archive_type =1 AND sign_status =1  AND del = 1  AND id NOT IN (SELECT dict_code FROM wlyy_hospital_sys_dict WHERE `dict_name` = 'jkzl_older')";
        List<BasePatientDO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(BasePatientDO.class));
        return query;
    }
    private void getFamilyOld(String id,String openid) {
        String sql = "select family_member from base_patient_family_member where patient ='" + id + "' and del = 1 ";
    //老人家属
    private void getOldFamily(BasePatientDO old) {
        String sql = "select family_member from base_patient_family_member where patient ='" + old.getId() + "' and del = 1 ";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        List result = new ArrayList<>();
        for (Map<String, Object> map : list) {
            ZhaohuiDailyEntity family_member = getFamilyOldInfo(map.get("family_member").toString(), id,openid);
            result.add(family_member);
             getFamilyOldInfo(old,map.get("family_member").toString());
        }
        zhaohuiDailyDao.save(result);
    }
    private List<Map<String, Object>> getDeviceSn(String id){
        String sql = " SELECT device_sn,category_code  FROM wlyy_patient_device WHERE user ='"+id+"'";
         return jdbcTemplate.queryForList(sql);
    }
    private ZhaohuiDailyEntity getFamilyOldInfo(String oldId,String faminlyId,String openid) {
    @Transactional(rollbackFor = Exception.class)
    public void getFamilyOldInfo(BasePatientDO old,String familyCode) {
        String deviceCode = "0";
        List<ZhaohuiDailyWatchEntity> zhaohuiDailyWatchList = new ArrayList<>();
        List<ZhaohuiDailySleepEntity> zhaohuiDailySleepList = new ArrayList<>();
        List<ZhaohuiDailyVideoEntity> zhaohuiDailyVideoList = new ArrayList<>();
        List<ZhaohuiDailyEmeEntity> zhaohuiDailyEmeList = new ArrayList<>();
        String gzDeviceSn ="";
        String ygDeviceSn ="";
        String qgDeviceSn ="";
        String sbDeviceSn ="";
        String smdDeviceSn ="";
        String bjqDeviceSn ="";
        List<Map<String, Object>> deviceSnS = getDeviceSn(oldId);
        for (Map<String, Object> deviceSn : deviceSnS) {
            switch (Integer.parseInt(deviceSn.get("category_code").toString())) {
                case 7: //居家报警器
                    bjqDeviceSn = deviceSn.get("device_sn").toString();
                    deviceCode+=",7";
                    break;
                case 4: //智能手表
                    sbDeviceSn = deviceSn.get("device_sn").toString();
                    deviceCode+=",4";
                    break;
                case 13: //睡眠带
                    smdDeviceSn = deviceSn.get("device_sn").toString();
                    deviceCode+=",13";
                    break;
                case 14: //气感报警器
                    qgDeviceSn = deviceSn.get("device_sn").toString();
                    deviceCode+=",14";
                    break;
                case 15: //烟感报警器
                    ygDeviceSn = deviceSn.get("device_sn").toString();
                    deviceCode+=",15";
                    break;
                case 16: //智能拐杖
                    gzDeviceSn = deviceSn.get("device_sn").toString();
                    deviceCode+=",16";
                    break;
                default:
                    break;
        String oldId = old.getId();
        String date = DateUtil.getStringDateShort();
        String stateDate = "2022-01-01" + " 00:00:00";
        String endDate = "2022-11-15" + " 23:59:59";
        String sex = old.getSex()==1?"爷爷":"奶奶";
        ZhaohuiDailyEntity zhaohuiDailyEntity = new ZhaohuiDailyEntity();
        zhaohuiDailyEntity.setPatient(oldId);
        zhaohuiDailyEntity.setPatientName(old.getName());
        zhaohuiDailyEntity.setPhoto(old.getPhoto());
        zhaohuiDailyEntity.setCreateTime(new Date());
        zhaohuiDailyEntity.setFamilyCode(familyCode);
        String message = "";
        String emeSql = "select count(id) from base_emergency_assistance_order where patient='"+oldId+"' and status in (0,1) and create_time>='"+stateDate+"' and create_time<='"+endDate+"'";
        Integer emeTotal = jdbcTemplate.queryForObject(emeSql, Integer.class);
        if (emeTotal>0){
            message += old.getName()+sex+"今日发起"+emeTotal+"次紧急呼叫";
        }
        String secSql ="select count(id) total,serve_desc from  base_security_monitoring_order where patient= '"+oldId+"' and create_time>='"+stateDate+"' and create_time<='"+endDate+"'and status in (0,1)";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(secSql);
        if (list.size()>0&&0>Integer.parseInt(list.get(0).get("total").toString())) {
            if (StringUtils.isNotBlank(message)) {
                message += "\n 监护到"+old.getName()+sex+"今日存在安全预警:【"+list.get(0).get("serve_desc")+"】";
            }else {
                message = "监护到"+old.getName()+sex+"今日存在安全预警:【"+list.get(0).get("serve_desc")+"】";
            }
        }
        zhaohuiDailyEntity.setEmeNum(emeTotal+list.size()>0?Integer.parseInt(list.get(0).get("total").toString()):0);
        if (StringUtils.isBlank("")) {
            message = old.getName()+sex+"今日状态正常,未发生异常情况";
        }
        //生活照料总数
        Integer liftOlderTotal = 0;
        //紧急总数
        Integer emeOlderTotal = 0;
        //安防总数
        Integer secOlderTotal = 0;
        zhaohuiDailyEntity.setMessage(message);
        //睡眠带总数
        Integer smdDeviceTotal = 0;
        //拐杖总数
        Integer gzDeviceTotal = 0;
        //烟感
        Integer ygDeviceTotal = 0;
        //气感
        Integer qgDeviceTotal = 0;
        //手表
        Integer sbDeviceTotal = 0;
        String lifeSql = "select count(id) from base_life_care_order where patient = '" + oldId + "' and status = 1 and create_time>= '" + stateDate + "' and create_time<= '" + endDate + "'";
        String lifeInfoSql = "select d.name,d.create_time create_time from base_life_care_order o INNER JOIN base_life_care_fee_detail d ON o.id=d.order_id where o.patient = '" + oldId + "' and o.status = 1 and o.create_time>= '" + stateDate + "' and o.create_time<= '" + endDate + "' order by o.create_time DESC limit 1";
        List<Map<String, Object>> lifeList = jdbcTemplate.queryForList(lifeInfoSql);
        Integer lifeTotal = jdbcTemplate.queryForObject(lifeSql, Integer.class);
        zhaohuiDailyEntity.setService(lifeTotal);
        if (lifeList.size() > 0) {
            zhaohuiDailyEntity.setServiceTime(lifeList.get(0).get("create_time").toString());
            zhaohuiDailyEntity.setServiceName(lifeList.get(0).get("name").toString());
        }
        zhaohuiDailyEntity.setPadTime("10");
        zhaohuiDailyEntity.setPadLastTime("15");
        zhaohuiDailyEntity.setPadLastTotalTime("2022-10-15 23:15:12");
        zhaohuiDailyEntity = zhaohuiDailyDao.save(zhaohuiDailyEntity);
        String date = DateUtil.getStringDateShort();
        String stateDate = date + " 00:00:00";
        String endDate = date + " 23:59:59";
        //生活照料
        StringBuffer liftSql = new StringBuffer("select count(id) total from base_life_care_order where patient = '" + oldId + "' and create_time >= '" + stateDate + "' and create_time<= '" + endDate + "' ");
        liftOlderTotal = jdbcTemplate.queryForObject(liftSql.toString(), Integer.class);
        //紧急
        StringBuffer emeSql = new StringBuffer("select count(id) total from base_emergency_assistance_order where patient = '" + oldId + "' and create_time >= '" + stateDate + "' and create_time<= '" + endDate + "'  ");
        emeOlderTotal = jdbcTemplate.queryForObject(emeSql.toString(), Integer.class);
        //安防
        StringBuffer secSql = new StringBuffer("select count(id) total from base_security_monitoring_order where patient = '" + oldId + "' and create_time >= '" + stateDate + "' and create_time<= '" + endDate + "' ");
        secOlderTotal = jdbcTemplate.queryForObject(secSql.toString(), Integer.class);
        //睡眠带
        StringBuffer smdDeviceSql = new StringBuffer("select count(id) total from base_sleep_device where patient = '" + oldId + "' and create_time >= '" + stateDate + "' and create_time<= '" + endDate + "'");
        smdDeviceTotal = jdbcTemplate.queryForObject(smdDeviceSql.toString(), Integer.class);
        //拐杖
        if (StringUtils.isNotBlank(gzDeviceSn)){
            StringBuffer gzDeviceSql = new StringBuffer("select count(id) total from base_yxdevice_index where sn ='"+gzDeviceSn+"' and create_time >= '" + stateDate + "' and create_time<= '" + endDate + "' ");
            gzDeviceTotal = jdbcTemplate.queryForObject(gzDeviceSql.toString(),Integer.class);
        }
        String sql = "SELECT pd.device_sn,pd.category_code FROM base.wlyy_patient_device pd  where pd.del=0 AND  category_code in ('7','12','4','13') AND user = '" + oldId + "'  ";
        List<Map<String, Object>> oldDeviceList = jdbcTemplate.queryForList(sql);
        StringBuffer qgDeviceSql = new StringBuffer("SELECT  count(id) as total FROM base_device_health_index WHERE device_sn = '" + qgDeviceSn + "' AND create_time >='" + stateDate + "'  AND create_time <= '" + endDate + "'");
        for (Map<String, Object> device : oldDeviceList) {
            String deviceSn = device.get("device_sn").toString();
            String category_code = device.get("category_code").toString();
            switch (Integer.parseInt(category_code)) {
                case 7: //居家报警器
        StringBuffer ygDeviceSql = new StringBuffer("SELECT  count(id) as total FROM base_device_health_index WHERE device_sn = '" + ygDeviceSn + "' AND create_time >='" + stateDate + "'  AND create_time <= '" + endDate + "'");
        ygDeviceTotal = jdbcTemplate.queryForObject(ygDeviceSql.toString(),Integer.class);
        qgDeviceTotal = jdbcTemplate.queryForObject(qgDeviceSql.toString(),Integer.class);
                    ZhaohuiDailyEmeEntity zhaohuiDailyEmeEntity = new ZhaohuiDailyEmeEntity();
                    zhaohuiDailyEmeEntity.setDailyId(zhaohuiDailyEntity.getId().toString());
                    sql = "  select o.id,o.create_time from base_emergency_assistance_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  and o.create_time >= '"+stateDate+"' and o.create_time <= '"+endDate+"'  ORDER BY create_time desc  limit 1 ";
                    List<Map<String, Object>> jjbjqList = jdbcTemplate.queryForList(sql);
                    if (jjbjqList.size()>0) {
                        zhaohuiDailyEmeEntity.setMessage("发出紧急呼叫");
                        zhaohuiDailyEmeEntity.setOrderId(jjbjqList.get(0).get("id").toString());
                    }else {
                        zhaohuiDailyEmeEntity.setMessage("未发出主动报警");
                    }
                    JSONObject aqgDeviceInfo2 = patientDeviceService.getAqgDeviceInfo2(deviceSn);
                    if (null!=aqgDeviceInfo2){
                        //电量
                        //在线状态实时获取
                        if (!aqgDeviceInfo2.getBoolean("online")) {//设备在线状态
                            zhaohuiDailyEmeEntity.setOnline(0);
                        } else {
                            zhaohuiDailyEmeEntity.setOnline(1);
                        }
                    }else {
                        zhaohuiDailyEmeEntity.setOnline(0);
                    }
                    zhaohuiDailyEmeList.add(zhaohuiDailyEmeEntity);
                    break;
                case 4: //智能手表
        //手表
        StringBuffer sbDeviceSql = new StringBuffer("select count(id) total from base_sleep_x1device where patient ='" + oldId + "' and create_time >= '" + stateDate + "' and create_time<='" + endDate + "' ");
        sbDeviceTotal = jdbcTemplate.queryForObject(sbDeviceSql.toString(), Integer.class);
                    ZhaohuiDailyWatchEntity zhaohuiDailyWatchEntity = new ZhaohuiDailyWatchEntity();
                    zhaohuiDailyWatchEntity.setDailyId(zhaohuiDailyEntity.getId().toString());
                    JSONObject response = patientDeviceService.getAqgDeviceInfo2(deviceSn);
                    if (null != response) {
                        //佩戴
                        if (response.containsKey("wear_flag") && response.get("wear_flag") != null) {
                            zhaohuiDailyWatchEntity.setWear(response.getInteger("wear_flag"));
                            //watchObject.put("wearFlagName", 1!=response.getInteger("wear_flag")?"已佩戴":"未佩戴");
                        }
                        //电量
                        if (response.containsKey("remaining_power") && response.get("remaining_power") != null) {
                            zhaohuiDailyWatchEntity.setPower(response.get("remaining_power").toString());
                        } else {
                            zhaohuiDailyWatchEntity.setPower("0");
                        }
                        //在线状态实时获取
                        if (!response.getBoolean("online")) {//设备在线状态
                            zhaohuiDailyWatchEntity.setOnline(0);
                        } else {
                            zhaohuiDailyWatchEntity.setOnline(1);
                        }
                    }
                    //心率
                    sql = " select value1,device_sn,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date from wlyy_patient_health_index " +
                            " where type=5 and device_sn='" + deviceSn + "' and del=1  and record_date >= '" + stateDate + "' and record_date <= '" + endDate + "'  ORDER BY record_date DESC ";
                    List<Map<String, Object>> sqlResult = jdbcTemplate.queryForList(sql);
                    if (sqlResult.size() > 0) {
                        Integer num = sqlResult.stream().mapToInt(obj -> Integer.parseInt(obj.get("value1").toString())).sum();
                        zhaohuiDailyWatchEntity.setHeart((num / sqlResult.size()) + "");
                        zhaohuiDailyWatchEntity.setHearts(JSONObject.toJSONString(sqlResult.get(0)));
                    }
                    //手表步数数据
                    sql = "select steps from base_patient_step where 1=1  and device_sn='" + deviceSn + "'  and create_time >= '" + stateDate + "' and create_time <= '" + endDate + "' order by create_time desc limit 2 ";
                    sqlResult = jdbcTemplate.queryForList(sql);
                    if (sqlResult.size() > 0) {
                        zhaohuiDailyWatchEntity.setSteps(sqlResult.get(0).get("steps").toString());
                    }
                    //检测异常
                    sql = "  select '紧急呼叫' serve_desc  " +
                            " from base_emergency_assistance_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='" + deviceSn + "' and o.status=1 " +
                            " and o.create_time >= '" + stateDate + "' and o.create_time <= '" + endDate + "' " +
                            " UNION " +
                            " select o.serve_desc  " +
                            " from base_security_monitoring_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='" + deviceSn + "' and o.status=1 " +
                            " and o.create_time >= '" + stateDate + "' and o.create_time <= '" + endDate + "' " +
                            " limit 1 ";
                    sqlResult = jdbcTemplate.queryForList(sql);
                    if (sqlResult.size() > 0) {
                        zhaohuiDailyWatchEntity.setServeDesc(sqlResult.get(0).get("serve_desc").toString());
                    } else {
                        zhaohuiDailyWatchEntity.setServeDesc("无");
                    }
                    zhaohuiDailyWatchList.add(zhaohuiDailyWatchEntity);
                    break;
                case 12: //防跌倒视频监测
                    ZhaohuiDailyVideoEntity zhaohuiDailyVideoEntity = new ZhaohuiDailyVideoEntity();
                    sql = " select o.serve_desc  " +
                            "  from base_security_monitoring_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  and o.create_time >= '"+stateDate+"' and o.create_time <= '"+endDate+"' ORDER BY o.create_time desc  limit 1   ";
                    sqlResult = jdbcTemplate.queryForList(sql);
                    if (sqlResult.size()>0){
                        zhaohuiDailyVideoEntity.setServeDesc(sqlResult.get(0).get("serve_desc").toString());
                    }
                    zhaohuiDailyVideoEntity.setDeviceSn(deviceSn);
                    zhaohuiDailyVideoEntity.setDailyId(zhaohuiDailyEntity.getId().toString());
                    zhaohuiDailyVideoEntity.setTime(stateDate + "," + endDate);
                    zhaohuiDailyVideoEntity.setServeDesc("无");
                    zhaohuiDailyVideoList.add(zhaohuiDailyVideoEntity);
                    break;
                case 13: //睡眠带
                    ZhaohuiDailySleepEntity zhaohuiDailySleep = new ZhaohuiDailySleepEntity();
                    zhaohuiDailySleep.setDailyId(zhaohuiDailyEntity.getId().toString());
                    JSONObject sleepDeviceInfo = patientDeviceService.getSleepDeviceInfo(deviceSn);
                    if (sleepDeviceInfo.getBooleanValue("success")) {
                        JSONArray objs = sleepDeviceInfo.getJSONArray("objs");
                        response = objs.getJSONObject(0);
                        if (!response.getBoolean("online")) {//设备在线状态
                            zhaohuiDailySleep.setStatus("0");
                        } else {
                            zhaohuiDailySleep.setStatus("1");
                        }
                    } else {
                        zhaohuiDailySleep.setStatus("0");
                    }
                    sql = "select avghr,avgbr,bucket from base_sleep_device where patient = '" + oldId + "' and device_sn ='" + deviceSn + "'  and create_time >='" + stateDate + "' and  create_time <= '" + endDate + "' order by create_time DESC limit 1";
                    List<Map<String, Object>> sleepList = jdbcTemplate.queryForList(sql);
                    if (sleepList.size() > 0) {
                        zhaohuiDailySleep.setBreathe(sleepList.get(0).get("avgbr").toString());
                        zhaohuiDailySleep.setHeart(sleepList.get(0).get("avghr").toString());
                        //Arrays.stream(sleepList.get(0).get("bucket").toString().split(",")).reduce();
                        String[] split = sleepList.get(0).get("bucket").toString().split(",");
                        split = split[split.length - 1].replace("]", "").split("-");
                        String end = split[split.length - 1].replace("\"", "");
                        String start = split[0].replace("\"", "");
                        zhaohuiDailySleep.setYestGetUpTime(start);
                        zhaohuiDailySleep.setGetUpTime(end);
                    }
                    sql = "SELECT count(id) FROM base_sleep_night_record WHERE patient = '' AND device_sn = '' AND create_time >= '' AND create_time <='' AND `status` = 1";
                    Integer getUpNum = jdbcTemplate.queryForObject(sql, Integer.class);
                    zhaohuiDailySleep.setGetUpNum(getUpNum.toString());
                    sql = "select avghr,avgbr, DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as create_time from base_sleep_device where patient = '" + oldId + "' and device_sn ='" + deviceSn + "'  and create_time >='" + stateDate + "' and  create_time <= '" + endDate + "'  GROUP BY DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') ";
                    List<Map<String, Object>> avghrList = jdbcTemplate.queryForList(sql);
                    zhaohuiDailySleep.setBreatheCurve(JSONObject.toJSONString(avghrList));
                    sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                            " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 and o.create_time >= '"+stateDate+"' and o.create_time <= '"+endDate+"' ORDER BY create_time desc  limit 1 ";
                    sqlResult = jdbcTemplate.queryForList(sql);
                    if (sqlResult.size()>0) {
                        zhaohuiDailySleep.setServeDesc(sqlResult.get(0).get("serve_desc").toString());
                    }else {
                        zhaohuiDailySleep.setServeDesc("无");
                    }
                    zhaohuiDailySleepList.add(zhaohuiDailySleep);
                    break;
            }
        }
        Integer total = smdDeviceTotal+gzDeviceTotal+ygDeviceTotal+qgDeviceTotal+sbDeviceTotal;
        BasePatientDO oldPatient = basePatientDao.findById(oldId);
        BasePatientDO familyPatient = basePatientDao.findById(faminlyId);
        ZhaohuiDailyEntity zhaohuiDailyEntity = new ZhaohuiDailyEntity();
        zhaohuiDailyEntity.setDeviceCode(deviceCode);
        zhaohuiDailyEntity.setGzTotal(gzDeviceTotal.toString());
        zhaohuiDailyEntity.setLiftTotal(liftOlderTotal.toString());
        zhaohuiDailyEntity.setSbTotal(sbDeviceTotal.toString());
        zhaohuiDailyEntity.setSmdTotal(smdDeviceTotal.toString());
        zhaohuiDailyEntity.setYgTotal(ygDeviceTotal.toString());
        zhaohuiDailyEntity.setQgTotal(qgDeviceTotal.toString());
        zhaohuiDailyEntity.setEmeTotal(emeOlderTotal.toString());
        zhaohuiDailyEntity.setSecTotal(secOlderTotal.toString());
        zhaohuiDailyEntity.setCreateTime(new Date());
        zhaohuiDailyEntity.setOldPatient(oldPatient.getId());
        zhaohuiDailyEntity.setOldName(oldPatient.getName());
        zhaohuiDailyEntity.setPatient(familyPatient.getId());
        zhaohuiDailyEntity.setName(familyPatient.getName());
        zhaohuiDailyEntity.setTotal(total.toString());
        String first = "您好,您的亲属"+oldPatient.getName()+"今日照护日报已生成";
       /* String first = "您好,您的亲属"+oldPatient.getName()+"今日照护日报已生成";
        Integer key2 = secOlderTotal+emeOlderTotal;
        messageUtil.putTemplateWxMessage(wxId,"template_zhrb","zhrb",openid,first,null,null,1,null,"",key2+"",liftOlderTotal+"","【推送完成】",DateUtil.getStringDate());
        messageUtil.putTemplateWxMessage(wxId,"template_zhrb","zhrb","123456",first,null,null,1,null,"",key2+"",liftOlderTotal+"","【推送完成】",DateUtil.getStringDate());
*/
        return zhaohuiDailyEntity;
        zhaohuiDailySleepDao.save(zhaohuiDailySleepList);
        zhaohuiDailyWatchDao.save(zhaohuiDailyWatchList);
        zhaohuiDailyVideoDao.save(zhaohuiDailyVideoList);
        zhaohuiDailyEmeDao.save(zhaohuiDailyEmeList);
    }
    public static void main(String[] args) {
        String abc = "[\"12:30-14:09\",\"22:00-04:06\",\"05:09-05:24\"]";
        String[] split = abc.split(",");
        split = split[split.length - 1].replace("]", "").split("-");
        String end = split[split.length - 1].replace("\"", "");
        String start = split[0].replace("\"", "");
        System.out.println(start + " " + end);
    }
}

+ 11 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhDevice/dao/ZhDeviceSyncDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.care.zhDevice.dao;
import com.yihu.jw.care.zhDevice.entity.ZhDeviceSyncDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by wsl on 2022/11/7
 */
public interface ZhDeviceSyncDao extends PagingAndSortingRepository<ZhDeviceSyncDO, String>, JpaSpecificationExecutor<ZhDeviceSyncDO> {
}

+ 574 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhDevice/entity/ZhDeviceSyncDO.java

@ -0,0 +1,574 @@
package com.yihu.jw.care.zhDevice.entity;
import com.yihu.jw.entity.iot.gateway.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by wsl on 2022/11/7
 */
@Entity
@Table(name = "device_sync")
public class ZhDeviceSyncDO extends IdEntity {
    /**
     * 设备名称
     */
    private String deviceName;
    /**
     * 设备sn码
     */
    private String deviceCode;
    /**
     * 版本号
     */
    private String version;
    /**
     * 设备型号
     */
    private String productKey;
    /**
     * mac 地址/imei码
     */
    private String mac;
    /**
     * 设备类型编码
     */
    private String deviceTypeCode;
    /**
     * 设备类型名称
     */
    private String deviceTypeName;
    /**
     * 生产日期
     */
    private String productionDate;
    /**
     * 生产批次
     */
    private String batchProduction;
    /**
     * 设备制造商
     */
    private String manufacturer;
    /**
     * 网关识别码
     */
    private String gateway;
    /**
     * 自定义字段
     */
    private String extendInfo;
    /**
     * 通讯方式
     */
    private Integer linkType;
    /**
     * 通讯卡号
     */
    private String cardNum;
    /**
     * 集成商名称
     */
    private String integrator;
    /**
     * 上线日期
     */
    private String installDate;
    /**
     * 位置信息类别 1-楼宇,2-电梯,3-车库,4-室外
     */
    private String orgCode;
    /**
     * 安装人员
     */
    private String installPerson;
    /**
     * 省编码
     */
    private String provinceCode;
    /**
     * 省
     */
    private String provinceName;
    /**
     * 市编码
     */
    private String cityCode;
    /**
     * 市
     */
    private String cityName;
    /**
     * 区编码
     */
    private String districtCode;
    /**
     * 区
     */
    private String districtName;
    /**
     * 街道编码
     */
    private String streetCode;
    /**
     * 街道名称
     */
    private String streetName;
    /**
     * 位置信息
     */
    private String address;
    /**
     * 地图经度
     */
    private String lng;
    /**
     * 地图纬度
     */
    private String lat;
    /**
     * 数据状态 1-新增/修改,-1-删除
     */
    private Integer state;
    //0-离线,1-在线,3-停用(长期离线)
    private Integer status;
    /**
     * 停用原因
     */
    private Integer disabledType;
    /**
     * 停用原因说明
     */
    private String reason;
    /**
     * 传输间隔
     */
    private Integer transmissionIntercal;
    /**
     * 部门/单位
     */
    private String dept;
    /**
     * 设备管理者
     */
    private String manager;
    /**
     * 设备使用者
     */
    private String user;
    /**
     * 一级场景编码
     */
    private String scene1;
    /**
     * 二级场景编码
     */
    private String scene2;
    /**
     * 三级场景编码
     */
    private String scene3;
    /**
     * 政法委统一地 址库编码
     */
    private String unifiedAddressCode;
    @Column(name = "status")
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Column(name = "product_key")
    public String getProductKey() {
        return productKey;
    }
    public void setProductKey(String productKey) {
        this.productKey = productKey;
    }
    public String getMac() {
        return mac;
    }
    public void setMac(String mac) {
        this.mac = mac;
    }
    @Column(name = "device_name")
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
    @Column(name = "device_code")
    public String getDeviceCode() {
        return deviceCode;
    }
    public void setDeviceCode(String deviceCode) {
        this.deviceCode = deviceCode;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    @Column(name = "device_type_code")
    public String getDeviceTypeCode() {
        return deviceTypeCode;
    }
    public void setDeviceTypeCode(String deviceTypeCode) {
        this.deviceTypeCode = deviceTypeCode;
    }
    @Column(name = "device_type_name")
    public String getDeviceTypeName() {
        return deviceTypeName;
    }
    public void setDeviceTypeName(String deviceTypeName) {
        this.deviceTypeName = deviceTypeName;
    }
    @Column(name = "production_date")
    public String getProductionDate() {
        return productionDate;
    }
    public void setProductionDate(String productionDate) {
        this.productionDate = productionDate;
    }
    @Column(name = "batch_production")
    public String getBatchProduction() {
        return batchProduction;
    }
    public void setBatchProduction(String batchProduction) {
        this.batchProduction = batchProduction;
    }
    @Column(name = "manufacturer" )
    public String getManufacturer() {
        return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }
    public String getGateway() {
        return gateway;
    }
    public void setGateway(String gateway) {
        this.gateway = gateway;
    }
    @Column(name = "extend_info")
    public String getExtendInfo() {
        return extendInfo;
    }
    public void setExtendInfo(String extendInfo) {
        this.extendInfo = extendInfo;
    }
    @Column(name = "link_type")
    public Integer getLinkType() {
        return linkType;
    }
    public void setLinkType(Integer linkType) {
        this.linkType = linkType;
    }
    @Column(name = "card_num")
    public String getCardNum() {
        return cardNum;
    }
    public void setCardNum(String cardNum) {
        this.cardNum = cardNum;
    }
    public String getIntegrator() {
        return integrator;
    }
    public void setIntegrator(String integrator) {
        this.integrator = integrator;
    }
    @Column(name = "install_date")
    public String getInstallDate() {
        return installDate;
    }
    public void setInstallDate(String installDate) {
        this.installDate = installDate;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "install_person")
    public String getInstallPerson() {
        return installPerson;
    }
    public void setInstallPerson(String installPerson) {
        this.installPerson = installPerson;
    }
    @Column(name = "province_code")
    public String getProvinceCode() {
        return provinceCode;
    }
    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }
    @Column(name = "province_name")
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    @Column(name = "city_code")
    public String getCityCode() {
        return cityCode;
    }
    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }
    @Column(name = "city_name")
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    @Column(name = "district_code")
    public String getDistrictCode() {
        return districtCode;
    }
    public void setDistrictCode(String districtCode) {
        this.districtCode = districtCode;
    }
    @Column(name = "district_name")
    public String getDistrictName() {
        return districtName;
    }
    public void setDistrictName(String districtName) {
        this.districtName = districtName;
    }
    @Column(name = "street_code")
    public String getStreetCode() {
        return streetCode;
    }
    public void setStreetCode(String streetCode) {
        this.streetCode = streetCode;
    }
    @Column(name = "street_name")
    public String getStreetName() {
        return streetName;
    }
    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getLng() {
        return lng;
    }
    public void setLng(String lng) {
        this.lng = lng;
    }
    public String getLat() {
        return lat;
    }
    public void setLat(String lat) {
        this.lat = lat;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    @Column(name = "disabled_type")
    public Integer getDisabledType() {
        return disabledType;
    }
    public void setDisabledType(Integer disabledType) {
        this.disabledType = disabledType;
    }
    public String getReason() {
        return reason;
    }
    public void setReason(String reason) {
        this.reason = reason;
    }
    @Column(name = "transmission_intercal")
    public Integer getTransmissionIntercal() {
        return transmissionIntercal;
    }
    public void setTransmissionIntercal(Integer transmissionIntercal) {
        this.transmissionIntercal = transmissionIntercal;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }
    public String getManager() {
        return manager;
    }
    public void setManager(String manager) {
        this.manager = manager;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getScene1() {
        return scene1;
    }
    public void setScene1(String scene1) {
        this.scene1 = scene1;
    }
    public String getScene2() {
        return scene2;
    }
    public void setScene2(String scene2) {
        this.scene2 = scene2;
    }
    public String getScene3() {
        return scene3;
    }
    public void setScene3(String scene3) {
        this.scene3 = scene3;
    }
    @Column(name = "unified_address_code")
    public String getUnifiedAddressCode() {
        return unifiedAddressCode;
    }
    public void setUnifiedAddressCode(String unifiedAddressCode) {
        this.unifiedAddressCode = unifiedAddressCode;
    }
}

+ 45 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/zhylyjkglxt/sql记录.sql

@ -672,4 +672,48 @@ CREATE TABLE `base_infant_activity` (
-- 设备同步
CREATE TABLE `device_sync` (
                               `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
                               `device_name` varchar(50) NOT NULL COMMENT '设备名称',
                               `device_code` varchar(50) NOT NULL COMMENT '设备sn码',
                               `version` varchar(20) DEFAULT NULL COMMENT '版本号',
                               `DEFAULT NULL` varchar(50) DEFAULT NULL COMMENT '设备型号',
                               `DEFAULT NULL` varchar(50) DEFAULT NULL COMMENT 'MAC 地址/IMEI码',
                               `device_type_code` varchar(50) NOT NULL COMMENT '设备类型编码',
                               `device_type_name` varchar(50) NOT NULL COMMENT '设备类型名称',
                               `production_date` varchar(20) DEFAULT NULL COMMENT '生产日期',
                               `batch_production` varchar(20) DEFAULT NULL COMMENT '生产批次',
                               `manufacturer` varchar(15) NOT NULL COMMENT '设备制造商',
                               `gateway` varchar(50) DEFAULT NULL COMMENT '网关识别码',
                               `extend_info` varchar(20) DEFAULT NULL COMMENT '自定义字段',
                               `link_type` INT(2) NOT NULL COMMENT '通讯方式',
                               `card_num` varchar(50) DEFAULT NULL COMMENT '通讯卡号',
                               `integrator` varchar(50) DEFAULT NULL COMMENT '集成商名称',
                               `install_date` varchar(50) DEFAULT NULL COMMENT '上线日期',
                               `org_code` varchar(15) DEFAULT NULL COMMENT '位置信息类别 1-楼宇,2-电梯,3-车库,4-室外',
                               `install_person` varchar(50) DEFAULT NULL COMMENT '安装人员',
                               `province_code` varchar(50) NOT NULL COMMENT '省编码',
                               `province_name` varchar(50) NOT NULL COMMENT '省',
                               `city_code` varchar(50) NOT NULL COMMENT '市编码',
                               `city_name` varchar(50) NOT NULL COMMENT '市',
                               `district_code` varchar(50) NOT NULL COMMENT '区编码',
                               `district_name` varchar(50) NOT NULL COMMENT '区',
                               `street_code` varchar(50) DEFAULT NULL COMMENT '街道编码',
                               `street_name` varchar(50) DEFAULT NULL COMMENT '街道名称',
                               `address` varchar(50) NOT NULL COMMENT '位置信息',
                               `lng` varchar(50) NOT NULL COMMENT '地图经度',
                               `lat` varchar(50) NOT NULL COMMENT '地图纬度',
                               `state` INT(50) NOT NULL COMMENT '数据状态 1-新增/修改,-1-删除',
                               `disabled_type` INT(50) DEFAULT NULL COMMENT '停用原因',
                               `reason` varchar(50) DEFAULT NULL COMMENT '停用原因说明',
                               `transmission_intercal` INT(10) DEFAULT NULL COMMENT '传输间隔',
                               `dept` varchar(20) NOT NULL COMMENT '部门/单位',
                               `manager` varchar(20) DEFAULT NULL COMMENT '设备管理者',
                               `user` varchar(20) DEFAULT NULL COMMENT '设备使用者',
                               `scene1` varchar(20) NOT NULL COMMENT '一级场景编码',
                               `scene2` varchar(20) NOT NULL COMMENT '二级场景编码',
                               `scene3` varchar(20) NOT NULL COMMENT '三级场景编码',
                               `unified_address_code` varchar(20) NOT NULL COMMENT '政法委统一地 址库编码',
                               PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备基础信息同步';

+ 4 - 0
svr/svr-cloud-job/src/main/resources/application.yml

@ -193,6 +193,10 @@ spring:
      jdbcUrl: jdbc:mysql://10.71.83.98:3306/gsq_zhjd_zhylyjkglxt?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
      username: gsq_zhjd_zhylyjkglxt
      password: 'GSQ_YTHPT@2021'
    zhdevicePush:
      jdbcUrl: jdbc:mysql://10.18.44.26:3306/gsqfl?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
      username: gsq_flzz
      password: 'GsFL_634gdfas'
  activemq:
    broker-url: tcp://10.18.43.40:61616
    user: admin

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

@ -55,4 +55,6 @@ DEL_PUSH_MESSAGE_WEATHER_FORECAST_JOB = 0 5 0 * * ?
#\u6BCF\u5929\u665A\u4E0A8\u70B9\u9644\u9001\u671D\u6656\u65E5\u62A5
PUSH_ZHAO_HUI_RI_BAO_JOB = 0 0 20 * * ?
#\u5BB6\u5C5E\u5FAE\u4FE1\u63A8\u9001 \u6BCF\u5929\u65E9\u4E0A\u5341\u70B9
FAMILY_WECHAT_PUSH_DEVICE_JOB = 0 0 10 * * ?
FAMILY_WECHAT_PUSH_DEVICE_JOB = 0 0 10 * * ?
#\u6BCF\u5929 \u7269\u8054\u8BBE\u5907\u5BF9\u63A5 \u63A8\u6B7B
DEVICE_SYNC_JOB = 0 0 23 * * ?

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

@ -507,7 +507,7 @@ public class RehabilitationManageService {
        sql = TransforSqlUtl.wlyy_rehabilitation_plan_detailAll2(sql);
        List<Map<String,Object>> rehabilitationDetailList = jdbcTemplate.queryForList(sql);
        String planPatientSql = " SELECT patient FROM wlyy_specialist.wlyy_patient_rehabilitation_plan WHERE id in ("+planCondition+" )";
        String planPatientSql = " SELECT patient FROM wlyy_specialist.wlyy_patient_rehabilitation_plan INNER JOIN wlyy_sign_family f ON p.patient = f.patient  WHERE id in ("+planCondition+" ) AND `status` = 1 AND expenses_status = 1 AND  doctor = '"+doctorCode+"' ";
        List<Map<String, Object>> patientCodeList = jdbcTemplate.queryForList(planPatientSql);
        List<Map<String, Object>> list = null;