Browse Source

代码修改

liubing 3 years ago
parent
commit
75cf18c292
18 changed files with 532 additions and 6 deletions
  1. 3 0
      business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java
  2. 12 0
      common/common-entity/sql记录
  3. 73 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java
  4. 9 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java
  5. 1 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java
  6. 2 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/device/DeviceManageEndpoint.java
  7. 20 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaConfirmDao.java
  8. 9 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java
  9. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/family/FamilyMemberEndpoint.java
  10. 16 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/PatientMessageEndpoint.java
  11. 85 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/safeArea/DoctorSafeAreaController.java
  12. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java
  13. 18 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java
  14. 124 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  15. 57 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java
  16. 55 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/safeArea/SafeAreaService.java
  17. 31 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  18. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java

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

@ -69,4 +69,7 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Query("DELETE FROM SystemMessageDO where type='43' and relationCode in(?1) ")
    void delMessageByRelationCode(List<String> relationCode);
    @Modifying
    @Query("update SystemMessageDO m set m.isRead=1 ,m.over=0 where m.type=?1 and m.relationCode=?2 ")
    void readByTypeAndRelationCode(String type,String relationCode);
}

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

@ -1589,3 +1589,15 @@ CREATE TABLE `dm_ys_config` (
-- 2021-11-11
alter table base_patient  add column `home_lat_lon` varchar(100) DEFAULT NULL COMMENT '居民家庭经纬度';
ALTER table wlyy_patient_safe_area add column manage_status TINYINT(2) default '0' COMMENT '电子围栏确认情况 0待确认 1已确认';
ALTER TABLE wlyy_patient_safe_area add column  `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废';
CREATE TABLE wlyy_patient_safe_area_confirm (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `patient` varchar(50) DEFAULT NULL COMMENT '居民id',
	 doctor_code varchar(50) DEFAULT NULL COMMENT '助老员code',
	`safe_id` varchar(50) DEFAULT NULL COMMENT '安全区域id 关联居民电子围栏id',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建日期',
  `manage_status` tinyint(2) DEFAULT '0' COMMENT '电子围栏确认情况 0待确认 1已确认',
  `del` varchar(1) DEFAULT '1' COMMENT '作废标识,1正常,0作废',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='患者电子围栏新增记录';

+ 73 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaConfirm.java

@ -0,0 +1,73 @@
package com.yihu.jw.entity.care.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Bing on 2021/11/16.
 */
@Entity
@Table(name="wlyy_patient_safe_area_confirm")
public class PatientSafeAreaConfirm extends IdEntity {
    private String patient;
    private String doctorCode;//助老员code
    private String safeId; //安全区域id 关联居民电子围栏id
    private String del;//作废标识,1正常,0作废
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认
    private Date createTime;
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
    public String getSafeId() {
        return safeId;
    }
    public void setSafeId(String safeId) {
        this.safeId = safeId;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    public Integer getManageStatus() {
        return manageStatus;
    }
    public void setManageStatus(Integer manageStatus) {
        this.manageStatus = manageStatus;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/PatientSafeAreaDO.java

@ -21,6 +21,7 @@ public class PatientSafeAreaDO extends IdEntity {
    private Date createTime;
    private Date updateTime;
    private String del;//作废标识,1正常,0作废
    private Integer manageStatus;//电子围栏确认情况 0待确认 1已确认
    public String getPatient() {
@ -73,4 +74,12 @@ public class PatientSafeAreaDO extends IdEntity {
    public void setManageStatus(Integer manageStatus) {
        this.manageStatus = manageStatus;
    }
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
}

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

@ -22,6 +22,7 @@ public class SystemMessageDO extends UuidIdentityEntity {
     * 人文关怀系统消息 41
     * 体征设备测量系统消息 42
     * 设备离线系统消息 43
     * 监护确认消息 44
     * 家属紧急预警系统消息 50
     * 新生儿在线咨询 850
     * 老人在线咨询 851

+ 2 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/device/DeviceManageEndpoint.java

@ -303,6 +303,7 @@ public class DeviceManageEndpoint extends EnvelopRestEndpoint {
                }
                if (!StringUtils.isEmpty(errorMsg.trim())) {
                    deviceDetail.setErrorMsg(errorMsg);
                    deviceDetail.setDeviceCode(deviceCode);
                    errorLs.add(deviceDetail);
                    continue;
                }
@ -334,7 +335,7 @@ public class DeviceManageEndpoint extends EnvelopRestEndpoint {
            map.put("successNum", correctLs.size());
            map.put("failedNum", rows-1 - correctLs.size() );
            map.put("errorData", JSON.toJSONString(errorMsgMapTotal, SerializerFeature.WriteMapNullValue));
            map.put("errorData", errorLs);
            map.put("errorDataList", errorLs);
            return ObjEnvelop.getSuccess("success",JSON.toJSONString(map,SerializerFeature.WriteMapNullValue));
        } catch (Exception e) {

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

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaConfirm;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface PatientSafeAreaConfirmDao extends PagingAndSortingRepository<PatientSafeAreaConfirm,Long>,
        JpaSpecificationExecutor<PatientSafeAreaConfirm> {
    List<PatientSafeAreaConfirm> findByDoctorCodeAndPatient(String doctorCode,String patient);
    @Modifying
    @Query(value = "update  PatientSafeAreaConfirm p set p.manageStatus=1 where p.patient=?1")
    void manageByPatient(String patient);
}

+ 9 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/PatientSafeAreaDao.java

@ -3,6 +3,7 @@ package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
@ -13,9 +14,17 @@ import java.util.List;
public interface PatientSafeAreaDao extends PagingAndSortingRepository<PatientSafeAreaDO,Long>,
        JpaSpecificationExecutor<PatientSafeAreaDO> {
    @Query(value = " select p from PatientSafeAreaDO p where p.patient=?1 and p.del='1' and p.manageStatus=1 ")
    List<PatientSafeAreaDO> findByPatient(String patient);
    @Query(value = " select p from PatientSafeAreaDO p where p.patient=?1 and p.del='1'")
    List<PatientSafeAreaDO> findByPatient2(String patient);
    @Modifying
    @Query(value = "update PatientSafeAreaDO p set p.del='0' where p.patient=?1 ")
    void deleteByPatient(String patient);
    @Modifying
    @Query(value = " update PatientSafeAreaDO p set p.manageStatus=1 where p.patient=?1")
    void manageByPatient(String patient);
}

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/family/FamilyMemberEndpoint.java

@ -118,7 +118,7 @@ public class FamilyMemberEndpoint extends EnvelopRestEndpoint {
            if (result.getInteger(ResponseContant.resultFlag)==ResponseContant.success){
                return success("添加成功");
            }else {
                return success(result.getString(ResponseContant.resultMsg));
                return Envelop.getError(result.getString(ResponseContant.resultMsg));
            }
        } catch (Exception e) {
            return failedException2(e);

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

@ -115,5 +115,21 @@ public class PatientMessageEndpoint extends EnvelopRestEndpoint {
            return failedException2(e);
        }
    }
        @PostMapping(value = "/ConfirmFences")
    @ApiOperation("家属确认电子围栏监护消息")
    @ObserverRequired
    public Envelop ConfirmFences(@ApiParam(name = "messageId",required = true)
                                 @RequestParam(value = "messageId")String messageId,
                                 @ApiParam(name = "safe_area",value = "lon1,lat1;lon2,lat2; 5个坐标 形成一个封闭区域  A;B;C;D;A ")
                                 @RequestParam(value = "safe_area",required = false)String safe_area){
        try {
            patientMessageService.ConfirmFences(messageId,safe_area);
            return Envelop.getSuccess("修改成功");
        }catch (Exception e){
            return failedException2(e);
        }
    }
}

+ 85 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/safeArea/DoctorSafeAreaController.java

@ -0,0 +1,85 @@
package com.yihu.jw.care.endpoint.safeArea;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.safeArea.SafeAreaService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ObjEnvelop;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Bing on 2021/11/16.
 */
@RestController
@RequestMapping(value = "doctor/safeArea")
@Api(description = " 医生电子围栏")
public class DoctorSafeAreaController extends EnvelopRestEndpoint {
    @Autowired
    private PatientDeviceService patientDeviceService;
    @Autowired
    private SafeAreaService safeAreaService;
    @ApiOperation("助老员新增电子围栏记录")
    @RequestMapping(value = "doctorNewSafeArea",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeArea(@ApiParam(name = "doctor",value = "doctor")
                                    @RequestParam(value = "doctor",required = false)String doctor,
                                        @ApiParam(name = "patient",value = "患者")
                                    @RequestParam(value = "patient",required = false)String patient,
                                        @ApiParam(name = "safe_area",value = "lon1,lat1;lon2,lat2; 5个坐标 形成一个封闭区域  A;B;C;D;A ")
                                    @RequestParam(value = "safe_area",required = false)String safe_area
    ){
        try {
            com.alibaba.fastjson.JSONObject result = patientDeviceService.doctorNewSafeArea(doctor,patient,safe_area);
            if (result.getInteger(ResponseContant.resultFlag)==ResponseContant.success){
                return ObjEnvelop.getSuccess("添加成功","");
            }else {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("查看新增围栏记录tab")
    @RequestMapping(value = "doctorNewSafeAreaTab",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeArea(@ApiParam(name = "doctor",value = "doctor")
                                        @RequestParam(value = "doctor",required = false)String doctor,
                                        @ApiParam(name = "manageStatus",value = "患者")
                                        @RequestParam(value = "manageStatus",required = false)Integer manageStatus
    ){
        try {
            return ObjEnvelop.getSuccess("获取成功",safeAreaService.doctorNewSafeAreaTab(doctor,manageStatus));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("查看新增围栏记录列表")
    @RequestMapping(value = "doctorNewSafeAreaList",method = RequestMethod.GET)
    public ObjEnvelop doctorNewSafeAreaList(@ApiParam(name = "doctor",value = "doctor")
                                        @RequestParam(value = "doctor",required = false)String doctor,
                                        @ApiParam(name = "manageStatus",value = "管理状态 0 1")
                                        @RequestParam(value = "manageStatus",required = false)Integer manageStatus
    ){
        try {
            try {
                return ObjEnvelop.getSuccess("获取成功",safeAreaService.doctorNewSafeAreaList(doctor,manageStatus));
            }catch (Exception e){
                return failedObjEnvelopException2(e);
            }
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 13 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/security/SecurityMonitoringOrderEndpoint.java

@ -345,6 +345,19 @@ public class SecurityMonitoringOrderEndpoint extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("助老员端获取日常监护居民")
    @GetMapping(value = "findMonitorPatientsByDoctor")
    @ResponseBody
    public ObjEnvelop findMonitorPatientsByDoctor(@ApiParam(name = "doctor",  required = true)@RequestParam(value = "doctor")String doctor,
                                                  @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = true)
                                                  @RequestParam(value = "topicItem",required = true,defaultValue = "preventLost") String topicItem) {
        try {
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.findMonitorPatientsByDoctor(doctor,topicItem));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("获取居民签约专题信息")
    @RequestMapping(value = "patientSignTopicInfo", method = {RequestMethod.POST, RequestMethod.GET})
    @ResponseBody

+ 18 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java

@ -22,10 +22,12 @@ import com.yihu.jw.im.dao.ConsultTeamDao;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -65,6 +67,8 @@ public class ConsultTeamService {
    private PatientDoorCoachOrderService patientDoorCoachOrderService;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    private Logger logger= LoggerFactory.getLogger(ConsultTeamService.class);
@ -197,6 +201,11 @@ public class ConsultTeamService {
        JSONObject participants = new JSONObject();
        participants.put(patient, 0);
        JSONArray familyArr =  familyMemberService.getPatientMembers(patient,null,null,null,"1,3");
        JSONObject templateJson = new JSONObject();
        templateJson.put("id",orderId);
        templateJson.put("OrderType",20);
        for (int i=0;i<familyArr.size();i++){
            JSONObject tmp = familyArr.getJSONObject(i);
            String patientId = tmp.getString("id");
@ -223,6 +232,8 @@ public class ConsultTeamService {
                messageDO.setIsRead("0");
                messageDO.setCreateTime(new Date());
                systemMessageDao.save(messageDO);
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","jjhjyctz",patientDO.getOpenid(),patientDO.getName()+"发起紧急呼叫",null,null,36,templateJson, DateUtil.getStringDate(),"紧急呼叫",title+",请及时核实处理");
            }
        }
@ -354,7 +365,7 @@ public class ConsultTeamService {
     * @return
     * @throws Exception
     */
    public JSONObject addSecurityMoConsult(String orderId,String patient,String agent,String symptoms) throws Exception {
    public JSONObject addSecurityMoConsult(String orderId,String patient,String agent,String symptoms,String serverDesc) throws Exception {
        JSONObject result = new JSONObject();
        // 判断居民是否已经签约
@ -376,7 +387,7 @@ public class ConsultTeamService {
        }
        //咨询记录
        String title = patientDO.getName() + "疑似离开安全区域";
        String title = patientDO.getName() + serverDesc;
        ConsultDo consult = addConsult(patient,title,symptoms,patientDO.getPhone(),22);
        //咨询详细信息
@ -406,6 +417,9 @@ public class ConsultTeamService {
        participants.put(patient, 0);
        //家属
        JSONArray familyArr =  familyMemberService.getPatientMembers(patient,null,null,null,"1,3");
        JSONObject templateJson = new JSONObject();
        templateJson.put("id",orderId);
        templateJson.put("OrderType",22);
        for (int i=0;i<familyArr.size();i++){
            JSONObject tmp = familyArr.getJSONObject(i);
            String patientId = tmp.getString("id");
@ -433,6 +447,8 @@ public class ConsultTeamService {
                messageDO.setIsRead("0");
                messageDO.setCreateTime(new Date());
                systemMessageDao.save(messageDO);
                messageUtil.putTemplateWxMessage(wxId,"template_error_notice","afjhyctz",patientDO.getOpenid(),title,null,null,36,templateJson, DateUtil.getStringDate(),"安防监护",title+",请及时核实处理");
            }
        }

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

@ -30,6 +30,7 @@ import com.yihu.jw.util.healthIndex.HealthIndexUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.annotations.Synchronize;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
@ -48,6 +49,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
@ -125,6 +127,11 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    private PatientSafeAreaDao safeAreaDao;
    @Autowired
    private SecurityMonitoringOrderDao securityMonitoringOrderDao;
    @Autowired
    private MessageUtil messageUtil;
    @Autowired
    private PatientSafeAreaConfirmDao patientSafeAreaConfirmDao;
    @PostConstruct
    public void init() {
@ -1774,7 +1781,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    }
    /**
     *
     *      修改电子围栏信息
     *    | enable       |  否  | Int          |  0,1 是否启用                        |
     *    | name         |  否  | String       |   安全区名称                           |
     *    | freq         |  否  | Boolean      |  0,触发一天;1,每日触发        |
@ -1816,6 +1823,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                safeAreaDao.deleteByPatient(patient);
            }
            else{//新增或修改
                safeAreaDO.setDel("1");
                safeAreaDO.setSafeAreaGz(safe_area);
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setSuccessFlag(-1);
@ -1870,6 +1878,75 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        return "success";
    }
    /**
     * 助老员新增电子围栏记录
     */
    public com.alibaba.fastjson.JSONObject doctorNewSafeArea(String doctor,String patient,String safe_area) throws Exception{
        com.alibaba.fastjson.JSONObject result = new com.alibaba.fastjson.JSONObject();
        List<PatientSafeAreaConfirm> SafeAreaConfirms = patientSafeAreaConfirmDao.findByDoctorCodeAndPatient(doctor,patient);
        if (SafeAreaConfirms.size()>0){
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"你已为改居民新增过电子围栏!");
            return result;
        }
        BaseDoctorDO doctorDO = doctorDao.findById(doctor);
        PatientSafeAreaDO safeAreaDO = new PatientSafeAreaDO();
        boolean firstAdd=false;
        List<Map<String,Object>> relatives = new ArrayList<>();
        if (StringUtils.isNotBlank(patient)){
            List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient2(patient);
            if (safeAreaDOS.size()>0){
                safeAreaDO = safeAreaDOS.get(0);
            }else {//首次新增
                safeAreaDO.setPatient(patient);
                safeAreaDO.setCreateTime(new Date());
                safeAreaDO.setUpdateTime(new Date());
                safeAreaDO.setSuccessFlag(-1);
                safeAreaDO.setDel("1");
                // 发送确认消息给家属 有家属直接确认
                String sql = " select  t2.id,t2.name from  base_patient_family_member t1,  base_patient t2 where  " +
                        "t2.id in (select family_member from base_patient_family_member where patient = '"+patient+"' )  " +
                        " and t1.patient = '"+patient+"'  and t1.family_member = t2.id  " +
                        " and t2.archive_type=3 GROUP BY t2.id " ;
                relatives = jdbcTemplate.queryForList(sql);
                safeAreaDO.setManageStatus(relatives.size()>0?0:1);
                firstAdd=true;
            }
            safeAreaDO.setSafeAreaGz(safe_area);
            safeAreaDO.setUpdateTime(new Date());
            safeAreaDO.setSuccessFlag(-1);
            safeAreaDO = safeAreaDao.save(safeAreaDO);
            PatientSafeAreaConfirm patientSafeAreaConfirm = new PatientSafeAreaConfirm();
            patientSafeAreaConfirm.setPatient(patient);
            patientSafeAreaConfirm.setDoctorCode(doctor);
            patientSafeAreaConfirm.setDel("1");
            patientSafeAreaConfirm.setCreateTime(new Date());
            patientSafeAreaConfirm.setSafeId(safeAreaDO.getId()+"");
            if(firstAdd&&(null == safeAreaDO.getManageStatus()||0 == safeAreaDO.getManageStatus())){//首次添加给家属发送待确认消息
                patientSafeAreaConfirm.setManageStatus(0);
                for (Map<String,Object> tmp:relatives){
                    messageUtil.saveSystemMessage("",patient,"监护确认","44",doctorDO.getId(),doctorDO.getName(),tmp.get("id").toString(),
                            tmp.get("name").toString(),null,null,"0" );
                }
            }else {//无家属 直接确认
                patientSafeAreaConfirm.setManageStatus(1);
               Integer successFlag =  updatePatientSafeArea(patient,safe_area);
               safeAreaDO.setSuccessFlag(successFlag);
                safeAreaDao.save(safeAreaDO);
            }
            patientSafeAreaConfirmDao.save(patientSafeAreaConfirm);
        }
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"添加成功");
        return result;
    }
    /**
     *获取设备轨迹
     * @param deviceSn
@ -1977,4 +2054,50 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    /******************************************* 爱牵挂设备end *****************************************************/
    public Integer updatePatientSafeArea(String patient,String safe_area){
        List<DevicePatientDevice> devices = patientDeviceDao.findAllByUserAndCategoryCode(patient,"4");
        if (devices.size()>0){
            DevicePatientDevice patientDevice = devices.get(0);
            String deviceSnTmp = patientDevice.getDeviceSn();
            String url ="";
            if ("4".equals(devices.get(0).getCategoryCode())){//手表
                Device device = deviceDao.findOne(devices.get(0).getDeviceId());
                if (device!=null){
                    if ("X1".equals(device.getModel())){
                        url = MessageFormat.format(AqgConfig.X1fence_area, deviceSnTmp,1);
                    }
                }
            }else {
                url = MessageFormat.format(AqgConfig.S3fence_area, deviceSnTmp,1);
            }
            MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
            if (StringUtils.isNotBlank(safe_area)){
                    String[] position = safe_area.split(";");
                    safe_area = "";
                    for (String tmp:position){
                        String[] point = tmp.split(",");
                        safe_area+= gpsUtil.bd09_To_Gcj02_str(Double.parseDouble(point[1]),Double.parseDouble(point[0]))+";";
                    }
            }
            param.add("name", "安全区域1");
            param.add("freq", "1");
            param.add("enable","1");
            param.add("time_begin", "0");
            param.add("time_end", "86400");
            param.add("safe_area", safe_area);
            HttpEntity<com.alibaba.fastjson.JSONObject> response = httpClientUtil.aqgCookieHttp(url, param, HttpMethod.POST, getCookie());
            com.alibaba.fastjson.JSONObject responseObj = response.getBody();
            if (responseObj.getBoolean("success")){
                return 1;
            }
            else {
                return -1;
            }
        }
        return -1;
    }
}

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

@ -1,11 +1,21 @@
package com.yihu.jw.care.service.message;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.config.AqgConfig;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaConfirmDao;
import com.yihu.jw.care.dao.device.PatientSafeAreaDao;
import com.yihu.jw.care.dao.message.OrgNoticeDao;
import com.yihu.jw.care.dao.message.UserNoticeDao;
import com.yihu.jw.care.dao.security.BaseEmergencyWarnLogDao;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.notice.UserNoticeDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.device.Device;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.entity.care.device.PatientSafeAreaConfirm;
import com.yihu.jw.entity.care.device.PatientSafeAreaDO;
import com.yihu.jw.entity.care.message.OrgNoticeDO;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
@ -15,9 +25,15 @@ import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.text.MessageFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -39,6 +55,12 @@ public class PatientMessageService {
    private BasePatientDao patientDao;
    @Autowired
    private BaseEmergencyWarnLogDao logDao;
    @Autowired
    private PatientSafeAreaDao patientSafeAreaDao;
    @Autowired
    private PatientSafeAreaConfirmDao patientSafeAreaConfirmDao;
    @Autowired
    private PatientDeviceService patientDeviceService;
    public PageEnvelop getNoticeList(String patient,String beginTime, String endTime, int page, int size){
        page = page>0?page-1:0;
@ -155,4 +177,39 @@ public class PatientMessageService {
            systemMessageDao.save(systemMessageDO);
        }
    }
    /**
     *
     * @param msgId
     * @param safe_area
     */
    @Transactional(rollbackFor =Exception.class )
    public void ConfirmFences(String msgId,String safe_area){
        SystemMessageDO systemMessageDO = systemMessageDao.findOne(msgId);
        if (systemMessageDO!=null){
            systemMessageDO.setDel("0");
            systemMessageDao.save(systemMessageDO);
        }
        List<PatientSafeAreaDO> patientSafeAreaDOs = patientSafeAreaDao.findByPatient2(systemMessageDO.getRelationCode());
        PatientSafeAreaDO patientSafeAreaDO = null;
        if (patientSafeAreaDOs.size()>0){
            patientSafeAreaDO = patientSafeAreaDOs.get(0);
        }else {
            return;
        }
        if (StringUtils.isNotBlank(safe_area)&&null != patientSafeAreaDO){
            patientSafeAreaDO.setSafeAreaGz(safe_area);
        }
        //更新围栏
        Integer successFlag = patientDeviceService.updatePatientSafeArea(systemMessageDO.getRelationCode(),patientSafeAreaDO.getSafeAreaGz());
        patientSafeAreaDO.setManageStatus(1);
        patientSafeAreaDO.setSuccessFlag(successFlag);
        patientSafeAreaDao.save(patientSafeAreaDO);
        //修改数据
        patientSafeAreaConfirmDao.manageByPatient(patientSafeAreaDO.getPatient());
        systemMessageDao.readByTypeAndRelationCode(patientSafeAreaDO.getPatient(),"44");
    }
}

+ 55 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/safeArea/SafeAreaService.java

@ -0,0 +1,55 @@
package com.yihu.jw.care.service.safeArea;
import com.alibaba.fastjson.JSONObject;
import com.netflix.discovery.converters.Auto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2021/11/16.
 */
@Service
public class SafeAreaService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public JSONObject doctorNewSafeAreaTab(String doctor,Integer manageStatus){
        JSONObject result = new JSONObject();
        result.put("status_all",0);
        result.put("status_0",0);
        result.put("status_1",0);
        String sql = " select manage_status,count(id) 'num' from wlyy_patient_safe_area_confirm where doctor_code='"+doctor+"' ";
        if (null != manageStatus){
            sql += " and manage_status ";
        }
        sql += " GROUP BY manage_status ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        Integer total=0;
        for (Map<String,Object> tmp :list){
            Integer num = Integer.parseInt(tmp.get("num").toString());
            result.put("status_"+tmp.get("manage_status").toString(),num);
            total += num;
        }
        result.put("status_all",total);
        return result;
    }
    public List<Map<String,Object>> doctorNewSafeAreaList(String doctor,Integer manageStatus){
        String sql = " select p.id,p.name,p.sex,p.photo,TIMESTAMPDIFF(year,p.birthday,now()) as age,ac.manage_status manageStatus " +
                " from wlyy_patient_safe_area_confirm ac INNER JOIN base_patient p on ac.patient = p.id where ac.doctor_code='"+doctor+"' ";
        if (null != manageStatus){
            sql += " and ac.manage_status ";
        }
        sql += "GROUP BY p.id ";
        return jdbcTemplate.queryForList(sql);
    }
}

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

@ -244,7 +244,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setServiceStatus("2");
        this.save(orderDO);
        //创建im会话  安防警报咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
        JSONObject IMObj = consultTeamService.addSecurityMoConsult(orderDO.getId(),orderDO.getPatient(),null,null);
        JSONObject IMObj = consultTeamService.addSecurityMoConsult(orderDO.getId(),orderDO.getPatient(),null,null,orderDO.getServeDesc());
        String sessionId=orderDO.getPatient()+"_"+ IMObj.getJSONObject("resultMsg").getString("consult") + "_22";
        orderDO.setSessionId(sessionId);
        if (StringUtils.isNotBlank(orderDO.getServeDesc())){
@ -1406,6 +1406,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        result.put("fire",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleepInfo",null);//最近工单
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
@ -1443,6 +1444,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("sleep",true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                                "and patient='"+patient+"' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql,String.class);
                        if (serveDesces.size()>0){
                            result.put("sleepInfo",serveDesces.get(0));
                        }
                    }else {
                        result.put("sleep",false);
                    }
@ -1472,6 +1479,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        result.put("fire",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleepInfo",null);//最近工单
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
@ -1509,6 +1517,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("sleep",true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                                "and patient='"+patient+"' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql,String.class);
                        if (serveDesces.size()>0){
                            result.put("sleepInfo",serveDesces.get(0));
                        }
                    }else {
                        result.put("sleep",false);
                    }
@ -2044,4 +2058,20 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
    }
    public List<Map<String,Object>> findMonitorPatientsByDoctor(String doctor,String topicItem){
        String sql = " SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                " p.openid,p.sex,p.pad_imei padImei " +
                " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                " and m.doctor_code = '"+doctor+"' and m.del = '1' ";
        String filter =" and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                         " where  pd.user = sr.patient and  FIND_IN_SET(dd.service_topic,'"+topicItem+"')) ";
        if ("preventLost".equals(topicItem)){//有绑定围栏的居民
            filter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
        }
        return jdbcTemplate.queryForList(sql+filter);
    }
}

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

@ -238,6 +238,9 @@ public class MessageUtil {
            case 35:
                wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+json.getString("orderId")+"&isMask=1");
                break;
            case 36://安防、救助工单详情地址
                wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&id="+json.getString("id")+"&OrderType="+json.getString("OrderType"));
                break;
        }
        return wxTemplateConfigDO;
    }