Browse Source

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

wangzhinan 2 years ago
parent
commit
475ec33318

+ 12 - 0
business/push-service/src/main/java/com/yihu/jw/push/dao/GetuiRecordDao.java

@ -0,0 +1,12 @@
package com.yihu.jw.push.dao;
import com.yihu.jw.entity.care.common.GetuiRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface GetuiRecordDao extends PagingAndSortingRepository<GetuiRecordDO, String>, JpaSpecificationExecutor<GetuiRecordDO> {
}

+ 12 - 0
business/push-service/src/main/java/com/yihu/jw/push/service/GetuiService.java

@ -18,8 +18,11 @@ import com.getui.push.v2.sdk.dto.req.message.android.Ups;
import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
import com.yihu.jw.entity.care.common.GetuiRecordDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.push.dao.PushHospitalSysDictDao;
import com.yihu.jw.push.dao.GetuiRecordDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -44,6 +47,8 @@ public class GetuiService {
    private StringRedisTemplate redisTemplate;
    @Autowired
    private PushHospitalSysDictDao sysDictDao;
    @Autowired
    private GetuiRecordDao getuiRecordDao;
    private static final Logger logger = LoggerFactory.getLogger(GetuiService.class);
@ -209,13 +214,20 @@ public class GetuiService {
        // 进行cid单推
        ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
        GetuiRecordDO getuiRecordDO = new GetuiRecordDO();//报错发送日志
        getuiRecordDO.setCid(cid);
        getuiRecordDO.setRequest(json.toJSONString());
        getuiRecordDO.setResponse(JSONObject.toJSONString(apiResult));
        if (apiResult.isSuccess()) {
            // success
            logger.info("发送成功:"+apiResult.getData());
            getuiRecordDO.setStatus(1);
        } else {
            // failed
            logger.info("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
            getuiRecordDO.setStatus(0);
        }
        getuiRecordDao.save(getuiRecordDO);
    }
    /**

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

@ -0,0 +1,57 @@
package com.yihu.jw.entity.care.common;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 个推推送记录
 * Created by yeshijie on 2022/6/6.
 */
@Entity
@Table(name="base_getui_record")
public class GetuiRecordDO extends UuidIdentityEntityWithCreateTime {
    private Integer status;//状态1成功 0失败
    private String cid;
    private String request;
    private String response;
    @Column(name = "status")
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Column(name = "cid")
    public String getCid() {
        return cid;
    }
    public void setCid(String cid) {
        this.cid = cid;
    }
    @Column(name = "request")
    public String getRequest() {
        return request;
    }
    public void setRequest(String request) {
        this.request = request;
    }
    @Column(name = "response")
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
}

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

@ -1,5 +1,6 @@
package com.yihu.jw.care.endpoint.consult;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
@ -145,6 +146,39 @@ public class PatientConsultEndpoint extends EnvelopRestEndpoint {
	@ApiOperation(value = "im推送个推消息")
	public Envelop sendGetuiMessage(String sessionId,String type,String contentType,String senderName,String senderId,String targetId,String content){
		try {
			String zzdMessage = "";
			switch (contentType){
				case "1":
					zzdMessage = senderName+":"+content;
					break;
				case "2":
					zzdMessage = senderName+"发来了一条图片消息";
					break;
				case "3":
					zzdMessage = senderName+"发来了一条语音消息";
					break;
				case "6":
					try {
						JSONObject jsonObject = JSON.parseObject(content);
						zzdMessage = jsonObject.getString("title");
					}catch (Exception e){
						zzdMessage = content;
					}
					break;
				case "7":
					JSONObject jsonObject = JSON.parseObject(content);
					zzdMessage = jsonObject.getString("msg");
					break;
				case "12":
					zzdMessage = senderName+"发来了一条视频消息";
					break;
				case "29":
					zzdMessage = senderName+"邀请您进行语音/视频通话";
					break;
				default:
					logger.info(senderName+":"+content);
					break;
			}
			String body = "收到来自"+senderName+"的一条消息,请关注并及时处理。";
			String peerName = null;
			String sql = "SELECT name from im_internet_hospital.sessions WHERE id = '"+sessionId+"'";
@ -158,8 +192,9 @@ public class PatientConsultEndpoint extends EnvelopRestEndpoint {
			String url = "/chatroom/index?type="+type+"&peerId="+senderId+"&action=callVideo&peerName="+peerName+"&sessionId="+sessionId+"&content="+content;
			logger.info("url="+url);
			messageUtil.sendDoctorGetuiMessage(targetId,"4",url,"im消息",body);
//			messageUtil.sendDoctorDingdingMessage(null,targetId,"text","4",body,null,null);
			if(StringUtils.isNotBlank(zzdMessage)){
				messageUtil.sendDoctorDingdingMessage(null,targetId,"text","4",zzdMessage,null,null);
			}
			return Envelop.getSuccess("请求成功");
		}catch (Exception e){
			e.printStackTrace();

+ 2 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/dingding/DingDingMessageEndpoint.java

@ -28,8 +28,8 @@ public class DingDingMessageEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = "sendDingDingMessageToOne")
    @ApiOperation(value = "发送钉钉消息")
    public ObjEnvelop sendDingDingMessage(@ApiParam @RequestParam(required = false)String sendId,
                                          @ApiParam @RequestParam(required = false)String receiverId,
                                          @ApiParam @RequestParam(required = false)String content,
                                          @ApiParam @RequestParam(required = true)String receiverId,
                                          @ApiParam @RequestParam(required = true)String content,
                                          @ApiParam @RequestParam(required = false,defaultValue = "text")String msgtype,
                                          @ApiParam @RequestParam(required = false)String url,
                                          @ApiParam @RequestParam(required = false)String title){

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

@ -256,9 +256,11 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
                                  @ApiParam(name = "page", value = "第几页")
                                  @RequestParam(value = "page", required = false) Integer page,
                                  @ApiParam(name = "size", value = "页面大小")
                                  @RequestParam(value = "size", required = false) Integer size) {
                                  @RequestParam(value = "size", required = false) Integer size,
                                  @ApiParam(name = "isShow", value = "用于搜索类型区分判断")
                                  @RequestParam(value = "isShow", required = false,defaultValue = "false") Boolean isShow) {
        try {
            return success("修改成功", patientService.findUserByType(type, name, residentialArea,area,level, page, size));
            return success("修改成功", patientService.findUserByType(type, name, residentialArea,area,level, page, size,isShow));
        } catch (Exception e) {
            return failedException2(e);
        }
@ -409,6 +411,22 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "getCareServerList")
    @ApiOperation("获取照护服务列表")
    public PageEnvelop getCareServerList(@ApiParam @RequestParam(required = false) String name,
                                         @ApiParam @RequestParam(required = false) String idCard,
                                         @ApiParam @RequestParam(required = false) String area,
                                         @ApiParam @RequestParam(required = false) Integer status,
                                         @ApiParam @RequestParam(required = false,defaultValue = "1") Integer page,
                                         @ApiParam @RequestParam(required = false,defaultValue = "10") Integer pageSize){
        try{
            return statisticsService.getCareServerList(name, idCard, area, status, page, pageSize);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "getServerSituationItem")
    @ApiOperation("获取老人服务项目数量情况(助老服务、紧急救助、医生服务)")
    public ObjEnvelop getServerSituationItem(@RequestParam(required = true) String endDate,

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

@ -781,7 +781,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
     * @param residentialArea 居住小区
     * @return
     */
    public JSONObject findUserByType(String type,String name,String residentialArea,String area,Integer level,Integer page,Integer size){
    public JSONObject findUserByType(String type,String name,String residentialArea,String area,Integer level,Integer page,Integer size,boolean isShow){
        JSONObject re = new JSONObject();
        if(page == null){
            page = 1;
@ -792,7 +792,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        String limit = " limit "+(page-1)*size+","+size;
        String filter ="";
        if("1".equals(type)||StringUtil.isBlank(type)){//新生儿
        if("1".equals(type)||StringUtil.isBlank(type)||isShow){//新生儿
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
            if(listtmp.size()>0){
@ -805,7 +805,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("child",list);
            re.put("childTotal",findChildTotal(name,residentialArea,filter));
        }
        if("2".equals(type)||"8".equals(type)||StringUtil.isBlank(type)){//老人  //1.7.7增加  需照护老人(孤/独/空)800 + 老人名单
        if(("2".equals(type)||StringUtil.isBlank(type))||(isShow&&"2".equals(type))){//老人  //1.7.7增加  需照护老人(孤/独/空)800 + 老人名单
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -819,7 +819,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("old",list);
            re.put("oldTotal",findOldTotal(type,name,residentialArea,area,level,filter));
        }
        if("3".equals(type)||StringUtil.isBlank(type)){//社工
        if("3".equals(type)||StringUtil.isBlank(type)||isShow){//社工
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -833,7 +833,24 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("helperTotal",findHelperTotal(name,area,level,filter));
        }
        if("5".equals(type)||StringUtils.isBlank(type)){//老人家属
        if("4".equals(type)||StringUtils.isBlank(type)||isShow){
            String nameDoctorSql = "";
            if (StringUtils.isNotBlank(name))nameDoctorSql = " and d.name like '%"+name+"%' ";
            String testDoctorSql= " SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_doctor'";
            String doctorSql = "SELECT d.id,d.photo,d.`name`,d.openid,h.org_name FROM " +
                    "base_doctor d,base_doctor_hospital h WHERE d.id=h.doctor_code" +
                    " AND h.del = 1 AND d.del = 1 AND d.doctor_level = 1 "+nameDoctorSql+" AND d.id NOT IN ("+testDoctorSql+")";
            String doctorTotalSql = "SELECT count(d.id) total FROM " +
                    "base_doctor d,base_doctor_hospital h WHERE d.id=h.doctor_code" +
                    " AND h.del = 1 AND d.del = 1 AND d.doctor_level = 1 "+nameDoctorSql+" AND d.id NOT IN ("+testDoctorSql+")";
            List<Map<String, Object>> list = jdbcTemplate.queryForList(doctorSql);
            Integer integer = jdbcTemplate.queryForObject(doctorTotalSql, Integer.class);
            re.put("doctor",list);
            re.put("doctorTotal",integer);
        }
        if("5".equals(type)||StringUtils.isBlank(type)||isShow){//老人家属
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_olderRelative' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -846,7 +863,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("oldFamily",list);
            re.put("oldFamilyCount",findOlderFamilyTotal(name,area,level,filter));
        }
        if("6".equals(type)||StringUtils.isBlank(type)){//助老员
        if("6".equals(type)||StringUtils.isBlank(type)||isShow){//助老员
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -860,7 +877,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("helper4",list);
            re.put("helper4Total",findHelper4Total(name,area,level,filter));
        }
        if("7".equals(type)||StringUtils.isBlank(type)){//街道老人 第三方同步过来的朝晖街道老人数据
        if(("7".equals(type)||StringUtils.isBlank(type))||(isShow&&"7".equals(type))){//街道老人 第三方同步过来的朝晖街道老人数据
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -874,6 +891,20 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("unSignOld",list);
            re.put("unSignOldCount",findUnSignOldTotal(name,residentialArea,area,level,filter));
        }
        if(("8".equals(type)||StringUtil.isBlank(type))||(isShow&&"7".equals(type))){//1.7.7增加  需照护老人(孤/独/空)800 + 老人名单
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
            if(listtmp.size()>0){
                String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and a.id not in ('"+orgCodes+"')";
            }
            List<Map<String,Object>> list = findOld(type,name,residentialArea,area,level,limit,filter);
            re.put("old",list);
            re.put("oldTotal",findOldTotal(type,name,residentialArea,area,level,filter));
        }
        return re;
    }

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

@ -540,7 +540,7 @@ public class StatisticsService {
        //离线的设备数 超过6小时未受理的预警数  超6小时未响应服务(审核照料发起6小时未接单)
        sqltmp = " select count(distinct pd.device_sn) total ,pd.device_type from wlyy_patient_device pd INNER JOIN wlyy_devices dev on pd.device_sn = dev.device_code " +
                " INNER JOIN base_patient p on pd.user = p.id and pd.del=0 and p.del=1 " +
                "where (dev.contact_status=0 or dev.contact_status is null ) and pd.user "+userfilter;
                "where dev.contact_status=0  and pd.user "+userfilter;
        sqltmp += " group by pd.device_type ";
        List<Map<String,Object>> offlineDevices = jdbcTemplate.queryForList(sqltmp);//离线设备
        Long count = 0l;
@ -826,6 +826,9 @@ public class StatisticsService {
        Integer streetOldTotal = 0;
        Integer streetOldOff = 0;
        Integer streetOldOn = 0;
        Integer doctorON = 0; //医生
        Integer doctorOff = 0;
        Integer doctorTotal = 0;
        //儿童注册人数
@ -1011,8 +1014,24 @@ public class StatisticsService {
        olderFamilyBinding = jdbcTemplate.queryForObject(sql2,Integer.class);
        //医生
        String doctorSqlTotal = "SELECT count(d.id) AS count, if(d.openid is null,0,1) online FROM base_doctor d WHERE  d.del = 1 AND d.doctor_level = 1 AND d.id NOT IN " +
                "(SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_doctor') GROUP BY openid ";
        List<Map<String, Object>> doctorCountList = jdbcTemplate.queryForList(doctorSqlTotal);
        for (Map<String, Object> dcm : doctorCountList) {
            Integer num = Integer.valueOf(dcm.get("count").toString());
            Integer online = Integer.valueOf(dcm.get("online").toString());
            if (0==online){
                doctorOff+=num;
            }
            if (1==online){
                doctorON+=num;
            }
        }
        doctorTotal = doctorOff + doctorON;
        //helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板 olderFamily老人家属  street 街道老人二次导入朝辉街道
        //helper4助老员 unSignOlder社区老人
        //helper4助老员 unSignOlder社区老人 doctor 医生
        result.put("olderTotal", olderTotal);
        result.put("olderOn", olderOn);
        result.put("olderOff", olderOff);
@ -1026,6 +1045,10 @@ public class StatisticsService {
        result.put("unSignOlderOff", unSignOlderOff);
        result.put("unSignOlderOn", unSignOlderOn);
        result.put("doctorTotal",doctorTotal);
        result.put("doctorOn",doctorON);
        result.put("doctorOff",doctorOff);
        result.put("helperTotal", helperTotal);
        result.put("helperOff", helperOff);
        result.put("helperOn", helperOn);
@ -2461,6 +2484,37 @@ public class StatisticsService {
    }
    public PageEnvelop getCareServerList(String name,String idCard,String area,Integer status,Integer page,Integer pageSize){
        page = page>0?page-1:0;
        String olderFilter = " and EXISTS ( select 1 from  " +
                " base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
                " where sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id  and i.del = 1 " +
                " and sr.`status`=1 and CONVERT(sr.patient USING utf8)  = life.patient " +
                " and CONVERT(sr.patient USING utf8) not in (SELECT dict_code FROM `base`.`wlyy_hospital_sys_dict` WHERE `dict_name` = 'jkzl_older' or dict_name='jkzl_child')  ) ";
        String pageSql = " order by life.create_time desc limit "+page*pageSize+","+pageSize;
        String headSql = "SELECT life.id,life.number,life.patient,life.patient_name patientName,life.patient_phone patientPhone,life.hospital,life.hospital_name hospitalName,CAST(DATE_FORMAT(life.create_time,'%Y-%m-%d %H:%i:%S') as char) createTime,de.name serviceName,p.idcard,p.residential_area residentialArea,o.mobile hospitalMobile,life.status,p.photo ";
        String countSql = "SELECT count(*) ";
        String tableSql = " FROM base_life_care_order life left join base_life_care_fee_detail de on life.id = de.order_id left join base_patient p on life.patient = p.id left join base_org o on life.hospital = o.code where 1=1 ";
        if(StringUtils.isNotBlank(name)){
            tableSql += " and p.name like '%"+name+"%' ";
        }
        if(StringUtils.isNotBlank(idCard)){
            tableSql += " and p.idcard like '%"+idCard+"%' ";
        }
        if(StringUtils.isNotBlank(area)){
            tableSql += " and p.residential_area like '%"+area+"%' ";
        }
        if(status == null){
            //tableSql += " and life.status in (1,2,3) ";
        }else {
            tableSql += " and life.status = "+status + " ";
        }
        List<Map<String, Object>> list = jdbcTemplate.queryForList(headSql + tableSql + olderFilter+pageSql);
        Long count = jdbcTemplate.queryForObject(countSql + tableSql + olderFilter, Long.class);
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,count);
    }
    /**
     *获取老人服务情况(助老服务、紧急救助、医生服务 项目数量)
     */
@ -3179,7 +3233,8 @@ public class StatisticsService {
                        " AND sr.STATUS = 1  " +
                        " AND r.service_package_id = i.service_package_id  " +
                        " AND r.service_package_id = pack.id  " +
                        " AND i.del = 1  " +
                        " AND i.del = 1 " +
                        " AND p.del = 1  " +
                        " AND sr.`status` = 1  " +
                        " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
                        " AND r.team_code = t.id  " +
@ -3223,7 +3278,7 @@ public class StatisticsService {
        page = (page - 1) * size;
        String testUserSql = "AND p.id NOT IN (SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict" +
                " WHERE( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user') AND dict_code IS NOT NULL ) ";
        sql += "  ORDER BY id limit " + page + "," + size + "";
        sql += "  ORDER BY id DESC limit " + page + "," + size + "";
        sql = sql.replace("<testUserSql>",testUserSql);
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
@ -3658,8 +3713,8 @@ public class StatisticsService {
        if (StringUtils.isNotBlank(name)) nameSql = " AND p.name LIKE '%" + name + "%'";
        if (StringUtils.isNotBlank(deviceSn)) deviceSnSql = " AND pd.device_sn = '" + deviceSn + "'";
        String filter="";
        String sqltmp = " SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' OR dict_name ='jkzl_helper' OR dict_name= 'jkzl_olderRelative' OR dict_name ='jkzl_user') ";
        String filter="AND pd.USER NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_user' OR dict_name = 'jkzl_older' ) AND dict_code IS NOT NULL ) ";
        /*String sqltmp = " SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' OR dict_name ='jkzl_helper' OR dict_name= 'jkzl_olderRelative' OR dict_name ='jkzl_user') ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
@ -3667,46 +3722,58 @@ public class StatisticsService {
                orgCodes = orgCodes.replaceAll(",","','");
                filter = " and p.id not in ('"+orgCodes+"') ";
            }
        }
        }*/
        page = page>0?page-1:0;
        String deviceSql = "";
        if ("jk".equals(type)) {
            categoryCodeSql = " AND ( pd.category_code = 1 OR pd.category_code = 2 )";
            categoryCodeSql = " AND pd.device_type = 0 ";
            if (StringUtils.isNotBlank(categoryCode))
                categoryCodeSql = " AND pd.category_code = '" + categoryCode + "'";
            deviceSql = "SELECT DISTINCT  p.id AS patient, pd.id as id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,'健康设备' AS deviceType,p.`name`," +
                    " p.mobile,p.phone,dd.photo,wd.contact_status * 1 AS contactStatus,pd.category_code as categoryCode" +
            deviceSql = "SELECT p.id AS patient,pd.id AS id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,dd.photo,'健康设备' AS deviceType,p.`name`,p.mobile,p.phone,wd.contact_status * 1 AS contactStatus,pd.category_code as categoryCode " +
                    " FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
            totalSql = "SELECT count(DISTINCT pd.id) FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " +filter+ nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
                    " wlyy_patient_device pd " +
                    " INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
                    " INNER JOIN base_patient p ON pd.USER = p.id AND pd.del = 0 AND p.del = 1    " +
                    " LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    "WHERE " +
                    " 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
            totalSql = "SELECT count(pd.id) FROM " +
                    " wlyy_patient_device pd " +
                    " INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
                    " INNER JOIN base_patient p ON pd.USER = p.id  AND pd.del = 0  AND p.del = 1  " +
                    " LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " WHERE " +
                    " 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
        }
        if ("af".equals(type) || StringUtils.isBlank(type)) {
            categoryCodeSql = " AND pd.category_code > 2 ";
            categoryCodeSql = " AND pd.device_type = 1 ";
            if (StringUtils.isNotBlank(categoryCode))
                categoryCodeSql = " AND pd.category_code = '" + categoryCode + "'";
            deviceSql = " SELECT DISTINCT  p.id AS patient,pd.id AS id ,pd.device_name AS deviceName,pd.device_sn AS deviceSn,'安防设备' AS deviceType,p.`name`,p.mobile,p.phone,dd.photo,wd.contact_status * 1 AS contactStatus,pd.category_code as categoryCode " +
            deviceSql = "SELECT p.id AS patient,pd.id AS id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,dd.photo,'安防设备' AS deviceType,p.`name`,p.mobile,p.phone,wd.contact_status * 1 AS contactStatus,pd.category_code as categoryCode " +
                    " FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " +filter+nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
                    " wlyy_patient_device pd " +
                    " INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
                    " INNER JOIN base_patient p ON pd.USER = p.id AND pd.del = 0 AND p.del = 1    " +
                    " LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    "WHERE " +
                    " 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
            totalSql = "SELECT count(pd.id) FROM " +
                    " wlyy_patient_device pd " +
                    " INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
                    " INNER JOIN base_patient p ON pd.USER = p.id  AND pd.del = 0  AND p.del = 1  " +
                    " LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " WHERE " +
                    " 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
            totalSql = " SELECT count(DISTINCT pd.id) FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " +filter+nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
        }
        deviceSql += " GROUP BY id LIMIT " + page*size + "," + size + " ";
        deviceSql += " GROUP BY pd.id LIMIT " + page*size + "," + size + " ";
        List<Map<String, Object>> deviceList = jdbcTemplate.queryForList(deviceSql);
        List<String> list = jdbcTemplate.queryForList(totalSql, String.class);
@ -3766,7 +3833,7 @@ public class StatisticsService {
        //离线设备数量
        String offLineDeviceSql="select count(distinct pd.device_sn) total from wlyy_patient_device pd INNER JOIN wlyy_devices dev on pd.device_sn = dev.device_code " +
                "                 INNER JOIN base_patient p on pd.user = p.id and pd.del=0 and p.del=1 " +
                "                where (dev.contact_status=0 or dev.contact_status is null ) and pd.device_type = "+type+"  AND pd.user NOT IN ("+testUsqlSql+") group by pd.device_type";
                "                where dev.contact_status=0  and pd.device_type = "+type+"  AND pd.user NOT IN ("+testUsqlSql+") group by pd.device_type";
        //设备总数
        String deviceTotalSql = "SELECT count(DISTINCT device_code) FROM wlyy_devices WHERE (device_code IS NOT NULL OR device_code <> '') AND device_type = "+type+"";
@ -3786,6 +3853,8 @@ public class StatisticsService {
                "                INNER JOIN base_patient p on pd.user = p.id and pd.del=0 and p.del=1 " +
                "                where pd.device_type = "+type+"  AND EXISTS(SELECT 1 FROM device_data_push_log pl WHERE pl.device_sn = pd.device_sn "+deviceCategorySql+" AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= pl.create_time ) AND pd.user NOT IN ("+testUsqlSql+") group by pd.device_type";
        //设备类型总数
        String deviceCodeTotalSql ="SELECT count(DISTINCT device_code) FROM wlyy_devices WHERE (device_code IS NOT NULL OR device_code <> '') AND category_code = '"+deviceCategory+"'";
        List<Integer> total = jdbcTemplate.queryForList(typeTotalSql, Integer.class);
        jsonObject.put("typeTotal",total.get(0));
@ -3796,9 +3865,10 @@ public class StatisticsService {
        total = jdbcTemplate.queryForList(lineDeviceSql,Integer.class);
        jsonObject.put("lineDevice",total.get(0));
        total = jdbcTemplate.queryForList(sevenDayUseSql,Integer.class);
        Integer deviceCodeTotal = jdbcTemplate.queryForObject(deviceCodeTotalSql,Integer.class);
        Float num = 0F;
        if (total.size()>0) {
            num= (float)total.get(0)/(float)Integer.parseInt(jsonObject.get("deviceTotal").toString());
            num= (float)total.get(0)/(float)deviceCodeTotal;
        }
        jsonObject.put("sevenDayUse",num*100);
        return jsonObject;

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

@ -193,7 +193,7 @@ public class NetdevTestController extends BaseController {
    @ApiOperation("同步人脸数据")
    public String synPatientFaceRecords(){
        try {
//            netDevSdkService.synPatientFaceRecords();
            netDevSdkService.synPatientFaceRecords();
            return success();
        }catch (Exception e){
            e.printStackTrace();

+ 4 - 4
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/netdevsdk/NetDevSdkService.java

@ -80,12 +80,12 @@ public class NetDevSdkService {
    // http://zhyzh.gongshu.gov.cn:3001/ 开vpn后可以本地调试
    //IP:10.18.50.18   账号admin  密码Admin12345@    HTTP端口80  HTTPS端口  443  RTSP端口 554
//    private static final int dwPort = 80;//端口号 443
    private static final int dwPort = 3001;//端口号 443
    private static final int dwPort = 80;//端口号 443
//    private static final int dwPort = 3001;//端口号 443
    private static final String strUserName = "admin";//用户名
    private static final String strPassword = "Admin12345@";//密码
    private static final String strIPAddr = "zhyzh.gongshu.gov.cn";//ip地址
//    private static final String strIPAddr = "10.18.50.18";//ip地址
//    private static final String strIPAddr = "zhyzh.gongshu.gov.cn";//ip地址
    private static final String strIPAddr = "10.18.50.18";//ip地址
    private static final Integer dwLoginProto = 1; /* 登录协议 0:onvif 1:私有*/
    private static final Integer dwDeviceType = 1; /* 设备类型 IPC/NVR */
    private static final String baseFaceImg = "https://zhyzh.gongshu.gov.cn/face/";