Переглянути джерело

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

liubing 3 роки тому
батько
коміт
a1db04ffdc
27 змінених файлів з 647 додано та 52 видалено
  1. 1 0
      business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java
  2. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DevicePatientHealthIndex.java
  3. 9 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/emergency/EmergencyOrderVO.java
  4. 30 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  5. 1 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseSleepDeviceReportDao.java
  6. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/PatientConsultEndpoint.java
  7. 12 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PadDeviceController.java
  8. 24 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java
  9. 7 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java
  10. 33 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  11. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  12. 2 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultService.java
  13. 3 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/contacts/ContactsService.java
  14. 145 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  15. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/OnlineContactService.java
  16. 1 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/prescription/BaseCarePrescriptionService.java
  17. 6 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java
  18. 6 5
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  19. 1 0
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/DeviceController.java
  20. 107 10
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java
  21. 1 1
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/YsDeviceService.java
  22. 20 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java
  23. 81 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/order/EmeWarnOrderDayJob.java
  24. 83 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/order/EmeWarnOrderJob.java
  25. 7 1
      svr/svr-cloud-job/src/main/resources/system.properties
  26. 49 0
      svr/svr-cloud-transfor/src/main/java/com/yihu/jw/care/RequestParamUtil.java
  27. 12 17
      svr/svr-cloud-transfor/src/main/java/com/yihu/jw/care/controller/TransforController.java

+ 1 - 0
business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java

@ -779,6 +779,7 @@ public class ImUtil {
	public static final String SESSION_TYPE_SECURITY_WARN = "22";//安防咨询
	public static final String SESSION_TYPE_ONLINE = "23";//新生儿在线咨询
	public static final String SESSION_TYPE_ONLINEAged = "24";//老人在线咨询
	public static final String SESSION_TYPE_HealthConsult = "25";//老人在线咨询
	public static final String CONTENT_TYPE_TEXT = "1";
	

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DevicePatientHealthIndex.java

@ -35,8 +35,8 @@ public class DevicePatientHealthIndex extends IdEntity {
	private String value6;
	// 睡前
	private String value7;
	// 健康指标类型(1血糖,2血压,3体重/身高/BMI,4腰围,5心率,6体温)
	// 健康指标类型(1血糖,2血压,3体重/身高/BMI,4腰围,5心率,6体温,7呼吸)
	private Integer type;
	// 记录时间
	private Date recordDate;

+ 9 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/emergency/EmergencyOrderVO.java

@ -53,6 +53,7 @@ public class EmergencyOrderVO {
    private List<BaseEmergencyWarnLogDO> orderLogInfo;
    private List<PatientSosContactsDO> sosContacts;//紧急联系人
    private List<Map<String,Object>> securityDevices;//安防设备列表
    private String overTimeNotResponse;
    public String getId() {
        return id;
@ -285,4 +286,12 @@ public class EmergencyOrderVO {
    public void setSecurityDevices(List<Map<String, Object>> securityDevices) {
        this.securityDevices = securityDevices;
    }
    public String getOverTimeNotResponse() {
        return overTimeNotResponse;
    }
    public void setOverTimeNotResponse(String overTimeNotResponse) {
        this.overTimeNotResponse = overTimeNotResponse;
    }
}

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

@ -1427,6 +1427,36 @@ public class DateUtil {
        return result.toString();
    }
    /**
     *  返回 两个时间间隔天数/小时数
     * @param date1 当前时间
     * @param date2 过去时间
     * @return
     */
    public static String getDifferentTimeInfo1(Date date1, Date date2){
        if (date1 == null || date2 == null){
            return null;
        }
        String result = null;
        long millisecondsDiff = date1.getTime() - date2.getTime();
        long secondsDiff = millisecondsDiff / TimeUnit.SECONDS.toMillis(1L);
        long minutesDiff = millisecondsDiff / TimeUnit.MINUTES.toMillis(1L);
        long hoursDiff = millisecondsDiff / TimeUnit.HOURS.toMillis(1L);
        long daysDiff = millisecondsDiff / TimeUnit.DAYS.toMillis(1L);
        long hourFieldDiff = hoursDiff - TimeUnit.DAYS.toHours(daysDiff);
        long minuteFieldDiff = minutesDiff - TimeUnit.HOURS.toMinutes(hoursDiff);
        long secondFieldDiff = secondsDiff - TimeUnit.MINUTES.toSeconds(minutesDiff);
        if (daysDiff > 0L) {
            result = (String.format("%d天", daysDiff));
            return result.toString();
        }
        else if (hourFieldDiff > 0L) {
            result=String.format("%d小时", hourFieldDiff);
        }
        return result;
    }
    /**
     * 1970年1月1日来的 秒转化成时间
     * @param seconds

+ 1 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseSleepDeviceReportDao.java

@ -8,5 +8,4 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 * Created by Bing on 2021/8/12.
 */
public interface BaseSleepDeviceReportDao extends PagingAndSortingRepository<BaseSleepDeviceReport,Long> ,
        JpaSpecificationExecutor<BaseSleepDeviceReport> {
}
        JpaSpecificationExecutor<BaseSleepDeviceReport> {}

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

@ -293,7 +293,7 @@ public class PatientConsultEndpoint extends EnvelopRestEndpoint {
			@RequestParam(value = "patientCode",required = false) String patientCode) {
		try {
			int resutl = consultService.finish(consult,patientCode,1);
			BasePatientDO basePatientDO = basePatientService.findByIdAndDel(patientCode);
			BasePatientDO basePatientDO = basePatientDao.findById(patientCode);
			JSONObject msgObj = new JSONObject();
			msgObj.put("msg",basePatientDO.getName()+"结束了咨询");
			msgObj.put("consultcode",consult);

+ 12 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PadDeviceController.java

@ -241,4 +241,16 @@ public class PadDeviceController extends BaseController {
        }
    }
    @RequestMapping(value ="open/getPatientSafeArea",method = RequestMethod.GET)
    @ApiOperation(value = "获取患者安全区域")
    public String openGetPatientSafeArea(@ApiParam(name = "patient", value = "patient", defaultValue = "patient")
                                     @RequestParam(value = "patient", required = true) String patient){
        try {
            return write(200,"获取成功","data",contactsService.getPatientSafeArea(patient));
        }catch (Exception e){
            return errorResult(e);
        }
    }
}

+ 24 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java

@ -13,6 +13,7 @@ import com.yihu.jw.entity.care.device.BaseSleepPlan;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.util.entity.ServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -435,6 +436,27 @@ public class PatientDeviceController extends BaseController {
        }
    }
    @ApiOperation("获取睡眠带睡眠报告")
    @RequestMapping(value ="getSleepReport",method = RequestMethod.GET)
    public String getSleepReport(@ApiParam(name="patient")@RequestParam(value = "patient",required = false)String patient,
                                     @ApiParam(name="deviceSn")@RequestParam(value = "deviceSn",required = false)String deviceSn,
                                     @ApiParam(name="day")@RequestParam(value = "day",required = false)String day){
        try {
            if (StringUtils.isBlank(patient)&&StringUtils.isBlank(deviceSn)){
                return error(-1,"请求参数");
            }
            JSONObject result = patientDeviceService.getSleepReport(patient,deviceSn,day);
            if (ResponseContant.success==result.getInt(ResponseContant.resultFlag)){
                return write(200,"获取成功","data",result.getJSONObject(ResponseContant.resultMsg));
            }else {
                return error(-1,result.getString(ResponseContant.resultMsg));
            }
        }catch (Exception e){
            return errorResult(e);
        }
    }
    @ApiOperation("获取设备详情数据 --设备可多人绑定查询数据时与patient无关")
    @RequestMapping(value = "getPatientDeviceData",method = RequestMethod.GET)
    public String getPatientDeviceData(@ApiParam(name="patient")
@ -453,4 +475,6 @@ public class PatientDeviceController extends BaseController {
        }
    }
}

+ 7 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java

@ -520,6 +520,8 @@ public class SignEndpoint extends EnvelopRestEndpoint {
    public PageEnvelop<List<Map<String,Object>>> archiveList (
            @ApiParam(name = "doctorId", value = "医生id", required = false)
            @RequestParam(value = "doctorId",required = false) String doctorId,
            @ApiParam(name = "userRole", value = "管理员权限,没有传空", required = false)
            @RequestParam(value = "userRole",required = false) String userRole,
            @ApiParam(name = "signStatus", value = "签约状态", required = false)
            @RequestParam(value = "signStatus",required = false) Integer signStatus,
            @ApiParam(name = "name", value = "居民姓名", required = false)
@ -532,7 +534,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isBlank(doctorId)&&StringUtils.isBlank(name)){
                return PageEnvelop.getError("请求参数错误");
            }
            return archiveService.archiveList(doctorId,page,size,signStatus,name);
            return archiveService.archiveList(doctorId,userRole,page,size,signStatus,name);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
@ -576,9 +578,11 @@ public class SignEndpoint extends EnvelopRestEndpoint {
    public ListEnvelop getServerDoctorAll(@ApiParam(name = "patient", value = "患者id", required = true)
                                          @RequestParam(value = "patient") String patient,
                                          @ApiParam(name = "onlineFlag", value = "获取在线状态获取 0不获取 1获取", required = false)
                                          @RequestParam(value = "onlineFlag",required = false) String onlineFlag){
                                          @RequestParam(value = "onlineFlag",required = false) String onlineFlag,
                                          @ApiParam(name = "doctorLevel", value = "医生类型 1社区 2助老", required = false)
                                          @RequestParam(value = "doctorLevel",required = false) String doctorLevel){
        try {
            return ListEnvelop.getSuccess("查询成功",servicePackageService.getServerDoctorAll(patient,onlineFlag));
            return ListEnvelop.getSuccess("查询成功",servicePackageService.getServerDoctorAll(patient,onlineFlag,doctorLevel));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }

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

@ -15,6 +15,7 @@ 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.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -155,7 +156,7 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
                                       @RequestParam(value = "patient")String patient,
                                       @ApiParam(name="deviceSN")
                                       @RequestParam(value = "deviceSN")String deviceSn,
                                       @ApiParam(name="type",value = "0全部 1日常监护 2预警记录")
                                       @ApiParam(name="type",value = "0全部 1日常监护 2预警记录(工单列表)")
                                       @RequestParam(value = "type",required = false)String type,
                                       @ApiParam(name="page")
                                       @RequestParam(value = "page")Integer page,
@ -174,6 +175,37 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("获取睡眠带睡眠报告")
    @RequestMapping(value ="getSleepReport",method = RequestMethod.GET)
    public ObjEnvelop getSleepReport(@ApiParam(name="patient")@RequestParam(value = "patient",required = false)String patient,
                                     @ApiParam(name="deviceSn")@RequestParam(value = "deviceSn",required = false)String deviceSn,
                                     @ApiParam(name="day")@RequestParam(value = "day",required = false)String day){
        try {
            if (StringUtils.isBlank(patient)&&StringUtils.isBlank(deviceSn)){
                return ObjEnvelop.getError("请求参数");
            }
            org.json.JSONObject result = patientDeviceService.getSleepReport(patient,deviceSn,day);
            if (ResponseContant.success==result.getInt(ResponseContant.resultFlag)){
                return ObjEnvelop.getSuccess("获取成功",result.get(ResponseContant.resultMsg));
            }else {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("获取烟雾/燃气浓度列表")
    @RequestMapping(value ="getSmokeOrGasList",method = RequestMethod.GET)
    public ListEnvelop getSmokeOrGasList(@ApiParam(name="deviceSn")@RequestParam(value = "deviceSn",required = true)String deviceSn,
                                         @ApiParam(name="day",value = "yyyy-MM-dd")@RequestParam(value = "day",required = false)String day){
        try {
            return ListEnvelop.getSuccess("获取成功",patientDeviceService.getSmokeOrGasList(deviceSn,day));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
    /********************v1.1.0**************************/
    @GetMapping(value = "getGiveEarlyWarning")

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

@ -351,6 +351,9 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        for (BaseEmergencyWarnLogDO tmp:logDOS){
            tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(),tmp.getCreateTime(),0));
        }
        if (logDOS.size()==0&&1==emergencyOrderVO.getStatus()){//未响应
            emergencyOrderVO.setOverTimeNotResponse(DateUtil.getDifferentTimeInfo1(new Date(),assistanceDO.getCreateTime()));
        }
        emergencyOrderVO.setOrderLogInfo(logDOS);
        List<PatientSosContactsDO> contactsDOS = contactsService.getPatientSosContacts(assistanceDO.getPatient());
        emergencyOrderVO.setSosContacts(contactsDOS);

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

@ -243,7 +243,7 @@ public class ConsultService {
        List<Map<String,Object>> result = hibenateUtils.createSQLQuery(sql,page,pagesize);
        Map<String,Integer> unreadNum = new HashedMap();
        for (Map<String,Object> map:result){
            if(type.equals(ImUtil.SESSION_TYPE_ONLINE)||type.equals(ImUtil.SESSION_TYPE_ONLINEAged)){
            if(type.equals(ImUtil.SESSION_TYPE_ONLINE)||type.equals(ImUtil.SESSION_TYPE_ONLINEAged)||type.equals(ImUtil.SESSION_TYPE_HealthConsult)){
                String sessionId = patient+"_"+String.valueOf(map.get("doctorCode"))+"_"+type;
                //新增未读消息数量
                if(unreadNum.containsKey(sessionId)){
@ -477,7 +477,7 @@ public class ConsultService {
                }
            }
            if(type.equals(ImUtil.SESSION_TYPE_ONLINE)||type.equals(ImUtil.SESSION_TYPE_ONLINEAged)){
            if(type.equals(ImUtil.SESSION_TYPE_ONLINE)||type.equals(ImUtil.SESSION_TYPE_ONLINEAged)||type.equals(ImUtil.SESSION_TYPE_HealthConsult)){
                String sessionId = String.valueOf(map.get("patient"))+"_"+doctor+"_"+type;
                //新增未读消息数量
                Integer count = imUtil.UserSessionsUnreadMessageCount(sessionId,doctor);

+ 3 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/contacts/ContactsService.java

@ -303,9 +303,7 @@ public class ContactsService {
        JSONObject result = new JSONObject();
        List<PatientSosContactsDO> list = sosContactsDao.findByPatientOrderByUpdateTimeDesc(patient);
        JSONArray jsonArray = JSONArray.parseArray(jsonStr);
        if (0==isUpdate){
            sosContactsDao.updateByPatient("updateByPatient");
        }else {
        if (1==isUpdate){//新增联系人
            for (int i=0;i<jsonArray.size();i++){
                list = sosContactsDao.findByPatientAndDel(patient,1);
                JSONObject obj = jsonArray.getJSONObject(i);
@ -329,6 +327,7 @@ public class ContactsService {
                    contactsDO = new PatientSosContactsDO();
                    contactsDO.setPhoneSeqid(1==seqid?2:1);
                }
                contactsDO.setErrorInfo(null);
                contactsDO.setUpdateInfo(null);
                contactsDO.setDel(1);
                contactsDO.setPatient(patient);
@ -337,9 +336,9 @@ public class ContactsService {
                contactsDO.setRelation(Integer.parseInt(relation));
                contactsDO.setSuccessFlag(0);
                sosContactsDao.save(contactsDO);
            }
        }
        sosContactsDao.updateByPatient(patient);//改为待同步状态
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"修改成功");
        return result;

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

@ -44,6 +44,7 @@ import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
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.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -948,6 +949,54 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
            Map<String, Object> devInfo = jdbcTemplate.queryForMap(sql);
            devInfo.put("patient", patient);
            devInfo.put("sosContactsDOS", new ArrayList<>());
            //v1.4获取设备在线状态、数据采集量、异常指标量、
            sql =" select contact_status  from wlyy_devices where device_code='"+deviceSn+"' ";
            List<String> onLineStatus = jdbcTemplate.queryForList(sql,String.class);
            if (onLineStatus.size()>0){
                devInfo.put("contactStatus",onLineStatus.get(0));
            }else {
                devInfo.put("contactStatus",0);//在线状态
            }
            //数据采集量
            if(1==device.getDeviceType()){//安防设备
                sql = " select count(id) from device_data_push_log where device_sn='"+deviceSn+"' ";
                Long dataCount = jdbcTemplate.queryForObject(sql,Long.class);
                devInfo.put("dataCount",dataCount);//
                sql = " select sum(total) from (\n" +
                        "select count(id) total from base_emergency_assistance_order where device_sn='"+deviceSn+"'\n" +
                        "UNION ALL\n" +
                        "select count(id) total from base_security_monitoring_order where device_sn='"+deviceSn+"'" +
                        ")A ";
                Long orderCount = jdbcTemplate.queryForObject(sql,Long.class);
                devInfo.put("errorCount",orderCount);//         //异常量
            }else if (2==device.getDeviceType()){//健康设备
                sql = " select count(id) from wlyy_patient_health_index where device_sn ='"+deviceSn+"' ";
                Long dataCount = jdbcTemplate.queryForObject(sql,Long.class);
                devInfo.put("dataCount",dataCount);//异常量
                sql += " and status =1 ";
                dataCount = jdbcTemplate.queryForObject(sql,Long.class);
                devInfo.put("errorCount",dataCount);//异常量
            }
            //v1.4获取其绑定设备的居民列表 //todo 各平台全部对接后外层无用字段删除(患者相关,如patientName,orgCode等)
            sql =" select  p.id patient,p.photo,p.name,case p.sex when 1 then '男' when 2 then '女' else sex end as sex,TIMESTAMPDIFF(year,p.birthday,now()) as age, \n" +
                    "p.residential_area residentialArea,p.mobile,p.idcard,p.address from base_patient p INNER JOIN wlyy_patient_device pd on p.id = pd.user and pd.del=0  " +
                    "where 1=1 and pd.device_sn='"+deviceSn+"' ";
            List<Map<String,Object>> patientList = jdbcTemplate.queryForList(sql);
            for (Map<String,Object>map :patientList){
                String patientStr = map.get("patient").toString();
                sql ="SELECT GROUP_CONCAT(Distinct sp.org_name) orgName FROM base_service_package_record spr INNER JOIN base_service_package sp on " +
                        " spr.service_package_id = sp.id AND spr.patient = '"+patientStr+"' where sp.org_code " +
                        " IS NOT NULL GROUP BY spr.patient ";
                List<String> orgs = jdbcTemplate.queryForList(sql,String.class);
                if (orgs.size()>0){
                    map.put("orgName", orgs.get(0));
                }
            }
            devInfo.put("patientList",patientList);
            String dataSql = "";
            String recordSql = "";
            List<Map<String, Object>> dataList = new ArrayList<>();
@ -1091,6 +1140,97 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        return result;
    }
    /**
     * 获取睡眠带 睡眠报告
     * @param patient
     * @param deviceSn
     * @param day
     * @return
     */
    public JSONObject getSleepReport(String patient,String deviceSn,String day){
        JSONObject result = new JSONObject();
        String sql = " select * from base_sleep_device where 1=1 ";
        if (StringUtils.isNotBlank(patient)){
            sql +=" and patient='"+patient+"'";
        }
        if (StringUtils.isNotBlank(deviceSn)){
            sql += " and device_sn='"+deviceSn+"' ";
        }
        if (StringUtils.isNotBlank(day)){
            sql +=" and create_time>="+day+" 00:00:00 and create_time<'"+day+"' 23:59:59 ";
        }else   {
            sql +=" order by create_time desc ";
        }
        sql +=" limit 1 ";
        List<BaseSleepDeviceReport> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseSleepDeviceReport.class));
        if (list.size()>0){
            result.put(ResponseContant.resultFlag,ResponseContant.success);
            result.put(ResponseContant.resultMsg,list.get(0));
        }else {
            result.put(ResponseContant.resultFlag,ResponseContant.fail);
            result.put(ResponseContant.resultMsg,"无睡眠记录");
        }
        return result;
    }
    /**
     * 烟感、气感设备浓度列表获取
     */
    public List<Map<String,Object>> getSmokeOrGasList(String deviceSn,String day){
        List<Map<String,Object>> result = new ArrayList<>();
        Date now = new Date();
        String nowDay =  DateUtil.getStringDateShort();
        if (StringUtils.isBlank(day)){
            day = nowDay;
        }
        String timeBeginStr = day+" 00:00:00";
        String timeEndStr = "";
        if (nowDay.equals(day)){//同一天
            timeEndStr = DateUtil.dateToStr(now,DateUtil.yyyy_MM_dd_HH_mm_ss);
        }else {
            timeEndStr = day+ " 23:59:59";
        }
        Date timeBegin = DateUtil.strToDate(timeBeginStr,DateUtil.yyyy_MM_dd_HH_mm_ss);
        Date timeEnd = DateUtil.strToDate(timeEndStr,DateUtil.yyyy_MM_dd_HH_mm_ss);
        String sql = " SELECT r.value,CAST(DATE_FORMAT(r.create_time,'%Y-%m-%d %H:%i:%S') as char) create_time " +
                " from wlyy_patient_device pd,base_device_health_index r WHERE pd.device_sn = r.device_sn " +
                " and r.device_sn='"+deviceSn+"' and r.create_time>='"+timeBeginStr+"' and r.create_time<='"+timeEndStr+"' " +
                " order by r.create_time asc";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        //遍历时间区间,无数据时间点产生数据
        int i=0; //list遍历索引
        int length = list.size();
        Date prTimeBegin = timeBegin;
        Date listIndexTime = null;
        if (length>0){
            listIndexTime = DateUtil.strToDate(list.get(0).get("create_time").toString(),DateUtil.yyyy_MM_dd_HH_mm_ss);
        }
        for (;timeEnd.after(timeBegin);){
            timeBegin =  DateUtil.getNextMin(timeBegin,15);
            Map<String,Object> map = new HashMap<>();
            if (length>0&&i<length){
                if ((prTimeBegin.before(listIndexTime)||prTimeBegin.equals(listIndexTime))&&(timeBegin.after(listIndexTime)||timeBegin.equals(listIndexTime))){
                    map.put("value",Double.parseDouble( list.get(i).get("value").toString()));
                    map.put("createTime",list.get(i).get("create_time").toString());
                    i++;
                    if (i<length){
                        listIndexTime = DateUtil.strToDate(list.get(i).get("create_time").toString(),DateUtil.yyyy_MM_dd_HH_mm_ss);
                    }
                }else {
                    map.put("value",0.00);
                    map.put("createTime",DateUtil.dateToStr(timeBegin,DateUtil.yyyy_MM_dd_HH_mm_ss));
                }
            }else {
                map.put("value",0.00);
                map.put("createTime",DateUtil.dateToStr(timeBegin,DateUtil.yyyy_MM_dd_HH_mm_ss));
            }
            result.add(map);
        }
        return result;
    }
    /**
     * 根据设备sn及居民code获取居民有效的设备绑定数据
     * @param deviceSn 设备sn码
@ -1253,6 +1393,10 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
            long count = jdbcTemplate.queryForObject(sqlCount,long.class);
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> map:list){
            }
            String str = JSON.toJSONString(list,SerializerFeature.WriteMapNullValue);
            com.alibaba.fastjson.JSONArray arr = com.alibaba.fastjson.JSONArray.parseArray(str);
@ -1309,7 +1453,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
            Date dateNow = new Date();
            Date dateNow1 = DateUtil.strToDate(DateUtil.getStringDateShort()+" 08:00:00");
            Date dateNow2 = DateUtil.strToDate(DateUtil.getStringDateShort()+" 20:00:00");
            List<String> noWarnDays = new ArrayList<>();
            List<String> noWarnDays = new ArrayList<>();//无预警记录
            String dateTmp = "";
            if (dateNow.after(dateNow1)){
                dateTmp = DateUtil.dateToStr(dateNow1,DateUtil.yyyy_MM_dd_HH_mm_ss);

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/OnlineContactService.java

@ -131,7 +131,7 @@ public class OnlineContactService extends BaseJpaService<BasePatientDO, BasePati
        JSONArray doctorArr = JSON.parseArray(doctors);
        JSONArray patientArr = JSON.parseArray(patients);
        if (doctorArr.size()==0){//取签约医生其中一个
          List<Map<String,Object>> signDoctors =  servicePackageService.getServerDoctorAll(patient,null);
          List<Map<String,Object>> signDoctors =  servicePackageService.getServerDoctorAll(patient,null,null);
          if (signDoctors.size()>0){
              Map<String,Object> tmp = signDoctors.get(0);
              JSONObject tmpObj = new JSONObject();

+ 1 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/prescription/BaseCarePrescriptionService.java

@ -55,6 +55,7 @@ public class BaseCarePrescriptionService {
                "     case p.sex " +
                "     when 1 then '男'  " +
                "     when 2 then '女' " +
                "     else sex "+
                "     end AS sex," +
                "     'prescription' as type, " +
                "     TIMESTAMPDIFF(year,p.birthday,NOW()) AS age  ";

+ 6 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java

@ -80,13 +80,17 @@ public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
        return json;
    }
    public PageEnvelop<List<Map<String,Object>>> archiveList(String doctorId, int page, int size,Integer signStatus,String name){
    public PageEnvelop<List<Map<String,Object>>> archiveList(String doctorId,String admin, int page, int size,Integer signStatus,String name){
        String sql = " select * from ( SELECT a.create_time,p.openid,p.pad_imei padImei,p.idcard,p.mobile,p.name,p.sex,p.id,p.photo,CAST(a.sign_status AS char) sign_status ";
        String countSql = "SELECT count(*) from ( ";
        String filters = "from wlyy_archive a,base_patient p " +
                "WHERE  a.patient = p.id ";
        if(StringUtils.isNotBlank(doctorId)){
        if (StringUtils.isNotBlank(admin)){//管理员展示所有档案
        }
        else if(StringUtils.isNotBlank(doctorId)){
            filters += " and a.doctor_code = '"+doctorId+"'";
        }
        if(signStatus!=null){

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

@ -162,9 +162,6 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
            }
        }
    }
@ -617,7 +614,7 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        return result;
    }
    public List<Map<String,Object>> getServerDoctorAll(String patient,String onlineFlag){
    public List<Map<String,Object>> getServerDoctorAll(String patient,String onlineFlag,String doctorLevel){
        String sql="SELECT DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,CASE WHEN doc.doctor_level=1 " +
                " THEN '(社区医生)' ELSE '(助老员)' END) as name,doc.photo,doc.mobile,doc.job_title_name as jobName,doc.job_title_code as job, " +
                " 0 as onLineFlag,org.code,org.name as orgName " +
@ -625,7 +622,11 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
                "base_service_package pack,base_org org " +
                "WHERE sr.patient='"+patient+"' and sr.status=1  and m.team_code = r.team_code and " +
                " m.doctor_code = doc.id and sr.id=r.sign_id and pack.id = r.service_package_id and pack.org_code = org.code " +
                " and m.del = '1' group by doc.id";
                " and m.del = '1' ";
        if (StringUtils.isNotBlank(doctorLevel)){
         sql += " and doc.doctor_level= "+doctorLevel;
        }
        sql += "group by doc.id";
        List<Map<String,Object>>result = jdbcTemplate.queryForList(sql);
        if ("1".equals(onlineFlag)){//展示是否在线
            String listStr = imUtil.getOnlineListByType("helper");

+ 1 - 0
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/DeviceController.java

@ -296,6 +296,7 @@ public class DeviceController {
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂-睡眠带接收,请求参数:"+paraString+"\n"+(endTime-startTime)+"ms");
            dataPushLogUtil.savePushLog(device,paraString,"睡眠带数据接收");
            deviceService.sleepHealthIndex(device,heartrate,breath,time_begin);
            return success();
        } catch (Exception e) {
            e.printStackTrace();

+ 107 - 10
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java

@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@ -37,6 +38,7 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import javax.servlet.http.HttpServletRequest;
import java.text.MessageFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -144,8 +146,14 @@ public class DeviceService {
    public void aqgsos(String imei,String label_mac,String time_begin, HttpServletRequest request) {
        try {
            String address= request.getParameter("address");
            Double lat= Double.parseDouble(request.getParameter("lat"));
            Double lon= Double.parseDouble(request.getParameter("lon"));
            Double lat= null;
            Double lon= null;
            if (null==request.getParameter("lat")||null==request.getParameter("lon")){//呼叫时可能无该参数
            }else {
                lat= Double.parseDouble(request.getParameter("lat"));
                lon= Double.parseDouble(request.getParameter("lon"));
            }
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(imei);
            if (devicePatientDeviceDos.size()>0){
                DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
@ -158,10 +166,27 @@ public class DeviceService {
                logDO.setDeviceSn(deviceDO.getDeviceSn());
                logDO.setCreateTime(new Date());
                if (deviceDO.getCategoryCode().equals("4")) {
                    JSONObject position = gpsUtil.gcj02_To_Bd09(lat,lon);
                    logDO.setSosAddress(address);
                    logDO.setSosLat(position.getDouble("lat")+"");
                    logDO.setSosLon(position.getDouble("lon")+"");
                    if (null==lat||null==lon){//获取最新定位
                        String url = cloudCareUrl+"cloudCare/noLogin/device/getDeviceLastLocation";
                        List<NameValuePair> params = new ArrayList<>();
                        params.add(new BasicNameValuePair("deviceSn", imei));
                        String response = httpClientUtil.get(url, params,"UTF-8");
                        JSONObject resObj = JSONObject.parseObject(response);
                        if (resObj.getInteger("status")==200){
                            lat = resObj.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lat");
                            lon = resObj.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lon");
                            address = resObj.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getString("address").replace(" ","");
                            logDO.setSosAddress(address);
                            logDO.setSosLat(lat+"");
                            logDO.setSosLon(lon+"");
                        }
                    }
                    else {
                        JSONObject position = gpsUtil.gcj02_To_Bd09(lat,lon);
                        logDO.setSosAddress(address);
                        logDO.setSosLat(position.getDouble("lat")+"");
                        logDO.setSosLon(position.getDouble("lon")+"");
                    }
                }
                if (deviceDO.getCategoryCode().equals("7")) {
                    logDO.setSosAddress(deviceDO.getSosAddress());
@ -620,6 +645,7 @@ public class DeviceService {
                                        planDetail.setBedStatus(1);
                                        planDetail.setBreath(breath);
                                        planDetail.setHeartRate(heartrate);
                                        sleepPlanDetailDao.save(planDetail);
                                        outBedOrder(null, timeDate,devicePatientDeviceDos.get(0), patient, device, "超时未起床", JSON.toJSONStringWithDateFormat(planDetail, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
                                        orderCreate = true;
                                    }
@ -634,6 +660,7 @@ public class DeviceService {
                                    if (timeDiffer>3600*siestaLongWarn*1000){
                                        planDetail.setSiestaStatus(0);
                                        planDetail.setBedStatus(0);
                                        sleepPlanDetailDao.save(planDetail);
                                        outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"超时未午睡",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                        orderCreate=true;
                                    }
@ -658,6 +685,7 @@ public class DeviceService {
                                            planDetail.setSiestaTimeEnd(timeDate);//设置临时结束时间但不计算时长 避免重复发起工单
                                            planDetail.setBreath(breath);
                                            planDetail.setHeartRate(heartrate);
                                            sleepPlanDetailDao.save(planDetail);
                                            outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"午睡超时未起床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                            orderCreate=true;
                                        }
@ -698,6 +726,7 @@ public class DeviceService {
                                        planDetail.setInStatus(0);
                                        planDetail.setBedStatus(1);
                                        planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                        sleepPlanDetailDao.save(planDetail);
                                        outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"超时未上床晚休",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                        orderCreate=true;
                                    }
@ -716,6 +745,7 @@ public class DeviceService {
                                        if (timeDiffer>3600*nightLongWarn*1000&&0==records.get(0).getStatus()){//超过2未回床小时 触发工单
                                            planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                            planDetail.setBedStatus(0);
                                            sleepPlanDetailDao.save(planDetail);
                                            outBedOrder(records.get(0),timeDate,devicePatientDeviceDos.get(0),patient,device,"起夜超时未回床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                            orderCreate=true;
                                        }
@ -877,6 +907,13 @@ public class DeviceService {
    @Async
    public void byOnlineStatus(String device,String onlinestatu,String time_begin){
        try {
            if(StringUtils.isNotBlank(device)){
                List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(device);
                if (devicePatientDeviceDos.size()>0){
                    DevicePatientDevice tmp = devicePatientDeviceDos.get(0);
                    patientDeviceDao.save(tmp);
                }
            }
            DeviceDetail deviceDetail = deviceDetailDao.findBySn(device);
            if(deviceDetail!=null){
                deviceDetail.setContactStatus(Integer.parseInt(onlinestatu));
@ -894,9 +931,69 @@ public class DeviceService {
        }
    }
    public static void main(String[] args) {
        String ss="123123,2323";
        System.out.println(String.join(",",ss));
    //睡眠带心率呼吸数据
    @Async
    public void sleepHealthIndex(String device,String heartrate,String breath,String time_begin) {
        List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(device);
        if (devicePatientDeviceDos.size() > 0) {
            Integer theshold_breath_h = 25;
            Integer theshold_breath_l = 8;
            Integer theshold_heartrate_h = 100;
            Integer theshold_heartrate_l = 50;
            if (StringUtils.isNotBlank(heartrate)) {
                if (!"0".equals(heartrate)) {
                    DevicePatientDevice devicePatientDevice = devicePatientDeviceDos.get(0);
                    BasePatientDO patientDO = patientDao.findById(devicePatientDevice.getUser());
                    DevicePatientHealthIndex patientHealthIndex = new DevicePatientHealthIndex();
                    patientHealthIndex.setName(patientDO.getName());
                    patientHealthIndex.setDeviceSn(device);
                    patientHealthIndex.setUser(devicePatientDevice.getUser());
                    patientHealthIndex.setIdcard(devicePatientDevice.getUserIdcard());
                    patientHealthIndex.setValue1(heartrate + "");
                    patientHealthIndex.setType(5);
                    Date recordDate = DateUtil.strToDate(time_begin);
                    patientHealthIndex.setRecordDate(recordDate);
                    patientHealthIndex.setSortDate(recordDate);
                    patientHealthIndex.setCzrq(new Date());
                    patientHealthIndex.setStatus(0);
                    Integer heartrate1 = Integer.parseInt(heartrate);
                    if (heartrate1>theshold_heartrate_h||theshold_heartrate_h<theshold_heartrate_l){
                        patientHealthIndex.setStatus(1);
                    }
                    else {
                        patientHealthIndex.setStatus(0);
                    }
                    patientHealthIndex.setDel("1");
                    healthIndexDao.save(patientHealthIndex);
                }
            }
            if (StringUtils.isNotBlank(breath)){
                if (!"0".equals(breath)){
                    DevicePatientDevice devicePatientDevice = devicePatientDeviceDos.get(0);
                    BasePatientDO patientDO = patientDao.findById(devicePatientDevice.getUser());
                    DevicePatientHealthIndex patientHealthIndex = new DevicePatientHealthIndex();
                    patientHealthIndex.setName(patientDO.getName());
                    patientHealthIndex.setDeviceSn(device);
                    patientHealthIndex.setUser(devicePatientDevice.getUser());
                    patientHealthIndex.setIdcard(devicePatientDevice.getUserIdcard());
                    patientHealthIndex.setValue1(heartrate + "");
                    patientHealthIndex.setType(7);
                    Date recordDate = DateUtil.strToDate(time_begin);
                    patientHealthIndex.setRecordDate(recordDate);
                    patientHealthIndex.setSortDate(recordDate);
                    patientHealthIndex.setCzrq(new Date());
                    Integer breath1 = Integer.parseInt(breath);
                    if (breath1>theshold_breath_h||breath1<theshold_breath_l){
                        patientHealthIndex.setStatus(1);
                    }else {
                        patientHealthIndex.setStatus(0);
                    }
                    patientHealthIndex.setStatus(0);
                    patientHealthIndex.setDel("1");
                    healthIndexDao.save(patientHealthIndex);
                }
            }
        }
    }
}

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

@ -214,7 +214,6 @@ public class YsDeviceService {
                                if ("tumble_detection".equals(alarmType)){//tumble_detection跌倒类型    //有人出现SmartHumanDet
                                    fallFlag = true;
                                    deviceSN = bodyJsonObj2.getString("devSerial");//设备SN
                                    dataPushLogUtil.savePushLog(deviceSN,bodyJsonObj.toJSONString(bodyJsonObj,SerializerFeature.WriteMapNullValue),"萤石监控跌倒数据接收");
                                    if (bodyJsonObj2.containsKey("pictureList")&&bodyJsonObj2.getJSONArray("pictureList")!=null){
                                        JSONArray pictureList = bodyJsonObj2.getJSONArray("pictureList");
                                        if (pictureList.size()>0){
@ -260,6 +259,7 @@ public class YsDeviceService {
                String deviceSN = bodyJsonObj2.getString("devSerial");//设备SN
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(deviceSN);
                dataPushLogUtil.savePushLog(deviceSN,bodyJsonObj.toJSONString(bodyJsonObj,SerializerFeature.WriteMapNullValue),"跌倒监护摄像头数据接收");
                if (deviceDetail!=null){
                    deviceDetail.setContactStatus(1);
                    deviceDetailDao.save(deviceDetail);

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

@ -8,6 +8,8 @@ import com.yihu.jw.care.job.device.PatientSosContactsJob;
import com.yihu.jw.care.job.message.DoctorSendUnreadJob;
import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.job.order.CancelPayOrderJob;
import com.yihu.jw.care.job.order.EmeWarnOrderDayJob;
import com.yihu.jw.care.job.order.EmeWarnOrderJob;
import com.yihu.jw.care.util.SystemConf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -93,6 +95,24 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("DEVICE_LOST_ASSOCIATION_JOB exist");
            }
            //#居民紧急预警工单超时未处理弹框推送
            if (!quartzHelper.isExistJob("EME_WARNING_OVERTIME_NOT_RESPONSE")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("EME_WARNING_OVERTIME_NOT_RESPONSE");
                quartzHelper.addJob(EmeWarnOrderJob.class, trigger, "EME_WARNING_OVERTIME_NOT_RESPONSE", new HashMap<String, Object>());
                logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE success");
            } else {
                logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE exist");
            }
            //#居民紧急预警工单超时未处理弹框推送
            if (!quartzHelper.isExistJob("EME_WARNING_OVERTIME_NOT_RESPONSE_DAY")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("EME_WARNING_OVERTIME_NOT_RESPONSE_DAY");
                quartzHelper.addJob(EmeWarnOrderDayJob.class, trigger, "EME_WARNING_OVERTIME_NOT_RESPONSE_DAY", new HashMap<String, Object>());
                logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE_DAY success");
            } else {
                logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE_DAY exist");
            }
        } catch (Exception e) {
            logger.info(" job start failed");
        }

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

@ -0,0 +1,81 @@
package com.yihu.jw.care.job.order;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.im.util.ImUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2021/10/14.
 */
@DisallowConcurrentExecution//解决执行频率和间隔时间的问题。到了执行时间点前一任务还在执行中,不会执行下一次任务,直至该次任务完成
public class EmeWarnOrderDayJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(EmeWarnOrderDayJob.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ImUtil imUtil;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE start");
        try {
            //救助工单>=1天未处理
            String sql = " select 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 ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id) ";
            List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
            //安防>=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 " +
                    " 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); ";
            list.addAll(jdbcTemplate.queryForList(sql));
            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());
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE end");
    }
}

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

@ -0,0 +1,83 @@
package com.yihu.jw.care.job.order;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.im.util.ImUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
/**
 * Created by Bing on 2021/10/14.
 */
@DisallowConcurrentExecution//解决执行频率和间隔时间的问题。到了执行时间点前一任务还在执行中,不会执行下一次任务,直至该次任务完成
public class EmeWarnOrderJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(EmeWarnOrderJob.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ImUtil imUtil;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE start");
        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 " +
                "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 ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id) ";
            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 " +
                     " 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 ( " +
                    " select 1 from base_emergency_warn_log log where log.order_id = o.id); ";
            list.addAll(jdbcTemplate.queryForList(sql));
            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());
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        logger.info("EME_WARNING_OVERTIME_NOT_RESPONSE end");
    }
}

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

@ -18,4 +18,10 @@ CANCEL_PAY_ORDER_OVERTIME_JOB=0 0/3 * * * ?
PATIENT_SOS_CONTACTS_JOB=0 0/2 * * * ?
#\u533B\u517B\u7269\u8054\u7F51\u68C0\u6D4B\u5927\u5C4F\u5931\u8054\u7387
DEVICE_LOST_ASSOCIATION_JOB=0 30 23 * * ?
DEVICE_LOST_ASSOCIATION_JOB=0 30 23 * * ?
#\u7D27\u6025\u9884\u8B66\u5DE5\u5355\u8D85\u65F6\u672A\u54CD\u5E94\u63A8\u9001\u5F39\u6846
EME_WARNING_OVERTIME_NOT_RESPONSE=0 0 * * * ?
#\u7D27\u6025\u9884\u8B66\u5DE5\u5355\u8D85\u65F6\u672A\u54CD\u5E94\u63A8\u9001\u5F39\u68462
EME_WARNING_OVERTIME_NOT_RESPONSE_DAY=0 30 9 * * ?

+ 49 - 0
svr/svr-cloud-transfor/src/main/java/com/yihu/jw/care/RequestParamUtil.java

@ -0,0 +1,49 @@
package com.yihu.jw.care;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * Created by Bing on 2021/10/15.
 */
public class RequestParamUtil {
    public static String getParamUrl( HttpServletRequest request){
        String result = null;
        try {
            String url =  request.getRequestURI();
            String method= request.getMethod();
            if ("GET".equals(method)){
                result = url+"?"+request.getQueryString();
            }else if ("POST".equals(method)){
                String paramEnd = "";
                Map<String, String[]> parameterMap =  request.getParameterMap();
                for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
                    String k = entry.getKey();
                    String[] v = entry.getValue();
                    List<String> paramList = Arrays.asList(v.clone());
                    String paramStr = paramList.stream().map(String::valueOf).collect(Collectors.joining(","));
                    if (StringUtils.isNotBlank(paramStr)){
                        paramEnd += k+"="+paramStr+"&";
                    }
                }
                if (StringUtils.isNotBlank(paramEnd)){
                   paramEnd = paramEnd.substring(0,paramEnd.length()-1);
                   result = url+"?"+paramEnd;
                }
            }
            return result;
        }catch (Exception e){
            e.printStackTrace();
            return result;
        }
    }
}

+ 12 - 17
svr/svr-cloud-transfor/src/main/java/com/yihu/jw/care/controller/TransforController.java

@ -2,6 +2,7 @@ package com.yihu.jw.care.controller;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.RequestParamUtil;
import com.yihu.jw.care.service.AqgService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -43,7 +44,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/aqgsos?imei="+imei+"&label_mac="+label_mac+"&time_begin="+time_begin;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂设备sos数据接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -69,7 +70,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/aqgSwitch?imei="+imei+"&remaining_power="+remaining_power+"&time_begin="+time_begin+"&type="+type;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂设备开关机数据接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -93,7 +94,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/pushdata?deviceid="+deviceid+"&communityid="+communityid+"&type="+type;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂设备消息通知数据接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -129,8 +130,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/byLocation?imei="+imei+"&is_reply="+is_reply+"&is_track="+is_track+"&city="+city
                    +"&address="+address+"&lon="+lon+"&lat="+lat+"&time_begin="+time_begin+"&type="+type;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂位置接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -159,7 +159,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/byHeartRate?imei="+imei+"&heartrate="+heartrate+"&time_begin="+time_begin+"&theshold_heartrate_h="+theshold_heartrate_h+"&theshold_heartrate_l="+theshold_heartrate_l;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂心率数据接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -189,7 +189,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/byBloodPressure?imei="+imei+"&dbp="+dbp+"&time_begin="+time_begin+"&dbp_l="+dbp_l+"&sbp="+sbp+"&sbp_h="+sbp_h;
            String url =RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂血压数据接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -221,7 +221,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/byFall?imei="+imei+"&city="+city+"&address="+address+"&lon="+lon+"&lat="+lat+"&time_begin="+time_begin+"&type="+type;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂跌倒数据接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -245,7 +245,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/bySteps?imei="+imei+"&value="+value+"&time_begin="+time_begin;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("设备步数接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -278,8 +278,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/bySleep?device="+device+"&heartrate="+heartrate+"&time_begin="+time_begin
                    +"&breath="+breath+"&bed_status="+bed_status+"&turn_over="+turn_over+"&is_warn="+is_warn;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂-睡眠带睡眠接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -336,11 +335,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/bySleep?device="+device+"&date="+date+"&fallasleep="+fallasleep+"&sleepTime="+sleepTime
                    +"&restTime="+restTime+"&bed_status="+bed_status+"&awakeTime="+awakeTime+"&lightTime="+lightTime
                    +"&remTime="+remTime+"&deepTime="+deepTime+"&bucket="+bucket+"&avghr="+avghr
                    +"&avgbr="+avgbr+"&awakePer="+awakePer+"&remPer="+remPer+"&lightPer="+lightPer
                    +"&deepPer="+deepPer+"&efficiency="+efficiency+"&score="+score;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂-睡眠带睡眠报告接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);
@ -364,7 +359,7 @@ public class TransforController {
        try {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            String url = "device/byOnlineStatus?device="+device+"&onlinestatu="+onlinestatu+"&time_begin="+time_begin;
            String url = RequestParamUtil.getParamUrl(request);
            String result = aqgService.aqgForward(url);
            long endTime=System.currentTimeMillis();
            logger.info("爱牵挂-睡眠带wifi在线状态接收,请求参数:"+paraString+" "+(endTime-startTime)+"ms; 响应:"+result);