ソースを参照

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

wangzhinan 3 年 前
コミット
74578cddab
15 ファイル変更268 行追加12 行削除
  1. 18 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  2. 13 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseDeviceFaceRecordDao.java
  3. 21 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseDevicePatientFaceDao.java
  4. 18 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/CommonEndpoint.java
  5. 44 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/dingding/DingDingMessageEndpoint.java
  6. 2 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  7. 46 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DevicePatientFaceService.java
  8. 3 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  9. 72 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/dingding/DingDingMessageService.java
  10. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java
  11. 2 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  12. 14 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java
  13. 12 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/DingdingUtil.java
  14. 1 1
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/NetdevTestController.java
  15. 1 1
      svr/svr-cloud-device/src/main/java/com/yihu/jw/care/netdevsdk/NetDevSdkService.java

+ 18 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -302,6 +302,24 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                String data[] = encdata.split(":");
                username = data[1];
                parameters.put("username", username);
            }else if("dingTalk".equals(flag)){
                //钉钉免登录
                parameters.put("grant_type", "dingTalk");
                String authCode = parameters.get("authCode");
                if(org.apache.commons.lang3.StringUtils.isBlank(authCode)){
                    throw new InvalidRequestException("请求参数错误");
                }
                String registerRes= httpClientUtil.get("http://127.0.0.1:10301/doctor/dingtalk_app_user?authCode="+authCode,"UTF-8");
                JSONObject jsonObject= JSONObject.parseObject(registerRes);
                if (jsonObject.getInteger("status") == 200){
                    parameters.put("username", jsonObject.getString("message"));
                }else{
                    HttpHeaders headers = new HttpHeaders();
                    headers.set("Cache-Control", "no-store");
                    headers.set("Pragma", "no-cache");
                    Oauth2Envelop<WlyyUserSimple> oauth2Envelop = new Oauth2Envelop<>(jsonObject.getString("message"), -1, null);
                    return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);
                }
            }else if (StringUtils.isEmpty(parameters.get("captcha"))) {
                parameters.put("grant_type", "password");
                //解密密码

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

@ -0,0 +1,13 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.BaseDeviceFaceRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2022/6/2.
 */
public interface BaseDeviceFaceRecordDao extends PagingAndSortingRepository<BaseDeviceFaceRecordDO,String>,
        JpaSpecificationExecutor<BaseDeviceFaceRecordDO> {
}

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

@ -0,0 +1,21 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.care.device.BaseDevicePatientFaceDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2022/6/1.
 */
public interface BaseDevicePatientFaceDao  extends PagingAndSortingRepository<BaseDevicePatientFaceDO,String>,
        JpaSpecificationExecutor<BaseDevicePatientFaceDO> {
    @Query("select a from BaseDevicePatientFaceDO a where a.idcard = ?1")
    BaseDevicePatientFaceDO findByIdcard(String idcard);
    @Query("select a from BaseDevicePatientFaceDO a where a.type = ?1")
    List<BaseDevicePatientFaceDO> findListByType(Integer type);
}

+ 18 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/CommonEndpoint.java

@ -1,13 +1,16 @@
package com.yihu.jw.care.endpoint.admin;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.label.BaseCapacityLabelDao;
import com.yihu.jw.care.service.common.CommomService;
import com.yihu.jw.care.service.device.DevicePatientFaceService;
import com.yihu.jw.care.service.patient.CarePatientService;
import com.yihu.jw.care.util.DingdingUtil;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.label.BaseCapacityLabelDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -50,6 +53,21 @@ public class CommonEndpoint extends EnvelopRestEndpoint {
    private DingdingUtil dingdingUtil;
    @Autowired
    private CarePatientService carePatientService;
    @Autowired
    private DevicePatientFaceService patientFaceService;
    @GetMapping(value = "open/findFaceRecord")
    @ApiOperation(value = "获取人脸数据")
    public ObjEnvelop findFaceRecord(String patient, String day) {
        try {
            JSONObject json = new JSONObject();
            patientFaceService.findFaceRecord(patient,day,json);
            return ObjEnvelop.getSuccess("初始化成功",json);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "open/initOldTmp2")
    @ApiOperation(value = "初始化签约老人")

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

@ -0,0 +1,44 @@
package com.yihu.jw.care.endpoint.dingding;

import com.yihu.jw.care.service.dingding.DingDingMessageService;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author xyq
 * @create 2022-06-02 10:54
 * @slogan 他化自在,我自逍遥
 */
@RestController
@RequestMapping(value = "/open/dingDingMessage")
@Api(description = "钉钉消息")
public class DingDingMessageEndpoint extends EnvelopRestEndpoint {

    @Autowired
    private DingDingMessageService dingDingMessageService;

    @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 = false,defaultValue = "text")String msgtype,
                                          @ApiParam @RequestParam(required = false)String url,
                                          @ApiParam @RequestParam(required = false)String title){

        try {
            return dingDingMessageService.sendMessageToOne(sendId, receiverId, content, msgtype, url, title);
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }

    }
}

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

@ -307,8 +307,9 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
                    }
                }catch (Exception e){}
                String body = "您好,"+assistanceDO.getPatientName()+"居民发起紧急呼叫,请关注并及时处理。";
                String dingDingBody = "您好,"+assistanceDO.getPatientName()+"居民发起紧急呼叫,请及时处理。";
                messageUtil.sendDoctorGetuiMessage(doctorDO.getId(),"2","/sos/index?tabActive=1","紧急呼叫",body);
                messageUtil.sendDoctorDingdingMessage(doctorDO,null,"text","2",body,null,null);
                messageUtil.sendDoctorDingdingMessage(doctorDO,null,"text","2",dingDingBody,null,null);
                imUtill.sendMDTSocketMessageToDoctor(doctorDO.getId(),message.toString());
            }
            //pc管理端端推送消息

+ 46 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DevicePatientFaceService.java

@ -0,0 +1,46 @@
package com.yihu.jw.care.service.device;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.device.BaseDeviceFaceRecordDao;
import com.yihu.jw.care.dao.device.BaseDevicePatientFaceDao;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2022/6/2.
 */
@Service
public class DevicePatientFaceService {
    @Autowired
    private BaseDevicePatientFaceDao patientFaceDao;
    @Autowired
    private BaseDeviceFaceRecordDao faceRecordDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 获取人脸数据
     * @param patient
     * @param day
     * @param result
     */
    public void findFaceRecord(String patient, String day, JSONObject result){
        if(StringUtils.isBlank(day)){
            return;
        }
        String start = day +" 00:00:00";
        String end = day +" 23:59:59";
        String sql = "SELECT img,pass_time passTime from base_device_face_record r where r.patient = ?" +
                "and r.pass_time>=? and r.pass_time<=?" +
                "ORDER BY r.pass_time desc ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql,new Object[]{patient,start,end});
        result.put("faceRecord",list);
    }
}

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

@ -98,6 +98,8 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
    private BaseEmergencyWarnLogDao logDao;
    @Autowired
    private PatientSafeAreaDao patientSafeAreaDao;
    @Autowired
    private DevicePatientFaceService patientFaceService;
    //健康问题 高血压
    private static final String gxy = "HP0093";
@ -1145,6 +1147,7 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                case "18"://日常用水监测
                    break;
                case "19": //门禁 todo 出入记录
                    patientFaceService.findFaceRecord(patient,day,devInfoObj);
                    break;
                case "20": //电表 todo 日常用电情况
                    break;

+ 72 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/dingding/DingDingMessageService.java

@ -0,0 +1,72 @@
package com.yihu.jw.care.service.dingding;

import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.util.DingdingUtil;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author xyq
 * @create 2022-06-02 16:21
 * @slogan 他化自在,我自逍遥
 */
@Service
public class DingDingMessageService {

    @Autowired
    private DingdingUtil dingdingUtil;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private MessageUtil messageUtil;

    /**
     *
     * @param sendId 发送者的钉钉id
     * @param receiverId 接收者的医生id
     * @param content 消息内容
     * @param msgtype 消息类型,text,link
     * @param url
     * @param title
     * @return
     */
    public ObjEnvelop sendMessageToOne(String sendId, String receiverId, String content, String msgtype, String url, String title){
        //messageUtil.sendDoctorDingdingMessage(null,receiverId,"text",null,content,null,null);
        if(StringUtils.isBlank(receiverId)){
            return ObjEnvelop.getError("医生id不能为空");
        }
        BaseDoctorDO doctorById = doctorDao.findById(receiverId);
        if(doctorById == null || StringUtils.isBlank(doctorById.getYktDoctorId())){
            return ObjEnvelop.getError("接收者id不能为空");
        }
        receiverId = doctorById.getYktDoctorId();
        JSONObject msg = new JSONObject();
        msg.put("msgtype",msgtype);
        if("text".equals(msgtype)){
            JSONObject text = new JSONObject();
            text.put("content",content);
            msg.put("text",text);
        }else if("link".equals(msgtype)){
            JSONObject link = new JSONObject();
            link.put("messageUrl",url);
            link.put("title",title);
            link.put("text",content);
            link.put("picMediaId",DingdingUtil.picMediaId);
            msg.put("link",link);
        }
        String s = dingdingUtil.sendP2pMsg(msg.toString(), receiverId,sendId);
        //String s = "{\\\"_RequestId\\\":\\\"da6c6a8716541404813972617d0011\\\",\\\"Message\\\":\\\"User not authorized to operate on the specified resource.\\\",\\\"success\\\":false,\\\"errorCode\\\":\\\"100\\\",\\\"HostId\\\":\\\"openplatform-pro.ding.zj.gov.cn\\\",\\\"Code\\\":\\\"Forbidden\\\",\\\"bizErrorCode\\\":\\\"OPF-B001-05-16-0002\\\",\\\"errorMsg\\\":\\\"User not authorized to operate on the specified resource.\\\",\\\"errorLevel\\\":\\\"error\\\"}";
        s = s.replace("\\","");
        JSONObject jsonObject = JSONObject.parseObject(s);
        if(jsonObject.getBooleanValue("success")){
            return ObjEnvelop.getSuccess("发送成功",jsonObject);
        }else {
            return ObjEnvelop.getSuccess("发送失败",jsonObject,-1);
        }
    }
}

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

@ -66,7 +66,7 @@ public class BaseServiceNewsService {
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and code not in ('"+orgCodes+"')";
        }
        String sql = "SELECT code,name,brief,address,photo,mobile,longitude,latitude,type from base_org WHERE type in ('3','4','6') and del =1 " +
        String sql = "SELECT code,name,brief,address,photo,mobile,longitude,latitude,type from base_org WHERE type in ('1','2','3','4','6') and del =1 " +
                " and code not in ('zdjsylfwyxgszhfgs') ";
        sql += filter;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);

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

@ -310,8 +310,9 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            } catch (Exception e) {
            }
            String body = "您好," + orderDO.getPatientName() + "居民" + orderDO.getServeDesc() + ",请关注并及时处理。";
            String dingDingBody = orderDO.getPatientName()+"居民存在异常情况,请及时处理,异常内容:"+orderDO.getServeDesc()+"。";
            messageUtil.sendDoctorGetuiMessage(doctorDO.getId(), "1", "/securityMonitoring/index", "安防紧急预警", body);
            messageUtil.sendDoctorDingdingMessage(doctorDO,null,"text","1",body,null,null);
            messageUtil.sendDoctorDingdingMessage(doctorDO,null,"text","1",dingDingBody,null,null);
            imUtil.sendMDTSocketMessageToDoctor(doctorDO.getId(), message.toString());
        }
        //pc管理端端推送消息

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

@ -3166,8 +3166,14 @@ public class StatisticsService {
                        "  YEAR ( now()) - YEAR (substring( p.idcard, 7, 8 )) WHEN LENGTH( p.idcard )= 15 THEN " +
                        "  YEAR ( now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL  " +
                        " END AS age, p.mobile AS mobile, p.address AS address, t.`name` AS orgName, " +
                        " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName  FROM " +
                        " base_patient p,base_service_package_sign_record sr,base_service_package_record r,base_service_package_item i,base_service_package pack,base_team t,base_team_member tm,base_doctor d  " +
                        " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS socialWorkerName" +
                        ",GROUP_CONCAT( DISTINCT h.doctor_name SEPARATOR ',' ) AS helperName" +
                        ",GROUP_CONCAT( DISTINCT pd.doctor_name SEPARATOR ',' ) AS doctorName  " +
                        " FROM base_patient p " +
                        " left join base_patient_helper h on h.patient = p.id and h.del = '1' " +
                        " left join base_patient_doctor pd on pd.patient = p.id " +
                        ",base_service_package_sign_record sr,base_service_package_record r," +
                        " base_service_package_item i,base_service_package pack,base_team t,base_team_member tm,base_doctor d  " +
                        " WHERE " +
                        " sr.id = r.sign_id  " +
                        " AND sr.STATUS = 1  " +
@ -3189,9 +3195,13 @@ public class StatisticsService {
                        "  WHEN LENGTH( p.idcard )= 15 THEN " +
                        "  YEAR (now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL  " +
                        " END AS age, " +
                        " p.mobile AS mobile,p.address AS address, p.residential_area AS orgName,'' AS doctorName  " +
                        " p.mobile AS mobile,p.address AS address, p.residential_area AS orgName,'' AS socialWorkerName" +
                        " ,GROUP_CONCAT( DISTINCT h.doctor_name SEPARATOR ',' ) AS helperName  " +
                        " ,GROUP_CONCAT( DISTINCT pd.doctor_name SEPARATOR ',' ) AS doctorName  " +
                        " FROM " +
                        " base_patient p INNER JOIN wlyy_patient_device d ON p.id = d.`user`  " +
                        " base_patient p INNER JOIN wlyy_patient_device d ON p.id = d.`user`" +
                        " left join base_patient_helper h on h.patient = p.id and h.del = '1' " +
                        " left join base_patient_doctor pd on pd.patient = p.id " +
                        " WHERE p.sign_status = 0 AND p.del = 1 AND d.del = 0 AND p.archive_type = 1 " + nameSql+idcardSql+orgNameSql2+
                        " <testUserSql>  " +
                        " GROUP BY p.idcard  ";

+ 12 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/DingdingUtil.java

@ -8,6 +8,7 @@ import com.alibaba.xxpt.gateway.shared.client.http.GetClient;
import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -232,18 +233,26 @@ public class DingdingUtil {
    /**
     * 发送单聊消息
     */
    public void sendP2pMsg(String msg,String receiverId){
    public String sendP2pMsg(String msg,String receiverId){
        return this.sendP2pMsg(msg, receiverId,null);
    }
    /**
     * 发送单聊消息
     */
    public String sendP2pMsg(String msg,String receiverId,String sendId){
        PostClient postClient = executableClient.newPostClient(sendMsg);
        //Set the parameters
        postClient.addParameter("msg", msg);
        postClient.addParameter("senderId", p2pSenderId);
        postClient.addParameter("senderId", StringUtils.isBlank(sendId)?p2pSenderId:sendId);
        postClient.addParameter("receiverId", receiverId);
        postClient.addParameter("chatId", "");
        postClient.addParameter("tenantId", tenantId);
        postClient.addParameter("chatType", "1");
        //Call API
        String apiResult = postClient.post();
        logger.info(apiResult);
        logger.info("响应结果"+apiResult);
        return apiResult;
    }
}

+ 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();

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

@ -337,7 +337,7 @@ public class NetDevSdkService {
            }
            logger.info(name+",startTime="+startTime+",endTime="+endTime);
            NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
            stFindCond.dwPageRow = 16;
            stFindCond.dwPageRow = 5;
            stFindCond.dwFirstRow = 0;
            stFindCond.dwCondSize = 5;