浏览代码

Merge branch 'dev' of xiaoyunquan/wlyy2.0 into dev

liubing 3 年之前
父节点
当前提交
2526d06830

+ 4 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/message/BaseServiceNewsDao.java

@ -1,12 +1,12 @@
package com.yihu.jw.care.dao.message;
import com.yihu.jw.entity.care.device.DevicePatientHealthIndex;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
/**
@ -20,4 +20,7 @@ public interface BaseServiceNewsDao extends PagingAndSortingRepository<BaseServi
    @Query("select a from BaseServiceNews a ")
    List<BaseServiceNews> findNews(Pageable pageRequest);
    @Query("select a from BaseServiceNews a where a.createTime >= ?1 and a.createTime <= ?2 ")
    List<BaseServiceNews> findNewsByTime(Date beginTime, Date endTime, Pageable pageRequest);
}

+ 33 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/OpenStatisticsEndpoint.java

@ -132,6 +132,7 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "服务资源v0.7.0")
    public ObjEnvelop ServiceResources() {
        try {
            //机构和人员总数
            JSONObject result = statisticsService.serviceResources();
            return success(result);
        } catch (Exception e) {
@ -139,6 +140,33 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "getOrgListByPage")
    @ApiOperation(value = "获取机构列表")
    public PageEnvelop getOrgListByPage(@ApiParam(name = "type",value = "类型。1医疗机构,3养老机构,4托育机构,6照料中心") @RequestParam String type,
                                        @ApiParam(name = "page",value = "页码") @RequestParam Integer page,
                                        @ApiParam(name = "pageSize",value = "每页大小") @RequestParam Integer pageSize,
                                        @ApiParam(name = "name",value = "模糊搜索") @RequestParam(name = "name",required = false)String name){
        try {
            return statisticsService.getOrgListByPage(type, page, pageSize,name);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "getUserListByPage")
    @ApiOperation(value = "获取人员列表")
    public PageEnvelop getUserListByPage(@ApiParam(name = "type",value = "类型。1医生,2社工,3教师,4助老员") @RequestParam String type,
                                         @ApiParam(name = "page",value = "页码") @RequestParam Integer page,
                                         @ApiParam(name = "pageSize",value = "每页大小") @RequestParam Integer pageSize,
                                         @ApiParam(name = "name",value = "模糊搜索名字") @RequestParam(name = "name",required = false)String name,
                                         @ApiParam(name = "idCard",value = "模糊搜索身份证号") @RequestParam(name = "idCard",required = false)String idCard){
        try {
            return statisticsService.getUserListByPage(type, page, pageSize, name, idCard);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "realTimeDataNew")
    @ApiOperation(value = "实时数据v0.7.0")
    public ObjEnvelop realTimeDataNew() {
@ -152,10 +180,12 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getAllDynamics")
    @ApiOperation(value = "综合动态v0.7.0")
    public PageEnvelop getAllDynamics(
            @RequestParam(required = true) Integer page, @RequestParam(required = true) Integer size) {
    public PageEnvelop getAllDynamics(@ApiParam @RequestParam Integer page,
                                      @ApiParam @RequestParam Integer size,
                                      @ApiParam(name = "beginTime",value = "开始时间,格式2022-05-19 00:00:00") @RequestParam(name = "beginTime",required = false)String beginTime,
                                      @ApiParam(name = "endTime",value = "结束时间,格式2022-05-19 23:59:59") @RequestParam(name = "endTime",required = false)String endTime) {
        try {
            return statisticsService.getAllDynamics(page, size);
            return statisticsService.getAllDynamics(page, size,beginTime,endTime);
        } catch (Exception e) {
            return failedPageEnvelopException2(e);
        }

+ 75 - 27
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java

@ -13,6 +13,7 @@ import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.care.service.third.PatientInfoPlatFormService;
import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
@ -26,6 +27,8 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * Created by Bing on 2021/6/16.
 * 管理端pc端 居民详情大屏
@ -110,17 +113,32 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "findNews")
    @ApiOperation("服务动态")
    public ListEnvelop findNews(@ApiParam(name="page",value = "页面大小",required = false)
                                @RequestParam(value = "page",required = false,defaultValue = "0")Integer page,
                                @ApiParam(name="size",value = "页面大小",required = true)
                                @RequestParam(value = "size")Integer size){
    public ListEnvelop findNews(@ApiParam(name="page",value = "页面大小",required = false) @RequestParam(value = "page",required = false,defaultValue = "0")Integer page,
                                @ApiParam(name="size",value = "页面大小",required = true) @RequestParam(value = "size")Integer size,
                                @ApiParam(name = "beginTime",value = "开始时间,格式2022-05-19 00:00:00") @RequestParam(name = "beginTime",required = false)String beginTime,
                                @ApiParam(name = "endTime",value = "结束时间,格式2022-05-19 23:59:59") @RequestParam(name = "endTime",required = false)String endTime){
        try {
            return ListEnvelop.getSuccess("查询成功",baseServiceNewsService.findNews(page,size));
            return ListEnvelop.getSuccess("查询成功",baseServiceNewsService.findNews(page,size,beginTime,endTime));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "findNewsByPage")
    @ApiOperation("服务动态分页")
    public PageEnvelop findNewsByPage(@ApiParam(name="page",value = "页面大小") @RequestParam Integer page,
                                      @ApiParam(name="pageSize",value = "页面大小") @RequestParam Integer pageSize,
                                      @ApiParam(name = "beginTime",value = "开始时间,格式2022-05-19 00:00:00") @RequestParam(name = "beginTime",required = false)String beginTime,
                                      @ApiParam(name = "endTime",value = "结束时间,格式2022-05-19 23:59:59") @RequestParam(name = "endTime",required = false)String endTime){
        try {
            List<BaseServiceNews> news = baseServiceNewsService.findNews(page, pageSize,beginTime,endTime);
            Long count = baseServiceNewsService.findNewsCount(beginTime, endTime);
            return PageEnvelop.getSuccessListWithPage("获取成功",news,page,pageSize,count);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "getPatientInfo")
    @ApiOperation("获取居民详情页--弃用")
    public ObjEnvelop getPatientInfo(@ApiParam(name="patient",value = "居民id",required = true)
@ -378,15 +396,13 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getEmergencyWarnOrderListNew")
    @ApiOperation(value = "安防监测列表 v0.7.0")//        疑似离开安全区域+疑似跌倒
    public PageEnvelop getEmergencyWarnOrderListNew(@ApiParam(name="page",value = "page")
                                                 @RequestParam(value = "page") Integer page,
                                                    @ApiParam(name="patient",value = "patient")
                                                    @RequestParam(value = "patient",required = false) String patient,
                                                 @ApiParam(name="pageSize",value = "pageSize")
                                                 @RequestParam(value = "pageSize") Integer pageSize
    ){
    public PageEnvelop getEmergencyWarnOrderListNew(@ApiParam(name="page",value = "page") @RequestParam(value = "page") Integer page,
                                                    @ApiParam(name="patient",value = "patient") @RequestParam(value = "patient",required = false) String patient,
                                                    @ApiParam(name="pageSize",value = "pageSize") @RequestParam(value = "pageSize") Integer pageSize,
                                                    @ApiParam(name = "beginTime",value = "开始时间,格式2022-05-19 00:00:00") @RequestParam(name = "beginTime",required = false)String beginTime,
                                                    @ApiParam(name = "endTime",value = "结束时间,格式2022-05-19 23:59:59") @RequestParam(name = "endTime",required = false)String endTime){
        try {
            return patientInfoPlatFormService.getEmergencyWarnOrderListNew(page,pageSize,patient);
            return patientInfoPlatFormService.getEmergencyWarnOrderListNew(page,pageSize,patient,beginTime,endTime);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
@ -394,15 +410,13 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getEmergencyWarningListNew")
    @ApiOperation(value = "紧急预警列表 v0.7.0")//        发起紧急救助
    public PageEnvelop getEmergencyWarningListNew(@ApiParam(name="page",value = "page")
                                                    @RequestParam(value = "page") Integer page,
                                                  @ApiParam(name="patient",value = "patient")
                                                  @RequestParam(value = "patient",required = false) String patient,
                                                    @ApiParam(name="pageSize",value = "pageSize")
                                                    @RequestParam(value = "pageSize") Integer pageSize
    ){
    public PageEnvelop getEmergencyWarningListNew(@ApiParam(name="page",value = "page") @RequestParam(value = "page") Integer page,
                                                  @ApiParam(name="patient",value = "patient") @RequestParam(value = "patient",required = false) String patient,
                                                  @ApiParam(name="pageSize",value = "pageSize") @RequestParam(value = "pageSize") Integer pageSize,
                                                  @ApiParam(name = "beginTime",value = "开始时间,格式2022-05-19 00:00:00") @RequestParam(name = "beginTime",required = false)String beginTime,
                                                  @ApiParam(name = "endTime",value = "结束时间,格式2022-05-19 23:59:59") @RequestParam(name = "endTime",required = false)String endTime){
        try {
            return patientInfoPlatFormService.getEmergencyWarningListNew(page,pageSize,patient);
            return patientInfoPlatFormService.getEmergencyWarningListNew(page,pageSize,patient,beginTime,endTime);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
@ -410,13 +424,12 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getHealthMonitoringListNew")
    @ApiOperation(value = "健康监测列表 v0.7.0")// 血糖+血压
    public PageEnvelop getHealthMonitoringListNew(@ApiParam(name="page",value = "page")
                                                  @RequestParam(value = "page") Integer page,
                                                  @ApiParam(name="pageSize",value = "pageSize")
                                                  @RequestParam(value = "pageSize") Integer pageSize
    ){
    public PageEnvelop getHealthMonitoringListNew(@ApiParam(name="page",value = "page") @RequestParam(value = "page") Integer page,
                                                  @ApiParam(name="pageSize",value = "pageSize") @RequestParam(value = "pageSize") Integer pageSize,
                                                  @ApiParam(name = "beginTime",value = "开始时间,格式2022-05-19 00:00:00") @RequestParam(name = "beginTime",required = false)String beginTime,
                                                  @ApiParam(name = "endTime",value = "结束时间,格式2022-05-19 23:59:59") @RequestParam(name = "endTime",required = false)String endTime){
        try {
            return patientInfoPlatFormService.getHealthMonitoringListNew(page,pageSize);
            return patientInfoPlatFormService.getHealthMonitoringListNew(page,pageSize,beginTime,endTime);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
@ -459,4 +472,39 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
        }
    }
    @RequestMapping(value = "getWarningCount", method = RequestMethod.GET)
    @ApiOperation(value = "获取预警中的总数")
    public ObjEnvelop getWarningCount(@ApiParam(name="patient",value = "居民id") @RequestParam(value = "patient",required = false) String patient){
        try{
            return patientInfoPlatFormService.getWarningCount(patient);
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @RequestMapping(value = "getWarningList", method = RequestMethod.GET)
    @ApiOperation(value = "获取紧急预警中的列表")
    public PageEnvelop getWarningList(@ApiParam(name="page",value = "页码") @RequestParam(value = "page") Integer page,
                                      @ApiParam(name="pageSize",value = "每页大小") @RequestParam(value = "pageSize") Integer pageSize,
                                      @ApiParam(name="patient",value = "居民id") @RequestParam(value = "patient",required = false) String patient){
        try{
            return patientInfoPlatFormService.getWarningList(page,pageSize,patient);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @RequestMapping(value = "getHealthWarningList", method = RequestMethod.GET)
    @ApiOperation(value = "获取体征预警中的列表")
    public PageEnvelop getHealthWarningList(@ApiParam(name="page",value = "页码") @RequestParam(value = "page") Integer page,
                                            @ApiParam(name="pageSize",value = "每页大小") @RequestParam(value = "pageSize") Integer pageSize,
                                            @ApiParam(name="patient",value = "居民id") @RequestParam(value = "patient",required = false) String patient){
        try{
            return patientInfoPlatFormService.getHealthWarningList(page,pageSize,patient);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
}

+ 24 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java

@ -13,6 +13,7 @@ import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
@ -277,7 +278,7 @@ public class BaseServiceNewsService {
     * @param size
     * @return
     */
    public List<BaseServiceNews> findNews(Integer page,Integer size){
    public List<BaseServiceNews> findNews(Integer page,Integer size,String beginTime,String endTime){
        if (null==page){
            page=0;
        }
@ -292,7 +293,13 @@ public class BaseServiceNewsService {
        List<BaseServiceNews> result = new ArrayList<>();
        List<BaseServiceNews> list = baseServiceNewsDao.findNews(pageRequest);
        List<BaseServiceNews> list =new ArrayList<>();
        if(StringUtils.isBlank(beginTime) && StringUtils.isBlank(endTime)){
            list = baseServiceNewsDao.findNews(pageRequest);
        }else {
            list = baseServiceNewsDao.findNewsByTime(DateUtil.strToDate(beginTime),DateUtil.strToDate(endTime),pageRequest);
        }
        for (BaseServiceNews tmp:list){
            if (jkzlPatients.contains(tmp.getCode())){
                continue;
@ -324,6 +331,21 @@ public class BaseServiceNewsService {
        return result;
    }
    /**
     * 获取综合服务的总数
     * @return
     */
    public Long findNewsCount(String beginTime,String endTime){
        String sql = "SELECT COUNT(*) FROM base_service_news\n" +
                "WHERE code NOT IN \n" +
                "(SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older')";
        String timeSql = " ";
        if(StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)){
            timeSql = " and create_time>='"+beginTime+"' and create_time<='"+endTime+"' ";
        }
        return jdbcTemplate.queryForObject(sql+timeSql, Long.class);
    }
    /**
     * 添加服务动态信息-大屏展示用
     * @param name

+ 97 - 6
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java

@ -329,9 +329,13 @@ public class StatisticsService {
        }
        JSONObject res = new JSONObject();
        //医疗机构
        String medicalInstitutionSql = "SELECT COUNT(1) FROM base_org WHERE (type = 1 OR type = 2) AND del = 1 " + orgFilter;
        //养老机构
        String elderlyCarServiceSql = "SELECT COUNT(1) FROM base_org WHERE type = 3 AND del = 1 and code not in ('zdjsylfwyxgszhfgs') " + orgFilter;
        //托育机构
        String childcareInstitutionsssSql = "SELECT COUNT(1) FROM base_org WHERE type = 4 AND del = 1" + orgFilter;
        //照料中心
        String careCenterNumSql = "SELECT COUNT(1) FROM base_org WHERE type = 6 AND del = 1" + orgFilter;
        //社工和教师注册人数
@ -347,18 +351,22 @@ public class StatisticsService {
        for (Map<String, Object> map : list2) {
            String archive_type = map.get("doctor_level").toString();
            Integer num = Integer.valueOf(map.get("c").toString());
            //医生
            if ("1".equals(archive_type)) {
                doctorNum = num;
                continue;
            }
            //社工
            if ("2".equals(archive_type)) {
                helperNum = num;
                continue;
            }
            //助老员
            if ("4".equals(archive_type)) {
                helper4Num = num;
                continue;
            }
            //教师
            if ("3".equals(archive_type)) {
                teacherNum = num;
            }
@ -367,7 +375,7 @@ public class StatisticsService {
        Integer elderlyCarServiceNum = jdbcTemplate.queryForObject(elderlyCarServiceSql, Integer.class);
        Integer childcareInstitutionsssNum = jdbcTemplate.queryForObject(childcareInstitutionsssSql, Integer.class);
        Integer careCenterNum = jdbcTemplate.queryForObject(careCenterNumSql, Integer.class);
        res.put("medicalInstitutionNum", medicalInstitutionNum);             //医疗结构
        res.put("medicalInstitutionNum", medicalInstitutionNum);             //医疗机构
        res.put("elderlyCarServiceNum", elderlyCarServiceNum);               //养老机构
        res.put("childcareInstitutionsssNum", childcareInstitutionsssNum);   //托育机构
        res.put("careCenterNum", careCenterNum);   //照料中心
@ -378,6 +386,83 @@ public class StatisticsService {
        return res;
    }
    /**
     * 获取机构列表
     * @param type 类型。1医疗机构,3养老机构,4托育机构,6照料中心
     * @param page
     * @param pageSize
     * @param name 名字模糊搜索
     * @return
     */
    public PageEnvelop getOrgListByPage(String type,Integer page,Integer pageSize,String name){
        page = page>0?page-1:0;
        String orgFilter = "";
        String sqlOrg = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
        List<Map<String, Object>> listOrg = jdbcTemplate.queryForList(sqlOrg);
        if (listOrg.size() > 0) {
            String orgCodes = String.valueOf(listOrg.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",", "','");
            orgFilter = " and code not in ('" + orgCodes + "')";
        }
        String typeSql = "";
        if("1".equals(type)){
            typeSql = " and (type = 1 OR type = 2) ";
        }else if("3".equals(type)){
            typeSql = " and type = "+type + " and code not in ('zdjsylfwyxgszhfgs')  ";
        } else {
            typeSql = " and type = "+type;
        }
        if(StringUtils.isNotBlank(name)){
            typeSql = typeSql + " and name like '%"+name+"%' ";
        }
        String sql = "SELECT id,code,name,alias,type,brief,address,photo,intro,mobile FROM base_org WHERE del = 1 "+typeSql+orgFilter;
        String orderSql = " ORDER BY sort limit "+page*pageSize+","+pageSize;
        String countSql = "SELECT count(*) FROM base_org WHERE del = 1 "+typeSql+orgFilter;
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql+orderSql);
        Long count = jdbcTemplate.queryForObject(countSql,Long.class);
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,count);
    }
    /**
     *
     * @param type 类型。1医生,2社工,3教师,4助老员
     * @param page
     * @param pageSize
     * @param name
     * @param idCard
     * @return
     */
    public PageEnvelop getUserListByPage(String type,Integer page,Integer pageSize,String name,String idCard){
        page = page>0?page-1:0;
        String selectSql = "SELECT a.id,a.name,\n" +
                "\tCASE\n" +
                "\t\ta.sex \n" +
                "\t\tWHEN 1 THEN\n" +
                "\t\t'男' \n" +
                "\t\tWHEN 2 THEN\n" +
                "\t\t'女' ELSE a.sex \n" +
                "\tEND AS sex,\n" +
                "\tTIMESTAMPDIFF(YEAR,a.birthday,now()) AS age,\n" +
                "\ta.doctor_level,a.mobile,h.org_name,a.idcard ";
        String countSql = "select count(a.id)";
        String fromSql = " from base_doctor a,base_doctor_hospital h where a.id=h.doctor_code and a.del = '1' and h.del = '1' " +
                " and a.doctor_level is not null and h.org_code not in ( " +
                " SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org'  )  and a.doctor_level="+type+"  ";
        if(StringUtils.isNotBlank(name)){
            fromSql+=" and a.name like '%"+name+"%' ";
        }
        if(StringUtils.isNotBlank(idCard)){
            fromSql+=" and a.idcard like '%"+idCard+"%' ";
        }
        Long count = jdbcTemplate.queryForObject(countSql + fromSql, Long.class);
        fromSql+=" limit "+page*pageSize+","+pageSize;
        List<Map<String, Object>> list = jdbcTemplate.queryForList(selectSql + fromSql);
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,count);
    }
    // v0.7.0实时数据 照护对象、检测设备、紧急救助
    public JSONObject realTimeDataNew() throws Exception {
        JSONObject res = new JSONObject();
@ -482,10 +567,16 @@ public class StatisticsService {
        return res;
    }
    public PageEnvelop getAllDynamics(Integer page, Integer size) {
    public PageEnvelop getAllDynamics(Integer page, Integer size,String beginTime,String endTime) {
        List result = new ArrayList<>();
        Date date = DateUtil.getPreDays(new Date(), -7);
        String dateStr = DateUtil.dateToStrLong(date);
        String dateStr = "";
        if(StringUtils.isBlank(beginTime) && StringUtils.isBlank(endTime)){
            Date date = DateUtil.getPreDays(new Date(), -7);
            dateStr = " and create_time>='" + DateUtil.dateToStrLong(date) +"' ";
        }else {
            dateStr = " and create_time>='" + beginTime+"' and create_time<='"+endTime+"' ";
        }
        String filter = " ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' " +
@ -499,8 +590,8 @@ public class StatisticsService {
            }
        }
        String sql = "select * from base_login_log where login_type<>1 and create_time>='" + dateStr + "' " + filter + " order by create_time desc limit " + (page - 1) * size + "," + size;
        String sqlCount = "select count(id) from base_login_log where login_type<>1 and create_time>='" + dateStr + "' " + filter;
        String sql = "select * from base_login_log where login_type<>1 " + dateStr + filter + " order by create_time desc limit " + (page - 1) * size + "," + size;
        String sqlCount = "select count(id) from base_login_log where login_type<>1 " + dateStr + filter;
        Long count = jdbcTemplate.queryForObject(sqlCount, Long.class);
        List<BaseLoginLogDO> loginLogDOs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseLoginLogDO.class));
        for (BaseLoginLogDO log : loginLogDOs) {

+ 237 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java

@ -29,16 +29,19 @@ import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.LatitudeUtils;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.healthIndex.HealthIndexUtil;
import org.apache.commons.lang.StringUtils;
import org.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -87,6 +90,8 @@ public class PatientInfoPlatFormService {
    private YsDeviceService ysDeviceService;
    @Autowired
    private GpsUtil gpsUtil;
    @Autowired
    private HealthIndexUtil healthIndexUtil;
    /**
@ -477,7 +482,7 @@ public class PatientInfoPlatFormService {
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
    }
    public PageEnvelop getEmergencyWarnOrderListNew(Integer page,Integer pageSize,String patient){
    public PageEnvelop getEmergencyWarnOrderListNew(Integer page,Integer pageSize,String patient,String beginTime,String endTime){
        page = page>0?page-1:0;
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
@ -490,10 +495,13 @@ public class PatientInfoPlatFormService {
        String sql = " select  '22' as 'OrderType',p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient,p.name,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time," +
                "ord.`status`,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex,TIMESTAMPDIFF(YEAR,p.birthday,now()) as age \n" +
                "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id " ;
                "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id where 1=1 " ;
        if (StringUtils.isNotBlank(patient)){
            sql +=" and ord.patient='"+patient+"' ";
        }
        if(StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)){
            sql +=" and ord.create_time>='"+beginTime+"' and ord.create_time<='"+endTime+"' ";
        }
        sql+= filter +" order by create_time desc ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
@ -639,7 +647,7 @@ public class PatientInfoPlatFormService {
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
    }
    public PageEnvelop getEmergencyWarningListNew(Integer page,Integer pageSize,String patient){
    public PageEnvelop getEmergencyWarningListNew(Integer page,Integer pageSize,String patient,String beginTime,String endTime){
        page = page>0?page-1:0;
        String filter=" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
@ -657,6 +665,9 @@ public class PatientInfoPlatFormService {
        if (StringUtils.isNotBlank(patient)){
            filter +=" and ord.patient='"+patient+"' ";
        }
        if(StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)){
            filter += " and ord.create_time>='"+beginTime+"' and ord.create_time<='"+endTime+"' ";
        }
        sql +=  filter + "  order by create_time desc";
        sqlCount  +=filter;
@ -666,7 +677,7 @@ public class PatientInfoPlatFormService {
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
    }
    public PageEnvelop getHealthMonitoringListNew(Integer page,Integer pageSize){
    public PageEnvelop getHealthMonitoringListNew(Integer page,Integer pageSize,String beginTime,String endTime){
        page = page>0?page-1:0;
        String filter=" ";
@ -677,9 +688,12 @@ public class PatientInfoPlatFormService {
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and idx.user not in ('"+orgCodes+"') ";
        }
        if(StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)){
            filter+=" and idx.czrq>='"+beginTime+"' and idx.czrq<='"+endTime+"' ";
        }
        String sql = " SELECT idx.id,idx.user,idx.`name`,p.archive_type archiveType,p.residential_area residentialArea,'健康监测' as serve_desc, " +
                "idx.czrq,value1,value2,value3,value4,value5,value6,value7,type FROM wlyy_patient_health_index idx " +
                "idx.czrq,value1,value2,value3,value4,value5,value6,value7,type,DATE_FORMAT(idx.czrq,'%Y-%m-%d %H:%i:%S') createTime FROM wlyy_patient_health_index idx " +
                " INNER JOIN base_patient p on idx.user = p.id and p.del=1\n" +
                " WHERE idx.del = 1 AND idx.type < 3 "+filter+" ORDER BY idx.czrq desc ";
        String countSql = "select count(id) from ("+sql+")A ";
@ -1039,4 +1053,222 @@ public class PatientInfoPlatFormService {
        return detailInfo;
    }
    /**
     * 获取紧急预警和一般预警中的总数
     * @param patient
     * @return
     */
    public ObjEnvelop getWarningCount(String patient){
        String filter1=" ";
        String filter2=" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0&&StringUtils.isBlank(patient)){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter1 = " and ord.patient not in ('"+orgCodes+"') ";
            filter2 = " and idx.user not in ('"+orgCodes+"') ";
        }
        //查紧急预警
        Long warningCount = this.getWarningCountByEmergencyAndSecurity(filter1);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("warningCount",warningCount);
        //查一般预警(体征预警)
        Long healthCount = this.getWarningCountByHealth(filter2);
        map.put("healthCount",healthCount);
        map.put("total",warningCount+healthCount);
        return ObjEnvelop.getSuccess("获取成功",map);
    }
    /**
     * 获取紧急预警中的列表
     * @param page
     * @param pageSize
     * @param patient
     * @return
     */
    public PageEnvelop getWarningList(Integer page,Integer pageSize,String patient){
        page = page>0?page-1:0;
        String filter=" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0&&StringUtils.isBlank(patient)){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and ord.patient not in ('"+orgCodes+"') ";
        }
        String sql1 = "SELECT\n" +
                "\t'20' AS OrderType,\n" +
                "\tp.archive_type archiveType,\n" +
                "\tp.residential_area residentialArea,\n" +
                "\tord.id,\n" +
                "\tord.patient,\n" +
                "\tp.NAME,\n" +
                "\t'紧急呼叫' AS serve_desc,\n" +
                "\tDATE_FORMAT( ord.create_time, '%Y-%m-%d %H:%i:%S' ) createTime,\n" +
                "\tord.`status`,\n" +
                "CASE\n" +
                "\t\tp.sex \n" +
                "\t\tWHEN 1 THEN\n" +
                "\t\t'男' \n" +
                "\t\tWHEN 2 THEN\n" +
                "\t\t'女' ELSE p.sex \n" +
                "\tEND AS sex,\n" +
                "\tTIMESTAMPDIFF(YEAR,p.birthday,now()) AS age \n" +
                "FROM\n" +
                "\tbase_emergency_assistance_order ord\n" +
                "\tINNER JOIN base_patient p ON ord.patient = p.id \n" +
                "\tAND p.del = 1 \n" +
                "WHERE\n" +
                "\tord.STATUS = 1 "+filter;
        String sql2 = "SELECT\n" +
                "\t\t'22' AS 'OrderType',\n" +
                "\t\tp.archive_type archiveType,\n" +
                "\t\tp.residential_area residentialArea,\n" +
                "\t\tord.id,\n" +
                "\t\tord.patient,\n" +
                "\t\tp.NAME,\n" +
                "\t\tord.serve_desc,\n" +
                "\t\tDATE_FORMAT( ord.create_time, '%Y-%m-%d %H:%i:%S' ) createTime,\n" +
                "\t\tord.`status`,\n" +
                "\tCASE\n" +
                "\t\t\tp.sex \n" +
                "\t\t\tWHEN 1 THEN\n" +
                "\t\t\t'男' \n" +
                "\t\t\tWHEN 2 THEN\n" +
                "\t\t\t'女' ELSE p.sex \n" +
                "\t\tEND AS sex,\n" +
                "\t\tTIMESTAMPDIFF(YEAR,p.birthday,now()) AS age \n" +
                "\tFROM\n" +
                "\t\tbase_security_monitoring_order ord\n" +
                "\t\tINNER JOIN base_patient p ON ord.patient = p.id \n" +
                "\t\twhere ord.status = 1"+filter;
        String sql = "select * FROM (" +
                "\t"+sql1+" UNION "+sql2 +
                "\t) t order by t.createTime desc limit "+page*pageSize+","+pageSize;
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,this.getWarningCountByEmergencyAndSecurity(filter));
    }
    /**
     * 获取体征预警中的列表
     * @param page
     * @param pageSize
     * @param patient
     * @return
     */
    public PageEnvelop getHealthWarningList(Integer page,Integer pageSize,String patient){
        page = page>0?page-1:0;
        String filter=" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or 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 idx.user not in ('"+orgCodes+"') ";
        }
        String sql = "SELECT\n" +
                "\t\tidx.id,\n" +
                "\t\tidx.user,\n" +
                "\t\tidx.`name`,idx.type,\n" +
                "\t\tp.archive_type archiveType,\n" +
                "\t\tp.residential_area residentialArea,\n" +
                "\t\t'健康监测' AS serve_desc,\n" +
                "\tTIMESTAMPDIFF(YEAR,p.birthday,now()) AS age, \n" +
                "\t\tidx.czrq,\n" +
                "\t\tvalue1,\n" +
                "\t\tvalue2,\n" +
                "\t\tvalue3,\n" +
                "\t\tvalue4,\n" +
                "\t\tvalue5,\n" +
                "\t\tvalue6,\n" +
                "\t\tvalue7,\n" +
                "\t\ttype,DATE_FORMAT( idx.czrq, '%Y-%m-%d %H:%i:%S' ) createTime, \n" +
                "\tCASE\n" +
                "\t\t\tp.sex \n" +
                "\t\t\tWHEN 1 THEN\n" +
                "\t\t\t'男' \n" +
                "\t\t\tWHEN 2 THEN\n" +
                "\t\t\t'女' ELSE p.sex \n" +
                "\t\tEND AS sex\n" +
                "\tFROM\n" +
                "\t\twlyy_patient_health_index idx\n" +
                "\t\tINNER JOIN base_patient p ON idx.USER = p.id AND p.del = 1 \n" +
                "\tWHERE\n" +
                "\t\tidx.del = 1 \n" +
                "\t\tand idx.status=1 \n" +
                "\t\tAND idx.type < 3 "+filter+" ORDER By idx.czrq DESC limit "+page*pageSize+","+pageSize;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        if(!ObjectUtils.isEmpty(list)){
            //查体征预警信息,偏高偏低
            for (Map<String, Object> map : list) {
                com.alibaba.fastjson.JSONArray info = healthIndexUtil.verifyHealthIndex(
                        Integer.parseInt(map.get("type").toString()),
                        null==map.get("value1")?"":map.get("value1").toString(),
                        null==map.get("value2")?"":map.get("value2").toString(),
                        null==map.get("value3")?"":map.get("value3").toString());
                //去除正常的值
                Iterator it = info.iterator();
                while (it.hasNext()){
                    JSONObject next = (JSONObject)it.next();
                    if("0".equals(next.getString("error"))){
                        it.remove();
                    }
                }
                map.put("info",info);
            }
        }
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,this.getWarningCountByHealth(filter));
    }
    /**
     * 获取紧急呼救和安防工单正在预警中的总数
     * @param filter
     * @return
     */
    Long getWarningCountByEmergencyAndSecurity(String filter){
        //紧急呼救
        String emergencySql = "SELECT count( ord.id ) warningCount \n" +
                "\tFROM\n" +
                "\t\tbase_emergency_assistance_order ord\n" +
                "\t\tINNER JOIN base_patient p ON ord.patient = p.id and p.del=1  \n" +
                "\tWHERE\n" +
                "\t\t ord.STATUS = 1"+filter;
        //安防监护
        String securitySql = "SELECT count( ord.id ) warningCount \n" +
                "\tFROM\n" +
                "\t\tbase_security_monitoring_order ord\n" +
                "\t\tINNER JOIN base_patient p ON ord.patient = p.id and p.del=1 \n" +
                "\t\tAND ord.STATUS = 1"+filter;
        String sqlCount = "SELECT\n" +
                "\tsum( warningCount ) warningCount\n" +
                "FROM\n" +
                "\t( " + emergencySql + " UNION ALL " + securitySql +
                ") t";
        return jdbcTemplate.queryForObject(sqlCount, Long.class);
    }
    /**
     * 获取一般体征预警中的总数
     * @param filter
     * @return
     */
    Long getWarningCountByHealth(String filter){
        String healthSql = "SELECT\n" +
                "\tcount( idx.id ) \n" +
                "FROM\n" +
                "\twlyy_patient_health_index idx\n" +
                "\tINNER JOIN base_patient p ON idx.USER = p.id AND p.del = 1 \n" +
                "WHERE\n" +
                "\tidx.status = 1 \n" +
                "\tAND idx.del = 1 \n" +
                "\tAND idx.type < 3 \n" + filter;
        return jdbcTemplate.queryForObject(healthSql, Long.class);
    }
}