Kaynağa Gözat

Merge remote-tracking branch 'origin/dev' into dev

hxm 3 yıl önce
ebeveyn
işleme
2d662d6015
26 değiştirilmiş dosya ile 1321 ekleme ve 120 silme
  1. 3 0
      business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorDao.java
  2. 13 0
      common/common-entity/sql记录
  3. 57 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/activity/ChildActivityRegistrationDO.java
  4. 20 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/activity/ChildActivityRegistrationDao.java
  5. 1 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ArchiveDao.java
  6. 76 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/activity/ChildActivityEndpoint.java
  7. 20 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/PatientCourseEndpoint.java
  8. 12 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  9. 15 11
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java
  10. 95 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/activity/ChildActivityRegistrationService.java
  11. 97 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  12. 15 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/course/CourseService.java
  13. 153 7
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  14. 5 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  15. 31 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java
  16. 7 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java
  17. 135 16
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  18. 39 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  19. 58 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java
  20. 176 6
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java
  21. 36 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/CountDistance.java
  22. 55 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/Point.java
  23. 25 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/org/DeviceDetailDao.java
  24. 87 29
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/order/EmeWarnOrderDayJob.java
  25. 87 29
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/order/EmeWarnOrderJob.java
  26. 3 0
      svr/svr-cloud-transfor/readme.MD

+ 3 - 0
business/base-service/src/main/java/com/yihu/jw/doctor/dao/BaseDoctorDao.java

@ -53,4 +53,7 @@ public interface BaseDoctorDao extends PagingAndSortingRepository<BaseDoctorDO,
    @Query("from BaseDoctorDO d where d.idcard = ?1 AND d.del ='1'")
    @Query("from BaseDoctorDO d where d.idcard = ?1 AND d.del ='1'")
    BaseDoctorDO findByIdcardAndId(String idcard);
    BaseDoctorDO findByIdcardAndId(String idcard);
    @Query("SELECT d from BaseDoctorDO d,BaseTeamMemberDO te where d.id = te.doctorCode and te.del='1' AND d.del ='1' and te.teamCode in (?1) ")
    List<BaseDoctorDO> findDoctorsByTeam(List<String> teams);
}
}

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

@ -1553,3 +1553,16 @@ CREATE TABLE `base_yunxing_channel` (
-- 2021-10-14 ysj
-- 2021-10-14 ysj
ALTER table wlyy_devices add column collect_num int(20) default null COMMENT '采集数据次数';
ALTER table wlyy_devices add column collect_num int(20) default null COMMENT '采集数据次数';
ALTER table wlyy_devices add column abnormal_num int(20) default null COMMENT '异常指标数据次数';
ALTER table wlyy_devices add column abnormal_num int(20) default null COMMENT '异常指标数据次数';
-- 2021-10-16 ysj
CREATE TABLE `base_child_activity_registration` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL,
  `patient_name` varchar(50) DEFAULT NULL,
  `activity_type` varchar(2) DEFAULT NULL COMMENT '活动类型',
  `org_code` varchar(50) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='幼儿活动报名表';

+ 57 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/activity/ChildActivityRegistrationDO.java

@ -0,0 +1,57 @@
package com.yihu.jw.entity.care.activity;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 幼儿活动报名表
 * Created by yeshijie on 2021/10/16.
 */
@Entity
@Table(name="base_child_activity_registration")
public class ChildActivityRegistrationDO extends UuidIdentityEntityWithCreateTime {
    private String patient;
    private String patientName;
    private String activityType;
    private String orgCode;
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "patient_name")
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    @Column(name = "activity_type")
    public String getActivityType() {
        return activityType;
    }
    public void setActivityType(String activityType) {
        this.activityType = activityType;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
}

+ 20 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/activity/ChildActivityRegistrationDao.java

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.activity;
import com.yihu.jw.entity.care.activity.ChildActivityRegistrationDO;
import com.yihu.jw.entity.care.consult.BaseYunxingChannelDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2021/10/16.
 */
public interface ChildActivityRegistrationDao extends PagingAndSortingRepository<ChildActivityRegistrationDO,String>,
        JpaSpecificationExecutor<ChildActivityRegistrationDO> {
    @Query("select a from ChildActivityRegistrationDO a where a.patient = ?1 and a.activityType = ?2 ")
    ChildActivityRegistrationDO findByPatientAndActivityType(String patient,String activityType);
    @Query("select a from ChildActivityRegistrationDO a where a.patient = ?1 ")
    ChildActivityRegistrationDO findByPatient(String patient);
}

+ 1 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ArchiveDao.java

@ -3,6 +3,7 @@ package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import javafx.scene.shape.Arc;
import javafx.scene.shape.Arc;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.PagingAndSortingRepository;

+ 76 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/activity/ChildActivityEndpoint.java

@ -0,0 +1,76 @@
package com.yihu.jw.care.endpoint.activity;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.service.activity.ChildActivityRegistrationService;
import com.yihu.jw.entity.care.activity.ChildActivityRegistrationDO;
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.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * Created by yeshijie on 2021/10/16.
 */
@RestController
@RequestMapping("childActivity" )
@Api(tags = "幼儿活动", description = "幼儿活动")
public class ChildActivityEndpoint  extends EnvelopRestEndpoint {
    @Autowired
    private ChildActivityRegistrationService activityRegistrationService;
    @GetMapping(value = "childActivityRegistrationList")
    @ApiOperation(value = "活动报名列表查询")
    public PageEnvelop childActivityRegistrationList(
            @ApiParam(name = "patient", value = "居民code") @RequestParam(value = "patient", required = false) String patient,
            @ApiParam(name = "activityType", value = "活动类型 1小鬼来当家 2秋游去 3我喜欢我自己 4乡村音乐") @RequestParam(value = "activityType", required = false) String status,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size) {
        try{
            return activityRegistrationService.childActivityRegistrationList(patient, status, page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "isActivityRegist")
    @ApiOperation(value = "活动报名查询")
    public ObjEnvelop isActivityRegist(
            @ApiParam(name = "patient", value = "居民code") @RequestParam(value = "patient", required = true) String patient) {
        try{
            ChildActivityRegistrationDO registrationDO = activityRegistrationService.isActivityRegist(patient);
            if(registrationDO==null){
                return ObjEnvelop.getSuccess("查询成功",0);
            }else {
                return ObjEnvelop.getSuccess("查询成功",1);
            }
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @PostMapping("applyActivity")
    @ApiOperation(value = "在线报名-根据教师展示")
    public ObjEnvelop applyActivity(
            @ApiParam(name = "patient", value = "居民id")
            @RequestParam(value = "patient", required = true) String patient,
            @ApiParam(name = "activityType", value = "活动类型 1小鬼来当家 2秋游去 3我喜欢我自己 4乡村音乐")
            @RequestParam(value = "activityType", required = true) String activityType
    ) {
        try {
            JSONObject result = activityRegistrationService.applyActivity(patient,activityType);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg),-1);
            }
            return success(result.get("resultMsg"));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
}

+ 20 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/course/PatientCourseEndpoint.java

@ -131,8 +131,26 @@ public class PatientCourseEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "获取教师")
    @ApiOperation(value = "获取教师")
    public ListEnvelop findDoctorByOrg (
    public ListEnvelop findDoctorByOrg (
            @ApiParam(name = "orgCode", value = "机构code")
            @ApiParam(name = "orgCode", value = "机构code")
            @RequestParam(value = "orgCode", required = false) String orgCode) throws Exception {
        return success(courseService.findDoctorByOrg(orgCode));
            @RequestParam(value = "orgCode", required = false) String orgCode){
        try {
            return success(courseService.findDoctorByOrg(orgCode));
        }catch (Exception e){
            e.printStackTrace();
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "findDoctorByOrgLimit")
    @ApiOperation(value = "查找机构的老师 奶牛城堡时限制教师")
    public ListEnvelop findDoctorByOrgLimit (
            @ApiParam(name = "orgCode", value = "机构code")
            @RequestParam(value = "orgCode", required = false) String orgCode) {
        try {
            return success(courseService.findDoctorByOrgLimit(orgCode));
        }catch (Exception e){
            e.printStackTrace();
            return failedListEnvelopException2(e);
        }
    }
    }
    @GetMapping("getCourseByteacher")
    @GetMapping("getCourseByteacher")

+ 12 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java

@ -98,8 +98,8 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getDeviceByCondition")
    @GetMapping(value = "getDeviceByCondition")
    @ApiOperation(value = "地图展示,根据不同的条件展示不同的数据")
    @ApiOperation(value = "地图展示,根据不同的条件展示不同的数据")
    public ListEnvelop<Object> getDeviceByCondition(            @ApiParam(name="categoryCode",value = "categoryCode") @RequestParam(required = false) String categoryCode,
                                                                @ApiParam(name="patient",value = "patient") @RequestParam(required = false) String patient){
    public ListEnvelop<Object> getDeviceByCondition(@ApiParam(name="categoryCode",value = "categoryCode") @RequestParam(required = false) String categoryCode,
                                                    @ApiParam(name="patient",value = "patient") @RequestParam(required = false) String patient){
        try {
        try {
            JSONArray object = platformService.getDeviceByCondition(categoryCode,patient);
            JSONArray object = platformService.getDeviceByCondition(categoryCode,patient);
            return success("查询成功",200,object);
            return success("查询成功",200,object);
@ -108,6 +108,16 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
        }
    }
    }
    @GetMapping("getOrderListWarning")
    @ApiOperation(value = "物联网大屏预警工单列表坐标获取")
    public ListEnvelop getOrderListWarning(){
        try {
            return ListEnvelop.getSuccess("success",platformService.getOrderListWarning());
        }catch (Exception e){
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "getDeviceInfo")
    @GetMapping(value = "getDeviceInfo")
    @ApiOperation(value = "地图展示,根据设备sn码查询详情")
    @ApiOperation(value = "地图展示,根据设备sn码查询详情")
    public ObjEnvelop getDeviceInfo(            @ApiParam(name="deviceSn",value = "deviceSn") @RequestParam(required = true) String deviceSn){
    public ObjEnvelop getDeviceInfo(            @ApiParam(name="deviceSn",value = "deviceSn") @RequestParam(required = true) String deviceSn){

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

@ -165,15 +165,15 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getHealthIndexInfo")
    @GetMapping(value = "getHealthIndexInfo")
    @ApiOperation("获取居民体征信息")
    @ApiOperation("获取居民体征信息")
    public String getHealthIndexInfo(@ApiParam(name="patient",value="患者代码",defaultValue = "eb0b478fbe9245428ecf63cd7517206f")
    public String getHealthIndexInfo(@ApiParam(name="patient",value="患者代码",defaultValue = "eb0b478fbe9245428ecf63cd7517206f")
                                             @RequestParam(value="patient",required = true) String patient,
                                      @ApiParam(name="type",value="指标类型",defaultValue = "1")
                                             @RequestParam(value="type",required = true) int type,
                                      @ApiParam(name="gi_type",value="就餐类型",defaultValue = "0")
                                             @RequestParam(value = "gi_type",required = false) int gi_type,
                                      @ApiParam(name="begin",value="开始时间",defaultValue = "2017-05-22 00:00:00")
                                             @RequestParam(value="begin",required = true) String begin,
                                      @ApiParam(name="end",value="结束时间",defaultValue = "2017-06-02 00:00:00")
                                             @RequestParam(value="end",required = true) String end){
                                     @RequestParam(value="patient",required = true) String patient,
                                     @ApiParam(name="type",value="指标类型",defaultValue = "1")
                                     @RequestParam(value="type",required = true) Integer type,
                                     @ApiParam(name="gi_type",value="就餐类型",defaultValue = "0")
                                     @RequestParam(value = "gi_type",required = false) Integer gi_type,
                                     @ApiParam(name="begin",value="开始时间",defaultValue = "2017-05-22 00:00:00")
                                     @RequestParam(value="begin",required = true) String begin,
                                     @ApiParam(name="end",value="结束时间",defaultValue = "2017-06-02 00:00:00")
                                     @RequestParam(value="end",required = true) String end){
        try {
        try {
            return baseController.write (200,"查询成功","data",patientInfoPlatFormService.getHealthIndexInfo(patient,type,gi_type,begin,end));
            return baseController.write (200,"查询成功","data",patientInfoPlatFormService.getHealthIndexInfo(patient,type,gi_type,begin,end));
        }catch (Exception e){
        }catch (Exception e){
@ -289,11 +289,13 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "安防监测列表 v0.7.0")//        疑似离开安全区域+疑似跌倒
    @ApiOperation(value = "安防监测列表 v0.7.0")//        疑似离开安全区域+疑似跌倒
    public PageEnvelop getEmergencyWarnOrderListNew(@ApiParam(name="page",value = "page")
    public PageEnvelop getEmergencyWarnOrderListNew(@ApiParam(name="page",value = "page")
                                                 @RequestParam(value = "page") Integer page,
                                                 @RequestParam(value = "page") Integer page,
                                                    @ApiParam(name="patient",value = "patient")
                                                    @RequestParam(value = "patient",required = false) String patient,
                                                 @ApiParam(name="pageSize",value = "pageSize")
                                                 @ApiParam(name="pageSize",value = "pageSize")
                                                 @RequestParam(value = "pageSize") Integer pageSize
                                                 @RequestParam(value = "pageSize") Integer pageSize
    ){
    ){
        try {
        try {
            return patientInfoPlatFormService.getEmergencyWarnOrderListNew(page,pageSize);
            return patientInfoPlatFormService.getEmergencyWarnOrderListNew(page,pageSize,patient);
        }catch (Exception e){
        }catch (Exception e){
            return failedPageEnvelopException2(e);
            return failedPageEnvelopException2(e);
        }
        }
@ -303,11 +305,13 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "紧急预警列表 v0.7.0")//        发起紧急救助
    @ApiOperation(value = "紧急预警列表 v0.7.0")//        发起紧急救助
    public PageEnvelop getEmergencyWarningListNew(@ApiParam(name="page",value = "page")
    public PageEnvelop getEmergencyWarningListNew(@ApiParam(name="page",value = "page")
                                                    @RequestParam(value = "page") Integer page,
                                                    @RequestParam(value = "page") Integer page,
                                                  @ApiParam(name="patient",value = "patient")
                                                  @RequestParam(value = "patient",required = false) String patient,
                                                    @ApiParam(name="pageSize",value = "pageSize")
                                                    @ApiParam(name="pageSize",value = "pageSize")
                                                    @RequestParam(value = "pageSize") Integer pageSize
                                                    @RequestParam(value = "pageSize") Integer pageSize
    ){
    ){
        try {
        try {
            return patientInfoPlatFormService.getEmergencyWarningListNew(page,pageSize);
            return patientInfoPlatFormService.getEmergencyWarningListNew(page,pageSize,patient);
        }catch (Exception e){
        }catch (Exception e){
            return failedPageEnvelopException2(e);
            return failedPageEnvelopException2(e);
        }
        }

+ 95 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/activity/ChildActivityRegistrationService.java

@ -0,0 +1,95 @@
package com.yihu.jw.care.service.activity;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.activity.ChildActivityRegistrationDao;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.activity.ChildActivityRegistrationDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/10/16.
 */
@Service
public class ChildActivityRegistrationService {
    @Autowired
    private ChildActivityRegistrationDao childActivityRegistrationDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 幼儿申请活动
     * @param patient
     * @param activityType
     * @return
     */
    public JSONObject applyActivity(String patient, String activityType){
        JSONObject result = new JSONObject();
        ChildActivityRegistrationDO activityRegistrationDO = childActivityRegistrationDao.findByPatient(patient);
        if(activityRegistrationDO != null){
            String failMsg = "您已报名过改类型的活动,请勿重复报名!";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg, failMsg);
            return result;
        }
        BasePatientDO patientDO = patientDao.findById(patient);
        activityRegistrationDO = new ChildActivityRegistrationDO();
        activityRegistrationDO.setActivityType(activityType);
        activityRegistrationDO.setPatient(patient);
        activityRegistrationDO.setPatientName(patientDO.getName());
        childActivityRegistrationDao.save(activityRegistrationDO);
        result.put(ResponseContant.resultFlag, ResponseContant.success);
        result.put(ResponseContant.resultMsg, activityRegistrationDO);
        return result;
    }
    /**
     * 活动报名列表查询
     * @param patient
     * @param activityType
     * @param page
     * @param size
     */
    public PageEnvelop childActivityRegistrationList(String patient,String activityType, int page, int size){
        String sql = "SELECT a.activity_type activityType,a.patient,p.name,p.sex,p.idcard,p.photo from base_child_activity_registration a,base_patient p " +
                "WHERE a.patient = p.id";
        String sqlCount = "select count(a.id) from base_child_activity_registration a,base_patient p WHERE a.patient = p.id  ";
        page = page>0?page-1:0;
        String limit = " order by a.create_time desc limit "+page*size+","+size;
        String filter = "";
        if(StringUtils.isNotBlank(patient)){
            filter += " and a.pateint = '"+patient+"' ";
        }
        if(StringUtils.isNotBlank(activityType)){
            filter += " and a.activity_type = '"+activityType+"' ";
        }
        Long count = jdbcTemplate.queryForObject(sqlCount+filter,Long.class);
        List<Map<String,Object>> result = jdbcTemplate.queryForList(sql+filter);
        for (Map<String,Object> map:result){
            String idcard = map.get("idcard")+"";
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
        }
        return PageEnvelop.getSuccessListWithPage("查询成功",result,page,size,count);
    }
    public ChildActivityRegistrationDO isActivityRegist(String patient){
        return childActivityRegistrationDao.findByPatient(patient);
    }
}

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

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.care.dao.assistance.EmergencyAssistanceDao;
import com.yihu.jw.care.dao.assistance.EmergencyAssistanceDao;
import com.yihu.jw.care.dao.device.BaseYxDeviceIndexDao;
import com.yihu.jw.care.dao.device.BaseYxDeviceIndexDao;
import com.yihu.jw.care.dao.device.DeviceDetailDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.dao.security.EmergencyWarnConclusionDao;
import com.yihu.jw.care.dao.security.EmergencyWarnConclusionDao;
@ -32,6 +33,7 @@ import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
import com.yihu.jw.entity.care.device.BaseYxDeviceIndex;
import com.yihu.jw.entity.care.device.BaseYxDeviceIndex;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnConclusionDO;
import com.yihu.jw.entity.care.securitymonitoring.EmergencyWarnConclusionDO;
@ -125,6 +127,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    @Autowired
    @Autowired
    private BaseOrgDao orgDao;
    private BaseOrgDao orgDao;
    private DeviceDetailDao deviceDetailDao;
    /**
    /**
     * 获取百度天气
     * 获取百度天气
     */
     */
@ -247,6 +251,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        }
        }
        //推送socket给医生
        //推送socket给医生
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = assistanceDO.getServeLat()+","+assistanceDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",assistanceDO.getSessionId());
        message.put("session_id",assistanceDO.getSessionId());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("content_notice",assistanceDO.getPatientName()+" 发起紧急救助!");
        message.put("content_notice",assistanceDO.getPatientName()+" 发起紧急救助!");
@ -256,6 +262,28 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        message.put("order_id",assistanceDO.getId());
        message.put("order_id",assistanceDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc","紧急呼叫");
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=assistanceDO.getDeviceSn()){
            String device_sn = assistanceDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = assistanceDO.getOrgCode();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        for (BaseDoctorDO doctorDO:doctorDOS){
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
@ -774,6 +802,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        }
        }
        //工单完成 给pc管理端推送完成信息
        //工单完成 给pc管理端推送完成信息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = assistanceDO.getServeLat()+","+assistanceDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",assistanceDO.getSessionId());
        message.put("session_id",assistanceDO.getSessionId());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("content_notice",assistanceDO.getPatientName()+" 完成紧急救助!");
        message.put("content_notice",assistanceDO.getPatientName()+" 完成紧急救助!");
@ -783,6 +813,27 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        message.put("order_id",assistanceDO.getId());
        message.put("order_id",assistanceDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc","紧急呼叫");
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=assistanceDO.getDeviceSn()){
            String device_sn = assistanceDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = assistanceDO.getOrgCode();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        emergencyAssistanceDao.save(assistanceDO);
        emergencyAssistanceDao.save(assistanceDO);
        String failMsg = "当前救助工单已取消";
        String failMsg = "当前救助工单已取消";
@ -842,6 +893,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        }
        }
        //工单完成 给pc管理端推送完成信息
        //工单完成 给pc管理端推送完成信息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = assistanceDO.getServeLat()+","+assistanceDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",assistanceDO.getSessionId());
        message.put("session_id",assistanceDO.getSessionId());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("content_notice",assistanceDO.getPatientName()+" 完成紧急救助!");
        message.put("content_notice",assistanceDO.getPatientName()+" 完成紧急救助!");
@ -851,6 +904,27 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        message.put("order_id",assistanceDO.getId());
        message.put("order_id",assistanceDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc","紧急呼叫");
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=assistanceDO.getDeviceSn()){
            String device_sn = assistanceDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = assistanceDO.getOrgCode();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        emergencyAssistanceDao.save(assistanceDO);
        emergencyAssistanceDao.save(assistanceDO);
        return getOrderDetail(orderId,null);
        return getOrderDetail(orderId,null);
@ -979,6 +1053,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        //工单完成 给pc管理端推送完成信息
        //工单完成 给pc管理端推送完成信息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = assistanceDO.getServeLat()+","+assistanceDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",assistanceDO.getSessionId());
        message.put("session_id",assistanceDO.getSessionId());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("sender_name",assistanceDO.getPatientName());
        message.put("content_notice",assistanceDO.getPatientName()+" 完成紧急救助!");
        message.put("content_notice",assistanceDO.getPatientName()+" 完成紧急救助!");
@ -988,6 +1064,27 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        message.put("order_id",assistanceDO.getId());
        message.put("order_id",assistanceDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc","紧急呼叫");
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=assistanceDO.getDeviceSn()){
            String device_sn = assistanceDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = assistanceDO.getOrgCode();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        result = getOrderDetail(orderId,null);
        result = getOrderDetail(orderId,null);
        return result;
        return result;

+ 15 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/course/CourseService.java

@ -452,6 +452,21 @@ public class CourseService {
        return amapList;
        return amapList;
    }
    }
    /**
     * 查找机构的老师 奶牛城堡时限制教师
     * @param orgCode
     * @return
     */
    public List<Map<String,Object>> findDoctorByOrgLimit(String orgCode){
        String sql1 = "SELECT d.* FROM base_doctor d,base_doctor_hospital sh WHERE  d.del = 1 and  d.id = sh.doctor_code AND sh.del = 1 AND sh.org_code = '"+orgCode+"' " ;
        if("zhjdnncbtyy".equals(orgCode)){
            sql1 += " and d.consult_status = '1' ";
        }
        List<Map<String , Object >> amapList = jdbcTemplate.queryForList(sql1);
        return amapList;
    }
    public JSONObject getCourseByOrg(String lon2,String lat2){ //, int pageSize,int currentPage
    public JSONObject getCourseByOrg(String lon2,String lat2){ //, int pageSize,int currentPage
        JSONObject object = new JSONObject();
        JSONObject object = new JSONObject();
        String sql = "SELECT id, code, `name`, mobile, photo, address, longitude, latitude, funDistance ( latitude, longitude, "+lat2+", "+lon2+" ) funDistance FROM base.base_org WHERE del = 1 and type = 4 ORDER BY funDistance DESC\n";
        String sql = "SELECT id, code, `name`, mobile, photo, address, longitude, latitude, funDistance ( latitude, longitude, "+lat2+", "+lon2+" ) funDistance FROM base.base_org WHERE del = 1 and type = 4 ORDER BY funDistance DESC\n";

+ 153 - 7
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java

@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.care.config.AqgConfig;
import com.yihu.jw.care.config.AqgConfig;
import com.yihu.jw.care.dao.device.*;
import com.yihu.jw.care.dao.device.*;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.dao.security.SecurityMonitoringOrderDao;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.contacts.ContactsService;
import com.yihu.jw.care.service.contacts.ContactsService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
@ -12,10 +14,13 @@ import com.yihu.jw.care.service.wechat.WeiXinAccessTokenUtils;
import com.yihu.jw.care.util.ConcealUtil;
import com.yihu.jw.care.util.ConcealUtil;
import com.yihu.jw.care.util.CountDistance;
import com.yihu.jw.care.util.CountDistance;
import com.yihu.jw.care.util.MyJdbcTemplate;
import com.yihu.jw.care.util.MyJdbcTemplate;
import com.yihu.jw.care.util.Point;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.util.common.GpsUtil;
import com.yihu.jw.util.common.GpsUtil;
@ -95,6 +100,11 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    @Autowired
    @Autowired
    WeiXinAccessTokenUtils tokenUtils;
    WeiXinAccessTokenUtils tokenUtils;
    @Autowired
    private BaseEmergencyWarnLogDao logDao;
    @Autowired
    private PatientSafeAreaDao patientSafeAreaDao;
    //健康问题 高血压
    //健康问题 高血压
    private static final String gxy = "HP0093";
    private static final String gxy = "HP0093";
    //健康问题 糖尿病
    //健康问题 糖尿病
@ -116,6 +126,8 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    private CountDistance countDistance;
    private CountDistance countDistance;
    @Autowired
    @Autowired
    private PatientSafeAreaDao safeAreaDao;
    private PatientSafeAreaDao safeAreaDao;
    @Autowired
    private SecurityMonitoringOrderDao securityMonitoringOrderDao;
    @PostConstruct
    @PostConstruct
    public void init() {
    public void init() {
@ -971,7 +983,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                        ")A ";
                        ")A ";
                Long orderCount = jdbcTemplate.queryForObject(sql,Long.class);
                Long orderCount = jdbcTemplate.queryForObject(sql,Long.class);
                devInfo.put("errorCount",orderCount);//         //异常量
                devInfo.put("errorCount",orderCount);//         //异常量
            }else if (2==device.getDeviceType()){//健康设备
            }else if (0==device.getDeviceType()){//健康设备
                sql = " select count(id) from wlyy_patient_health_index where device_sn ='"+deviceSn+"' ";
                sql = " select count(id) from wlyy_patient_health_index where device_sn ='"+deviceSn+"' ";
                Long dataCount = jdbcTemplate.queryForObject(sql,Long.class);
                Long dataCount = jdbcTemplate.queryForObject(sql,Long.class);
                devInfo.put("dataCount",dataCount);//异常量
                devInfo.put("dataCount",dataCount);//异常量
@ -1371,18 +1383,20 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        if (StringUtils.isBlank(type)||"2".equals(type)||"0".equals(type)){
        if (StringUtils.isBlank(type)||"2".equals(type)||"0".equals(type)){
            String sqlCount = "select SUM(total) from( \n" +
            String sqlCount = "select SUM(total) from( \n" +
                    "select count(ord.id) as total from base_emergency_assistance_order ord  where ord.device_sn='"+deviceSn+"' " +
                    "select count(ord.id) as total from base_emergency_assistance_order ord INNER JOIN base_patient p on ord.patient = p.id   where ord.device_sn='"+deviceSn+"' " +
                    "  {{patient}} " +
                    "  {{patient}} " +
                    "UNION All " +
                    "UNION All " +
                    "select count(ord.id)  as total from base_security_monitoring_order ord  where ord.device_sn='"+deviceSn+"' " +
                    "select count(ord.id)  as total from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id   where ord.device_sn='"+deviceSn+"' " +
                    " {{patient}} )A ";
                    " {{patient}} )A ";
            String sql = "select '20' as OrderType,ord.id,ord.patient,ord.patient_name,ord.doctor,ord.status,ord.doctor_name," +
            String sql = "select '20' as OrderType,ord.id,ord.patient,ord.patient_name,ord.doctor,ord.status,ord.doctor_name," +
                    "'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time " +
                    "from base_emergency_assistance_order ord  where ord.device_sn='"+deviceSn+"' {{patient}} " +
                    "'紧急呼叫' 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 " +
                    "from base_emergency_assistance_order ord  INNER JOIN base_patient p on ord.patient = p.id  where ord.device_sn='"+deviceSn+"' {{patient}} " +
                    "UNION " +
                    "UNION " +
                    "select  '22' as 'OrderType',ord.id,ord.patient,ord.patient_name,ord.doctor,ord.status,ord.doctor_name," +
                    "select  '22' as 'OrderType',ord.id,ord.patient,ord.patient_name,ord.doctor,ord.status,ord.doctor_name," +
                    "ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order ord " +
                    " where ord.device_sn='"+deviceSn+"' {{patient}}  order by create_time desc limit "+page*pageSize+","+pageSize;
                    "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 from base_security_monitoring_order ord " +
                    " INNER JOIN base_patient p on ord.patient = p.id  where ord.device_sn='"+deviceSn+"' {{patient}}  order by create_time desc limit "+page*pageSize+","+pageSize;
            if (StringUtils.isNotBlank(patient)){
            if (StringUtils.isNotBlank(patient)){
                sqlCount = sqlCount.replace("{{patient}}","and ord.patient='"+patient+"' ");
                sqlCount = sqlCount.replace("{{patient}}","and ord.patient='"+patient+"' ");
                sql = sql.replace("{{patient}}","and ord.patient='"+patient+"' ");
                sql = sql.replace("{{patient}}","and ord.patient='"+patient+"' ");
@ -1394,7 +1408,139 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> map:list){
            for (Map<String,Object> map:list){
                //添加工单响应时间、动态
                String orderId = map.get("id").toString();
                String orderType = map.get("OrderType").toString();
                List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdOrderByCreateTimeDesc(orderId);
                for (BaseEmergencyWarnLogDO tmp:logDOS){
                    tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(),tmp.getCreateTime(),0));
                }
                map.put("orderLog",logDOS);
                // (起床预警时长3 午睡预警时长5 起夜预警时长2 详情见设备项目睡眠带发起时定义) (离开安全区域超出距离km) (燃气烟雾 报警时浓度)
                if ("22".equals(orderType)){
                    JSONObject info = new JSONObject();
                    SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderId);
                    if ("疑似离开安全区域".equals(orderDO.getServeDesc())){
                        //超出距离
                        List<PatientSafeAreaDO> patientSafeAreaDOs = patientSafeAreaDao.findByPatient(orderDO.getPatient());
                        if (patientSafeAreaDOs.size()>0){
                            PatientSafeAreaDO patientSafeAreaDO = patientSafeAreaDOs.get(0);
                            List<Point> pointList = new ArrayList<Point>(){};
                            String pointStr = patientSafeAreaDO.getSafeAreaGz();
                            String[] points = pointStr.split(";");
                            for (String tmp:points){
                                String[] lonLat = tmp.split(",");
                                pointList.add(new Point(Double.parseDouble(lonLat[1]) , Double.parseDouble(lonLat[0])));
                            }
                            Point p = new Point(Double.parseDouble(orderDO.getServeLat()) , Double.parseDouble(orderDO.getServeLon()));
                            String dist = countDistance.getPointToEdgeDistance(p,pointList,2);
                            if (org.apache.commons.lang.StringUtils.isNotBlank(dist)){
                                info.put("info1","超出距离: "+dist+"m");
                            }
                        }
                    }
                    if ("超时未起床".equals(orderDO.getServeDesc())){
                        List<BaseSleepPlan> sleepPlan = sleepPlanDao.findByPatient(orderDO.getPatient());
                        if (sleepPlan.size()>0){
                            info.put("info1","预设起床时间: "+sleepPlan.get(0).getGetUpTime());
                        }
                        info.put("info2","超时时长: 3小时");
                    }
                    if ("午睡超时未起床".equals(orderDO.getServeDesc())){
                        if (null!=orderDO.getWarnInfo()) {
                            if (org.apache.commons.lang.StringUtils.isNotBlank(orderDO.getWarnInfo())){
                                com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                                if (jsonObject.containsKey("siestaTimeBegin") && null != jsonObject.get("siestaTimeBegin")) {
                                    String siestaTimeBegin = jsonObject.getString("siestaTimeBegin");
                                    info.put("info1", "预计午休起床时间: " +DateUtil.getPreTime(siestaTimeBegin,60*5+""));
                                }
                            }
                        }
                        info.put("info2","超时时长: 5小时");
                    }
                    if ("起夜超时未回床".equals(orderDO.getServeDesc())){
                        if (null!=orderDO.getWarnInfo()){
                            if (org.apache.commons.lang.StringUtils.isNotBlank(orderDO.getWarnInfo())){
                                com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                                if (jsonObject.containsKey("sleepNightRecordList")&&null!=jsonObject.get("sleepNightRecordList")){
                                    com.alibaba.fastjson.JSONArray nightArr = jsonObject.getJSONArray("sleepNightRecordList");
                                    if (nightArr.size()>0){
                                        com.alibaba.fastjson.JSONObject tmp = nightArr.getJSONObject(0);
                                        String time = tmp.getString("createTime");
                                        info.put("info1","离床时间: "+time);
                                    }
                                }
                            }
                        }
                        info.put("info2","离床时长: 2小时");
                    }
                    if ("超时未上床晚休".equals(orderDO.getServeDesc())){
                        List<BaseSleepPlan> sleepPlan = sleepPlanDao.findByPatient(orderDO.getPatient());
                        if (sleepPlan.size()>0){
                            info.put("info1","预设晚休时间: "+sleepPlan.get(0).getNightRestTime());
                        }
                        info.put("info2","超时时长: 2小时");
                    }
                    if ("超时未午睡".equals(orderDO.getServeDesc())){
                        List<BaseSleepPlan> sleepPlan = sleepPlanDao.findByPatient(orderDO.getPatient());
                        if (sleepPlan.size()>0){
                            info.put("info1","预设午休时间: "+sleepPlan.get(0).getNapTime());
                        }
                        info.put("info2","5小时");
                    }
                    if ("疑似发生火灾".equals(orderDO.getServeDesc())){
                        //烟雾浓度
                        if (null!=orderDO.getWarnInfo()){
                            if (org.apache.commons.lang.StringUtils.isNotBlank(orderDO.getWarnInfo())){
                                com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                                if (jsonObject.containsKey("smoke")&&null!=jsonObject.get("smoke")){
                                    String value = jsonObject.getString("smoke");
                                    if (!value.contains("%")){
                                        value+="%";
                                    }
                                    info.put("info1","烟雾浓度: "+value);
                                }
                            }
                        }
                    }
                    if ("疑似燃气泄漏".equals(orderDO.getServeDesc())){
                        //燃气浓度
                        if (null!=orderDO.getWarnInfo()) {
                            if (org.apache.commons.lang.StringUtils.isNotBlank(orderDO.getWarnInfo())){
                                com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                                if (jsonObject.containsKey("gas")&&null!=jsonObject.get("gas")){
                                    String value = jsonObject.getString("gas");
                                    if (!value.contains("%")) {
                                        value += "%";
                                    }
                                    info.put("info1", "燃气浓度: "+value);
                                }
                            }
                        }
                    }
                    if("心率和呼吸频率异常".equals(orderDO.getServeDesc())){
                        if (null!=orderDO.getWarnInfo()){
                            if (org.apache.commons.lang.StringUtils.isNotBlank(orderDO.getWarnInfo())){
                                com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                                if(null!=jsonObject.get("breath")){
                                    String breath = jsonObject.getString("breath");
                                    if (org.apache.commons.lang3.StringUtils.isNotBlank(breath)){
                                        info.put("info1", "预警频率 "+breath+"次/分钟");
                                    }
                                }
                                if(null!=jsonObject.get("heartRate")){
                                    String heartRate = jsonObject.getString("heartRate");
                                    if (org.apache.commons.lang3.StringUtils.isNotBlank(heartRate)){
                                        info.put("info2", "预警心率: "+heartRate+"次/分钟");
                                    }
                                }
                            }
                        }
                    }
                    map.put("infos",info);
                }
            }
            }
            String str = JSON.toJSONString(list,SerializerFeature.WriteMapNullValue);
            String str = JSON.toJSONString(list,SerializerFeature.WriteMapNullValue);

+ 5 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java

@ -822,13 +822,13 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
                ",ord.doctor,ord.doctor_name doctorName,ord.expected_doctor_name expectedDoctorName,group_concat(Distinct fee.name SEPARATOR '、') serveItems" +
                ",ord.doctor,ord.doctor_name doctorName,ord.expected_doctor_name expectedDoctorName,group_concat(Distinct fee.name SEPARATOR '、') serveItems" +
                " from base_life_care_order ord LEFT JOIN base_life_care_fee_detail fee on ord.id = fee.order_id " +
                " from base_life_care_order ord LEFT JOIN base_life_care_fee_detail fee on ord.id = fee.order_id " +
                "and fee.`status`<>3 where ord.patient = '"+patient+"' and ord.status<>0 ";
                "and fee.`status`<>3 where ord.patient = '"+patient+"' and ord.status<>0 ";
        String fliter = "";
        String filter = "";
       if (status != null){
       if (status != null){
           fliter += " and ord.status = "+status;
           filter += " and ord.status = "+status;
       }
       }
       Long count = jdbcTemplate.queryForObject(sqlCount+fliter,Long.class);
       fliter += " group by ord.id order by ord.create_time desc limit "+page*size+","+size;
       List<Map<String,Object>> result = jdbcTemplate.queryForList(sql+fliter);
       Long count = jdbcTemplate.queryForObject(sqlCount+filter,Long.class);
        filter += " group by ord.id order by ord.create_time desc limit "+page*size+","+size;
       List<Map<String,Object>> result = jdbcTemplate.queryForList(sql+filter);
       return PageEnvelop.getSuccessListWithPage("查询成功",result,page,size,count);
       return PageEnvelop.getSuccessListWithPage("查询成功",result,page,size,count);
    }
    }

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

@ -1,11 +1,15 @@
package com.yihu.jw.care.service.message;
package com.yihu.jw.care.service.message;
import com.yihu.jw.care.dao.device.DeviceDetailDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.message.BaseServiceNewsDao;
import com.yihu.jw.care.dao.message.BaseServiceNewsDao;
import com.yihu.jw.care.service.device.DeviceService;
import com.yihu.jw.care.service.device.DeviceService;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.IdCardUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.StringUtils;
@ -41,6 +45,11 @@ public class BaseServiceNewsService {
    private DeviceService deviceService;
    private DeviceService deviceService;
    @Autowired
    @Autowired
    private BasePatientDao patientDao;
    private BasePatientDao patientDao;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private BaseOrgDao orgDao;
    /**
    /**
     * 查找机构坐标
     * 查找机构坐标
@ -132,6 +141,28 @@ public class BaseServiceNewsService {
            }
            }
            String idcard = map.get("idcard").toString();
            String idcard = map.get("idcard").toString();
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            sql = " select CONCAT(o.serve_lat,',',o.serve_lon) latLon,'紧急呼叫' as serverDesc,o.org_code orgCode,o.device_sn from base_emergency_assistance_order o where o.patient='"+patient+"' and `status`=1 " +
                    " UNION All  " +
                    "select CONCAT(o.serve_lat,',',o.serve_lon) latLon,o.serve_desc serverDesc,o.hospital orgCode,o.device_sn from base_security_monitoring_order o where o.patient='"+patient+"' and `status`=1 ";
            List<Map<String,Object>> orderPoints = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> tmp:orderPoints){
                if (null!=tmp.get("device_sn")){
                    String device_sn = tmp.get("device_sn").toString();
                    if (StringUtils.isNotBlank(device_sn)){
                        DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                        if (null!=deviceDetail){
                            tmp.put("contactStatus",deviceDetail.getContactStatus());
                            tmp.put("categoryCode",deviceDetail.getCategoryCode());
                        }
                    }
                }
                String orgCode = tmp.get("orgCode").toString();
                BaseOrgDO orgDO = orgDao.findByCode(orgCode);
                if (null!=orgDO){
                    tmp.put("orgType",orgDO.getType());
                }
            }
            map.put("orderPoints",orderPoints);
        }
        }
        return list;
        return list;
    }
    }

+ 7 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java

@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.*;
import java.util.stream.Collectors;
/**
/**
 * 
 * 
@ -218,14 +219,15 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        patientDO.setDeviceFlag(deviceFlag);
        patientDO.setDeviceFlag(deviceFlag);
        res.put("patient",patientDO);
        res.put("patient",patientDO);
        String sql = "select * from base_service_package_sign_record where patient = '"+patientId+"' and status = 1 limit 1";
        String sql = "select * from base_service_package_sign_record where patient = '"+patientId+"' and status = 1 ";
        List<ServicePackageSignRecordDO> signRecordDOs = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ServicePackageSignRecordDO.class));
        List<ServicePackageSignRecordDO> signRecordDOs = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ServicePackageSignRecordDO.class));
        if(signRecordDOs.size()>0){
        if(signRecordDOs.size()>0){
            ServicePackageSignRecordDO signRecordDO = signRecordDOs.get(0);
            ServicePackageSignRecordDO signRecordDO = signRecordDOs.get(0);
            String signId = signRecordDO.getId();
            List<Map<String,Object>> packageList = servicePackageService.fingdBySignId(signId);
            List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorBySignId(signId,1);
            List<Map<String,Object>> helperList = servicePackageService.fingdDoctorBySignId(signId,2);
            List<String> signIds = signRecordDOs.stream().map(ServicePackageSignRecordDO::getId).collect(Collectors.toList());
            List<Map<String,Object>> packageList = servicePackageService.fingdBySignId2(signIds);
            List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorBySignId2(signIds,1);
            List<Map<String,Object>> helperList = servicePackageService.fingdDoctorBySignId2(signIds,2);
            signRecordDO.setDoctorList(doctorList);
            signRecordDO.setDoctorList(doctorList);
            signRecordDO.setHelperList(helperList);
            signRecordDO.setHelperList(helperList);
            signRecordDO.setPackageList(packageList);
            signRecordDO.setPackageList(packageList);

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

@ -27,6 +27,7 @@ import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
import com.yihu.jw.entity.care.contacts.PatientSosContactsDO;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.care.device.*;
import com.yihu.jw.entity.care.securitymonitoring.*;
import com.yihu.jw.entity.care.securitymonitoring.*;
@ -135,6 +136,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    private DoctorServicePermissionsService doctorServicePermissionsService;
    private DoctorServicePermissionsService doctorServicePermissionsService;
    @Autowired
    @Autowired
    private BaseOrgDao orgDao;
    private BaseOrgDao orgDao;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    private Logger logger = LoggerFactory.getLogger(SecurityMonitoringOrderService.class);
    private Logger logger = LoggerFactory.getLogger(SecurityMonitoringOrderService.class);
@ -162,6 +165,18 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            logger.error(failMsg);
            logger.error(failMsg);
            return result;
            return result;
        }
        }
        //V1.4 同一类型的安防工单 距离上次发起小于6小时不可重复发起
        String sql = " select count(id) from base_security_monitoring_order where `status`=1  " +
                "  and TIMESTAMPDIFF(HOUR,create_time,NOW())<=6 " +
                " and patient='"+orderDO.getPatient()+"' and serve_desc ='"+orderDO.getServeDesc()+"' ";
        Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
        if (count>0){
            result.put("resultFlag", 0);
            String failMsg = "居民六小时内已存在该预警类型工单,无法重复发起";
            result.put("resultMsg", failMsg);
            logger.error(failMsg);
            return result;
        }
        orderDO.setStatus(1);
        orderDO.setStatus(1);
        orderDO.setNumber(getRandomIntStr());
        orderDO.setNumber(getRandomIntStr());
@ -189,7 +204,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        //签约防走失服务包
        //签约防走失服务包
        String sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack    \n" +
        sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack    \n" +
                "where  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id  and i.del = 1 and sr.`status`=1 \n" +
                "where  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id  and i.del = 1 and sr.`status`=1 \n" +
                "and  sr.patient  = '"+orderDO.getPatient()+"' and i.code='preventLost' ";
                "and  sr.patient  = '"+orderDO.getPatient()+"' and i.code='preventLost' ";
        List<Map<String,Object>> items = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> items = jdbcTemplate.queryForList(sql);
@ -239,6 +254,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        //推送socket给医生  推送紧急预警
        //推送socket给医生  推送紧急预警
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = orderDO.getServeLat()+","+orderDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",sessionId);
        message.put("session_id",sessionId);
        message.put("sender_name",orderDO.getPatientName());
        message.put("sender_name",orderDO.getPatientName());
        message.put("content_notice",orderDO.getPatientName()+" "+warnStr+"!");
        message.put("content_notice",orderDO.getPatientName()+" "+warnStr+"!");
@ -247,6 +264,28 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        message.put("OrderStatus","new");
        message.put("OrderStatus","new");
        message.put("order_id",orderDO.getId());
        message.put("order_id",orderDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc",orderDO.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=orderDO.getDeviceSn()){
            String device_sn = orderDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = orderDO.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        for (BaseDoctorDO doctorDO:doctorDOS){
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
@ -326,6 +365,10 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        for (BaseEmergencyWarnLogDO tmp:logDOS){
        for (BaseEmergencyWarnLogDO tmp:logDOS){
            tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(),tmp.getCreateTime(),0));
            tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(),tmp.getCreateTime(),0));
        }
        }
        if (logDOS.size()==0&&1==emergencyOrderVO.getStatus()){//未响应
            emergencyOrderVO.setOverTimeNotResponse(DateUtil.getDifferentTimeInfo1(new Date(),orderDO.getCreateTime()));
        }
        emergencyOrderVO.setOrderLogInfo(logDOS);
        emergencyOrderVO.setOrderLogInfo(logDOS);
        List<PatientSosContactsDO> contactsDOS = contactsService.getPatientSosContacts(orderDO.getPatient());
        List<PatientSosContactsDO> contactsDOS = contactsService.getPatientSosContacts(orderDO.getPatient());
        emergencyOrderVO.setSosContacts(contactsDOS);
        emergencyOrderVO.setSosContacts(contactsDOS);
@ -370,24 +413,25 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            map.put("inFenceName","疑似超出安全区域");
            map.put("inFenceName","疑似超出安全区域");
            emergencyOrderVO.setInformation(map);
            emergencyOrderVO.setInformation(map);
        }
        }
        if(4==orderDO.getOrderSource()){//报警器
        if(4==orderDO.getOrderSource()){//监控器
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(orderDO.getPatient(),"12");
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(orderDO.getPatient(),"12");
            if (devicePatientDeviceDos.size()==0){
            if (devicePatientDeviceDos.size()==0){
            }
            try {
                JSONObject monitorUrl = ysDeviceServicel.getDeviceLiveAddress(orderDO.getPatient(),devicePatientDeviceDos.get(0).getDeviceSn(),1,null);
                Map<String,Object> map = new HashMap<>();
                map.put("monitorInfoStatus",monitorUrl.getIntValue(ResponseContant.resultFlag));
                map.put("patientAddress",devicePatientDeviceDos.get(0).getSosAddress());
                if (monitorUrl.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail){
                    map.put("monitorInfo",monitorUrl.getString(ResponseContant.resultMsg));
                }
                else {
                    map.put("monitorInfo",monitorUrl.getJSONObject(ResponseContant.resultMsg));
            }else {
                try {
                    JSONObject monitorUrl = ysDeviceServicel.getDeviceLiveAddress(orderDO.getPatient(),devicePatientDeviceDos.get(0).getDeviceSn(),1,null);
                    Map<String,Object> map = new HashMap<>();
                    map.put("monitorInfoStatus",monitorUrl.getIntValue(ResponseContant.resultFlag));
                    map.put("patientAddress",devicePatientDeviceDos.get(0).getSosAddress());
                    if (monitorUrl.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail){
                        map.put("monitorInfo",monitorUrl.getString(ResponseContant.resultMsg));
                    }
                    else {
                        map.put("monitorInfo",monitorUrl.getJSONObject(ResponseContant.resultMsg));
                    }
                    emergencyOrderVO.setInformation(map);
                }catch (Exception e){
                    e.printStackTrace();
                }
                }
                emergencyOrderVO.setInformation(map);
            }catch (Exception e){
                e.printStackTrace();
            }
            }
        }
        }
        if (5==orderDO.getOrderSource()){//睡眠带工单
        if (5==orderDO.getOrderSource()){//睡眠带工单
@ -574,6 +618,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //完成工单向pc管理端发送消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = orderDO.getServeLat()+","+orderDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",orderDO.getSessionId());
        message.put("session_id",orderDO.getSessionId());
        message.put("sender_name",orderDO.getPatientName());
        message.put("sender_name",orderDO.getPatientName());
        message.put("content_notice","完成安防服务工单");
        message.put("content_notice","完成安防服务工单");
@ -583,6 +629,27 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        message.put("order_id",orderDO.getId());
        message.put("order_id",orderDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc",orderDO.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=orderDO.getDeviceSn()){
            String device_sn = orderDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = orderDO.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        result = getSecurityOrderDetail(orderId,null);
        result = getSecurityOrderDetail(orderId,null);
        return result;
        return result;
@ -976,6 +1043,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //完成工单向pc管理端发送消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = orderDO.getServeLat()+","+orderDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",orderDO.getSessionId());
        message.put("session_id",orderDO.getSessionId());
        message.put("sender_name",orderDO.getPatientName());
        message.put("sender_name",orderDO.getPatientName());
        message.put("content_notice","完成安防服务工单");
        message.put("content_notice","完成安防服务工单");
@ -985,6 +1054,27 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        message.put("order_id",orderDO.getId());
        message.put("order_id",orderDO.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc",orderDO.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=orderDO.getDeviceSn()){
            String device_sn = orderDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = orderDO.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
//        Consult consult = consultDao.queryByRelationCode(orderId);
//        Consult consult = consultDao.queryByRelationCode(orderId);
//        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消)
//        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消)
@ -1121,6 +1211,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //完成工单向pc管理端发送消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = one.getServeLat()+","+one.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",one.getSessionId());
        message.put("session_id",one.getSessionId());
        message.put("sender_name",one.getPatientName());
        message.put("sender_name",one.getPatientName());
        message.put("content_notice","完成安防服务工单");
        message.put("content_notice","完成安防服务工单");
@ -1130,6 +1222,27 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        message.put("order_id",one.getId());
        message.put("order_id",one.getId());
        message.put("content_type",40);
        message.put("content_type",40);
        message.put("serverDesc",one.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        if (null!=one.getDeviceSn()){
            String device_sn = one.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                }
            }
        }
        String orgCode = one.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        }
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        return getSecurityOrderDetail(orderId,null);
        return getSecurityOrderDetail(orderId,null);
    }
    }
@ -1285,6 +1398,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        result.put("fall",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleep",null);
        result.put("deviceSn",null);
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
        result.put("monitorInfo",null);
        String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
        String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
                " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status="+SecurityMonitoringOrderDO.Status.apply.getType()+" where dict.dict_code='service_item' " +
                " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status="+SecurityMonitoringOrderDO.Status.apply.getType()+" where dict.dict_code='service_item' " +
@ -1326,6 +1440,11 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    break;
                    break;
            }
            }
        }
        }
        sql = " select count(id) from base_emergency_assistance_order  where patient='"+patient+"' and status="+ EmergencyAssistanceDO.Status.apply.getType();
        Integer counnt = jdbcTemplate.queryForObject(sql,Integer.class);
        if (counnt>0){
            result.put("emeAssistance",true);
        }
        result = patientSignTopicInfo(result,patient,topicItem,null);
        result = patientSignTopicInfo(result,patient,topicItem,null);
        return result;
        return result;
    }
    }

+ 39 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java

@ -302,6 +302,15 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }
    public List<Map<String,Object>> fingdDoctorBySignId2(List<String> signId,Integer level){
        String signIdStr =  signId.stream().map(String::valueOf).collect(Collectors.joining("','"));
        String sql = "SELECT DISTINCT d.id,d.name from base_service_package_sign_record sr,base_service_package_record r,base_team_member m,base_doctor d " +
                "WHERE sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id and m.doctor_code = d.id " +
                "and m.del = '1' and d.doctor_level = " + level+
                " and sr.id in ('"+signIdStr+"') ";
        return jdbcTemplate.queryForList(sql);
    }
    /**
    /**
     * 根据居民和服务项查找医生
     * 根据居民和服务项查找医生
     * @param patientId
     * @param patientId
@ -326,6 +335,15 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }
    public List<Map<String,Object>> fingdBySignId2(List<String> signId){
        String signIdStr =  signId.stream().map(String::valueOf).collect(Collectors.joining("','"));
        String sql = "SELECT DISTINCT p.id,p.`name`,p.org_code,p.org_name from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_service_package p " +
                "WHERE sr.id = r.sign_id and  p.id = r.service_package_id and p.del = 1 " +
                "  and sr.id in ('"+signIdStr+"') GROUP BY r.service_package_id ORDER BY r.create_time desc ";
        return jdbcTemplate.queryForList(sql);
    }
    /**
    /**
     * 签约记录
     * 签约记录
     * @param name
     * @param name
@ -389,6 +407,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        signRecordDO.setName(patientDO.getName());
        signRecordDO.setName(patientDO.getName());
        List<ServicePackageRecordDO> recordDOList = signRecordDO.getRecordDOList();
        List<ServicePackageRecordDO> recordDOList = signRecordDO.getRecordDOList();
        List<String> packages = recordDOList.stream().map(ServicePackageRecordDO::getServicePackageId).collect(Collectors.toList());
        List<String> packages = recordDOList.stream().map(ServicePackageRecordDO::getServicePackageId).collect(Collectors.toList());
        List<String> teams = recordDOList.stream().map(ServicePackageRecordDO::getTeamCode).collect(Collectors.toList());
        if (packages.size()>0){
        if (packages.size()>0){
            String packagesId = packages.stream().map(String::valueOf).collect(Collectors.joining("','"));
            String packagesId = packages.stream().map(String::valueOf).collect(Collectors.joining("','"));
            String sql  = " SELECT  DISTINCT i.org_code FROM  base_service_package_sign_record sr, " +
            String sql  = " SELECT  DISTINCT i.org_code FROM  base_service_package_sign_record sr, " +
@ -426,11 +445,26 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
                signId = signRecordDO.getId();
                signId = signRecordDO.getId();
                //建档状态修改
                //建档状态修改
                ArchiveDO archiveDO = archiveDao.findByPatientAndDoctorCode(patientId,doctorId);
                if(archiveDO!=null){
                    archiveDO.setSignStatus(1);
                    archiveDao.save(archiveDO);
                List<BaseDoctorDO> doctorDOS = doctorDao.findDoctorsByTeam(teams);
                List<ArchiveDO> saveList = new ArrayList<>();
                for (BaseDoctorDO tmp:doctorDOS){
                    ArchiveDO archiveDO = archiveDao.findByPatientAndDoctorCode(patientId,doctorId);
                    if(archiveDO!=null){
                        archiveDO.setSignStatus(1);
                    }else{
                        archiveDO = new ArchiveDO();
                        archiveDO.setCreateTime(new Date());
                        archiveDO.setArchiveOperatorName(tmp.getName());
                        archiveDO.setPatient(patientId);
                        archiveDO.setSickName(patientDO.getName());
                        archiveDO.setIdcard(patientDO.getIdcard());
                        archiveDO.setSignStatus(1);
                    }
                    saveList.add(archiveDO);
                }
                }
                archiveDao.save(saveList);
//            }else{
//            }else{
//                //不能重复签约
//                //不能重复签约
//                result.put(ResponseContant.resultFlag, ResponseContant.fail);
//                result.put(ResponseContant.resultFlag, ResponseContant.fail);
@ -626,7 +660,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        if (StringUtils.isNotBlank(doctorLevel)){
        if (StringUtils.isNotBlank(doctorLevel)){
         sql += " and doc.doctor_level= "+doctorLevel;
         sql += " and doc.doctor_level= "+doctorLevel;
        }
        }
        sql += "group by doc.id";
        sql += " group by doc.id ";
        List<Map<String,Object>>result = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>>result = jdbcTemplate.queryForList(sql);
        if ("1".equals(onlineFlag)){//展示是否在线
        if ("1".equals(onlineFlag)){//展示是否在线
            String listStr = imUtil.getOnlineListByType("helper");
            String listStr = imUtil.getOnlineListByType("helper");

+ 58 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java

@ -3,18 +3,23 @@ package com.yihu.jw.care.service.statistics;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.xerces.internal.xs.datatypes.ByteList;
import com.sun.org.apache.xerces.internal.xs.datatypes.ByteList;
import com.yihu.jw.care.dao.device.DeviceDetailDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.es.util.ElasticsearchUtil;
import com.yihu.jw.es.util.ElasticsearchUtil;
import com.yihu.jw.es.util.SaveModel;
import com.yihu.jw.es.util.SaveModel;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.StringUtil;
import io.swagger.models.auth.In;
import io.swagger.models.auth.In;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.LoggerFactory;
@ -51,6 +56,11 @@ public class DetectionPlatformService  {
    private ElasticsearchUtil elasticsearchUtil;
    private ElasticsearchUtil elasticsearchUtil;
    private static final String defalutArea = "330100";
    private static final String defalutArea = "330100";
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private BaseOrgDao orgDao;
    /**
    /**
     * 体征监测 安防监护
     * 体征监测 安防监护
     * @param page
     * @param page
@ -209,6 +219,15 @@ public class DetectionPlatformService  {
//        if (StringUtils.isNotBlank(user)) {
//        if (StringUtils.isNotBlank(user)) {
//            patientDOS = patientDao.findAllByDelAndId(user);  //user != null   根据居民查询
//            patientDOS = patientDao.findAllByDelAndId(user);  //user != null   根据居民查询
//        }
//        }
        //查找所有在线的设备
        String sqlDevice = "SELECT device_code from wlyy_devices where contact_status =1";
        List<String> deviceStr = jdbcTemplate.queryForList(sqlDevice,String.class);
        Map<String,Object> devcieMap = new HashedMap();
        for (String str:deviceStr){
            devcieMap.put(str,str);
        }
        Map<String, List<BasePatientDO>> byId = patientDOS.stream().collect(Collectors.groupingBy(BasePatientDO::getId));
        Map<String, List<BasePatientDO>> byId = patientDOS.stream().collect(Collectors.groupingBy(BasePatientDO::getId));
        //首页默认根据居民展示  绑定设备的居民
        //首页默认根据居民展示  绑定设备的居民
//        String userSql = "SELECT `user` FROM wlyy_patient_device WHERE del = 0 GROUP BY `user`";
//        String userSql = "SELECT `user` FROM wlyy_patient_device WHERE del = 0 GROUP BY `user`";
@ -229,9 +248,15 @@ public class DetectionPlatformService  {
                    if (deviceList.size() > 1) {    //居民绑定多台设备
                    if (deviceList.size() > 1) {    //居民绑定多台设备
                        for (int j=0;j<deviceList.size();j++) {
                        for (int j=0;j<deviceList.size();j++) {
                            JSONObject obj = new JSONObject();
                            JSONObject obj = new JSONObject();
                            obj.put("deviceSn",deviceList.get(j).getDeviceSn());
                            String deviceSn = deviceList.get(j).getDeviceSn();
                            obj.put("deviceSn",deviceSn);
                            obj.put("deviceName",deviceList.get(j).getDeviceName());
                            obj.put("deviceName",deviceList.get(j).getDeviceName());
                            obj.put("categoryCode",deviceList.get(j).getCategoryCode());
                            obj.put("categoryCode",deviceList.get(j).getCategoryCode());
                            if(devcieMap.containsKey(deviceSn)){
                                obj.put("contactStatus",1);
                            }else{
                                obj.put("contactStatus",0);
                            }
                            array.add(obj);
                            array.add(obj);
                        }
                        }
                        userObj.put("deviceCount",deviceList.size());
                        userObj.put("deviceCount",deviceList.size());
@ -240,9 +265,15 @@ public class DetectionPlatformService  {
                    } else {    //居民只绑定一台设备
                    } else {    //居民只绑定一台设备
                        for (int j=0;j<deviceList.size();j++) {
                        for (int j=0;j<deviceList.size();j++) {
                            JSONObject obj = new JSONObject();
                            JSONObject obj = new JSONObject();
                            obj.put("deviceSn",deviceList.get(j).getDeviceSn());
                            String deviceSn = deviceList.get(j).getDeviceSn();
                            obj.put("deviceSn",deviceSn);
                            obj.put("deviceName",deviceList.get(j).getDeviceName());
                            obj.put("deviceName",deviceList.get(j).getDeviceName());
                            obj.put("categoryCode",deviceList.get(j).getCategoryCode());
                            obj.put("categoryCode",deviceList.get(j).getCategoryCode());
                            if(devcieMap.containsKey(deviceSn)){
                                obj.put("contactStatus",1);
                            }else{
                                obj.put("contactStatus",0);
                            }
                            array.add(obj);
                            array.add(obj);
                        }
                        }
                        userObj.put("deviceCount",deviceList.size());
                        userObj.put("deviceCount",deviceList.size());
@ -257,6 +288,31 @@ public class DetectionPlatformService  {
        return arrayAll;
        return arrayAll;
    }
    }
    public List<Map<String,Object>> getOrderListWarning(){
       String sql = " select o.id as order_id,o.patient,o.patient_name patientName,CONCAT(o.serve_lat,',',o.serve_lon) latLon,'20' as orderType,'紧急呼叫' as serverDesc,o.org_code orgCode,o.device_sn from base_emergency_assistance_order o where  `status`=1 " +
                " UNION All  " +
                " select o.id as order_id,o.patient,o.patient_name patientName,CONCAT(o.serve_lat,',',o.serve_lon) latLon,'22' as orderType,o.serve_desc serverDesc,o.hospital orgCode,o.device_sn from base_security_monitoring_order o where  `status`=1 ";
        List<Map<String,Object>> orderPoints2 = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> tmp:orderPoints2){
            if (null!=tmp.get("device_sn")){
                String device_sn = tmp.get("device_sn").toString();
                if (StringUtils.isNotBlank(device_sn)){
                    DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                    if (null!=deviceDetail){
                        tmp.put("contactStatus",deviceDetail.getContactStatus());
                        tmp.put("categoryCode",deviceDetail.getCategoryCode());
                    }
                }
            }
            String orgCode = tmp.get("orgCode").toString();
            BaseOrgDO orgDO = orgDao.findByCode(orgCode);
            if (null!=orgDO){
                tmp.put("orgType",orgDO.getType());
            }
        }
        return orderPoints2;
    }
    public JSONObject getDeviceInfo(String deviceSn) throws Exception{
    public JSONObject getDeviceInfo(String deviceSn) throws Exception{
        String categoryCode = "";
        String categoryCode = "";
        JSONObject object = new JSONObject();
        JSONObject object = new JSONObject();

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

@ -1,8 +1,13 @@
package com.yihu.jw.care.service.third;
package com.yihu.jw.care.service.third;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.device.BaseSleepPlanDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaDao;
import com.yihu.jw.care.dao.label.BaseCapacityLabelDao;
import com.yihu.jw.care.dao.label.BaseCapacityLabelDao;
import com.yihu.jw.care.dao.label.WlyyPatientLabelDao;
import com.yihu.jw.care.dao.label.WlyyPatientLabelDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.dao.security.SecurityMonitoringOrderDao;
import com.yihu.jw.care.service.course.CourseService;
import com.yihu.jw.care.service.course.CourseService;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.device.PatientHealthIndexService;
import com.yihu.jw.care.service.device.PatientHealthIndexService;
@ -11,13 +16,20 @@ import com.yihu.jw.care.service.lifeCare.LifeCareOrderService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.care.service.sign.CapacityAssessmentRecordService;
import com.yihu.jw.care.service.sign.CapacityAssessmentRecordService;
import com.yihu.jw.care.service.sign.ServicePackageService;
import com.yihu.jw.care.service.sign.ServicePackageService;
import com.yihu.jw.care.util.CountDistance;
import com.yihu.jw.care.util.Point;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.BaseSleepPlan;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.entity.care.label.BaseCapacityLabelDO;
import com.yihu.jw.entity.care.label.BaseCapacityLabelDO;
import com.yihu.jw.entity.care.label.WlyyPatientLabelDO;
import com.yihu.jw.entity.care.label.WlyyPatientLabelDO;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.StringUtils;
import org.json.JSONArray;
import org.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,6 +37,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Collectors;
@ -59,6 +72,16 @@ public class PatientInfoPlatFormService {
    private CapacityAssessmentRecordService capacityAssessmentRecordService;
    private CapacityAssessmentRecordService capacityAssessmentRecordService;
    @Autowired
    @Autowired
    private BaseCapacityLabelDao capacityLabelDao;
    private BaseCapacityLabelDao capacityLabelDao;
    @Autowired
    private BaseEmergencyWarnLogDao logDao;
    @Autowired
    private SecurityMonitoringOrderDao securityMonitoringOrderDao;
    @Autowired
    private BaseSleepPlanDao sleepPlanDao;
    @Autowired
    private PatientSafeAreaDao patientSafeAreaDao;
    @Autowired
    private CountDistance countDistance;
    /**
    /**
@ -253,22 +276,169 @@ public class PatientInfoPlatFormService {
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
    }
    }
    public PageEnvelop getEmergencyWarnOrderListNew(Integer page,Integer pageSize){
    public PageEnvelop getEmergencyWarnOrderListNew(Integer page,Integer pageSize,String patient){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        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` \n" +
                "from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id order by create_time desc ";
        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 " ;
        if (StringUtils.isNotBlank(patient)){
            sql +=" and ord.patient='"+patient+"' ";
        }
        sql+= " order by create_time desc ";
        String countSql = "select count(id) from ("+sql+")A ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        sql +=" limit "+page*pageSize+","+pageSize;
        sql +=" limit "+page*pageSize+","+pageSize;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            //添加工单响应时间、动态
            String orderId = map.get("id").toString();
            String orderType = map.get("OrderType").toString();
            List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdOrderByCreateTimeDesc(orderId);
            for (BaseEmergencyWarnLogDO tmp:logDOS){
                tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(),tmp.getCreateTime(),0));
            }
            map.put("orderLog",logDOS);
            // (起床预警时长3 午睡预警时长5 起夜预警时长2 详情见设备项目睡眠带发起时定义) (离开安全区域超出距离km) (燃气烟雾 报警时浓度)
            if ("22".equals(orderType)){
                JSONObject info = new JSONObject();
                SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderId);
                if ("疑似离开安全区域".equals(orderDO.getServeDesc())){
                    //超出距离 获取居民
                    List<PatientSafeAreaDO> patientSafeAreaDOs = patientSafeAreaDao.findByPatient(orderDO.getPatient());
                    if (patientSafeAreaDOs.size()>0){
                        PatientSafeAreaDO patientSafeAreaDO = patientSafeAreaDOs.get(0);
                        List<Point> pointList = new ArrayList<Point>(){};
                        String pointStr = patientSafeAreaDO.getSafeAreaGz();
                        String[] points = pointStr.split(";");
                        for (String tmp:points){
                            String[] lonLat = tmp.split(",");
                            pointList.add(new Point(Double.parseDouble(lonLat[1]) , Double.parseDouble(lonLat[0])));
                        }
                        Point p = new Point(Double.parseDouble(orderDO.getServeLat()) , Double.parseDouble(orderDO.getServeLon()));
                        String dist = countDistance.getPointToEdgeDistance(p,pointList,2);
                        if (StringUtils.isNotBlank(dist)){
                            info.put("info1","超出距离: "+dist+"m");
                        }
                    }
                }
                if ("超时未起床".equals(orderDO.getServeDesc())){
                    List<BaseSleepPlan> sleepPlan = sleepPlanDao.findByPatient(orderDO.getPatient());
                    if (sleepPlan.size()>0){
                        info.put("info1","预设起床时间: "+sleepPlan.get(0).getGetUpTime());
                    }
                    info.put("info2","超时时长: 3小时");
                }
                if ("午睡超时未起床".equals(orderDO.getServeDesc())){
                    if (null!=orderDO.getWarnInfo()) {
                        if (StringUtils.isNotBlank(orderDO.getWarnInfo())){
                            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                            if (jsonObject.containsKey("siestaTimeBegin") && null != jsonObject.get("siestaTimeBegin")) {
                                String siestaTimeBegin = jsonObject.getString("siestaTimeBegin");
                                info.put("info1", "预计午休起床时间: " +DateUtil.getPreTime(siestaTimeBegin,60*5+""));
                            }
                        }
                    }
                    info.put("info2","超时时长: 5小时");
                }
                if ("起夜超时未回床".equals(orderDO.getServeDesc())){
                    if (null!=orderDO.getWarnInfo()){
                        if (StringUtils.isNotBlank(orderDO.getWarnInfo())){
                            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                            if (jsonObject.containsKey("sleepNightRecordList")&&null!=jsonObject.get("sleepNightRecordList")){
                                com.alibaba.fastjson.JSONArray nightArr = jsonObject.getJSONArray("sleepNightRecordList");
                                if (nightArr.size()>0){
                                    com.alibaba.fastjson.JSONObject tmp = nightArr.getJSONObject(0);
                                    String time = tmp.getString("createTime");
                                    info.put("info1","离床时间: "+time);
                                }
                            }
                        }
                    }
                    info.put("info2","离床时长: 2小时");
                }
                if ("超时未上床晚休".equals(orderDO.getServeDesc())){
                    List<BaseSleepPlan> sleepPlan = sleepPlanDao.findByPatient(orderDO.getPatient());
                    if (sleepPlan.size()>0){
                        info.put("info1","预设晚休时间: "+sleepPlan.get(0).getNightRestTime());
                    }
                    info.put("info2","超时时长: 2小时");
                }
                if ("超时未午睡".equals(orderDO.getServeDesc())){
                    List<BaseSleepPlan> sleepPlan = sleepPlanDao.findByPatient(orderDO.getPatient());
                    if (sleepPlan.size()>0){
                        info.put("info1","预设午休时间: "+sleepPlan.get(0).getNapTime());
                    }
                    info.put("info2","5小时");
                }
                if ("疑似发生火灾".equals(orderDO.getServeDesc())){
                    //烟雾浓度
                    if (null!=orderDO.getWarnInfo()){
                        if (StringUtils.isNotBlank(orderDO.getWarnInfo())){
                            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                            if (jsonObject.containsKey("smoke")&&null!=jsonObject.get("smoke")){
                                String value = jsonObject.getString("smoke");
                                if (!value.contains("%")){
                                    value+="%";
                                }
                                info.put("info1","烟雾浓度: "+value);
                            }
                        }
                    }
                }
                if ("疑似燃气泄漏".equals(orderDO.getServeDesc())){
                    //燃气浓度
                    if (null!=orderDO.getWarnInfo()) {
                        if (StringUtils.isNotBlank(orderDO.getWarnInfo())){
                            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                            if (jsonObject.containsKey("gas")&&null!=jsonObject.get("gas")){
                                String value = jsonObject.getString("gas");
                                if (!value.contains("%")) {
                                    value += "%";
                                }
                                info.put("info1", "燃气浓度: "+value);
                            }
                        }
                    }
                }
                if("心率和呼吸频率异常".equals(orderDO.getServeDesc())){
                    if (null!=orderDO.getWarnInfo()){
                        if (StringUtils.isNotBlank(orderDO.getWarnInfo())){
                            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(orderDO.getWarnInfo());
                            if(null!=jsonObject.get("breath")){
                                String breath = jsonObject.getString("breath");
                                if (org.apache.commons.lang3.StringUtils.isNotBlank(breath)){
                                    info.put("info1", "预警频率 "+breath+"次/分钟");
                                }
                            }
                            if(null!=jsonObject.get("heartRate")){
                                String heartRate = jsonObject.getString("heartRate");
                                if (org.apache.commons.lang3.StringUtils.isNotBlank(heartRate)){
                                    info.put("info2", "预警心率: "+heartRate+"次/分钟");
                                }
                            }
                        }
                    }
                }
                map.put("infos",info);
            }
        }
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,count);
    }
    }
    public PageEnvelop getEmergencyWarningListNew(Integer page,Integer pageSize){
    public PageEnvelop getEmergencyWarningListNew(Integer page,Integer pageSize,String patient){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String sql = " select '20' as OrderType,p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient, " +
        String sql = " select '20' as OrderType,p.archive_type archiveType,p.residential_area residentialArea,ord.id,ord.patient, " +
                "p.name,'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status` \n" +
                "from base_emergency_assistance_order ord INNER JOIN base_patient p on ord.patient = p.id order by create_time desc ";
                "p.name,'紧急呼叫' as 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_emergency_assistance_order ord INNER JOIN base_patient p on ord.patient = p.id " ;
        if (StringUtils.isNotBlank(patient)){
            sql +=" and ord.patient='"+patient+"' ";
        }
        sql+=  " order by create_time desc ";
        String countSql = "select count(id) from ("+sql+")A ";
        String countSql = "select count(id) from ("+sql+")A ";
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        long count = jdbcTemplate.queryForObject(countSql,long.class);
        sql +=" limit "+page*pageSize+","+pageSize;
        sql +=" limit "+page*pageSize+","+pageSize;

+ 36 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/CountDistance.java

@ -2,6 +2,7 @@ package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.util.date.DateUtil;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Component;
import java.awt.geom.Point2D;
import java.awt.geom.Point2D;
@ -24,7 +25,7 @@ public class CountDistance {
     * @param lngtwo
     * @param lngtwo
     * @return
     * @return
     */
     */
    public  double getDistance(double latone, double lngone, double lattwo, double lngtwo) {
    public double getDistance(double latone, double lngone, double lattwo, double lngtwo) {
        double radlatone = rad(latone);
        double radlatone = rad(latone);
        double radlattwo = rad(lattwo);
        double radlattwo = rad(lattwo);
        double a = radlatone - radlattwo;
        double a = radlatone - radlattwo;
@ -38,6 +39,40 @@ public class CountDistance {
        return s;
        return s;
    }
    }
    /**
     * 获取坐标点到多边形边缘最小距离  单位:m
     * 多边形按坐标顺序 切首尾相连 A->B->C->A
     * @param point
     * @param points
     * @param pointIndex 返回小数点位数
     * @return
     */
    public  String getPointToEdgeDistance(Point point, List<Point> points,Integer pointIndex) {
        if (points.size()==0){
            return null;
        }
        double dist = Double.MAX_VALUE;
        for (int i=0,j=1;i<points.size()-1&&j<points.size();){
            Point point1 = points.get(i);
            Point point2 = points.get(j);
            double dis = getDistance(point.getX(),point.getY(), point1.getX(), point1.getY());
            double dis2 = getDistance(point.getX(),point.getY(), point2.getX(), point2.getY());
            //如果dis = dis2 该点与边垂直 判断到边的距离
            if (dis==dis2){
                Point pointCenter = new Point((point1.getX()+point2.getX())/2.0,(point1.getY()+point2.getY())/2.0);
                dis2 = getDistance(point.getX(),point.getY(), pointCenter.getX(), pointCenter.getY());
            }
            double min = dis<dis2?dis:dis2;
            if (min<dist){
                dist = min;
            }
            i++;j++;
        }
        dist = dist*1000;
        return String.format("%."+pointIndex+"f",dist);
    }
    /**
    /**
     * 判断坐标是否在多边形区域内
     * 判断坐标是否在多边形区域内

+ 55 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/Point.java

@ -0,0 +1,55 @@
package com.yihu.jw.care.util;
public class Point {
    /**
     * x轴坐标
     */
   public double x;
    /**
     * y轴坐标
     */
    public double y;
    public Point setPoint(Point point){
        this.x = point.getX();
        this.y = point.getY();
        return this;
    }
    public Point() {
    }
    public Point(Float[] point){
        this.x = point[0];
        this.y = point[1];
    }
    public Point(Double[] point) {
        this.x = point[0];
        this.y = point[1];
    }
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public double getX() {
        return x;
    }
    public void setX(double x) {
        this.x = x;
    }
    public double getY() {
        return y;
    }
    public void setY(double y) {
        this.y = y;
    }
}

+ 25 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/org/DeviceDetailDao.java

@ -0,0 +1,25 @@
package com.yihu.jw.care.dao.org;
import com.yihu.jw.entity.care.device.DeviceDetail;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * @author yeshijie on 2018/1/10.
 */
public interface DeviceDetailDao extends PagingAndSortingRepository<DeviceDetail, Long>, JpaSpecificationExecutor<DeviceDetail> {
    @Query(value = "select a.* from wlyy_devices a where a.device_code=?1 limit 0,1",nativeQuery = true)
    DeviceDetail findBySn(String sn);
    List<DeviceDetail> findByDeviceCode(String deviceCode);
    List<DeviceDetail> findBySim(String sim);
    @Query("select a from DeviceDetail a where a.deviceCode = ?1 and a.manufacturerCode = ?2")
    DeviceDetail findByDeviceCodeAndManufacturerCode(String deviceCode,String manufacturerCode);
}

+ 87 - 29
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/order/EmeWarnOrderDayJob.java

@ -1,7 +1,12 @@
package com.yihu.jw.care.job.order;
package com.yihu.jw.care.job.order;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.org.DeviceDetailDao;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.org.dao.BaseOrgDao;
import org.apache.commons.lang.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionContext;
@ -25,6 +30,10 @@ public class EmeWarnOrderDayJob implements Job {
    private JdbcTemplate jdbcTemplate;
    private JdbcTemplate jdbcTemplate;
    @Autowired
    @Autowired
    private ImUtil imUtil;
    private ImUtil imUtil;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private BaseOrgDao orgDao;
    @Override
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
@ -32,46 +41,95 @@ public class EmeWarnOrderDayJob implements Job {
        try {
        try {
            //救助工单>=1天未处理
            //救助工单>=1天未处理
            String sql = " select o.id,o.session_id sessionId,o.patient,o.patient_name patientName,o.create_time,20 as type from " +
            String sql = " select '紧急呼叫' as serverDesc,o.org_code orgCode,o.device_sn,o.serve_lat,o.serve_lon,o.id,o.session_id sessionId,o.patient,o.patient_name patientName,o.create_time,20 as type from " +
                    "base_emergency_assistance_order o where status=1 and (TIMESTAMPDIFF(DAY,o.create_time,now()) >=1) and not EXISTS ( " +
                    "base_emergency_assistance_order o where status=1 and (TIMESTAMPDIFF(DAY,o.create_time,now()) >=1) and not EXISTS ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id) ";
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id) ";
            List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
            List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
            //安防>=1天未处理
            //安防>=1天未处理
            sql = " select o.id,o.patient,o.patient_name patientName,o.serve_desc serverDesc,ct.id consult,22 as type from base_security_monitoring_order o " +
            sql = " select o.serve_desc serverDesc,o.hospital orgCode,o.device_sn,o.serve_lat,o.serve_lon,o.id,o.patient,o.patient_name patientName,o.serve_desc serverDesc,ct.id consult,22 as type from base_security_monitoring_order o " +
                    " INNER JOIN wlyy_consult ct on o.id = ct.relation_code where o.status=1 and (TIMESTAMPDIFF(DAY,o.create_time,now()) >=1 ) and not EXISTS ( " +
                    " INNER JOIN wlyy_consult ct on o.id = ct.relation_code where o.status=1 and (TIMESTAMPDIFF(DAY,o.create_time,now()) >=1 ) and not EXISTS ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id); ";
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id); ";
            list.addAll(jdbcTemplate.queryForList(sql));
            list.addAll(jdbcTemplate.queryForList(sql));
            for (Map<String,Object> map:list){
            for (Map<String,Object> map:list){
                Integer type = Integer.parseInt(map.get("type").toString()) ;
                JSONObject message = null;
                if (20==type){
                    message = new JSONObject();
                    message.put("session_id",map.get("sessionId"));
                    message.put("sender_name",map.get("patientName"));
                    message.put("content_notice",map.get("patientName")+" 发起紧急救助!");
                    message.put("sender_code",map.get("patient"));
                    message.put("OrderType",20);
                    message.put("OrderStatus","new");
                    message.put("order_id",map.get("id"));
                    message.put("content_type",40);
                }else {
                    message = new JSONObject();
                    String sessionId = map.get("patient")+"_"+ map.get("consult") + "_22";
                    message.put("session_id",sessionId);
                    message.put("sender_name",map.get("patientName"));
                    message.put("content_notice",map.get("patientName")+" "+map.get("serverDesc")+"!");
                    message.put("sender_code",map.get("patient"));
                    message.put("OrderType",22);
                    message.put("OrderStatus","new");
                    message.put("order_id",map.get("id"));
                    message.put("content_type",40);
                }
                if (null!=message){
                    imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
                }
                try {
                    Integer type = Integer.parseInt(map.get("type").toString()) ;
                    JSONObject message = null;
                    if (20==type){
                        message = new JSONObject();
                        message.put("session_id",map.get("sessionId"));
                        message.put("sender_name",map.get("patientName"));
                        message.put("content_notice",map.get("patientName")+" 发起紧急救助!");
                        message.put("sender_code",map.get("patient"));
                        message.put("OrderType",20);
                        message.put("OrderStatus","new");
                        message.put("order_id",map.get("id"));
                        message.put("content_type",40);
                        String latLon = map.get("serve_lat").toString()+","+map.get("serve_lon").toString();
                        message.put("latLon",latLon);
                        message.put("serverDesc","紧急呼叫");
                        message.put("categoryCode","");
                        message.put("orgType","");
                        message.put("contactStatus","");
                        if (null!=map.get("device_sn")){
                            String device_sn = map.get("device_sn").toString();
                            if (StringUtils.isNotBlank(device_sn)){
                                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                                if (null!=deviceDetail){
                                    message.put("contactStatus",deviceDetail.getContactStatus());
                                    message.put("categoryCode",deviceDetail.getCategoryCode());
                                }
                            }
                        }
                        String orgCode = map.get("orgCode").toString();
                        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
                        if (null!=orgDO){
                            message.put("orgType",orgDO.getType());
                        }
                    }else {
                        message = new JSONObject();
                        String sessionId = map.get("patient")+"_"+ map.get("consult") + "_22";
                        message.put("session_id",sessionId);
                        message.put("sender_name",map.get("patientName"));
                        message.put("content_notice",map.get("patientName")+" "+map.get("serverDesc")+"!");
                        message.put("sender_code",map.get("patient"));
                        message.put("OrderType",22);
                        message.put("OrderStatus","new");
                        message.put("order_id",map.get("id"));
                        message.put("content_type",40);
                        String latLon = map.get("serve_lat").toString()+","+map.get("serve_lon").toString();
                        message.put("latLon",latLon);
                        message.put("serverDesc",map.get("serverDesc"));
                        message.put("categoryCode","");
                        message.put("orgType","");
                        message.put("contactStatus","");
                        if (null!=map.get("device_sn")){
                            String device_sn = map.get("device_sn").toString();
                            if (StringUtils.isNotBlank(device_sn)){
                                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                                if (null!=deviceDetail){
                                    message.put("contactStatus",deviceDetail.getContactStatus());
                                    message.put("categoryCode",deviceDetail.getCategoryCode());
                                }
                            }
                        }
                        String orgCode = map.get("orgCode").toString();
                        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
                        if (null!=orgDO){
                            message.put("orgType",orgDO.getType());
                        }
                    }
                    if (null!=message){
                        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
                    }
                }catch (Exception e){ }
            }
            }
        }catch (Exception e){
        }catch (Exception e){
            e.printStackTrace();
            e.printStackTrace();

+ 87 - 29
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/order/EmeWarnOrderJob.java

@ -1,7 +1,12 @@
package com.yihu.jw.care.job.order;
package com.yihu.jw.care.job.order;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.org.DeviceDetailDao;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.care.device.DeviceDetail;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.org.dao.BaseOrgDao;
import org.apache.commons.lang.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionContext;
@ -25,6 +30,10 @@ public class EmeWarnOrderJob implements Job {
    private JdbcTemplate jdbcTemplate;
    private JdbcTemplate jdbcTemplate;
    @Autowired
    @Autowired
    private ImUtil imUtil;
    private ImUtil imUtil;
    @Autowired
    private DeviceDetailDao deviceDetailDao;
    @Autowired
    private BaseOrgDao orgDao;
    @Override
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
@ -32,7 +41,7 @@ public class EmeWarnOrderJob implements Job {
        try {
        try {
            //救助工单<=1小时&&<1未处理
            //救助工单<=1小时&&<1未处理
            String sql = " select o.id,o.session_id sessionId,o.patient,o.patient_name patientName,o.create_time,20 as type from " +
            String sql = " select '紧急呼叫' as serverDesc,o.org_code orgCode,o.device_sn,o.serve_lat,o.serve_lon,o.id,o.session_id sessionId,o.patient,o.patient_name patientName,o.create_time,20 as type from " +
                "base_emergency_assistance_order o where status=1 and (TIMESTAMPDIFF(HOUR,o.create_time,now()) >=1 " +
                "base_emergency_assistance_order o where status=1 and (TIMESTAMPDIFF(HOUR,o.create_time,now()) >=1 " +
                "and TIMESTAMPDIFF(HOUR,o.create_time,now()) <24) and not EXISTS ( " +
                "and TIMESTAMPDIFF(HOUR,o.create_time,now()) <24) and not EXISTS ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id) ";
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id) ";
@ -40,40 +49,89 @@ public class EmeWarnOrderJob implements Job {
            List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
            List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
            //安防<=1小时&&<1天未处理
            //安防<=1小时&&<1天未处理
             sql = " select o.id,o.patient,o.patient_name patientName,o.serve_desc serverDesc,ct.id consult,22 as type from base_security_monitoring_order o " +
             sql = " select o.serve_desc serverDesc,o.hospital orgCode,o.device_sn,o.serve_lat,o.serve_lon,o.id,o.patient,o.patient_name patientName,o.serve_desc serverDesc,ct.id consult,22 as type from base_security_monitoring_order o " +
                     " INNER JOIN wlyy_consult ct on o.id = ct.relation_code where o.status=1 and (TIMESTAMPDIFF(HOUR,o.create_time,now()) >=1 " +
                     " INNER JOIN wlyy_consult ct on o.id = ct.relation_code where o.status=1 and (TIMESTAMPDIFF(HOUR,o.create_time,now()) >=1 " +
                     " AND TIMESTAMPDIFF(HOUR,o.create_time,now()) <24) and not EXISTS ( " +
                     " AND TIMESTAMPDIFF(HOUR,o.create_time,now()) <24) and not EXISTS ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id); ";
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id); ";
            list.addAll(jdbcTemplate.queryForList(sql));
            list.addAll(jdbcTemplate.queryForList(sql));
            for (Map<String,Object> map:list){
            for (Map<String,Object> map:list){
                Integer type = Integer.parseInt(map.get("type").toString()) ;
                JSONObject message = null;
                if (20==type){
                    message = new JSONObject();
                    message.put("session_id",map.get("sessionId"));
                    message.put("sender_name",map.get("patientName"));
                    message.put("content_notice",map.get("patientName")+" 发起紧急救助!");
                    message.put("sender_code",map.get("patient"));
                    message.put("OrderType",20);
                    message.put("OrderStatus","new");
                    message.put("order_id",map.get("id"));
                    message.put("content_type",40);
                }else {
                    message = new JSONObject();
                    String sessionId = map.get("patient")+"_"+ map.get("consult") + "_22";
                    message.put("session_id",sessionId);
                    message.put("sender_name",map.get("patientName"));
                    message.put("content_notice",map.get("patientName")+" "+map.get("serverDesc")+"!");
                    message.put("sender_code",map.get("patient"));
                    message.put("OrderType",22);
                    message.put("OrderStatus","new");
                    message.put("order_id",map.get("id"));
                    message.put("content_type",40);
                }
                if (null!=message){
                    imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
                }
                try {
                    Integer type = Integer.parseInt(map.get("type").toString()) ;
                    JSONObject message = null;
                    if (20==type){
                        message = new JSONObject();
                        message.put("session_id",map.get("sessionId"));
                        message.put("sender_name",map.get("patientName"));
                        message.put("content_notice",map.get("patientName")+" 发起紧急救助!");
                        message.put("sender_code",map.get("patient"));
                        message.put("OrderType",20);
                        message.put("OrderStatus","new");
                        message.put("order_id",map.get("id"));
                        message.put("content_type",40);
                        String latLon = map.get("serve_lat").toString()+","+map.get("serve_lon").toString();
                        message.put("latLon",latLon);
                        message.put("serverDesc","紧急呼叫");
                        message.put("categoryCode","");
                        message.put("orgType","");
                        message.put("contactStatus","");
                        if (null!=map.get("device_sn")){
                            String device_sn = map.get("device_sn").toString();
                            if (StringUtils.isNotBlank(device_sn)){
                                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                                if (null!=deviceDetail){
                                    message.put("contactStatus",deviceDetail.getContactStatus());
                                    message.put("categoryCode",deviceDetail.getCategoryCode());
                                }
                            }
                        }
                        String orgCode = map.get("orgCode").toString();
                        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
                        if (null!=orgDO){
                            message.put("orgType",orgDO.getType());
                        }
                    }else {
                        message = new JSONObject();
                        String sessionId = map.get("patient")+"_"+ map.get("consult") + "_22";
                        message.put("session_id",sessionId);
                        message.put("sender_name",map.get("patientName"));
                        message.put("content_notice",map.get("patientName")+" "+map.get("serverDesc")+"!");
                        message.put("sender_code",map.get("patient"));
                        message.put("OrderType",22);
                        message.put("OrderStatus","new");
                        message.put("order_id",map.get("id"));
                        message.put("content_type",40);
                        String latLon = map.get("serve_lat").toString()+","+map.get("serve_lon").toString();
                        message.put("latLon",latLon);
                        message.put("serverDesc",map.get("serverDesc"));
                        message.put("categoryCode","");
                        message.put("orgType","");
                        message.put("contactStatus","");
                        if (null!=map.get("device_sn")){
                            String device_sn = map.get("device_sn").toString();
                            if (StringUtils.isNotBlank(device_sn)){
                                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                                if (null!=deviceDetail){
                                    message.put("contactStatus",deviceDetail.getContactStatus());
                                    message.put("categoryCode",deviceDetail.getCategoryCode());
                                }
                            }
                        }
                        String orgCode = map.get("orgCode").toString();
                        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
                        if (null!=orgDO){
                            message.put("orgType",orgDO.getType());
                        }
                    }
                    if (null!=message){
                        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
                    }
                }catch (Exception e){}
            }
            }
        }catch (Exception e){
        }catch (Exception e){
            e.printStackTrace();
            e.printStackTrace();

+ 3 - 0
svr/svr-cloud-transfor/readme.MD

@ -0,0 +1,3 @@
医养转发项目
爱牵挂推送医养杭州服务器有问题,公司的iot项目请求有时会失败
新增处理转发